自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

石墨博客

不积跬步无以至千里

  • 博客(171)
  • 资源 (2)
  • 收藏
  • 关注

原创 [灵感源于算法] 链表类问题技巧总结

本文总结了链表类问题的四大解题技巧:1) 通过画图辅助理解指针操作,特别是反转链表等复杂场景;2) 使用虚拟头节点简化边界条件处理;3) 多指针协同操作解决插入/删除问题;4) 快慢指针技巧检测环路、查找中点和倒数节点。文章以LeetCode真题为例,详细展示了每种技巧的代码实现和优势分析,如两数相加的逆序处理、K个一组翻转链表的头插法等。掌握这些核心方法可显著提升链表问题的解决效率。

2025-06-11 21:36:37 1291 16

原创 [灵感源于算法] 算法问题的优雅解法

本文总结了一些我在编程中的某一灵感展开的思考总结

2025-06-10 15:30:13 907 15

原创 [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

原创 [Linux]虚拟地址到物理地址的转化

[Linux]物理地址到虚拟地址的转化

2025-05-05 14:15:09 2059 31

原创 [错误经验 坑]关于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)索引机制:下

2025-04-03 23:16:31 664 16

原创 [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++开发经验总结]何时用push?/何时用emplace?

[C++开发经验总结]何时用push?/何时用emplace?

2025-03-28 15:15:52 952 13

原创 [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(5)内置函数详解

[MySQL初阶]MySQL(5)内置函数详解数学函数、字符串函数、日期类函数

2025-03-06 17:27:44 1265 21

原创 [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初阶]MySQL(1)MySQL的理解、库的操作、表的操作

对mysql的深入理解、mysql数据库的操作、表的操作

2025-03-03 16:33:48 1412 43

原创 [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

原创 2024年度总结——书山有路勤为马,收拾行囊再出发

2024年度总结——书山有路勤为马,收拾行囊再出发

2025-01-23 17:40:35 853 18

原创 [Linux] 信号(singal)详解(一)

[Linux] 信号(singal)详解

2024-12-02 14:09:55 1249 45

原创 [Linux] 进程间通信——匿名管道&&命名管道

[Linux] 进程间通信——匿名管道&&命名管道

2024-11-30 08:55:38 1104 13

原创 [Linux] linux 软硬链接与动静态库

[Linux] linux 软硬链接 与 动静态库

2024-10-29 21:59:56 1394 51

原创 [Linux] 层层深入理解文件系统——(3)磁盘组织存储的文件

[Linux] 层层深入理解文件系统——(3)磁盘组织组织存储的文件

2024-10-14 23:35:44 1387 13

原创 [Linux] 逐层深入理解文件系统 (2)—— 文件重定向

[Linux] 逐层深入理解文件系统 (2)—— 文件重定向。不同文件缓冲区的刷新策略

2024-10-14 15:18:49 1410 2

原创 [Linux] 逐层深入理解文件系统 (1)—— 进程操作文件

[Linux] 逐层深入理解文件系统 (1)—— 进程操作文件

2024-10-13 21:56:50 981 5

Python学习基础,语法基础,库的使用等

与C++等老牌编程语言相比,Python在语法简洁性、开发效率和学习曲线方面展现出明显优势。C++以其强大的性能和底层控制能力著称,但在编写复杂逻辑和算法时,往往需要更多的代码量和更高的编程技巧。而Python则以其简洁的语法和丰富的内置函数库,让开发者能够以更少的代码实现相同的功能。 此外,Python的动态类型系统和垃圾回收机制也减轻了开发者的负担,使得代码更加易于维护和调试。在快速迭代和原型开发的场景下,Python更是展现出了无与伦比的优势。 总之,我的这份Python学习笔记旨在帮助大家系统地掌握Python编程技能,开启编程世界的大门。无论你是编程初学者还是有一定经验的开发者,都能从中受益。期待与你在CSDN上共同探讨Python的奥秘! 本笔记从Python的基础语法入手,详细讲解了变量、数据类型、控制结构(如条件语句和循环)、函数定义与调用等核心概念。通过丰富的实例,让读者能够迅速上手并编写出简单的Python程序。 随着学习的深入,笔记进一步探讨了Python中的函数模块,包括内置函数、自定义模块以及第三方库的导入与使用等。(内容通过文心一言生成,目的是对笔记内容简介

2025-01-07

该项目为民航飞机管理系统,通过三个类City,Map,Plane三个类之间的交互来模拟实现现实中的民航飞机管理系统

项目的功能如下: 1.增加城市信息 输入城市编号、名称、坐标等信息,在城市列表尾部追加一条记录。一次只能追加一条城市信息。 2.删除城市信息 输入一个城市的编号,(城市编号是城市的唯一标识,即一个编号对应一个城市,不同城市,编号不同) 3.修改城市信息 4.保存城市信息至文件 提示用户输入一个文件名,如用户输入map.txt,然后系统自动将地图信息列表中的全部城市信息写入该正文文件。 5.从文件读取城市信息 在执行本功能前,请准备好正文文件,文件名请自行给出。 6.现实所有城市信息 7.设置飞机信息 输入飞机编号、名称、重量(吨)、当前的坐标位置等信息,后续将使用飞机信息和地图信息进行综合计算。 8.显示飞机信息 在一行中现实当前飞机的所有信息,目前系统只储存一架飞机的信息。 9.判断起飞飞机是否可以刹车 用户输入当前飞机速度和跑道剩余距离,然后结合飞机自身重量判断是否刹车。计算公式简化后为:飞机重量(吨)*当前飞机速度(公里/小时)/5<跑道剩余的距离(米)。 10.查询飞机雷达半径内所有城市信息用户输入雷达的扫描半径扫描地图信息列表中所有城市的坐标。

2024-06-16

空空如也

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

TA关注的人

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