- 博客(10)
- 收藏
- 关注
原创 JUC-AQS源码详解
整个JUC体系的基石,主要用于解决锁分配给“谁”的问题:如果共享资源被占用,就需要一定的阻塞等待唤醒机制来保证锁分配。这个机制主要用的是CLH队列的变体实现的,将暂时获取不到锁的线程加入到队列中,这个队列就是AQS同步队列的抽象表现。它将要请求共享资源的线程及自身的等待状态(waitState)封装成队列的结点对象(Node) ,通过CAS、自旋以及LockSupport.park()的方式,维护state变 量的状态,使并发达到同步的效果。都是通过Sync实现AQS相关关系图:NofairSync、Fai
2022-07-06 15:06:28
291
原创 IO多路复用
多路: 指的是多个socket网络连接;复用: 指的是复用一个线程;多路复用主要有三种技术:select,poll,epoll。简称FD,是一个从0开始递增的无符号整数,用来关联Linux中的一个文件。利用单个线程来同时监听多个FD,并在某个FD可读、可写时得到通知,从而避免无效的等待CPU资源。三、多路复用技术1)select1.实现原理...
2022-07-02 14:30:36
487
原创 docker安装zookeeper
docker安装zookeeper1、拉取镜像docker pull zookeeper:latest2、生成挂载目录mkdir -p /study/zookeeper/datamkdir -p /study/zookeeper/confmkdir -p /study/zookeeper/logs3、启动容器docker run -d \--name zookeeper \--privileged=true \-p 2181:2181 \--restart=always \-v
2022-05-09 19:59:09
2389
原创 记一次使用线程池保存用户信息 业务层获取用户信息为空的问题
记一次使用线程池保存用户信息 业务层获取用户信息为空的问题理想执行顺序:prehandle->controller->service问题描述:在service层通过UserHolder获取信息时,一直为空导致空指针异常报错问题问题来源:由于preHandle是与token相关的,而前端中query无token携带导致preHanle看成无token登录直接放行,没有保存用户信息的UserHolder中......
2022-05-05 22:33:13
975
原创 记一次rabbitmq+MongoDB错误
记一次rabbitmq+MongoDB错误Spring Boot RabbitMQ Execution of Rabbit message listener failed错误现象:队列堆积 消息无法被消费 一直推送错误原因:消息确认过程中出现代码错误问题导致消息无法被消费进一步查找原因:确认消息过程中rabbitmq删除操作出现问题Expected to be able to resolve a type but got null! This usually stems from type
2022-05-01 15:31:49
2069
原创 nacos错误
Could not resolve placeholder ‘xxx’ in value “${xxx.xxx}”记一次nacos配置出错:nacos读取不到配置中心属性相应文档查看: Nacos官方文档:https://nacos.io/zh-cn/docs/what-is-nacos.html 版本查看:https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明一般原因有如下几点:nacos创建配置信息错误b
2022-04-29 21:59:41
556
原创 算法--动态规划
一:动态规划原理1、基本思想问题的 最优解如果可以由子问题的最优解推导而出,则可以先求解子问题的最优解,再构造原问题的最优解;若子问题有较多的重复出现,则可以自底向上的从最终子问题向原问题逐步求解。2、使用条件可分为多个相关子问题,子问题的解被重复使用1)优化子结构一个问题的优化接包含了子问题的优化解缩小子问题集合,只需那些优化问题中包含的子问题,降低实现复杂性可以自下而上2)重叠子问题在问题的求解过程中,很多子问题的解将被重复使用3、动态规划五部曲确定dp数组(dp t
2022-03-30 20:00:58
1695
1
原创 算法---二分算法
详解二分查找算法Although the basic idea of binary search is comparativelystraightforward, the details can be surprisingly tricky…思路很简单,细节是魔鬼。一:二分法算法分析1、二分查找算法定义二分查找又称折半查找,它是一种效率较高的查找方法。二分查找要求:线性表是有序表,即表中结点按关键字有序,并且要用向量作为表的存储结构。2、基本思想(1)首先确定该区间的中点位置(2)将
2022-03-26 20:36:47
6730
5
原创 算法--贪心算法
贪心算法1、贪心算法分析1.1、什么是贪心算法顾名思义,贪心算法或贪心思想采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的。找到一个比较的区间,然后找出区间最优解1.2、贪心算法存在的问题不能保证求得的最后解是最佳的;不能用来求最大或最小解问题;只能求满足某些约束条件的可行解的范围。1.3、贪心算法一般流程评价最优条件是什么?循环 -> 未解决问题 && 还有解从可能的解中取出最优解执行最优解缩小问题规模 -> 双指
2022-03-20 18:35:17
6396
2
原创 算法--排序算法
JAVA的几种常见排序算法一:算法类型分析排序算法可以分为内部排序和外部排序。内部排序是数据记录在内存中进行排序。外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。!二:几种常见排序算法1)冒泡排序a、冒泡排序,是通过每一次遍历获取最大/最小值b、将最大值/最小值放在尾部/头部c、然后除开最大值/最小值,剩下的数据在进行遍历获取最大/最小值d、代码实现public static void main(String[] args) {
2022-03-20 13:52:23
1031
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人