- 博客(50)
- 资源 (10)
- 收藏
- 关注
原创 读书笔记 - 剑指Java:核心原理与应用实践
1995年Sun(Stanford UniversityNetwork)公司开发了一门新的编程语言——Java。Java语言是由詹姆斯·高斯林(James Gosling)和其Green Team小组成员共同开发的。Java的最初名为Oak,由于Oak商标已经被注册,所以更名为Java。1996年是Java语言的发展简史中具有里程碑意义的一年。
2025-03-19 07:36:53
536
原创 读书笔记 - Spring Boot实战
Spring Boot将很多魔法带入了Spring应用程序的开发之中,其中最重要的是以下四个核心。四大神器分别是自动配置、起步依赖、命令行界面、Actuator。
2025-03-10 08:46:59
945
原创 读书笔记 - 战略罗盘(王成)
蝉型经理人”,他们关注更多的是季度的绩效差距,即将现有的绩效表现和既定的绩效标准做对比,进行持续改善和绩效补救。比如,一些企业经常把“战略”和“战略性”这两个词弄混了,不知不觉,各种职能部门所推出的各种管理工具便逐渐取代了真正的战略,导致他们走入了一个误区:以运营上的勤奋掩盖战略上的懒惰。从我们开篇的微信成长史来看,微信其实是腾讯内部的“自发涌现的战略”,还险些在内部被扼杀掉,在腾讯总部及马化腾眼中,并没有对微信进行过严肃科学的事前规划,即使“微信之父”张小龙也没有对微信在事前有准确的定义。
2025-03-07 08:58:41
719
原创 读书笔记 - 重学Java设计模式
注意:设计模式讲求的是思想,而不是固定的实现方式。设计模式是一种开发设计指导思想,每一种设计模式都是解决某一类问题的概念模型,所以在实际的使用过程中,不要拘泥于某种已经存在的固定代码格式,而要根据实际的业务场景做出改变。有一部分开发人员虽然没有阅读过设计模式的相关书籍和资料,但依旧可以编写出优秀的代码。经过众多项目的锤炼,个人可以提炼出心得体会,而这些体会可能会与设计模式的理念一致,即同样要求高内聚、低耦合、可扩展和可复用。
2025-02-25 09:03:39
1067
原创 读书笔记 - 码农心得(重学Java设计模式)
代码一把梭,兄弟来背锅。大部分从事开发工作的技术人员,都有一颗把代码写好的初心。除了把编程当作一份工作,同时还具备了一定的工匠精神。但很多时候又很难把初心坚持下去,尤其面对接了烂手的项目、产品功能要得急迫、个人能力不足等问题时,这些原因导致开发的工程代码臃肿不堪,线上事故频出。懂得高并发,可还写不好代码。这就像家里装修完之后购买家具,花了几十万元买的实木沙发,怎么摆放也不好看!代码写得不好,不一定是基础经验不足,也不一定是产品需求要得急迫。很多时候是自己对编码经验掌握得不足,以及对架构的把控能力不到位
2025-02-25 08:43:38
730
原创 读书笔记 - 修改代码的艺术
在某些语言中,我们可以在一个地方声明一种类型,然后在另一个地方定义它。这种特性最明显的语言就是C和C++。在这两种语言中,我们可以在一个地方声明一个函数或方法,而在其他地方对其进行定义,通常那会是在实现文件中。当语言有这种能力的时候,我们就可以使用它来打破依赖。确定一个类,其中有你想要替换的定义。确认方法定义位于源代码文件中,而不是头文件中,如果方法定义在头文件中,就将它移至源代码文件中。在你要测试的类的测试源文件中包含头文件。确认类的源文件并不是构建的一部分。构建,找到遗漏的方法。
2025-02-18 08:40:09
788
原创 读书笔记 - Google软件测试之道
在Google,这正是我们的目标,就是把开发过程和测试融合在一起——开发和测试必须同时开展。写一段代码就立刻测试这段代码,完成更多的代码就做更多的测试,但这里的关键是由谁来做这些测试呢?有时,测试和开发互相交织在一起,达到了无法区分彼此的程度,而在另外一些时候,测试和开发又是完全分离的,甚至开发人员都不知道测试在做些什么。Google的测试方法看起来有点违背常理——在整个公司,我们只有非常少的专职测试人员,甚至比我们竞争对手公司的单个产品的测试人员还要少。
2025-02-14 09:13:16
1008
原创 网络篇12 | SSH2协议应用,禁SFTP子模式实现文件传输
因为客户端diffie系列算法不安全,所有高版本的OpenSSH服务端已经默认去除了这些算法,如果想用也是可以的,就是容易被攻击,比如直接在服务端的sshd_config的KexAlgorithms 最后一个算法加上客户端你想用的算法,比如, “diffie-hellman-group1-sha1”。为了这里面的实现,花了3天没日没夜的各种姿势尝试,相信遇到一个技术卡点的技术爱好者,又缺少对方系统的各种信息,这个滋味应该很酸爽,放出来的目的也是为了让有相同近况的,少走一些弯路。为什么选型这个第三方的实现?
2024-11-20 09:15:26
765
原创 感悟箴言 - 心之道
人有路途,进之行程,尽力而为,无谓伤神。此间道义,为道者,不可更改,上至苍穹宇宙,下至万千众生,不违初心,不逆本意,便是自己,便是本意,便是一切因果,便是一切修行。所谓本心之意,便是最简单的,遵循本心,本意。可这一切,看似容易,却又有几人做到?本心本意,说起来,不过是一张嘴。做起来,却是无比艰难!不论是谁,扪心自问,自己真的可以做到心中所想,心中所念,知行合一吗?难,难,难!道,简单无比,做,难上加难。道为心念,念为道意,天下众生,念之无数,道亦无数,故而何为正?何为邪?故正者,众生愿之
2024-10-30 07:58:56
932
原创 02 | 事件驱动框架(Get/Set)
Redis server 一旦和一个客户端建立连接后,就会在事件驱动框架中注册可读事件,这就对应了客户端的命令请求。而对于整个命令处理的过程来说,我认为主要可以分成四个阶段,它们分别对应了 Redis 源码中的不同函数。这里,我把它们对应的入口函数,也就是它们是从哪个函数开始进行执行的,罗列如下:命令读取,对应 readQueryFromClient 函数;命令解析,对应 processInputBufferAndReplicate 函数;命令执行,对应 processCommand 函数;
2024-04-14 13:43:40
990
原创 01 | 源码编译(Redis6.2.6源码CLion编译调试)
C语言是编译型语言,需要编译生成.o的目标文件,然后用链接器连接目标代码才能生成可执行文件,Windows下就是生成.exe文件。如果文件之间互相依赖,则需要把所有源文件都编译才可运行。然而大型项目中,源文件非常多,需要使用make工具来批量编译源文件,通过编写规则文件Makefile来告诉make工具如何进行编译,但是Makefile文件是强依赖平台的,在Linux上的Makefile文件并不能在Widnwos上面跑,而且大型项目的Makefile文件的编写也会非常复杂。
2024-04-14 13:08:20
1768
原创 网络篇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
1428
原创 网络篇11 | 网络层 ICMP
从技术角度来说,ICMP就是一个“错误侦测与回报机制”,其目的就是能够检测网路的连线状况﹐也能确保连线的准确性。当路由器在处理一个数据包的过程中发生了意外,可以通过ICMP向数据包的源端报告有关事件。其功能主要有:侦测远端主机是否存在,建立及维护路由资料,重导资料传送路径( ICMP重定向 ),资料 流量控制。ICMP在沟通之中,主要是透过不同的类别(Type)与代码(Code) 让机器来识别不同的连线状况。
2024-04-14 12:44:23
2993
原创 网络篇10 | 网络层 IP
对上可载送传输层各种协议的信息,例如TCP、UDP等;对下可将IP信息包放到链路层,通过以太网、令牌环网络等各种技术来传送。IP地址是定位主机的,具有一个将数据报从A主机跨网络可靠的送到B主机的能力。但是有能力就一定能做到吗,只能说有很大的概率。TCP为IP提供策略,IP用于执行行动。
2024-04-14 12:33:35
1588
原创 网络篇09 | 运输层 udp
UDP 只在 IP 的数据报服务之上增加了一些功能:复用和分用、差错检测UDP 的主要特点:无连接。发送数据之前不需要建立连接。使用尽最大努力交付。即不保证可靠交付。面向报文。UDP 一次传送和交付一个完整的报文。没有拥塞控制。网络出现的拥塞不会使源主机的发送速率降低。很适合多媒体通信的要求。支持一对一、一对多、多对一、多对多等交互通信。首部开销小,只有 8 个字节(UDP 通信的特点:简单方便,但不可靠)
2024-04-14 12:26:50
639
原创 网络篇08 | 运输层 tcp
运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。
2024-04-14 11:57:24
1154
原创 网络篇07 | 应用层 其他协议
这一篇只说明一个问题,应用层的协议五花八门,都是各个领域自己造轮子,贴合他们的使用习惯捣鼓出来的,这就和好几家大企业相互争抢市场资源一样,也和各种语言争抢市场份额一样。(PHP是全世界最牛的语言)
2024-04-14 11:47:01
1230
原创 网络篇04 | 应用层 mqtt(物联网)
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。
2024-04-14 11:16:41
1323
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
1342
1
原创 网络篇01 | 入门篇
应用层:提供用户接口和服务的应用程序。表示层:处理数据格式转换、加密解密等功能。会话层:管理通信会话,确保数据传输的正确性。
2024-04-14 10:32:39
1352
原创 SpringBoot-05 | 关于@Slf4j的使用,探究Lombok的原理
Lombok通过在编译时期,使用注解处理器(Annotation Processor)来生成代码,从而避免了开发者手动编写一些重复性的代码,例如Getter和Setter方法、toString方法、equals方法等。在使用Lombok的类上加上注解后,Lombok会在编译时扫描这些注解,然后在生成字节码文件时,根据注解生成相应的方法和字段。这样,开发者就能够以更简洁的方式书写Java代码。在java中,注解的两种解析方式,一种是运行时解析,另一种是编译时解析,而lombok就是注解编译时解析。
2024-03-21 09:19:11
890
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
2411
原创 SpringBoot-02 | Jdk spi加载原理
SPI的工作原理: 就是ClassPath路径下的META-INF/services文件夹中, 以接口的全限定名来命名文件名,文件里面写该接口的实现。然后再资源加载的方式,读取文件的内容(接口实现的全限定名), 然后再去加载类。使用Java SPI机制的优势是实现解耦,使得第三方服务模块的装配控制的逻辑与调用者的业务代码分离,而不是耦合在一起。市面上常见的日志框架有很多。通常情况下,日志是由一个抽象层+实现层的组合来搭建的,而用户通常来说不应该直接使用具体的日志实现类,应该使用日志的抽象层。
2024-03-21 09:02:25
1087
1
原创 Bito插件
在idea中搜索:Bito编辑VSCode编辑JetBrains编辑CLI将常用提示保存为自定义模板并轻松执行。自定义提示模板简介:Bito 允许你为 IDE 创建和保存自定义提示模板。定义模板名称和提示,Bito 将在所选代码上执行它。你最多可以添加 4 个自定义模板,并根据需要编辑或删除它们。详细了解自定义提示模板。待继续挖掘。
2024-03-20 20:00:00
1629
原创 CodeWhisperer插件
Amazon CodeWhisperer 是一个通用的、由机器学习驱动的代码生成器,可实时为您提供代码建议。在您编写代码时,CodeWhisperer 会根据您现有的代码和注释自动生成建议。您的个性化建议的大小和范围各不相同,从单行注释到完全形成的函数。
2024-03-20 20:00:00
1481
原创 idea插件开发入门
另外使用IDEA提供的Swing Designer设计器还是挺方便的,自动生成的样式和布局代码为了避免被修改,也不会被我们看到(与NetBeans不同),所以最终代码很简洁。其实很简单,实现方法就是先创建一个Dialog,然后在Swing设计器中设计好Dialog中的控件布局,最后在Action中显示出对话框。运行起来就会发现,原来会启动一个新的Intellij IDEA实例,可以选择新建项目,也可以选择导入项目,我们选择导入一个项目。最终效果就是这样的了,我们在设计器里设计的面板嵌入到了右边。
2024-03-06 06:48:42
6882
2
原创 网络篇03 | 应用层 quic
TCP 的拥塞控制实际上包含了四个算法:慢启动,拥塞避免,快速重传,快速恢复。QUIC协议当前默认使用TCP的拥塞控制算法,并在其基础上进行了相应的改进;当然QUIC也支持其他的拥塞控制算法。主要的改进点有:可插拔设计单调递增的Packet Number不允许Reneging更多的Ack块精确计算RTT时间拥塞控制,对网络传输的重要性不言而喻,TCP的拥塞控制功能集成在操作系统的内核,应用程序是无法控制的。轻微变动就会影响整个机器上的全部TCP连接(已有的和新增的)。
2024-02-20 16:08:33
1566
原创 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
1281
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
1610
1
计算机原理 计算机原理基础 学计算机软件必懂的几门基础
2010-03-29
系统结构 系统结构基础 学计算机软件必懂的几门基础
2010-03-29
网络安全 网络安全基础 学计算机软件必懂的几门基础
2010-03-29
数据库原理 数据库原理基础 学计算机软件必懂的几门基础
2010-03-29
学计算机软件必懂的几门基础
2010-03-29
软件工程基础 软件工程基础知识 软件知识 软件 软件
2010-03-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人