自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 RXA-Thanos是一个SpringCloud 分布式事务解决方案

Rxa-Thanos RXA-Thanos是一个SpringCloud 分布式事务解决方案,基于Redis框架发布订阅方式通信,汲取了XA两阶段提交和最大努力一阶段提交等思想,倾向于强一致性事务.目前处于完成功能阶段,等待进一步测试优化及重构; 1.集成方式: 基于Redis,所以需要...

2020-04-06 17:55:45 61 0

原创 基于Redisson的分布式锁,声明式注解方式,

Lock-Thanos 基于Redisson的分布式锁,声明式注解方式,git地址,喜欢请留星星 ###一.功能: 支持可重入公平锁,可重入非公平锁,写锁,读锁 支持注解声明式设置参数 自定义错误处理 ###二.引入项目: 1 引入pom参数: <dependency&g...

2020-03-31 19:26:30 58 0

原创 Encrypt-Thanos (springboot,springcloud http传输加解密框架,灭霸特别版 jdk1.8+支持)

Encrypt-Thanos (springboot http传输加解密框架,灭霸特别版 jdk1.8+支持) 一.功能介绍 springboot,springcloud项目快速开启前后端数据传输加密 提供多种加密方式(对称,非对称),支持自定义加密方式 集成简单,一个@EnableE...

2020-02-23 14:39:31 224 0

原创 springcloud集成springsecurity oauth2 实现服务统一认证,应该是很简单的教程了~

#重构项目,整理maven父子结构,改善认证及资源服务器配置,增加注释更清晰好理解~ #2019.11.4 新增自定义返回token数据; #2019.11.5新增自定义登陆及授权页面(没有前后端分离,其实这种小页面也没必要分离出去) 1.项目结构 服务名 端口号 ...

2019-11-07 16:46:39 7003 20

原创 重新博客搬家~

上次因为个人博客不足10条博文未成功,迫于审核和广告~搬家地址:https://www.kakuiwong.cn/

2020-05-05 13:24:31 55 0

原创 @FeignClient相同value出现报错~实现同客户端不同配置访问

