Java
文章平均质量分 72
minamisama
keep coding
展开
-
本地环境使用Arthas排查Java程序接口性能问题(Windows)
Arthas命令太多太复杂,每次用的时候去找会比较麻烦,这里推荐一个插件,可以帮助我们快速生成命令,下面还是以Trace命令为例插件 arthas idea使用的话也很简单,直接在方法名上右键,选择Arthas Command,选择我们需要的Trace命令然后去终端上直接粘贴就可以用了。原创 2023-10-26 10:37:12 · 753 阅读 · 0 评论 -
Docker Compose部署Spring Cloud微服务项目
之所以采取只暴露一个网关端口的方法是为了模拟内网隔离,也就是说业务服务不暴露在公网,所有服务都需要走网关访问使用docker-compose只是为了部署简化,不用docker-compose只用docker run也是能达到同样效果的是否可以用 spring navtive + graalvm 简化上述步骤还在研究中,目前实践下来发现,spring navtive + graalvm 似乎没有什么优势。原创 2023-10-24 16:33:46 · 472 阅读 · 5 评论 -
SpringBoot中的@EnableXXX注解是如何生效的?
为了了解@EnableXXX注解的实现原理,我们需要深入到@EnableXXX注解里面,可以看到里面一般都有一个@Import注解,而@Import注解的作用就是导入类,一般是一个配置类,而配置类中的bean就将交由Spring容器进行管理,于是在其他地方就可以注入这些bean来完成我们的扩展功能了。简而言之,@EnableXXX可以通俗的理解为开关,它开启了某项功能,而本质上就是导入了一些bean。这里做一个简单的讲解。下面以@EnableScheduling为例,看一下其内部的一些构造,首先是启动类。原创 2023-08-11 16:20:19 · 218 阅读 · 0 评论 -
HashMap源码分析(JDK1.7)
HashMap的底层结构JDK7:Entry数组+链表JDK8:Node数组+链表+红黑树本文只讨论JDK1.7的HashMap,JDK1.8的HashMap将在另一篇文章中讨论源码分析重要属性// 默认初始化数组长度-16static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // 默认最大数组长度-2^30static final int MAXIMUM_CAPACITY = 1 << 30;// 默认负载因子原创 2021-10-06 15:27:07 · 127 阅读 · 0 评论 -
JVM的各种垃圾收集器详解(CMS、G1)
我们可以把垃圾回收器分为3类串行、吞吐量优先、响应时间优先其中,串行是单线程,吞吐量优先和响应时间优先是多线程本文重点讨论的是分代收集器,ZGC会另外做一个文章专门讲解1 串行(单线程)Serial收集器(复制算法)——新生代Serial Old收集器(标记-整理算法)——老年代单线程对内存较小,适合个人电脑采用复制算法-新生代,标记整理算法-老年代-XX:+UseSerialGC=Serial+SerialOld——开启串行GC回收过程安全点:GC时,所有用户线程都会原创 2021-10-04 15:44:33 · 506 阅读 · 0 评论 -
ThreadLocal的使用及原理(源码解析)
1、ThreadLocal介绍ThreadLocal能做什么?提供线程内的局部变量,不同线程之间不会相互干扰,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或组件之间一些公共变量传递的复杂度总结1. 线程并发:在多线程并发的场景下2. 传递数据:我们可以通过ThreadLocal在同一线程,不同组件中传递公共变量,类似于JavaWeb中的域对象3. 线程隔离:每个线程的变量都是独立的,不会互相影响ThreadLocal的基本使用常用方法方法声明描述Thre原创 2021-10-03 20:15:47 · 196 阅读 · 0 评论