自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 volatile的实现原理以及应用场景

volatile的实现原理以及应用场景volatile是轻量级的synchronized,但是volatile不会引起线程的上下文切换和调度。共享变量的可见性volatile在多核处理器进行开发时保证了共享变量的可见性,即当一个线程修改这个变量时,其他线程能立马得到最新修改的值。1. volatile的硬件实现原理为了提高处理速度,避免内存IO速度的木桶短板,现代处理器不直接和内存进行通信,而是将内存中的数据读取到CPU的内部高速缓存中(L1,L2,L3等),这里普及一下高速缓存的概念(cac

2020-06-20 15:59:16 1269

原创 Spring - AOP简单理解及术语解释

Spring - AOP简单理解及术语解释什么是AOP简单一句话概括:在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想。上面的概括可以通俗的了解到什么是AOP,但是并不严谨,AOP不一定都在运行时生成代理对象来织入的,也可以在编译期,类加载期织入,这一点Spring AOP和AspectJ就不完全相同。为什么要有AOPAOP是对OOP(面向对象编程)的补充和完善,当一个集合有大量的公共行为和属性时,我们可以通过封装,继承,多态等来表明集合内对象的层次结构。我们最常说的,实现一个父类

2020-06-17 16:04:48 690

原创 重构名录-封装

封装记录(Encapsulate Record)当复杂的数据结构记录需要频繁变化时,那么将其组织成一个类,对外提供变化点的函数。如果确定记录是固定数据,那么完全可以不用理会。封装集合 (Encapsulate Collection)· 当对一个集合做各种增删改查的操作并且有多处都需要做这种操作时,那么需要将对这个集合和各种操作封装起来,让每个调用处都统一使用这个封装起来的类。重点是对集合增删改查操作的封装。以对象取代基本类型(Replace Primitive with Object)在开

2020-06-16 16:33:23 317

原创 初识性能测试工具JMeter

JMeter简介Apache JMeter是Apache组织开发的基于Java的压力测试工具。JMeter可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试他们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。JMeter的特点能够对HTTP和FTP服务器进行压力和性能测试,也可以对任何数据库进行同样的测试(通过JDBC);完全的可移

2020-06-15 17:13:24 311

原创 jvm内存模型与原子性,可见性,有序性

jvm内存模型与原子性,可见性,有序性

2020-06-13 16:08:08 251

原创 解决缓存与数据库不一致问题

缓存与数据库不一致主要有以下几点:一、数据库主从不一致二、缓存与数据库不一致三、问题分析四、不一致优化一、数据库主从不一致如下图所演示,无缓存时,数据库主从不一致该图发生的场景是,写后立刻读主库一个写请求(主从没同步完成),从库接着一个读请求,读到了旧数据,主从同步完成导致的结果是:主动同步完成之前,会读取到旧数据可以看到,主从不一致的影响时间很短,在主从同步完成后,就会读到新数据。二、缓存与数据库不一致引入缓存后,缓存和数据库不一致问题。如上图,发生的场景也是,写后立刻读:(1+2

2020-06-12 12:12:17 1536

原创 CPU缓存和内存屏障

CPU性能优化手段 - 缓存为了提高程序的运行性能, 现代CPU在很多方面对程序进行了优化。例如: CPU高速缓存, 尽可能的避免处理器访问主内存的时间开销, 处理器大多会利用缓存以提高性能多级缓存L1 Cache (一级缓存) 是CPU第一层高速缓存, 分为数据缓存和指令缓存, 一般服务器CPU的L1缓存的容量通常在32-4096kbL2 Cache (二级缓存) 由于L1高速缓存的容量限制, 为了再次提高CPU的运算速度, 在CPU外部放置一高速缓存存储器, 即二级缓存L3 Cache(三级

2020-06-11 16:55:30 215

原创 浅析内存屏障以及在java中的应用

浅析内存屏障以及在java中的应用1) 指令重排序2) java 内存模型中的happen before原则3) 内存屏障(Memory Barrier)4) volatile语义中的内存屏障5) final语义中的内存屏障1) 指令重排序程序在运行时内存实际的访问顺序和程序代码编写的访问顺序不一定一致,这就是内存乱序访问。内存乱序访问行为出现的理由是为了提升程序运行时的性能。这种内存乱序问题主要是由两种原因引起的:1 : 编译器在编译时进行了编译优化,导致指令重排;在多cpu环境下,

2020-06-11 16:29:09 616

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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