自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(121)
  • 资源 (7)
  • 收藏
  • 关注

原创 Java 数据脱敏

数据脱敏传送门用户在使用网站、App、小程序等应用时,不可避免的会留存敏感数据,比如手机号、身份证号、住址等敏感信息。如果直接以明文方式返回,网络传输过程中可能会被非法拦截到导致敏感数据泄漏。如果以密文方式返回会增加加解密的开销,密文一般都比明文大也会增加网络传输开销。敏感数据脱敏是安全性与性能之间权衡后的折中方案,脱敏后的数据和原始明文差不多一样大,没有增加网络开销也没有加解密的开销。...

2021-08-28 13:23:07 1016

原创 Rocketmq异步发送消息超时 RemotingTooMuchRequestException

生产环境短时间接收大量推送过来的消息,异步发送到Rocketmq时发生超时异常,错误如下:org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: DEFAULT ASYNC send call timeout at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl$4.run(DefaultMQProducerImpl.jav...

2021-08-03 11:09:55 6025

原创 Postman之接口返回的数据解析为DDL、DML SQL及树结构数据

JavaScript的将JSON数组转换为树形结构 第三方返回的JOSN数据我们想要快速的转换为结构化数据存入数据库,一般都需要写程序进行解析入库。对于前期获取、分析数据来说时间成本有点大,基于Postman Test在请求响应后对响应数据进行解析,生成DDL、DML SQL语句,快速的将数据入库进行分析。遍历JSONArray数据 获取JSONObject对象的所有属性名数据,构造建表DDL语句 获取JSONObject对象的所有属性名、属性值数据,构造INSERT DML语句...

2021-03-17 15:15:40 505

原创 Postman之生成请求签名数据

Postman环境变量获取与设置Postman预处理自动生成签名参数(sign) 通常对接第三方为了保证请求合法性,往往需要对请求参数进行签名,以过滤掉非法请求。请求的签名可以使用参数、时间戳、AppKey、AppSecret等按照约定生成签名数据,请求时携带上时间戳、签名在服务端进行验证。 使用Postman Pre-request-Script功能在请求发送前根据第三方规则生成签名,设置到环境变量中在请求中使用。Postman如何查看console日志 Po...

2021-03-16 20:37:08 1521 1

原创 Mysql组合索引中自增列增长策略

参考:mysql中联合索引中的自增列的增长策略

2020-11-30 15:08:53 349

原创 服务端返回Long前端显示精度丢失

服务端返回Long前端显示精度丢失参考:HttpMessageConverters 后端传输前段Long类型太长,而Java序列化JSON丢失精度的问题修复Long类型太长,而Java序列化JSON丢失精度问题的方法Springboot返回给前端的Long类型数据失去精度关于springmvc 返回long类型数据前台丢失精度的问题Spring Boot返回前端Long型丢失精度...

2020-11-25 18:59:28 766

原创 Apereo CAS Client

基于apereo/java-cas-client做了自定义功能,根据请求是否是Ajax请求或指定参数返回登录报文而不是直接重定向。传送门

2020-05-17 20:04:14 196

原创 Apereo CAS Server

趁着周末学习了下Apereo CAS,点击查看学习源码CAS Server 服务启动类org.apereo.cas.web.CasWebApplicationServletInitializerCAS Server配置org.apereo.cas.configuration.CasConfigurationProperties配置允许访问的应用规则org.apereo.cas.configuration.model.core.services.ServiceRegistryPr...

2020-05-17 20:00:07 518

原创 OAuth2之资源服务服务

点击传送门查看源码独立资源服务,指定哪些资源需要OAuth2 Token允许访问

2020-05-08 20:18:08 360

原创 OAuth2之授权服务

趁着五一假期学习了OAuth2传送门下载源码OAuth2简易实战(一)-四种模式https://www.cnblogs.com/sky-chen/archive/2019/03/13/10523882.htmlSpring Security OAuth2 开发指南https://www.oschina.net/translate/spring-security-oauth-docs-oauth2?printJasypt Spring Boot starterhttps://github....

2020-05-08 20:16:21 653

原创 GIt之取消托管文件,删除远程分支上的文件

参考:解决`向github提交代码是老要输入用户名密码`git正确的删除远程仓库的文件并用.gitignore忽略提交此文件来一个批量删除 git 远程分支的 shell 脚本Shell之获取指定目录下所有项目的GIT分支名称一、认证信息在全局设置保存,不要重复输入密码git config --global credential.helper storegit全局配置...

2020-04-19 17:58:06 663

原创 Shell之获取指定目录下所有项目的GIT分支名称

参考:Mac下Shell脚本使用来一个批量删除 git 远程分支的 shell 脚本#$0 为执行的文件名,$1 第一个参数echo "param 1 is $1"project_path="$1"echo "project_path is $project_path"cd $project_path;pwdecho "遍历$project_path下的子目录以及文件"...

2020-04-19 17:51:07 1488

原创 Java锁之AbstractQueuedSynchronizer

AbstractQueuedSynchronizer一、AbstractQueuedSynchronizer1.1 acquireQueued 同步队列中节点获取锁当前节点的前继节点是头节点尝试获取锁,获取成功直接返回。当前节点的前继节点不是头节点或者获取锁失败,判断当前线程是否应该Park前继节点状态是Node.SIGNAL(当前继节点释放时会唤醒后继节点),当前线程应该Park前继...

2020-04-06 10:21:14 188

原创 Redis5.x集群搭建记录

1、准备节点下载redis-5.0.4.tar.gz,直接解压复制出5份,每个节点分配一个端口,redis.cfg配置如下,每个节点更改端口号即可port 7000daemonize yesloglevel debuglogfile "/Volumes/SeagateBackupPlusDrive/enviroment/redis/redis-5.0.4-7000/redis.log...

2020-03-30 20:30:54 339

原创 Mybatis系列十一:SQL及执行结果日志输出

Mybatis系列十五:SQL及执行结果日志输出概述每个MappedStatement创建一个日志对象,可以控制每个运行时SQL语句的打印以及执行结果的打印。日志Debug级别打印SQL语句:PreparedStatement(prepareStatement、prepareCall)创建时打印SQL语句,执行时打印参数值。Statement执行时打印SQL语句。日志Trace级别打印执行...

2020-03-15 11:11:24 1882

原创 Mybatis系列十:创建SqlSession应用Plugin

Mybatis系列十:创建SqlSession应用Plugin一、DefaultSqlSessionFactorySqlSessionFactory默认实现是DefaultSqlSessionFactory,提供了许多openSession重载方法,用于创建SqlSession。1.1 根据DataSource创建SqlSessionprivate SqlSession op...

2020-03-12 23:00:11 313

原创 Mybatis系列九:Mybatis配置问价加载解析总结

Mybatis系列九:Mybatis配置问价加载解析总结《Mybatis系列一:构建SqlSessionFactory》《Mybatis系列二:MetaClass解析Class元数据》《Mybatis系列三:类型别名、类型解析器的注册》《Mybatis系列四:XMLMapperBuilder解析XL配置文件》《Mybatis系列五:MapperRegistry注册并解析Mapper Cl...

2020-03-11 11:52:46 191

原创 Mybatis系列八:SqlSource的创建

Mybatis系列八:SqlSource的创建概述在《Mybatis系列七:XMLStatementBuilder创建MappedStatement》一文【4.2 解析SQL语句】章节中,解析SQL节点得到的SqlSource有两种:DynamicSqlSource SQL语句有${param0}(文本替换,可能是一段SQL)或者使用了if/where(运行时决定是否拼接SQL片段)等节点需...

2020-03-10 21:42:27 1222

原创 Mybatis系列七:XMLStatementBuilder创建MappedStatement

Mybatis系列七:XMLStatementBuilder创建MappedStatement概述在《Mybatis系列四:XMLMapperBuilder解析XL配置文件》一文【1.3.6 解析select|insert|update|delete元素】章节中,解析select|insert|update|delete元素时XMLStatementBuilder创建MappedStateme...

2020-03-10 21:40:51 1345 1

原创 Mybatis系列六:MapperAnnotationBuilder解析Mapper Class

Mybatis系列六:MapperAnnotationBuilder解析Mapper Class概述在**《Mybatis系列五:MapperRegistry注册并解析Mapper Class》**一文【2.3 添加Mapper Class】章节用到了MapperAnnotationBuilder解析Mapper类,创建MappedStatement实例,保存到Configuration#m...

2020-03-09 22:33:47 729

原创 Mybatis系列五:MapperRegistry注册并解析Mapper Class

Mybatis系列五:MapperRegistry注册并解析Mapper Class概述在《Mybatis系列一:构建SqlSessionFactory》一文中了解了Mybatis配置文件的解析,其中对mappers元素解析使用到了MapperRegistryr这个类,现在分析下这个类是如何解析Mapper Class的。当然也用到XMLMapperBuilder解析Mapper XML配置文...

2020-03-09 22:32:47 4249

原创 Mybatis系列二:MetaClass解析Class元数据

Mybatis系列二:MetaClass解析Class元数据在《Mybatis系列一:构建SqlSessionFactory》一文中了解了Mybatis配置文件的解析,其中对settings元素解析使用到了MetaClass这个类,现在分析下这个类有哪些魔法。一、MetaClass1.1 是否有setter方法public boolean hasSetter(String name) {...

2020-03-09 16:16:54 820

原创 Mybatis系列四:XMLMapperBuilder解析XL配置文件

概述在《Mybatis系列一:构建SqlSessionFactory》一文中了解了Mybatis配置文件的解析,其中对mappers元素解析使用到了XMLMapperBuilder这个类,现在分析下这个类是如何解析Mapper配置文件的。当然也调用了Configuration#addMappers方法,实际上调用的是MapperRegistry#addMappers方法。<ma...

2020-03-08 21:50:34 626

原创 Mybatis系列三:类型别名、类型解析器的注册

TypeAlias可以帮助我们在Mybatis配置文件中直接引用类别名,而不必使用类完全限定名那么冗长的名字。TypeAliasRegistry、Configuration实例化时会注册默认的类别名,方便我们使用。类别名忽略大小写,在注册类别名或根据类别名或去类时,Mybatis会将别名转换成小写。TypeHandlerRegistry帮助我们将Java类型和数据库类型进行转换。一个Java类...

2020-03-08 21:49:48 751

原创 Mybatis系列一:构建SqlSessionFactory

一、SqlSessionFactoryBuilderSqlSessionFactoryBuilder的build方法接受Reader/InputStream/Configuration作为配置源,创建SqlSessionFactory实例。在接受Reader/InputStream作为配置源时,创建了XMLConfigBuilder实例来解析XML配置。public SqlSessi...

2020-03-08 21:48:45 812

原创 HandlerMapping之RequestMappingHandlerMapping获取Handler

一、HandlerMapping类图二、根据请求获取HandlerExecutionChain2.1 获取HandlerMethod流程(1) 根据请求URL获取直接匹配的List<RequestMappingInfo>作为候选,如果没有则取所有的RequestMappingInfo作为候选,遍历候选的RequestMappingInfo,调用Reques...

2020-03-06 22:01:33 1820

原创 HandlerAdapter之RequestMappingHandlerAdapter处理请求

一、类图1.1 HandlerAdapter类图1.2 RequestMappingHandlerAdapter类图二、处理请求流程(1)检查给定请求的请求方法是否支持,是否必须有会话(2) 创建WebDataBinderFactory:Handler整个继承体系上有@InitBinder注解的方法,以及@ControllerAdvice注解标注的类...

2020-03-06 22:00:07 1196

原创 HandlerAdapter之RequestMappingHandlerAdapter初始化

一、类图1.1 HandlerAdapter类图1.2 RequestMappingHandlerAdapter类图二、初始化2.1 初始化流程2.2 RequestMappingHandlerAdapter2.2.1afterPropertiesSetpublic void afterPropertiesSet() {// 首先执行此...

2020-03-06 20:31:49 767

原创 基于静态分析自动生成单元测试思考

Java中的反射可以获取到Class,基于Class可以得到一些基本的元数据,根据模版文件生成单元测试类。最难的是根据方法中的分支条件生成单元测试内容,需要解析出方法调用栈、导致方法返回的条件语句生成对应测试语句。使用javaparser或者JCTree 获取方法调用栈描述类信息ImportDescriptor 引入类包描述,包含单元测试、成员变量、方法内使用到的类型...

2020-03-05 22:01:23 321

原创 HandlerMapping之RequestMappingHandlerMapping初始化

一、HandlerMapping类图默认情况下,SpringMVC 将加载当前系统中所有实现了HandlerMapping 接口的bean。如果只期望SpringMVC加载指定的handlermapping 时,可以修改web.xml中的DispatcherServlet的初始参数,将detectAllHandlerMappings的值设置为false:<init-param>...

2020-03-05 21:01:39 963

原创 SSH终端失效后Tomcat被关闭

背景:Tomcat升级、服务迁移阿里云问题:Tomcat服务运行一段时间(一小时或5、6小时)后自动关闭操作环境:电脑设置20分钟自动锁屏,iTerm2访问远程服务器操作:要操作的机器比较多,没有批量操作工具,将多个命令合并在一起减少操作次数,启动服务执行的是sudo sh ./bin/startup.sh | sudo tail -f logs/catalina.out,执行完之后i...

2020-03-03 21:52:13 1184

原创 Spring5.X 事务相关类介绍

1、创建事物代理流程(1) 注入类型为TransactionAttributeSource的Bean对于方法事务属性获取规则:如果方法中存在事务属性,则使用方法上的事物属性,否则使用方法所在的类上的属性;如果方法所在类的属性上还是没有搜寻到对应的事务属性,那么再搜寻接口中的方法,再没有的话,最后尝试搜寻接口的类上面的声明。(2) 注入类型为TransactionInterceptor的Bea...

2020-03-01 21:16:16 227

原创 Mybatis集成Spring原理分析

概述MapperFactoryBean扩展SqlSessionDaoSupportSqlSessionDaoSupport可以设置SqlSessionFactory或SqlSessionTemplate,对于设置SqlSessionFactory会包装成SqlSessionTemplateSqlSessionTemplate实现了SqlSession接口,实例化SqlSessionTe...

2020-03-01 21:14:29 1362

原创 Spring5.X 事务管理器 PlatformTransactionManager

一、事务管理器类图二、事务管理器概述PlatformTransactionManager接口定义了获取事务(getTransaction)、提交事务(commit)、回滚事务(rollback)三个方法。getTransaction:根据指定的传播行为,返回当前活动的事务或创建新的事务。commit:提交给定事务的提交。如果已通过编程将事务标记为仅回滚,请执行回滚。r...

2020-03-01 21:11:45 1709

原创 Spring5.x Transaction 自定义事务标签

1、自定义事务标签XML配置<tx: annotation-driven transaction-manager="transactionManager" mode="aspectj "/>2、自定义事务标签命名空间处理器TxNamespaceHandlerpublic class TxNamespaceHandler extends NamespaceHandl...

2020-02-29 21:21:27 1131

原创 Spring 属性编辑器

1、配置自定义编辑器、自定义属性编辑器登记员CustomEditorConfigurerCustomEditorConfigurer是一个BeanFactoryPostProcessor,调用postProcessBeanFactory注册自定义属性编辑器。可以配置自己的自定义属性编辑器。自定义编辑器扩展PropertyEditorSupport,自定义属性编辑器登记员扩展Prope...

2020-02-26 13:04:18 250

原创 Spring AOP 创建代理ProxyFactory

1、ProxyFactory类图2、ProxyFactory 获取代理对象public Object getProxy() {returncreateAopProxy().getProxy();}public Object getProxy(@Nullable ClassLoader classLoader) {returncreateAopProx...

2020-02-26 13:03:38 315

原创 基于Cglib动态代理-ObjenesisCglibAopProxy

1、CglibAopProxy1.1 获取代理对象public Object getProxy() {return getProxy(null);}public Object getProxy(@Nullable ClassLoader classLoader) {if (logger.isTraceEnabled()) { logger.trace("Cr...

2020-02-26 13:03:05 357

原创 基于Jdk动态代理-JdkDynamicAopProxy

1、JdkDynamicAopProxy 基于JDK动态代理创建代理对象JdkDynamicAopProxy实现了AopProxy, InvocationHandler,InvocationHandler是基于JDK动态代理必须实现的回调接口。执行流程如下:(1)目标本身并未覆写equal/hashCode方法。调用JdkDynamicAopProxy的equals/hashCode方法...

2020-02-26 13:02:27 652

原创 动态AOP-Spring AOP 基于@AspectJ

XML配置 aspectj-autoproxy注册自定义命名空间Bean定义解析器 AopNamespaceHandlerpublic class AopNamespaceHandler extends NamespaceHandlerSupport {public void init() {// In 2.0 XSD as well as in 2.1 XSD.regis...

2020-02-26 13:01:34 454

ReentrantReadWriteLock.xmind

ReentrantReadWriteLock 读写锁除了保证写操作对读操作可见性以及并发行提升外,简化了读写交互场景开发

2020-04-08

AbstractQueuedSynchronizer.xmind

Java锁之AbstractQueuedSynchronizer,队列同步器实现锁或其它相关同步类的基础类

2020-04-06

Mybatis配置文件解析组件.pdf

Mybatis配置文件解析组件,SqlSessionFactoryBuilder的build方法接受Reader/InputStream/Configuration作为配置源,创建SqlSessionFactory实例。在接受Reader/InputStream作为配置源时,创建了XMLConfigBuilder实例来解析XML配置。

2020-03-11

Mybatis配置文件解析.pdf

Mybatis配置文件解析,SqlSessionFactoryBuilder的build方法接受Reader/InputStream/Configuration作为配置源,创建SqlSessionFactory实例。在接受Reader/InputStream作为配置源时,创建了XMLConfigBuilder实例来解析XML配置。

2020-03-11

Spring AOP 类图

Spring AOP 类图,通用了解Spring AOP实现,AOP代理自动生成。

2018-07-17

分页导航js脚本

分页导航js脚本

2016-09-01

Java夜未眠.程序员的心声

Java夜未眠.程序员的心声

2015-01-22

空空如也

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

TA关注的人

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