自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于DynamicDataSource整合分库分表框架Shardingsphere

会出现各种奇奇怪怪的报错,对此笔者结合报错原因查阅网上资料和底层源码运行机制找到了相对简单的适配步骤,遂以此文分享一下整个过程,希望对你有帮助。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。数据源完成了整合,实现多数据源场景下使用分库分表的操作,本文到此结束,希望这套方案对你有帮助。

2024-09-19 08:52:42 783 1

原创 mini-redis如何解析处理客户端请求

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。自此笔者通过一篇文章, 介绍了笔者所实现的mini-redis中协议解析和指令处理的核心流程,希望对你理解笔者的源码有所帮助。协议的本质最简单的方式就是通过抓包的方式查看协议的基本格式和建立连接时的交互逻辑,所以这里笔者也贴出自己在研究。

2024-09-12 08:37:47 1319

原创 数据结构与算法-Trie树添加与搜索

trie树的使用场景我们若需要制作一个通讯录的软件,使用常规树结构查询的复杂度为O(logn),但trie树的复杂度确与数据多少无关,与单词长度有关,这就大大缩减的查询的时间复杂度。trie树的基本实现基础结构package com.study.trieDemo;import java.util.TreeMap;/** * Created by Zsy on 2020/8/21. */public class Trie { private class Node {

2024-09-21 10:53:17 206

原创 聊聊Netty客户端断线重连的设计与实现

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。的执行我们也可以通过源码的方式让读者了解,我们以客户端连接为例,一旦客户端断开连接,客户端的。自此我们基于Netty生命周期的源码剖析给出客户端断线重连的设计和落地思路,希望对你有帮助。,而本文将基于其中的一个拓展点实现连接可靠性,希望对你有帮助。

2024-09-20 08:37:02 10

原创 聊聊Netty对于内存方面的优化

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。我们在上述所讲的零复制更多强调的是应用层面上的零复制,也就是通过减少应用层面上数据的拷贝提升程序的执行效率。的时间,由此间接的提升了程序的性能,本文也将直接从源码的角度分析一下。内存拷贝也是存在一定的时间开销,例如我们现在有一个字符串的数据需要将。

2024-09-19 20:30:00 469

原创 Netty连接可靠性Idle监测连环问

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。于是我们就有了方案2,也就是空闲监测,对于这成千上万的连接,我们可以定时进行空闲监测只有出现空闲的连接,我们才发送。任务,它会定时执行,然后查看当前时间减去上次读取到消息的时间是否大于定时的间隔,如果大于则说明当前连接处理。

2024-09-17 11:27:13 173 1

原创 实现mini-redis字符串操作

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。指令的核心流程,它会基于上一步的入参判断是否存在expire ,如果存在则将其转为整数,后续会基于当前时间计算到期时间并以传入。数组中0、1、2几个常规set指令必传的字符串,得到ex和键值对存活的数值3,这意味着存储的。

2024-09-13 08:47:39 990

原创 来聊聊一个轻量级的有限状态机Cola-StateMachine

状态机通俗来说就是有限状态机,我们可以将其理解为一个数学模型,有限状态以及这些转台之间转移和动作行为的抽象的数学模型。我们以一个简单的开关灯为例子简单介绍一下状态机的基本概念,当我们点击开时电灯就会亮起状态就是open当我们准备按下开关时,这个准备按下开关也就是需要执行的指令,也就是事件event。实际按下开关的执行动作也就是状态机中的动作(action)。open就是状态机中的状态(state)。电灯由暗变亮,这个就是所谓transition也就是状态的转换,这就是状态机的最后一个概念。

2024-09-10 00:07:49 42

原创 聊聊go语言channel中的一些小技巧

对应的我们给出这样一个select实现非阻塞轮询的例子,子协程非阻塞轮询所有channel,发现channel都不具备处理的条件,于是将该协程存到各个channel的阻塞队列中。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。逻辑发现数据无法投递时,则走到下一个分支查看是否可以执行,结果有缓冲区。

2024-09-09 08:41:06 472

原创 聊聊我用go手写的redis

一直以来都来研究redis的设计理念和实现思路,随着时间的推移有了想自己实现的想法,由于笔者本身是一名java开发,对于C语言中的某些理念不是非常熟悉,于是折中选用go语言进行实现,而这份文档将会记录笔者实现mini-redis的一些开发思路和实现的介绍。这个项目笔者无论从函数名还是整体思路都基本沿用了原生redis的规范,并且为了让读者更加直观的了解redis的实现核心脉络,笔者也在实现时也进行了一定简化,希望对那些想了解redis但是又不太熟悉C语言的开发朋友有所帮助。

2024-09-08 23:21:04 2173

原创 记一个电脑蓝屏问题

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。近期笔者一台老旧的笔记本碰到蓝屏问题,结合个人经验和网上的资料得出一套比较通用且使用的思路,希望对有需要的读者所有帮助。不过需要注意的是,这个操作仅针对纯净版的操作系统有效,那些通过第三方的方式安装的操作系统可能没有太大作用。

2024-09-08 22:30:32 1239

原创 解决windows系统双击软件没有反应

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。整体来说系统重装之后还有很多非必要的安全选项实际上是可以关闭,笔者也会在后续的文章中分享这些常见的设置操作,希望对你有帮助。系统提出安全警告,大体是那些安全检查导致软件无法正确安装,结合网上搜索引擎找到相应的解决办法。,是个不断在硬核技术上作死的。

2024-09-08 22:28:33 519

原创 精确的空间预分配显著提升HashMap插入效率

即可看到笔者上文所说的,先进行无符号右移在进行按位或运算,得到一个低位为全1的二进制数,然后再加上1,得到一个2的次方的上限阈值,由此完成。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。在初始化时会基于我们提供的容量n得到一个2的次方的上限阈值,举个例子,假如我们初始化。

2024-09-06 08:47:59 36

原创 聊聊go语言channel为什么可以高效

的核心概念就是由环形缓冲区,协程的发送队列和接收队列构成,本质上这个环形缓冲区就是一个有指针进行管理的数组,之所以这样设计的原因也很简单,主要是数组地址空间连续,基于局部性原理一次可以读取尽可能多的地址空间存储数据。而channel的数据都来自于各个协程,所以这其中就有了生产者和消费者的概念,一旦缓冲区数据满了生产者就会不能继续投递数据,于是这些协程就会存放到发送队列,与之同理一旦缓冲区数据为空则消费者协程就会阻塞等待就绪数据。方法将当前协程的信息以及要发送的数据即ep指向的地址一并封装成。

2024-09-05 08:46:04 809

原创 使用jmeter压测数据库

保证这个循环限定在半小时以内完成,这种方式也算是我们比较常见的压测方式,当然如果你明确压测的循环次数,可以直接去掉永久的勾选框,手动设置循环次数。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。数据库进行压测,所以需要MySQL的jar包,所以在正式配置压测参数之前,我们需要手动添加一下。

2024-09-04 08:44:32 58

原创 MySQL三大日志详解

这个是InnoDB存储引擎独有的日志,用于MySQL工作过程中宕机时进行数据恢复的文件,从而保证数据的持久性以及完整性。我们都知道MySQL是需要保证原子性的,这就需要在数据持久化操作之前会这些数据进行记录的,undo log做的就是这些事,当SQL操作发生异常等情况时,我们就可以通过undo log将事务回滚确保事务的原子性。而mvccMySQL事务与并发控制详解。

2024-09-03 21:22:57 651 1

原创 MySQL事务与MVCC详解

某个逻辑报错数据库连接中断某台服务器突然宕机这时候我们数据库执行的操作可能才到一半,所以为了避免这种一半一半的情况,我们就需要事务来保证数据一致性。所以事务就是当作一个原子的逻辑组操作,要么全都成功执行,要么全部都失败。事务有分分布式事务和数据库事务,如果没有特指,我们平时所说的事务都是数据库事务,也就是本文探讨的话题。

2024-09-03 21:15:26 1239

原创 极简的go语言channel入门

这里通过一个简单的示例了解的channel的使用,基于此示例我们进行一下语法拓展,如上所示,本质上channel的创建语法有两种:第一种是这种就是所谓的无缓冲channel,这意味着投递到channel没有任何缓冲区,数据必须被即使处理掉才能投递新新数据:对此我们再给出上一个代码的示例进行改造,将size去掉,这就是无缓冲channel的声明示例,运行时抛出了//声明一个无缓冲区channel//往channel中投递数据//取出channel数据s :=

2024-09-03 08:48:11 866

原创 来聊聊我用go手写redis这件事

的语言,相较于C、Java那种多线程的语言来说,协程切换的开销远远小于另外两门多线程语言,所以笔者的设计之初的就认定实现的思路就是起一个协程监听。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。的基调不断完善指令即可,而这篇文章算是笔者的一篇引子,也算是从笔者的设计稿中整理出来的一篇个人实现的思路的复盘,希望这个系列对。向其他协程传递程序关闭的信号,一旦监听关闭信号的协程收到连接关闭的信号之后,先将监听关闭,然后遍历。

2024-09-02 09:06:06 653

原创 聊聊Netty异常传播链与最佳实践

Netty通过责任链的思想解耦了各个业务的处理逻辑,是的用户可以非常方便的根据不同的生命周期进行相应的业务处理。而本文将针对Netty中的异常和异常传播过程进行分析,并给出最佳的处理技巧,希望对你有帮助。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。即可和笔者和笔者的朋友们进行深入交流。

2024-08-30 08:53:36 39

原创 硬核详解redis客户端指令与服务端传输协议RESP

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。实现二进制安全的核心,它记录的是每一个字符串的长度和字符串内容,以我们键入的。即可看到笔者所说的核心流程,即解析数组的长度,然后基于数组的长度去解析每一个。后面的值,数值为1,说明这个数组长度为1,记录该长度,循环读取1次,按照。

2024-08-29 08:47:08 33

原创 安利一下IDEA中的Arthas插件

本文笔者直接通过IDEA插件快速生成Arthas指令快速完成日常JVM运维和故障定位工作,可以看到有了插件的配合我们只需大概记住指令的作用即可,每当我们需要使用的时候,只需要结合插件生成一下指令进行相应简单调整即可快速得到想要的指令。此时我们就可以通过反编译的方式进行35行实际的代码,在没有arhtas idea插件之前,我们jad指令都需要手动进行输入,有了idea插件之后,只需找到对应的java文件右键找到。

2024-08-27 23:14:20 4157

原创 Netty Reactor面试连环问

笔者分别带入索引0、5、8,进行与运算时,真正参与的二进制永远是和永远是7以内的进制,得出的结果分别是0、5、0,永远不会越界,并且运算性能还能得到保证。中查看是否有继续的任务,如果有则查看它的到期时间,并基于这个时长查询是否存在就绪的任务。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。

2024-08-27 22:17:30 838 1

原创 一文教你正确打通WSL和win10宿主机网络全通道

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。对此,我们首先要做的就是获取WSL实际的IP地址,然后将localhost及其主机名称映射全部改为这个地址。和宿主通道全打通过程,后续使用时我们建议直接使用WSL的实际IP地址而不是。和朋友调试一些个人开发的项目时,发现一个奇怪的问题,笔者在。

2024-08-23 08:26:46 731

原创 简明的Arthas故障排查实践

这也是为什么 watch 命令存在的意义。有时候我们测试难免会遗漏一些情况,如下所示,我们业务要求id小于1才抛出异常,但是我们因为粗心而将判断条件写成id

2024-08-22 08:56:18 710

原创 简明的Arthas配置及基础运维教程

步入arthas我们就可以进行一些比较基础的操作,以下是笔者日常用的比较多的指令,和Linux差不多,读者可自行参阅了解cat:打印文件内容。cls:清空当前屏幕区域内容。grep:匹配查找。history:打印历史命令。pwd:输入当前Java进程所在的位置。quit:退出当前arthas客户端。stop:关闭arthas服务端,所有arthas客户端都会退出。这里笔者就简单的演示一下,可以看到pwd# 当前监控的进程在服务器上的目录点击quit会直接退出当前进程的客户端,stop。

2024-08-21 08:40:32 906

原创 一文带你打通WSL下的SSH连接

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。客户端直接输入密码进行连接进行尝试,可以看到测试连接成功,自此我们的。服务就安装完成了,接下来就是配置步骤,首先我们需要键入如下指令修改。即可和笔者和笔者的朋友们进行深入交流。配置SSH服务器的步骤,希望对你有帮助。

2024-08-20 08:37:50 993

原创 一文带你从源码中学习那些实用的位运算技巧

假设当前时间是8点,那么我们就可以自作向右将第8个bit设置为1,按照也就是自右向左的第16位,由此得出左移的位置为16,即需要左移15位也就是

2024-08-19 08:33:15 2045 1

原创 IDEA2024一些实用的操作和配置

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。对此进行了优化,如下对于FutureTask的源码阅读,可以看到无论我们怎么滚动代码,这个方法以及类的定义始终浮在上方。这是笔者日常开发时的技巧,如果我们希望调试时改变变量的值,可以同通过Alt+F8的变量分析做到这一点。

2024-08-18 10:19:47 1182

原创 系统重装简记

因为固态损毁而更换固态,所以需要进行系统重装,由于系统重装都是固定的繁琐的步骤,所以就以这篇文章来记录一下系统重装的一些日常步骤,希望对你有帮助。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。系统安装完成之后,可能某些同学安装的是专业版,需要进行特殊处理一下,这里就多做赘述了。

2024-08-15 08:56:32 2036

原创 硬核详解FutureTask设计与实现

至清单成功后,这个线程就会执行该任务,而线程2同样想提交这个任务发现该任务已存在,则直接等待清单中记录的这个任务的结果返回。我们的批量线程会进行尝试创建一些任务执行,同时我们希望每个任务只有有一个线程去执行,其他线程如果拿到这个任务准备执行时发现这个任务已经在执行,则等待这个任务的返回结果。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。执行时,笔者会用原子类自增一下,以此判断多线程执行该方法时有没有重复执行任务的情况出现。

2024-08-14 09:19:23 36

原创 聊聊我是如何基于IDEA远程调试项目的

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。本文会简单介绍一下IDEA远程调试项目的步骤,希望对你有帮助。程序,配置也是同理的,我们只需在catalina.sh的添加如下配置,以笔者为例用的是。最后将上文得到的那条命令配置,作为程序的启动参数,以笔者的。即可和笔者和笔者的朋友们进行深入交流。

2024-08-13 08:43:48 1465

原创 基于lambda简化设计模式

责任链在Spring或者Netty这种大型框架中非常常见,它通过链式关系顺序的调用处理器处理当前业务数据,举个例子,我们希望字符串被对象1处理完成之后要转交给对象2处理,并且我们后续可能还会交给更多的对象处理,通过对需求的梳理和抽象,这个功能可以通过责任链模式来实现。可以看到我们的校验规则基本上一行就可以搞定,为了这仅有的一行逻辑实现而编写大量的前置模板实在繁琐,对此我们不妨基于之前所介绍的函数式编程的思路分析以下,我们的。本质上就只有一个抽象接口,所以它完全可以被认定为一个函数式接口,所以我们不妨将。

2024-08-12 09:18:11 2970 1

原创 聊聊java8的方法引用结合lambda最佳实践

我们再来一个难一点的例子,假设我们的现在的类有重量和颜色两种属性,并指明使用全参构造器完成实例创建,我们如何将这个构造器转换为方法引用呢?因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。做一些实用的拓展,先来说说复合比较器,以上文的苹果为例,假设我们希望当重量一样时,在比较颜色进行进一步比较,那么我们就可以直接通过。因为重量单位的不同,所以得出的重量的结果可能是不同的,所以我们将计算重量的核心部分抽象成函数式接口,如下。

2024-08-09 08:31:16 1160 2

原创 聊聊Java8中的函数式编程

因为是Predicate是函数式接口,其抽象方法只有唯一一个test,所以我们的参数列表即使不指明类型,它也能够通过类型推断机制得出参数类型,所以我们可以直接将参数类型简写为s。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。由于函数式接口的理念,保证了行为抽象和实现上的便利,大量的开源项目都运用到了函数式编程风格,最经典的就是。语法,首先我们根据Predicate的抽象接口得出,它要求传入一个T类型,以我们的代码为例就是。

2024-08-08 09:03:10 1043

原创 一文速通lambda与函数式编程

如果我们希望能够读取两行的拼接结果,读取所有数据,也可能读取一个字符,这时候我们就可以基于函数式接口,将行为抽象为函数式接口,从而实现将用户自定义行为参数化,从而完成个性化功能拓展。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。当然上述的声明还不是最精简的,因为我们的逻辑仅仅为一行代码,按照。

2024-08-07 08:45:12 1426

原创 细聊MySQL八股之redo log

的数据操作将一页的数据进行同步持久化实在有些大材小用了,所以通过redo log buffer记录修改内容,通过刷盘策略进行数据输盘更新,由此提升数据库的并发能力,并不是单指一个文件,它是由一组日志文件构成的,如下图所示,这些文件大小都是一样的,写入操作时依次从从1开始写,文件1写满了,就将数据写到文件2,最后写到文件4。若设置为这个级别,当服务器宕机,若当前事务没有提交,这部分数据丢失也无妨,事务提交的话,那么这个操作就会被写到磁盘中,照样可以恢复。很可能因为服务器崩溃或者宕机导致丢失1s的数据。

2024-08-06 08:54:14 1024

原创 Netty的几种IO模式的实现与切换

在此基础上做了很多的参数封装,提供开发有更多的灵活的选择,对于后续的优化是可控的,且Netty实现的NIO相较于JDK默认的实现产生的垃圾更少且性能表现更出色。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。模式性能表现一定会差于NIO,这一点笔者是不认同的,个人认为对于连接少、并发度较低的场景,

2024-08-05 09:00:03 778

原创 聊聊Netty中几个重要的生命周期

内置了各种开箱即用的处理器,把握好处理器中几个比较重要的生命周期回调用助于我们编写出强大的网络通信程序,所以本文将基于一个简单的示例和源码介绍一下。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。自此笔者从使用和源码示例上将Netty中的几个核心生命周期分析完成,希望对你有帮助。

2024-08-02 08:37:38 840

原创 来聊一个有趣的限流器RateLimiter

讲解完了每秒一个令牌这种基础的场景我们了解的令牌桶的算法的整体步骤了,接下来我们更进一步来了解实际场景中的1秒多个令牌是如何实现的,很简单,我们还是带入上述的代码,以一秒。假设第2s线程2也来获取令牌了,基于线程1的计算结果3s的令牌就被拿了,所以此时令牌桶的令牌为0,按照1s产生一个令牌的配置,线程2需要基于。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。,外部逻辑基于这个值结合当前时间得出当前请求的线程要等待的时间。

2024-08-01 08:39:42 38

空空如也

空空如也

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

TA关注的人

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