- 博客(11)
- 收藏
- 关注
原创 LinkedList源码1.8分析
链表中每个节点包含两个引用,prev指向当前节点前一个节点,next指向当前节点后一个节点,可以从头结点遍历到尾结点,也可以从尾结点遍历到头结点。由此我们也可以看出ArrayList底层数据结构是数组,而数组是一片内存地址连续的空间,它没有上下节点或元素的记录,进行插入或者删除元素时,需要将后续元素整体往前或者往后搬移,其时间复杂度为O(n),效率比较低,而LinkedList使用的双向链表就没有这个限制,Node可以分布于各个内存地址,他们之间的关系通过prev和next维护,适合频繁的插入删除。
2023-10-08 16:24:43
109
1
原创 记一次使用阿里云slb绑定ecs配置访问502 Bad Gateway问题
3、slb的健康检查最好开启配置一下,这样方便查看slb是否能正常负载均衡到ecs,配置时一般都默认,修改一下路径即可,如果不修改路径采用默认的/通用匹配也可以,但是在nginx中配置的location通用匹配模块就需要相应的修改一下。2、slb绑定的ecs服务器,监听的端口可以设置80也可以设置为其他的,无论设置什么,ecs中nginx监听的端口要与这里的保持一致,如果没有安装nginx就与后端服务监听的端口保持一致,权重按照自己业务需求设置即可。这里用的是=精确匹配,用其他的也可以,保证访问到就可以。
2023-08-15 18:15:08
776
1
原创 volatile详解--面试必看
上面图中源码是Java,汇编码是Java字节码对应的汇编码,总共分为五个汇编指令,但与Java相关的是三个指令,第一个new指的是申请一片空间,里面有一个成员变量m,并赋予默认值0,这第一步就称为对象的半初始化。我们都知道被volatile修饰的变量就是共享变量,当CPU写数据时,如果发现操作的变量是共享变量,即在其他CPU中也存在该变量的副本,会发出信号通知其他CPU将该变量的缓存行置为无效状态,因此当其他CPU需要读取这个变量时,发现自己缓存中缓存该变量的缓存行是无效的,那么它就会从内存重新读取。
2023-08-13 15:48:12
125
1
原创 记一次idea启动项目报数据库连接超时问题Communications link failure
在外出差,使用vpn账号通过Easy Connect连接后,访问公司内网的gitlab,以及其他页面都正常,包括本地用navicat连接数据库也是正常的,但是在idea中启动项目连接数据库就报连接超时,包括如果访问的是公司服务器上的nacos,都是一样报错,自己先尝试了用自己本地安装的nacos,但是数据库的连接信息用的还是公司服务器上的,然后就只报连接超时问题。之后,阻止了一些ipv6的网络通信(这个貌似是easy connect的问题)所以我们需要去让它可以使用vpn模式下的ipv4网段。
2023-08-12 22:40:07
1102
1
原创 .gitignore文件的相关使用
所以,在项目开发过程中再添加gitignore文件,那么之前开发添加git的文件档案不会被排除,即使你已经添加到gitignore文件中,gitignore会告诉git版本控制系统不要处理指定规则下的文件档案,但只要文件再被指定前有提交过,那么这些文件就会被持续追踪。在创建项目后未提交push,此时添加gitignore都是可以生效的,它只能作用于未被跟踪的文件,也就是那些从来没有被git记录过的文件。1、清楚本地git提交的缓存,只是移除文件缓存,不会删除文件提交记录。3、将第二步的规则提交。
2023-06-27 16:51:12
169
原创 Native memory allocation (mmap) failed to map 1460142080 bytes for committing reserved memory
出现这个情况我首先去查看了服务进程,发现服务进程直接被自动杀掉,然后看了报错信息知道跟内存有关,就用free -h查看了服务器内存,发现剩余空间充足,我先去百度了一下查看了一些解决方法,比如修改vm.overcommit_memory的值去改变内存分配策略。这里我挑处的是有问题的循环,plusMinutes这个方法加分钟,但是如果是加到24:00,它是默认为00:00,所以造成了死循环,然后造成了内存溢出,服务进程直接被杀死。linux系统会对大部分的申请都回复yes,以便于运行更多的程序。
2023-06-14 15:20:21
2832
原创 linux服务器搭建kafka并集成springboot
vim zoo.cfg进入配置文件,修改Zookeeper数据存储地址,默认地址为Linux临时文件目录,在安装目录下新建文件夹,地址切换为新建文件夹的地址,修改后保存并退出。b、往下翻,找到配置参数log.dirs=/tmp/kafka-logs,改参数地址为存储Kafka数据地址,默认地址为Linux临时目录,会不定时回收,请修改地址。e、配置Kafka环境变量,使用cd命令进入根目录,使用vim ./etc/profile 文件配置Kafkal路径并保存退出 后面的路径为kafka的文件夹地址。
2023-05-19 16:22:05
309
1
原创 Hashmap、ConcurrentHashmap部分面试总结相关
一个Segment里包含一个HashEntry数组,每个HashEntry是一个链表结构的元素,每个Segment守护着一个HashEntry数组里的元素,当对HashEntry数组的数据进行修改时,必须首先获得与它对应的Segment锁。因为hashmap在做插入操作时会调用一个addEntry的方法,如果多个线程同时调用这个方法,那么会同时得到现在的数组位置存放的链表的头结点,然后一个线程写入新的头结点之后,其他线程也会写入新的头结点,这样就会造成一个数据覆盖丢失的问题。
2023-05-16 10:45:29
262
1
原创 记录nacos2.2.1启动报错,Unable to start web server;nested exception is org.springframework.boot.web.server等
解决nacos2.2.1启动报错中的一个问题
2023-04-24 11:22:34
1505
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人