闪电无敌雷霆霹雳爆炸猿
码龄5年
关注
提问 私信
  • 博客:30,821
    30,821
    总访问量
  • 61
    原创
  • 27,330
    排名
  • 383
    粉丝
  • 0
    铁粉
  • 学习成就
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:河北省
  • 加入CSDN时间: 2019-06-20
博客简介:

xwy13886467077的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    4
    当前总分
    535
    当月
    26
个人成就
  • 获得653次点赞
  • 内容获得16次评论
  • 获得675次收藏
创作历程
  • 27篇
    2024年
  • 34篇
    2023年
成就勋章
TA的专栏
  • Linux
    5篇
  • C++
    5篇
  • 数据结构初阶
    5篇
  • C语言
    14篇
  • python
兴趣领域 设置
  • 运维
    网络
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

349人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

C++11 ——— 线程库

此外,如果调用的是wait_for或wait_until函数的第二个版本的接口,那么当线程被唤醒后还需要调用传入的可调用对象,如果可调用对象的返回值为false,那么当前线程还需要继续被阻塞。当线程函数的参数类型为引用类型时,如果要想线程函数形参引用的是外部传入的实参,而不是线程栈空间中的拷贝,那么在传入实参时需要借助ref函数保持对实参的引用。线程函数的参数是以值拷贝的方式拷贝到线程栈空间中的,就算线程函数的参数为引用类型,在线程函数中修改后也不会影响到外部实参,因为其。
原创
发布博客 前天 20:51 ·
444 阅读 ·
20 点赞 ·
0 评论 ·
19 收藏

C++特殊类设计

new和delete默认调用的是全局的operator new函数和operator delete函数,但如果一个类重载了专属的operator new函数和operator delete函数,那么new和delete就会调用这个专属的函数。将该类的构造函数设置为私有即可,因为子类的构造函数被调用时,必须调用父类的构造函数初始化父类的那一部分成员,但父类的私有成员在子类当中是不可见的,所以。函数,因此直接将该类的拷贝构造函数和赋值运算符重载函数设置为私有,或者用C++11的方式将这两个函数删除即可。
原创
发布博客 2024.12.02 ·
784 阅读 ·
13 点赞 ·
0 评论 ·
8 收藏

C++的类型转换

而使用dynamic_cast进行向下转型则是安全的,如果父类的指针(或引用)指向的是子类对象那么dynamic_cast会转换成功,但如果父类的指针(或引用)指向的是父类对象那么。上述代码中,如果传入func函数的是子类对象的地址,那么在转换后pb1和pb2都会有对应的地址,但如果传入func函数的是父类对象的地址,那么转换后pb1会有对应的地址,而pb2则是一个空指针。其中,向上转型就是所说的切割/切片,是语法天然支持的,不需要进行转换,而向下转型是语法不支持的,需要进行强制类型转换。
原创
发布博客 2024.12.02 ·
858 阅读 ·
30 点赞 ·
0 评论 ·
19 收藏

C++的IO流

在C语言中,我们若是想要将一个整型变量的数据转化为字符串格式,有以下两种方法:1、使用itoa函数进行转化。int a = 10;//将整型的a转化为十进制字符数字存储在字符串arr当中2、使用sprintf函数进行转化。int a = 10;//将整型的a转化为字符串格式存储在字符串arr当中虽然itoa函数和sprintf函数都能完成转化,但是在两个函数在转化时,都需要先给出保存结果的空间,而空间的大小是不太好界定的,除此之外,转化格式不匹配时,可能还会得到错误的结果甚至程序崩溃。
原创
发布博客 2024.11.29 ·
785 阅读 ·
7 点赞 ·
0 评论 ·
17 收藏

C++智能指针

内存泄露问题内存泄露是指因为疏忽或错误,造成程序未能释放已经不再使用的内存的情况。执行上述代码时,如果用户输入的除数为0,那么div中就会抛出异常,这时程序的执行流会直接跳转到主函数中的catch块中执行,最终导致func函数中申请的内存资源没有得到释放。利用异常的重新捕获解决对于这种情况,我们可以在func函数中先对div函数中抛出的异常进行捕获,捕获后先将之前申请的内存资源释放,然后再将异常重新抛出。利用智能指针解决上述问题也可以使用智能指针进行解决。
原创
发布博客 2024.11.28 ·
667 阅读 ·
22 点赞 ·
0 评论 ·
21 收藏

