自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 浅谈seata AT模式的性能以及隔离问题(获取全局锁失败)

前言目前seata版本是1.4.2运用在实际场景中发现一些性能问题 特此记录下来(1.5版本会优化)业务场景下单完成之后扣减库存,开启本地事务的前提条件下发现使用AT模式的时候经常出现获取全局锁失败问题分析阅读源码之后发现,该问题其实由于上一事务一阶段已经提交但是没有进行全局提交,所以全局锁并没有释放,导致下一个分支事务注册的时候获取不到全局锁直接返回了异常(前提条件是在开启本地事务的情况下)。开启本地事务的情况下并不会进行重试而是直接失败重点来了,一直以为分支事务注册失败的时候回进行重试,

2021-12-04 16:06:23 4222

原创 JVM内存溢出排查--存在大量线程未回收

前言一个单独调用第三方系统接口的小项目运行一段时间之后就出现了内存溢出,在此记录一下。基础故障处理工具都是利用jdk自带的工具jps 虚拟机进程状况工具可以列出正在运行的虚拟机进程 主要是用来查询pid的jmap 虚拟机进程状况工具这个功能比较强大jmap -heap pid 可以分析各代的分配内存 以及占用内存情况等jmap -histo pid 可以列举出堆中对象信息 实例数量、占用大小jmap -dump:format=b,file=文件名 pid 可以转成dump文

2021-05-22 16:39:47 1050 1

原创 分布式事务--手写TCC

前言基于之前的RPC服务手写一个简易的分布式事务TCC实现思路创建全局唯一ID能够让RPC中各个服务感知是同一个TCC通过注册事务同步器在事务提交成功之后 先将confirm和cancel方法注册至zk服务当所有的try方法都提交成功之后 获取zk中所有的confirm方法名称等信息 通过PRC调用各自写好的confirm方法当有try方法执行失败的时候 获取zk中所有的cancel方法名称等信息 通过PRC调用各自写好的cancel方法如果有confirm和cancel方法失败则需要存储到

2021-05-20 17:47:25 724 1

原创 Spring Security OAuth2 授权码模式 (Authorization Code)

前言Spring Security OAuth2 授权码模式 (Authorization Code)应该是授权登录的一个行业标准整体流程首先在平台注册获取CLIENT_ID和CLIENT_SECRET 即应用id和key第三方通过请求重定向到平台的登录页面输入平台的账号密码之后点击确认重定向到第三方的页面并携带code通过code获取token通过token获取用户信息code的实现逻辑自带的InMemoryAuthorizationCodeServices是用Concurre

2021-04-23 17:27:17 4665 2

原创 Spring Security OAuth2+CAS(添加cas模式)

前言Spring Security OAuth2 自带有4中模式,有些特殊情况是需要自定义。(本文的前提是需要知道如何添加自定义的模式)现在的需求是现有的Spring Security OAuth2的认证对接cas认证中心。maven <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-cas</artifa

2020-11-14 16:19:04 4236 6

原创 Spring Security OAuth2+JWT(动态权限)

Spring Security OAuth2+JWT(动态权限)前言权限校验思路Gateway校验tokensecurity注解控制权限自定义FilterInvocationSecurityMetadataSource(推荐)FilterInvocationSecurityMetadataSourceAccessDecisionManagerSecurityOauthService配置ResourceServerConfigurerAdapter前言有好多同学再问我 Security 鉴权方法的问题。在

2020-09-21 09:37:23 1350 2

原创 百度地图离线js+瓦片地图

百度地图离线js+瓦片地图前言BMapDown下载瓦片地图使用前言网上有许多的文章都有教程但是缺少了瓦片地图下载这个最重要的东西。(这篇博客主要是分享一下如何下载瓦片地图)BMapDown偶然搜索到BMapDown 这个工具可以在线下载瓦片地图。下载地址下载下来之后发现还直接有百度地图离线的js (bmap-offline文件夹),直接拉到项目中就可以用了。下载瓦片地图选好区域下载...

2019-10-22 16:11:36 2831 1

