关闭

[置顶] 多线程之AQS原理

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

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

方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不涉及方法内部的具体运行过程。Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址(即直接引用)。这个特性需要在类加载期间,甚至到运行期间才能确定目标方法的直接引用。...
阅读(169) 评论(0)

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

栈帧是用于虚拟机进行方法调用和方法执行的数据结构,是虚拟机栈的栈元素。每一个方法从调用开始至执行完成的过程,都对应着一个栈帧在虚拟机栈里面从入栈到出栈的过程。 每一个栈帧都包括了局部变量表、操作数栈、动态连接、方法返回地址和一些额外的附加信息。在编译程序代码的时候,栈帧需要多大的局部变量表,多深的操作数栈都已经完全确定,并且写入到方法表的Code属性中,因此一个栈帧需要分配多少内存,不会受到程序运行期变量数据的影响,而仅仅取决于具体的虚拟机实现。 对于执行引擎来说,在活动线程中,只有位于栈顶的栈帧才是有效的...
阅读(142) 评论(0)

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

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

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

什么情况下开始类加载阶段的第一个阶段:加载?java虚拟机并没有进行强制约束,这点交给虚拟机的具体实现来自由把握。 但是对于初始化阶段,虚拟机规范则是严格规定了有且只有5种情况必须立即对类进行初始化(主动使用)。 1、使用new关键字实例化对象的时候、读取或设置一个类的静态字段(被final修饰、已在编译期把结果放入常量池的静态字段除外)的时候,以及调用类的静态方法的时候。 2、使用java.lang.reflect包的方法对类进行反射调用的时候(如Class.forName("con.xx.Test"))...
阅读(136) 评论(0)

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

一、垃圾收集器如何判断堆里的哪些对象需要回收 1、引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用,作为"死对象"被垃圾收集器回收。 主流的java虚拟机没有选用引用计数算法来管理内存,主要的原因是它很难解决对象之间循环引用的问题。比如对象A和对象B都有字段obj,其中A.obj = B且B.obj = A,除此之外无其他引用,引用计数算法无法通知垃圾收集器回收它们,因为它们相互引用,彼此的引用计数都不...
阅读(123) 评论(0)

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

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

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

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

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

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

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

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

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

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

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

CyclicBarrier它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。比如将计数器设置为10,那么凑齐第一批10个线程后,计数器就会归0,然后接着凑齐下一批10个线程,这就是循环栅栏内在的含义。...
阅读(132) 评论(0)

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

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

多线程之信号量Semaphore及原理

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

java枚举类型enum的使用

有的人说,不推荐使用枚举。有的人说,枚举很好用。究竟怎么使用,如何使用,仁者见仁智者见智。总之,先学会再说~ 为什么要引入枚举类 一个小案例 你写了一个小程序,不过好久不用了,突然有一天,你想使用一下它。程序要想正确运行,需要将今天星期几存到数据库里。这个时候,你开始犯难了。 当初的你还很年轻,不懂程序界的险恶,设计这个程序的时候,傻不拉几把这个字段设计为int类型的,...
阅读(103) 评论(0)

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

idea下载多个插件项目启动不了解决方案...
阅读(440) 评论(0)

多线程之重入锁ReentrantLock及原理

重入锁是sunchronized、Object.wait()和Object.notify()方法的替代品(或者说是增强版),在JDK5.0的早期版本,重入锁的性能远远好于synchronized,但从JDK6.0开始,JDK在synchronized上做了大量的优化,使得两者的性能差距并不大。但ReentrantLock也有一些synchronized没法实现的特性。 重入锁,为啥要叫重入锁呢,...
阅读(93) 评论(0)

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

...
阅读(66) 评论(0)

多线程之CAS

不同于synchronized这种悲观的阻塞同步机制,java.util.concurrent包中还借助CAS实现了乐观的非阻塞同步机制。 CAS(CompareAndSwap):比较并交换 CAS有包含三个操作数:内存值V,旧的预期值A以及更新值B。当且仅当V的值等于A的时候,CAS才通过原子方式用更新值B来更新V的值。否则不做任何操作。 CAS的含义是:“我认为V的值应该是A,如果是,那么将V的值更新为B,否则不修改并告诉V的值实际为多少”。...
阅读(85) 评论(0)

mysql存储引擎InnoDB和MyISAM的区别

MyISAM 不需要事务支持(不支持) 并发相对较低(锁定机制问题) 数据修改相对较少(阻塞问题),以读为主 数据一致性要求不是非常高 尽量索引(缓存机制) 调整读写优先级,根据实际需求确保重要操作更优先 启用延迟插入改善大批量写入性能 尽量顺序操作让insert数据都写入到尾部,减少阻塞 分解大的操作,降低单个操作的阻塞时间 降低并发数,某些高并发场景通过应用来进行排队机制 对于相对静态的数据,充分利用Query Cache可以极大的提高访问效率 MyISAM的Count只有在全表扫描的时候特别高效,带有...
阅读(148) 评论(0)

等待(wait)和通知(notify)

为了支持多线程之间的协作,jdk提供了两个非常重要的方法线程等待wait()和通知notify()方法,这两个方法不是Thread类的,而是属于Object类。...
阅读(90) 评论(0)
31条 共2页1 2 下一页 尾页
    个人资料
    • 访问:5307次
    • 积分:315
    • 等级:
    • 排名:千里之外
    • 原创:27篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条
    文章分类