- 博客(187)
- 资源 (6)
- 收藏
- 关注
原创 Mysql分组排序后TOP N问题处理
在数据处理过程中很多时候会遇到需要针对数据进行分组然后获取每个分组TOP N,那么针对这样的问题应该如何处理呢?下文就使用一个示例进行介绍
2022-10-11 19:53:17
579
原创 Redis之布隆过滤器(Bloom Filter)
在使用Redis作为缓存服务的时候存在缓存穿透问题,可以使用布隆过滤器解决这样的问题,那么什么是布隆过滤器,如何在代码中使用?本文就主要解决这些问题。
2022-07-11 19:43:22
1723
原创 PlantUML绘制活动图
活动图是常用的动态视图,是用来描述在具体场景下如何做特定的事情;通过可视化的工具,描绘现实生活中具体事物运转流程,输出让人更直观理解,便于沟通的内容。本文重点介绍如何使用PlantUML绘制活动图.........
2022-06-28 19:40:54
7986
原创 【面试】五分钟掌握线程的六种状态
线程创建后的未调用start方法前的状态是NEW当线程调用start()方法,线程的状态就是RUNNABLE,表示线程已经准备就绪可以被执行了,如果CPU给该现场分配时间片,那么现场就被执行;RUNNABLE表示准备就绪,不是被执行。当线程需要进入临界区,但是前面有一个线程临界区代码正在被执行,此时现场就进入blocked状态,表示现场阻塞。 当线程在临界区内调用wait()方法,注意wait()方法必须在临界区内执行;或者调用jion方法,线程就进入等待状态,表示现场等待其他线程执行一个特
2022-06-20 18:14:07
270
原创 你想知道的关于Semaphore、CyclicBarrier、CountDownLatch都在这里
通过示例代码介绍不不同使用场景,通过源码分析知其所以然
2022-06-15 22:09:16
134
原创 基于Groovy的规则脚本引擎实战
在实际的平台化项目中,为了提升平台抽象能力使用更多场景,引入了规则引擎。如一个用户购买了168元商品可以获得10元红包,异或是购买了指定会场商品获取50元优惠券等。在不通互动场景中活动的规则是不同的,如果通过JAVA去实现,每次有新的规则要求,都要发布一次,这样成本就太高了。基于业务场景,我们需要的就是简单的规则脚本,所以不需要引入太重的规则引擎;对比了Q LExpress 和Groovy后,我们选择了Groovy. 主要是因为groovy没有学些成本,可以直接按照Java语法风格去写。 Java 与Gro
2022-06-09 00:29:08
2302
原创 JVM内部锁升级过程(偏向锁,轻量级锁,重量级锁)
目录对象在内存中是如何布局的如何查看对象在内存中的布局markword数据结构加锁后发生了什么偏向锁什么是偏向锁为什么需要偏向锁为什么从JDK15开始默认关闭偏向锁JDK8 为什么要延迟4S后开启偏向锁锁升级流程对象在内存中是如何布局的在聊到对象加锁这个话题,那就必须先聊聊对象在内存中的布局, 你知道一个对象在内存中是如何布局的吗?一个对象new出来以后,它在内存中主要分为一下四个部分:markword 这部分就是加锁的核心,占8个字节 .
2022-05-30 23:37:41
2824
原创 BTrace简介与使用说明
大家在开发过程中总会预告各种个样的BUG,不是什么时候都可以去debug,也不是什么时候都可以去在代码中增加需要的日志,这个时候该如何解决呢?这个时候就是BTrace的大展身手的时候时候了,下面通过对于BTrace的介绍,同时会有一些示例代码希望可以给大家带来一定的了解 简介 Btrace (Byte Trace)是sun推出的一款java 动态、安全追踪工具,可以不停.........
2018-08-19 19:30:00
619
原创 Lettuce同步命令源码分析
Lettuce同步源码分析 在上一篇分享中分享了单机模式异步连接创建过程Lettuce创建连接过程源码分析; 在本次分享内容主要介绍同步命令的处理过程.Lettuce是基于Netty的Redis高级客户端,对于异步命令来说是天然的,那么lettuce中是如何处理同步命令的呢?实际上同步连接还是对异步命令的一次封装;下面我们就通过源码进行分析看看Lettuce中的具体实现. 通.........
2018-07-01 11:05:00
577
原创 Lettuce创建连接过程源码分析
Lettuce是一个高级的Redis客户端,下面通过对其创建连接过程的源码进行走读 下面看看RedisClient是如何创建单机模式的异步连接的, 首先从RedisClient中的connectAsync看起,在该方法中并没有什么特别的地方,在对RedisURI进行非空校验后就直接调用了内部方法public <K, V> StatefulRedisConnection......
2018-06-30 15:04:00
1188
原创 Lettuce之RedisClusterClient使用以及源码分析
Redis Cluster模式简介 redis集群并没有使用一致性hash算法而引入了哈希槽概念,Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽.集群的每个节点负责一部分hash槽.也就是说如果key是不变的对应的slot也是不变的 Redis 服务器命令 cluster info可以通过cluster in.........
2018-06-17 20:30:00
2531
原创 Lettuce连接池
Lettuce 连接被设计为线程安全,所以一个连接可以被多个线程共享,同时lettuce连接默认是自动重连.虽然连接池在大多数情况下是不必要的,但在某些用例中可能是有用的.lettuce提供通用的连接池支持. 如有疏漏后续会更新 https://www.cnblogs.com/wei-zw/p/9163687.html连接池是否有必要? Lettuce被线程安全的,它满......
2018-06-10 17:07:00
3559
原创 Lettuce命令延迟测量(CommandLatency)
Lettuce使用了LatencyUtils进行命令延迟测量,LatencyUtils是一个延迟统计追踪开发包,提供了很多有用的追踪工具.LatencyStats的设计旨在通过简单、嵌入式(drop-in)的延迟行为记录对象,对进程间延迟进行记录和追踪。LatencyStats的功能包括底层追踪和暂停影响纠正、遗漏补偿等。通过可插拔式的暂停监测器与区间估计(interval estima...
2018-06-09 13:52:00
707
原创 Lettuce异步读取过程分析
通过走读Lettuce异步读取源码,针对Lettuce连接建立过程进行源码走读总体展示一个Lettuce异步get时序通过时序图可以发现MasterSlaveChannelWriter主要提供一个负载分配的功能,并不是真正的命令发送服务下面通过源码分析实现过程public static <K, V> StatefulRedisMasterSlaveConnection&...
2018-06-08 22:02:00
443
原创 Lettuce在Spring boot中的使用方式
Lettuce是一个可伸缩线程安全的Redis客户端。多个线程可以共享同一个RedisConnection.本文是基于Lettuce5,主要介绍的知识点如下:Lettuce在Spring Boot中的配置Lettuce的同步,异步,响应式使用方式事件的订阅发布自定义事件读写分离读写分离策略实现源码客户端分片实现@Configurationpublic class Lett...
2018-06-06 23:06:00
1830
原创 Mybatis ResultMap复合映射使用以及源码分析
我们知道在mybatis中可以针对一列值作为入参进行嵌套查询,那么如果入参为多个时该如何处理呢? mybatis支持复合映射,下面通过示例代码看看复合映射的使用 <resultMap id="postLiteMap2NestedWithSelect" type="org.apache.ibatis.domain.blog.BlogLite"> <id colum.........
2018-05-07 11:52:00
431
原创 序列化反序列化源码分析以及Mybatis中的实际运用
目录序列化反序列化Mybatis中的实际使用 主要知识点: writeObject writeReplace readObject readResolve序列化与反序列化的定义 序列化就是将对象转为字节码的过程,反序列化则是将字节码转换为对象的过程序列化 JAVA序列化 java.i.........
2018-04-29 14:06:00
1050
原创 Mybatis BatchExecutor源码分析
在介绍Mybatis批处理之前,首先回顾一下PreparedStatement的批处理假如现在需要向用户表中插入两条数据,如果不适用批处理的实现如下,有三次网络交互//加载驱动 Class.forName("org.hsqldb.jdbcDriver"); //获取连接 Connection connection = DriverManager.getConn...
2018-04-28 15:26:00
210
原创 Mybatis插件的使用以及源码分析
Mybatis支持那些类型插件Executor (update, query, flushStatements, commit, rollback,getTransaction, close, isClosed)ParameterHandler (getParameterObject, setParameters)ResultSetHandler (handleResultSets...
2018-04-24 15:15:00
84
原创 Mybatis中selectKey源码分析
刚回答了一个问题这样一个问题,mybatis不能正常返回主键增加值 下面通过源码分析一下selectKey都具体实现;关于Mybatis 基于注解Mapper源码分析可以看一下具体解析过程。 如果向数据库中插入一条数据,同时有希望返回该条记录的主键,该怎么处理了?有两种情况:数据库主键不是自增列,需要预先生成是自增列,插入后才能知道 这两种情况都可以通过SelectKe...
2018-04-23 21:01:00
239
原创 Mybatis 基于注解Mapper源码分析
目前Mybatis除了可以通过XML配置SQL外还可以通过注解的形式配置SQL,本文中主要介绍了Mybatis是如何处理注解SQL映射的,通过源码分析处理过程XML配置<configuration> <settings> <setting name="defaultExecutorType" value="SIMPLE"/> <.........
2018-04-22 22:38:00
152
原创 MyBatis的二级缓存以及装饰器模式运用
目录Mybatis中如何配置二级缓存Cache解析处理过程Cache支持的过期策略装饰器模式装饰器源码Mybatis中如何配置二级缓存基于注解配置缓存@CacheNamespace(blocking=true)public interface PersonMapper { @Select("select id, firstname, lastname fro......
2018-04-21 21:58:00
489
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人