场景:现在有一个客户端是MECHANT,现在我想使用feign访问它的api.但是此时我本地需要使用不同的配置方式访问,例如不同的编解码等; 问题:如果使用两个接口的注解为: 1) @FeignClient(value = "MECHANT", configuratio...

2020-02-29 15:12:26 203 0

转载 以前做的mysql练习题~

数据表介绍 --1.学生表 Student(SId,Sname,Sage,Ssex) --SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course(CId,Cname,TId) --CId 课程编号,Cname 课程名称,TId 教师编号 ...

2020-02-24 12:16:38 33 0

原创 netty实现一个proxy~

开发中~ 原理: 内网服务器: 1.一个服务监听浏览器的http请求 channelA 2.根据配置连接代理服务器的客户端服务器 channelB 3.channelA收到http请求 ->channelB发送给netty服务-> channelB获取结果返回给channelA ...

2020-02-16 17:11:07 32 0

原创 netty 实现一个断点续传下载工具~支持http,websocket协议~

支持http断点续传下载,后续支持磁力bt等;后端使用netty框架编写,支持http协议接口认证及调用,支持websocket协议对前端进行主动推送下载进度等信息; github :https://github.com/785175323/GY-Download...

2020-01-16 16:40:58 143 0

原创 自定义多线程业务加锁同步范围

在涉及到多线程并发处理业务时,如果有修改公共资源的时候,往往存在着线程安全问题,这时我们往往会使用一些方法来避免线程不安全,例如:使用lock加锁,synchronized同步这些悲观锁或者使用版本号等乐观锁; 如果这时候有这么个需求,一个业务是各公司提交修改公司销售额;这时其实并发修改的是...

2020-01-15 15:44:58 37 0

原创 java版内网穿透~

其实思路知道就好实现了~ 内网CLIENT可以正常连接到SERVER端,并且能够保持长连接,由CLIENT对SERVER发起连接,建立SOCKET对,在SERVER端开启其他TCP监听,收到外部请求时,通过已经建立好的SOCKET将数据传输给CLIENT,CLIENT使用相同的方式将数据发送给指...

2019-11-12 11:35:40 410 0

原创 小白鼠中毒面试题分析~

实验室里有1000个一模一样的瓶子,但是其中的一瓶有毒。可以用实验室的小白鼠来测试哪一瓶是毒药。如果小白鼠喝掉毒药的话,会在一个星期的时候死去,其他瓶子里的药水没有任何副作用。请问最少用多少只小白鼠可以在一个星期以内查出哪瓶是毒药; 答案是: 10只; 计算方法: 1,其实就是使用组合方...

2019-11-01 16:38:56 89 0

原创 面试之别在问我为什么HashMap为什么扩容长度总是2的次方了~

日常中我们经常用到HashMap并且面试题也有很多针对它的,这次就说说他的长度~ 默认为16我们都知道,默认的扩容负载因子是0.75f,每次扩容后容量都保持为2的幂; 如果我们自己设计一个类似于hashmap的数组加链表结构,我们拿到key做hashcode后让他均匀分布到数组上,我们可能...

2019-10-31 15:13:21 81 0

原创 实现springcloud中类似Spring Retry重试框架功能~

1.首先创建自定义注解: @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface MyRetry { //重试次数,默认三次 int value() defau...

2019-10-11 15:39:32 76 0

原创 nacos中的配置更新咋做的,给你看个小例子~

分布式系统中,使用到nacos中的配置更新,怎么实现的呢; 其实就是客户端轮询服务端,检查配置,如果更新则修改当前配置;监测更新我们不说,这里提供下修改变量的方法~ 1.我们先提供一个测试数据 @RestController public class QiNiuController {...

2019-09-30 14:27:32 44 0

原创 spring-retry 异常重试框架的使用~

<dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId>...

2019-08-27 15:13:14 172 0

原创 JAVA之SPI机制的使用姿势~

常看到各种开源框架,支持各种模块自定义组合使用,比如先引入主模块,然后引入A模块就具有A功能,引入B就有B功能~ 如果使用的是spring则他们使用spring动态注入的方式实现解耦功能模块,我们现在使用spi自己实现一下类似功能~ 一.定义接口类: 1.定义接口(所有实现方法都来自该接口)...

2019-08-21 15:04:24 91 0

原创 仿照jasypt参数加密框架,打造你自己的加密框架~

不了解jasypt的先去了解下,基本用法就是在数据库密码等敏感信息处进行加密处理; 例如: spring.redis.password=ENC(px98dK+6YrPE8F3eJcbatRLRwwy8TlzP) 然后需要配置密钥,可以直接在配置文件里配置,代码里配置;当然最安全的是配置到环境变...

2019-08-16 14:03:44 47 0

原创 适配器模式解决一个限时返回的接口的场景~

以下虚拟场景:某个接口业务处理耗时不确定,要优化前台交互~ (1)使用多线程异步处理,不管成功与否都返回一个状态,例如正在处理中; (2)设置限时时常,超时后按业务自定义返回; 我们接下来就是用第二种方式: 1.首先自定义一个抽象类: public abstract class goR...

2019-08-12 16:49:41 49 0

原创 mysql分组后排序获取数据~

(1)第一种,左关联后比较相同组的成绩,分组a表数据,然后筛选b表成绩比a表成绩大的数量,取最小的三行数据 SELECT a.id,a.gid, a.col2,COUNT(b.id) FROM t2 a LEFT JOIN t2 b ON a.gid=b.gid AND a.col2<=b....

2019-08-12 15:39:45 295 0

原创 Sentinel熔断限流组件,另附自己实现个类似功能小demo

首先基础操作,看完直接就能用,然后希望阿里改进的地方,并提issue,自己实现思路: 只简单介绍限流和异常降级,其他大同小异: 1.限流: (1)非注解方式: 规则: @PostConstruct public void rule() { FlowR...

2019-08-07 18:01:44 97 0

原创 个人总结基本用法,十分钟学会vue~

vue很流行,我觉得得益于它的易用性~废话不多说,开始表演~(以下为伪代码) “:” 是指令 “v-bind”的缩写,“@”是指令“v-on”的缩写; 1.安装npm,初始化项目等等略~直接使用,满足日常最基本操作,其他百度~ 2.创建基本路由(并做基本判断): const rout...

2019-08-05 16:33:26 36 0

原创 ThreadPoolExecutor使用不当引发的死锁~

1.线上服务大量请求失败问题出现,查看服务器各项参数正常,网络正常,其他服务正常; 2.于是使用jstack分析线程信息: (1)获取java服务pid (2) jstack -lpid > jstack.log输出线程信息: java.lang.Thread.State: WAI...

2019-08-03 23:01:57 442 0

原创 业务中遇到的一次死锁错误,并附解决方案;

今天在测试线程池死锁时,想起来当初在公司中遇到的一次数据库死锁经历; 1.起因是技术主管有一天给我看服务器日志,出现了死锁日志,并说明情况以前就发生过,不过概率很小; 2.定位出现死锁问题代码,发现是mq消费端,其中大致的业务是(消费一个消息,该消息会携带多个商品id及处理方式,然后需要f...

2019-08-03 22:37:40 54 0

原创 说烂了的,单例模式

几种推荐方式:(例子是获取线程池) 1.饿汉式(一般就用饿汉式就行了,如果非要懒加载那就看下面): public class ThreadPoolUtil{ private static BlockingQueue<Runnable> bqueue = new Arra...

2019-08-02 14:37:13 26 0

原创 nginx部署vue以及跳坑~

列举几种部署方式: 如果vue的路径是默认hash则不会出现history方式的404错误,这里先不说了; 以下均为vue路由mode=history方式: 1.最简单的方式: 将vue打包生成的dist中的static和index.html放到nginx的html包下; locati...

2019-08-01 14:19:21 469 0

原创 第三方接口小记~

1.采用非对称密钥加密互传数据 2.采用发送签名方式:: (1)签名生成方式为可以为全部传输参数按规定排序后加上请求时间戳加密而成 (2)发送请求时间戳,避免重新请求,验证时间的合法性 3.采用oauth授权方式,发放有时限性的token,并且对资源隔离 ...

2019-07-18 17:59:04 37 0

原创 mybaits缓存引发的bug~

首先无力吐槽到了新公司的遭遇,来了俩月改了俩月bug,真是生活不息bug不止~ 遇到的问题: 1.在做组合支付成功后,微信回调成功会触发给用户发送两条付款消息;结果每次都会余额支付一次,微信付款会连发两条一样的消息,让用户和我们都很慌好不好~ 排查问题: 1.开始认为是不是回调失败重试...

2019-07-10 10:41:56 29 0

原创 手写一个xss防御系统,超简单~

原理其实就是加一层过滤请求的过滤器,然后将非法参数根据你的业务去进行屏蔽; 注意事项:如果有接收xml格式的数据,则不要屏蔽<>符号,可以在过滤时判断接收数据类型~ 1)首先创建一个继承HttpServletRequestWrapper的包装类,然后重写以下方法,并且加入到过滤器中...

2019-06-28 16:27:06 175 0

原创 mybaits结果对象为内部类~

1. B类是A类中的内部类。 2.  映射写法: com.XXX.A$B , 注意A类和B类之间用 $ 表示内外关系,而不是常用的 .点号。

2019-06-25 09:55:53 111 0

原创 spring事务不起作用的原因~

1.@Transactional加在非public方法上,这个其实idea就能规避了,有语法检查; 2.非@Transactional注解方法调用同类中使用@Transactional注解的方法,不生效,原因是事务管理用到了动态代理,原理自己去查; 伪代码: public void...

2019-06-19 15:34:15 385 0

原创 mysql only_full_group_by

原因分析:MySQL5.7版本默认设置了 mysql sql_mode = only_full_group_by 属性,导致报错。 解决办法: 1、打开MySQL数据库控制台 执行全局sql语句: set @@sql_mode= 'STRICT_TRANS_TABLES,NO...

2019-06-19 14:57:01 612 0

原创 java后台接口测试~

1.本地测试,写测试用例,正常debug,主要针对类似支付回调类的测试,需要公网ip外部访问的测试; 2.使用类似于natapp的内网穿透软件,获取到一个免费域名,进行测试; 3.针对于设置白名单的服务器,可以使用远程调试功能(具体配置网上一大堆,配合idea也不错),缺点就是每次调试都要保证...

2019-06-17 16:29:00 602 0

原创 实现rpc就是这么简单~

实现rpc就是这么简单~ 日后补充完善(缺少负载均衡,服务注册发现等,不过加入这些很容易,明白了rpc其中原理就简单了~) 1.服务端: 1)服务端其实就是将客户端传输的指定方法和参数,通过反射调用后,将值传回给客户端; 伪代码: @Component public class A...

2019-06-13 16:20:15 174 0

原创 没事写点golang运维小脚本~

.1.一个是用来自动部署测试服务器的,一个是用来切换测试服务器测试账号身份的小工具;(减轻了每次进入测试服务器部署和进入数据库去手动修改了) 下面是输入命令界面: 都是很简单的修改数据库和执行shell脚本而已; 2.golang编译生成exe后加入图标 首先下载安装MinGW,然...

2019-06-03 16:38:31 2326 0

原创 阿里RocketMQ,以前做的分享拿上来记录

一.作用 •削峰填谷(主要解决瞬时写压力大于应用服务能力导致消息丢失、系统奔溃等问题) •系统解耦(解决不同重要程度、不同能力级别系统之间依赖导致一死全死) •提升性能(当存在一对多调用时,可以发一条消息给消息系统,让消息系统通知相关系统) •蓄流压测(线上有些链路不好压测,可以通过堆积一...

2019-05-27 15:58:27 111 0

原创 再用mybatis-plus

这个项目又能用mybaits-plus了,太棒了,大大增加开发效率;重新配置下; (1)引入maven依赖(没写版本号): <dependency> <groupId>com.baomidou</groupId> ...

2019-05-23 15:32:56 60 0

原创 springcloud-Config 配置中心(git项目多文件夹配置文件引入)

1.首先编写配置中心服务: (1)引入相关依赖,略 (2)编写配置文件: server: port: 8085 spring: application: name: CONFIG cloud: config: server: git:...

2019-05-19 17:02:04 2299 0

原创 说说@Transactional(readOnly = true),和mysql事务隔离级别;

1.首先说说注解@Transactional(readOnly = true) (1)这里使用readOnly=true后,直观会给我们的体现就是,在该事务中,我们只能做查询,不能做更改等操作,否则报错; (2)作用:由于只读事务不存在数据的修改,因此数据库将会为只读事务提供一些优化手段 ...

2019-05-07 15:07:56 562 0

原创 springcloud的上传下载相关~

1.通过zuul网关上传文件到其他服务: 1.1首先springboot默认的限制上传文件大小为1m,多个文件总大小不超过10m;所以上传小于1m文件无需任何处理; 1.2对于大文件要做的处理如下: (1)请求路径添加/zuul前缀; (2)服务端添加文件上传限制 spring: ...

2019-05-06 17:53:27 232 0

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