- 博客(171)
- 资源 (2)
- 收藏
- 关注
原创 [灵感源于算法] 链表类问题技巧总结
本文总结了链表类问题的四大解题技巧:1) 通过画图辅助理解指针操作,特别是反转链表等复杂场景;2) 使用虚拟头节点简化边界条件处理;3) 多指针协同操作解决插入/删除问题;4) 快慢指针技巧检测环路、查找中点和倒数节点。文章以LeetCode真题为例,详细展示了每种技巧的代码实现和优势分析,如两数相加的逆序处理、K个一组翻转链表的头插法等。掌握这些核心方法可显著提升链表问题的解决效率。
2025-06-11 21:36:37
1291
16
原创 [C++错误经验]case语句跳过变量初始化
摘要: C++编译错误"jump to case label"通常发生在switch语句中,当程序流跳转跳过变量初始化时(如从case 1直接跳到case 2)。错误示例显示string变量qq在case 1中定义,但可能被后续case跳过初始化。解决方法包括:1) 用大括号将每个case代码块形成独立作用域;2) 将变量定义移至switch外部;3) 仅在使用变量的case中定义。修正后代码需用{}限定变量作用域,避免跨case跳转引发的初始化问题。该问题源于C++对变量生命周期的严格
2025-06-09 10:08:29
411
8
原创 [MySQL初阶]MySQL(7) 表的内外连接
本文介绍了MySQL中表的内外连接操作。内连接(INNER JOIN)仅返回两表匹配的行,不显示NULL值;外连接则保留主表全部数据,分为左外连接(保留左表所有行)、右外连接(保留右表所有行)和全外连接(保留两表所有行)。MySQL不直接支持全外连接,需通过UNION实现。选择连接方式取决于需求:需要完全匹配用内连接,保留主表全部数据用左/右外连接,保留两表所有数据需模拟全外连接。实际应用中,内连接最为常见,左外连接次之。
2025-06-02 11:38:20
1156
3
原创 [Protobuf]常见数据类型以及使用注意事项
本文介绍了Protobuf常见数据类型及使用注意事项。主要内容包括:基本数据类型:列举了double、float、int32/64等数值类型,以及bool、string、bytes等,并说明其编码方式和取值范围字段规则:强调字段编号的唯一性、命名规范,以及singular/repeated修饰符的区别自定义类型:message类型可嵌套使用enum类型需注意常量值冲突Any类型支持泛型数据处理oneof类型只能保留最后设置的值map类型键值对的限制
2025-06-01 15:45:24
938
29
原创 [Redis] Redis:高性能内存数据库与分布式架构设计
Redis:高性能内存数据库与分布式架构设计 摘要:本文分为两部分探讨Redis及分布式架构。第一部分介绍Redis核心特性:作为内存数据库支持多种数据结构(字符串/哈希/列表等),具备微秒级读写、持久化选项和10万+QPS的高性能,适用于缓存加速、实时排行榜等场景。通过与传统数据库对比,突显其速度优势但受限于内存容量。第二部分分析架构设计演进,从单机架构的简单低成本,到应用与数据库分离架构的核心优势——独立扩展性、故障隔离和安全性提升,同时指出网络延迟和复杂度增加的问题。文章揭示了分布式系统设计中性能与可
2025-05-29 21:11:51
894
3
原创 [Protobuf] 快速上手:安全高效的序列化指南
摘要: Protobuf(Protocol Buffers)是Google开发的高效数据序列化工具,支持跨语言、跨平台,体积小且性能优越。本文介绍了Protobuf的基本概念、特点及使用流程: 定义消息格式:通过.proto文件指定数据结构,支持语法版本(如proto3)和包声明。 生成代码:使用protoc编译器将.proto文件编译为对应语言(如C++)的代码,提供序列化/反序列化接口,减少开发负担。 业务集成:在项目中引入生成的类,直接调用接口处理数据。 Protobuf适用于长期演进的系统,具有优秀
2025-05-25 17:23:46
1191
30
原创 [项目深挖]仿muduo库的并发服务器的解析与优化方案
文章探讨了仿muduo库的并发服务器优化方案,重点分析了buffer模块和EventLoop模块的改进策略。在buffer模块中,提出了环形缓冲区+定时扩容、双缓冲、数据丢弃策略以及零拷贝技术,以提高内存利用率和数据传输效率。EventLoop模块则通过减少锁的使用、优化定时器处理等方式提升性能,如使用无锁队列替代传统锁机制,以及采用时间轮代替最小堆来降低定时任务处理的复杂度。这些优化方案旨在提升服务器的并发处理能力和资源利用率,适用于高负载、实时性要求高的场景。
2025-05-15 21:06:36
1233
1
原创 [项目深挖]为什么模拟实现的TCMalloc性能比Google的更高效?
在模拟实现Google的TCMalloc时,尽管模拟版本在跨平台性、内存管理范围和功能全面性上不如原版,但在某些特定场景下性能却优于原版。主要原因包括:1)内存管理粒度差异,模拟版本在小块内存分配上更高效,而原版在大块内存分配上占优;2)Windows平台适配差异,原版在移植到Windows时可能因系统调用机制不同引入额外开销;3)线程本地存储(TLS)优化,模拟版本使用静态TLS机制,访问速度显著快于原版的动态TLS;4)功能取舍,模拟版本通过牺牲跨平台性和部分高级功能,换取局部性能优化。测试结果表明,模
2025-05-14 09:58:55
625
1
原创 [数据结构高阶]并查集初识、手撕、可以解决哪类问题?
并查集是一种用于处理不相交集合的数据结构,支持查找元素所属集合、合并集合等操作。其核心思想是通过树形结构表示集合关系,使用数组存储每个元素的双亲信息。并查集常用于解决以下问题:1) 查找元素所属集合;2) 判断两个元素是否属于同一集合;3) 合并两个集合;4) 统计集合数量。例如,在“省份数量”问题中,可以通过并查集将同一省份的城市合并,最终统计省份数量。在“等式方程的可满足性”问题中,并查集用于判断等式是否成立。并查集的实现通常基于数组,通过路径压缩和按秩合并优化性能。
2025-05-12 19:59:39
1162
43
原创 [Linux]多线程(二)原生线程库---pthread库的使用
本文详细介绍了Linux下pthread库的使用,涵盖了多线程编程的核心函数和概念。主要内容包括:线程创建:通过pthread_create创建线程,需注意参数传递和资源管理。线程回收:使用pthread_join等待线程结束并回收资源,避免资源泄漏。线程退出:通过pthread_exit或return终止线程,区分主线程与子线程的退出行为。线程分离:使用pthread_detach将线程标记为分离状态,线程结束后自动释放资源。互斥锁与条件变量:通过pthread_mutex和pthread_c
2025-05-10 16:26:20
912
15
原创 [Linux]多线程(一)充分理解线程库
在学习OS的时候,如果要完成一件任务,你的第一反应一定是创建一个线程。什么是线程?线程在进程内部运行,是CPU调度的基本单位。而进程呢?进程=内核数据结构+代码和数据,是系统资源分配的基本单位。
2025-05-06 21:18:44
1423
42
原创 [错误经验 坑]关于UDP服务器和客户端通信使用的recvfrom的输出型参数len没有被初始化导致的问题
[错误经验 坑]关于UDP服务器和客户端通信使用的recvfrom的输出型参数len没有被初始化导致的问题实际在填入len这个参数的时候,需要首先把len初始化为sizeof(tem)(无论是客户端还是服务端),看似len是传地址,是一个输出型参数,但是实际上,它不仅仅起到输出型参数的作用。的核心系统调用,常用于无连接的套接字(如 UDP)。它不仅能接收数据,还能获取发送方的地址信息。看到标题,你一定很困惑,输出型参数?
2025-04-10 17:24:11
825
4
原创 [MySQL初阶]MySQL(9)事务机制
标题:[MySQL初阶]MySQL(9)事物机制MySQL是一款网络服务,那么必定有多个客户端同时访问服务器的场景出现:假如有一个抢票系统,有两个客户端抢票,一个客户端抢票之后,数据库还没有及时更新,这张票又被另一个客户端抢了一次,一张票被卖了两次。这不符合逻辑!于是,必须要对数据库的CURD操作进行一定的限制,才能解决上面的问题。事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。事务主要用于处理操作量大,复杂度高的数据。比
2025-04-05 20:47:54
1726
58
原创 [MySQL初阶]MySQL(8)索引机制:上
[MySQL初阶]MySQL(8)索引机制MySQL以16KB为基本单位进行MySQL级别的IO(本质其实是MySQL借助OS来对磁盘进行访问);MySQL有自己的:MySQL在启动的时候,会给自己申请一个内存池,在读数据从buffer poll中读取;写数据则写到buffer poll中,进而刷新到文件缓冲区,最后刷新到磁盘。进行系统级IO的时候,要尽可能减少系统和磁盘IO的次数。未完待续~转载请注明出处。
2025-04-03 22:10:07
1105
41
原创 [C++] 智能指针 进阶
[C++] 智能指针 进阶在很久之前我们探讨了智能指针的浅显认识,接下来会更加深入,从源码角度认识智能指针,从而了解智能指针的设计原理,并应用到以后的工作项目中。本文将会按照C++智能指针的发展历史,回顾智能指针的各个版本的设计。后半部分将会模拟实现最常考的shared_ptr的功能。
2025-03-29 14:33:48
931
49
原创 [C++经验总结]为什么/什么时候要给基类声明virtual析构?
带有多态性质的base类应该被声明一个virtual析构,一般而言,如果一个类带有任何virtual函数,他就应该拥有一个virtual析构。类的设计目的不是作为base类使用,或是明确不是为了具备多态性,就不应该把析构设置为virtual。继承STL往往是一个馊主意,因为标准STL没有实现virtual析构。
2025-03-28 10:35:00
1041
26
原创 [多线程]基于单例懒汉模式的线程池的实现
[多线程]基于单例懒汉模式的线程池的实现:ThreadPool类实现了一个线程池的基本功能,当然你也可以在这个线程池的基础上扩充实现自己需要的功能。设计中使用单例模式确保只有一个线程池实例,使用互斥锁和条件变量保证多线程环境下的线程安全,使用日志记录监控线程池的运行状态。
2025-03-12 17:05:10
877
32
原创 [多线程]基于环形队列(RingQueue)的生产者-消费者模型的实现
[多线程]基于环形队列(RingQueue)的生产者-消费者模型的实现
2025-03-11 16:01:16
964
31
原创 [多线程]基于阻塞队列(Blocking Queue)的生产消费者模型的实现
[多线程]基于阻塞队列(Blocking Queue)的生产消费者模型的实现
2025-03-11 13:22:40
995
29
原创 [HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(2)实操部署
[HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(2)HTTP服务器设计样例一、无法拷贝类(class uncopyable)的设计二、锁的RAII设计三、基于RAII模式和互斥锁的的日志系统设计四、网络地址信息的封装管理五、基于OOP和RAII模式管理网络套接字六、下层TCP服务器类的设计七、服务器main函数设计八、应用层HTTP服务器的设计
2025-03-08 18:16:36
1522
69
原创 [HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(1)知识基础
[HTTP协议]应用层协议HTTP从入门到深刻理解并落地部署自己的云服务(1)知识基础:通过从零认识HTTP协议的设计原理,理念到从零开发一台自己的云服务机器。包括Linux系统编程经验,具体实例。讲解通俗易懂,从入门到应用。Http协议的基本认识、网络协议、网络协议栈、HTTP报文、格式。
2025-03-06 20:57:59
1231
23
原创 [MySQL初阶]MySQL(4)基本查询
[MySQL初阶]MySQL(4)基本查询CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除)WHERE子句,ORDER BY子句,DISTINCT,LIMIT等示例详解
2025-03-06 10:43:57
816
19
原创 [MySQL初阶]MySQL(3)表的约束
[MySQL初阶]MySQL(3)表的约束null/not null,default, comment, zerofill,primary key,auto_increment,unique key
2025-03-05 16:55:48
1441
47
原创 [MySQL初阶]MySQL(2)数据类型精讲&&静态类型和动态类型的对比
[MySQL初阶]MySQL(2)数据类型精讲&&静态类型和动态类型的对比.enum,set,varchar
2025-03-05 15:00:22
884
25
原创 [MySQL]如何在Ubuntu快速安装MySQL,开启高效管理海量数据的新世界大门?
[MySQL]如何在Ubuntu快速安装MySQL,开启高效管理海量数据的新世界大门?
2025-03-01 19:37:52
1275
33
原创 [Linux]信号(signal)详解(三):信号总结、信号在实操编码中如何应用:常见库函数的使用
[Linux]信号(signal)详解(三):信号总结、信号在实操编码中如何应用:常见库函数的使用
2025-02-11 18:45:41
965
23
原创 [Linux] 信号(singal)详解(二):信号管理的三张表、如何使用coredump文件、OS的用户态和内核态、如何理解系统调用?
[Linux] 信号(singal)详解(二):信号管理的三张表、如何使用coredump文件、OS的用户态和内核态、如何理解系统调用?
2025-02-11 18:30:00
1224
31
原创 [Linux] 逐层深入理解文件系统 (2)—— 文件重定向
[Linux] 逐层深入理解文件系统 (2)—— 文件重定向。不同文件缓冲区的刷新策略
2024-10-14 15:18:49
1410
2
Python学习基础,语法基础,库的使用等
2025-01-07
该项目为民航飞机管理系统,通过三个类City,Map,Plane三个类之间的交互来模拟实现现实中的民航飞机管理系统
2024-06-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人