排序:
默认
按更新时间
按访问量

多线程之AQS原理

AQS,全称为AbstractQueuedSynchronizer,粗粗的翻译下就是抽象的队列式的同步器。 java.util.concurrent包中很多同步类,都是基于AQS,像ReentrantLock、Semaphore等等。 小小的截取一段ReentrantLock类的这部分代码:

2017-07-10 11:41:11

阅读数:173

评论数:0

《深入理解java虚拟机》读书笔记——方法的解析调用与分派调用

方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不涉及方法内部的具体运行过程。Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址(即直接引用)。...

2017-06-27 17:01:49

阅读数:222

评论数:0

《深入理解java虚拟机》读书笔记——运行时栈帧结构

栈帧是用于虚拟机进行方法调用和方法执行的数据结构,是虚拟机栈的栈元素。每一个方法从调用开始至执行完成的过程,都对应着一个栈帧在虚拟机栈里面从入栈到出栈的过程。 每一个栈帧都包括了局部变量表、操作数栈、动态连接、方法返回地址和一些额外的附加信息。在编译程序代码的时候,栈帧需要多大的局部变量表,多深的...

2017-06-27 14:20:14

阅读数:211

评论数:0

《深入理解java虚拟机》读书笔记——垃圾收集器

如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。 Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、不同版本的虚拟机所提供的垃圾收集器都可能会有很大差别,并且一般都会提供参数供用户根据自己的应用特点和要求组合出各个年代所使用的收集器。

2017-06-26 23:11:28

阅读数:183

评论数:0

《深入理解java虚拟机》读书笔记——类加载机制

什么情况下开始类加载阶段的第一个阶段:加载?java虚拟机并没有进行强制约束,这点交给虚拟机的具体实现来自由把握。 但是对于初始化阶段,虚拟机规范则是严格规定了有且只有5种情况必须立即对类进行初始化(主动使用)。 1、使用new关键字实例化对象的时候、读取或设置一个类的静态字段(被final修饰、...

2017-06-25 10:51:23

阅读数:218

评论数:0

《深入理解java虚拟机》读书笔记——GC与内存分配策略

一、垃圾收集器如何判断堆里的哪些对象需要回收 1、引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用,作为"死对象"被垃圾收集器回收。 主流的java虚拟机没有选用引用计数算...

2017-06-24 18:42:17

阅读数:214

评论数:0

《深入理解java虚拟机》读书笔记——OOM发生的原因及解决方案

除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OOM的可能,如果能够区分根据报错区分出是哪些区域报出来的异常,会更便于定位问题,解决问题。

2017-06-24 13:26:12

阅读数:108

评论数:0

《深入理解java虚拟机》读书笔记——jvm内存区域

java虚拟机所管理的内存将会包括下列几个运行时数据区域: 方法区: 1、用于存储已被虚拟机加载的类信息、常量、静态变量和即时编译器编译后的代码等数据。 2、垃圾收集在这个区域较少出现,主要是针对常量池的回收和类型的卸载,当方法区无法满足内存分配需求时,将抛出OutOfMemoryError...

2017-06-24 11:54:04

阅读数:291

评论数:0

架构探险读书笔记——自己搭建轻量级javaWeb框架之MVC和IOC

首先安利一波架构探险——从零开始写JavaWeb框架这本书,想要学习的朋友可以到这里下载,https://pan.baidu.com/s/1eSEaE10 源码下载:http://download.csdn.net/detail/qq_31957747/9842676

2017-05-15 10:35:36

阅读数:374

评论数:0

多线程之Callable接口及FutureTask源码分析

两者的不同在于: 1、Runnable接口的run()方法没有返回值,而Callable接口的call()方法是带有泛型的返回值。 2、Runnable方法的run()方法的异常只能在内部处理,而不能向上抛,而Callable的call()方法允许抛出异常。

2017-07-17 21:05:05

阅读数:151

评论数:0

多线程之线程局部变量ThreadLocal及原理

ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。既然是只有当前线程可以访问的数据,自然是线程安全的。

2017-07-16 20:50:42

阅读数:180

评论数:0

多线程之循环栅栏CyclicBarrier及原理

CyclicBarrier它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。比如将计数器设置为10,那么凑...

2017-07-15 22:49:31

阅读数:230

评论数:0

多线程之倒计时器CountDownLatch及原理

一、倒计时器CountDownLatch 这个工具通常用来控制线程等待,它可以让某一个线程等待直到倒计时结束再开始执行。CountDownLatch是共享模式的。

2017-07-15 21:24:56

阅读数:168

评论数:0

多线程之信号量Semaphore及原理

重入锁ReentrantLock是独占模式,一次都只允许一个线程访问一个资源,而信号量是共享模式,也就是说可以指定多个线程,同时访问某一个资源。

2017-07-14 14:58:32

阅读数:158

评论数:0

java枚举类型enum的使用

有的人说,不推荐使用枚举。有的人说,枚举很好用。究竟怎么使用,如何使用,仁者见仁智者见智。总之,先学会再说~ 为什么要引入枚举类 一个小案例 你写了一个小程序,不过好久不用了,突然有一天,你想使用一下它。程序要想正确运行,需要将今天星期几存到数据库里。这个时候,你开始犯难了。...

2017-07-12 09:50:04

阅读数:166

评论数:0

idea下载多个插件项目启动不了解决方案

idea下载多个插件项目启动不了解决方案

2017-07-11 17:42:03

阅读数:1308

评论数:0

多线程之重入锁ReentrantLock及原理

重入锁是sunchronized、Object.wait()和Object.notify()方法的替代品(或者说是增强版),在JDK5.0的早期版本,重入锁的性能远远好于synchronized,但从JDK6.0开始,JDK在synchronized上做了大量的优化,使得两者的性能差距并不大。但R...

2017-07-10 16:33:43

阅读数:154

评论数:0

spring的事务传播行为及事务隔离级别

<tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:me...

2017-07-09 10:38:26

阅读数:192

评论数:0

多线程之CAS

不同于synchronized这种悲观的阻塞同步机制,java.util.concurrent包中还借助CAS实现了乐观的非阻塞同步机制。 CAS(CompareAndSwap):比较并交换 CAS有包含三个操作数:内存值V,旧的预期值A以及更新值B。当且仅当V的值等于A的时候,CAS才通过原子方...

2017-07-07 13:42:53

阅读数:129

评论数:0

mysql存储引擎InnoDB和MyISAM的区别

MyISAM 不需要事务支持(不支持) 并发相对较低(锁定机制问题) 数据修改相对较少(阻塞问题),以读为主 数据一致性要求不是非常高 尽量索引(缓存机制) 调整读写优先级,根据实际需求确保重要操作更优先 启用延迟插入改善大批量写入性能 尽量顺序操作让insert数据都写入到尾部,减少阻塞 分解大...

2017-06-26 09:27:05

阅读数:188

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