- 博客(40)
- 资源 (10)
- 收藏
- 关注
原创 02 | 事件驱动框架(Get/Set)
Redis server 一旦和一个客户端建立连接后,就会在事件驱动框架中注册可读事件,这就对应了客户端的命令请求。而对于整个命令处理的过程来说,我认为主要可以分成四个阶段,它们分别对应了 Redis 源码中的不同函数。这里,我把它们对应的入口函数,也就是它们是从哪个函数开始进行执行的,罗列如下:命令读取,对应 readQueryFromClient 函数;命令解析,对应 processInputBufferAndReplicate 函数;命令执行,对应 processCommand 函数;
2024-04-14 13:43:40
869
原创 01 | 源码编译(Redis6.2.6源码CLion编译调试)
C语言是编译型语言,需要编译生成.o的目标文件,然后用链接器连接目标代码才能生成可执行文件,Windows下就是生成.exe文件。如果文件之间互相依赖,则需要把所有源文件都编译才可运行。然而大型项目中,源文件非常多,需要使用make工具来批量编译源文件,通过编写规则文件Makefile来告诉make工具如何进行编译,但是Makefile文件是强依赖平台的,在Linux上的Makefile文件并不能在Widnwos上面跑,而且大型项目的Makefile文件的编写也会非常复杂。
2024-04-14 13:08:20
1298
原创 网络篇12 | 链路层 ARP
主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。
2024-04-14 12:52:32
948
原创 网络篇11 | 网络层 ICMP
从技术角度来说,ICMP就是一个“错误侦测与回报机制”,其目的就是能够检测网路的连线状况﹐也能确保连线的准确性。当路由器在处理一个数据包的过程中发生了意外,可以通过ICMP向数据包的源端报告有关事件。其功能主要有:侦测远端主机是否存在,建立及维护路由资料,重导资料传送路径( ICMP重定向 ),资料 流量控制。ICMP在沟通之中,主要是透过不同的类别(Type)与代码(Code) 让机器来识别不同的连线状况。
2024-04-14 12:44:23
1537
原创 网络篇10 | 网络层 IP
对上可载送传输层各种协议的信息,例如TCP、UDP等;对下可将IP信息包放到链路层,通过以太网、令牌环网络等各种技术来传送。IP地址是定位主机的,具有一个将数据报从A主机跨网络可靠的送到B主机的能力。但是有能力就一定能做到吗,只能说有很大的概率。TCP为IP提供策略,IP用于执行行动。
2024-04-14 12:33:35
1004
原创 网络篇09 | 运输层 udp
UDP 只在 IP 的数据报服务之上增加了一些功能:复用和分用、差错检测UDP 的主要特点:无连接。发送数据之前不需要建立连接。使用尽最大努力交付。即不保证可靠交付。面向报文。UDP 一次传送和交付一个完整的报文。没有拥塞控制。网络出现的拥塞不会使源主机的发送速率降低。很适合多媒体通信的要求。支持一对一、一对多、多对一、多对多等交互通信。首部开销小,只有 8 个字节(UDP 通信的特点:简单方便,但不可靠)
2024-04-14 12:26:50
595
原创 网络篇08 | 运输层 tcp
运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。
2024-04-14 11:57:24
941
原创 网络篇07 | 应用层 其他协议
这一篇只说明一个问题,应用层的协议五花八门,都是各个领域自己造轮子,贴合他们的使用习惯捣鼓出来的,这就和好几家大企业相互争抢市场资源一样,也和各种语言争抢市场份额一样。(PHP是全世界最牛的语言)
2024-04-14 11:47:01
1191
原创 网络篇04 | 应用层 mqtt(物联网)
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。
2024-04-14 11:16:41
1099
1
原创 网络篇05 | 应用层 http/https
HTTPS 协议是 HyperText Transfer Protocol Secure(超文本传输安全协议)的缩写,是一种通过计算机网络进行安全通信的传输协议。HTTPS = HTTP + SSL/TLS,HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包,HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换资料的隐私与完整性。浏览器正确地实现了 HTTPS 且操作系统中安装了正确且受信任的证书颁发机构;证书颁发机构仅信任合法的网站;
2024-04-14 11:05:36
1264
1
原创 网络篇01 | 入门篇
应用层:提供用户接口和服务的应用程序。表示层:处理数据格式转换、加密解密等功能。会话层:管理通信会话,确保数据传输的正确性。
2024-04-14 10:32:39
1307
原创 SpringBoot-05 | 关于@Slf4j的使用,探究Lombok的原理
Lombok通过在编译时期,使用注解处理器(Annotation Processor)来生成代码,从而避免了开发者手动编写一些重复性的代码,例如Getter和Setter方法、toString方法、equals方法等。在使用Lombok的类上加上注解后,Lombok会在编译时扫描这些注解,然后在生成字节码文件时,根据注解生成相应的方法和字段。这样,开发者就能够以更简洁的方式书写Java代码。在java中,注解的两种解析方式,一种是运行时解析,另一种是编译时解析,而lombok就是注解编译时解析。
2024-03-21 09:19:11
587
2
原创 SpringBoot-04 | spring-boot-starter-logging原理原理
SpringBoot启动的时候会读取spring-boot-2.2.0.jar里面的spring.factories,拿到所有的ApplicationListener(有很多个,其中包括了LoggingApplicationListener)和SpringApplicationRunListener(只有一个,EventPublishingRunListener,它里面会使用了Spring的SimpleApplicationEventMulticaster做事件发布)。
2024-03-21 09:16:16
1812
原创 SpringBoot-02 | Jdk spi加载原理
SPI的工作原理: 就是ClassPath路径下的META-INF/services文件夹中, 以接口的全限定名来命名文件名,文件里面写该接口的实现。然后再资源加载的方式,读取文件的内容(接口实现的全限定名), 然后再去加载类。使用Java SPI机制的优势是实现解耦,使得第三方服务模块的装配控制的逻辑与调用者的业务代码分离,而不是耦合在一起。市面上常见的日志框架有很多。通常情况下,日志是由一个抽象层+实现层的组合来搭建的,而用户通常来说不应该直接使用具体的日志实现类,应该使用日志的抽象层。
2024-03-21 09:02:25
1004
1
原创 Bito插件
在idea中搜索:Bito编辑VSCode编辑JetBrains编辑CLI将常用提示保存为自定义模板并轻松执行。自定义提示模板简介:Bito 允许你为 IDE 创建和保存自定义提示模板。定义模板名称和提示,Bito 将在所选代码上执行它。你最多可以添加 4 个自定义模板,并根据需要编辑或删除它们。详细了解自定义提示模板。待继续挖掘。
2024-03-20 20:00:00
1035
原创 CodeWhisperer插件
Amazon CodeWhisperer 是一个通用的、由机器学习驱动的代码生成器,可实时为您提供代码建议。在您编写代码时,CodeWhisperer 会根据您现有的代码和注释自动生成建议。您的个性化建议的大小和范围各不相同,从单行注释到完全形成的函数。
2024-03-20 20:00:00
1358
原创 idea插件开发入门
另外使用IDEA提供的Swing Designer设计器还是挺方便的,自动生成的样式和布局代码为了避免被修改,也不会被我们看到(与NetBeans不同),所以最终代码很简洁。其实很简单,实现方法就是先创建一个Dialog,然后在Swing设计器中设计好Dialog中的控件布局,最后在Action中显示出对话框。运行起来就会发现,原来会启动一个新的Intellij IDEA实例,可以选择新建项目,也可以选择导入项目,我们选择导入一个项目。最终效果就是这样的了,我们在设计器里设计的面板嵌入到了右边。
2024-03-06 06:48:42
3233
1
原创 网络篇03 | 应用层 quic
TCP 的拥塞控制实际上包含了四个算法:慢启动,拥塞避免,快速重传,快速恢复。QUIC协议当前默认使用TCP的拥塞控制算法,并在其基础上进行了相应的改进;当然QUIC也支持其他的拥塞控制算法。主要的改进点有:可插拔设计单调递增的Packet Number不允许Reneging更多的Ack块精确计算RTT时间拥塞控制,对网络传输的重要性不言而喻,TCP的拥塞控制功能集成在操作系统的内核,应用程序是无法控制的。轻微变动就会影响整个机器上的全部TCP连接(已有的和新增的)。
2024-02-20 16:08:33
947
原创 RocketMQ问题篇02 | Broker存储过慢异常分析
分析:[<=0ms]:0 [0~10ms]:4 [10~50ms]:0 [50~100ms]:0 [100~200ms]:0 [200~500ms]:0 [500ms~1s]:0 [1~2s]:0 [2~3s]:0 [3~4s]:0 [4~5s]:0 [5~10s]:0 [10s~]:1。统计各个时间段内的数量,根据不同档位+1计数。%vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比。此处的告警错误:不应该提示刷盘超时,应提示:写入pageCache超时。
2024-02-03 13:28:35
1096
1
原创 RocketMQ问题篇01 | NameServer告警异常分析
拔网线的场景:只要足够快,channel还是可以使用,在插拔的区间,不能动channel对象、也不要主动去关闭channel,当netty的SO_KEEPALIVE参数开启后,tcp底层有75s探测的机制,这一块会触发userEventTriggered事件进行关闭。对应源码它在获取channel时出现问题了,没有成功获取到channel,有两种可能原因:1)获取到的channel后被客户端触发了关闭机制导致channel不是actice状态,2)没有成功创建出channel。
2024-02-03 13:12:13
1256
1
原创 GitHub Copilot插件
此文档只作用于指导性工作,更多资料请自行探索。https://plugins.jetbrains.com/plugin/17718-github-copilot从此处链接进入购买账户页面需要国外支付信息,支付方式:Credit or debit card、Paypal account到idea中setting对应的插件进行设置在这里,记得买Copilot的账户。。。在这里,记得买Copilot的账户。。。在这里,记得买Copilot的账户。。。买完之后的效果没有问题,光标处已经显示对应的提示代码了您可
2024-01-12 08:23:05
538
1
原创 02 | Bootstrap源码分析(二)
netty客户端的启动和服务端启动复用性比较高,特别是NioEventLoopGroup|NioEventLoop等逻辑思想都是一致的,唯一的区别就在于服务端是DoBind、客户端是doResolveAndConnect,客户端这里有一个三次握手的实现,可以结合TCP的三次握手协议对照看看。如果有条件,后期还会补充对应jdk nio、linux epoll等处理逻辑,待续。
2024-01-12 08:15:45
1180
1
原创 01 | ServerBootstrap源码分析(一)
对于netty框架,大家有一些习惯性的概念,比如线程模型、IO模型,网上有一大堆概念,每次都是看完一篇帖子就理解了,过了一会就忘记了,下面就简单讲一下吧。为什么叫EventLoopGroup是线程模型?EventLoopGroup可以认为是netty对线程模型的一种实现,因为其对NioEventLoop的这个IO模型的一种实现,他可以管理多个NioEventLoop,内部还有实现了一个选择器EventExecutorChooser的实现。
2024-01-05 16:34:03
831
1
原创 AutoGPT 玩法记录系列(五)
修改源代码,加入自定义的COMMAND,比如:generate_code,和预想的一样,GPT并不会搭理你返回你自定义的命令给你,因为人家现有的模型中当时在训练过程中,压根都没将这个命令训练进去,别瞎想了。生成一个学生信息保存功能,并暴露FeignApi接口,并根据学生编号校验唯一性,学生编号规则使用{英语学生号规则},学生信息表字段如下:ID、学生编号、学生名称、学校名称、学籍、性别、年龄、联系电话、家庭地址。保存修改功能关联学籍表存在性校验。如果学校不存在,自动新增一条学校数据。
2023-10-09 15:19:22
321
1
原创 Chinese-LLaMA-Alpaca本地搭建(三)
中文羊驼模型只是一些LoRA权重模型文件,与原版LLaMA模型合并后就可以生成一个完整模型使用了,在这过程中可以不断训练LoRA权重模型文件,无限训练后达到专业领域的效果,理论上就能投入使用了,但注意禁止商用的问题。Facebook官方发布的LLaMA模型禁止商用,并且官方没有正式开源模型权重。模型规格:7B、13B、33B(30B就是33B,实际是32.5B)、65B。GitHub源码地址,可以通过其下载。
2023-07-21 06:48:37
922
1
原创 GPT2中文模型本地搭建(二)
GPT2_ML项目是开源了一个中文版的GPT2,而且还是最大的15亿参数级别的模型。OpenAI在GPT2的时期并没有帮忙训练中文,上篇文章的验证也可说明此问题,对应的模型直接上GitHub上下载即可。本文主旨快速搭建本地模型,更全的攻略,大家也可以到GitHub中慢慢摸索。本文是基于bert4keras来加载模型与运行,需要先了解下一些概念。
2023-04-21 09:05:39
2735
1
原创 Cursor攻略,吃个螃蟹
首先打开 Cursor 的官网:https://www.cursor.so/Cursor 支持 Windows、Mac、Linux 三大平台,我们直接下载 Windows 版本即可。Cursor 安装的过程中,会引导你进行初始化设置,你即可以选择 VIM 或者 Emacs 的操作习惯,也可以保持默认设置,另外它还支持绑定 Copilot。
2023-04-20 18:15:35
2583
5
原创 GPT-2 开源模型本地搭建(一)
OpenAI 已将模型开源至上,在上面可以找到以下的GPT-2预训练模型:gpt2gpt2-largegpt2-xl其中,gpt2是最小的模型,参数量为124M;gpt2-medium, gpt2-large和gpt2-xl依次是参数量增大的模型。
2023-04-07 09:52:31
8257
6
计算机原理 计算机原理基础 学计算机软件必懂的几门基础
2010-03-29
系统结构 系统结构基础 学计算机软件必懂的几门基础
2010-03-29
网络安全 网络安全基础 学计算机软件必懂的几门基础
2010-03-29
数据库原理 数据库原理基础 学计算机软件必懂的几门基础
2010-03-29
学计算机软件必懂的几门基础
2010-03-29
软件工程基础 软件工程基础知识 软件知识 软件 软件
2010-03-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人