![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础巩固
李御风
这个作者很懒,什么都没留下…
展开
-
源码阅读心得
简单记录一下自己最近一段时间阅读一个C语言开源项目的心得1、阅读工具source insight 4.0 + gdb + Typora2、阅读心得1)不要陷在代码的实现细节里面出不来,浪费时间。因为稍微大一点的开源项目,都有很多自定义的结构体,这些结构体封装了大量的实现细节,特别是C语言的指针满天飞,看一会头就昏了。所以在看的时候,要先抓住整个实现的骨架,而不是枝干。什么是骨干?**就是这...原创 2020-04-07 09:58:35 · 184 阅读 · 0 评论 -
使用expect 实现scp 自动输入密码
#!/usr/bin/expectsrc_path=./opencv.tar.gzdst_path=/home/tempset passwd "123456"spawn scp ${src_path} root@${ip}:${dst_path}expect { "password:" { send "$p...原创 2019-12-13 09:18:32 · 429 阅读 · 1 评论 -
shell 技巧汇总
1、替换多个空格为一个空格sed -i 's/[ ][ ]*/ /g' file.txtecho $value | sed s/[[:space:]]//g #去除空格echo $value | sed '/${match_part}'/d' #删除匹配的行echo $value | sed '1d' #删除一行2、oracle 语句嵌入shell脚本中function selec...原创 2019-12-12 17:05:50 · 246 阅读 · 0 评论 -
TCP连接建立和释放
三次握手1、客户端主动打开连接,服务端被动打开连接2、为何需要“第三次握手”做确认,按照一般的逻辑你发送我确认就可以了,不需要再次确认。这里主要是为了防止已经失效的报文又传给服务端:下面以只有两次握手举例:client第一次发送连接请求给server,但是由于网络情况,超时,于是client再次发送连接请求给serverserver接收到client第二次发送的连接请求,于是发送确认连...原创 2019-02-25 17:31:49 · 3359 阅读 · 0 评论 -
C++中变量声明和定义
1、声明和定义都规定了变量的名字和类型,但是定义会申请内存空间,也可能为变量赋一个初始值。2、同一个变量声明可以有多处,但定义只能有一处extern int i; //声明i而非定义iint j;//声明并定义jextern关键字就是告诉编译器,这个变量i定义在其他文件中3、任何显式初始化的声明也会成为定义extern int i = 3;//定义,非声明4、函数声明与定义区别在于...原创 2019-02-25 13:55:13 · 6319 阅读 · 3 评论 -
STL之vector
1、vector本质上是一个向量,它的size和captical是两个概念,前者指vector中元素个数,后者指vector实际可以容纳元素个数。2、插值的时候,当vector发现内存不够的时候,会做扩容操作,vector每次扩容都是原来内存块大小的两倍3、因为vector的clear()只保证size为0,但不保证内存释放,也就是内存可能释放也可能不释放。故常使用下面代码清空vectorv...原创 2019-02-25 10:37:18 · 183 阅读 · 0 评论 -
c语言局部变量 静态局部变量 全局变量与静态全局变量
https://www.cnblogs.com/lanjianhappy/p/6035433.html全局变量和静态变量的生命周期是一样的,都要等到程序结束被释放二者作用域不一样,静态变量取决于定义在哪里。全局变量(定义在函数外的变量),作用域为整个文件,通过extern实现跨文件引用。普通变量与全局变量,生命周期不一样,分配的空间位置不一样。普通变量不会被初始化,但全局变量默认初始化。...原创 2019-02-24 21:42:24 · 948 阅读 · 0 评论 -
C++多态实现
1、非虚函数的调用在编译时进行绑定,通过对象进行的函数(虚函数火非虚函数)调用也在编译时确定2、每个有虚函数的类都维护着一张虚函数表,表中是该类中虚函数的地址。3、子类父类各有各的虚函数表,互不干预。但子类会继承父类中的表。4、子类中的虚函数表可能被覆盖,如果重载了虚函数。5、对象中有一隐含指针指向它对应类的虚函数表6、基类指针被赋值为派生类对象的地址,就可以找到指向该派生类虚函数表的隐...原创 2019-02-24 21:29:59 · 121 阅读 · 0 评论 -
new默认初始化
using namespace std;char arr[20];//默认情况下,new分配的对象,不管是单个分配的还是数组中的, 都是默认初始化的。char *p = new char[20];cout << arr[10] << endl;cout << int(p[10]) << endl;cout << int(p[1...原创 2019-02-19 10:21:01 · 1808 阅读 · 0 评论 -
TCP和UDP区别
TCP是面向连接,通过三次握手建立连接,可以看成字节流TCP保证数据的正确性和数据顺序TCP服务是可靠的,通过确认,窗口重传,拥塞控制机制实现,传完断开连接节省资源缺点是相对于UDP慢,效率低,占用资源高TCP主要用于对稳定性正确性有一定要求的场合,如HTTPS,邮件UDP是面向报文的,无状态传输机制,实时性好UDP服务是不稳定不可靠的,可能丢包,不保证数据的有序UDP常用于视频传输...原创 2019-02-19 10:00:44 · 130 阅读 · 0 评论 -
浮点数比较大小
浮点数可以比较大小,如果是&lt;,&gt;,可以直接写成if (a &gt; b) ,但如果要比较=,!= ,就需要考虑精度问题。正常的思路,我们比较两个数大小是将两个数做差,与0比较,看是否等于0,因为浮点数在计算机里面表示问题(二进制无法精确表示一些浮点数),所以这里要改成两个数的差是否在一定精度范围内。#define EPS 1e-6if(((a - b &gt; - EPS) &a...原创 2019-02-19 09:40:51 · 8118 阅读 · 3 评论 -
c++ 常量成员函数
MyString& MyString::operator+=(const MyString& str) const{ size_t len = _len + str.size(); char* temp = new char[len+1]; strcpy(temp, _data); strcpy(temp+_len, str.c_str()); delete [] _d...原创 2019-02-22 17:36:41 · 356 阅读 · 0 评论