自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

技术研究记录

目前,我在职业上的目标是成为一名优秀的软件工程师(2-sigma),一直在计算机互联网领域进行积累,广泛阅读学习,希望能成为一个有趣的人,喜欢羽毛球,游泳,慢跑,骑行,音乐,电影和纪录片。现在我在南昌大学(211)数学与计算机学院攻读硕士研究生。

  • 博客(31)
  • 收藏
  • 关注

原创 读后感:《The Clean Coder: A Code of Conduct for Professional Programmers》

《The Clean Coder》旨在指导程序员如何以专业态度面对软件开发。书中涵盖责任、时间管理、代码质量、测试及与团队合作等主题,强调职业道德、持续学习和有效沟通的重要性。

2025-01-25 11:43:16 253

原创 代码工艺:实践《修改代码的艺术》中如何安全地在现有代码库中修改代码的方法

《修改代码的艺术》一书提出安全修改代码的步骤:1. 定义变更点;2. 寻找测试点;3. 打破依赖关系;4. 编写测试;5. 修改和重构。通过优化用户信息更新逻辑,拆分复杂方法、引入接口、编写单元测试,最终提升了代码的可读性和扩展性,确保修改安全且保留原有行为。

2025-01-22 22:45:39 389

原创 代码工艺:实践 Spring Boot TDD 测试驱动开发

博客介绍了TDD(测试驱动开发)在Spring Boot中的实践,核心流程为Red-Green-Refactor:先编写失败的测试(Red),再实现功能使测试通过(Green),最后重构代码(Refactor)。通过一个计算税收的接口示例,展示了如何从测试用例出发,逐步实现功能并优化代码,确保代码质量和需求准确性。TDD有助于提高代码质量、支持重构并明确需求。

2025-01-22 16:03:05 643

原创 读后感:《The Missing README: A Guide for the New Software Engineer》

《The Missing READM》是一本详尽介绍现代软件工程细节的书,由资深软件工程师 Chris Riccomini 撰写,内容涵盖重构、技术选型、代码评审等。作者通过实践与经验分享,帮助程序员理解工程本质,解决疑惑,启发职业信仰与成长。

2025-01-18 09:31:00 188

原创 代码工艺:高并发解决方案介绍

通过横向扩展、缓存、ES、分库分表、MQ消峰和单元化等策略,可以有效解决高并发场景下的性能瓶颈,需根据具体需求选择合适的方案。

2024-10-24 16:16:39 1005

原创 代码工艺:写代码的好习惯

总结了在开发过程中应注意的10个重要实践,包括充分校验入参、全面记录日志、考虑网络不稳定性对RPC调用的影响、使用批量处理优化性能、先执行复杂SQL计划、扩展功能而非直接修改、注重代码重构而非重写、避免不必要的技术引入、确保多数据源的一致性以及避免过度的前瞻性设计。

2024-10-23 15:01:03 1274

原创 代码工艺:SQL 优化的细节

优化 MySQL 查询性能的策略包括:避免深分页查询,使用like时避免全模糊匹配,使用union all提高效率,适时使用straight_join优化表连接顺序,合理选择exists和in,清表优先truncate,批量操作减少资源开销,过滤不必要的数据优先,避免在索引列使用函数,选择合适的数据类型,慎重选择char和varchar,索引策略要合理,必要时强制使用索引,并控制多表关联查询的规模。

2024-10-23 14:38:18 1183

原创 代码工艺:Spring Boot 防御式编程实践

防御式编程是一种编程实践,其核心理念是编写代码时要假设可能会发生错误、异常或非法输入,并通过各种手段防止这些问题引发系统崩溃、错误行为或安全漏洞。该编程方法的目的是让程序在面对不可预测的情况(如输入数据异常、硬件故障、意外的用户行为等)时仍然能够安全、稳定地运行。防御式编程特别强调在开发阶段尽可能地考虑各种边界情况、异常处理和系统的健壮性。

2024-10-02 21:00:56 1378 1

原创 程序员的自我修养:保持健康,预防脱发

每天走八千步,唱正能量的歌(《稻香》)/和能量高的朋友聊天,多喝热水(咖啡,绿茶,洋甘菊),每周至少三次的有氧运动三次的力量训练(去公园跑步,囚徒训练例如俯卧撑等可执行比较强),经常洗手(酒精凝胶),营养均衡(蔬菜水果),睡眠充足(8 h),心态乐观。

2024-10-01 21:05:16 258

