- 博客(110)
- 收藏
- 关注
原创 【计网】UDP Echo Server与Client实战:从零开始构建简单通信回显程序
我们之前讲解了关于socket编程的一些基础知识和接口函数,今天我们就来小试牛刀一下,自己编写一个简单的echo_server程序,将客户端的数据在服务端打印出来(利用udp协议实现)!
2024-10-24 21:48:00 3737 42
原创 【Linux】从多线程同步到生产者消费者模型:多线程编程实践
一个交易场所(特定数据结构形式存在的一段内存空间)两种角色(生产角色,消费角色):生产线程,消费线程三种关系:生产与生产(互斥关系) , 消费与消费(互斥关系),生产与消费。1个交易场指的就是共享资源(临界资源),有多个厂商(生产者)和多个用户(消费者),所以这就是我们常说的多线程的同步和互斥问题。超市是什么?临时保存数据的“内存空间”——某种数据结构对象。商品是什么?就是数据!
2024-10-20 21:44:30 1520 40
原创 【Linux】探索文件I/O奥秘,解锁软硬链接与生成动静态库知识
进程开始启动时,进程所在的路径默认就是当前路径仔细观察发现,这三个流的类型都是FILE*, fopen返回值类型,文件指针,那什么是FILE类型呢?这是C标准库自己封装的一个结构体。操作文件,除了C接口(当然,C++也有接口,其他语言也有),我们还可以采用系统接口来进行文件访问为什么访问文件不仅仅有C语言上的文件接口,OS必须提供对应的访问文件的系统调用?原因:其实上述讲的C语言接口是OS系统调用函数的封装,系统调用函数封装了C语言接口,是为了可移植性和跨屏平台性!pathname: 要打开或创建的目标文件
2024-09-18 09:00:00 2757 59
原创 Linux进程初识:OS基础、fork函数创建进程、进程排队和进程状态讲解
Linux进程初识:OS基础、fork函数创建进程、进程排队和进程状态讲解
2024-09-06 22:00:34 1294 29
原创 UNIX及UNIX-like环境下的调试工具gdb使用方法
肯定是没有VS图形化界面调试舒服,或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能,比BCB的图形化调试器有更强大的功能。所谓“尺有所短,寸有所长”就是这个道理。
2024-09-01 21:50:39 575 7
原创 Linux项目自动化构建清理工具-make/Makefile如何实现编译代码
makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率,但目前我觉的这两个工具就是用来像编译器那样在Linux环境下去编译程序。
2024-09-01 21:19:36 2159 57
原创 【C++从小白到大牛】C++的隐式和显示类型转换基础知识讲解
在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换:隐式类型转换和显式类型转换。
2024-08-29 22:10:38 1258 41
原创 【C++从小白到大牛】C++智能指针的使用、原理和分类
本文主要讲解在C++11中智能指针的使用场景、方法、原理和分类,希望对大家有所帮助!
2024-08-25 21:18:23 4217 102
原创 【C++从小白到大牛】C++11异常如何处理?
实际中C语言基本都是使用返回错误码的方式处理错误,部分情况下使用终止程序(assert断言)处理非常严重的错误,但是这两种处理异常的方式都有明显的缺陷,那我们来学习C++是如何处理异常的呢~
2024-08-23 21:13:07 1235 33
原创 【C++从小白到大牛】布隆过滤器
上一篇文章我们已经学习了位图的应用,但是位图一般只能处理整形,如果内容编号是字符串,就无法处理了。而我们又知道如果只用哈希表存储用户记录,缺点就是浪费空间。但是我们将哈希表和位图结合起来呢,就是我们的布隆过滤器!
2024-08-18 20:00:15 1904 30
原创 【C++从小白到大牛】位图讲解
我们首先通过一道腾讯的面试题来揭开位图的面纱~给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。【腾讯】解题思路:1. 遍历,时间复杂度O(N)2. 排序(O(NlogN)),利用二分查找3. 位图解决前面两种解题思路理论上可行,但是注意这里是40亿个不重复的整数,因此用前两种消耗的空间是巨大的,40亿个数会占多少内存呢?首先我们要有一个常识,那就是10亿字节会占多少G?10亿多字节等于1GB。
2024-08-17 21:25:32 575 5
原创 【C++从小白到大牛】利用红黑树封装map和set
我们已经学过了如何去实现一棵完整的红黑树,而我们所知道的map和set容器的底层都是由红黑树实现的,因此我们今天来学习如何用红黑树来实现封装map和set。本来我们需要两个红黑树去分别封装map和set,但是代码会有重复、冗余,因此我们采用泛型编程的思想,同一颗红黑树通过传不同的模板参数来分别实现map和set。就是为了复用同一个类模板的红黑树,让代码变的简洁,体现了泛型编程的思想。比如这里的模板参数T,如果传的是K类型的,代表使用的是set,如果参数传的是pair类型的就代表是map。
2024-08-17 21:25:15 453
原创 【C++小白到大牛】红黑树那些事儿
我们之前已经学过了二叉搜索树的优化版——AVL树,这次我们来学习二叉搜索树的另外一种优化版本——心心念念的红黑树。
2024-08-16 08:28:09 1324 28
原创 【C++从小白到大牛】AVL树讲解
我们之前讲解了二叉搜索树,今天来看AVL树。有了二叉搜索树,为什么还要AVL树呢?二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此我们就需要AVL树出马了!
2024-08-11 08:00:00 1668 27
原创 【C++从小白到大牛】多态那些事儿(上)
多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象买票半价。两个函数在同一作用域函数名相同,参数不同重写(覆盖)两个函数分别在基类和派生类的作用域函数名/参数/返回值都必须相同(协变例外)两个函数都必须是虚函数重定义(隐藏)两个函数分别在基类和派生类的作用域函数名相同两个基类和派生类的同名函数不构成重写就是重定义。
2024-08-07 10:06:47 1199 35
原创 【C++从小白到大牛】搜索二叉树及其递归实现
本文主要讲解二叉搜索树的概念、操作以及实现,为后面的的map、set容器实现做准备,因为他们同样也是树形结构。
2024-08-07 09:59:39 1037 8
原创 【C++从小白到大牛】栈和队列(优先级队列)
本文主要讲解C++ STL库中stack、queue、priority_queue的使用方法和模拟实现。
2024-08-03 08:22:28 1210 20
原创 C++11 lambda 表达式详解(带例题)
lambda表达式的出现主要是为了解决排序的问题。但我们在C++98中已经有了std::sort函数,为什么还要lambda表达式呢?上面是内置类型的用法,还是很方便的。但是如果待排序元素为自定义类型,需要用户定义排序时的比较规则,就比较复杂。随着C++语法的发展,每次为了实现一个algorithm算法,。因此,在C++11语法中出现了Lambda表达式。上面介绍了lambda表达式的由来,接下来我们仔细研究他的语法吧!
2024-05-06 16:37:34 1221 34
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人