自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 Linux发送数据包的流程图

2023-09-10 00:20:34 105

原创 老掉牙的TCP三次握手/四次挥手网络状态迁移图

2023-09-06 13:12:11 107

转载 当主线程退出时,子线程会怎么样?

例如一个程序a.out创建了一个子线程,假设主线程的线程号为9601,子线程的线程号为9602(它们的tgid都是9601),因为默认没有设置信号处理程序,所以如果运行命令kill 9602的话,是可以把9601和9602这个两个线程一起杀死的。实际上,posix线程和一般的进程不同,在概念上没有主线程和子线程之分(虽然在实际实现上还是有一些区分),如果仔细观察apue或者unp等书会发现基本看不到「主线程」或者「子线程」等词语,在csapp中甚至都是用「对等线程」一词来描述线程间的关系。

2023-08-22 21:19:59 716

原创 B/B+树的使用

2023-07-12 20:45:48 173

原创 红黑树的使用场景

2023-07-12 03:02:52 534

原创 protoc: error while loading shared libraries: libprotoc.so.30: cannot open shared object file

ldconfig是一个动态链接库管理命令,其目的为了让动态链接库为系统所共享。默认搜寻/lilb和/usr/lib,以及配置文件/etc/ld.so.conf内所列的目录下的库文件。搜索出可共享的动态链接库,库文件的格式为:lib***.so.**,进而创建出动态装入程序 (ld.so)。最近在做tinyRPC的项目,第一步安装protobuf的过程就有很多问题,比如执行。原因是系统找不到共享库,这时候只要执行下面命令即可。

2023-07-06 21:37:28 504

转载 浅谈 C++ 中的 new/delete 和 new[]/delete[]

在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢?如果你对这些问题都有疑问的话,不妨看看我这篇文章。

2023-06-25 02:12:53 69

原创 C++中的insert()与迭代器

这段时间断断续续地重读C++ Primer,发现了一个比较有趣的点,309页的练习9.22这道题: 此题共有两个错误,一个是while陷入了死循环,因为insert()函数返回的是插入点之前的迭代器,因此while循环的条件永远为真,这是比较明显的;另一个错误是mid这个迭代器会失效,这是比较值得研究的点,对此github上Cpp-Primer项目的几个contributor也展开了讨论,现将其总结为本文。如同书里315页的9.3.6所说...

2021-11-05 17:51:10 1212

原创 C++要点(C++ Primer)

1、读取数量不定的输入数据while (std::cin >> value) {}2、编译器的错误信息通常包含一个行号和一个简短的描述,按照报告的顺序逐个修成错误是一种好习惯。因为一个单个错误常常会具有传递效应,导致编译器在其后报告比实际数量多得多的错误。另一个好习惯是在没修正一个错误后就立即重新编译代码,或者最多是修正了一小部分明显的错误后就重新编译,这就是所谓的“编辑-编译-调试”周期。3、执行浮点数运算一般用double类型,因为float类型一般精度不够,而且双精度浮点型.

2021-06-22 00:51:16 113

原创 C++要点(C++ Primer)

1、读取数量不定的输入数据while (std::cin >> value) {}2、编译器的错误信息通常包含一个行号和一个简短的描述,按照报告的顺序逐个修成错误是一种好习惯。因为一个单个错误常常会具有传递效应,导致编译器在其后报告比实际数量多得多的错误。另一个好习惯是在没修正一个错误后就立即重新编译代码,或者最多是修正了一小部分明显的错误后就重新编译,这就是所谓的“编辑-编译-调试”周期。3、执行浮点数运算一般用double类型,因为float类型一般精度不够,而且双精度浮点型和

2021-06-22 00:49:13 113

原创 C++ Primer——decltype类型指示符

decltype是C++11引入的类型说明符,作用是选择并返回操作数的数据类型decltype(f()) sum = x; //sum的类型就是函数f的返回类型编译器并不实际调用函数,而是使用当调用发生时f的返回值类型作为sum的类型。const int ci = 0, &cj = ci;decltype(ci) x = 0; //x的类型是const intdecltype(cj) y = x; //y的类型是const int&,y绑定到...

2021-04-26 02:16:06 166

原创 考研杂谈

