摘要: volatile的作用 1.防止指令重排序 首先要理解什么是指令重排序?指令重排序的利弊?后续举例说明 2.多线程访问共享资源时,缓解synchronized重量级锁带来的性能问题 但是volatile在特定的场景下使用,才能发挥其作用。如果对其原理理解不透彻,使用不当,会带来很多问题。 volat 阅读全文
posted @ 2019-04-22 13:37 JavaPeak 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 1.涉及的类 多线程类、共享资源存储类 2.类之间的关系 (1)共享资源存储类作为线程类的全局成员变量,在线程初始化时,通过setter或者构造注入(当然此处是同一个共享资源类对象),实现多个线程共享访问资源 (2)共享资源存储类作为线程类的全局静态变量,通过类级别设置共享资源存储类对象。 建议使用 阅读全文
posted @ 2019-04-22 12:57 JavaPeak 阅读(448) 评论(0) 推荐(0) 编辑
摘要: HashSet集合add元素底层实现使用的是HashMap。 简单记忆:无论HashMap put元素还是HashSet add元素,都先调用hashCode()方法,若hashCode方法返回值不同,则不会调用equals()方法,若相同,则再调用equals方法进行判断是否相等。 阅读全文
posted @ 2019-04-20 20:51 JavaPeak 阅读(1249) 评论(0) 推荐(0) 编辑
摘要: HashMap集合put元素的原理:(1)计算key的hashCode(2)将key的hashCode作为计算因子,通过哈希算法计算HashMap的数组下标index(3)如果index下标的数组元素为空,直接put(新增元素)(4)如果index下标的数组元素不为空,调用key的equal方法,判 阅读全文
posted @ 2019-04-18 14:18 JavaPeak 阅读(1718) 评论(0) 推荐(1) 编辑
摘要: 一般来说,不会将全局变量的定义写在头文件中。因为如果多个C源文件都添加了头文件,很容易引起重复定义的问题,这时候一般编译器都会提示。正确的做法是在C源文件中定义一个全局变量,在头文件中加入全局变量的声明。 阅读全文
posted @ 2019-04-18 14:00 JavaPeak 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 关于大型分布式系统需要考虑的问题: 1.负载均衡服务器 用于接收请求并将请求均衡发送给应用服务器处理。 2.分布式消息队列服务器 用于多个应用之间的互相调用和通信(一般为异步)。 3.分布式缓存服务器 用于提供数据的频繁高速访问,减少直接访问DB的压力。 4.分布式数据存储服务器 用于数据的安全、快 阅读全文
posted @ 2019-04-15 13:49 JavaPeak 阅读(1383) 评论(0) 推荐(0) 编辑
摘要: 关于关系型数据库事务隔离级别 阅读全文
posted @ 2019-04-13 19:10 JavaPeak 阅读(277) 评论(0) 推荐(0) 编辑
摘要: NIO深入理解 阅读全文
posted @ 2019-04-13 18:28 JavaPeak 阅读(174) 评论(0) 推荐(0) 编辑