第四章 锁的优化及注意事项 1.锁性能的几点建议 减小锁持有时间: 系统持有锁时间越长锁竞争程度就越激烈,只对需要同步的方法加锁,可以减小锁持有时间进而提高锁性能. 减少锁的持有时间有助于降低锁冲突的可能性,进而提高锁的并发能力. 减小锁粒度: 减小锁粒度就是指缩小锁定对象的范围,从而减小锁冲突的可能性,进而提高并发能力. 读写分离锁代替独占锁(锁分离): 使用读写锁可以减少操作之间相互等待,可以有效的提高性能.ConcurrentLinkedQueue中take和put方法分别使用了两个锁避免…
二.Java并发机制底层实现原理 这里是我的<Java并发编程的艺术>读书笔记的第二篇,对前文有兴趣的朋友可以去这里看第一篇:一.并发编程的目的与挑战 有兴趣讨论的朋友可以给我留言! 1.Volatile关键字 volatile的意义与定义 volatile和synchronized这两个关键字在并发编程中都扮演着极为重要的角色,这里我会先讨论volatile. volatile是轻量级的synchronized,它在开发中保证了共享变量的可见性和与其相关指令的有序性. 可见性就是指当某个共享…
<深入了解java虚拟机>高效并发读书笔记--Java内存模型,线程,线程安全 与锁优化 本文主要参考<深入了解java虚拟机>高效并发章节 关于锁升级,偏向锁,轻量级锁参考<Java并发编程的艺术> 关于线程安全和线程安全的程度参考了<Java并发编程实战> 图片参考https://www.processon.com/u/5dee0443e4b093b9f775065c#pc 一丶Java内存模型 1.概述 多任务处理已经是操作系统的必备技能,计算机被要求…
Verilog HDL常用建模方式——<Verilog与数字ASIC设计基础>读书笔记(四) Verilog HDL的基本功能之一是描述可综合的硬件逻辑电路.所谓综合(Synthesis)是指将Verilog HDL程序.原理图等设计输入翻译成由与门(and).或门(or).非门(not)等基本逻辑单元组成的门级连接,并根据设计目标和要求对门级逻辑连接进行优化,得到优化的门级网表文件. Verilog HDL主要有三种建模方式: 4.1结构级建模 结构级建模包括门级建模和分层建模两种情况.门级…
1. Set  - 元组的集合,在 Set 中的元组用逗号分开,Set 以花括号括起来,例如: { ([Product].[Category].[Accessories]), ([Product].[Category].[Bikes]), ([Product].[Category].[Clothing]), ([Product].[Category].[Components]) } 从这个例子中可以看到Set的几个特点: 一个Set 中可以包含一个或者多个 Tuple 元组 在 Set 中的每一…
<<Java RESTful Web Service实战>> 读书笔记 第一章   JAX-RS2.0入门 REST (Representational State ransfer) 表述性状态转移 REST 具有跨平台跨语言的优势 RPC请求都是HTTP协议的POST方法,使用SOAP协议和HTTP协议 RPC 是面向方法的调用 REST 是面向资源状态的 架构风格  RPC.REST.MVC JAX-RS .JAX-WS Jersey 第二章JAX-RS2.0快速实现 J2SE…
发现自己有很多读书笔记了,但是一直都是自己闷头背,没有输出,突然想起还有博客圆这么个好平台给我留着位置,可不能荒废了. 此文读的书是<Jvava并发编程的艺术>,方腾飞等著,非常经典的一本书,本笔记是一边复习笔记,一边对照书本上的勾画重点,互相补充得来. 一.并发编程的目的与挑战 并发编程的目的只有一个:更充分的利用好计算资源,让程序运行的更快更有效率 请把这个目的牢记在心,因为,并不是启动更多的线程就能让程序最大限度的并发执行的,因为配合,甚至管理更多的线程本身也是有开销的.所以至少来说,利…
说明 这里是阅读<Effective Java中文版第二版>的读书笔记,这里会记录一些个人感觉稍微有些重要的内容,方便以后查阅,可能会因为个人实力原因导致理解有误,若有发现欢迎指出.一些个人还不理解的会用斜线标注. 第一章是引言,所以跳过. 第二章 创建和销毁对象 第1条:考虑用静态工厂方法代替构造器 含义 静态工厂方法是指一个返回类的实例的静态方法,例如: public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE :…
今天看JVM的过程中收获颇丰,但一想到这些学习心得将来可能被遗忘,便一阵恐慌,自觉得以后要开始坚持做读书笔记了. 操作系统层面的内存管理 物理内存是一切内存管理的基础,Java中使用的内存和应用程序的内存一样是从物理内存申请下来的内存.物理内存也就是寄存器,通过地址总线与CPU相连,通常情况下地址总线与寄存器有着相同的位数,同时也决定了处理器最大可寻址的地址空间. 为了提高物理内存的利用率而产生了虚拟内存,也就是逻辑上的内存.为了保证操作系统和应用程序的稳定性,运行在操作系统中的用户程序不能访问…
一.线程管理 1.线程的创建和运行 创建线程的2种方式: 继承Thread类,并覆盖run()方法 创建一个实现Runnable接口的类.使用带参数的Thread构造器来创建Thread对象 每个Java程序都至少有一个执行线程.当运行程序的时候,JVM将启动这个执行线程来调用程序的main()方法 当一个程序的所有非守护(non-daemon)线程都运行完成的时候,这个Java程序将结束 如果初始现场(执行main()方法的线程)结束了,其余的线程仍将继续执行直到它们运行结束 如果某一个线程调…