摘要:
线程锁,进程锁,分布式锁 线程锁:大家都不陌生,主要用来给方法、代码块加锁。当某个方法或者代码块使用锁时,那么在同一时刻至多仅有有一个线程在执行该段代码。当有多个线程访问同一对象的加锁方法/代码块时,同一时间只有一个线程在执行,其余线程必须要等待当前线程执行完之后才能执行该代码段。但是,其余线程是可 阅读全文
posted @ 2021-08-09 20:33
KLAPT
阅读(273)
评论(0)
推荐(0)
摘要:
架构的演进 (1)单体应用:在第一阶段的单体应用很好理解。 (2)垂直应用:接着随着业务量增大, 将应用拆成互不相干的几个应用,Web框架(MVC) 是关键。 这一步,前后端分离、使用缓存、数据库和应用服务分离都会做, 但服务间是独立的无法调用,且可能存在重复代码。 (3)分布式应用:垂直应用越来越 阅读全文
posted @ 2021-08-09 20:21
KLAPT
阅读(229)
评论(0)
推荐(0)
摘要:
一、线程安全在三个方面体现 1.原子性:提供互斥访问,同一时刻只能有一个线程对数据进行操作,(atomic,synchronized); 2.可见性:一个线程对主内存的修改可以及时地被其他线程看到,(synchronized,volatile); 3.有序性:一个线程观察其他线程中的指令执行顺序,由 阅读全文
posted @ 2021-08-09 17:02
KLAPT
阅读(520)
评论(0)
推荐(0)
摘要:
(1)简单模式(Hello World) 做最简单的事情,一个生产者对应一个消费者,RabbitMQ相当于一个消息代理,负责将A的消息转发给B 应用场景: 将发送的电子邮件放到消息队列,然后邮件服务在队列中获取邮件并发送给收件人 import com.rabbitmq.client.Channel; 阅读全文
posted @ 2021-08-09 15:08
KLAPT
阅读(192)
评论(0)
推荐(0)
摘要:
StringTokenizer 原来是一个遗留类,并未被废弃,只是出于兼容性原因而被保留,在新代码中已经不鼓励使用它了,建议使用 String 的 split 方法或 java.util.regex 包代替。 import java.util.Random;import java.util.Stri 阅读全文
posted @ 2021-08-09 14:46
KLAPT
阅读(72)
评论(0)
推荐(0)
摘要:
redis数据类型 String、Set、Zset、List、hash Bitmap 。 四种统计类型: 二值状态统计; 聚合统计; 排序统计; 基数统计 二值状态统计: 就是集合中的元素的值只有 0 和 1 两种,在签到打卡和用户是否登陆的场景中,只需记录签到(1)或 未签到(0),已登录(1)或 阅读全文
posted @ 2021-08-09 12:04
KLAPT
阅读(307)
评论(0)
推荐(0)
摘要:
XA/二阶段提交 基于XA协议的二阶段提交 所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)的事务,事务管理器先问各个数据库准备好了吗?如果每个数据库都回 ok,那就正式提交事务,在各个数据库上执行操作;如果任何其中一个数据库回答不 ok,那么就回滚事务。 阅读全文
posted @ 2021-08-09 09:52
KLAPT
阅读(61)
评论(0)
推荐(0)