zhangtao's Blog

好记性不如烂笔头

通过数据库唯一索引实现分布式锁

伪代码 // 需要加事务 @Transactional @Override public <T> T lock(XxxLock lock, ILockCallback<T> callback) { // 数据库加锁 lock(lock); // 加锁逻辑 T result = callback.callback(); //释放锁 try { lockDao.batchDelete(locks); } catch (Exception e) { logger.error("mysq

匿名内部类使用

在我们开发中,匿名内部类用的还是比较多的,笔者有点忘了一些细节,所以今天带大家复习一下匿名内部类 匿名内部类既没有名字的内部类 正因为没有名字,

JVM相关知识点总结

每个线程都有: 程序计数器:记录了上下文切换的位置 虚拟机栈:由栈帧组成,入栈出栈 本地方法栈:Native方法 每个线程共享: 堆:对象 方法区(jd

SpringBoot之Starter

SpringBoot之所以流行,是因为Spring Starter模式的提出。Spring Starter的出现,可以让模块开发更加独立化,相互

总结自己常用的JDK8写法(stream,function,optional)

特别要注意的是list集合,我们sql查询返回的list或者stream处理完的list都不可能是null,所以不需要判断是否为null 遍历

高可用方案和一致性hash

其实大部分中间件都逃不过这两种模式 这种模式的特点是有一Master多slave,一般采用读写分离的方式,只从master中写,然后同步给sl

SPI机制应用

为什么要使用SPI? 系统设计的各个抽象,往往有很多不同的实现方案,在面向的对象的设计里,一般推荐模块之间基于接口编程,模块之间不对实现类进行

拦截器、过滤器、AOP的区别

spring中独有的 在SpringMVC的配置文件中配置 可对请求和响应处理 <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**" /> <bean class="com.scorpios.atcrowdfunding.web.LoginInterceptor"></bean> </mvc:interceptor> </mvc:interceptors> 可以针对自定义的url拦截 servlet中有的 可

简单介绍AQS、ReetrantLock、CountDownLatch、CyclicBarrier、Semaphore

AQS,既AbstractQueuedSynchronizer, 是JUC包实现同步的基础工具,是一个抽象类。 在AQS中,定义了一个volat

项目集成swagger启动报错 Error creating bean with name webMvcRequestHandlerProvider

最近项目集成了swagger以后启动一直报错 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'webMvcRequestHandlerProvider' defined in URL [jar:file:/Users/jasonfeng/.m2/repository/io/springfox/springfox-spring-web/2.2.2/springfox-spring-web-2.2.2.jar!/springfox/documentation/spring/web/plugins/WebMvcRequestHandlerProvider.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [java.util.List]: : No qualifying bean of type [org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping] found for dependency [collection of org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping]: expected at least 1 bean which qualifies as autowire candidate for this