自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

北海大鱼的博客

jikunwonder@gmail.com

  • 博客(7)
  • 资源 (1)
  • 收藏
  • 关注

原创 SpringMvc源码分析和手写Mvc

先简单看下代码结构,springmvc是springframework的子项目,gradle中只依赖了外部的servlet,且是provided,我将他理解成纯粹的基于servlet的web框架servlet的核心在于网络请求的分发,可以理解成web请求的uri和具体的处理方法的映射关系,可以按照流程划分成两部分,一部分做映射关系的初始化,另一部分是根据具体的http请求找到处理的方法,反射执行,返回结果。springframework 5.0.x那么springmvc核心就是继承HttpS

2020-10-09 14:44:33 515

原创 MybatisPlus 分布式Id

对于分布式id,有很多方案,现在大多数用的是基于雪花算法snowflake的实现,美团有leaf,百度有uid-generator,我这里记录下苞米豆在MybatisPlus3中的分布式id实现简单介绍下雪花算法雪花算法也叫雪花id,是一个64bit的整型数据,原生的snowflake是这样的:最高位不用,41bit保存时间戳,单位是毫秒,10bit的机器位,12bit的唯一序列号,可以理解是某一毫秒内,某台机器生成了不重复的序列号10bit 一般一会分为5bit的datacen

2020-08-09 22:12:24 3450 2

原创 源码分析ThreadLocal

ThreadLocal是一种变量类型,根据当前的线程,变量的value也会不一样,也可以理解成每个线程内都有一个变量的副本,很多人说ThreadLocal就是一个key为线程的map,看了下源码,我是这样理解的(可以看下jdk8的官方文档 https://docs.oracle.com/javase/8/docs/api/index.html)public class ThreadLocal<T> { public T get() {...} public void set

2020-07-16 16:28:15 569

原创 多数据源@DS和@Transactional

考虑到业务层面有多数据源切换的需求,同时又要考虑事务,我使用了Mybatis-Plus3中的@DS作为多数据源的切换,它的原理的就是一个拦截器@Overridepublic Object invoke(MethodInvocation invocation) throws Throwable { try { DynamicDataSourceContextHolder.push(determineDatasource(invocation)); return invocati

2020-05-13 11:27:42 23925 24

原创 Java IO模型(一)

本篇博客分析Java中BIO NIO AIO和Netty模型先来理解几个概念,同步与异步,阻塞与非阻塞依然是烧水的例子,A去烧水,等待水开过程中A什么都不做,只等待,那就是阻塞;可以干别的,那就是非阻塞;水开之后,是否还是A来操作?依然是A操作,同步;换了B来操作,异步。1.BIO Blocking-IOBIO是阻塞的,它的阻塞体现在很多地方 例如下面的acceptp...

2020-04-04 19:56:19 152

原创 ReentrantLock源码解析(二)

本篇博客深入源码分析 ReentrantLock 解锁过程解锁相对于加锁,没有很复杂,这里要结合加锁时的阻塞位置,完整整个流程public void unlock() { sync.release(1);}lock中的state记录锁的状态,加锁或者重入 state+1,那么解锁就是-1;所以整个解锁过程会有两种情况,state=1和state>1 重入...

2020-04-02 18:26:23 222

原创 ReentrantLock源码解析(一)

本篇博客深入源码分析 ReentrantLock 加锁过程ReentrantLock可以实例化两种锁,FairSync和NonfairSyncReentrantLock lock = new ReentrantLock(true);lock.lock();本篇以公平锁为例ReentrantLock.javafinal void lock() { acquire...

2020-04-02 01:21:31 1109

AnkhSvn-2.6.12735.msi.zip

vs插件 2015向下兼容,vs中使用svn,配合此插件实现版本控制,简单易用

2020-07-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除