前言2020年8月13日,我正式从公司离职,脱产考计算机的研究生,一路从备考到初试,再到复试,历时7个月,终于如愿考上西北工业大学的计算机研究生,最终成绩排在了录取考生的中段。写这篇文章的最主要的目的不是传授备考经验,说实话,我初试的成绩并不高,备考的过程也并不科学,实在没有什么值得学习的,网络上有很多高分考生的经验帖值得参考,最主要是要找到适合自己的方式。写这篇文章皆因我认为脱产考研并上岸是一件非常酷的事情,我向来喜欢酷的生活,这几个月的心路历程五味杂陈,如果不记录下来,过一阵子恐怕会忘记这种最真实的

2021-04-15 00:02:01 1346 9

原创 西工大17年计算机机试真题

前言:西工大机试真题记录 代码在CodeBlocks16.01环境下编译通过第一题-输入两组时间(h,m,s),计算平均时间,两组时间不超过一个小时,h在0-11之间/* *题目:输入两组时间(h,m,s),计算平均时间,两组时间不超过一个小时,h在0-11之间 *Input: 1 20 30 1 30 30 0 20 30 11 30 30 *Output: 1 25 30 11 55 30 */...

2021-03-18 03:35:41 376

原创 西工大18年计算机机试真题

前言:西工大机试真题记录 代码在CodeBlocks16.01环境下编译通过第一题-求积:给定n组数,每组两个整数,输出这两个整数的乘积/* *题目:求积:给定n组数,每组两个整数,输出这两个整数的乘积 *Input: 2 1 1 2 3 *Output: 1 6 */#include <iostream>using namespace std;int NoO...

2021-03-16 14:23:16 278

原创 西工大19年计算机机试真题

前言:西工大机试真题记录 代码在CodeBlocks16.01环境下编译通过第一题-整数排序(快速排序)/* *题目:一组整数,由小到大排序,有n组测试数据,排序输出 *输入样例: 2 1 5 8 6 3 2 0 4 2 3 8 15 63 20 1 *输出: 0 1 2 3 5 6 8 1 2 3 4 8 15 20 63 */#include &lt...

2021-03-14 18:55:01 491

原创 西工大noj(38~40)

前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过38题-逆序整数/* *题目:用递归法将一个长整型数n逆序输出,例如输入483,输出384,n的位数不确定,可以是有效范围内的任意位数 */#include <iostream>using namespace std;int rever(long int n){ cout << n % 10; n /= 10; if (n !=...

2021-03-11 13:56:44 1218

原创 西工大noj(37)

37题-重温A+B(这道题对我最大的价值就是复习了对输入非法和输出溢出的判断以及相应的处理)/* *题目:A和B都是由3个整数组成,分别表示时、分、秒,比如,假设A为34 45 56,就表示A所表示的时间是34小时45分钟56秒 输入数据每行有6个整数AH,AM,AS,BH,BM,BS,分别表示时间A和B所对应的时分秒 输出A+B,每个输出结果也是由时分秒3部分组成,同时分和秒的取值范围为0~59,每个输出占一行,并且所有的部分都可以用32位整数表示 */#in

2021-03-10 02:34:21 412

原创 西工大noj(34~36)

前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过34题- 发工资的日子/* *题目:如果每个员工工资都知道,那么最少需要准备多少人民币,才能给每位员工发工资的时候不用员工找零呢? 假设员工的工资都是正整数,单位元,人民币一共有100元,50元,10元,5元,2元和1元六种 */#include <bits/stdc++.h>using namespace std;int noj_034(){ ...

2021-03-07 00:57:19 979

原创 西工大noj(31~33)

前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过31题-计算方差(题目要求不能用数组,所以此处用的是公式的拆项)/* *题目:编写函数计算 s=(x1-x)^2+(x2-x)^2+……+(xn-x)^2,其中x为x1,x2……的平均数,不能用数组(保留6位小数) *备注:题目要求不能用数组存储xi的值,所以此处把公式拆开,例如: s=(x1-x)^2+(x2-x)^2=(x1^2+x2^2)+2*x^2-2*x*(x1+x2)=s...

2021-03-06 02:11:00 983

原创 西工大noj(27~30)

前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过27题-不重复数字组合排列(采用了和23题差不多的方法)/* *题目:用1~9组成3个3位数,abc,def和ghi,每个数字恰好使用了1次,要求adc:def:ghi=1:2:3,输出所有解 */#include <iostream>#include <vector>using namespace std;int noj_027(){ in...

2021-03-04 01:19:47 1137 1

原创 西工大noj(25,26)

