程序员的暴击
码龄2年
  • 34,376
    被访问
  • 76
    原创
  • 136,777
    排名
  • 27
    粉丝
关注
提问 私信

个人简介:业精于勤,荒于嬉;行成于思,毁于随。

  • 加入CSDN时间: 2020-07-22
博客简介:

weixin_49561445的博客

查看详细资料
  • 3
    领奖
    总分 285 当月 31
个人成就
  • 获得18次点赞
  • 内容获得28次评论
  • 获得100次收藏
创作历程
  • 77篇
    2021年
  • 2篇
    2020年
成就勋章
TA的专栏
  • NIO
    1篇
  • JVM
    3篇
  • JUC
    18篇
  • Linux
    1篇
  • 数据结构
    17篇
  • 设计模式
    13篇
  • 算法
    24篇
  • Java学习
    2篇
兴趣领域 设置
  • 大数据
    mysql
  • 后端
    架构
  • 服务器
    linux
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

JVM 入门到精通 Typora 版

发布资源 2021.10.30 ·
md

JVM 下篇:性能监控与调优

文章目录性能优化三部曲第1步(发现问题):性能监控何时需要性能监控第2步(排查问题):性能分析第3步(解决问题):性能调优性能评价/测试指标JVM监控及诊断工具命令行jpsjstatjinfojmap导出内存镜像文件显示堆内存相关信息其它作用jhatjstackjcmdjstatdJVM监控及诊断工具GUIJconsoleVisual VMeclipse MAT获取dump文件分析堆dump文件浅堆与深堆对象实际大小内存泄漏内存泄漏与内存溢出的关系泄漏的分类Java中内存泄漏的8种情况静态集合类单例模式内部
原创
发布博客 2021.10.30 ·
179 阅读 ·
0 点赞 ·
0 评论

JVM 中篇:字节码与类的加载

文章目录字节码的跨平台性前端编译器Class 文件结构Class类的本质Class文件格式Class 文件结构Magic Number(魔数)文件版本号常量池constant_ pool count(常量池计数器)constant_pool[] 常量池表字面量和符号引用全限定名简单名称描述符符号引用和直接引用的区别与关联小结访问标识类索引、父类索引、接口索引集合字段表集合方法表集合属性表集合解析Class 文件解析字节码方式javap字节码指令集加载与存储指令局部变量压栈指令常量入栈指令出栈装入局部变量表指
原创
发布博客 2021.10.30 ·
87 阅读 ·
0 点赞 ·
0 评论

JVM上篇:内存与垃圾回收

注:本文浓缩了宋红康老师JVM 入门到精通上篇(内存与垃圾回收)的精华文章目录JVMJVM 的位置JAVA代码的执行流程JVM 整体结构JVM 的架构模型JVM的生命周期主流JVM 的发展历程类的加载子系统类的加载子系统的作用类的加载过程加载链接类的初始化类的加载器分类虚拟机自带的加载器获取ClassLoader 的实例双亲委派机制工作原理优势类的主动使用和被动使用主动使用运行时数据区程序计数器介绍作用虚拟机栈栈内部的存储结构栈帧的结构局部变量表操作数栈动态链接方法的调用虚方法与非虚方法方法返回地址本地方
原创
发布博客 2021.10.24 ·
1350 阅读 ·
0 点赞 ·
0 评论

JUC 并发编程

1 什么是 JUCjava.util.concurrent 并发工具包 用来优雅的解决多线程下的高并发问题,JUC 下的大部分类均由Doug Lea 设计开发,此乃神人也!让 Java 程序员膜拜的大神,这个憨态可掬的老者让人又爱又恨!JUC 的基本框架2 线程与进程概念进程:一个程序,或者程序的集合一个进程可以包含多个线程,至少包含一个java默认有2个线程 mian GC线程:进程下的不同操作有线程操作负责的 Thread Runnable Callablejava 无法直接
原创
发布博客 2021.10.04 ·
123 阅读 ·
1 点赞 ·
0 评论

Phaser 分层栅栏处理器

