自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(223)
  • 问答 (6)
  • 收藏
  • 关注

原创 零代码与低代码开发平台

零代码与低代码相关

2024-04-08 22:01:39 198

原创 Dockerfile常用指令以及使用案例

【代码】Dockerfile常用指令以及使用案例。

2024-03-29 21:10:31 293

原创 领域驱动模型之各层实体严格分层处理

上层访问下层服务的时候,需要 converter 为下层所关注的实体对象,禁止一个实体对象贯穿所有层,防止上层代码污染或者侵入下层代码。在领域层定义领域模型中的 Entity 对象、Value 对象,其中 Entity 对象必须是可以通过某个属性唯一标识,而 Value 对象中的属性值是可以随时替换、不具备唯一性。基础设施层:负责将领域层的数据进行持久化工作,封装具体的持久化策略。领域层:只关注当前业务领域内的属性和行为,并封装领域内相关的数据处理逻辑,实现高内聚的设计原则;

2024-01-10 19:17:26 393

原创 多线程的基本原理

线程创建后,底层的处理流程

2022-12-04 20:45:31 327 1

原创 令牌环桶算法的使用案例

import com.google.common.util.concurrent.Monitor;import com.google.common.util.concurrent.RateLimiter;import java.util.concurrent.TimeUnit;import java.util.function.Consumer;/** * @create 2021-02-15 19:21 * @desc 令牌环桶算法的使用案例 **/public class R.

2021-02-16 00:04:47 429 1

原创 RateLimiter 的限流操作---漏桶算法的应用

