- 博客(31)
- 资源 (2)
- 收藏
- 关注
原创 innoDB——数据库锁、隔离级别
数据锁、隔离级别概述事务四大性质并发数据库下可能发生的问题事务隔离级别Read Uncommitted (读未提交)Read Committed (读已提交)Repeatable Read(可重复读)Serializable(串行化)概述数据库锁可以分为:乐观锁和悲观锁。乐观锁手段:版本号时间戳待更新字段所有字段悲观锁按性质分:共享锁排他锁更新锁按作用范围分:...
2019-01-31 13:45:31 192
原创 B树、B+树、红黑树
B树、B+树、红黑树B树B+树红黑树参考:http://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.htmlB树最简单的B树就是2-3树,一个节点最多存储2个值。可以通过二分法快速查找,时间复杂度为o(logN)B树的每个节点都是有效值,且可以进行多路查询,减小了树的高度,在文件系统和数据库中都是常见的数据结构...
2019-01-30 12:33:54 833
原创 mysql——innodb(学习笔记)
InnoDBInnoDB 记录存储结构行溢出InnoDB 数据页结构页目录Page HeaderFile HeaderMySQL 的索引聚簇索引二级索引联合索引MyISAM注:以下内容参考自微信公众号:我们都是小青蛙。以下内容仅仅是学习的过程记录,会删减。InnoDB 记录存储结构这是一条记录以Cpmpact形式保存时候的存储结构。变长字段长度列表:类似varchar,会存储在这里面...
2019-01-29 23:42:36 849
原创 SpringMVC请求过程和原理
SpringMVC前戏DispatcherServlet 创建过程及请求过程前戏SpringMVC的请求过程的前提是需要一个容器来支持这个请求。springMVC 同样使用来IOC容器,使用ContextLoaderListener来做为容器启动的入口,因为容器的各个生命周期都与监听器密切相关。上下文初始化web应用上下文初始化加载父上下文创建web应用上下文刷新(其中包括IOC...
2019-01-25 16:38:53 1705
原创 Spring源码深度解析 学习笔记(五)AOP
AOPAOP的基本概念源码分析获取代理对象(外层)初始化通知链生成单例的代理创建AopProxy得到代理调用代理触发advice得到这个方法对应的拦截链(之前初始化了advice通知)沿着拦截器链前进AOP的基本概念(1)Aspect(切面):通常是一个类,里面可以定义切入点和通知(2)JointPoint(连接点):程序执行过程中明确的点,一般是方法的调用(3)Advice(通知):AO...
2019-01-25 01:20:44 237
原创 java集合类——Set
Set总关系图接口SetSortedSetNavigableSet抽象类AbstractSet具体类HashSetTreeSet总关系图接口SetSortedSetNavigableSet抽象类AbstractSet具体类HashSetTreeSet
2019-01-24 18:34:57 271
原创 java集合类——Map
Map总关系图接口MapSortedMapNavigableMap抽象类AbstractMap具体类HashMapHashTableWeakHashMapTreeMap总关系图接口MapSortedMapNavigableMap抽象类AbstractMap具体类HashMapHashTableWeakHashMapTreeMap...
2019-01-24 00:44:47 176
原创 Spring源码深度解析 学习笔记(四)容器其他相关特性
容器其他相关特性ApplicationContextApplicationContextApplicationContext 自身有一个创建和销毁的生命周期核心的内容全部在refresh中public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdo...
2019-01-23 19:51:57 130
原创 Spring源码深度解析 学习笔记(三)bean的创建和注入
加载bean直接从最简单的方法入手吧class AbstractBeanFactory@Override// 通过beanFactory得到实体beanpublic Object getBean(String name) throws BeansException { return doGetBean(name, null, null, false);}...
2019-01-23 18:57:25 142
原创 java集合类——List
List总览接口IterableIteratorListIteratorCollectionListQueueDeque抽象类AbstractCollectionAbstractListAbstractSequentialList具体类LinkedList增删查ArrayList增删查VectorStack总览上面是java 基本容器的继承图接口Iterablepublic inter...
2019-01-23 01:01:33 416
原创 CopyOnWrite
CopyOnWrite介绍CopyOnWriteArrayListCopyOnWriteArraySet场景:缺点:介绍在juc(java.util.concurrent)包下有着这么两个类,CopyOnWriteArrayList 和 CopyOnWriteArraySet。直译过来就是在写操作的时候复制。这体现了读写分离的思想。在写操作的线程,会将数组复制出来一份进行操作。而原本的数组...
2019-01-22 19:52:59 3445
原创 操作系统——内存分配管理
内存分配管理逻辑地址空间与物理地址空间物理地址空间逻辑地址空间内存保护内存非连续分配管理方式基本分页存储管理方式快慢表多级页查询基本分段存储管理方式分段段表段页式管理方式虚拟内存虚拟内存技术的实现页表机制缺页中断机构地址变换机构页面置换算法最佳置换算法(OPT)先进先出(FIFO)页面置换算法最近最久未使用(LRU)置换算法时钟(CLOCK)置换算法逻辑地址空间与物理地址空间物理地址空间物理...
2019-01-21 22:51:57 504
原创 操作系统——死锁
死锁定义死锁的四个条件死锁的处理死锁的预防死锁的避免死锁的检查资源分配图死锁的解除定义多个进程争夺资源造成的僵局情况,若不外力作业,则无法想前推进。死锁的四个条件1)互斥:争夺资源的时候,某个资源在同一时间只能有一个进程得到。2)不抢占:资源是不可抢占的,如果可以抢占则不会进入互相等待的情况。3)拥有且再请求:一个进程无法一次性获取全部的资源,则会在持有已有资源的情况下,再去请求另外的...
2019-01-21 19:11:32 131
原创 操作系统——系统调度算法、经典进程同步问题
调度算法、进程同步问题调度算法FSFC(先来先服务)SJF(短作业优先)优先级队列算法响应比优先算法时间片轮转算法多级反馈队列算法经典进程同步问题生产者消费者问题读者-写者问题哲学家进餐问题吸烟者问题调度算法操作系统有很多调度算法,大致分为:FSFC(先来先服务)、SJF(短作业优先)、优先级队列算法、响应比优先算法、时间片轮转算法、多级反馈队列算法,这6种。FSFC(先来先服务)先来先服...
2019-01-19 22:33:52 1424
原创 Spring源码深度解析 学习笔记(二)加载xml文件中的bean(二)
加载xml文件中的bean(二)前言前言此处声明下,个人的学习笔记,并不是很全,有些点可能不会太深入。上一篇源码分析到了,解析xml里面的元素、标签。// 解析默认命名空间,元素的类型private void parseDefaultElement(Element ele, BeanDefinitionParserDelegate delegate) { // 默认解析 4种ele ...
2019-01-19 16:21:43 123
原创 Spring源码深度解析 学习笔记(一)加载xml文件中的bean(一)
从xml加载bean前言核心类容器的基础XmlBeanFactory(已弃用)前言至于为什么要从老书开始,虽然有些不妥,但也有点随意的成分在,旁边有什么书就从那本开始了。XmlBeanFactory 其实已经被spring3.1开始废弃了,但是还是有东西可以学习的。之后如果博主的能力有提高,会去将最新版的核心代码整理一篇出来,与之前的做下比较。以下基本是对源码的分析核心类Default...
2019-01-18 21:17:56 239
原创 操作系统线程模型
操作系统线程模型多对一一对一多对多线程的实现分为两类:用户线程和内核线程,线程模型又分为3种:多对一,一对一,多对多多对一此处的多是指用户线程的多数,对应着操作系统内核空间的一个进程。用户空间的线程由用户程序的线程库来创建控制。优点:线程的管理由用户空间来实现,无需对内核进行调用,所以比较高效缺点:如果一个用户线程调用内核服务阻塞了,那同个进程的其他线程则无法使用了,非常不适合并发操...
2019-01-17 22:39:40 257
原创 Algorithm-归并排序、快速排序
归并、快速归并快排归并注:图是别人的.由图可以看出来,归并就是:先将数组对半分,1分为2,2再对半分,一直分到只有单个的时候。对只能分到单个对时候停止分割,对两个进行比较排序,第一次排序好后,至少2个数是顺序的,之后是递归的过程,同理归并别的分组。下面代码分析下: // a为需要排序的数组,low是低位,high是高位 static void sort(int[] a...
2019-01-17 11:47:06 172
原创 Java并发编程的艺术,学习笔记(五)线程池(二)
ExecutorExecutor两级调度模型Executor框架结构Executor的成员FixedThreadPoolSingleThreadPoolCacheThreadPoolExecutor两级调度模型两级调度在于,一在于,我们将任务提交给Executor框架,然后Executor创建线程来执行任务。二在于,线程对应于操作系统的线程,所以线程池中的线程再由操作系统内核给他们分配cpu...
2019-01-14 15:58:10 143
原创 Java并发编程的艺术,学习笔记(三)CountDownLatch CyclicBarrier
工具类CountDownLatchCountDownLatch 内部简单介绍初始化CyclicBarrierCountDownLatch先看一段实例代码:public static void main(String[] args) { // 初始化 3个计数 CountDownLatch countDownLatch = new CountDownLatch(3); new...
2019-01-13 18:00:50 139
原创 Java并发编程的艺术,学习笔记(二)锁
锁Lock接口lock 比 synchronized 的好处队列同步器重入锁获取锁过程(code)公平和非公平的区别读写锁(ReentrantReadWriteLock)LockSupport工具Condition接口condition的实现Lock接口java 中提供了两种方式来给代码加锁,一种是隐式加锁synchronized,当然他的解锁也是隐式的。另一种就是显示加锁 Lock ,他的...
2019-01-12 23:10:52 161
原创 Java并发编程的艺术,学习笔记(一)线程
线程基础线程使用多线程的好处线程的状态启动和终止线程线程的启动线程的中断线程间的通讯使用volatile和synchronized关键字使用等待/通知机制等待/通知有个经典公式thread.join()ThreadLocal线程使用多线程的好处可以更好的利用cpu资源能有更快的响应时间(使用多线程合理的情况下)更好的编程模型线程的状态如上图详细的描述了线程的生命周期,不同事件触...
2019-01-11 16:42:03 109
原创 缓存一致性
缓存一致性硬件单核多核缓存一致性协议(MESI)MESI 状态转换硬件硬件之间的处理速度不相等,尤其是处理器和内存之间。一般都是内存跟不上处理器的处理速度。所有在他们之间引入了缓存(cache)。缓存有2大特点:1.时间局部性(被使用过的内存地址很有可能被再次使用到)2.空间局部性(被使用的地址周围部分也有可能被使用到,所以将内存中某块地址引入缓存里的时候通常会将周围的也引入缓存中)...
2019-01-10 18:39:42 1651
原创 深入理解Java虚拟机,学习笔记(七)线程安全与锁优化
线程安全与锁优化线程安全定义java语言中的线程安全不可变绝对线程安全相对线程安全线程兼容线程独立同步实现的方悲观锁和乐观锁锁优化自旋锁与自适应自旋锁消除锁粗化轻量级锁偏向锁线程安全定义当一个对象被多线程调用的时候,不用在乎线程之间的交替执行,也不需要额外的同步操作,同时也不需要调用方协调操作,得到的结果都是正确的,那么可以说这个对象是线程安全的。java语言中的线程安全不可变被fina...
2019-01-09 21:43:43 306 1
原创 深入理解Java虚拟机,学习笔记(六)Java内存模型
Java内存模型硬件的效率与一致性Java 内存模型主内存和工作内存内存间交互操作volatile型变量的规则和性质可见性禁止重排序原子性、可见性、有序性原子性可见性有序性hapens-before硬件的效率与一致性硬件的效率不是每个都像处理器一样高效,所以在处理器和内存之间引入了cache(高速缓存)。cache的出现同时也增加了计算机系统的复杂度。因为如果是多核处理器,每个cpu里面都...
2019-01-09 00:53:13 211
原创 深入理解Java虚拟机,学习笔记(五)类加载器
类加载器加载与类加载器类与类加载器类加载器同类不同类加载器显示加载与隐式加载双亲委派模型破坏双亲委派模型第一次破坏第二次破坏线程上下文类加载器第三次破坏加载与类加载器之前说到加载有三个步骤:1.根据类对全限定名来获取类的二进制字节流2.将字节流中的静态结构转换成方法区的运行时的数据结构3.在内存中生成一个Class对象,作为访问方法区的类数据的一个入口类加载是与第一步相关,因为如何获取...
2019-01-07 20:47:02 111
原创 深入理解Java虚拟机,学习笔记(四)虚拟机类加载机制
类加载概述类加载的时机类加载过程加载数组验证准备解析初始化概述类加载,而不是对象被实例化。对象的实例化这块,有另外的说法,之后参考别人的博客再整理出必要的。JVM对类的加载并不是在JVM一启动就全部加载好的,可以这么理解,jvm是按需加载:需要什么类就加载什么类,存在的就继续使用,不存在的去加载。定义:jvm的加载机制就是,将class文件加载到内存中,对加载的文件内容进行验证,准备、转换和...
2019-01-06 00:53:05 120
原创 0-1背包问题
0-1背包问题部分背包问题0-1背包问题解决思路(动态规划)包不够大包够包够大,且可以放入包够大,但不放放与不放做比较,取最大值部分背包问题部分背包求的是最大值,里面的物品可以分割,所以我们只需要求出物品的性价比,然后再排序就可以解决。0-1背包问题0-1背包,问题就在于你放还是不放。假如我有三个物品:A(重:1,价值:2元)B(重:2,价值:4元)C(重:3,价值:3元)然后我的背包...
2019-01-04 01:54:41 346
原创 深入理解Java虚拟机,学习笔记(三)垃圾收集器对比
第二章,垃圾收集器新生代垃圾收集器serial 收集器ParNew 收集器Parallel Scavenge 收集器老年代垃圾收集器serial old 收集器Parallel old 收集器CMS 收集器G1 收集器Remembered Set回收过程新生代垃圾收集器serial 收集器又称串行收集器。回收算法:复制算法适用于Client端与用户交互缺点:因为是单线程的,所以在收集的...
2019-01-02 14:28:03 187
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人