概要JDK1.7开始引入的一个同步工具类,适用于一些需要分阶段的任务的处理。它的功能与 CyclicBarrier和CountDownLatch有些类似,类似于一个多阶段的栅栏,并且功能更强大适用于一些需要分阶段的任务的处理同步器作用CountDownLatch倒数计数器,初始时设定计数器值,线程可以在计数器上等待,当计数器值归0后,所有等待的线程继续执行CyclicBarrier循环栅栏,初始时设定参与线程数,当线程到达栅栏后,会等待其它线程的到达,当到达栅栏的总数满足
原创
发布博客 2021.10.04 ·
4825 阅读 ·
0 点赞 ·
0 评论

Exchanger 线程数据交换器

基本结构Exchanger——交换器,是JDK1.5时引入的一个同步器, 主要作用是交换数据。Exchanger有点类似于CyclicBarrier, CyclicBarrier是一个栅栏,到达栅栏的线程需要等待其它一定数量的线程到达后,才能通过栅栏。可以看成是一个双向栅栏Thread1线程到达栅栏后,会首先观察有没其它线程已经到达栅栏,如果没有就会等待,如果已经有其它线程(Thread2)已经到达了,就会以成对的方式交换各自携带的信息,因此Exchanger非常适合用于两个线程之间的数据交换。
原创
发布博客 2021.10.04 ·
5242 阅读 ·
0 点赞 ·
0 评论

ConcurrentHashMap

JDK 7JDK1.7之前的ConcurrentHashMap使用分段锁机制实现类似分散热点的思想,以减少热点域的冲突,最大并发度受Segment的个数限制。ConcurrentHashMap在对象中保存了一个Segment数组,即将整个Hash表划分为多个分段;而每个Segment元素,即每个分段则类似于一个Hashtable;这样,在执行put操作时首先根据hash算法定位到元素属于哪个Segment,然后对该Segment加锁即可。因此,ConcurrentHashMap在多线程并发编程中可是实现
原创
发布博客 2021.10.04 ·
108 阅读 ·
0 点赞 ·
0 评论

ConcurrentSkipListMap

基于跳表的并发安全mapConcurrentSkipListMap以跳表为基础结构的map集合,并且同时支持并发操作,比ConcurrentHashMap最大的优势应该就是有序。内部结构ConcurrentSkipListMap 实现了ConcurrentNavigableMap 接口继承于NavigableMap ,NavigableMap 则继承于sortedMap接口SortedMap提供了一些根据键范围进行查找的功能,比如返回整个Map中 key最小/大的键、返回某个范围内的子Map视图等
原创
发布博客 2021.10.04 ·
91 阅读 ·
0 点赞 ·
0 评论

ReadWriteLock 读写锁

