- 博客(34)
- 资源 (23)
- 收藏
- 关注

原创 秒杀 redis预扣减库存回滚补偿机制---实现最终一致性
最近在搞秒杀抢购业务,考虑到秒杀会频繁扣减库存和回滚库存 ,会占用数据库资源,转而使用了redis做库存预扣减,然后在开发过程中遇到了些问题,发现网络上的redis做最终一致性很垃圾,根本没考虑回滚失败后如何保证预扣减库存的最终一致,我猜想可能是这方面的东西值钱(自卖自夸一下,哈哈),好了,开始正文问题:问题是这样出现的,在回滚的的时候,如果服务器重启,而且重启的时候正好是redis更新成功,而修改订单由于mysql事务会自动回滚,幂等也没有记录成功,此时就会出现预扣减库存错乱实现技术:一.red
2020-07-17 11:04:46
11773
12

原创 JAVA 强一致性 2PC两阶段提交介绍以及Seata AT模式实现
什么是2PC两阶段提交2PC即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段(Prepare phase)、提交阶段(commit phase).2是指两个阶段,P是指准备阶段,C是指提交阶段。举例:张三和李四好久不见,老友约起聚餐,饭店老板要求先买单,才能出票。这时张三和李四分别抱怨近况不如意,囊中羞涩,都不愿意请客,这时只能AA。只有张三和李四都付款,老板才能出票安排就餐。但由于张三和李四 都是铁公鸡,形成了尴尬的一幕:准备阶段:老板要求张三付款,张三付款。老板要求李四付款,李四
2020-06-13 19:44:38
4181
9

原创 一套文章让你彻底理解运用分布式事务
让分布式事务从此离你越来越近!第一章:分布式理论介绍第二章:JAVA 两阶段提交介绍以及Seata实现第三章:JAVA TCC介绍以及Hmily实现第四章:JAVA 最终一致性介绍以及最终一致性实现 Rocketmq版本
2020-06-12 14:46:47
418
2

原创 什么是分布式事务以及分布式事务有哪些解决方案
什么是事务什么是事务?举个生活中的例子:你去小卖铺买东西,“一手交钱,一手交货”就是一个事务的例子,交钱和交货必须全部成功,事务才算成功,任一个活动失败,事务将撤销所有已成功的活动。什么是本地事务本地事务就是指:单机事务,单机事务总共包含四个特性: 原子性,一致性,持久性以及隔离性什么是分布式事务分布式系统会把一个应用系统拆分为可独立部署的多个服务,因此需要服务与服务之间远程协作才能完成事务操作,这种分布式系统环境下由不同的服务之间通过网络远程协作完成事务称之为分布式事务,例如用户注册送
2020-06-12 14:37:32
1478