/** * @create 2021-02-15 11:35 * @desc 请求类 **/public class Request{ private final int data; public Request(int data) { this.data = data; } public int getData() { return data; } @Override public String toSt.

2021-02-15 15:42:44 630 2

原创 RateLimiter--限流--使用案例

import com.google.common.util.concurrent.RateLimiter;import static java.lang.Thread.currentThread;/** * @desc RateLimiter 的使用案例 * * 说明: 想开发一个程序向数据库中写入数据、向中间件服务器中发送消息、对某个 * 远程 TCP 端口发送字节,若这些操作的速率无法被控制,则可能会引起数据库 * 拒绝服务、中间件宕机、TCP 服务端口无法...

2021-02-15 10:31:20 1285 1

原创 Guava之Monitor

1、导入依赖:<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>19.0</version></dependency>2、案例import com.google.common.util.concurrent.Monitor;import st

2021-02-14 23:04:35 270 1

原创 StampedLock----提供“读写分离”,提高并发情况下的数据读取性能

import java.util.concurrent.locks.StampedLock;/** * @desc StampedLock使用案例 * * 补充: 使用 StampedLock 锁不需要额外创建出不同类型的 Lock 就可以很轻松地 * 完成“读写锁”的分离,提高并发情况下的数据读取性能。 **/public class StampedLockExample{ //共享数据 private static int shareData = ...

2021-02-14 19:38:49 190 1

原创 使用 Condition 实现多线程的生产者消费者场景

import java.util.LinkedList;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;import java.util.stream.IntStream;import static java.lang.Thread.currentThread;import sta...

2021-02-14 12:05:58 337 4

原创 Condition使用案例

import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;import static java.util.concurrent.ThreadLocalRandom.current;/** * @desc Cond..

2021-02-11 15:13:33 249

原创 读写锁--ReadWriteLock

import java.util.LinkedList;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;/** * @desc 读写锁的案例 说明1: 若某个线程获取了写锁进行数据写操作,那么此时其他线程对共享资源的读写操作都 ...

2021-02-11 11:25:52 150 1

原创 Phaser---重写Phaser 中的 onAdvance() 方法

import java.util.Date;import java.util.concurrent.Phaser;import java.util.concurrent.TimeUnit;import static java.lang.Thread.currentThread;import static java.util.concurrent.ThreadLocalRandom.current;/** * @desc 重写Phaser 中的 onAdvance() 方法 **/...

2021-01-31 19:51:35 257 2

原创 Phaser----将 Phaser 当作 CyclicBarrier 来使用

import java.util.Date;import java.util.concurrent.Phaser;import java.util.concurrent.TimeUnit;import static java.lang.Thread.currentThread;import static java.util.concurrent.ThreadLocalRandom.current;/** * @desc 将 Phaser 当作 CyclicBarrier 来使用 *..

2021-01-31 14:25:07 174

原创 Phaser ----将 Phaser 当作 CountDownLatch 来使用

import java.util.Date;import java.util.concurrent.Phaser;import java.util.concurrent.TimeUnit;import static java.util.concurrent.ThreadLocalRandom.current;import static java.lang.Thread.currentThread;/** * @desc 将 Phaser 当作 CountDownLatch 来使用 *..

2021-01-31 14:00:43 212

原创 Semaphore 使用案例

import java.util.concurrent.Semaphore;import java.util.concurrent.TimeUnit;import java.util.stream.IntStream;import static java.lang.Thread.currentThread;import static java.util.concurrent.ThreadLocalRandom.current;/** * @desc Semaphore 使用案例 : 模拟...

2021-01-31 10:01:32 252

原创 Exchanger 使用案例

import java.util.concurrent.Exchanger;import java.util.concurrent.TimeUnit;import static java.lang.Thread.currentThread;import static java.util.concurrent.ThreadLocalRandom.current;/** * @desc Exchanger 使用案例 **/public class ExchangerExample{...

2021-01-30 20:46:47 141

原创 CyclicBarrier 的使用案例

import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;import java.util.concurrent.TimeUnit;import java.util.stream.IntStream;import sta..

2021-01-30 15:41:09 200

原创 CountDownLatch 的使用案例

import java.util.Arrays;import java.util.List;import java.util.concurrent.CountDownLatch;import java.util.concurrent.TimeUnit;import java.util.stream.IntStream;import static java.util.stream.Collectors.toList;import static java.util.concurrent.Thr..

2021-01-28 21:11:04 367

原创 基于Java AIO --回调函数CompletionHandler 与 Future

import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.*;import java.net.InetSocketAddress;import java.net.SocketAddress;import java.nio.ByteBuffer;import java.nio.channels.AsynchronousSocketChannel;import java.nio.channels.Comple...

2021-01-24 14:00:08 938 1

原创 基于NIO 实现简易“聊天室”

import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.util.StringUtils;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.InetSocketAddress;import java.nio.ByteBuff..

2021-01-23 17:00:57 251 1

原创 基于JAVA NIO 实现的 Socket 文件传输

import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;import java.nio.

2021-01-20 21:07:22 713

原创 AtomicReference----提供“对象引用”的非阻塞原子性读写操作

import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.AtomicReference;import static java.util.concurrent.ThreadLocalRandom.current;public class AtomicReferenceExample { private static AtomicReference<DebitCard> debitCardA..

2021-01-10 18:50:47 306 2

原创 Callable接口和Future接口【简单使用】

import java.util.concurrent.*;/** * @desc Future使用案例 * * 补充: Future 模式是常见的“异步设计模式”之一。 **/public class FutureTest { public static void main(String[] args) { ExecutorService executorService = Executors.newCachedThreadPool(); /*...

2021-01-04 21:54:21 183

原创 BIO模型---字节流传输

import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.*;import java.net.Socket;public class Client { private static final Logger log = LoggerFactory.getLogger(Client.class); public static void main(String[] args) { .

2021-01-03 19:01:03 165 1

原创 BIO模型---字符流传输

import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;import java.net.UnknownHostException;public class .

2021-01-03 17:59:37 260 3

原创 自定义TryLock 显式锁【仅供参考】

import java.util.concurrent.atomic.AtomicBoolean;public class TryLock { /** * 在 TryLock 的内部,我们借助于 AtomicBoolean 的布尔原子性操作方法 */ private final AtomicBoolean ab = new AtomicBoolean(false); /** * 线程保险箱,用于存放与线程上下文关联的数据副本 */ .

2021-01-02 16:34:56 116

原创 线程间交换数据的 Exchanger

1、》》代码案例:package multiThread.art;import java.util.concurrent.Exchanger;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * 如果两个线程有一个没有执行 exchange() 方法 , 则会一直等待, 如果担心有特殊情况发生, * 避免一直等待,可以使用 " public V excha.

2020-09-09 10:36:39 125

原创 Semaphore 用来做“流量控制”

1、代码案例:package multiThread.art;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;/** * 虽然有 30 个线程在执行,但是只允许 10 个线程并发执行。 * * Semaphore 的构造方法 Semaphore(int permits) 接受一个整型的数

2020-09-09 09:44:15 219

原创 CyclicBarrier 的应用场景

1、》》代码案例:package multiThread.art;import java.util.Map;import java.util.concurrent.*;/** * 构造函数: CyclicBarrier(int parties, Runnable barrierAction) * * CyclicBarrier 的应用场景: * CyclicBarrier 可以用于多线程计算数据,最后合并计算结果的场景。例如:用一个 Excel * 保存了用户所.

2020-09-09 09:16:50 273

原创 简单使用 CyclicBarrier --- 同步屏障

1、》》代码案例:package multiThread.art;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;public class CyclicBarrierTest { /** * CyclicBarrier 默认的构造方法是 CyclicBarrier(int parties) , 其参数表示屏障拦截的线程数量, .

2020-09-08 17:48:55 115

原创 简单使用 CountDownLatch --- 计数器

1、package multiThread.art;import java.util.concurrent.CountDownLatch;public class CountDownLatchTest { /** * CountDownLatch 的构造函数接收一个 int 类型的参数作为“计数器”, * 如果你想等待 N 个点完成, 这里就传入 N * 备注1: 这里所说的 N 点, 可以是 N 个线程,也可以是 1 个线程里的 N 个执行步骤。

2020-09-08 17:20:05 173

原创 简单使用 Fork/Join 框架

1、package multiThread.art;import java.util.concurrent.ExecutionException;import java.util.concurrent.ForkJoinPool;import java.util.concurrent.ForkJoinTask;import java.util.concurrent.RecursiveTask;/** * 需求是: 计算 1+2+3+4 的结果 * 分割上面的计算任务,并希望每个子任务最

2020-09-08 07:09:02 131

原创 借助“有界队列”理解 Condition 的使用方式

1、package multiThread.art;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 借助“有界队列”理解 Condition 的使用方式 * * 有界队列:是一种特殊的队列,当队列为空的时候,队列的获取操作将会阻塞获取线程, *

2020-09-04 15:19:10 164

原创 Lock + Condition 的简单使用---实现“等待/通知”

1、package multiThread.art;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class ConditionUseCase { Lock lock = new ReentrantLock(); Condition conditi

2020-09-04 14:34:45 142

原创 简单案例--读写锁 ReentrantReadWriteLock

1、package multiThread.art;import java.util.HashMap;import java.util.Map;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantReadWriteLock;public class Cache { static Map<String , Object> map = new HashMap&

2020-09-03 15:15:22 183

原创 自定义“独占式”同步器【继承AQS】,并且实现 Lock 接口

1、package multiThread.art;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.AbstractQueuedSynchronizer;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;/** * 自定义“独占式”同步器,并且实现 Lock 接口 */pu

2020-09-01 23:10:27 203

原创 一个基于线程池技术的简单web 服务器---简单的demo

1、package multiThread.art;public interface ThreadPool<HttpRequestHandler> { // 执行一个HttpRequestHandler ,这个HttpRequestHandler需要实现Runnable void execute(HttpRequestHandler httpRequestHandler); // 关闭线程池 void shutdown(); // 增加工作者线程

2020-09-01 20:54:51 177

原创 线程的状态demo

1、代码package multiThread.art;import java.util.concurrent.TimeUnit;public class SleepUtils { public static final void second(long seconds){ try { TimeUnit.SECONDS.sleep(seconds); } catch (InterruptedException e) {

2020-08-26 09:51:00 101

原创 获取java 的线程管理器,查看所有线程的相关信息

1、代码案例:package multiThread.art;import java.lang.management.ManagementFactory;import java.lang.management.ThreadInfo;import java.lang.management.ThreadMXBean;public class MultiThread { public static void main(String[] args) { // 获取 jav

2020-08-25 17:18:30 405

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除