自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mysql-Innodb锁相关内容

例如:SELECT …FOR SHARE设置一个IS锁, SELECT …FOR UPDATE设置一个IX锁。,指示事务稍后需要对表中的行使用哪种类型的锁(共享S锁或者排他X锁)。意向共享锁(IS锁):IS 表示事务打算在表中的个别行上设置 S 锁;意向排他锁(IX锁):IX 表示事务打算在表中的个别行上设置 X 锁;1) InnoDB 支持多粒度的锁定,允许。为了实现多粒度锁定,使用了意向锁。5)表级锁类型兼容如下。

2024-10-22 11:54:59 392

原创 序列化--jackson与hutool对比

【代码】序列化--jackson与hutool对比。

2024-10-10 14:04:58 352

原创 alpine镜像简介

Alpine Linux 是一个轻量级的 Linux 发行版,因其小巧、安全和高效而广受欢迎,尤其是在容器化环境中(如 Docker)。Alpine 镜像指的是基于 Alpine Linux 制作的容器镜像。:Alpine 镜像仅几 MB 大小,远小于其他常见的 Linux 镜像(如 Ubuntu、Debian 等)。这有助于节省存储空间,加快容器下载和部署速度。:Alpine Linux 默认采用了 “musl libc” 和 “busybox”,这使得系统组件最小化,从而减少了可能的安全漏洞。

2024-10-06 20:06:13 584

原创 实现org.springframework.beans.factory.InitializingBean 接口或者使用@PostConstruct注解--初始化bean

3)调用 afterPropertiesSet() :如果Bean 实现了 InitializingBean 接口,Spring会调用 afterPropertiesSet() 方法,允许你在依赖注入完成后执行一些自定义的初始化调用。InitializingBean 的 afterPropertiesSet() 方法的执行时机是在spring完成依赖注入后,且在 Bean 正式投入使用之前。2)依赖注入:Spring注入所有必要的依赖(通过构造器、Setter方法等)

2024-09-27 19:17:28 496 1

原创 Docker 容器的网络实现

标准的 Docker 支持以下 4 类网络模式:1)host 模式:使用 --net=host 指定2)container 模式:使用–net=container:NAME_or_ID 指定3)none模式:使用 --net=none 指定4)bridge 模式:使用 --net=bridge 指定,为默认设置。

2024-05-06 22:59:41 700 1

原创 Docker网络基础

Docker 本身的技术依赖于近年来 Linux 内核虚拟化技术的发展,Docker 对 Linux 内核的特性有很强的依赖。Docker 使用到的与 Linux 网络有关的主要技术有:网络命名空间、veth 设备对、网桥、ipatables 、路由。

2024-05-06 22:07:29 697 3

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

零代码与低代码相关

2024-04-08 22:01:39 319

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

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

2024-03-29 21:10:31 602

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

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

2024-01-10 19:17:26 530

原创 多线程的基本原理

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

2022-12-04 20:45:31 361

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

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 489 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 709 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 1414 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 321 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 226 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 416 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 314

原创 读写锁--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 190 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 319 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 213

原创 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 269

原创 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 314

原创 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 222

原创 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 234

原创 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 429

原创 基于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 1052 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 297 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 1453

原创 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 358 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 221

原创 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 223 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 298 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 148

原创 线程间交换数据的 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 154

原创 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 266

原创 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 327

原创 简单使用 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 158

原创 简单使用 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 229

原创 简单使用 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 180

原创 借助“有界队列”理解 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 215

空空如也

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

TA关注的人

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