C++异常

实际中很多公司都会自定义自己的异常体系进行规范的异常管理。公司中的项目一般会进行模块划分,让不同的程序员或小组完成不同的模块,如果不对抛异常这件事进行规范,那么负责最外层捕获异常的程序员就非常难受了,因为他需要捕获大家抛出的各种类型的异常对象。因此实际中都会定义一套继承的规范体系,先定义一个最基础的异常类,所有人抛出的异常对象都必须是继承于该异常类的派生类对象,因为异常语法规定可以用基类捕获抛出的派生类对象,因此最外层就只需捕获基类就行了。
原创
发布博客 2024.11.28 ·
582 阅读 ·
20 点赞 ·
0 评论 ·
30 收藏

Linux线程安全

上篇博客我们谈到了线程概念,线程与进程,线程控制以及线程地址空间等问题,这篇博客我们继续介绍线程的话题。
原创
发布博客 2024.11.25 ·
880 阅读 ·
22 点赞 ·
0 评论 ·
25 收藏

C++11-- 05(lambda和包装器)

function是一种函数包装器,也叫做适配器。它可以对可调用对象进行包装,C++中的function本质就是一个类模板。Ret:被包装的可调用对象的返回值类型。Args...:被包装的可调用对象的形参类型。function包装器可以对可调用对象进行包装,包括函数指针(函数名)、仿函数(函数对象)、lambda表达式、类的成员函数。// function本质就是一个类模板public:class Pluspublic:int main()//包装函数指针(函数名称)
原创
发布博客 2024.11.22 ·
683 阅读 ·
8 点赞 ·
0 评论 ·
9 收藏

C++11(4) ——可变参数模板

函数的可变参数模板定义方式如下:返回类型 函数名(Args… args)//函数体{}模板参数Args前面有省略号,代表它是一个可变模板参数,我们把带省略号的参数称为参数包,参数包里面可以包含0到N ( N ≥ 0 ) 个模板参数,而args则是一个函数形参参数包。现在调用ShowList函数时就可以传入任意多个参数了,并且这些参数可以是不同类型的。return 0;我们可以在函数模板中通过sizeof计算参数包中参数的个数。
原创
发布博客 2024.11.18 ·
592 阅读 ·
27 点赞 ·
0 评论 ·
23 收藏

C++11 (3)——类的新功能

上述代码中用一个右值去构造s2对象,但由于Person类没有生成默认的移动构造函数,因此这里会调用Person的拷贝构造函数(拷贝构造既能接收左值也能接收右值),这时在Person的拷贝构造函数中就会调用string的拷贝构造函数对name成员进行深拷贝。要验证默认生成的移动构造和移动赋值确实做了上述工作,这里需要模拟实现一个简化版的string类,类当中只编写了几个我们需要用到的成员函数。如果我们自己实现了移动构造或者移动赋值,就算没有实现拷贝构造和拷贝赋值,编译器也不会生成默认的拷贝构造和拷贝赋值。
原创
发布博客 2024.11.18 ·
734 阅读 ·
26 点赞 ·
0 评论 ·
25 收藏

C++11(2)右值引用和移动语义

由于PerfectForward函数的参数类型是万能引用,因此既可以接收左值也可以接收右值,而我们在PerfectForward函数中调用Func函数,就是希望调用PerfectForward函数时传入左值、右值、const左值、const右值,能够匹配到对应版本的Func函数。经过完美转发后,调用PerfectForward函数时传入的是右值就会匹配到右值引用版本的Func函数,传入的是const右值就会匹配到const右值引用版本的Func函数,这就是完美转发的价值。
原创
发布博客 2024.11.18 ·
953 阅读 ·
15 点赞 ·
0 评论 ·
21 收藏

C++11新特性(1)

