自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 mac 的JDK版本切换

在 Mac 上实现 JDK 8 和 JDK 11 之间的切换,可以使用。这样,每次进入该项目目录时,都会自动使用 JDK 11。这样,每次打开终端时都会使用指定的 JDK 版本。如果你经常需要在多个 JDK 之间切换,建议使用。,它可以在不同项目中自动切换 JDK 版本。如果你要在不同项目中自动切换 JDK,工具来管理多个 Java 版本。语句添加到 ~/.zshrc。如果你只是偶尔切换 JDK,命令手动切换,或者使用。

2025-03-13 14:11:53 441

原创 docker网络模式

Docker 提供的几种网络模式主要用于处理容器与容器之间、容器与宿主机之间、以及容器与外部网络之间的通信。它为容器提供一个虚拟的私有网络,通过这个网络,容器可以与宿主机和其他容器进行通信。模式允许容器直接使用宿主机的网络堆栈。在这种模式下,容器不会得到单独的网络命名空间,而是与宿主机共享相同的网络接口。模式允许一个容器共享另一个容器的网络堆栈。这样,这两个容器会拥有相同的网络命名空间,可以共享网络接口和 IP 地址。模式表示容器没有网络连接,也无法与外部或宿主机进行通信。容器不会被分配任何网络接口。

2025-03-11 16:42:42 730

原创 说明一下AIO与NIO的区别

都是 Java 提供的 I/O 处理模式,主要用于提高高并发场景下的 I/O 处理能力。在 I/O 操作完成后会主动通知应用程序,相比 NIO,更加节省线程资源。处理多个连接,减少线程占用。,主要依赖 Selector。在 Java 领域,

2025-03-10 17:38:27 319

原创 并发编程之安全发布对象

在 Java 里,每个线程都有自己的调用栈,局部变量存储在栈帧(stack frame)中,因此局部变量不会被其他线程访问。的策略,主要用于确保数据仅在单个线程的调用栈(stack)中被访问,从而避免并发问题。被赋值给了类的成员变量,而成员变量是可以被多个线程共享的,这样就违反了堆栈封闭原则。如果对象的引用逃出了方法作用域,那么它就可能被多个线程共享,导致线程安全问题。这种策略在并发编程中非常有用,因为它避免了加锁的开销,提高了程序的效率。,导致未初始化或部分初始化的对象被访问,引发。

2025-03-05 15:49:20 1018

原创 Java 中的适配器模式(Adapter Pattern)

用于在两个不兼容的接口之间建立桥梁,使它们可以协同工作。它通常用于让已有的类与新接口兼容,而无需修改原有代码。适用于接口中有多个方法,但客户端只需实现其中一部分的情况。适配器模式(Adapter Pattern)是一种。Java 适配器模式的典型应用包括。等,是一种非常常见的设计模式。

2025-03-03 11:01:42 437

原创 Spring 主要用到的设计模式

让子类重写关键步骤,而公共部分由父类实现。来创建和管理 Bean 对象,避免手动。Spring 允许 Bean 以。,用于在方法执行前后插入逻辑,如。来统一不同接口,保持代码灵活性。来动态选择不同的算法或实现方案。Spring 框架使用了多种。Spring 事件机制基于。,提高性能并减少资源消耗。来实现其核心功能,如。都会返回一个新的实例。

2025-03-03 10:45:50 504

原创 常见的高并发解决方案

适用于大规模 key-value 读写,适用于高吞吐的场景。(单个热点 key 失效后,短时间内大量请求打到数据库)(查询一个不存在的 key,导致数据库压力大)(大量缓存同时失效,导致数据库压力暴增)

2025-03-03 10:43:01 763

原创 为什么单机锁不适用于微服务高并发

作为分布式锁的存储,支持跨实例同步,适合高并发场景。

2025-03-03 10:38:04 387

原创 RocketMQ中的Pair类

【代码】RocketMQ中的Pair类。

2025-01-10 10:04:18 115

原创 好用的AI工具

AI 文本工具: ChatGPT:由 OpenAI 开发,是非常知名的聊天机器人。可以进行自然对话、自动生成文章、代码、策划方案等各种文本内容,经过多轮迭代,功能强大,对自然语言的理解和生成能力优秀,但使用需要一定的技术基础和英文能力,高级功能需订阅。 Claude:由 Anthropic 公司开发,能进行日常的对话问答,Claude 2.0 支持上传文件并进行相关操作,如文件分析、总结等,文件格式支持 PDF、CSV、txt 等,是提高工作效率的利器。 New Bing:微软推出的新一代搜索引擎

2024-10-21 11:49:02 461 1

原创 我们一般如何应对缓存雪崩以及穿透问题吗?

了解什么是Redis的雪崩和穿透吗?Redis崩溃之后会怎么样?系统该如何应对这种情况?如何处理Redis的穿透?3.2 缓存雪崩的解决方案。缓存穿透现象以及解决方案。

2024-08-04 12:38:55 239

原创 订单扣减库存,Redis实现限流算法

- 每次请求都将当前时间,精确到秒作为 key 放入 Redis 中,超时时间设置为 2s, Redis 将该 key 的值进行自增。-- 写入 Redis 的操作用 Lua 脚本来完成,利用 Redis 的单线程机制可以保证每个 Redis 请求的原子性。log.info("成功获取令牌");-- 没有达到阈值 value + 1。// 获取 jedis 实例。-- 当达到阈值时返回错误,表示请求被限流。// 解析 Lua 文件。-- 达到限流大小 返回。-- 获取当前流量大小。-- 资源唯一标志位。

2024-07-31 14:06:52 383

转载 RocketMQ原理

阻塞队列里存放的就是PullRequest对象,当Consumer实例上线后,会做一次负载均衡,从众多MessageQueue中给自己完成分配,当有新的MessageQueue被分配给自己,就会创建PullRequest对象提交到阻塞队列,然后PullMessageService就会开始拉取消息,在拉取完成的回调函数中,不管有没有拉取到新的消息,在不触发流控的情况下,都会一直拉取。索引长度为20个字节,记录了消息在CommitLog文件里的偏移量,消息长度,和消息Tag的哈希值。

2024-06-19 10:21:58 545

原创 TCP/IP

如果 Redis 选择多线程模型,又因为 Redis 是一个数据库,那么势必涉及到底层数据同步的问题,则必然会引入某些同步机制,比如锁,而我们知道 Redis 不仅仅提供了简单的 key-value 数据结构,还有 list、set 和 hash 等等其他丰富的数据结构,而不同的数据结构对同步访问的加锁粒度又不尽相同,可能会导致在操作数据过程中带来很多加锁解锁的开销,增加程序复杂度的同时还会降低性能。序号为 Seq = x + 1,表示收到服务器端的确认号 Ack,并将其值作为自己的序号值;

2024-06-19 10:21:13 275

原创 spring中使用到的设计模式

优点在于灵活性高,允许开发者在Spring容器初始化时,根据特定条件或逻辑动态地添加、修改Bean定义,实现更细粒度的控制,对于编写框架代码或需要动态扩展功能的应用来说非常有用。但是,由于是在运行时动态注册Bean,可能会增加容器的启动时间和复杂性,推荐,在确实需要动态注册Bean的场景下使用,如插件系统、动态数据源等。

2024-06-07 13:30:06 740 1

原创 Spring IOC和AOP基础知识

SpringIOC和AOP知识

2022-12-26 14:56:37 86

原创 Kafka

撒大叔的

2022-11-23 10:20:16 77 1

1ewqeqweqweqweq

1ewqeqweqweqweq

2024-07-12

空空如也

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

TA关注的人

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