- 博客(37)
- 收藏
- 关注
原创 setsockopt函数的具体分析
写Socket程序的时候经常会遇到这个问题:如果自己的程序不小心崩溃了,重新启动程序的时候往往会在bind调用上失败,错误原因为Address Already In Use,往往要等待两分钟才能再次绑定。但是在很多的程序(比如nginx)中好像并不存在这个问题,就算被KILL了也能立刻重启。这个区别还是比较头痛的。其实我猜Unix Socket编程这样的书上有讨论过这方面的问题,不过我竟然没有...
2018-08-08 14:46:42 182
原创 在C++中用STL实现简单计算器
在C++中用STL实现简单计算器 #include <iostream>#include <stack> using namespace std; int Priority(char ch){switch(ch){case '(':return 3;case '*':case '/':return 2;cas...
2018-08-08 14:37:08 404
原创 TCP三次握手
TCP:SYN ACK FIN RST PSH URG简析 三次握手Three-way Handshake 一个虚拟连接的建立是通过三次握手来实现的 1. (B) --> [SYN] --> (A) 假如服务器A和客户机B通讯. 当A要和B通信时,B首先向A发一个SYN (Synchronize) 标记的包,告诉A请求建立连接. 注意: 一个 ...
2018-08-08 14:26:26 194
原创 C++ static篇
在C语言中,static有三大作用:修饰局部变量,修饰全局变量,修饰函数 而在C++中,不仅继承了C语言的全部语法,还对关键字做了一些变动。 先看代码#include <iostream>using namespace std;class Test{public: Test(int a) { m_a = a; }publi...
2018-08-02 14:33:51 127
原创 C++函数篇
1.函数重写在子类中定义与父类中原型相同的函数函数重写只发生在父类与子类之间重载与重写区别:重载:同一个作用域; 子类无法重载父类函数,父类同名函数将被覆盖; 重载是在编译期间根据参数类型和个数决定;重写:发生于父类、子类之间; 父类和子类函数有相同的函数原型; 使用virtual关键字声明后能够产生多态; 运行期间根据具体对...
2018-08-02 14:31:54 119
原创 char*与char[ ] 的区别
看上图程序,调用returnstr()时可以打印出abc,但是调用returnstr1()时不能打印出来且编译时候警告该函数返回了局部变量的地址char*p = "abc";这里的p指向了一个字符串常量,该常量是存储在静态存储区的,所以其内容是不可改变的,但是p指针可以指向其他地址。如:p[1] = 'c'; //运行时出错,段错误p = "abcd" //可以运行 ...
2018-07-29 09:54:24 133
原创 继承的知识点(1)
//private:除了本身类内 其余类不可调用//protected:本身与派生类可以调用//public:都可以调用//例程#include <iostream>#include <string>#include <windows.h> using namespace std; class people{private: s...
2018-07-29 09:52:56 225
原创 mystring.h整理
mystring.h #ifndef _MYSTRING_H_ #define _MYSTRING_H_ #include <iostream> using namespace std; class Mystring { //<< >> 全局函数 frie...
2018-07-27 14:31:16 269
原创 重载符号的总结
//运算符重载的相关知识点//重载:一名多用 自定义规则//不可重载的运算符: . :: .* ?: sizeof//重载后的优先级不变 不改变结合性和所需操作数 不去创建新的运算符 //<< >>只能用全局函数重载 //= , 【】 , () , -> ,只能用成员函数重载 //c+...
2018-07-27 14:30:00 1463
原创 错题整理(3)
1.字符串两种初始化 chars[10]=”right!”;(字符数组) char*sp=”right!”;(字符指针)2..3.栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存区域,栈顶的地址和栈的最大容量是系统预先规定好的,在Windows下,栈的大小是2M(也有的说是1M,总之就是一个确定的数),如果申请的空间超过栈的剩余空间时,将提示ov...
2018-07-25 10:15:15 174
原创 错题整理(2)
1.在C++中,如果确定了某一个构造函数的创建过程,在该构造函数中如果调用了其它重载的构造函数,它将不会执行其它构造函数的初始化列表部分代码,而是执行函数体代码,此时已经退化成普通函数了。例子说明如下:class CBook{public: doublem_price; CBook() { CBook(8.8); } CBook(doub...
2018-07-25 10:12:14 138
原创 错题整理(1)
1. charc = '\72'; 中的\72代表一个字符,72是八进制数,代表ASCII码字符“:”。2. 10*a++ 中a先进行乘法运算再自增(笔试中经常喜欢出这类运算符优先级容易混淆的输出问题)。3. const和static的作用 太常见的问题了,下面给出一个较详细的参考答案:static关键字:1)函数体内static变量的作用范围为函数体。不同于auto变量。...
2018-07-23 14:55:36 466
原创 C++:类与对象的预习
1.什么是面向对象编程?面向对象编程是一种编程方法,专注于将数据和函数建模为对象。 相比之下,程序性规划重点关注程序执行,逐条语句。 在某种程度上,面向对象的编程更抽象,而过程编程更接近原始机器指令 2.为什么要学习面向对象的编程?面向对象的编程对现代计算至关重要。 面向对象编程不仅仅专注于完成任务,还允许您构建反映“现实世界”的模型和关系。 1.应用程序开发:面向对象...
2018-07-23 13:29:35 342
原创 C++中引用--&知识点的总结
1. 创建引用变量 int rats= 101;int &rodents = rats; //rodents是rats的引用。rodents的类型为int &,即指向int变量的引用。上述引用申明允许将rats和rodents互换,他们指向相同的值和内存单元。&不是地址运算符,而是类型标识符的一部分,就像char*指的是指向char的指针一样。rodents和r...
2018-07-23 11:44:14 2560
原创 C++第一课
1.命名空间的嵌套#include <iostream>using namespace std;int aaaa;//不赋值 直接输出它的值的时候,因为是全局变量 所以默认给了值 0,如果是局部变量 那么就是一个垃圾值//在C中全局变量可以重复定义 后定义的覆盖前面的 但是 C++不行 检测机制更加严格namespace A{ int a = 1; v...
2018-07-19 10:29:19 334
原创 liunx网络编程2
1.简述客户与服务之间的关系? 服务器是为互联网用户提供服务的应用程序;而客户是服务的请求者。应用程序包括服务器部分和客户部分,这两部分既可以在相同的系统上运行,也可以在不同的系统上运行。用户通常调用应用程序的客户部分,构建特定服务的请求,并用TCP/IP作为传输工具把这个请求发送到应用的服务部分。 2.网桥与网关有什么区别网桥是一个局域网与另一个局域网
2017-12-07 14:18:50 127
原创 liunx网络编程(1)
1. 简述TCP/IP协议 TCP/IP是网络中使用的基本通信协议,TCP/IP实际上是一组协议,它包括上百个能完成各种功能的协议,而TCP协议和IP协议是保证数据完整传输的的两个基本重要协议。通常说TCP/IP 是Internet协议簇,而不只是TCP 和IP协议。 2. 点分十进制表示法是什么? 互联网上的每个接口必须有唯一的Internet 地址
2017-12-07 14:16:13 129
原创 操作系统总结
1、简述Linux进程内存空间分为哪几个段?作用分别是什么? 答:Linux中的进程包含3个段,分别为“数据段”、“代码段”和“堆栈段”。“数据段”:已被初始化的变量,包括全局变量和已被初始化的静态变量;未初始化数据段,存储未被初始化的静态变量,又称BBS;“代码段”存放的是程序代码的数据;“堆栈段”存放的是子程序的返回地址、子程序的参数以及程序的局部变量等
2017-12-07 14:12:44 175
原创 liunx多线程
1. 线程和进程的区别:进程是系统中程序执行和资源分配的基本单位。每个进程有自己的数据段、代码段和堆栈段。线程通常叫做轻型的进程。线程是在共享内存空间中并发执行的多道执行路径,他们共享一个进程的资源。线程和进程比起来很小,所以相对来说,线程花费更少的CPU资源。 2.如何来标识一个线程? 表示进程号的为pid_t类型,表示线程号的是pt
2017-12-01 17:58:57 159
原创 liunx进程通信2
1. 何为消息队列?消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。 2. 消息队列的该如何应用?消息队列是链表队列,它通过内核提供一个str
2017-12-01 10:31:33 153
原创 linux 进程通信
1.linux进程间通信的目的是什么?1.数据传输,一个进程将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间。2.共享数据,多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程立刻看到。3.通知事件,一个进程通知另一个或一组进程发生了某件事。4.资源共享,多个进程之间共享同样的资源。需要内核提供锁和同步机制。5.进程控制,有些进程希望
2017-12-01 10:24:27 221
原创 linux的进程
1.进程的本质是什么? 1.进程的存在必然需要程序的存在。进程和程序不是一一对应的。 2.进程是系统中独立存在的实体。 它对应特殊的描述结构并有申请、使用、释放资源的资格。 3.进程的并发特性通过对资源的竞争来体现,进程的动态特性通过状态来描述。进程的逻辑形态和物理形态不同,逻辑上进程只不过是一系列信息的说明,
2017-11-23 22:58:23 126
原创 liunx下的文件操作
1.Linux文件分为哪些?(1)普通文件(regular)(2)目录文件(directory)(3)管道文件(pipe)(4)套接字文件(socket)(5)链接文件(link)(6)字符设备文件(character)(7)块设备文件(block)2.fopen()和fclose() ANSI C规定了标准输入输出函数库,用fo
2017-11-23 21:12:07 144
原创 堆和队列
1.两栈共享空间有什么实际应用? 使用过程中给每个栈分配足够的空间是不太现实的,使用栈的时候,我们也不能保证栈有足够的空间。另外,栈是一个动态的存储结构,各个栈的实际大小在使用的过程中都会发生变化的。有时候其中一个已经上溢了,而另外一个还没有怎么使用,这样就会造成空间利用率降低。共享空间可以解决空间利用率不高的问题。但这种结构一般都是用于当两个栈的空间需求有相反关系时,也就是
2017-11-03 12:52:27 418
原创 线性链表
1.静态链表有什么优点?适用哪些地方?静态链表的初始长度一般是固定的,在做插入和删除操作时,不需要移动元素,仅需要修改指针,故仍具有链式存储结构的主要优点;一般在没有指针的语言中,静态链表是数组实现链表的一种方法2.循环链表和双向链表的优点在哪双向链表由于另外存储了指向链表内容的指针,并且可以会修改相邻的结点,有时候第一个结点可能会被删除,或者在之前添加一个新的结点,这时候
2017-10-27 14:58:14 626
原创 结构体
1.什么是结构体结构体是一种专门设计用来存储不同数据类型元素集合结构体与数组的对比:> 数组:只能由多个相同类型的数据构成。> 结构体:可以由多个不同类型的数据构成。2.结构体初始化与使用初始化:struct Car { int wheels; // 轮子数 int speed; // 速度}car
2017-10-27 14:52:22 302
原创 Linux中的函数
1.形参和实参怎么区分?函数定义中的参数是形式参数,函数调用者给函数的参数是实际参数,在函数调用之前,实际参数的值将被复制到形式参数中。注:因为是复制,所以操作形参时不会影响到实参。(地址传值不算)。2.函数如何调用?①:通过函数名,找到函数入口地址②:给形参分配空间③:数值传递④:执行函数体⑤:返回⑥:释放空间3.函
2017-10-20 13:19:26 537
原创 linux 中的指针
1.指针的算数运算与关系运算是如何实现的?第一种形式是:指针+-整数 标准定义这种形式只能用于指向数组中某个元素的指针,并且这类表达式的结果类型也是指针。这种形式也适用于使用malloc函数动态分配获得的内存。对一个指针加1使它指向数组中的下一个元素,加5使它向右移动5个元素的位置,依次类推。把一个指针减去3使它向左移动3个元素的位置。第二种类型的指针运算具有如下的形式
2017-10-20 12:53:56 1557
原创 shell和C语言第一课
shell是一个命令解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可用shell来开启、挂起、停止,甚至编写一些程序。shell常用系统变量$ # :保存程序命令行参数的数目(传入脚本的命令行参数)$ ?:保存前一个命令的返回码$ 0 :保存程序名(命令本身,shell文件名)$ * :以(”$1 $2…”)的形式保存所
2017-10-14 17:01:46 251
原创 linux系统管理和安全相关命令
top1.作用top 命令用来显示执行中的程序进程,使用权限是所有用户。2.格式top [-] [d delay] [q] [c] [S] [s] [i] [n]3.主要参数d:指定更新的间隔,以秒计算。q:没有任何延迟的更新。如果使用者有超级用户,则 top 命令将会以最高的优先序执行。c:显示进程完整的路径与名称。S:累积模式,会将己
2017-10-12 21:19:19 275
原创 Linux文件处理命令
file1.作用 file通过探测文件内容判断文件类型,使用权限是所有用户。 2.格式 file [options] 文件名 3.[options]主要参数 -v:在标准输出后显示版本信息,并且退出。 -z:探测压缩过的文件类型。 -L:允许符合连接。 -f name:从文件namefile中读取要分析的文件名列表。
2017-10-12 20:56:58 179
原创 第四章C语言的语句
1. 空语句有什么用途? 纯粹消耗CPU时间,起到延时的作用。 为了程序的结构清楚,可读性好,以后扩充新功能方便。2.跳转语句:gotogoto可以灵活跳转,但在结构化的程序中慎用。3.基础语句表达式语句和函数调用语句。4.break和continuebreak:跳出当前循环,且对if-else条件语句不起作用
2017-10-11 23:03:32 188
原创 第三章 运算符 表达式
1.运算符的种类?c语言的运算符可分为以下几列:算术运算符:用于数值运算,包括+、-、*、/、%、++、--关系运算符:用于比较运算,包括>、=、逻辑运算符:&&、||、!位操作运算符:参与运算的量,按二进制位参与计算,&,|,!,~,^,>赋值运算符:=,还有一些复合算数赋值和复合位运算赋值。条件运算符(?:)逗号运算符:,
2017-10-11 22:34:12 285
原创 第二章数据类型
1.什么是变量?其值在其作用域内可以改变的量称为变量。变量在使用前必须要定义,每个变量都有自己的地址。每个变量必须要有一个名字和它所在内存空间绑定。2.什么叫局部变量?局部变量也叫内部变量,局部变量是在函数内作定义说明的。其作用域仅限于函数内。3.函数形参变量如何使用?函数形参变量只有在被调用期间才能分配内存单元,调用结束立即释放。4.void类型是什么?第一种表示没有
2017-10-11 22:30:02 139
原创 liunx常用的指令
文件的命令: file1.作用 件内容判断文件类型,使用权限是所有用户。2.格式file通过探测文file [options] 文件名3.[options]主要参数-v:在标准输出后显示版本信息,并且退出。-z:探测压缩过的文件类型。-L:允许符合连接。-f name:从文件namefile中读取要分析的文件名列表。4.简单说明使用file命令可以知
2017-10-07 22:21:09 162
原创 Makefile和gdb调试
1.makefile的规则:target:prerequisites(tab键)commedtarget可以是一个object file(目标文件),也可以是一个执行文件,还可以是一个标签(label)。对于标签这种特性,在后续的“伪目标”章节中会有叙述。prerequisites就是,要生成那个target所需要的文件或是目标。command也就是make需要执行的命令。(任
2017-10-07 21:51:53 1406
原创 gcc的如何使用
gcc工具使用:1.gcc -E test.c -o test.i 头文件的预处理.2.gcc -S test.i -o test.s 编译阶段,输入的中间文件.i, 编译后生成汇编语言.s3.gcc -c test.i -o test.o 汇编阶段,将输入汇编文件.s变成机器语言.o,也就是目标文件。4.gcc test.o -o t
2017-10-07 21:21:59 667
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人