原创 程序员的自我修养:大脑有效放松的方式

正确的脑放松方式应促进身心和谐,而错误的脑放松方式可能导致大脑过度负荷或被动消耗能量。

2024-08-19 21:28:58 490

原创 技术研究:Tomcat是如何打破双亲委派机制的实现应用程序的类库相互隔离

我们知道类加载的时候要确保唯一性的,但是总不能要求同一个类库在 Web 容器中只有一份吧?所以 Tomcat 就需要保证每个应用程序的类库都是相互隔离并独立的,这也是它为什么打破双亲委派机制的主要目的。

2024-08-18 17:39:05 214

原创 技术研究:Redis 实现消息队列

消息队列应用的三大需求是:1、消息保序;2、重复消息处理;3、消息可靠性保证。对应处理方案是:1、消息数据有序存取;2、消息数据具有全局唯一编号;3、消息数据在未消费完宕机恢复时继续消费,消费完成后被删除。

2024-08-13 18:22:26 1490

原创 技术研究:Redis 数据结构与 I/O 模型

Redis之所以“快”,一方面因为它是内存数据库,所有操作都在内存上完成,内存的访问速度本来就快。另一方面则是因为高效的数据结构,使得操作键值效率较高。

2024-08-13 17:06:48 704

原创 经典算法题总结:数组常用技巧(双指针,二分查找和位运算)篇

所谓左右指针,就是两个指针相向而行或者相背而行;而所谓快慢指针,就是两个指针同向而行,一快一慢。

2024-08-12 17:33:03 594

原创 经典算法题总结:回溯,动态规划篇

动态规划(Dynamic Programming,简称DP)是一种通过将复杂问题分解为更小的子问题来解决问题的算法设计方法。与分治法类似,动态规划也将问题分解,但不同的是,动态规划适用于那些子问题重叠的情况,即同一子问题会被多次计算。通过记忆化技术(Memoization)或自底向上(Bottom-Up)的方式,动态规划可以显著减少计算量。

2024-08-11 14:58:43 762

原创 经典算法题总结:十大排序算法,外部排序和Google排序简介

快速排序(Quick Sort)是一种常用的高效的排序算法,它是一种基于比较的排序算法,利用了分治(自顶向下)的思想。快速排序的主要思想是选择一个基准元素,将数组分成两个子数组,一个子数组的所有元素都小于基准元素,另一个子数组的所有元素都大于基准元素,然后递归地对这两个子数组进行排序,最后将它们合并起来。

2024-08-10 18:34:49 681

原创 经典算法题总结:哈希表,栈,队列,堆篇

哈希表这种 key,value 的集合结构可以在算法中实现记录的功能,并实现 O(1) 复杂度的查找。

2024-08-10 18:14:45 352

原创 经典算法题总结:链表篇

链表的题目注意画图辅助思考防止断链;如果需要构造新的链表使用伪头结点(dummyHead)可以简化操作;双指针(快慢指针,左右指针)。

2024-08-10 18:00:46 723

原创 经典算法题总结:二叉树篇

无论使用哪种思维模式,你都需要思考:如果单独抽出一个二叉树节点,它需要做什么事情?需要在什么时候(前/中/后序位置)做?其他的节点不用你操心,递归函数会帮你在所有节点上执行相同的操作。

2024-08-10 17:35:25 808

原创 技术研究:MySQL 底层为什么要采用 B+ 树?讨论其他数据结构的可行性

MySQL 采用 B+ 树作为其主要的数据结构,而不是其他常见的数据结构如 B 树、哈希表或跳表。这样,当相近的数据紧接着被访问时,可以直接从缓存中读取,无需进行额外的磁盘 I/O 操作。B+ 树的所有数据都存储在叶子节点上,且所有叶子节点之间通过链表相连。综合考虑查询效率、磁盘 I/O 次数和范围查询性能,B+ 树在数据库系统中的表现优于其他数据结构。B+ 树具有更高的阶数(每个节点包含更多的子节点),这使得树的高度较低。较低的树高意味着在进行数据检索时,访问磁盘的次数减少,从而显著提高了检索效率。

2024-08-05 20:11:45 711

原创 计算机基础:HTTP/3 协议机制概述

HTTP/3是 HTTP 协议的最新版本,其最大的特点是放弃了传统的 TCP 协议,转而采用基于 UDP 的 QUIC 协议。QUIC(Quick UDP Internet Connections)是由 Google 开发的一种低延迟传输协议,旨在提高 Web 传输的性能和可靠性。