当读操作远远高于写操作时,这时候使用读写锁让读-读可以并发,提高性能。读-写,写-写都是相互互斥的!提供一个数据容器类内部分别使用读锁保护数据的read()方法,写锁保护数据的write()方法public class TestReentrantReadWriterLock { public static void main(String[] args) { DataContainer dataContainer = new DataContainer(); .
原创
发布博客 2021.10.04 ·
121 阅读 ·
0 点赞 ·
0 评论

LinkedTransferQueue

LinkedTransferQueue是一个由链表结构组成的无界阻塞TransferQueue队列。相对于其他阻塞队列,LinkedTransferQueue多了tryTransfer和transfer方法。可以算是 LinkedBolckingQueue 和 SynchronousQueue 和合体。LinkedTransferQueue是一种无界阻塞队列,底层基于单链表实现,其内部节点分为数据结点、请求结点;基于CAS无锁算法实现基本原理LinkedTransferQueue 消费者线程获取取数据时
原创
发布博客 2021.10.04 ·
97 阅读 ·
0 点赞 ·
0 评论

AQS-基于JDK17

全称是 AbstractQueuedSynchronizer,AbstractQueuedSynchronizer抽象类(以下简称AQS)是整个java.util.concurrent包的核心。是阻塞式锁和相关的同步器工.在JDK1.5时,Doug Lea引入了J.U.C包,该包中的大多数同步器都是基于AQS来构建的。AQS框架提供了一套通用的机制来管理同步状态(synchronization state)、阻塞/唤醒线程、管理等待队列。我们所熟知的ReentrantLock、CountDownLatch
原创
发布博客 2021.10.04 ·
152 阅读 ·
0 点赞 ·
0 评论

最全的并发编程JUC 笔记 Typora 版

发布资源 2021.10.03 ·
md

Semaphore 信号量

信号量,用来限制能同时访问共享资源的线程上限。作用: 多个共享资源互斥的使用!并发限流,控制最大的线程数Semaphore维护了一个许可集,其实就是一定数量的“许可证”。当有线程想要访问共享资源时,需要先获取(acquire)的许可;如果许可不够了,线程需要一直等待,直到许可可用。当线程使用完共享资源后,可以归还(release)许可,以供其它需要的线程使用。和CountDownLatch区别CountDownLatch:同步状态State > 0表示资源不可用,所有线程需要等待;Sta
原创
发布博客 2021.10.03 ·
5416 阅读 ·
0 点赞 ·
0 评论

CyclicBarrier加法计数器

用来进行线程协作,等待线程满足某个计数。构造时设置『计数个数』,每个线程执行到某个需要“同步”的时刻调用 await() 方法进行等待,当等待的线程数满足『计数个数』时,继续执行当计数为0的时候还可以重复使用再次计数线程数需要和计数个数保持一致CyclicBarrier可以认为是一个栅栏。一共4个线程A、B、C、D,它们到达栅栏的顺序可能各不相同。当A、B、C到达栅栏后,由于没有满足总数【4】的要求,所以会一直等待,当线程D到达后,栅栏才会放行。public CyclicBarrier(in.
原创
发布博客 2021.10.03 ·
38 阅读 ·
0 点赞 ·
0 评论

Fork/Join

Fork/JoinFork/Join 在 JDK 1.7 , 并行执行任务!提高效率。大数据量!大数据:Map Reduce (把大任务拆分为小任务)Fork/Join框架的使用需要根据实际情况划分子任务的大小Fork/Join 特点:工作窃取由于线程处理不同任务的速度不同,这样就可能存在某个线程先执行完了自己队列中的任务的情况,这时为了提升效率,我们可以让该线程去“窃取”其它任务队列中的任务,这就是所谓的***工作窃取算法***。每个线程都有自己的一个WorkQueue,该工作队列是一个双
原创
发布博客 2021.10.03 ·
67 阅读 ·
0 点赞 ·
0 评论

ThreadLocal 线程隔离

ThreadLocal而是一个java.lang 包下的线程内部的存储类,可以在线程内存储数据,数据存储以后,只有指定线程可以得到存储数据,实现线程隔离。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。且在线程内部任何地方都可以使用,线程之间互不影响ThreadLocal 提供程内的局部变量,不同的线程之间不会相互程的生命周明内起作用,减少同一个程内多个函数或组件之间一些公共变量传详的复杂度在多线程并发下我们可以通过过 Threadlocal在同一线程
原创
发布博客 2021.10.03 ·
1753 阅读 ·
1 点赞 ·
0 评论

线程池底层原理

线程池的好处降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。程序的运行,本质:占用系统的资源! (优化资源的使用 => 池化技术)线程池、连接池、内存池、对象池///… 创建、销毁。十分浪费资源池化技术:事先准备好一些资源,有人要用,就来我这里拿,用完之后还给我。
原创
发布博客 2021.10.03 ·
80 阅读 ·
0 点赞 ·
0 评论

异步回调 :Future

Future接口Future 设计的初衷: 对将来的某个事件的结果进行建模Future模式,可以让调用方立即返回,然后它自己会在后面慢慢处理,此时调用者拿到的仅仅是一个凭证,调用者可以先去处理其它任务,在真正需要用到调用结果的场合,再使用凭证去获取调用结果。这个凭证就是这里的Future。Future模式下的数据获取:JDK提供了另一个接口——Callable,表示一个具有返回结果的任务:public interface Callable<V> { V call() thr
原创
发布博客 2021.10.03 ·
226 阅读 ·
0 点赞 ·
0 评论

原子累加器 :LongAdder

LongAdderLongAdder是java8为我们提供的新的类,跟AtomicLong有相同的效果。是对CAS机制的优化继承于Striped64 ,其子类还有LongAccumulator,DoubleAdder,DoubleAccumulatorLongAccumulator 是LongAdder的扩展,让用户自定义累加规则。可以传入函数式接口DoubleAdder操作浮点型,DoubleAccumulator 是DoubleAdder的扩展,让用户自定义累加规则。可以操作函数式接口pub
原创
发布博客 2021.10.03 ·
81 阅读 ·
0 点赞 ·
0 评论
加载更多