- 博客(9)
- 资源 (1)
- 收藏
- 关注
原创 JUC下锁和工具的整理
JUC锁框架概述Lock接口,Lock实现提供了比使用synchronized方法和语句可获得的更广泛的锁定操作ReadWriteLock接口,维护一对相关的锁,一个用于只读,一个用于写入,当没有write时读取锁可以由多个reader线程同时保持,写入锁是独占锁AbstractQueuedSynchonizer,AQS,其为实现依赖于先进先出等待队列的阻塞锁和相关同步器提供一个框架。AbstractOwnableSynchonizer,可以由线程以独占方式拥有同步器,此类为创建锁和相关同步器提供基
2021-01-12 11:49:51 146
原创 HashMap相关源码补充(扩容)
初始化桶大小为16,最大值为 1<<30,也就是2的30次方,因为2的31次方在java中是负数,实际上在resize方法中有一个判定if (oldCap >= MAXIMUM_CAPACITY) { threshold = Integer.MAX_VALUE; return oldTab;}当桶的数量超过1<<30的时候会变成Integer.Max_VALUE字段table 真正存储数据的数组字段s
2021-01-12 11:42:43 84
原创 ConcurrentHashMap相关源码流程
ConcurrentHashMap的put流程 public V put(K key, V value) { return putVal(key, value, false); }put方法中调用了putVal方法putVal中先检测K,V是否为空取得key的hash值遍历数组(遍历中)检测是否初始化,没有则初始化(遍历中)通过hash计算出一个表中的位置,如果没有元素使用cas尝试添加(没有加锁),失败则自旋保证成功。检测到如果ha
2021-01-03 23:03:25 138
原创 线程池部分源码解析及部分流程
线程池帮我们重复管理线程,避免创建大量的线程增加开销池化及线程池流程先建立一个线程池,已经创建一定数量的空闲线程;当子任务需要创建一个线程时,直接从线程池中获取空闲线程(对应选取空闲的门),执行任务;任务完成后,将线程归还到线程池中,重归空闲;其余任务亦是如此;最后整个任务结束后,销毁所有线程,关闭线程池。实际上过程创建线程池之后,当需要创建一个线程,调用线程池execute提交一个runnable,然后判断工作线程数是否小于核心线程数,如果小于则调用addworker
2021-01-03 23:00:08 65
原创 关于使用docker启动ElasticSearch秒退问题(exit78)
关于使用docker启动ElasticSearch秒退问题(exit78)在我使用pull了7.6.2版本的ElasticSearch并运行之后,我发现在我的宿主机上无法访问那个端口,一开始我以为是权限的问题,上网查了下给它运行时加了 -e “http.host=0.0.0.0” 但我发现还是无法访问,我这时回头一看发现docker ps 正在运行的容器种并没有它的存在这时我反映过来应该是报错...
2020-04-03 01:20:16 2194
原创 Mysql的连接问题:Lost connection to MySQL server at 'reading initial communication packet', system error:0
Java报错今天在痛苦的极其缓慢的解析springboot的源码时候(水深火热啊)进行了下测试,结果发现报错Error creating bean with name ‘entityManagerFactory’ defined in class path resource 无法从创建entityManagerFactory,我感到很疑惑,然后上网查之后认真检查了网上说的几种可能,没设置setg...
2020-03-21 22:04:11 409
原创 关于使用navicat连接虚拟机的mysql数据库
在windows连接虚拟机的数据库今天在windows上要连接虚拟机上的数据库时,连接不上,总是报1251错误,一开始百度到了很多,基本上都是说mysql8的编码的问题,还有说是远程授权的问题。我在查询了数据库里mysql 中的user表后发现root对应的里有%,那么问题就不是出在这里,我就开始修改字符编码mysql> ALTER USER 'root'@'localhost' ID...
2020-03-14 23:38:51 1184
原创 关于Serializable接口 的一些东西
关于Serializable接口 的一些东西学习mybatis时候发现封装的user等类都实现了Serializable接口,但查看Serializable接口的源码发现里面什么都没有。一个成员函数或者成员变量也没有。那么这个接口的作用是什么呢。在写东西的时候很想知道,所以在网上找了一些博客看过之后,知道这个接口的作用是实现序列化。序列化:对象的寿命通常随着生成该对象的程序的终止而终止,有...
2019-12-15 22:02:36 102
原创 关于fork()
fork初次见于疯狂Java讲义中的ForkJoinPool的实现类中,这是一个线程池的实现类,由于不清楚这个函数的作用,便自行上网查询他的作用是从已经存在的进程中创建一个和父进程完全相同的子进程。我们来看这个程序ForkJoinPool pool=new ForkJoinPool();pool.submit(new Run()).fork();public void run() { ...
2019-07-18 22:14:10 101
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人