这样就可能会带来一些问题,因为0既能表示指针常量,又能表示整型常量。所以出于清晰和安全的角度考虑,C++11中新增了关键字nullptr,用于表示空指针。在大部分情况下使用NULL不会存在什么问题,但是在某些极端场景下就可能会导致匹配错误。
原创
发布博客 2024.11.17 ·
1036 阅读 ·
11 点赞 ·
0 评论 ·
24 收藏

位图和布隆过滤

现在要找到出现次数最多的IP地址,就可以分别将各个小文件加载到内存中, 然后用一个map<string, int>容器统计出每个小文件中各个IP地址出现的次数,然后比对各个小文件中出现次数最多的IP地址,最终就能够得到log file中出现次数最多的IP地址。
原创
发布博客 2024.11.15 ·
660 阅读 ·
21 点赞 ·
0 评论 ·
24 收藏

Linux多线程

什么是线程?在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。一切进程至少都有一个执行线程。线程在进程内部运行,本质是在进程地址空间内运行。在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更轻量化。透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流。在Linux中,站在CPU的角度,能否识别当前调度的task_struct是进程还是线程?
原创
发布博客 2024.11.10 ·
905 阅读 ·
10 点赞 ·
0 评论 ·
24 收藏

哈希表与unordered_map

顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。搜索的效率取决于搜索过程中元素的比较次数,因此顺序结构中查找的时间复杂度O(N),平衡树中查找的时间复杂度为树的高度O ( l o g N )。而最理想的搜索方法是,可以不经过任何比较,一次直接从表中得到要搜索的元素,即查找的时间复杂度为O(1)。如果构造一种存储结构,该结构。
原创
发布博客 2024.11.07 ·
633 阅读 ·
28 点赞 ·
0 评论 ·
15 收藏

Linux信号

信号时Linux系统提供的一种让用户(进程)之间发送异步信息的方式。用户输入命令,在Shell下启动一个前台进程。用户按下Ctrl-C,,这个键盘输入产生一个硬件中断,被OS获取,解释成信号,发送给目标前台进程,前台进程因为收到信号,进而引起进程退出一个命令后面加个&可以放到后台运行,Shell可以同时运行一个前台进程和任意多个后台进程,只有前台进程才能接到像 Ctrl-C 这种控制键产生的信号。
原创
发布博客 2024.11.03 ·
1066 阅读 ·
15 点赞 ·
0 评论 ·
24 收藏

进程与文件

学计算机的应该第一课都会介绍冯诺依曼体系结构,这套结构包含了计算机所涉及的所有硬件,以及各个硬件之间的信息和信号交互。如下:我们发现,计算机数据信号的交互过程,必须要经过内存。因此外设(磁盘数据,网络中的数据)的所有数据信号,必须先到内存,才能到cpu执行,而执行完的结果,也要通过内存,再输出到屏幕,磁盘等外设中。那么谁来控制这些数据的流动,是操作系统。
原创
发布博客 2024.10.31 ·
1021 阅读 ·
20 点赞 ·
0 评论 ·
22 收藏

算法2(C++实现)

给一个数字n,确定它的二进制表示第x位是0还是1:(n>>x)&1给一个数字n,确定它的二进制表示第x位修改成1:n=n|(1<<x)或者:n=n^(1<<x)n&(-n) 这是lowbit操作将一个数字n最右侧的1变成0:n&(n-1)位图的思想:类似于一个hash数组,数组的每一处存储的不同值有着相关信息,位图则利用一个32位置的 int,它的每一个bit位都存储着相关信息异或^ 考察最多(5.3 5.4 5.5 5.6),a^0=a , a^a=0, a^b^c=a^(b^c)
原创
发布博客 2024.10.31 ·
911 阅读 ·
15 点赞 ·
0 评论 ·
23 收藏

红黑树(C++实现)

本篇博客讲解红黑树概念,性质,以及插入的原理,
原创
发布博客 2024.10.29 ·
534 阅读 ·
7 点赞 ·
0 评论 ·
6 收藏

算法(C++实现)

从现在开始,开辟一个新的专题----算法,这篇文章介绍双指针,滑动窗口,二分查找这几种算法以及附有相应的练习题。
原创
发布博客 2024.10.14 ·
974 阅读 ·
28 点赞 ·
0 评论 ·
23 收藏
加载更多