- 博客(68)
- 资源 (9)
- 收藏
- 关注
原创 云原生-02-kubernetes(k8s)集群环境搭建
kubernetes是目前非常火热的技术栈,同时也是对目前非常繁琐微服务的很好的解决方案,并且因为带有微服务发现和治理的能力,结合Docker容器化部署,性能极佳。
2022-07-11 02:47:18
772
原创 分布式-MQ-04 RocketMQ单机、集群及管理台搭建
rocketmq时阿里云旗下的开源项目,在无法自建mq工程的情况下,复用其能力还是很可靠的。本文使用2台虚拟机针对rocketmq单机、集群、管理台搭建进行搭建。
2022-03-04 00:40:03
2841
原创 分布式-MQ-02 RabiitMQ高级特性及整合Spring、SpringBoot
RabbitMQ整个Spring、Springboot,RabbitMQ的高级特性。消息签收确认机制、消峰填谷限流、死信队列、延迟队列等
2022-03-01 01:04:35
2299
原创 并发编程-08 Future&CompletableFuture用法
Future和CompletableFuture是并发场景中十分好用的并发工具类,可以灵活的原本复杂的串行代码并行化。
2022-01-19 23:16:01
5457
原创 并发编程-06 BlockingQueue及应用场景详解
阻塞队列在多线程开发中,起到了重要作用。多线程协作时,为保证线程安全的交互,必须有阻塞池来接收任务。本文讲述了数组队列ArrayBlockingQueue、链表队列LinkedBlockingQueue、同步协作队列SynchronousQueue、优先级队列PriorityBlockingQueue等
2022-01-16 16:32:59
6848
原创 并发编程-05 AQS及多应用场景详解
Doug Lea的java.util.concurrent包下,有一系列的锁但始源都是AbstractQueuedSynchronizer。各自拥有自己的使用场景,也各有针对不同场景的优劣。其中的优势均在于更灵活多变的API,使加锁的控制相较于Synchronized更细腻。诸如:可重入锁ReentrantLock、限流锁Samphore、循环屏障CyclicBarrier、闭锁CountDownLatch、读写锁ReentrantReadWriteLock等,但追本溯源仍是抽象类AQS。
2022-01-15 23:30:46
6753
2
原创 并发编程-04 聊透synchronized锁
多线程开发中,synchronized是重难点,主要是设计太多硬件和JVM源码。其中重量级锁中的cas和最终操作系统中的线程#park(),都少人能真正的细看源码,本篇中hotspot源码源自fox老师,由衷感谢。
2022-01-08 18:30:13
5114
原创 并发编程-03 聊透乐观锁CAS
在JDK的并发包下,有大量使用乐观锁cas的代码,通过争抢修改cas内存值,来保证多线程竞争的高效率是提升独占锁阻塞效率的极佳姿势,但同时带来的ABA和CPU空转问题也值得大家关注。
2022-01-04 22:50:24
6960
原创 并发编程-02 多线程与线程池底层原理
Executors组织结构拒绝策略submit() 和 execute()的区别submit()实现了execute()方法void execute() 和 Future submit() 返回值不同Java原生线程池1.1 newCachedThreadPool()参数定义:corePoolSize: 0 (无核心线程)maximumPoolSize:max (需要的话可以创建2^32-1个线程)[无休止的创建线程会导致OOM和CPU100%]keepAliveTime :6
2021-12-29 23:32:23
5549
原创 并发编程-01 聊透JMM&并发三大特性
1、JMM1.1 JMM(JAVA多线程通信模型——共享内存模型)分析Jvm模型,涉及多个层面的知识,需要从以下三个层面一起来分析。java层面jvm层面硬件层面抽象的JMM模型2、并发三大特性(并发编程Bug的源头)2.1 可见性当一个线程修改了共享变量的值,其他线程能够看到修改的值,则具有可见性。Java 内存模型是通过在变量修改后将新值同步回主内存,在变量读取前从主内存刷新变量值这种依赖主内存作为传递媒介的方法来实现可见性的。可见性保障方式:通过 volatile
2021-12-28 01:30:33
5206
原创 并发编程-01 os底层原理与JMM基础篇
操作系统底层原理与JMM模型一、操作系统底层原理1.1 冯诺依曼模型1.2 操作系统缓存与内存管理1.2.1 操作系统缓存1.2.2 操作系统内存管理1.3 线程与进程二、JMM模型2.1 JMM模型2.2 JMM存在的必要性2.3 数据同步八大原子操作2.4 并发编程三大特性2.4.1 原子性2.4.2 可见性2.4.3 有序性2.5 JMM如何解决原子性、可见性、有序性2.6 volatile特性一、操作系统底层原理想玩转并发编程,前提一定是对计算机底层模型有一定的了解。线程、进程、CPU、内存模型
2021-09-22 22:37:55
5164
原创 服务化-mysql-05 索引优化及Explain实践详解
Explain详解一级目录二级目录三级目录Explain是mysql提供的用于模拟优化器执行sql语句,分析语句性能的高效工具。mysql8.0Explian官网地址https://dev.mysql.com/doc/refman/8.0/en/explain-output.html在这里插入代码片一级目录二级目录三级目录...
2021-09-04 23:26:56
4947
原创 服务化-mysql-06 单机实现mysql8.0主从数据库同步
06 单机实现主从数据库一、历史版本删除二、安装主从数据库2.1 配置my.ini(单机多mysql实例需要区别端口号)2.2 初始化data文件夹2.3 主从数据库安装三、配置主从服务3.1 创建主数据库的从属账号3.2 指定新建的follow为主从同步账号3.3 查看master binlog的起始位置(用于记录后续从属数据库开始同步的日志位置)3.4 从库配置主库信息一、历史版本删除1.1 停止服务1)在任务管理栏找到mysql结束任务。2)管理员权限打开cmd命令行,net stop mys
2021-09-01 00:21:41
5053
原创 JVM-04 调优实战
常见JVM调优工具及实战1、Jdk自带的常见命令1.1 java -heap (pid)1.2 jmap(java memory map) 查看内存问题1.2.1 jmap -histo (pid) >./log.txt1.2.2 jmap -dump:live,format=b,file=jvm.hprof (pid)1.3 jstack 查看虚拟机栈问题1.3.1 jstack 查找死锁1.3.1 jstack 查看CPU飙升问题1.4 jinfo 查看系统属性1.4.1 jinfo -
2021-08-25 00:39:42
4910
1
原创 JVM-03 垃圾收集器
垃圾收集器算法垃圾收集算法是结合堆中不同对象的生命周期,将对象进行分代。生命存活率低的存放在年轻代,而对象生命存活率高的放在老年代。复制算法的效率非常高,将存活对象转移至suvrior区即可。标记整理算法是标记清除进化的过程。标记清除算法非常简单,只需要把存活对象或垃圾标记标记,把存活对象留下,垃圾对象清除即可。但这存在着问题,会使内存空间碎片化,于是有了标记整理算法。标记整理算法。标记整理算法在标记存活和垃圾对象后,不会直接将垃圾清除。而是将存活对象移动到内存一端,将域外的内存全部清理。垃
2021-08-22 00:03:04
5066
原创 JVM-02 内存模型及内存分配机制
杠精看JVM内存模型1、JVM对内存模型中各参数的定义1.1 运行时数据区概念1.2 PC寄存器1.3 线程栈1.4 堆1.5 方法区(元空间、永久代)1.6 运行时常量池1.7 本地方发栈1、JVM对内存模型中各参数的定义初学JAVA时,对JVM中的堆、栈、方法区等甚是模糊,甚至很多老师也讲不清楚,一遍遍从概念学起太浪费功夫,今天就从官网上把JVM内存中的数据区挨个拎出来看。1.1 运行时数据区概念2.5. Run-Time Data AreasThe Java Virtual Machine
2021-08-20 23:07:46
5751
原创 JVM-01 类加载过程及源码分析
一、类加载过程分析我们通过ide写的java代码,毫无疑问是最终需要加载到JVM来运行的。试想JVM作为跨语言的平台,能同时支持多种编程语言(js、groory、scala…等)的字节码文件运行,那么在字节码文件和JVM之间,必须有一套完备的流程,来将字节码文件转化为JVM内存中的变量信息。1.1 类加载器引导类加载器:负责加载支撑JVM运行的位于JRE的lib目录下的核心类库,比如 rt.jar、charsets.jar等扩展类加载器:负责加载支撑JVM运行的位于JRE的lib目录下的ext扩
2021-08-16 00:27:59
5753
1
原创 从Guava-Cache到HashMap
从Guava Cache到ConcurrentHashMap到HashMap1、简介2、Guava Cache3、ConcurrentHashMap 与 HashMap3.1 JDK1.7 HashMap3.1.1 初始化HashMap3.1.2 put方法 (代码复杂,挑有趣的和精髓的说)JDK1.7 ConcurrentHashMapJDK1.8 HashMapJDK1.8 ConcurrentHashMap1、简介Guava是google的一款开源java工具集库,其中许多功能甚是好用。其中的ca
2021-07-29 01:42:11
1379
原创 Flowable 6.4.x工作流
flowable工作流的开发效率令人发指,但是发现多数人对他的理解只局限于请假审批走流程,这并不能真正的展现它的威力,现在贴一份基于Flowable BPMN 6.4.x的代码,供参考。
2021-07-18 07:52:24
6050
1
jdbc_64.jar&sqlJdbc4.jar
2022-09-23
JAVA高级开发工程师面试资料
2022-03-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人