![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java基础知识
java基础知识
猿码YM
这个作者很懒,什么都没留下…
展开
-
java阻塞队列和非阻塞队列的区别
阻塞队列:通过加锁的方式让队列的生产者或者消费者处于等待状态非阻塞队列:通过cas的方式来保证线程安全,多个线程可以并发生产或者消费原创 2022-01-27 01:47:03 · 2903 阅读 · 0 评论 -
堆数据结构总结
堆的特性:子节点都大于或小于父节点通过数组的方式来存储堆数据结构,省去了链表的前后引用,降低空间复杂度因为是数组访问节点的时间复杂度是1堆可以用来实现优先级队列原创 2022-01-27 01:08:13 · 356 阅读 · 0 评论 -
AtomicInteger源码解析
线程不安全的场景:public class CASTest { int i = 0; public static void main(String[] args) throws InterruptedException { CASTest casTest = new CASTest(); new Thread(() -> { for (int j = 0; j < 100; j++) { .原创 2022-01-26 17:51:05 · 368 阅读 · 2 评论 -
gitignore文件修改
有没有碰到这样一个尴尬的场景:gitignore文件commit之后发现不想被提交的文件被提交了原因是gitignore文件中没有过滤解决办法:先执行:git rm -r --cached .再执行:git add .两个命令解释:从暂存区删除所有的文件,使所有文件都不受版本控制,会看到文件在idea中变成红色因为gitignore文件控制的是哪些文件可以加入版本控制,所以刚才删除之后,我们修改了gitignore文件,再次添加就可以排出不想提交的文件了。...原创 2021-12-17 15:48:49 · 766 阅读 · 0 评论 -
threadLocal源码分析
threadLocal源码分析threadLocal.set()方法threadLocalMap构造如何把threadLocal保存到mapthreadLocalMap如何解决hash冲突threadLocalMap如何重新计算元素的位置threadLocal.set()方法 public void set(T value) { // 获取当前线程 Thread t = Thread.currentThread(); // 获取当前线程的ThreadLoc原创 2021-12-09 16:02:37 · 208 阅读 · 0 评论 -
threadLocal如何避免内存泄漏
threadLocal如何避免内存泄漏1.对象引用关系2. 什么是内存泄漏?3. threadLocal是如何避免内存泄漏的?4. 手动调用remove方法释放threadLocal1.对象引用关系线程持有threadLocalMap引用,threadLocalMap持有自定义entry元素的数组每个entry持有一个key和value这里的key被包装成一个弱引用,方便threadLocalRef出栈,或者被回收的时候,gc能够回收threadLocal2. 什么是内存泄漏?一些无法被再原创 2021-12-09 15:02:13 · 1118 阅读 · 0 评论 -
常用git命令总结
说来惭愧,一直在使用git提交代码,但是除了git pull,git push这两个命令,很少使用其他命令。因为这两个命令就可以应付工作中的大部分工作需要,懒惰使人愚昧和无知。平时工作中总会出现一种情况,对一个小需求有多次相同的提交注释,这也不影响代码正常运行呀,就一直放任不管。直到有一天看到这种重复提交的注释,自己觉得恶心了,影响git log的简洁美观。能不能把这些提交合并为一条,保持清晰明了的提交历史也方便日后定位问题。ok,扯了这么多,下面让我们进入正题。在学习git命令之前我们一张经典原创 2021-10-31 12:42:08 · 95 阅读 · 0 评论 -
bytebuddy,Failed to load class "org.slf4j.impl.StaticLoggerBinder"
我们通过bytebuddy开发javaagent最终要部署到springboot项目中,javaagent引入了slf4j-api包,但是没有slf4j实现类,所有报错“failed to load class”。这时我们有两种解决思路:1.在javaagent中实现slf4j。2.在javaagent 中排除slf4j,具体实现留给我们监控的springboot项目。毫不犹豫选择第二种,...原创 2020-04-22 17:19:39 · 277 阅读 · 0 评论