TCP三次握手四次挥手
三次握手是为了证明双方都有发送响应消息的能力比如A 要向 B 建立连接假如 A B 双方都是正常的A向B发送syn, B接收到, 此时B知道A能正常发消息B向A发送syn和ack, A接收到, 此时A知道B能正常收到(ack), 也能正常发送(syn), 但B还不知道A能不能正常收到最后A向B发送a
RocketMQ解决消息发送与业务落库的一致性
在实际业务中, 经常有如下场景更新一条数据后, 需要发送一条消息异步通知其他服务进行后续处理比如用户完成激活, 发送一条消息通知第三方服务同步用户状态那么会有如下代码@Transactional
public void enabled() {
//更新用户状态
updateUser(
回顾一次生产问题
有几个原因造成这些问题我没有对这种异步系统进行流程分析我不熟悉RocketMQ的特性以及机制我对数据库操作把控不严
RocketMQ架构及特性
架构RocketMQ包含四个组件NameServer, Broker, Consumer, ProducerNameServer类似注册中心, Broker接收存储消息, Consumer和Producer在项目内定义Broker向所有NameServer注册自己, 持续发送心跳包Consumer和
Redis缓存更新修改原有值但是不修改失效时间
第一种方式redisTemplate.opsForValue().set("key", "value", 0);第二种方式redisTemplate.opsForValue().increment("key", 1);
异步场景下的ThreadLocal解决方案
引入依赖<dependency>
<groupId>com.alibaba</groupId>
<artifactId>transmittable-thread-local</artifactId>
<version>2.12.1</version>
</dependency
SpringCloud OpenFeign 微服务调用
现有xxx-common 和 xxx-user两个微服务, 现需要在common中调用user的服务添加依赖<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-start
SpringBoot Test bootstrap.yml读取不到指定配置
项目用了springcloud config, 所以用bootstrap读取项目基础配置.但是在单元测试下, 发现bootstrap内的值(@@application.name@@)没有被替换, 导致单元测试一直报错解决方法:在pom中的project->build节点下, 新增如下代码
JUnit 模拟多线程 逻辑不执行
@Test
public void test() {
new Thread() {
@Override
public void run() {
//logic
}
}.star
模拟Mybatis"无实现类"调用接口
Mybatis让我们通过接口(interface)就能调用到对应sql, 看起来好像没有实现类, 貌似不符合"常识"通过这个简易demo, 带你大致了解mybatis背后所做的事先建立maven工程 <parent>
<groupId>org.springframework.b
MyBatis是如何让我们通过接口就能调用到SQL的
大致可分为如下几个步骤1. 动态注册bean1.1 根据配置mapperScan, 扫描对应的包, 将对应的类解析成BeanDefinition1.2 通过替换BeanDefinition中的BeanClass为MapperFactoryBean, (原来的BeanClass是Mapper接口) 实
MyBatis拦截器实现SQL打印
mybatis有自带的sql打印, 但只会出现在抛异常的时候, 或者配置日志输出, 但是输出的日志较为冗长像这样### Error querying database. Cause: java.lang.ArithmeticException: / by zero
### The error ma
MyBatis拦截器执行顺序
最近项目用上了mybatis, 但是想像hibernate那样能打印sql, 于是写了个基于mybatis拦截器的sql打印, 参考这个https://blog.22xcode.com/post/78然后, 碰到了问题, 拦截器会重复输出一句sqlmybatis sql: SELECT id, na
Dubbo连接不到对应服务
尝试删除C:\Users\用户\nacos该目录, 然后重启项目原因根据官方图,dubbo调用者需要通过注册中心(例如:ZK、nacos)注册信息,
获取提供者,但是如果频繁往ZK获取信息,肯定会存在单点故障问题,
所以dubbo提供了将提供者信息缓存在本地的方法。
Dubbo在订阅注册中心的回调
Java 获取当前方法的被调用信息
Thread.currentThread().getStackTrace();
Seata全局事务隔离性
在数据库本地事务隔离级别 读已提交(Read Committed) 或以上的基础上,Seata(AT 模式)的默认全局隔离级别是 读未提交(Read Uncommitted) 。如果应用在特定场景下,必需要求全局的 读已提交 ,目前 Seata 的方式是通过 SELECT FOR UPDATE 语句
Java 建造者模式
建造者模式建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。介绍意图:将一个复杂的构建与其表示相分离
各平台时间格式
javayyyy-MM-dd HH:mm:ss2021-01-18 13:05:25mysqlDATE_FORMAT(time,'%Y-%m-%d %H:%i:%s')2021-01-18 13:05:25sql serverSELECT CONVERT(varchar(100), GETDATE(
Docker 安装 MongoDB
docker pull mongo
docker run -itd --name mongo -p 27017:27017 mongo --auth
-p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mo
Mysql 通过binlog日志恢复数据
https://www.cnblogs.com/YCcc/p/10825870.html