- 博客(28)
- 收藏
- 关注
原创 关于&&运算符的机制以及=和>的运算优先级
今天碰到问题的代码是这样的,最开始以为会输出3(以为=和>的优先级一样),后来查询发现比较运算符的优先级大于赋值运算符,于是觉得输出应该是0。结果输出2,经查询发现是&&在判断前一个条件为0后就不会再去判断第二个条件了。以前没见过这个说法,特此记录一下。
2022-12-27 14:23:24
345
原创 C++非const引用问题:error: cannot bind non-const lvalue reference of type
出现这个问题是因为把一个临时变量传入了函数的引用形参中,简化代码如下:应该改为:原因是,非常量引用不能指向临时变量,只有常量引用才能指向临时变量。当一个函数的形参为非const类型,而一个参数以非const传入,编译器一般会认为程序员会在该函数里修改该参数,而且该参数返回后还会发挥作用。此时如果你把一个临时变量当成非const引用传进来,由于临时变量的特殊性,程序员无法对改临时变量进行操作,同时临时变量可能随时会消失,修改临时变量也毫无意义,因此,临时变量不能作为非const引用。例如++++i与i++
2022-06-09 20:21:30
1620
原创 类和内联函数
1.在类内声明和定义,没用inline关键字是隐式内联2.在类内声明,类外定义的,如果声明或者定义有一个使用了inline关键字,则是显式内联3.在类内声明,类外定义的,如果没有使用inline关键字,则不是内联函数...
2022-05-12 10:24:35
309
原创 while(cin>>str)的循环结束问题
这个问题源于《c++Primer第五版》p15的一个程序,我写了一个简化代码,如下输入类型为整形或者浮点型 int val; while (cin >> val) { cout << "1" << endl; } cout << "over" << endl;如果重复输入int类型的值的话,即使按了enter也会重复循环,只有在输入非int的值的时候,这个循环才会跳出输出over,或者按ctl+z,然后按enter。输入类型为字
2022-05-01 14:27:16
1608
1
转载 using namespace std的含义
所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。一 :和<iostream.h>是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。因此
2022-04-24 20:07:31
546
原创 c++中的内联函数
语法:在普通函数声明之前加一个 inlineeg:void max(){;} ----普通函数inline void max(){;} ----内联函数内联函数对比普通函数的区别以及优缺点:区别:如图两个程序。普通函数在主函数执行到max(1,2)的时候,会跳转去寻找max函数的入口,然后带入参数执行函数,执行完毕后,再回到主函数接下来的代码。内联函数在主函数执行到max(1,2)的时候,会使用max函数的代码来直接替换掉main函数的max(1,2)代码。内联函数的优点:省去了进出函数
2022-04-24 17:44:04
2800
原创 mysql的启动与连接
linux下的mysql初始操作systemctl start mysql ---- 启动mysql服务mysql -uroot(-u用户名) -p123456(-p密码) —连接mysql服务linux的初始密码在/root/.mysql_secret中,初始用户为root修改密码的命令mysql> set password=password(‘123456’);windows下的mysql初始操作win+R,输入services.msc进入到系统服务中,找到mys
2022-04-17 14:20:38
1012
原创 Docker中进入容器exec和attach的区别
exec和attach 都是进入当前运行容器的命令exec(为较为常用的):使用exec进入容器后,是开启一个新的终端,在里面操作attach:使用attach是直接在当前容器正在执行的终端里进行操作例子:我们分别使用2种不同命令进入容器,然后退出容器,再观察容器的状态先使用exec进入容器进入正在运行的centos容器docker exec -it 6ebaa1bd0f6e /bin/bash然后退出容器再查看容器的状态,这个时候容器还是运行着的再来使用attac.
2022-04-16 17:19:58
3813
原创 利用docker在centos上安装Oracle
如果还没安装docker,可以去docker官网按照教程安装对应操作系统的版本:https://docs.docker.com/engine/install/1、拉取 docker 镜像:[root@localhost ~]# docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g该镜像由阿里云提供,比较大,可能需要下载一会等待下载即可……2、用 docker images 命令查看镜像[root@localhost ~
2022-04-04 19:03:38
458
原创 LINUX 里面关于“error while loading shared libraries”一类错误解决办法
今天在安装libevent的时候遇到了error while loading shared libraries:libevent…的错误,简单查看了一下网上的解决办法,发现原因所在。默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,通常通过源码包进行安装时,如果不指定–prefix,会将库安装在/usr/local/lib目录下(我在安装的时候直接是configure,但是其实应该是./configure -prefix=/usr,如果这么写应该就不会报错了);当运行程序需要链接动
2022-03-30 20:24:02
1110
原创 TIME_WAIT状态、危害、如何避免危害
1.什么是TIME_WAIT状态?即是在四次挥手的过程中,主动断开方在发出正常情况最后一个ACK时所等待的时间,一般为2MSL(MSL指的是数据包在网络中的最大生存时间).2.为什么需要TIME_WAIT状态?为了保证四次挥手的可靠性。主动断开连接方(上图中Client)最后一次ACK报文丢失了,会触发被动方(上图中Server)的超时重传机制,Server再次向Client发送FIN+ACK报文,如果Client在发送完最后一次ACK后立即断开连接(没有TIME_WAIT状态),则Serve
2022-03-10 14:30:52
648
原创 c++中的异或运算
简要介绍:不同则为1,相同则为0 。注:如果要理解一下内容,要先理解 1 ^ 2 = 3 即 0001 ^ 0010 = 0011;应用于数值交换,例如:int temp = i;i = j;j = temp;可以写成异或运算:i = i ^ j;j = j ^ i;i = i ^ j;具体解释:第一步时 i = i ^ j; 因为计算机内部都是二进制的,所以这一步其实是,让 i 的 二进制表示中 与 j 的二进制表示中 位不同的变成1,位相同的变成0。第二步 j = j ^
2022-03-08 17:18:41
17643
原创 迭代器与指针的区别
迭代器与指针的差别:迭代器:(1)迭代器不是指针,是类模板,表现的像指针。他只是模拟了指针的一些功能,通过重载了指针的一些操作符,->, * ,++, --等封装了指针,是一个“可遍历STL( Standard Template Library)容器内全部或部分元素”的对象, 本质是封装了原生指针,是指针概念的一种提升(lift),提供了比指针更高级的行为,相当于一种智能指针,他可以根据不同类型的数据结构来实现不同的++,–等操作;(2)迭代器返回的是对象引用而不是对象的值,所以cout只能输出
2022-03-07 16:44:36
1902
原创 malloc和new的一些区别
https://www.cnblogs.com/QG-whz/p/5140930.html顺便简要说明一下,自由存储区和堆的区别。自由存储区和堆的区别是一个老生常谈的问题了,就像面试题new和malloc的区别一样。事实上,网上多说人认为,自由存储区与堆的划分标准是申请和释放内存是使用的new/delete还是malloc/free。C++标准并没有给出new/delete应该如何实现,但很多编译器的new/delete都是以malloc/free为基础来实现的。从技术上来说,堆(heap)是C语言和操
2022-03-03 19:01:45
569
原创 三次挥手建立连接和四次挥手断开连接
具体分析为什么,断开连接要比建立链接多一次握手,以及简单的运作过程。https://blog.youkuaiyun.com/weixin_35725654/article/details/113057192
2022-02-28 10:50:13
73
原创 c++中随机数的使用
c++创建随机数有rand()和srand()函数。(1)rand()会返回一随机数值, 范围在0至RAND_MAX 间。RAND_MAX定义在stdlib.h, 其值为2147483647。可以使用用以下公式定义一定范围内的随机数。注意:因为没有随机种子所以,rand()下一次运行也是这个数,因此就要引出srand创建随机数种子。产生一定范围随机数的通用表示公式是:通用公式:a + rand() % n;其中的a是起始值,n是整数的范围,即[a,a+n)要取得[0,n) 就是rand()%n
2022-02-24 17:05:53
4453
原创 linux中主线程退出后子线程的状态
1.运行如下代码:即是简单创建一个子线程,主线程直接结束,然后在子线程中每间隔一秒就打印一个HELLO。利用ps -ef查看进程状态,发现没有主线程和子线程都不在,即是主线程退出后子线程也会退出。2.运行如下代码,增加利用pthread_exit函数,使主线程退出。利用ps -ef查看进程状态,发现存在进程,利用(ps -Lf 进程号)查看线程状态,发现子线程和主线程都是僵尸线程。...
2022-02-23 10:09:19
1427
原创 线程ID打印出来为负的问题
今天打印线程ID的时候发现打印出来的数值是负数,于是查了一下资料发现是因为进程id的值太大导致的,因为int是有符号整型,其符号位为0的时候默认为数值为整数,所以当这个数值大到占用了符号位的时候,这个值打印出来就会变成负值。解决办法:将打印的%d换成了%ld就正常了。借此机会顺便复习了一下printf函数中所有的占位符。%d 按十进制整型数据的实际长度输出。%ld 输出长整型数据。%md m 为指定的输出字段的宽度。如果数据的位数小于 m,则左端补以空格,若大于 m,则按实际位数输出。%u 输出
2022-02-21 20:31:39
611
原创 获取当前系统的时间
1.time函数函数原型:time_t time(time_t *t)函数功能:获取当前系统的时间函数的返回值和参数都是time_t类型的变量,且都可以获取当前系统的时间,使用前先定义一个time_t类型的变量。例:time_t t;time(&t);或者time_t t;t = time();2.ctime函数函数原型:char *ctime(const time_t *timep);函数功能:将time_t 类型变量转换为char *类型例如:time_t t;
2022-02-21 16:51:51
3373
原创 内存操作函数,mem* 系列以及 *alloc系列
1.memcpy函数函数原型:void* memcpy(void* dest,const void* src,size_t num)功能:将src指针指向的的前num个字符拷贝到dest中,返回值是指向目标储存区dest的指针,一般不带返回值。例:char a[200];memcpy(memcpy(a, "123", 3), "bla",3);2.memmove函数函数原型:void* memmove(void* dest,const void* src,size_t num)功能:同me
2022-02-12 17:11:36
1554
原创 SecureCRT软件安装
首先从官网下载SecureCRT官网地址:https://www.vandyke.com/cgi-bin/releases.php?product=securecrt,也可以从百度网盘下载。下载完毕后正常安装SecureCRT(注意选择安装路径不要有中文)。下一步之前先关闭杀毒软件(必须!),然后解压Patch.And.Keymaker.rar文件,以管理员身份运行keygen,然后选择路径,选择自己安装的SecureCRT路径下的SecureCRT文件。选择完毕后打开安装好的好的打开SecureCR
2022-02-11 17:59:34
4639
原创 FIFO文件和普通文件
今天学到FIFO文件的时候,发现FIFO文件的通信方式和普通文件是一样的,就产生疑问,为什么要有FIFO文件。经过查询后,发现FIFO文件是对内存进行操作,而普通文件是存储在硬盘上,对内存的的读取会比硬盘的读写要快很多。...
2022-02-10 20:38:49
1229
原创 fork之前没有fflsh,printf缓存区以及子进程的关系
今天在写循环创建和回收子进程的时候,突然发现printf中加上换行符\n和不加换行符的区别很大。输出如下:把第十四行的换行符去掉以后,输出如下:不仅仅是输出变成了六个,输出时间也由原来每两秒一个变得杂乱无章。经研究发现,是因为printf缓存的缘故。printf只有在遇到\n或者进程结束才会输出。所以第一次循环没有输出,第二次循环时子进程复制了父进程的缓存,并在退出时打印出来一个,第三次循环父进程fork子进程时,父进程缓存池已经有了两个打印的数据,子进程复制了并在退出时打印,第三次循环结束时
2022-02-09 15:49:22
275
原创 centos设置vim中tab长度以及缩进格式和代码颜色
set nocompatibleset numberfiletype onset history=1000set background=darksyntax onset autoindentset smartindentset tabstop=4set shiftwidth=4set showmatchset guioptions-=Tset vb t_vb=set rulerset nohlsset incsearchif has(“vms”)set nobackupe
2022-02-09 10:03:36
1263
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人