前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过25题-羊羊的聚会/* *题目:见上图 */#include <iostream>using namespace std;int noj_025(){ int myyPosi, fyyPosi, myySpeed, fyySpeed, len, hour = 1; cout << "请依次输入美羊羊坐标,沸羊羊坐标,美羊羊速度,...

2021-03-03 03:34:54 1276

原创 西工大noj(23~24)

前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过23题-不重复数字除法(有点繁琐,暂时只想到了暴力法,在判断各位数字是否重复采用了桶排序的思想):/* *题目:输入正整数n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中a~j恰好是0~9的排列,2<=n<=79 */#include <iostream>#include <vector>using namespace s...

2021-03-02 01:36:21 925

原创 西工大noj(21,22)

前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过21题:/* *题目:有a和b两种粒子,每秒钟内一个a粒子可以裂变为3个b粒子,而一个b粒子可以裂变为1个a粒子和2个b粒子,若在t=0时刻中只有一个a粒子,求在t秒时产生的a粒子和b粒子数,输入t */#include <iostream>using namespace std;int noj_021(){ int time; int aPart ...

2021-02-28 02:51:46 935

原创 西工大noj(11~20)

前言:西工大noj刷题记录 代码在CodeBlocks16.01环境下编译通过11题:/* *题目:用二分法求方程在(-10,10)之间的根(保留2位小数) */#include <iostream>#include <stdio.h>using namespace std;int noj_011(){ double x, left = -10, right = 10; x = (left + right) / 2;...

2021-02-26 01:35:54 1388

原创 西工大noj(2~10)

西工大noj刷题记录代码在CodeBlocks16.01环境下编译通过

2021-02-23 01:48:20 3012

原创 吴恩达机器学习——正规方程

对于某些线性回归的问题,除了用梯度下降,也可以用正规方程的方法。如: 对于上图,如果要求代价函数曲线的最低点,由高等数学的知识,可以令,而当是向量时,可以令。假设我们的训练集特征矩阵为X(包含了),并且训练集结果为向量y,则利用正规方程解出向量。其中T代表矩阵的转置,上标-1代表矩阵的逆。 以下数据为例: 即: 由正规方程的方法,有 由于正规方程的求解过程涉及矩阵的逆运算,所以对于不可逆...

2021-02-03 22:43:41 237

原创 C++ Primer——面向对象程序设计

1、在C++中,基类将类型相关的函数与派生类不做改变直接继承的函数区分对待。对于某些函数,基类希望它的派生类各自定义适合自身的版本,此时基类就将这些函数声明成虚函数(virtual function)。2、在C++中,当我们使用基类的引用(或指针)调用一个虚函数时将发生动态绑定。3、关键字virtual只能出现在类内部的声明语句之前而不能用于类外部的函数定义。如果基类把一个函数声明成虚函数...

2020-03-02 17:59:10 146

原创 C++ Primer——对象移动

1、标准库容器、string和shared_ptr类既支持移动也支持拷贝。IO类和unique_ptr类可以移动但不能拷贝。2、变量是左值,因此我们不能将一个右值引用直接绑定到一个变量上,即使这个变量是右值引用类型也不行。3、使用move的代码应该使用std::move而不是move。4、不抛出异常的移动构造函数和移动赋值运算符必须标记为noexcept。5、除了将移后源对象置为析...

2020-03-02 15:25:22 214

原创 C++ Primer——拷贝控制

1、如果一个构造函数的第一个参数是自身类型的引用,且任何额外参数都有默认值,则此构造函数是拷贝构造函数。一般情况下,合成的拷贝构造函数会将其参数的成员逐个拷贝到正在创建的对象中。编译器从给定对象中依次将每一个非static成员拷贝到正在创建的对象中。2、每个成员的类型会决定其如何拷贝:对类类型成员来说,会使用其拷贝构造函数来拷贝;对内置类型的成员则直接拷贝。3、拷贝初始化通常使用拷贝构造函...

2020-02-25 11:29:17 146

原创 C++ Primer——析构函数

知识点:1、构造函数初始化对象的非static数据成员,还可能做一些其他的工作;析构函数释放对象使用的资源,并销毁对象的非static数据成员。2、析构函数是类的一个成员函数,名字由波浪号接类名构成。没有返回值,也不接受参数,因此不能被重载。3、对于一个给定类,只会有唯一一个析构函数。4、在一个构造函数中,成员到初始化是在函数体执行之前完成的,且按照它们在类中出现的顺序进行初始化。...

2020-02-24 12:01:47 250

原创 C++ Primer(第五版)第12章例程(文本检索)