2024-08-05 17:17:40 1109

原创 技术研究:MySQL InnoDB存储引擎索引数据结构与算法原理和优化概述

主要介绍了MySQL InnoDB存储引擎索引的数据结构与算法原理,以及优化概述。内容分为几个部分:MySQL架构概览、InnoDB存储引擎使用B+树的原因、B+树的Java代码实现及复杂度分析、InnoDB存储引擎中的B+树索引、B+树索引创建策略、慢查询优化实验、哈希表、全文索引、R树实现的空间索引,以及开源精神内涵。

2024-07-08 15:20:46 225 1

原创 计算机基础:网络层为什么要划分不同的自治系统(Autonomous Systems, AS)?

自治系统的划分使得网络拓扑变化的影响被局限在一个AS内部,减少了对整个互联网的影响。这样,网络收敛速度(即网络适应变化并恢复正常状态的速度)得到显著提高,确保了网络的稳定性和可靠性。这样可以将潜在的安全威胁局限在较小的范围内,减少对整个网络的风险。每个AS内部使用IGP进行路由,而在AS之间使用EGP进行路由,这样可以有效减少每个路由器需要处理的路由信息量。通过这种方式,可以提高路由器的效率和性能,减少路由表的规模。各个AS可以独立定义自己的路由策略、协议和安全措施,适应其特定的需求和目标。

2024-05-30 19:52:30 388

原创 计算机基础:TCP中的粘包,拆包问题产生原因及解决方案

粘包和拆包是 TCP 协议在数据传输中常见的问题,因为 TCP 是基于字节流传输的协议,不会维护消息或数据包的边界。

2024-05-23 16:33:19 494

原创 效率工具:ChatGPT Plus 升级方案,提高编程学习效率

MMLU (Massive Multitask Language Understanding) 基准测试:GPT-3.5:准确率约为 70.1%。GPT-4:准确率约为 86.4%。HumanEval(编程任务基准测试):GPT-3.5:平均得分约为 48%。GPT-4:平均得分约为 67%。

2024-05-23 12:49:22 1185

原创 项目学习:学习练习项目总结(BBS,shortlink,RPC)

学习的思路是从单体项目(BBS)到微服务分布式项目(shortlink)到自制底层框架项目(RPC),选取的都是 Github 开源项目,有很完善的代码和文档可供学习。

2024-05-22 16:14:52 966

原创 计算机基础:深入理解计算机系统(软硬件协同角度)

计算机是迄今为止最为复杂的一个系统之一,其作用在于按照确定的顺序完成认类预设好的指令,而这些预设好的指令就是我们所熟知的程序。

2024-05-02 22:09:31 2272 1

原创 经典算法题总结:Fibonacci数列,从递归,动态规划,滚动数组,矩阵快速幂到通项公式

Fibonacci数列是一个无限序列,其前两项为0和1,后续项由前两项相加得到。换句话说,第n个Fibonacci数(记为F(n))等于前两个Fibonacci数之和,即F(n) = F(n-1) + F(n-2),其中n大于等于2。

2024-04-30 17:04:18 556 1

原创 效率工具:ChatGPT使用技巧总结和原理介绍

指令(Prompt)可以帮助大模型更好地理解用户意图,并输出更准确、有意义的文本内容。

2024-04-30 16:24:05 800

原创 坑:8080 端口冲突 kill 相应进程反复重启问题

通过以下命令可以发现是哪个进程占用了端口,并查看该进程的存储位置,我这里的问题发现是 Zookeeper 在不断地重启,之前并没有自己安装过,想到 Kafka 之前的版本是依赖于 Zookeeper 的,便猜测是 Kafka 的问题,通过 brew list 命令查看了安装的目录发现了 Zookeeper,于是 brew install 命令卸载发现卸载失败 Kafka 有功能依赖,于是先卸载 Kafka,再卸载 Zookeeper 显式成功,问题解决。8080是一个用于显示进程信息的命令。-f。

2024-03-17 13:34:30 573

原创 效率工具:Mac修改hosts文件加速Github访问

在Gitee上找到了一个项目,其中就有GitHub的IP-域名映射清单:https://gitee.com/klmahuaw/GitHub520,然后,我们将下面的内容复制添加到hosts文件下即可,打开文件 /etc/hosts,并赋予读写权限。

2024-03-05 14:29:55 1412

空空如也

空空如也

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

TA关注的人

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