- 博客(15)
- 收藏
- 关注
原创 单元测试mock篇
Mockito是目前比较流行的单元测试Mock框架,可以虚拟出一个外部依赖,减低测试组件直接的耦合度,只注重代码的流程与结果,以此实现测试目的。mock和injectmocks的区别。Mock测试框架的好处。
2024-08-30 10:51:12
245
1
原创 jedisException问题排查client machine‘s system load may be tooHigh, check it‘s cpu load and gc status
redis-mget请求超时问题排查
2023-05-10 14:31:58
302
1
原创 设计模式总结
原型模式原型模式是浅拷贝,需要注意实体类中洪有对象、List等的拷贝,例如BeanUtils.copyProerties()方法它可以直接操作内存中的二进制流,所以性能相对new实例化来说,尤其是大对象更佳//定义学生类class Student implements Cloneable{ private String name; //学生姓名 private Teacher teacher; //定义老师类 public String getName() {
2022-03-30 10:25:34
150
原创 分布式锁使用supplier实现
分布式锁使用supplier实现,将delete封装在其中redisLockService.tryLock(CategoryEnum.GROUPHEAD_M_STIMULATE, key, “1”,() -> repurchaseService.updateBaseInfo(param), 3);public <T, R extends Exception> T tryLock(CategoryEnum category, String key, String value, Supp
2021-11-05 10:59:08
52
1
原创 事务的嵌套使用,你真的掌握了吗?
spring事务传播机制使用误区疑问点验证1.调用者存在事务,被调用者无事务注解且抛出异常,会回滚吗?代码块SQL@Transactional(propagation = Propagation.REQUIRED) public void insert() { aMapper.insert(new A()); System.out.println("insert a"); b.insert(); } public void
2021-11-04 15:35:53
2583
原创 数据库使用实践总结(迭代中)
目的:希望大家在写sql或者使用事务等操作数据库的时候少踩坑。受益人群:对于工作时间越短的同学收益越大,因为随着工作的沉淀和知识的积累,这些知识点渐渐都会接触到。本篇文章分为”实践篇“和”理论篇“,更多的是以问题的形式和大家互动。案例分析1.当有张表"score"正在线上使用的时候,我们的需求需要对这张表新加一个字段"english",有下面几种操作: 1. alter table score add 'english' int comment '英语成绩'; 2. alter table sc
2021-11-04 10:58:13
228
原创 Reactor模式和Proactor模式理解
概念:Reactor 模式也叫 Dispatcher 模式(在很多开源的系统里面会看到这个名称的类,其实就是实现 Reactor 模式的),更加贴近模式本身的含义,即 I/O 多路复用统一监听事件,收到事件后分配(Dispatch)给某个进程。组成:Reactor 模式的核心组成部分包括 Reactor 和处理资源池(进程池或线程池),其中 Reactor 负责监听和分配事件,处理资源池负责处理事件。初看 Reactor 的实现是比较简单的,但实际上结合不同的业务场景,Reactor 模式的具体实现
2021-10-21 12:12:47
391
原创 insert和insertSelective的区别
当新增字段定义为 not null default 的时候,insert和insertSelective两种不同的插入语法会有不同的影响:“insert就是把所有值插入,此时数据库中有default值,default值就不起作用了insertSelective不会忽略default值”可参考https://www.cnblogs.com/xinruyi/p/11267202.html...
2021-09-22 15:45:51
3856
1
转载 logback.xml配置详细说明
原文配置查询1:<?xml version="1.0" encoding="utf-8" ?><!-- 从高到地低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL --><!-- 日志输出规则 根据当前ROOT 级别,日志输出时,级别高于root默认的级别时 会输出 --><!-- 以下 每个配置的 filter 是过滤掉输出文件里面,会出现高级别文件,依然出现低级别的日志信息,通过fi
2021-07-29 18:22:29
552
原创 利用idea 对Java进程远程debug
原文地址坚持看到最后,后面有彩蛋!!!背景/原理介绍:远程debug的意思是启动一个Java进程,启动一个debugger进程,将两者连接起来,利用debugger来debug Java进程。事实上目前所有的IDE的debug功能都是通过远程debug方式来实现的,它们都利用了一个叫做JDPA(Java Platform Debugger Architecture)的技术。利用JDPA我们除了能够在IDE开发的时候debug,也能够将IDE attach到一个生产环境上正在运行的Java进程做de
2021-07-29 12:27:08
1038
原创 mysql的当前读与快照读
select version();//查看数据库版本号show variables like ‘%engine%’;//查看数据库引擎show global variables like ‘tx_isolation’;//查看全局隔离级别show global VARIABLES like ‘autocommit’;//查看全局事务提交方式set SESSION autocommit = off;//设置当前链接的事务提交方式为自动提交show VARIABLES like ‘autocommi
2021-06-24 15:43:10
617
原创 spring中bean初始化的方法以及生命周期
bean初始化有三种方法:使用方法上加@PostConstruct类实现InitializingBean接口,重新AfterPropertiresSet方法通过 元素的 init-method属性配置且顺序依次是1->2->3示例:public class InitSequenceDemoBean implements InitializingBean {public InitSequenceDemoBean() { System.out.println("Init
2021-06-22 14:31:03
2038
原创 高并发那点事
高并发那点事高并发带来的问题:1.用户角度页面加载慢、功能操作后响应时间长、功能无法使用等。2.开发者角度接口超时、线程池耗尽、数据库连接池耗尽(https://www.cnblogs.com/sweetchildomine/p/6591692.html)、数据库获取连接时间长、缓存雪崩、导致其他系统功能和业务受到影响等。问题分析:个人认为可以从多维度,多角度分析处理高并发问题,系统设计、硬件资源、代码、业务场景,每个维度的处理方式都不相同,但又有一定的联系,无论是硬件、设计、代码基本受限于业
2021-06-07 20:42:11
3007
5
原创 接口的幂等性设计
因为我们无法保证接口的每一次调用都是有返回结果的,要考虑到出现网络异常的情况。举个例子,订单创建时,我们需要去减库存,这时接口发生了超时,调用方进行了重试,这时是否会多扣一次库存?解决这类问题一般有 2 种方案:一、服务方提供相应的查询接口,调用方在请求超时后进行查询,如果查到了,表示请求处理成功了,没查到就走失败流程。二、调用方只管重试,服务方保证一次和多次的请求结果是一样的。对于第二种方案,就需要服务方的接口支持幂等性。大致设计思路是这样的:调用接口前,先获取一个全局唯一的令牌(Token
2021-06-07 16:19:42
127
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人