- 博客(61)
- 收藏
- 关注
原创 TCP 如何保证可靠性?
TCP(传输控制协议)是一种面向连接的、可靠的传输层协议,它通过多种机制来保证数据的可靠传输。本文介绍了 TCP 的序列号和确认机制、重传机制、流量控制、拥塞控制、校验和以及连接管理这六个保证可靠性的机制
2024-08-22 00:02:24
972
原创 程序员如何平衡日常编码工作与提升式学习?
在快速迭代的编程世界中,程序员们不仅需要高效完成日常编码任务,还需不断学习新技术、深化专业知识,以应对日益复杂的项目挑战。然而,如何在繁忙琐碎的编码工作与个人成长之间找到平衡,是不少程序员都面临的一个难题。是沉浸在日复一日的工作代码海洋中,还是抽出时间深入探索、自主学习新技术、新理论?又或者,是否存在一种方法,能够让我们在高效工作的同时,也能持续推动自我提升?日常编码工作和自我提升向的学习之间能否架起一座友谊、互利的桥梁呢?对此,你的观点是什么?快来参与讨论,分享你对这两者的看法吧!
2024-08-19 07:22:45
358
原创 Java ThreadPoolExecutor 的介绍及使用
本文介绍了Java线程池的原理以及使用方法,介绍了如何创建不同类型的线程池以使用不同的业务场景,还介绍了线程池的状态、如何向线程池提交任务以及如何如何关闭线程池。此外介绍了一种异步的设计模式 Worker Thread 工作线程,解释什么是饥饿以及如何解决饥饿问题
2024-08-18 15:23:50
753
原创 计网端口相关问题总结
当 TCP 服务进程重启时,服务端会出现 TIME_WAIT 状态的连接,TIME_WAIT 状态的连接使用的 IP+PORT 仍然被认为是一个有效的 IP+PORT 组合,相同机器上不能够在该 IP+PORT 组合上进行绑定,那么执行 bind() 函数的时候,就会返回了 Address already in use 的错误。TCP 连接是由四元组(源IP地址,源端口,目的IP地址,目的端口)唯一确认的,那么只要四元组中其中一个元素发生了变化,那么就表示不同的 TCP 连接的。TCP UCP 协议栈。
2024-08-03 20:00:00
678
原创 TCP 四次挥手涉及到的问题总结
为了被动关闭方正确关闭连接,如果没有 TIME_WAIT 状态,第四次挥手的 ACK 报文丢失了,服务端重传第三次挥手报文,由于客户端没有持续 2MSL 的时间就直接关闭了,所以回复 RST 报文,服务端收到 RST 会将其解析为一个错误,进而关闭连接,这对于可靠的 TCP 来说不是一种优雅的关闭方式。无数据传输:看服务端有没有开启保活机制,如果开启了 keepalive,服务端会发送探测报文,在一段时间内(探测报文重传期间),如果客户端插上网线了,那么两端的 TCP 连接还是可以。
2024-08-03 11:30:00
442
原创 TCP 的全连接队列与半连接队列
本文介绍了TCP连接建立过程中半连接队列和全连接队列的作用,以及如何管理和优化这两个队列以应对高负载情况,包括调整队列大小、更改丢弃策略和防止SYN洪泛攻击的方法
2024-08-02 14:00:00
570
原创 TCP 四次挥手的 TIME_WAIT 为什么持续 2MSL 的时间?
本文介绍了 TCP 四次挥手过程中,主动断开连接方的 TIME_WAIT 状态为什么持续 2MSL 的时间
2024-08-02 12:00:00
1097
原创 HTTPS 如何优化
2. 软件优化:如果可以,把软件升级成较新的版本,比如将 Linux 内核 2.X 升级成 4.X,将 openssl 1.0.1 升级到 1.1.1,因为新版本的软件不仅会提供新的特性,而且还会修复老版本的问题。1. 硬件优化:因为 HTTPS 是属于计算密集型,应该选择计算力更强的 CPU,而且最好选择支持 AES-NI 特性的 CPU,这个特性可以在硬件级别优化 AES 对称加密算法,加快应用数据的加解密。
2024-08-01 19:39:32
257
原创 HTTP 的 Keep-Alive 和 TCP 的 KeepAlive
HTTP 的 Keep-Alive 和 TCP 的 KeepAlive 虽然看起来很相似,并且都与网络连接的维护有关,但它们实际上是在不同的层次和上下文中使用的机制。
2024-08-01 19:32:24
552
原创 MySQL - 锁
本文详细介绍了数据库中的不同类型的锁机制,包括全局锁、表锁、元数据锁(MDL)、意向锁、AUTO-INC锁以及行锁,并解释了每种锁的应用场景、优缺点以及加锁原理
2024-07-31 13:02:12
790
原创 MySQL - 索引
本文讨论了数据库索引的不同类型、InnoDB 中索引的具体实现、如何选择合适的索引、索引失效的情况及其原理,以及索引优化的方法
2024-07-31 12:56:23
1004
原创 park & unpark
本文介绍了针对线程粒度的阻塞唤醒——park/unpark,与 wait/notify 进行对比,并给出底层的实现原理
2024-06-30 19:29:24
901
原创 同步模式之保护性暂停模式
本文介绍了保护性暂停模式,常用在一个线程需要等待另一个线程的结果或者执行结束的场景,JDK 中,join()、Future 的实现用的都是保护性暂停模式,通过对保护性暂停的两种拓展简单介绍了 join 和 Future 的原理
2024-06-28 21:04:44
670
原创 wait/notify 的原理
本文介绍 wait/notify 的原理,由 notify 导致的虚假唤醒问题以及使用 notifyAll 解决虚假唤醒问题,最后介绍使用 wait/notify 的正确姿势
2024-06-28 19:48:10
412
原创 synchronized 锁优化原理
本文介绍 Java 6 之后的 synchronized 锁升级原理,介绍了轻量级锁、锁膨胀、锁的自旋优化、偏向锁和锁消除等优化原理
2024-06-25 15:45:08
1019
原创 TCP - 半连接队列和全连接队列
本文介绍了 TCP 半连接和全连接的概念以及全连接队列和半连接队列溢出时会发生什么情况,还介绍了 SYN 洪泛攻击 / DDos 攻击以及解决方案
2024-05-24 15:19:15
723
原创 MySQL 的执行计划
2. select_type:查询的类型,常见的有 SIMPLE、PRIMARY、SUBQUERY、UNION、DERIVED、UNION RESULT。1. 通过 key 字段查看使用索引的情况,如果 key = null 表示没有使用索引,考虑增加索引或者使用已有索引来查询。1. id:select 语句的序号,id 相同时按顺序执行,id 不同时,id 值越大的,优先级越高,越先执行。6. rows:估算的所需读取的记录或行数,越小越好。5. key:查询时实际用到的索引。
2024-05-14 11:08:22
424
原创 Redis 持久化
介绍了 Redis 持久化的三种方案,分别是 RDB 快照,AOF 日志文件以及两种方式结合的第三种方式——混合持久化。还记录了详细的配置信息,各个方式的底层原理和优缺点以及不同方式的对比,最新版的 Redis 采用的是混合持久化,结合了 RDB 和 AOF 的优点
2024-05-05 22:54:03
891
原创 服务保护和分布式事务
介绍微服务架构风格的系统可以会遇到的雪崩问题,对为什么会产生雪崩进行说明,并分析解决雪崩问题的思路。提供了三种服务保护的方案以解决雪崩问题,分别是请求限流、线程隔离和服务熔断。这些服务保护技术的实现都可以通过 Sentinel 来完成,Sentinel 是一个流量控制组件,需要在项目中整合 Sentinel 即可快速开始使用,简单方便好上手。
2024-02-15 23:53:17
178
原创 Nacos 的配置管理和配置热更新
Nacos 除了作为注册中心之外还可以作为配置管理中心,在分布式场景下让多个微服务共享配置,避免了多个微服务的重复配置
2024-02-14 22:42:53
1441
原创 Spring Cloud Gateway 网关路由
介绍了网关的路由断言、路由过滤器以及网关发起请求时的处理流程(过滤器链)等。使用网关实现了用户统一的登录校验,解决网关传递数据给下游微服务和微服务之间的数据传递的问题。
2024-02-13 00:11:42
2885
1
原创 微服务介绍、使用 Nacos 实现远程调用以及 OpenFeign 的使用
微服务学习笔记,记录微服务的概念、将单体项目拆分为微服务项目的原则和思路;拆分项目之后遇到的问题——不同服务之间的调用,通过远程调用解决,搭建 Nacos 实现注册中心,介绍注册中心的三个角色:注册中心(记录服务注册列表)、服务提供者(向注册中心登记服务)和服务调用者(在注册中心获取服务实例列表),最后分析注册中心服务治理的结果。此外,介绍更简单地使用 HTTP 发送请求进行远程调用的客户端 OpenFeign 及详细的使用步
2024-02-06 23:14:49
4101
原创 LeAPI 后端接口开发 - 发布、下线接口
LeAPI 项目后端接口上线和下线的业务代码开发,使用 Knife4j 接口文档进行测试并通过查看数据库中的接口信息装填变化来确认功能的实现
2024-02-03 14:12:17
655
2
原创 使用 IDEA 开发一个简单易用的 SDK
介绍了什么是 SDK、为什么要提供 SDK、如何开发一个简单易用的 SDK,详细介绍了开发 SDK 的步骤和截图示例,在 SpringBoot 项目中导入自己开发的 SDK(本地的 Maven 仓库中)进行测试,最后介绍了 @ConfigurationProperties 注解的使用。
2024-02-02 22:52:05
6475
原创 API 签名认证
介绍了什么是 API 签名认证、为什么需要 API 签名认证以及如何实现 API 签名认证,签名认证普遍需要六个参数,加密算法中的对称加密、非对称加密和单向加密并举出案例进行说明辅助理解
2024-02-01 23:10:49
1055
1
原创 LeAPI - 使用 oneapi 插件自动生成前端请求代码
介绍 OpenAPI 规范,使用 Ant Design Pro 提供的 oneapi 插件自动生成前端请求接口的代码
2024-01-29 12:00:00
1113
1
原创 使用 Ant Design Pro 初始化前端项目
记录初始化 Ant Design Pro 前端项目时的详细步骤和报错踩坑记录,安装依赖后启动启动项目查看效果
2024-01-28 14:21:57
1414
1
原创 浪花 - 用户匹配算法
浪花用户匹配功能的开发,用户匹配需要计算用户的相似度,根据标签信息来计算,使用了编辑距离算法实现对高相似度用户的筛选,逐步优化查询数据库计算匹配度的性能,分析了几种优化方向并实现部分,较大幅度地提高了用户匹配的效率。最后使用接口文档测试算法的正确性
2024-01-25 19:18:29
1201
原创 Redisson 分布式锁解决主从一致性问题的原理
介绍在 Redis 集群模式下主从不一致问题的产生原因,剖析 Redisson 解决主从不一致问题的原理——mulitLock(联锁)
2024-01-24 22:24:50
1497
1
原创 Redisson 分布式锁可重入的原理
介绍了 Redis 自主实现的分布式锁的弊端——不可重入,并分析使用 Redisson 实现的分布式锁的可重入的原理和核心思想
2024-01-24 21:39:39
756
1
原创 浪花 - 用户退出队伍
浪花用户退出队伍功能的接口开发,分析业务逻辑,区分队长退出队伍和普通队员退出队伍的情况,使用 Knife4j 接口文档进行测试并通过 Debug 发现代码中的 Bug(已解决),测试后查看数据库队伍表和用户 - 队伍关系表的退出情况(逻辑删除)
2024-01-24 14:33:12
503
原创 浪花 - 用户加入队伍
浪花用户加入队伍的后端接口开发,分析业务需求和校验逻辑,使用 Knife4j 接口文档进行测试,并查看数据库用户加入队伍是否成功,检验业务层判断逻辑是否生效(不能重复加入、创建和加入的队伍不能超过 5 个等)
2024-01-23 21:59:48
418
原创 浪花 - 更新队伍信息
浪花更新队伍信息接口的开发记录,分析此接口的需求和业务逻辑,使用接口文档进行测试并记录报错:The dependencies of some of the beans in the application context form a cycle:(Bean 的依赖关系形成循环)已解决✔
2024-01-23 19:57:57
434
原创 浪花 - 查询队伍列表
记录查询队伍列表的功能开发,关联查询了创建队伍的用户信息并封装统一返回类,分析查询队伍列表功能的主要业务逻辑并实现业务代码
2024-01-23 17:27:00
494
原创 浪花 - 添加队伍业务开发
添加队伍功能业务开发,设计接口的请求参数、请求方式、请求路径和响应数据,完善校验逻辑,并使用 Knifej 接口文档进行添加队伍接口的测试
2024-01-23 14:20:09
584
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人