LeetCode-53 最大子序和

给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 进阶:如果你已经实现复杂度为 O(n)的解法,尝试使用更为精妙的分治法求解。 解决方法(一):暴力破解笨蛋的JAE第一想法当然是暴力求解。从第一个元素开始进行遍历,时间复杂度是n+(n-1)+……+1 = (n^2+n)/2 。但是这样写,肯定会。 ...

Read More

MySQL的btree索引和hash索索引的区别

hash索引优点:因结构的特殊性,其检索效率非常高。hash索引:检索可以一次定位B-Tree索引:需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问。总结:Hash索引的查询效率要远高于 B-Tree 索引。 任何事物都是有两面性的,Hash 索引也一样,虽然 Hash索引效率高,但是 Hash 索引本身由于其特殊性也带来了很多限制和弊端,主要有以下这些。 hash索引弊端:因其hash映射原则(1)Hash 索引仅仅能满足”=”,”IN”和”<=>”查询,不能使用...

Read More

LeetCode-28 实现strStr()

LeetCode-28 实现strStr()给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack = “hello”, needle = “ll”输出: 2 示例 2: 输入: haystack = “aaaaa”, needle = “bba”输出: -1 说明: 当 needle 是空字符串时,我们应当返回什么值呢...

Read More

[Java高并发]有借有还——Java线程池

为什么要用线程池? 降低资源消耗。 通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。 当任务到达时,任务可以不需要的等到线程创建就能立即执行。 提高线程的可管理性。 线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。 如何使用?创建线程池通过ThreadPoolExecutor来创建一个线程池。12new ThreadPoolExecutor(corePoolSize, maximumPool...

Read More

[Java高并发]有借有还——Java线程池

[Java高并发]有借有还——Java线程池为什么要用线程池? 降低资源消耗。 通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。 当任务到达时,任务可以不需要的等到线程创建就能立即执行。 提高线程的可管理性。 线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。 如何使用?创建线程池通过ThreadPoolExecutor来创建一个线程池。12new ThreadPoolExecutor(cor...

Read More

[Java高并发]Java内存模型中的原子性、有序性及可见性

[Java高并发]Java内存模型中的原子性、有序性及可见性我们都知道Java内存模型都会运用主存,每个工作线程有自己的工作内存。数据在主存中会有一份,在工作内存中也有一份。工作内存和主存之间会有各种原子操作去进行同步。 内存模型的原型基于上图 原子性原子性是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其它线程干扰。 一般认为cpu的指令都是原子操作,有些代码就不一定是原子操作了。比如说i++。这个操作不是原子操作,基本分为3个操作,读取i,进行+1,...

Read More

[Java高并发]JDK并发包的使用及原理

[Java高并发]JDK并发包的使用及原理 一、同步控制工具ReentrantLock(可重入锁)synchronized的特点:使用简单,一切交给JVM去处理,但是功能上是比较薄弱的。在JDK1.5之前,ReentrantLock的性能要好于synchronized,由于对JVM进行了优化,现在的JDK版本中,两者性能是不相上下的。如果是简单的实现,不要刻意去使用ReentrantLock。 ReentrantLock的特点:在功能上更加丰富,它具有可重入、可中断、可限时、公平锁等特点。...

Read More

[Java高并发]JDK并发包的使用及原理

[Java高并发]JDK并发包的使用及原理一、同步控制工具ReentrantLock(可重入锁)synchronized的特点:使用简单,一切交给JVM去处理,但是功能上是比较薄弱的。在JDK1.5之前,ReentrantLock的性能要好于synchronized,由于对JVM进行了优化,现在的JDK版本中,两者性能是不相上下的。如果是简单的实现,不要刻意去使用ReentrantLock。 ReentrantLock的特点:在功能上更加丰富,它具有可重入、可中断、可限时、公平锁等特点。1...

Read More

欢迎使用 Cmd Markdown 编辑阅读器

欢迎使用 Cmd Markdown 编辑阅读器 我们理解您需要更便捷更高效的工具记录思想,整理笔记、知识,并将其中承载的价值传播给他人,Cmd Markdown 是我们给出的答案 —— 我们为记录思想和分享知识提供更专业的工具。 您可以使用 Cmd Markdown: 整理知识,学习笔记 发布日记,杂文,所见所想 撰写发布技术文稿(代码支持) 撰写发布学术论文(LaTeX 公式支持) 除了您现在看到的这个 Cmd Markdown 在线版本,您还可以前往以下网址下载: Windo...

Read More

LeetCode-6 Z字形变换

LeetCode-6 Z字形变换难度:middle 将字符串 PAYPALISHIRING 以Z字形排列成给定的行数: P    A     H     NA P  L  S I   I  GY     I     R之后从左往右,逐行读取字符:”PAHNAPLSI...

Read More


Powered by Hexo and Hexo-theme-hiker

Copyright © 2017 - 2019 Jae's blog All Rights Reserved.

UV : | PV :