![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 86
打工人很惨
这个作者很懒,什么都没留下…
展开
-
SpringBoot 面试题
1. SpringBoot基础1.1 什么是SpringBoot?用来简化Spring应用的初始搭建以及开发过程,使用特定的方式来进行配置 创建独立的Spring引用程序main方法运行 嵌入的tomcat无需部署war文件 简化maven配置 自动配置Spring添加对应的功能starter自动化配置SpringBoot来简化Spring应用开发,约定大于配置,去繁化简1.2 SpringBoot有哪些优点?独立运行 Spring Boot 而且内嵌了各种 servlet 容转载 2021-12-22 14:39:34 · 213 阅读 · 0 评论 -
TCP、UDP、Socket、HTTP网络编程面试题
第一场:面试官:你说一下TCP的三次握手 我:第一次Client将SYN置1......、第二次Server收........、 第三次........ 面试官:很难背吧? 我:......是啊,很难,要不我在和你说说四次挥手? 面试官:别了别了回去等通知吧...... 我:"......"第二场:心里憋了一万个草泥马来到的第二家.... 面试官:你说一下TCP的三次握手 我(心里在想,还来?):没什么好说的,就是为了保持一次网络通信交互正常 面试官:你能说的清楚一点吗? 我:.转载 2021-12-21 14:35:32 · 388 阅读 · 0 评论 -
netty 学习
学习网址:Netty 异步和数据驱动_w3cschool概览:Netty 是什么?为什么要用 Netty?Netty 应用场景了解么?Netty 核心组件有哪些?分别有什么作用?EventloopGroup 了解么?和 EventLoop 啥关系?Bootstrap 和 ServerBootstrap 了解么?NioEventLoopGroup 默认的构造函数会起多少线程?Netty 线程模型了解么?Netty 服务端和客户端的启动过程了解么?Netty 长连接、心跳机制了解么?Netty 的零转载 2021-12-20 14:33:37 · 111 阅读 · 0 评论 -
Java中的各种锁的分类
一. synchronized在 JDK 1.6 之前,synchronized 是重量级锁,效率低下。从 JDK 1.6 开始,synchronized 做了很多优化,如偏向锁、轻量级锁、自旋锁、适应性自旋锁、锁消除、锁粗化等技术来减少锁操作的开销。synchronized 同步锁一共包含四种状态:无锁、偏向锁、轻量级锁、重量级锁,它会随着竞争情况逐渐升级。synchronized 同步锁可以升级但是不可以降级,目的是为了提高获取锁和释放锁的效率。synchronized 的底层原理s转载 2021-11-19 15:32:26 · 567 阅读 · 0 评论 -
分布式全局唯一ID
每一次HTTP请求,数据库的事务的执行,我们追踪代码执行的过程中,需要一个唯一值和这些业务操作相关联,对于单机的系统,可以用数据库的自增ID或者时间戳加一个在本机递增值,即可实现唯一值。但在分布式,又该如何实现唯一性的ID分布式ID的特性 数据库自增的ID Redis分布式ID Zookeeper分布式ID 全局唯一UUID的优缺点 Twitter的雪花算法生成分布式ID关注公众号,一起交流,微信搜一搜: 潜行前行github地址,感谢star分布式ID的特性全局唯一性,必须性转载 2021-11-16 17:00:07 · 105 阅读 · 0 评论 -
跳跃表的原理和实现
一、高效查找算法我们在实际开发中经常会有在一堆数据中查找一个指定数据的需求,而常用的支持高效查找算法的实现方式有以下几种:有序数组:这种方式的存储结构,优点是支持数据的随机访问,并且可以采用二分查找算法降低查找操作的复杂度。缺点同样很明显,插入和删除数据时,为了保持元素的有序性,需要进行大量的移动数据的操作。 二叉查找树:如果需要一个既支持高效的二分查找算法,又能快速的进行插入和删除操作的数据结构,那首先就是二叉查找树莫属了。缺点是在某些极端情况下,二叉查找树有可能变成一个线性链表。 平衡二叉树转载 2021-11-16 16:45:22 · 722 阅读 · 0 评论 -
面试题:集合篇
List 数组 Vector 向量 Stack 栈 Map 映射字典 Set 集合 Queue 队列 Deque 双向队列关注公众号,一起交流,微信搜一搜: 潜行前行一般队列的通用方法操作方法 抛出异常 阻塞线程 返回特殊值 超时退出 插入元素 add(e) put(e) offer(e) offer(e, timeout, unit) 移除元素 remove() take() poll() pull(tim转载 2021-11-16 14:53:23 · 89 阅读 · 0 评论 -
AQS解析与实战
前段时间在面试,发现面试官都有问到同步器AQS的相关问题。AQS为Java中几乎所有的锁和同步器提供一个基础框架,派生出如ReentrantLock、Semaphore、CountDownLatch等AQS全家桶。本文基于AQS原理的几个核心点,谈谈对AbstractQueuedSynchronizer的理解,并实现一个自定义同步器。AQS原理面试题的核心回答要点state 状态的维护。 CLH队列 ConditionObject通知 模板方法设计模式 独占与共享模式。 自定义同步器。转载 2021-11-15 17:52:51 · 444 阅读 · 1 评论 -
Java线程池解析
掌握线程池是后端程序员的基本要求,相信大家求职面试过程中,几乎都会被问到有关于线程池的问题。我在网上搜集了几道经典的线程池面试题,并以此为切入点,谈谈我对线程池的理解。如果有哪里理解不正确,非常希望大家指出,接下来大家一起分析学习吧。github 地址github.com/whx123/Java…经典面试题面试问题1:Java的线程池说一下,各个参数的作用,如何进行的? 面试问题2:按线程池内部机制,当提交新任务时,有哪些异常要考虑。 面试问题3:线程池都有哪几种工作队列? 面试问转载 2021-11-15 17:48:07 · 80 阅读 · 0 评论 -
RocketMQ相关流程图/原理图
整理了一些RocketMQ相关流程图/原理图,做一下笔记,大家一起学习。RocketMQ是什么是一个队列模型的消息中间件,具有高性能、高可靠、高实时、分布式特点。 Producer、Consumer、队列都可以分布式。 Producer 向一些队列轮流发送消息,队列集合称为 Topic,Consumer 如果做广播消费,则一个 consumer 实例消费这个 Topic 对应的所有队列,如果做集群消费,则多个 Consumer 实例平均消费这个 topic 对应的队列集合。 .转载 2021-11-15 17:13:50 · 743 阅读 · 0 评论 -
LinkedBlockingQueue阻塞队列解析
整理了阻塞队列LinkedBlockingQueue的学习笔记,希望对大家有帮助。有哪里不正确,欢迎指出,感谢。LinkedBlockingQueue的概述LinkedBlockingQueue的继承体系图我们先来看看LinkedBlockingQueue的继承体系。使用IntelliJ IDEA查看类的继承关系图形蓝色实线箭头是指类继承关系 绿色箭头实线箭头是指接口继承关系 绿色虚线箭头是指接口实现关系。LinkedBlockingQueue实现了序列化接口 Se.转载 2021-11-15 17:10:36 · 1183 阅读 · 1 评论 -
Java程序员必备:异常的十个关键知识点
一. 异常是什么异常是指阻止当前方法或作用域继续执行的问题。比如你读取的文件不存在,数组越界,进行除法时,除数为0等都会导致异常。一个文件找不到的异常:public class TestException { public static void main(String[] args) throws IOException { InputStream is = new FileInputStream("jaywei.txt"); int b;转载 2021-11-15 15:22:33 · 124 阅读 · 0 评论 -
HashMap源码中这些常量的设计目的
之前周会技术分享,一位同事讲解了HashMap的源码,涉及到一些常量设计的目的,本文将谈谈这些常量为何这样设计,希望大家有所收获。HashMap默认初始化大小为什么是1 << 4(16)/** * The default initial capacity - MUST be a power of two. */static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; 复制代码HashMap默认初始化大小为什么是16,转载 2021-11-12 17:50:16 · 114 阅读 · 0 评论 -
分布式事务 XA 模式
基于 XA 协议实现一个分布式事务处理框架XA 协议是由 X/Open 组织提出的分布式事务处理规范,主要定义了事务管理器 TM 和局部资源管理器 RM 之间的接口。目前主流的数据库,比如 oracle、DB2 都是支持 XA 协议的。mysql 从 5.0 版本开始,innoDB 存储引擎已经支持 XA 协议,今天的源码介绍实验环境使用的是 mysql 数据库。两阶段提交分布式事务的两阶段提交是把整个事务提交分为 prepare 和 commit 两个阶段。以电商系统为例,分布式系统中转载 2021-11-12 16:43:44 · 338 阅读 · 0 评论 -
对比7种分布式事务方案,还是偏爱阿里开源的Seata(原理+实战)
这篇文章主要介绍一些目前主流的几种分布式解决方案以及阿里开源的一站式分布式解决方案Seata。文章有点长,耐心看完,看完你还不懂分布式事务,欢迎来捶我...............文章目录如下:什么是分布式事务?分布式对应的是单体架构,互联网早起单体架构是非常流行的,好像是一个家族企业,大家在一个家里劳作,单体架构如下图:但是随着业务的复杂度提高,大家族人手不够,此时不得不招人,这样逐渐演变出了分布式服务,互相协作,每个服务负责不同的业务,架构如下图:因此需要服务与服务之转载 2021-11-12 14:57:40 · 3103 阅读 · 1 评论 -
Java代码是怎么运行的
作为一名Java程序员,我们需要知道Java代码是怎么运行的。最近复习了深入理解Java虚拟机这本书,做了一下笔记,希望对大家有帮助,如果有不正确的地方,欢迎提出,感激不尽。java 代码运行主要流程本文主要讲解流程如下:java源文件编译为class字节码 类加载器把字节码加载到虚拟机的方法区。 运行时创建对象 方法调用,执行引擎解释为机器码 CPU执行指令 多线程切换上下文编译我们都知道,java代码是运行在Java虚拟机上的。但是java是一门面向对象的高.转载 2021-11-12 10:18:53 · 2008 阅读 · 0 评论 -
序列化全方位解析
什么是Java序列化? 为什么需要序列化? 序列化用途 Java序列化常用API 序列化的使用 序列化底层 日常开发序列化的注意点 序列化常见面试题一、什么是Java序列化?序列化:把Java对象转换为字节序列的过程 反序列:把字节序列恢复为Java对象的过程 二、为什么需要序列化?Java对象是运行在JVM的堆内存中的,如果JVM停止后,它的生命也就戛然而止。如果想在JVM停止后,把这些对象保存到磁盘或者通过网络传输到另一远程机器,怎么办呢?磁盘这些硬件可.转载 2021-11-12 09:55:19 · 275 阅读 · 0 评论 -
分布式事务基础篇
前言最近看了几篇有关于分布式事务的博文,做一下笔记。哈哈~github地址github.com/whx123/Java…数据库事务数据库事务(简称:事务),是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。数据库事务的几个典型特性:原子性(Atomicity )、一致性( Consistency )、隔离性( Isolation)和持久性(Durabilily),简称就是AC.转载 2021-11-11 19:20:54 · 152 阅读 · 0 评论 -
如何设计一个安全对外的接口?加签验签了解一下
密码学相关概念 加签验签概念 为什么需要加签、验签 加密算法简介 加签验签相关API 加签验签代码实现 公众号:捡田螺的小男孩本文已经收录到个人github,文章有用的话,可以给个star呀:github.com/whx123/Java…密码学相关概念明文、密文、密钥、加密、解密明文:指没有经过加密的信息/数据。 密文:明文被加密算法加密之后,会变成密文,以确保数据安全。 密钥:是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对转载 2021-11-11 17:24:11 · 465 阅读 · 0 评论 -
异步编程利器:CompletableFuture详解 |Java 开发实战
我们异步执行一个任务时,一般是用线程池Executor去创建。如果不需要有返回值, 任务实现Runnable接口;如果需要有返回值,任务实现Callable接口,调用Executor的submit方法,再使用Future获取即可。如果多个线程存在依赖组合的话,我们怎么处理呢?可使用同步组件CountDownLatch、CyclicBarrier等,但是比较麻烦。其实有简单的方法,就是用CompeletableFuture。最近刚好使用CompeletableFuture优化了项目中的代码,所以跟大家一起学习转载 2021-11-08 17:01:58 · 479 阅读 · 0 评论 -
@PostConstruct详解
定义: @PostContruct是Java自带的注解,在方法上加该注解会在项目启动的时候执行该方法,也可以理解为在spring容器初始化的时候执行该方法。 从Java EE5规范开始,Servlet中增加了两个影响Servlet生命周期的注解,@PostConstruct和@PreDestroy,这两个注解被用来修饰一个非静态的void()方法。用法:@PostConstructpublic void someMethod(){}或者public @PostCon...转载 2021-11-08 09:53:35 · 184 阅读 · 0 评论 -
日志打印的15个好建议
1. 选择恰当的日志级别常见的日志级别有5种,分别是error、warn、info、debug、trace。日常开发中,我们需要选择恰当的日志级别,不要反手就是打印info哈~error:错误日志,指比较严重的错误,对正常业务有影响,需要运维配置监控的; warn:警告日志,一般的错误,对业务影响不大,但是需要开发关注; info:信息日志,记录排查问题的关键信息,如调用时间、出参入参等等; debug:用于开发DEBUG的,关键逻辑里面的运行时数据; trace:最详细的信息,一般这些转载 2021-11-05 21:43:49 · 140 阅读 · 0 评论 -
聊聊工作中使用了哪些设计模式
平时我们写代码呢,多数情况都是流水线式写代码,基本就可以实现业务逻辑了。如何在写代码中找到乐趣呢,我觉得,最好的方式就是:使用设计模式优化自己的业务代码。今天跟大家聊聊日常工作中,我都使用过哪些设计模式。干货公众号:捡田螺的小男孩1.策略模式1.1 业务场景假设有这样的业务场景,大数据系统把文件推送过来,根据不同类型采取不同的解析方式。多数的小伙伴就会写出以下的代码:if(type=="A"){ //按照A格式解析 }else if(type=="B"){ //按B转载 2021-11-05 21:35:36 · 101 阅读 · 0 评论 -
TCP协议是大厂面试必问的知识点。整理了15道非常经典的TCP面试题,希望大家都找到理想的offer呀
TCP协议是大厂面试必问的知识点。整理了15道非常经典的TCP面试题,希望大家都找到理想的offer呀公众号:捡田螺的小男孩 github地址,感谢每一颗star1. 讲下TCP三次握手流程开始客户端和服务器都处于CLOSED状态,然后服务端开始监听某个端口,进入LISTEN状态第一次握手(SYN=1, seq=x),发送完毕后,客户端进入 SYN_SEND 状态 第二次握手(SYN=1, ACK=1, seq=y, ACKnum=x+1), 发送完毕后,服务器端进入 SYN_RC转载 2021-11-05 21:16:31 · 172 阅读 · 1 评论 -
JVM垃圾回收机制全面分析
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。.转载 2021-11-05 14:57:17 · 309 阅读 · 0 评论 -
Redis Cluster为什么有16384个槽?
Redis 集群并没有使用一致性hash,而是引入了哈希槽的概念。Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分hash槽。但为什么哈希槽的数量是16384(2^14)个呢,这个问题在github上有人提过,作者也给出了解答(点击查看),下面我们来简单分析一下。正文Redis Cluster的工作原理:我们让两个redis节点之间进行通信的时候,需要在客户端执行下面一个命令127.0.0.1:7000>clus转载 2021-11-03 10:53:58 · 363 阅读 · 0 评论 -
无锁环形缓冲RingBuffer的原理及Java实现
在多线程环境下为了保证线程安全,往往需要加锁,例如读写锁可以保证读写互斥,读读不互斥。有没有一种数据结构能够实现无锁的线程安全呢?答案就是使用RingBuffer循环队列。在Disruptor项目中就运用到了RingBuffer。RingBuffer的基本原理如下:在RingBuffer中设置了两个指针,head和tail。head指向下一次读的位置,tail指向的是下一次写的位置。RingBuffer可用一个数组进行存储,数组内元素的内存地址是连续的,这是对CPU缓存友好的——也就是说,在硬件级别转载 2021-11-03 10:46:36 · 1775 阅读 · 0 评论 -
HashMap源码解析JDK1.8
先看看hashMap在jdk 1.8的结构,如下图,用的是数组+链表+红黑树的结构,也叫哈希桶,在jdk 1.8之前都是数组+链表的结构,因为在链表的查询操作都是O(N)的时间复杂度,而且hashMap中查询操作也是占了很大比例的,如果当节点数量多,转换为红黑树结构,那么将会提高很大的效率,因为红黑树结构中,增删改查都是O(log n)。 哈希桶就是数组里面的一个位置中所占所有数据,例如,下图中,绿色节点所占的该数组的位置,以及它连接的链表,整体为一个哈希桶。 hash...转载 2021-11-01 20:29:08 · 119 阅读 · 0 评论 -
常见面试题:为什么HashMap不是线程安全的呢?(JDK1.7和JDK1.8角度)(看完你就能和面试官笑谈人生了)
常见面试题:为什么HashMap不是线程安全的呢?(JDK1.7和JDK1.8角度)(看完你就能和面试官笑谈人生了)为什么HashMap不是线程安全的呢?我们在面试的时候,总是知道HashMap是线程不安全,如果你要保证线程安全的话就是用ConcurrentHashMap。但是我们好像从来没怎么没从HashMap的底层原理上去分析HashMap为什么不是线程安全的。那现在就一起来分析一下,为什么HashMap不是线程安全的吧!!!首先,先从整体上说一说HashMap吧。HashMap的线程不安全转载 2021-11-01 20:15:53 · 257 阅读 · 0 评论 -
ribbon负载均衡算法
ribbon负载均衡算法IRule是以下七种负载均衡算法的父接口说明:RoundRobinRule: 默认轮询的方式RandomRule: 随机方式WeightedResponseTimeRule: 根据响应时间来分配权重的方式,响应的越快,分配的值越大。BestAvailableRule: 选择并发量最小的方式RetryRule: 在一个配置时间段内当选择server不成功,则一直尝试使用subRule的方式选择一个可用的serverZoneAvoidanc..转载 2021-10-19 22:13:19 · 491 阅读 · 0 评论 -
Java基础面试(核心重点)
一、J2SE部分Java基础:1. 基本数据类型的大小,以及他们的封装类。byte(Byte) 1 ,short(Short) 2 ,int(Integer) 4 ,long(Long) 8 ,float(Float) 4 ,double(Double) 8,boolean(Boolean),char(Character)22. Switch能否用string做参数?switch语句中的变量类型可以使byte,short,int,char。从jdk1.7后可以使用String类型,是通过转载 2021-10-14 11:30:51 · 401 阅读 · 0 评论 -
RocketMQ介绍
RocketMQ是一个分布式开放消息中间件,底层基于队列模型来实现消息收发功能。RocketMQ集群中包含4个模块:Namesrv, Broker, Producer, Consumer。Namesrv: 存储当前集群所有Brokers信息、Topic跟Broker的对应关系。Broker: 集群最核心模块,主要负责Topic消息存储、消费者的消费位点管理(消费进度)。Producer: 消息生产者,每个生产者都有一个ID(编号),多个生产者实例可以共用同一个ID。同一个ID下所有实例组成一个生产者转载 2021-10-12 23:10:41 · 101 阅读 · 0 评论 -
Kafka、RabbitMQ、RocketMQ等消息中间件的介绍和对比
前言在分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦。现在开源的消息中间件有很多,前段时间产品 RocketMQ (MetaQ的内核) 也顺利开源,得到大家的关注。概念MQ简介MQ,Message queue,消息队列,就是指保存消息的一个容器。具体的定义这里就不类似于数据库、缓存等,用来保存数据的。当然,与数据库、缓存等产品比较,也有自己一些特点,具体的特点后文会做详细的介绍。现在常用的MQ组件有ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ、Met转载 2021-10-12 22:50:53 · 334 阅读 · 0 评论 -
ElasticSearch和solr的差别
ElasticSearch和solr的差别Elasticsearch简介Elasticsearch是一个实时分布式搜索和分析引擎。它让你以前所未有的速度处理大数据成为可能。它用于全文搜索、结构化搜索、分析以及将这三者混合使用:维基百科使用Elasticsearch提供全文搜索并高亮关键字,以及输入实时搜索(search-asyou-type)和搜索纠错(did-you-mean)等搜索建议功能。英国卫报使用Elasticsearch结合用户日志和社交网络数据提供给他们的编辑以实时的反馈,以转载 2021-10-11 20:09:36 · 111 阅读 · 0 评论 -
Java学习内容
互联网国外新闻网站原创 2021-10-11 12:43:46 · 48 阅读 · 0 评论 -
PO、DO、TO、DTO都是什么?
经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析。得出的主要结论是:在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应于数据库中存储的数据(数据表),DTO对应于除二者之外需要进行传递的数据。一、实体类百度百科中对于实体类的定义如下:实体类的主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关。根据以上定义,我们可以了解到,实体类有两方面内容,存储数转载 2021-10-11 11:43:44 · 1764 阅读 · 0 评论 -
Java内存模型(JMM)总结
Java内存模型(JMM)我们常说的JVM内存模式指的是JVM的内存分区;而Java内存模式是一种虚拟机规范。Java虚拟机规范中定义了Java内存模型(Java Memory Model,JMM),用于屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果,JMM规范了Java虚拟机与计算机内存是如何协同工作的:规定了一个线程如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。原始的Java内存模型存在一些不足,因此J转载 2021-09-27 20:37:29 · 132 阅读 · 0 评论 -
菜鸟积分系统稳定性建设 - 分库分表&百亿级数据迁移
3 人赞同了该文章简介:拆库&数据迁移说白了,考验的不是一个人的技术功底,而是一个人干活的细致程度,以及抗压能力。无论在哪个公司,数据库迁移的机会都不会太多,因此,我也是非常珍惜这次历练,用阿里的一句老话来说就是 “因人成事,借事修人”。写这篇文章的目的主要是自己进行一个总结,也希望能给需要的同学们一些参考。作者 | 星花来源 | 阿里技术公众号一 前言拆库&数据迁移说白了,考验的不是一个人的技术功底,而是一个人干活的细致程度,以及抗压能力。无论在哪个公司,数据转载 2021-09-27 12:07:10 · 205 阅读 · 0 评论 -
GC参数解析 UseSerialGC、UseParNewGC、UseParallelGC、UseConcMarkSweepGC
概述因为为java语言提供支持的虚拟机有很多,不同虚拟机提供的垃圾收集器差别很大。这里讨论的收集器基于JDK1.7 Update14之后的HotSpot虚拟机。这个虚拟机包含的所有垃圾收集器如下图参数解析XX:+UseSerialGC使用串行回收器进行回收,这个参数会使新生代和老年代都使用串行回收器,新生代使用复制算法,老年代使用标记-整理算法。Serial收集器是最基本、历史最悠久的收集器,它是一个单线程收集器。一旦回收器开始运行时,整个系统都要停止。Client模式下默认开启,...转载 2021-09-26 17:48:20 · 523 阅读 · 0 评论 -
Java并发编程之Master-Worker模式
Masker-Worker的核心思想是有两类进程(Masker进程和Worker进程)协作完成任务。Masker进程负责接收和分配任务,Worker负责处理子任务,当各个Worker子进程完成任务后会将结果返回给Masker,由Masker做归纳和总结。其好处在于能将一个大任务分解成若干个小任务,并行执行,从而提供系统的吞吐量。 这个模型主要用于主线程可以分为若干子线程的情形,各子线程之间不会相互影响。举个例子,这个例子是创...转载 2021-09-25 19:59:34 · 328 阅读 · 0 评论