- 博客(163)
- 资源 (1)
- 收藏
- 关注
原创 技术整理:SpringBoot+Redis+lua脚本防止超卖
使用这种方式,读取文件可以优化成sha的方式去去读取。后面再进行调整,测试类可以模拟并发情况。redis 是可以保证原子性,但是 RedisTemplate 里面的方法去调用redis是不能保证原子性。使用 lua 脚本,去执行 加减操作,执行 redis 的命令,来保证原子性。去做总库存的加减,但是这种方式是保证不了原子性的还是会超卖。SpringBoot+redis+lua 防止超卖。RedisTemplate 注入。抢购帮助类并支持集群模式。
2024-03-25 10:35:19
495
原创 2024-01-31-好的技术文章汇总
链接:https://mp.weixin.qq.com/s/wtWOhBpv1jD51C-SkkST5w
2024-01-31 11:28:27
599
1
原创 算法:哲学家就餐问题
该问题描述的是五个哲学家共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五个碗和五只筷子,他们的生活方式是交替的进行思考和进餐。平时,一个哲学家进行思考,饥饿时便试图取用其左右最靠近他的筷子,只有在他拿到两只筷子时才能进餐。1号哲学家 先去拿 0号筷子,发现0号筷子已经被拿了,就等到。这个时候 2号哲学家就能同时拿到 2号筷子和1号筷子。解决方法就是,让最后一个人先拿右边筷子,再拿左边筷子,这样就会有一个人会先拿到右手,又回拿到左手的情况。0号哲学家 先拿了 0 号筷子。2号哲学家 拿了 2号筷子。
2023-07-01 12:30:57
499
原创 2022-06-28-冒泡排序&选择排序
title: 2022-06-28-冒泡排序&选择排序date: 2022-06-28 23:19:00tag: 算法冒泡排序代码算法复杂度注意事项注意点博客地址已更新:https://leeue14.gitee.io/
2022-06-28 23:53:57
296
原创 使用cobertura插件查看生成单元测试覆盖率文档
一、背景目前项目上线都是需要做单元测试覆盖率的,但是我们有时候根本找不到指标来衡量你这个单元测试写的好不好,所以就需要使用cobertura插件来生成单元测试覆盖率文档。二、使用方式pm...
2021-06-09 22:57:42
286
3
原创 Java上线静态代码扫描规范
一、背景一个团队的代码规范是很重要的,所以在每个人提交代码到分支上之前,必须进行代码静态扫描规范。二、使用阿里巴巴代码扫描规范插件进行扫描
2021-06-03 06:53:50
814
原创 问题42:解决单元测试的时候使用@Sql注解去初始化数据库的时候,找不到sql脚本
测试函数代码:伪代码,我加了@Sql注解进行初始化 /** * 测试分页查询促销活动 * * @throws Exception */ @Test @Sql({"clean_promotion_activity.sql"}) public void testListByPage() throws Exception { Integer count = 30; return db.que
2021-05-17 22:31:35
1391
5
原创 问题解决41:单元测试 verify 使用的时候,验证一个函数执行了多少次,验证出现参数不一致情况
逻辑代码 verify(wmsService, times(1)).excute(purchaseInputOrder);报错信息如下所示:Argument(s) are different! Wanted:com.leeue.wms.service.WmsService#0 bean.createPurchaseInputOrder( com.leeue.wms.domain.PurchaseInputOrderDTO@d8b551b6);-> a.
2021-04-08 14:31:37
1716
原创 问题解决方案40:linux 查询日志,日志下有许多小的log
问题:linux 下有许多的小的日志文件,并且是按时段进行划分的。现在是在一天的日志里查询某个错误解决方案:方案1:直接在找到当前目录下的日志文件进行查找cat /home/log/info/* | grep -e '未知错误'方案2:cat /home/log/info/info-2020-03-25* | grep -e '未知错误'如果是压缩文件的话 将 cat 替换成 zcat 来进行操作...
2021-03-24 15:04:30
146
原创 Canal学习(1)Canal环境搭建以及多数据库配置和Java代码整合Canal
Canal环境搭建以及多数据库配置和Java代码整合Canal1、Canal基本了解Canal是阿里巴巴出的一个基于binlog增量订阅的一个组件。主要是做mysql数据库增量或全量同步的。1、github地址https://github.com/alibaba/canal2、官方的快速使用https://github.com/alibaba/canal/wiki/QuickStar...
2020-04-29 11:07:34
3741
1
原创 项目应用1: Spring中的ApplicationEvent与ApplicationListener在项目上的应用
Spring中的ApplicationEvent与ApplicationListener在项目上的应用描述:ApplicationContext事件机制是观察者设计模式来实现的,通过ApplicationEvent类和ApplicationListener接口,可以实现ApplicationContext事件处理。使用:功能上的使用类似发布和订阅这种模式使用步骤:1、建立event ...
2020-03-27 14:24:52
419
原创 maven nexus 私服搭建配置 setting 文件
maven nexus 私服搭建配置 setting 文件 <?xml version="1.0" encoding="UTF-8"?><!--Licensed to the Apache Software Foundation (ASF) under oneor more contributor license agreements. See the NOTICE ...
2020-03-24 11:37:19
945
原创 问题解决39: JSONObject字段映射中的定义方式
@ApiModelProperty(value = "评价选项json") @TableField(value = "detail_json", typeHandler = JsonTypeHandler.class, jdbcType = JdbcType.VARCHAR) private JSONObject detailJson;
2020-03-06 12:15:27
969
转载 @Autowired注解和@Resource注解的区别?
@Autowired注解和@Resource注解的区别?答:@Autowired:是Spring框架中提供的一个注解。采取的是注入策略 是按照类型进行注入。如:public class Test{ @Autowired private UserDao userDao;}但是如果这个时候这个userDao有多个bean值的是,就会造成无法选择具体注入哪一个类的情况。所以要...
2020-03-04 10:58:48
218
原创 手写Redis中过期策略的LRU算法
/** * 手写LRU算法 * * @author liyue * @date 2020-03-04 00:32 */public class LRUCache<K, V> extends LinkedHashMap<K, V> { private final int CACHE_SIZE = 100; // cacheSize 这里表示传递...
2020-03-04 00:41:42
524
原创 一文多发平台
https://openwrite.cn/https://github.com/ystcode/BlogHelperhttps://www.wechatsync.com/https://openwrite.cn/
2020-03-03 15:08:36
574
原创 设计模式(一)---单例模式
单例设计模式我这里就只写五种方式进行实现1、饿汉模式饿汉模式天生线程安全。因为一开始就创建了对象步骤:1、一开始就使用static 方法创建自己2、将构造函数私有3、对外提供一个方法获取到自己/** * 单例模式创建方式一: 饿汉模式创建 * * @author liyue * @date 2020/2/12 15:44 */public class User { ...
2020-02-12 17:45:12
151
原创 配置mycat中间件使用 Navicat连接时 报错There is no primary key here. Update will only use exact matching of the o
配置mycat中间件使用 Navicat连接时 报错There is no primary key here. Update will only use exact matching of the old values of the columns here. Thus, it may update more than one record.解决方案:修改 mycat 配置 schema.x...
2020-01-10 15:23:41
9946
2
原创 MySQL主从复制配置
MySQL主从复制配置主服务器节点vi /etc/my.cnf 新增以下内容 server_id=177 ###服务器id log-bin=mysql-bin ###开启日志文件重启mysql服务 service mysqld restart验证是否已经配置成功show variables like ‘%server_id%’;能够查询对应配置文件中的server_id 说明已...
2020-01-10 12:10:21
180
原创 linux 关闭防火墙
1:查看防火状态systemctl status firewalldservice iptables status2:暂时关闭防火墙systemctl stop firewalldservice iptables stop3:永久关闭防火墙systemctl disable firewalldchkconfig iptables off...
2020-01-10 10:48:41
158
转载 linux wget 安装mysql5.6
linux wget 安装mysql5.6转载小啊刚 最后发布于2018-09-20 11:24:26 阅读数 1744 收藏1.下载源:wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm2.安装包sudo rpm -ivh mysql-community-release-el7-5.noarch.rp...
2020-01-10 10:34:27
545
原创 ❌【细节决定成败】错误警示4:怎样去写好一个业务逻辑?踩坑持续中....
怎样去写好一个业务逻辑?1、保证,没有在for循环里,去执行sql语句2、保证,接口并发正常, update 锁机制,数据库锁机制。3、保证,代码格式正确。4、保证代码数据量大的时候,也能运行。如果数据量很大,考虑使用定时任务、多线程。5、数据库的 分库分表 。要考虑到,在更新数据的时候 update 的时候。要考虑到分库分表的主键。...
2019-12-30 16:52:36
245
1
原创 问题解决38:Spring Hibernate Validation进行嵌套验证 @Valid 嵌套验证必须用
如一下格式public class GroupDTO{ @NotNull private String id; @Valid // 嵌套验证必须用@Valid @NotNull private List<ItemDTO> items;}这里要嵌套验证里面的DTO,所以要加上,@Valid // 嵌套验证必须用@Valid...
2019-12-30 16:51:36
520
原创 问题解决38:快速删除mysql死锁问题
SHOW PROCESSLISTSELECT * FROM information_schema.INNODB_TRX;kill 3200313select @@autocommitSELECT CONCAT(‘KILL ‘,id,’;’) FROM INFORMATION_SCHEMA.PROCESSLIST WHERESELECT CONCAT(‘KILL ‘,trx_mysql...
2019-12-27 10:58:16
1286
原创 问题解决37: 修改sql,某个字段是否为空,如果为空返回null
修改sql,某个字段是否为空SELECT id,CASE name WHEN '' THEN NULL ELSE name END AS nameFROM users WHERE is_valid = 1
2019-12-25 18:46:52
391
原创 ❌【细节决定成败】错误警示2: 工作中需要注意的地方!!!!!!!!!!!!更新2020年2月23日
考虑一个需求时:如果要是自己弄不懂。就开始分析逻辑,一步一步的考虑。不会的一定要问别人,问清楚再开始做需求。❌拒绝不懂的,就开始写逻辑,写也是错误的电商中,系统管理操作:如果现在有一个用户,有管理员角色,和店员角色。假如现在是店员角色,然后将提升到管理员角色。 这种操作是不可行的。因为要是这样,以前店员操作的一些记录就没有了。系统也查不到了。所以只有重新给他创建一个管理员角色。或...
2019-12-24 11:26:50
322
原创 ❌【细节决定成败】错误警示1: Fegin调用需要注意的地方
Fegin调用地方细心不对的地方:❌错误误代码,在Fegin里面写这样的代码!!@GetMaping(path="/users/{userId}")Resp<UserInfo> getUserInfo(@NotEmpty @Pathvariable String userId);上面代码犯了2处错误:**在Fegin调用中,不允许出现,@NotEmpty这种注释校验参数...
2019-12-20 17:20:40
329
原创 问题解决34: Fetching config from server at ,Spring Cloud Config 的端口 port 不是 8888 的时候的坑
报错:Fetching config from server at : http://localhost:8888刚开始以为是配置的有缓存的问题,后来在网上查阅发现,SpringBoot 加载 bootstrap.yml > application.yml如何你要使用分布式配置中心,配置文件必须要改成bootstrap.yml因为我们加载配置的时候,还没有开始加载applicti...
2019-12-16 17:41:33
1436
原创 问题33:Linux安装RabbitMQ在导入公钥的时候遇到 import read failed(2)
解决方案我是自己看其他人安装的步骤,我做了下面操作解决了1、首先更新你当前linux环境 更新软件包和存储库。yum -y update2、再执行秘钥的导入rpm –import https://www.rabbitmq.com/rabbitmq-release-signing-key.ascrabbit安装和参考文档https://www.linuxprobe.com/ins...
2019-12-10 18:28:45
4178
3
原创 SpringBoot-LCN5.0.2分布式事务框架整合
LCN分布式事务框架整合场景图:我们是要在订单服务中,调用库存服务。当下一个订单的时候,就对库存-1操作1、首先要把tx-manager(分布式协调者)项目搭建起来我这里使用的是最新的lcn版本依赖 <dependency> <groupId>com.codingapi.txlcn</groupId> ...
2019-12-09 18:55:13
1285
原创 问题解决32:加上了@Transaction注解什么时候才会回滚?
@TranactionSpring中有声明式事务和编程式事务,加上了@Tranaction表示,把当前的事务管理交给Spring来管理,叫做声明式事务而程序员自己手动进行事务回滚(如AOP拦截异常进行事务回滚)如下,是手动事务也就是编程式事务//手动进行回滚 TransactionAspectSupport.currentTransactionStatus() .setRollba...
2019-12-09 15:41:17
1210
原创 2PC两段提交协议
2pc两段提交协议两段提交协议里面角色有发起者(参与者): 接口调用的服务参与者: 发起方里进行远程调用的接口协调者(全局事务者):整个服务事务的管理方两段提交协议详细说明####第一阶段提交协调者会向发起者和参与者发送一个指令,如果发起者和参与者收到指令后,都会把该业务逻辑执行完成并且成功返回给协调者。协调者在第二阶段会发送提交事务通知。如果有一方返回执行失败,协调...
2019-12-09 15:15:30
197
原创 问题解决31:搭建微服务项目时,数据库连接报java.sql.SQLException: validateConnection false
仔细检查了下当前的版本和百度去解决问题,发现当前的mysql版本自动依赖的的是8.0.15durid依赖版本是1.0.10百度查出:将durid依赖版本修改成1.1.10,应该是 durid依赖版本太低导致这个错误<!-- 阿里巴巴数据源 --> <dependency> <groupId>com.alibaba</groupId> &l...
2019-12-09 14:37:58
589
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人