11 2020 档案

PriorityBlockingQueue 源码分析
摘要:之前分析过ArrayBlockingQueue,它的特点是 1 有限,不会扩容 2 严格的先进先出 今天要介绍的PriorityBlockingQueue,正好突破了这两点,第一它是无限的,第二它是根据元素的大小进行排序的的队列 排序所使用的算法是堆排序,而且是小顶堆,也就是说值越小越优先 补充一下 阅读全文

posted @ 2020-11-30 18:20 MaXianZhe 阅读(101) 评论(0) 推荐(0) 编辑

ArrayBlockingQueue 源码解析
摘要:BlockingQueue也是JUC的重要知识,而且包含的BlockingQueue的种类还比较多,本篇先分析ArrayBlockingQueue ,主要分为三部分 1 创建 2 放数据 3 取数据 一 创建 public ArrayBlockingQueue(int capacity) { thi 阅读全文

posted @ 2020-11-30 14:04 MaXianZhe 阅读(129) 评论(0) 推荐(0) 编辑

Kafka 读书笔记--日志索引
摘要:1 log.index.interval.bytes 默认值4K,每当写入4K信息时偏移量索引文件和时间戳索引文件分别增加一个索引项 阅读全文

posted @ 2020-11-27 08:59 MaXianZhe 阅读(92) 评论(0) 推荐(0) 编辑

Mybatis源码解析之--谈谈${}
摘要:一百度${}, #{} 网上有好多答案,不过还是自己跟过源码才能理解原理 一 概述 其实${} 没什么特别的,也可以从入参为POJO里获取属性值进行替换。需要注意的是它通过ognl表达式把POJO做变更,然后从里面获取属性值,进行纯粹的字符串拼接。 所以需要注意,比如一张表有一个列是VARCHAR, 阅读全文

posted @ 2020-11-26 20:24 MaXianZhe 阅读(208) 评论(0) 推荐(0) 编辑

Mybatis源码分析之--浅析ResultSetHandler
摘要:本文浅析ResultSetHandler,说道浅析就是ResultSetHandler本身其实很复杂的,甚至可以说是mybatis四大组件最复杂的,因为resultMap本身还可以嵌套assosiation,collection的标签,一个mapper空间还可以有多个resultMap彼此之间还能嵌 阅读全文

posted @ 2020-11-26 15:09 MaXianZhe 阅读(354) 评论(0) 推荐(0) 编辑

linux命令--ll
摘要:ll命令用来显示当前目录下的所有文件和文件夹详细信息,注意数字字段表示的是文件大小,单位是B 阅读全文

posted @ 2020-11-25 17:47 MaXianZhe 阅读(426) 评论(0) 推荐(0) 编辑

Mybatis源码分析之parameterHandler
摘要:之前写过一篇分析动态sql和statementHandler的文章,其实statementHandler里面的 ParameterHandler 和 ResultSetHandler 还是值得分析一下的,本篇就来分析ParameterHandler 一 代码入口 我们以update方法为例 Simp 阅读全文

posted @ 2020-11-24 22:14 MaXianZhe 阅读(205) 评论(0) 推荐(0) 编辑

CyclicBarrier 源码分析
摘要:一 代码用法 本质是一个重入锁加condition完成的 每个线程逻辑中调用await,对一个公共变量count进行减一,然后判断count是否为0.如果不为零,调用condition的await方法,阻塞住。直到最后那个线程会把count减一,此时 判断已经减到了0.此时就会调用condition 阅读全文

posted @ 2020-11-24 18:14 MaXianZhe 阅读(131) 评论(0) 推荐(0) 编辑

CountDownLatch源码分析
摘要:一 使用场景 在网上找了个例子,这个例子很好地说明了 CountDownLatch 的用法,概括地说就是主线程等待子线程执行完了,主线程接着执行 public class CountDownLatchTest { public static void main(String[] args) { fi 阅读全文

posted @ 2020-11-24 16:30 MaXianZhe 阅读(118) 评论(0) 推荐(0) 编辑

linux--句柄相关
摘要:一、修改文件句柄数 1.1.查看当前大小 ulimit -a 1.2.临时修改 ulimit -n 4096 1.3.永久修改 vim /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 二、调整vm.max_map_c 阅读全文

posted @ 2020-11-24 11:59 MaXianZhe 阅读(122) 评论(0) 推荐(0) 编辑

linux命令--wc
摘要:Linux wc命令用于计算字数。 利用wc指令我们可以计算文件的Byte数、字数、或是列数 [root@rdrssitapp03 ~]# ls /proc/14209/fd | wc -l 698 阅读全文

posted @ 2020-11-24 11:56 MaXianZhe 阅读(92) 评论(0) 推荐(0) 编辑

Spring源码解析(九)--再来说说三级缓存
摘要:之前对于三级缓存不够重视,忽略了一些细节,本篇文章就来详细说说三级缓存 一 什么是三级缓存 三级缓存是指 DefaultSingletonBeanRegistry 中的三个Map /** Cache of singleton objects: bean name --> bean instance 阅读全文

posted @ 2020-11-23 16:49 MaXianZhe 阅读(652) 评论(0) 推荐(0) 编辑

定位JVM内存泄漏常用命令和方法
摘要:1 ./jmap -histo:live 3559 | head -30 查看大对象,不过一般前几个都是字符数组和字节数组 2 ./jmap -dump:live,format=b,file=/opt/logs/rdrslogs/dump.hprof 3559 3 启动参数一定加verbose 4  阅读全文

posted @ 2020-11-20 19:37 MaXianZhe 阅读(197) 评论(0) 推荐(0) 编辑

Mybatis整合Spring之MapperFactoryBean怎么拿到的SqlSessionFactory
摘要:Mybatis整合Spring源码之前也分析过一次了,这次刚好脑袋灵光一闪,想出来一个在 SqlSessionDaoSupport.setSqlSessionFactory 是什么时候调用的呢? 一 BeanDefinition 每一个mapper接口都会被扫描成一个BeanDefinition,这 阅读全文

posted @ 2020-11-19 12:21 MaXianZhe 阅读(478) 评论(0) 推荐(0) 编辑

Mybatis3.3.0 Po类有LocalDateTime字段报错
摘要:想写本文的原因是设计了一个Po类,里面有LocalDateTime,启动Mybatis就报错了,下面就分析分析为啥报错 一 解析ResultMap的入口 XMLMapperBuilder.configurationElement private void configurationElement(X 阅读全文

posted @ 2020-11-18 12:24 MaXianZhe 阅读(295) 评论(0) 推荐(0) 编辑

时间范围查询优化技巧
摘要:1 对datetime和timestamp建索引 2 查询语句强制使用索引 SELECT * from task FORCE INDEX(unique_key_taskno) where TASK_NO = 'FZ202008140051' 3 尽量使用between and 而不是大于 小于 4 阅读全文

posted @ 2020-11-18 09:14 MaXianZhe 阅读(800) 评论(0) 推荐(0) 编辑

重入锁Condition源码分析
摘要:参考 https://zhuanlan.zhihu.com/p/81017109 感谢原作者 2020-11-24 突然想到一个问题,那就是ConditionObject其实是在AQS里的,一个线程包成的Node要在同步队列和条件队列里移动,那就得保证是在同一个AQS的实现类里。 JAVA也确实是这 阅读全文

posted @ 2020-11-17 10:30 MaXianZhe 阅读(127) 评论(0) 推荐(0) 编辑

Spring源码解析(八)--@PostConstruct
摘要:最近想写点,细小的知识点,从这些细小的知识点入手看看我们常用的一些spring方法是怎么实现的 一 初始化Bean的流程 protected Object doCreateBean(final String beanName, final RootBeanDefinition mbd, final 阅读全文

posted @ 2020-11-13 18:11 MaXianZhe 阅读(461) 评论(0) 推荐(0) 编辑

线程池面试题总结
摘要:1 submit和execute有啥不同 submit如果传入的任务是Runnable,会将Runnable包装成Callable,且返回值固定式null,并最终调用execute public Future<?> submit(Runnable task) { if (task == null) 阅读全文

posted @ 2020-11-12 20:08 MaXianZhe 阅读(351) 评论(0) 推荐(0) 编辑

ThreadLocal面试知识点总结
摘要:1 怎么new出来一个ThreadLocal 1 private ThreadLocal<Integer> num=new ThreadLocal<Integer>(){ 2 public Integer initialValue(){ 3 return 0; 4 } 5 }; 2 实现 initi 阅读全文

posted @ 2020-11-11 22:33 MaXianZhe 阅读(286) 评论(0) 推荐(0) 编辑

线程池关闭源码
摘要:线程池的状态如下 private static final int RUNNING = -1 << COUNT_BITS;//111 + 29个0 private static final int SHUTDOWN = 0 << COUNT_BITS;//全是0 private static fin 阅读全文

posted @ 2020-11-10 20:24 MaXianZhe 阅读(248) 评论(0) 推荐(0) 编辑

线程池中的线程如果抛异常会怎么样
摘要:看到一篇不错的文章,让我有思路也写写关于线程池,本文主要关注线程池里的任务抛了异常怎么办 一 Thread能捕获异常吗 public class ThreadExceptionTest { public static class InitialtiveThread implements Runnab 阅读全文

posted @ 2020-11-10 18:25 MaXianZhe 阅读(544) 评论(0) 推荐(0) 编辑

AQS共享锁源码分析
摘要:一 共享锁和排他锁的不同 排他锁中state的含义是初始值0,每次重入就加1,释放就减1,完全释放完必须是0 共享锁state初始值是大于0的正数,表示可共享的数量,获取一次就减1,减到0则不能再获取 二 共享锁的入口 public final void acquireShared(int arg) 阅读全文

posted @ 2020-11-10 15:51 MaXianZhe 阅读(400) 评论(0) 推荐(0) 编辑

ConcurrentHashMap put 和 remove分析
摘要:一 put final V putVal(K key, V value, boolean onlyIfAbsent) { if (key == null || value == null) throw new NullPointerException();//注意 和hashamp不同,concur 阅读全文

posted @ 2020-11-09 14:58 MaXianZhe 阅读(290) 评论(0) 推荐(0) 编辑

Mybatis的动态sql和StatementHandler
摘要:一年前为了在公司刷积分还写过关于mybatis的动态sql的原理,一年后就发现自己有点忘了,再写一次加深印象 一 初始化 还是先从MapperStatement说起 XMLMapperBuilder.buildStatementFromContext private void buildStatem 阅读全文

posted @ 2020-11-06 20:01 MaXianZhe 阅读(472) 评论(0) 推荐(0) 编辑

Mybatis和Spring整合也是能用BatchExecutor的
摘要:https://www.cnblogs.com/juniorMa/p/13930715.html 这篇文章讨论了Mybatis和Spring整合后,batch不起作用,看来我有打脸了,写完了后我反复思考终于想通了,是我的测试方法有问题。 因为我是循环执行的service里面的方法,这个方法是每次都会 阅读全文

posted @ 2020-11-06 10:03 MaXianZhe 阅读(710) 评论(0) 推荐(0) 编辑

Mybatis和Spring整合后sqlsession啥时候关闭的
摘要:https://www.cnblogs.com/juniorMa/p/13933192.html 在上一篇中,讲到一个非常重要的知识点,那就是每一个mapper对象的代理类执行方法的时候,都是每次都会new 一个SqlSession出来 但是我当时还有两个疑问 1 在SqlSessionInterc 阅读全文

posted @ 2020-11-05 22:43 MaXianZhe 阅读(1960) 评论(0) 推荐(0) 编辑

Mybatis是怎么执行一条语句的
摘要:根据官方的推荐方式,通过mapper的方式执行sql,mapper的方式就是动态代理 所以,我们就先看动态代理的入口 一 MapperMethod public class MapperProxy<T> implements InvocationHandler, Serializable { pri 阅读全文

posted @ 2020-11-05 19:03 MaXianZhe 阅读(240) 评论(0) 推荐(0) 编辑

Mybatis和Spring的整合原理
摘要:上一篇提到了和Spring整合后,Mybatis的BatchExecutor无法真正生效,本篇就好好分析分析这里面的原因 一 配置文件 <!-- 配置sqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.sprin 阅读全文

posted @ 2020-11-05 18:09 MaXianZhe 阅读(823) 评论(0) 推荐(0) 编辑

与Spring整合的Mybatis没法真正使用BatchExecutor
摘要:标题可能有点懵人,我要表达的意思就是在和Spring整合后,Mybatis的确能够使用到BatchExecutor,但是看现象不是批量执行的,而是单条执行。 先上代码 @Test public void testAddUser() throws InterruptedException{ for ( 阅读全文

posted @ 2020-11-05 11:25 MaXianZhe 阅读(1021) 评论(2) 推荐(0) 编辑

用户态和内核态IO过程
摘要:熟悉mysql和kafka的刷脏页流程后,都知道内存中的脏页不会立刻刷到磁盘,下面就细化下流程 写操作: 用户调用 fwrite 把数据写入 C 库标准 IObuffer 后就返回,即写操作通常是异 步操作; 数据写入 C 库标准 IObuffer 后,不会立即刷新到磁盘,会将多次小数据量相邻写操作 阅读全文

posted @ 2020-11-04 12:19 MaXianZhe 阅读(755) 评论(0) 推荐(0) 编辑

Mybatis的结果集中的Do要不要有setter
摘要:这个问题起源于我和同事一次讨论,我说一个Do必须要有setter,同事说不用,结果打脸了,真的不需要一定要有setter。 我当时就纳闷了,怎么做到的呢?于是我翻了下源码 终于让我找到了 整个ResultSetHandler就不分析了,过程也并不复杂 public class SetFieldInv 阅读全文

posted @ 2020-11-03 17:57 MaXianZhe 阅读(179) 评论(0) 推荐(0) 编辑

MyBatis整合Spring怎么使用connnection
摘要:今天下午突然脑袋灵光一闪,就想到了mybatis在整合了spring后,在web环境下多线程的时候是怎么使用connnection的呢? 于是我翻出了源码 DefaultSqlSessionFactory private SqlSession openSessionFromDataSource(Ex 阅读全文

posted @ 2020-11-03 17:50 MaXianZhe 阅读(267) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示