
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
目录线程池的使用线程池参数设置自己封装的线程池工具根据阿姆达尔(Amdal)定律可知[并发编程基础 - 安全性、活跃性、性能问题#性能问题],若串行度为5%那么无论使用任何技术,性能最高提升20%,所以减小串行度(减小锁粒度、算法优化等)是前提。但是除此之外使用多线程并行任务也是比较常用的手段,效果也非常明显,只是使用不好坑会非常多,所以最好深入理解其运行原理,这当然也是面试的高频。线程池的使用上
并发修改同一对象的不同属性会有问题吗?当调用Tomcat等Web服务器时,会交给Tomcat的某一线程处理请求,为了提高接口的性能缩短返回时间,将能并行的任务放到Runnable/Callable中,知道Callable能返回Future进行有返回值的结果处理,但是那样的程序写出来会比较繁琐。所有很多时候直接用Runnable + 线程安全的容器存储(比如ConcurrentHashMap)每个线
netstat -anp| grep redis;netstat -rn
目录一、Server层1、连接器2、缓存模块3、分析器(分析需要做什么)4、优化器(分析怎么做)5、执行器(执行过程)二、存储引擎层三、查询流程Mysql服务端架构分为Server层和存储引擎层(可插拔式),Server层主要包含了连接器、缓存模块、分析器、优化器、执行器;可插拔的存储引擎主要有InnoDB、MyISAM、Memory。当一个请求进入后的执行流程如下图的箭头所示:一、Server层
目录1、B+树2、B+树 VS B树3、Mysql为什么选择B+树?理解B+树的数据结构一定在理解了树、平衡二叉搜索树的基础上。再梳理一下,平衡二叉树是为了让树本身更加的”丰满“,近似于满二叉树(或者完全二叉树),降低树的层高【查询效率与树的层高有关】,防止极端情况树退化成时间复杂度为O(N)的链表。二叉查找树是当每个节点做一次判断,就可以选择左子或右子树进行查询,每次讲数据查询范围缩小为原来的一
目录1、二分插入排序2、希尔排序上一篇博客分析了时间复杂度为O(N²)的三种排序方式,并且基于稳定特性的插入排序和冒泡排序做了性能对比,当数据量级比较小的使用经常会选择插入排序。然而插入排序本身还可以进行优化,让其性能进一步提升,二分插入排序和希尔排序都是在普通插入排序的基础上进一步优化。1、二分插入排序插入排序本身就是往后遍历,每次轮训都会把前N个元素排好序,然后再将N+1个元素插入已经排好序的
自适应Hash索引(Adatptive Hash Index,内部简称AHI)是InnoDB的三大特性之一,还有两个是 Buffer Pool简称BP、双写缓冲区(Doublewrite Buffer)。...
散列表的时间复杂度和由来在开始散列表数据结构之前先熟悉一下数组和链表的时间复杂度,如下。那么有没有一种数据结构可以满足新增和修改的时间复杂度都小于O(n)呢?那就是散列表,并且散列表在Java中随处可见;K-V数据库redis中的全局key查询value也使用了散列表的思想。散列表也叫Hash表,新增和修改的时间复杂度近似O(1)。其思想利用了数组根据下标进行查询时,时间复杂度为 O(1),具体根
目录线程池的使用线程池参数设置自己封装的线程池工具根据阿姆达尔(Amdal)定律可知[并发编程基础 - 安全性、活跃性、性能问题#性能问题],若串行度为5%那么无论使用任何技术,性能最高提升20%,所以减小串行度(减小锁粒度、算法优化等)是前提。但是除此之外使用多线程并行任务也是比较常用的手段,效果也非常明显,只是使用不好坑会非常多,所以最好深入理解其运行原理,这当然也是面试的高频。线程池的使用上
目录AtomicIntegerctl表示了线程池的生命周期线程池状态和转换过程execute(Runnable command)添加任务,addWork(Runnable firstTask, boolean core)Worker结构执行任务,runWorker(Worker w)销毁线程,processWorkerExit在(并发编程工具 - 线程池核心参数和工作原理)理解了ThreadPoo