原创 pdf.js实现在线预览PDF

pdf.js实现在线预览PDF前言下载使用参数处理跨域处理前言pdf.js 是一个很好的在线预览PDF的js框架。本人测试支持ie11、chrome、360.下载pdf.js 下载地址 解压之后直接放到前端项目中。使用这个是我的目录结构<html><head> <meta charset="UTF-8"> <title&...

2019-10-15 15:33:44 2445 1

原创 Spring Cloud Gateway+Spring Security OAuth2+JWT(二)

Spring Cloud Gateway+Spring Security OAuth2+JWT(二)前言Gateway校验token服务获取token效果前言上一篇搭建了授权服务,这篇我们来讲讲网关。Gateway校验token我们的目标是校验token并将其解密之后传给服务package com.ljl.filter;import com.alibaba.fastjson.JSONO...

2019-09-17 16:21:18 31264 14

原创 Spring Cloud Gateway+Spring Security OAuth2+JWT(一)

Spring Cloud Gateway+Spring Security OAuth2+JWT(一)前言授权服务 OAuth2+JWTpom授权服务器配置自定义用户jwt前言捣鼓了一段时间的Spring cloud,想把公司的的基于用户和权限体系的基础框架也融入到Spring cloud中。查阅了一些相关资料,打算采用Spring Cloud Gateway+Spring Security O...

2019-09-17 16:08:05 33464 11

原创 Spring boot--自定义类扫描器

Spring boot--自定义类扫描器前言ClassPathBeanDefinitionScanner简介ImportBeanDefinitionRegistrar简介自定义注册过程自定义注解实现ImportBeanDefinitionRegistrar自定义类扫使用总结前言之前一直在写RPC框架是基于Spring的框架。通过扫描接口并将其注入代理工厂的方式是采用了Spring 自定义标签的...

2019-09-11 10:12:51 5433 9

原创 Spring Cloud Gateway -- 聚合swagger

Spring Cloud Gateway -- 聚合swagger前言Gateway的搭建配置文件全局Filter设置前言传统服务变成微服务架构之后,如果我们需要访问各个服务的swagger文档,通过不同端口号去访问比较麻烦。我们可以通过Gateway来聚合swagger文档,通过同一端口加项目名称的形式来访问。Gateway的搭建配置文件server: port: 8010spr...

2019-08-16 16:17:24 748

原创 Logback+kafka+ELK搭建微服务日志

Logback+kafka+ELK搭建微服务日志前言环境准备安装zookeeper安装kafka安装elasticsearch安装logstash安装kibana配置Logbackpom文件改造新增logback-spring.xmlboot配置文件一下测试前言微服务下的日志不能采用原先单一架构的日志系统,因为日志文件分散在各个服务器上面,对于排查问题很不友好。我们的目标是把所有的服务产生的日...

2019-08-09 16:49:27 2871

原创 利用RSA+AES 前后端对数据进行加密处理 -- 后端实现

利用RSA+AES 前后端对数据进行加密处理 -- 后端实现前言RSAUtilAESUtilOncePerRequestFilter 对请求参数进行解密前言上一篇主要将了前端方面,现在来讲讲后端如何设计RSAUtil需要在resource 中创建privateKey.properties和publicKey.properties 两个文件保存公钥私钥import org.slf4j.Lo...

2019-07-11 10:34:41 960

原创 利用RSA+AES 前后端对数据进行加密处理 -- 前端实现

