- 博客(90)
- 收藏
- 关注
原创 算法专题(八):分治-归并排序
本篇通过讲解 排序数组、LCR 170.交易逆序对的总数(数组中的逆序对)、计算右侧小于当前元素的个数、翻转对 ,四道题目来讲解分治-归并算法!
2025-04-06 20:20:33
390
原创 【C++】从零实现Json-Rpc框架(2)
本篇文章是对第三方库介绍和使用(JsonCpp库,Muduo库)和C++11 异步调用的介绍!
2025-04-05 21:15:00
1741
1
原创 【C++】从零实现Json-Rpc框架(1)
RPC(Remote Procedure Call)远程过程调用,是一种通过网络从远程计算机上请求服务,而不需要了解底层网络通信细节。RPC可以使用多种网络协议进行通信, 如HTTP、TCP、UDP等, 并且在TCP/IP网络四层模型中跨越了传输层和应用层。简言之RPC就是像调用本地方法一样调用远程方法。
2025-04-05 19:00:00
788
原创 算法专题(七):分治-快排
本文通过leetcode的四道题目,颜色分类、排序数组、数组中第K个最大元素、LCR 159. 库存管理 III,来讲解分治-快排算法!
2025-03-23 13:50:35
782
原创 【Linux】Ext系列文件系统(下)
我们想要在硬盘上储文件,必须先把硬盘格式化为某种格式的文件系统,才能存储文件。文件系统的目的就是组织和管理硬盘中的文件。由于 ext2 文件系统具有较高的稳定性和可靠性,被广泛应用于 Linux 服务器中,用于存储系统文件、用户数据、应用程序等。
2025-03-19 12:10:55
949
原创 【Linux】Ext系列文件系统(上)
文件=属性+内容。被打开的文件通过基础IO到内存中,没有被打开的文件在磁盘中。文件在磁盘上最基本的诉求就是被用户找到,这也是文件系统最基本的诉求。
2025-03-17 20:00:00
942
原创 【拓展学习】deepseek从入门到精通
DeepSeek-R1,由深度求索公司开发的智能助手,擅长通过思考树框架进行深度逻辑推理。能流畅使用多语言提供信息查询、数据分析、知识解答等服务,覆盖科技、教育、生活等广泛领域
2025-03-16 11:50:16
946
原创 【Linux】缓冲区
缓冲区是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。
2025-03-09 14:21:54
1044
1
原创 【Linux】详谈 基础I/O
在windows中是文件的东西,它们在linux中也是文件;其次一些在windows中不是文件的东西,比如进程、磁盘、显示器、键盘这样硬件设备也被抽象成了文件,你可以使用访问文件的方法访问它们获得信息。
2025-03-09 12:58:47
860
1
原创 【Linux】进程地址空间和虚拟地址空间
进程地址空间是操作系统为每个进程分配的独立内存区域,用于存储代码、数据、堆和栈等信息。通过虚拟内存机制,操作系统实现了进程之间的内存隔离,提高了系统的安全性和稳定性。
2025-03-01 12:45:31
869
1
原创 【linux】详谈 环境变量
在 Linux 系统中,环境变量是一种动态的命名值对,用于配置和影响程序的运行环境。它们为程序提供了系统级别的信息,例如用户的家目录、默认的文本编辑器、系统路径等。它们为程序提供了灵活的配置方式,同时也简化了系统的管理。
2025-03-01 10:53:39
1175
2
原创 算法专题(四):前缀和
本篇文章通过【模版】前缀和、【模版】二维前缀和、寻找数组的中心下班、除自身以外数组的乘积、和位K的子数组、和可被K整除的子数组、连续数组、矩阵区域和,这八道题目讲解前缀和算法!
2025-02-21 19:17:51
995
1
原创 【Linux】详谈 进程控制
本文将系统介绍进程控制的基本要素,包括进程创建, 进程终止, 进程等待等方面。深入理解进程创建的相关知识, 帮助更好的构建知识架构!进程控制是操作系统中的一个重要主题,主要涉及如何管理和调度进程以确保计算机系统的高效运行!
2025-02-15 22:32:09
1438
1
原创 【Linux】冯诺依曼体系结构和操作系统概念理解
冯诺依曼体系是现代计算机的基本架构。主要特点是存储程序控制,用二进制表示数据和指令,指令和数据分开存储且顺序执行。由运算器、控制器、存储器、输入设备、输出设备组成。1946 年由冯・诺依曼提出,随着第一台 “存储程序” 计算机 EDVAC 诞生奠定基础。该体系奠定现代计算机基础,推动计算机技术发展,促进计算机应用的普及。截至目前,我们所认识的计算机,都是由一个个的硬件组件组成• 输入单元:包括键盘, 鼠标,扫描仪, 写板等• 中央处理器(CPU):含有运算器和控制器等。
2025-02-06 11:34:01
759
原创 【Linux】自动化构建-make/Makefile
• make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。• make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。
2025-01-26 12:13:29
854
1
原创 【Linux】gcc/g++的使用
GCC(GNU Compiler Collection)是一个开源的编译器集合,支持多种编程语言,其中 gcc 和 g++ 是最常用的两种编译器。gcc:用于编译 C 语言程序。它是编译 C 代码的主要工具,也能处理一些其他语言(如 Objective-C、Fortran 等),但默认用于 C。g++:用于编译 C++ 程序。它不仅能编译 C++ 代码,还会自动链接 C++ 标准库(如 libstdc++)。默认链接库:g++ 自动链接 C++ 标准库,gcc 需要手动处理。
2025-01-26 11:40:00
934
1
原创 算法专题(三):二分查找
请大家一定不要觉得背下模板就能解决所有二分问题(不要死记模版)。二分问题最重要的就是要分析题意,然后确定要搜索的区间,根据分析问题来写出二分查找算法的代码。1. 关于什么时候用三段式,还是二段式中的某一个,一定不要强行去用,而是通过具体的问题分析情况,根据查找区间的变化确定指针的转移过程,从而选择一个模板。
2025-01-21 21:37:47
1215
原创 算法专题(二):滑动窗口
本文通过讲解 长度最小的子数组、无重复字符法最长子串、最大连续1的个数III、将x减到0的最小操作数、水果成篮、找到字符串中的所以字母异位词、串联所有的字符串、最小覆盖子串 等八道题来讲解滑动窗口算法!
2025-01-16 15:11:21
1040
原创 算法专题(一):双指针
本文通过 移动零、复写零、快乐数、盛水最多的容器、有效三角形的个数、查找总价格为目标值的两个商品(和为s的两个数字)、三数之和、四数之和 八道题来讲解双指针算法!
2025-01-14 14:21:44
866
原创 Linux基本指令(汇总)
本篇介绍了Linux中的ls、pwd、cd、touch、mkdir、rmdir、rm、man、cp、mv、cat、more、less、head、tail、date、cal、find、which、whereis、alias、grep、zip、tar、umame-r 等指令!
2025-01-08 22:38:03
851
原创 【C++】智能指针的使用及其原理
什么是内存泄漏:内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存,一般是忘记释放或者发生异常释放程序未能执行导致的。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏的危害:普通程序运行一会就结束了出现内存泄漏问题也不大,进程正常结束,页表的映射关系解除,物理内存也可以释放。
2025-01-01 15:41:17
1149
1
原创 【C++】异常
异常处理机制允许程序中独立开发的部分能够在运行时就出现的问题进行通信并做出相应的处理,异常使得我们能够将问题的检测与解决问题的过程分开,程序的一部分负责检测问题的出现,然后解决问题的任务传递给程序的另一部分,检测环节无须知道问题的处理模块的所有细节。C语言主要通过错误码的形式处理错误,错误码本质就是对错误信息进行分类编号,拿到错误码以后还要去查询错误信息,比较麻烦。异常时抛出一个对象,这个对象可以函数更全面的各种信息。
2024-12-29 15:39:36
972
原创 【C++11】类型分类、引用折叠、完美转发
C++11以后,进一步对类型进行了划分,右值被划分纯右值(pure value,简称prvalue)和将亡值(expiring value,简称xvalue)。纯右值是指那些字面值常量或求值结果相当于字面值或是一个不具名的临时对象。如: 42、true、nullptr 或者类似str.substr(1, 2)、str1 + str2 传值返回函数调用,或者整形a、b,a++,a+b 等。纯右值和将亡值C++11中提出的,C++11中的纯右值概念划分等价于C++98中的右值。
2024-12-26 22:10:47
1133
原创 【C++11】 右值引用和移动语义
现代C++中,lvalue 被解释为loactor value的缩写,可意为存储在内存中、有明确存储地址可以取地址的对象,而 rvalue 被解释为 read value,指的是那些可以提供数据值,但是不可以寻址,例如:临时变量,字面量常量,存储于寄存器中的变量等,也就是说左值和右值的核心区别就是能否取地址。C++98的C++语法中就有引用的语法,而C++11中新增了的右值引用语法特性,C++11之后我们之前学习的引用就叫做左值引用。等,右值可以出现在赋值符号的右边,但是不能出现出现在赋值符号的左边,
2024-12-26 14:01:11
772
原创 【C++】用哈希表封装unordered_map和unordered_set
SGI-STL30版本源代码中没有unordered_map和unordered_set,SGI-STL30版本是C++11之前的STL版本,这两个容器是C++11之后才更新的。但是SGI-STL30实现了哈希表,只容器的名字是hash_map和hash_set,他是作为非标准的容器出现的,非标准是指非C++标准规定必须实现的,源代码在hash_map/hash_set/stl_hash_map/stl_hash_set/stl_hashtable.h中。
2024-12-22 22:23:13
993
原创 【C++】哈希表实现
当key是string/Date等类型时,key不能取模,那么我们需要给HashTable增加一个仿函数,这个仿函数支持把key转换成一个可以取模的整形,如果key可以转换为整形并且不容易冲突,那么这个仿函数就用默认参数即可,如果这个Key不能转换为整形,我们就需要自己实现一个仿函数传给这个参数,实现这个仿函数的要求就是尽量key的每值都参与到计算中,让不同的key转换出的整形值不同。,那么计算出的哈希值都是15,因为63的二进制后8位是 00111111,31的二进制后8位是 00011111。
2024-12-21 15:36:48
1297
原创 【C++】unordered_map和unordered_set的使用
最好的查询是,进行很少的比较次数就能够将元素找到,因此在C++11中,STL又提供了4个unordered系列的关联式容器,这四个容器与红黑树结构的关联式容器使用方式基本类似,只是其底层结构不同,本文中只对unordered_map和unordered_set进行介绍,unordered_multimap和unordered_multiset可查看文档介绍。• unordered_set底层是用哈希桶实现,增删查平均效率是 ,迭代器遍历不再有序,为了跟set区分,所以取名unordered_set。
2024-12-20 17:09:45
1146
原创 【C++】红黑树实现STL中的map和set
【C++】这篇博客我们将上篇博客实现的红黑树来封装成自己实现的set和map,来模拟一下库里的map和set
2024-12-12 22:51:59
1057
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人