- 博客(24)
- 收藏
- 关注
原创 阿里分布式事务框架Fescar实现原理相关源码分析
Fescar项目结构Fescar包括了一下子项目fescar-common: 包括了一些工具类和定义的异常fescar-config: 配置项,主要用于配置NettyServerfescar-core: Fescar的核心类,主要包括RPC服务相关和分布式事务中的一些模型对象,包括TM(Transaction Manager)和RM(Resource Manager)等fescar-r...
2019-01-16 23:34:15
1738
1
原创 阿里分布式事务框架Fescar简介以及搭建Fescar环境并运行官方demo进行测试
什么是FescarFESCAR(Fast & Easy Commit And Rollback) 是一个用于微服务架构的分布式事务解决方案,它的特点是高性能且易于使用,旨在实现简单并快速的事务提交与回滚,由阿里开源。框架的具体架构设计详见Fescar的Github的wiki界面。安装Fescar环境首先去Fescar官方的Github上下载源码或者成果物。Github下载链接可以...
2019-01-14 22:28:48
15964
14
原创 不同索引类型对Postgresql查询性能的影响(单一索引,覆盖索引,Hash索引)
测试步骤建表create table if not exists test_100000 ( id serial primary key, name varchar(50), password varchar(50), description varchar(50))create table if not exists test_1000000 ( ...
2018-12-18 14:01:14
2625
原创 Spring Boot整合Web容器的原理(以Tomcat为例)
ServletWebServerApplicationContext.java @Override protected void onRefresh() { super.onRefresh(); try { createWebServer(); } catch (Throwable ex) {...
2018-12-05 19:00:56
1864
原创 Spring AOP的底层实现分析
使用注解式,beanPostProcessors中包含了AnnotationAwareAspectJAutoProxyCreator,对于所有的bean在初始化的时候都会检查是否进行aop代理postProcessAfterInitialization方法用于对所有的已经初始化完成的bean进行增强处理AbstractAutoProxyCreator.java public Objec...
2018-11-29 18:57:29
466
原创 Spring MVC中使用自定义ViewResolver对自定义View进行处理
@Configurationpublic class TestConfiguration implements WebMvcConfigurer { @Bean("/controller") public MyController myController() { return new MyController(); } @Override ...
2018-11-27 18:53:40
3170
原创 Spring MVC中Handler、HandlerMapping和HandlerAdapter的关系
handler对请求进行处理的最小单位,即ControllerhandlerMapping保存请求的URL和handler的关系在初始化阶段存放扫描出的路径package org.springframework.web.servlet.handler;import java.util.ArrayList;import java.util.List;import org.spri...
2018-11-27 18:50:48
1234
1
原创 解决Springboot中给Interceptor配置的excludePathPatterns无效的问题
在使用WebMvcConfigurer对Interceptor进行配置的时候遇到了配置excludePathPatterns无效的问题,下面是出问题的代码Interceptor的配置如下,如果发现用户没有登录就重定向到主页面"index"public class LoginInterceptor implements HandlerInterceptor { public boole...
2018-11-24 22:15:52
37206
4
原创 Springboot中WebMvcConfigurer中可配置项全解
package hello.configuration;import org.springframework.boot.autoconfigure.web.ResourceProperties;import org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties;import org.springframewo...
2018-11-23 18:25:15
9050
原创 通过Spring AOP实现自定义注解
在Spring的体系中有很多种实现自定义注解的方式,在这里介绍一下如何通过AOP的方式来实现用户自定义的注解。在这里实现一个对方法中的指定参数进行是否为null的判断的注解,以此为例展示自定义注解的方便之处。配置环境首先搭建Spring环境,在pom.xml中引入相关依赖<?xml version="1.0" encoding="UTF-8"?&amp
2018-11-20 23:20:45
4075
1
原创 Spring中@Autowire的底层原理解析(附详细源码阅读步骤)
搭建源码阅读环境首先在IDEA中建立一个Maven工程,然后在pom.xml中加入依赖,因为以后可能会用到其他的功能,所以这里直接使用的是springboot的依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0&q
2018-11-18 23:57:01
13650
3
原创 Spring中@Autowire、@Resource和@Inject的使用和区别
@Resource@Resource并不是Spring中自带的注解,而是JSR-250中的注解,属于Java EE的范畴,它具有三种注入的模式Match by Name(按变量名注入)Match by Type(按类型注入)Match by Qualifier(使用Qualifier显式注入)这些注入方式都支持通过setter方法注入或者是通过属性的方式注入。通过属性注入首先建立...
2018-11-18 21:11:12
2060
原创 在Mybatis中使用手动加锁的方式操作数据库
在使用Spring整合Mybatis进行数据库操作时,我们可以通过Spring的注解@Transactional来实现事务,同时可以在注解中对数据库设置隔离级别来进行并发操作数据库时候的控制。但是对于某些情况,仅仅使用数据库隔离级别无法达到最优的效果,比如两个事务同时对一张表进行操作,其中一个事务对表进行读取,而另一个事务对表进行插入操作,在PostgreSQL,Orecal以及SQL Serv...
2018-11-14 21:46:56
20921
2
原创 Postgresql锁机制(表锁和行锁)
表锁LOCK [ TABLE ] [ ONLY ] name [ * ] [, ...] [ IN lockmode MODE ] [ NOWAIT ]lockmode包括以下几种:ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE| SHARE | SHARE ROW EXCLUSIVE | EXCLUSIV...
2018-11-13 21:21:14
18139
原创 Java常见面试题原理解析(一)
1.Java序列化原理序列化的要求对于想要使用序列化的对象,需要让对象继承Serializable接口,同时结合ObjectInputStream和ObjectOutputStream对对象进行读写。当两个程序之间使用序列化对象进行传递时,应该保证两个类的路径相同,同时具有相同序列化ID,当对序列化的安全性没有要求时推荐使用1L作为序列化属性serialVersionUID的值。静态变量的...
2018-11-08 22:51:11
877
原创 Spring Cloud熔断器Hystrix的使用及原理解析
什么是HystrixHystrix是Spring Cloud提供的一种带有熔断机制的框架,由于在微服务系统中同一个操作会由多个不同的微服务来共同完成,所以微服务与微服务之间会由很多相互的调用,由于在分布式环境中经常会出现某个微服务节点故障的情况,所以会由调用失败发生,而熔断器的作用就是当出现远程调用失败的时候提供一种机制来保证程序的正常运行而不会卡死在某一次调用,类似Java程序中的try-ca...
2018-11-07 21:13:07
35196
2
原创 Mybatis中TypeHandler的底层实现
TypeHandler的用法TypeHandler是Mybatis提供的一个用于用户自定义处理数据库类型和java类型之间相互映射的一种工具,它可以实现jdbcType到javaType的自动转换。要实现自定义的TypeHandler首先需要继承BaseTypeHandler,然后在类上添加@MappedTypes@MappedTypes({String.class})public MyT...
2018-11-06 21:50:17
913
转载 利用Redisson实现分布式锁及其底层原理解析
Redis介绍redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种...
2018-10-26 23:40:11
28359
8
原创 ShedLock-轻量级分布式定时任务重复执行解决方案
什么是ShedLockShedLock是一个在分布式环境中使用的定时任务框架,用于解决在分布式环境中的多个实例的相同定时任务在同一时间点重复执行的问题,解决思路是通过对公用的数据库中的某个表进行记录和加锁,使得同一时间点只有第一个执行定时任务并成功在数据库表中写入相应记录的节点能够成功执行而其他节点直接跳过该任务。当然不只是数据库,目前已经实现的支持数据存储类型除了经典的关系型数据库,还包括Mo...
2018-10-26 23:34:25
10320
原创 操作系统中的线程实现
操作系统中的线程实现一对一模型每条用户线程交由唯一对应的系统线程进行调度,在这种设计下创建线程和创建系统进程的代价是相同的。多对一模型多条用户线程交由一条系统线程进行调度,这个系统线程也是唯一一条,所以无法适应多核环境,即使是在多核环境下也只能同时运行一条线程。多对多模型多条用户线程对应多条系统线程,在多核环境下系统线程可以并行地进行运算。这种设计可以使得用户线程的创建效率变高,但是导...
2018-09-28 22:37:15
1018
2
翻译 按特征组织——最好的Java工程目录结构组织方式
按特征组织按特征组织是指用包名来标识特征。目的是把所有相关的项归结到一个单一的特征,并放置到唯一的目录中。这使得包有高聚合性和高模块性,同时与其他的包之间的耦合性最小,这样属于同一项的文件都放在一起,不会分散在项目的不同地方,以后如果删除功能的时候直接删除一个包就可以了。按特征组织包结构,包的名字很重要,必须是高度概括的名称。比如一个开药方的程序可以如下组织:com.app.doctor...
2018-09-28 22:27:23
2090
原创 A survey of task allocation and load balance in distributed system阅读笔记
实验室的老师扔给我一篇英文文献,作为毕设论文的开端要求仔细阅读并做好阅读笔记,顺便放在博客里方便以后查阅。
2017-07-05 21:47:33
413
原创 Java8 java.util.function包解析(Function,Consumer,Predicate,Supplier)
Java8的工具包新增了function包,里面主要包含了Function,Consumer,Predicate,Supplier四种类型。
2016-09-16 19:42:43
5751
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人