原创 wsl2 ip变动导致docker不可访问
初次没有关机的情况下 docker内部的所有运行的镜像内容是可以通过localhost访问到的,但是重启后,发现镜像都是运行的,所有地址都变得不可访问,这主要是由于docker内部ip地址改变引起的,下面就来说说如何解决:安装wsl2hostwsl2host下载地址(https://github.com/shayne/go-wsl2-host/releases)下载完成后,以管理员身份运行命令提示符cmd,安装过程如下:wsl2host.exe install安装完后会出现以下提示信息让你
2020-06-12 11:31:11
4277

原创 wsl2 docker以及容器随liunx启动而启动
你还在为window开机后liunx docker没启动而烦恼么,还在为docker容器自启动而烦恼么 ,本篇文章,解决你的烦恼!正文开始首先创建后缀为wsl的文件 文件创建到/etc/目录下 命令sudo mkdir /etc/init.wsl授予init.wsl写入权限 sudo chmod 777 init.wsl编辑wsl文件 wsl文件支持shell脚本,这里只演示一个docker启动和mysql启动#!/bin/bashsudo service docker st
2020-05-31 19:37:11
3582

原创 win10 wsl2安装docker教程 亲测可用哦
首先要说明一下 ,必须使用2004版本 支持wsl2如何查看是否支持wsl2 可以直接使用命令 wsl --set-default-version 2 ,如果不识别 则认为当前系统不支持wsl2必须先执行wsl --set-default-version 2在进行下面操作正文开始一.ubuntu安装安装ubuntu18.4 (个人建议使用18版本,其他版本自己尝试)步骤: Microsoft Store —> ubuntu ----->选择ubuntu18.0
2020-05-30 10:42:25
8884

原创 微服务jwt登录过期解决方案
好长时间没有上来写博客了,想你们了都有点 ,????,近期一直在忙这搭建微服务架构,为一个app提供稳定服务而忙碌,从而在搭建的过程中,遇到了jwt过期以及,恶意刷新jwt的问题,今天主要是针对这两个问题展开教程.话不多说,先说一下什么是jwt...
2020-01-06 21:27:59
8954
9

原创 springboot@EnableAutoConfiguration 注解的作用以及加载流程
首先讲解一下springboot中@EnableAutoConfiguration 注解的作用,见名知意,就是开启自动配置.此时有些人肯定会想,这么简单的问题,你tm是xxx吧,哈哈,逗比了哈,开启了这个注解,也就意味这springboot 帮你集成了大批的热门,火热的开源技术,不再需要你导入集成配置.下面就来讲讲今天的主要内容.@EnableAutoConfiguration注解是如何加载配置...
2019-05-20 11:29:21
36216
5

原创 记一次 java heap space异常处理
大家好,可爱的我,最帅的我再次登场,刚过完年,首先祝大家新年happy!刚回到这个可爱的大家庭里,就受到了老天无限制的'照顾','怜惜',去年做的农发行项目(是个springcloud项目),竟然发生了一个Memory Out异常:java heap space ,堆内存溢出了,堆内存意味着什么这里就不解释了,说白了就是对象引用过多.看一下内存溢出的异常图吧 我曹,尽然没一行报错是我们团队...
2019-02-22 13:22:47
6385
原创 jedis 引起服务器假死
问题描述:记一次jedis导致服务器假死的解决方案2020.9.20 20:00左右加油贝线上商城出现连接失败,所有客户端出现页面转圈问题,上午就出现了两次,当时没有解决,直接重启,傍晚又来一次,不行了,群里炸锅了. 原因分析:先介绍一下服务器配置,4核16g带宽3m的服务器(后面用的到)先打开xshell,连接到服务器,查看服务进程是否存在,一看进程,还在,那就有的解决,开心的一批????,开始着手排查,先top 查看cpu占用,发现cpu利用率百分一都不到,内存也是正常,此时心里有点波动
2020-09-25 11:56:23
809
原创 java静态代理模式详解
什么是代理模式让别人帮助你做你并不关心的事情,叫代理模式代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。想象一下我们生活中的购买火车票的情节,我们可以从官网上直接购买,也可以到售票的窗口购买,这是从官方购买,在编程中,这个过程就是指从提供这个功能的类直接获取这个功能。当然了,我们也可以从售票厅旁边的小超市,或者其他地方代售火车票的地方购买火车票,那么这些代销处就是代理了火车站的售票功能,那么他们就是代理。代理模式种类代理模..
2020-08-30 18:58:42
759
2
原创 如何实现方法超时中断
美好的一天开始了,码农生活继续,今天唠一唠如何实现方法中断,解决思路呢就是将要中断的方法在线程中执行,线程的执行可操控性高,可以中断线程,睡眠线程等,废话不多说,先上Demo.
2020-08-28 10:35:05
1013
2
原创 RedisTemplate执行lua脚本实现库存扣减
好多人可能不知道如何使用redisTemplate执行lua脚本,最近在做秒杀的时候,用到了redis分布式锁,使用lua实现,包括库存扣减lua脚本代码:local key=KEYS[1]; ---keylocal subNum = tonumber(ARGV[1]) ; ---valuelocal surplusStock = tonumber(redis.call('get',key)); ---使用get命令获取key的value值 剩余库存if (surplusStock<
2020-07-24 15:28:44
1442
原创 java XSS攻击防护
首先说一下什么是XSS攻击 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。白话解释 说白了xss攻击就是jq代码攻击,用户提交的数据是jq代码,前台拿到数据库中查出的jq代码,浏览器会...
2019-05-28 15:46:29
14334
2
原创 java之构造者模式
介绍: 构造者模式,又称之为建造者模式应用场景当一个bean类重载了多个构造方法时,并且参数随机使用时,考虑使用构造者模式,在springsercurity中设置拦截规则时,应用到了构造者模式Demopackage com.yunsuibi;public class User { private final String firstName; // required pri...
2019-05-19 01:18:02
4800
原创 java中什么是守护线程,以及守护线程的应用
1.守护线程含义:守护线程(即daemon thread),是个服务线程,准确地来说就是服务其他的线程.2.守护线程白话:当非守护线程停止,守护线程才停止.3.DaemonThread Demopublic static void main(String[] args) { Thread t3=new Thread() { @Override public vo...
2019-05-15 14:40:05
12539
2
原创 java 什么是clone浅拷贝和深拷贝
什么是浅拷贝需要拷贝的源对象中的属性存在引用对象,拷贝后的对象中修改此引用对象的属性之后,源对象的引用值也跟着修改 clone方法clone()方法:对于基本类型是直接复制创建副本,对于引用类型,则是存储一个引用地址,不会复制引用所指对象1.浅拷贝案例:创建两个实体对象,Person,Address package com.yunsuibi.shallow.entity; ...
2019-05-01 13:19:00
316
原创 sevlet get请求统一处理乱码问题
最近一直在看spring core 和mvc的源码,遇到点问题,回顾了一下servlet1.问题由来:在回顾的过程中,当看到post和get请求方式处理乱码时,突然想到servlet get请求方式之前开发处理方式都是在自己的业务servlet中通过new String(name.getBytes(“iso-8859-1”), “utf-8”);一个一个参数转码,不能实现通用转码,包括我现...
2019-04-30 15:33:34
259
原创 java 内省机制
什么是内省:官方:内省(Introspector)是Java语言对Bean类属性、事件的一种缺省处理方法。个人理解:说白了就是通过反射获取javabean的setting方法并通过method执行内省的两种实现方式:1.通过Introspector接口获取PropertyDescriptor(实现类)实现2.通过PropertyDescriptor(实现类)实现案例1 :通...
2019-04-30 00:05:41
284
原创 idea remote debugger jar
最近由于远程服务器上的jar服务出现异常,本地却正常的问题,通过远程调试jar解决,现将远程调试步骤记录1.远程jar的启动方式更换为:java -jar -Xdebug -Xrunjdwp:transport=dt_socket,address=远程连接端口号,server=y,suspend=y jar名称.jar参数讲解:1.Xdebug: debug方式启动2.-Xrunjdw...
2019-04-23 09:54:25
1535
原创 java jvm何时加载对象以及static修饰的成员
今天主要给大家讲讲jvm加载对象和static修饰的成员的加载时机,上节课讲解的是数组的加载时机,话不多说,直接上代码public class Demo3 { public static void main(String[] args) { Student stu=new Student();//一个学生类对象,属性有学生id,学生姓名 stu.setId(888); s...
2018-12-13 15:21:41
866
1
原创 java 数组初始化加载内存流程
首先,讲一下内存中的概念:栈 用于存储局部变量的引用,注意是存储的引用地址堆 用于存储new出来的对象方法区 用于存储代码,也算是代码区,一般用于加载class文件好,现在开始直接上案例代码package com.orhonit;public class Demo { public static void main(String[] args) { ...
2018-12-11 23:06:32
592
原创 Redis缓存 自定义注解+aspect+反射技术实现
最近再给云随笔后台增加redis模块,突然发现spring-boot-starter-data-redis模块很不人性化,实现不了通用的方式,(当然,你也可以自己写个通用的CacheUtil来实现通用的方式),但由于本人非常的爱装逼,就在这里不讲解那种傻瓜式操作了,这里只讲干货,干到你不可置信的干货).例如:这里我使用了它其中的RedisTemplate ,发现存到redis中后,数据是乱码...
2018-11-30 14:38:47
2086
10
原创 springboot整合tk.mybatis入门2 通用service
之前讲的就不说了 现在直接到通用service1.首先创建service通用类/** * * @author cyf * @date 2018/10/30 上午10:36:34 * @param <T> */public interface BaseService<T> { T selectByKey(Object key); ...
2018-10-30 10:44:32
2606
3
原创 springboot整合tk.mybatis入门1通用Mapper
在做项目的过程中接触到,之后自己在搭建框架时整合了一下顺便记录一下整合时候出现的问题1 .首先 导入pom依赖(这里只讲spring boot +tk.mybatis) &amp;amp;amp;lt;!-- pagehelper --&amp;amp;amp;gt; 分页插件 &amp;amp;amp;lt;dependency&amp;amp;amp;gt; &amp;amp;amp;lt;gro
2018-10-29 21:08:23
10465
3
原创 rabbitmq 添加用户和设置最大权限,也是解决mq报socket关闭异常
此方式也是解决整合mq后,自己添加用户后,mq报socket关闭异常1.安装完可视化mq后台后 ,直接http://localhost:15672/进入中传播状态变化,可与Spring Cloud Config联合实现热部署。 Spring Cloud Netflix:针对多种Netflix组件提供的开发工具包,其中包括...
2018-07-16 17:14:07
1787
原创 zuul 超时 timeout
在cloud整合zuul时出现的timeout超时问题: 只需要在yml 中配置zuul 连接超时,socket超时以及断溶超时即可,但需要注意的是,当hystrix的值小的时候,hystrix生效,当ribbon.ReadTimeout小的时候,ribbon生效注意:zuul :host 只有zuul路由是url是才生效,如果使用的是serviceId,请使用(ribbon.Re...
2018-07-15 22:36:27
6941
1
原创 java之工厂模式
1.题目 请编写一个计算器,看似题目简单,有深坑哦初学者的写法: Scanner read=new Scanner(System.in); ....println("请输入第一个数:"); num1=....nextInt(); ....println("请输入符号位:"); operater=....next(); ....pri...
2018-07-13 22:51:44
303
原创 mybatis 注解 if
package cn.erongcai.hrplatform.dao.demand;import java.util.List;import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Sele...
2018-06-13 19:36:42
11210
3
原创 Mybatis @SelectProvider注解详解
@SelectProvider(type=xxxx.class,method=”xxxx”) 个人理解: 用自定义的provider类构造SQL语句属性详解:type 属性用于指定获取sql语句的指定类method 属性用于指定类中要执行获取sql语句的方法例1(单个参数): mapper中 @SelectProvider(type=BaseUserPr...
2018-05-12 15:33:54
72412
26
原创 mybatis 逆向生成后遵循java驼峰法则<解决方案>
当时用逆向生成后,实体类中的下划线都被去掉,这时只需要在sqlmap.xml中加以下代码即可。打开mybatis驼峰法则。 settings> setting name="logImpl" value="STDOUT_LOGGING" /> setting name="mapUnderscoreToCamelCase"
2018-01-26 00:13:08
5624
1
学生考试系统
2018-04-27
HttpClient jar包
2018-01-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人