- 博客(121)
- 资源 (7)
- 收藏
- 关注
原创 Java 数据脱敏
数据脱敏传送门用户在使用网站、App、小程序等应用时,不可避免的会留存敏感数据,比如手机号、身份证号、住址等敏感信息。如果直接以明文方式返回,网络传输过程中可能会被非法拦截到导致敏感数据泄漏。如果以密文方式返回会增加加解密的开销,密文一般都比明文大也会增加网络传输开销。敏感数据脱敏是安全性与性能之间权衡后的折中方案,脱敏后的数据和原始明文差不多一样大,没有增加网络开销也没有加解密的开销。...
2021-08-28 13:23:07 1038
原创 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 6343
原创 Postman之接口返回的数据解析为DDL、DML SQL及树结构数据
JavaScript的将JSON数组转换为树形结构 第三方返回的JOSN数据我们想要快速的转换为结构化数据存入数据库,一般都需要写程序进行解析入库。对于前期获取、分析数据来说时间成本有点大,基于Postman Test在请求响应后对响应数据进行解析,生成DDL、DML SQL语句,快速的将数据入库进行分析。遍历JSONArray数据 获取JSONObject对象的所有属性名数据,构造建表DDL语句 获取JSONObject对象的所有属性名、属性值数据,构造INSERT DML语句...
2021-03-17 15:15:40 549
原创 Postman之生成请求签名数据
Postman环境变量获取与设置Postman预处理自动生成签名参数(sign) 通常对接第三方为了保证请求合法性,往往需要对请求参数进行签名,以过滤掉非法请求。请求的签名可以使用参数、时间戳、AppKey、AppSecret等按照约定生成签名数据,请求时携带上时间戳、签名在服务端进行验证。 使用Postman Pre-request-Script功能在请求发送前根据第三方规则生成签名,设置到环境变量中在请求中使用。Postman如何查看console日志 Po...
2021-03-16 20:37:08 1630 1
原创 服务端返回Long前端显示精度丢失
服务端返回Long前端显示精度丢失参考:HttpMessageConverters 后端传输前段Long类型太长,而Java序列化JSON丢失精度的问题修复Long类型太长,而Java序列化JSON丢失精度问题的方法Springboot返回给前端的Long类型数据失去精度关于springmvc 返回long类型数据前台丢失精度的问题Spring Boot返回前端Long型丢失精度...
2020-11-25 18:59:28 818
原创 Apereo CAS Client
基于apereo/java-cas-client做了自定义功能,根据请求是否是Ajax请求或指定参数返回登录报文而不是直接重定向。传送门
2020-05-17 20:04:14 212
原创 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 574
原创 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 711
原创 GIt之取消托管文件,删除远程分支上的文件
参考:解决`向github提交代码是老要输入用户名密码`git正确的删除远程仓库的文件并用.gitignore忽略提交此文件来一个批量删除 git 远程分支的 shell 脚本Shell之获取指定目录下所有项目的GIT分支名称一、认证信息在全局设置保存,不要重复输入密码git config --global credential.helper storegit全局配置...
2020-04-19 17:58:06 688
原创 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 1535
原创 Java锁之AbstractQueuedSynchronizer
AbstractQueuedSynchronizer一、AbstractQueuedSynchronizer1.1 acquireQueued 同步队列中节点获取锁当前节点的前继节点是头节点尝试获取锁,获取成功直接返回。当前节点的前继节点不是头节点或者获取锁失败,判断当前线程是否应该Park前继节点状态是Node.SIGNAL(当前继节点释放时会唤醒后继节点),当前线程应该Park前继...
2020-04-06 10:21:14 258
原创 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 357
原创 Mybatis系列十一:SQL及执行结果日志输出
Mybatis系列十五:SQL及执行结果日志输出概述每个MappedStatement创建一个日志对象,可以控制每个运行时SQL语句的打印以及执行结果的打印。日志Debug级别打印SQL语句:PreparedStatement(prepareStatement、prepareCall)创建时打印SQL语句,执行时打印参数值。Statement执行时打印SQL语句。日志Trace级别打印执行...
2020-03-15 11:11:24 2077
原创 Mybatis系列十:创建SqlSession应用Plugin
Mybatis系列十:创建SqlSession应用Plugin一、DefaultSqlSessionFactorySqlSessionFactory默认实现是DefaultSqlSessionFactory,提供了许多openSession重载方法,用于创建SqlSession。1.1 根据DataSource创建SqlSessionprivate SqlSession op...
2020-03-12 23:00:11 334
原创 Mybatis系列九:Mybatis配置问价加载解析总结
Mybatis系列九:Mybatis配置问价加载解析总结《Mybatis系列一:构建SqlSessionFactory》《Mybatis系列二:MetaClass解析Class元数据》《Mybatis系列三:类型别名、类型解析器的注册》《Mybatis系列四:XMLMapperBuilder解析XL配置文件》《Mybatis系列五:MapperRegistry注册并解析Mapper Cl...
2020-03-11 11:52:46 204
原创 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 1309
原创 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 1413 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 769
原创 Mybatis系列五:MapperRegistry注册并解析Mapper Class
Mybatis系列五:MapperRegistry注册并解析Mapper Class概述在《Mybatis系列一:构建SqlSessionFactory》一文中了解了Mybatis配置文件的解析,其中对mappers元素解析使用到了MapperRegistryr这个类,现在分析下这个类是如何解析Mapper Class的。当然也用到XMLMapperBuilder解析Mapper XML配置文...
2020-03-09 22:32:47 4375
原创 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 839
原创 Mybatis系列四:XMLMapperBuilder解析XL配置文件
概述在《Mybatis系列一:构建SqlSessionFactory》一文中了解了Mybatis配置文件的解析,其中对mappers元素解析使用到了XMLMapperBuilder这个类,现在分析下这个类是如何解析Mapper配置文件的。当然也调用了Configuration#addMappers方法,实际上调用的是MapperRegistry#addMappers方法。<ma...
2020-03-08 21:50:34 666
原创 Mybatis系列三:类型别名、类型解析器的注册
TypeAlias可以帮助我们在Mybatis配置文件中直接引用类别名,而不必使用类完全限定名那么冗长的名字。TypeAliasRegistry、Configuration实例化时会注册默认的类别名,方便我们使用。类别名忽略大小写,在注册类别名或根据类别名或去类时,Mybatis会将别名转换成小写。TypeHandlerRegistry帮助我们将Java类型和数据库类型进行转换。一个Java类...
2020-03-08 21:49:48 840
原创 Mybatis系列一:构建SqlSessionFactory
一、SqlSessionFactoryBuilderSqlSessionFactoryBuilder的build方法接受Reader/InputStream/Configuration作为配置源,创建SqlSessionFactory实例。在接受Reader/InputStream作为配置源时,创建了XMLConfigBuilder实例来解析XML配置。public SqlSessi...
2020-03-08 21:48:45 855
原创 HandlerMapping之RequestMappingHandlerMapping获取Handler
一、HandlerMapping类图二、根据请求获取HandlerExecutionChain2.1 获取HandlerMethod流程(1) 根据请求URL获取直接匹配的List<RequestMappingInfo>作为候选,如果没有则取所有的RequestMappingInfo作为候选,遍历候选的RequestMappingInfo,调用Reques...
2020-03-06 22:01:33 1965
原创 HandlerAdapter之RequestMappingHandlerAdapter处理请求
一、类图1.1 HandlerAdapter类图1.2 RequestMappingHandlerAdapter类图二、处理请求流程(1)检查给定请求的请求方法是否支持,是否必须有会话(2) 创建WebDataBinderFactory:Handler整个继承体系上有@InitBinder注解的方法,以及@ControllerAdvice注解标注的类...
2020-03-06 22:00:07 1234
原创 HandlerAdapter之RequestMappingHandlerAdapter初始化
一、类图1.1 HandlerAdapter类图1.2 RequestMappingHandlerAdapter类图二、初始化2.1 初始化流程2.2 RequestMappingHandlerAdapter2.2.1afterPropertiesSetpublic void afterPropertiesSet() {// 首先执行此...
2020-03-06 20:31:49 783
原创 基于静态分析自动生成单元测试思考
Java中的反射可以获取到Class,基于Class可以得到一些基本的元数据,根据模版文件生成单元测试类。最难的是根据方法中的分支条件生成单元测试内容,需要解析出方法调用栈、导致方法返回的条件语句生成对应测试语句。使用javaparser或者JCTree 获取方法调用栈描述类信息ImportDescriptor 引入类包描述,包含单元测试、成员变量、方法内使用到的类型...
2020-03-05 22:01:23 349
原创 HandlerMapping之RequestMappingHandlerMapping初始化
一、HandlerMapping类图默认情况下,SpringMVC 将加载当前系统中所有实现了HandlerMapping 接口的bean。如果只期望SpringMVC加载指定的handlermapping 时,可以修改web.xml中的DispatcherServlet的初始参数,将detectAllHandlerMappings的值设置为false:<init-param>...
2020-03-05 21:01:39 1000
原创 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 1253
原创 Spring5.X 事务相关类介绍
1、创建事物代理流程(1) 注入类型为TransactionAttributeSource的Bean对于方法事务属性获取规则:如果方法中存在事务属性,则使用方法上的事物属性,否则使用方法所在的类上的属性;如果方法所在类的属性上还是没有搜寻到对应的事务属性,那么再搜寻接口中的方法,再没有的话,最后尝试搜寻接口的类上面的声明。(2) 注入类型为TransactionInterceptor的Bea...
2020-03-01 21:16:16 238
原创 Mybatis集成Spring原理分析
概述MapperFactoryBean扩展SqlSessionDaoSupportSqlSessionDaoSupport可以设置SqlSessionFactory或SqlSessionTemplate,对于设置SqlSessionFactory会包装成SqlSessionTemplateSqlSessionTemplate实现了SqlSession接口,实例化SqlSessionTe...
2020-03-01 21:14:29 1653
原创 Spring5.X 事务管理器 PlatformTransactionManager
一、事务管理器类图二、事务管理器概述PlatformTransactionManager接口定义了获取事务(getTransaction)、提交事务(commit)、回滚事务(rollback)三个方法。getTransaction:根据指定的传播行为,返回当前活动的事务或创建新的事务。commit:提交给定事务的提交。如果已通过编程将事务标记为仅回滚,请执行回滚。r...
2020-03-01 21:11:45 1818
原创 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 1177
原创 Spring 属性编辑器
1、配置自定义编辑器、自定义属性编辑器登记员CustomEditorConfigurerCustomEditorConfigurer是一个BeanFactoryPostProcessor,调用postProcessBeanFactory注册自定义属性编辑器。可以配置自己的自定义属性编辑器。自定义编辑器扩展PropertyEditorSupport,自定义属性编辑器登记员扩展Prope...
2020-02-26 13:04:18 264
原创 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 325
原创 基于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 379
原创 基于Jdk动态代理-JdkDynamicAopProxy
1、JdkDynamicAopProxy 基于JDK动态代理创建代理对象JdkDynamicAopProxy实现了AopProxy, InvocationHandler,InvocationHandler是基于JDK动态代理必须实现的回调接口。执行流程如下:(1)目标本身并未覆写equal/hashCode方法。调用JdkDynamicAopProxy的equals/hashCode方法...
2020-02-26 13:02:27 674
原创 动态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 471
ReentrantReadWriteLock.xmind
2020-04-08
Mybatis配置文件解析组件.pdf
2020-03-11
Mybatis配置文件解析.pdf
2020-03-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人