![](https://img-blog.csdnimg.cn/20200410093105216.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
架构系列
文章平均质量分 96
架构设计
前方一片光明
作者专注于Java、架构、Linux、小程序、爬虫、自动化等技术。 工作期间含泪整理出一些资料,微信搜索【程序员高手之路】,回复 【java】【黑客】【爬虫】【小程序】【面试】等关键字免费获取资料。技术交流、项目合作可私聊。 微信:shuhao-99999
展开
-
架构系列——分布式锁
系统一旦分布式了之后,通信、缓存、消息、事务、锁、配置、日志、监控、会话等等各种原来单块系统场景下很容易解决的问题,都会变得很复杂,需要引入大量外部的技术。原创 2021-07-15 19:56:49 · 1623 阅读 · 8 评论 -
架构系列——分布式事务
系统一旦分布式了之后,通信、缓存、消息、事务、锁、配置、日志、监控、会话等等各种原来单块系统场景下很容易解决的问题,都会变得很复杂,需要引入大量外部的技术。原创 2020-05-06 16:11:55 · 2933 阅读 · 11 评论 -
Java——使用多线程模拟真实高并发业务并保证安全性(二)
使用100个线程把一个存放10000条数据的list数据删除,要求保证安全性,并正确记录数量。原创 2020-07-19 10:19:12 · 8715 阅读 · 1 评论 -
Java——使用多线程模拟真实高并发业务并保证安全性(一)
使用100个线程往list中添加10000条数据,要求保证安全性,并正确记录数量。原创 2020-07-19 10:18:07 · 8356 阅读 · 0 评论 -
架构系列——架构师必备基础:并发、并行与多线程关系
目录前言一、并发1.并发图例2.并发概念二、并行1.并行图例2.并行概念三、多线程是并发吗?1.单处理器的情况2.多处理器的情况前言架构师需要了解并发与并行的区别,为高并发的处理打下基础一、并发1.并发图例上图中,每个黑体代表一个事件发生,各个事件之间的发生时间段互不相交!这是微观上来看不是同时发生的,也就是说同一时刻只能有一个事...原创 2019-12-11 18:34:46 · 6890 阅读 · 3 评论 -
架构系列——架构师必备基础:单体、分布式、集群与冗余的区别
目录1. 单体2. 分布式3.集群4.冗余总结1. 单体是把系统部署到一台服务器上,所有的请求业务都由这台服务器处理。优点:适合小型系统,节省资源缺点:安全性低,一旦有突发压力,整个系统都会面临崩溃2. 分布式把系统的各个功能拆分成不同的小系统,主要是分散能力。优点:资源利用率高,可以承担部分压力,降低耦合度,易于扩展缺点:安全性低,如果其中...原创 2019-12-05 18:24:14 · 8715 阅读 · 0 评论 -
架构系列——架构师必备基础:进程与线程到底有什么关系
目录前言一、进程1.定义2.如何查看进程二、线程1.定义2.如何查看系统线程3.如何查看java线程三、线程与进程关系前言架构师需要了解进程与线程的关系,为多线程的探索打下基础了解CPU:计算机的中央处理器,一般为多核(即:多个同样功能的设备)。认同一个事实:单核CPU,在某个特定的时间点(微观时间上),只能处理一个线程。一、进程1.定义...原创 2019-12-10 18:11:02 · 6639 阅读 · 0 评论 -
架构系列——架构师必备基础:设计模式之单例模式(Singleton Pattern)
目录前言一、单例模式优点1.减少内存开支2.避免状态切换时的不正确二、单例模式的实现与选择1.单例模式的实现2.怎么选择单例模式三、单例模式破解1.1通过反射破解1.2解决方法2.1 通过序列化与反序列化破解2.2解决方法四、单例模式的应用前言单例模式,就是在整个应用程序中都只有一个实例,并且提供一个类方法来供全局调用,在编译期间会一...原创 2019-11-14 18:20:26 · 5318 阅读 · 1 评论 -
架构系列——线程实现方式到底是4种还是2种?(附带线程生命周期)
目录一、线程概念二、实现线程的方式以及区别1. 继承Thread类,重写run方法2.实现Runnable接口,重写run方法3.实现Callable接口,重写call方法4.线程池实现5. 区别6.其他写法三、线程生命周期1. 新建状态(new)2. 就绪状态(runnable)3. 运行状态(running)4. 阻塞状态(block...原创 2019-12-12 19:35:45 · 6558 阅读 · 0 评论 -
架构系列——定时任务中的Timer类使用简析
前言该类位于java.util包下最近项目用到了Timer类(用于定时任务),记录一下要点与心得,方便以后查看一、源码中的几个方法1.经过delay(ms)后开始进行调度一次2.在指定的时间点time上调度一次3.在delay(ms)后开始调度,每次调度完后,最少等待period(ms)后才开始调(算是周期性调度任务)4.跟第3个一样,也是周期性调度任务,...原创 2019-11-19 18:21:30 · 6714 阅读 · 0 评论 -
架构系列——java动态代理中的InvocationHandler和Proxy
前言先赞后看,此生必赚!Java中动态代理的实现,主要是InvocationHandler和Proxy的使用。可以通过以下步骤实现一个动态代理:一、创建正常的接口以及实现类这个挺简单吧,每个开发者都会的!1. 接口:public interface People { public void working();}2. 实现类:public class S...原创 2020-04-13 19:16:19 · 5299 阅读 · 1 评论 -
架构系列——你可能不知道的那些synchronized使用细节
目录前言1、synchronized锁的重入性2、不要使用字符串常量作为锁3、锁对象的改变问题前言synchronized可以为任意对象加锁,用法比较灵活,语法如下(1)修饰代码块,作用于调用的对象;(2)修饰方法,作用于调用的对象;(3)修饰静态方法,作用于所有对象;(4)修饰类,作用于所有对象。synchronized取得的锁都是对象锁,而不是把一段...原创 2020-02-11 21:49:46 · 6916 阅读 · 0 评论 -
架构系列——线程通信的实现方式
目录一、什么是线程通信?二、线程通信的实现1.使用volatile实现线程通信2.使用wait/notify实现线程通信3.使用ReentrantLock创建Condition实现4.通过LockSupport实现线程通信5.使用CountDownLatch实现线程通信一、什么是线程通信?线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能称为一个整...原创 2020-02-13 20:52:13 · 6274 阅读 · 1 评论 -
架构系列——面试必问:volatile的可见性、防止指令重排序以及不能保证原子性的解决方式
java内存模型要了解volatile,首先得了解java内存模型Java内存模型由Java虚拟机规范定义,用来屏蔽各个平台的硬件差异。简单来说:1. 所有变量储存在主内存。2. 每条线程拥有自己的工作内存,其中保存了主内存中线程使用到的变量的副本。3. 线程不能直接读写主内存中的变量,所有操作均在工作内存中完成。线程,主内存,工作内存的交互关系如下图所示volatile...原创 2020-02-12 21:32:42 · 7026 阅读 · 0 评论 -
架构系列——你用的线程是安全的吗?怎么解决?
前言线程安全一般是多线程的安全,首先可以了解一些知识点:架构系列——进程与线程的关系探索架构系列——并发、并行与多线程关系探索一、什么是线程安全当多个线程访问一个类(对象或者方法),被访问者始终都能表现出正确的行为,那么这个类就是线程安全的。二、保证线程安全的三个特性1.原子性提供互斥访问,同一时刻只能有一个线程对数据进行操作(atomic,synchronized...原创 2020-02-10 21:09:48 · 8087 阅读 · 0 评论 -
架构系列——通过ReentrantLock源码分析给对象上锁的原理
目录一、整体结构二、三个内部类1.Sync2.NonfairSync3.FairSync三、主要方法1.lock()方法2.tryLock()方法3.unlock()方法4.lockInterruptibly()方法四、其它1.公平锁与非公平锁的区别2.重入锁的实现原理一、整体结构该类位于java.util.concurrent.lock...原创 2019-12-03 18:11:20 · 6688 阅读 · 0 评论