利用RSA+AES 前后端对数据进行加密处理 -- 前端实现前言环境准备前端使用前言上一篇主要将了理论方面,现在来讲讲前端如何设计环境准备需要用到3个js文件1.aes.js!function(t,n){"object"==typeof exports?module.exports=exports=n():"function"==typeof define&&defin...

2019-07-10 16:37:01 1821 1

原创 利用RSA+AES 前后端对数据进行加密处理 -- 整体思路

利用RSA+AES 前后端对数据进行加密处理 -- 整体思路前言RSA加密算法RSA简介RSA缺点AES加密算法AES简介AES缺点RSA+AES 整体流程前言目前项目中需要对接口中的一些参数进行加密处理,考虑了许久选择了RSA+AES 这两种加密算法公用的方式进行处理。RSA加密算法RSA简介RSA加密算法是一种非对称加密算法,密钥为一对公钥和私钥组成。通常把公钥发送给使用方,私钥由接...

2019-07-10 09:59:41 1172

原创 Spring Cloud Gateway -- 获取RequestBody(解决RequestBody不完整的问题)

Spring Cloud Gateway -- 获取RequestBody(解决RequestBody不完整的问题)前言获取RequestBody解决办法修改路由修改获取RequestBody方法说明前言之前在修改RequestBody和Header这篇文章中有个对于获取RequestBody的猜想,现在在使用过程中发现了这个问题(RequestBody不完整的问题)获取RequestBod...

2019-06-24 14:48:03 6368 3

原创 Spring Cloud Gateway -- ResponseBody修改(解决ResponseBody不完整的问题)

Spring Cloud Gateway -- ResponseBody修改(解决ResponseBody不完整的问题)前言Response修改前言由于对方接口传输数据可能是xml,可能是json的,但是我希望前端获取到的响应是json格式的,所以需要在在响应中修改一下。Response修改由于接口返回数据较多,采用 fluxBody.map(dataBuffer -> 这个方式...

2019-05-31 15:19:54 5513

原创 Spring Cloud Gateway -- cookie添加修改

Spring Cloud Gateway -- cookie添加修改前言cookie的修改前言由于接口需要有个token认证,需要放在cookie中,但是这个token中含有= ,+, / 等符号,存储在前端导致了乱码。所以想了个办法在网关这层将cookie 在解码一下再放进去。cookie的修改原本我是采用这种方式 new一个新的MultiValueMap 将修改好的cookie放入。...

2019-05-31 14:51:14 13537 4

原创 Spring Cloud Gateway -- Cors解决跨域问题

Spring Cloud Gateway -- Cors解决跨域问题前言Cors前言由于前后端分离就会碰到跨域问题,原本我们在后端采用Cors就能解决,现在利用网关,那么就放在网关这层做好了。Cors/** * 跨域允许 */@Configurationpublic class Cors { private static final String MAX_AGE = "18...

2019-05-31 14:40:55 26823 16

原创 Spring Cloud Gateway -- 修改RequestBody和Header

Spring Cloud Gateway -- 修改RequestBody和Head前言读取和修改RequestBody修改Head添加路由前言目前项目有个需求,前端POST请求需要以xml形式传输,后端接口有些返回的是JSON格式有些返回的XML格式并且由于网络架构的需求,需要一个中间平台来处理这些请求。最终觉得利用Spring Cloud Gateway来实现。前端统POST请求统一用AJ...

2019-05-31 11:57:02 18178 9

原创 Netty进阶之路-JDK业务线程池

Netty进阶之路-JDK业务线程池前言JDK业务线程池分析JDK业务线程池实现前言之前我们说了有2种思路解决服务端处理耗时的业务,第一种EventExecutorGroup,第二钟就是采用DK业务线程池JDK业务线程池分析和EventExecutorGroup不同,I/O线程会将业务放入到jdk线程中执行,writeAndFlush之后再放入I/O线程中。如果是一个长连接,业务非常耗时可...

2019-05-24 15:00:10 1852 2

原创 Netty进阶之路-客户端池化疑云

Netty进阶之路-客户端池化疑云前言FixedChannelPoolFixedChannelPool 构造参数FixedChannelPool 改造总结前言上一篇我们了解了EventExecutorGroup的工作机制,但是依然没有解决我们的1秒执行一次的问题。FixedChannelPool我们知道了EventExecutorGroup的工作机制。对于某个客户端连接Channel,只会...

2019-05-14 15:55:44 1655 1

原创 Netty进阶之路-EventExecutorGroup疑云

Netty进阶之路-EventExecutorGroup疑云前言EventExecutorGroup用法测试效果EventExecutorGroup工作机制前言上一篇我们讲了不能把耗时的业务放在I/O线程中执行,并说了有2中方式解决。这篇先将Netty的提供的EventExecutorGroup。EventExecutorGroup用法改动只有2行代码 创建一个EventExecutorG...

2019-05-14 15:22:53 6181 2

原创 Netty进阶之路-I/O线程和业务线程分离

Netty进阶之路-I/O线程和业务线程分离前言Netty的线程模型I/O线程和业务线程解决思路前言之前我们对于Netty的客户端进行了优化,现在我们来看看服务端有哪些地方可以优化。Netty的线程模型目前服务端我们通常用的就是主从Reactor多线程模型一个线程组用于接收客户端的连接请求一个线程组用于处理I/O相关的读写或者执行系统Task和定时任务 //netty主从线程模型(...

2019-05-10 17:07:44 4344 2

原创 Netty进阶之路-LengthFieldBasedFrameDecoder和LengthFieldPrepender

Netty进阶之路-LengthFieldBasedFrameDecoder和LengthFieldPrepender前言解决思路LengthFieldPrependerLengthFieldBasedFrameDecoder前言之前我利用MessagePack编解码,作用其实就是为了提升性能(网络传输中的带宽和本身的存储)。但是之前的在末尾加换行符的解决粘包/半包问题已经不适用了,这篇来讲讲...

2019-05-07 09:45:33 880

原创 Netty进阶之路-MessagePack编解码

Netty进阶之路-MessagePack编解码前言MessagePack优点Netty客户端--MessagePack编解码Netty客户端--MessagePack编码Netty客户端--MessagePack解码Netty客户端--编解码使用Netty服务端--MessagePack编解码Netty服务端--MessagePack解码Netty服务端--MessagePack编码Netty服...

2019-05-05 10:24:19 617

原创 Netty进阶之路--客户端池化

Netty进阶之路--客户端池化前言Netty线程池Netty客户端处理类前言目前的RPC框架中消费者端是调用一次服务就会进行一些netty的初始化,绑定端口等操作。那发起100次的话 就是进行100次这样的连接,消耗的资源太多了。所以希望客户端池化。Netty线程池之前自己是初步接触Netty,用的还是5.x版本。再查阅了资料发现Netty自带了线程池很开心,但是自己试了半天好像没有这个...

2019-04-30 15:16:15 1327

原创 Netty进阶之路--优雅的退出

Netty进阶之路--优雅的退出前言Netty优雅退出Netty优雅退出(同步方式)Netty优雅退出(异步方式)Netty退出做了一些事情前言之前的写的轻量级的RPC框架基础功能差不多搭建完了,还差一些全局配置中心和网关,这两个打算后期在慢慢写。目前一直在看关于Netty相关的书籍和资料,主要是希望自己能够在通信那块加强一些和把RPC框架(Netty方面的)优化一下,也为了以后找工作做准备。...

2019-04-30 14:52:16 1967

原创 自己设计一个的轻量级的RPC框架--服务自动限流

自己设计一个的轻量级的RPC框架--服务自动限流前言服务自动限流服务自动限流思路初始化Map定时任务调用改造效果前言之前被各种事情耽搁了我的RPC框架,最近抽了一点时间继续写。上篇写了服务的手动降级,这篇主要写关于服务自动限流。服务自动限流通常情况下无论是客户端还是服务端都需要对于突发事件有相应的处理。服务端:服务的降级和限流(面对突发的大流量,服务端的自我保护措施,例如直接停止服务或者...

2019-04-25 09:24:21 458

原创 初探Drools--动态更新

初探Drools--动态更新前言java代码注意点前言本系列都是使用7.11版本。 利用workbench打包打完之后,我们不需要重启服务,也不需要替换jar包,因为drools会自动帮我们去updatejava代码每隔10秒钟,drools会去maven仓库看看你有没有更新,有的话它会自动updatekScanner.start( 10000L );创建session 调用玩之后需...

2019-04-23 10:21:39 837

原创 初探Drools--java端使用

初探Drools--java端使用前言pom文件初始化工具类调用前言本系列都是使用7.11版本pom文件 <!-- drools --> <dependency> <groupId>org.kie</groupId> <artifactId>kie-api</...

2019-04-23 10:12:00 2330

原创 初探Drools--执行一组规则(筛选规则)

初探Drools--执行一组规则(筛选规则)前言需求规则过滤AgendaFilter实现类前言Drools 版本是7.11的。自己对于Drools的研究是按照需求进行学习的,所以这个系列也算是自己的学习过程。需求目前的需求是fact就一个,但是规则有很多,需要将一些规则分组执行。规则过滤通常来说 我们调用规则很简单,创建fact 之后 利用session直接fireAllRules就行...

2019-04-22 17:21:39 3696 1

原创 初探Drools--workbench 中文乱码问题

初探Drools--workbench 中文乱码问题前言原因解决办法前言我们利用workbench 编写DRL文件的时候,出现中文。打包发布以后 发现项目启动之后规则出现乱码问题。原因自己的工具是myeclipse 项目是utf-8的编码。但是window的默认字符是gbk,应该是jvm加载jar包的时候默认的也是gbk,所以导致中文乱码。解决办法目前个人的解决办法是 在环境变量里加上...

2019-04-18 09:38:07 1346

原创 初探Drools--workbench maven仓库地址设置

初探Drools--workbench maven仓库地址设置前言maven 环境配置maven conf 设置(conf/settings.xml)workbench 配置前言我们写好一个drools jar 打包之后想放到自己指定的位置,自己试了半天才弄好了。默认地址是C:\Users\Administrator.m2\repositorymaven 环境配置自己用的mavne 3....

2019-04-15 10:57:13 2039

原创 初探Drools--workbench的使用

初探Drools--workbench的使用前言创建项目创建数据对象和DRL 文件打包前言workbench 的作用其实就是我们写一个maven项目,并且可以通过其打包发布。创建项目创建数据对象和DRL 文件数据对象(很简单 也可以自己写java代码)2.DRL 文件这里先出一个例子 后面会详细的讲解的package com.myspace.ljltest.test;impo...

2019-04-15 10:48:12 5896

原创 初探Drools--搭建 7.11版workbench

初探Drools--搭建 7.11版workbench前言workbench搭建workbench简单介绍workbench环境workbench下载修改tomcat 配置1.把war包解压缩放到tomcat webapps下(将名字改成kie-drools-wb)2.把drools 相关的jar下载好放到lib下(4个jar)3.在tomcat的bin目录下创建setenv.bat文件4.修改配...

2019-04-15 10:29:04 2009

原创 自己设计一个的轻量级的RPC框架--服务手动降级

自己设计一个的轻量级的RPC框架--服务手动降级前言netty 客户端前言前面几篇博客将的是搭建了一个轻量级的RPC的基础功能。最近也在学习Spring cloud,发现除了一些基础的功能还包含例如服务的断融、配置中心、网关等功能。所以接下来自己的目标就是完成这些功能的简易版本。netty 客户端...

2019-03-19 08:41:32 534

原创 自己设计一个的轻量级的RPC框架--客户端netty

自己设计一个的轻量级的RPC框架--客户端netty前言netty 客户端netty 发送请求netty 接收请求说明前言之前讲过netty的服务端,其实客户端和服务差不多。主要是建立连接,发送请求和接收请求做业务处理。netty 客户端private RPCRequestNet(String host,int port) { //netty线程组 Even...

2019-03-07 11:49:57 358

原创 自己设计一个的轻量级的RPC框架--zookeeper服务上下线通知和watch机制

自己设计一个的轻量级的RPC框架--zookeeper服务上下线通知和watch机制前言watch机制watch注册watch触发watch事件类型服务的上下线通知效果前言这篇博客主要是因为自己如果服务端每次都去访问zookeeper获取一些服务的节点信息感觉zookeeper的压力比较大,所以打算把服务的信息缓存放在本地,这里就要设计到zookeeper的watch机制。(PS 自己也踩了坑...

2019-03-06 16:10:27 458

空空如也

空空如也

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

TA关注的人

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