前言:最近又开始看起了C++ Primer,第十二章的最后有个文本检索的例程,参考网上的资料把例程写了一下并简单地做了注释。顺带一提,虽然别人都说真正的大佬都是用编辑器+插件来写代码,但是用了一段时间的vim,还是觉得装再多的插件,编辑器始终是编辑器,还是没有ide好用,所以在这台老爷机上装了个codeblocks,除了偶尔死机外,真的极大提高了我的效率,vim的话,还是在命令行模式里再用吧,当然装了插件之后,也还蛮不错的。

2020-02-21 11:50:32 237

转载 C++中const在不同对象不同位置中的作用

一、 const与define 两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些。#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的函数,有点类似内联函数(Inline)。const和define定义的常量可以放在头文件里面。(小注:可以多次声明,但只能定义一次)二、 const与指针,引用(a)const与指针...

2020-02-18 14:10:18 304

原创 Ubuntu相关(1)

如何让ubuntu禁用休眠?修改 Login Manager的配置文件。打开终端:sudo vim /etc/systemd/logind.conf然后将其中的:#HandleLidSwitch=suspend1改成:HandleLidSwitch=ignore1然后重启服务:sudo restart systemd-logind或者service sy...

2020-01-08 09:53:39 140

转载 提问的智慧

 在黑客世界里,当提出一个技术问题时,你能得到怎样的回答?这取决于挖出答案的难度,同样取决于你提问的方法。本指南旨在帮助你提高发问技巧,以获取你最想要的答案。  首先你必须明白,黑客们只偏爱艰巨的任务,或者能激发他们思维的好问题。 如若不然,我们还来干吗?如果你有值得我们反复咀嚼玩味的好问题,我们自会对你感激不尽。好问题是激励,是厚礼,可以提高我们的理解力,而且通常会暴露我们以前从没意识到...

2019-12-16 11:53:50 114

转载 open和fopen的区别

1.缓冲文件系统缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操作外存的次数就少,执行速度就快...

2019-05-31 02:50:29 209

转载 单链表逆序操作学习

前言将单链表逆序,方法有三种:遍历链表,将每个节点的内容存入一个数组中,然后逆序输出数组,并重新构造一个链表 使用栈来逆序输出,原理与1相似,出栈的时候也需要重新构造一个新链表 直接将链表逆序然后输出 其中,前面2种方法原理相似,也比较好理解,但是这样会耗费额外的内存空间;第三种方法则不需要额外的内存空间,便可实现单链表的逆序。本文主要记录对第三种方法的操作原理。原理第三种...

2019-05-31 02:47:20 1259

转载 单链表逆序操作学习

前言将单链表逆序,方法有三种:遍历链表,将每个节点的内容存入一个数组中,然后逆序输出数组,并重新构造一个链表 使用栈来逆序输出,原理与1相似,出栈的时候也需要重新构造一个新链表 直接将链表逆序然后输出 其中,前面2种方法原理相似,也比较好理解,但是这样会耗费额外的内存空间;第三种方法则不需要额外的内存空间,便可实现单链表的逆序。本文主要记录对第三种方法的操作原理。原理第三种...

2019-05-31 02:42:37 1520

转载 strcpy函数的源码实现

已知strcpy函数的原型是:char *strcpy(char *dst, const char *src);实现strcpy函数 解释为什么要返回char * 假如考虑dst和src内存重叠的情况,strcpy该怎么实现1.strcpy的实现代码char * strcpy(char *dst,const char *src) //[1]{ assert(dst...

2019-05-31 02:39:08 3355 1

转载 进程间的五种通信方式介绍

进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。以Linux中的C语言编程为例。一、管道管道,通常指无名管道,是 UNIX 系统IPC最古老的形式。...

2019-05-31 02:25:34 395

转载 Linux下僵尸进程的产生,危害及处理

Linux 允许进程查询内核以获得其父进程的 PID,或者其任何子进程的执行状态。例如,进程可以创建一个子进程来执行特定的任务,然后调用诸如 wait() 这样的一些库函数检查子进程是否终止。如果子进程已经终止,那么,它的终止代号将告诉父进程这个任务是否已成功地完成。为了遵循这些设计原则,不允许 Linux 内核在进程一终止后就丢弃包含在进程描述符字段中的数据。只有父进程发出了与被终止的进程相...

2019-05-31 02:12:10 2548

空空如也

空空如也

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

TA关注的人

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