使用分页查询获取全量数据遇到的问题 问题 在数据库中进行 count 数据量是4050,但是在代码中通过分页查询进行统计之后的总量虽然是 4050,但是去重之后不到 4050。 select count(*) from `recording_score_task` where `business_type` = 22 and create_dt &…
@ExceptionHandler原理浅析 初始化 初始化 ExceptionHandlerExceptionResolver#exceptionHandlerAdviceCache 初始化方法:initExceptionHandlerAdviceCache() public static List<ControllerAdviceBean&…
常见的五种IO模型 一个通俗的例子 阻塞IO:你想喝水,用水壶自己烧水,需要自己盯着;烧开了需要自己倒在杯子里 非阻塞IO:你想喝水,用水壶自己烧水,烧上之后就去忙别的事情了,然后等2分钟回来看看有没有烧开;烧开了需要自己倒在杯子里 IO多路复用:你想喝水,你找了一个专门烧水的人给你烧水,他会给很多人烧水。你说我想烧水,他就给你烧上,你就可以去忙别…
TreadLocal ThreadLocal解决的是线程内部变量的问题,并不是为了解决并发与共享变量的问题。 堆中有两个引用指向ThreadLocal,一个是ThreadLocal本身(强引用),一个ThreadLocalMap中Entry的key(弱引用)。 ThreadLocal的缺点? ThreadLocal内部使用的线性探测法解决hash冲…
数据结构 Node数组+链表 当链表长度大于8并且数组长度大于64时,链表转变为红黑树。 树退化成链表时机 resize()扩容时,红黑树拆分的树节点小于等于6则退化成链表 remove()移除元素时,如果红黑树根 root 为空,或者 root 的左子树/右子树为空,root.left.left 根的左子树的左子树为空,都会发生红黑树退化成链表 …
一些概念 Advice:一段具体的切面逻辑,例如:目标方法执行前需要执行的那段代码就是advice Advisor:它内部需要指定一个 Advice,Advisor 决定该拦截哪些方法,拦截后需要完成的工作还是内部的 Advice 来做 Pointcut:切入点,用于定义哪些方法需要被增强或者说需要被拦截 Aspect:一般会定义一堆Pointcu…
1、事务隔离级别 两次转账 转账前:A:11 B:2 总和:13 转账后:A:6 B:12 总和:18 违反了一致性 1.1 事务并发遇到的不一致性问题: w=write c=commit a=abort w1=事务T1写 x,y初始值为0 脏写:一个事务修改了另一个未提交事务修改过的数据 w1[x=1]w2[x=2]w2[y=2]c2w1[y=1…
参考资料:深入理解Linux网络 相关实际问题 1、容器中的eth0和母机上的eth0是一个东西吗? 2、veth设备是什么,它是如何工作的? 3、Linux是如何实现虚拟网络环境的? 4、Linux如何保证同宿主机上多个虚拟网络环境中的路由表可以独立工作? 5、同一宿主机上多个容器之间是如何通信的? 6、Linux上的容器如何和外部机器通信? v…
事务隔离级别 两次转账 转账前:A:11 B:2 总和:13 转账后:A:6 B:12 总和:18 违反了一致性 事务并发遇到的不一致性问题: w=write c=commit a=abort w1=事务T1写 x,y初始值为0 脏写:一个事务修改了另一个未提交事务修改过的数据 w1[x=1]w2[x=2]w2[y=2]c2w1[y=1]c1 最终…
参考资料:深入理解Linux网络 为什么服务端程序都需要先listen一下? 半链接队列和全连接队列长度如何确定? “Cannot assign requested address”这个报错你知道是怎么回事吗? 一个客户端接口可以同时用在两条链接上吗? 服务端半/全链接队列满了会怎么样? 新连接的socket内核对象是什么时候建立的? 建立一条TC…