自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 GCC编译-Werror

GCC编译-Werror编译:第一步、是进行预编译,使用-E参数可以让GCC在预处理结束后停止编译过程:gcc -E hello.c -o hello.i预处理的宏定义插入到hello.i中第二步、是将hello.i编译为目标代码,这可以通过使用-c参数来完成:gcc -c hello.i -o hello.o也可以通过源文件直接生成gcc -c hello.c第三步、是将生成的...

2020-03-30 16:02:28 10932

原创 TCP/IP协议

目录网络发展网络协议两个出名的通信协议结构模型OSI七层参考模型TCP/IP五层参考模型网络通信中的数据(协议的封装与应用)封装与分用网络层IP协议IP协议头格式网段划分路由选择数据链路层认识以太网以太网数据帧格式MAC地址ARP协议ARP数据报格式MTU其他重要协议DNS:ICMP:ping命令网络发展独立模式:计算机之间相互独立网络互联:多台计...

2020-03-30 14:15:29 244

原创 面向对象编程总结

1.面向对象编程的三大特性a.封装(代码模块化):将对象的属性和方法隐藏起来,仅对外公开接口部分。其中函数和数据都是类的成员。b.继承(代码复用性):继承是类与类的关系,同现实世界的继承一样。被继承的类称为父类或基类,继承的类称为子类或派生类。派生类可以拥有基类的成员函数和成员数据,也可以自己定义新的数据成员。继承的特性为:派生类可以赋值给基类;基类不可以赋值给派生类基类的指针引用可以指向...

2019-10-05 16:20:14 250

原创 多态的定义及其实现

1、什么是多态性?多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。只有重写虚函数才体现C++的多态性虚函数:虚函数对于多态具有决定性的作用,有虚函数才能构成多态。只需要在虚函数的声明处加上 virtual 关键字,函数定义处可以加也可以不加。为了方便,你可以只将基类中的函数声明为虚函数,这样所有派生类中具有遮蔽(覆盖)关系的...

2019-09-01 14:51:00 1243

原创 C++11中智能指针的原理及其应用

在C++11中,引入了智能指针。主要有:unique_ptr, shared_ptr, weak_ptr。这3种指针组件就是采用了boost里的智能指针方案。很多有用过boost智能指针的朋友,很容易地就能发现它们之间的关系:std boost 功能说明unique_ptr scoped_ptr 独占指针对象,并保证指针所指对象生命周期与其一致shared_ptr shared_ptr 可...

2019-09-01 14:40:19 247

原创 Io多路转接模型及其原理

三种IO多路转接模型来实现多路转接IO:select:int select(int nfd,fd_set *rfds,fd_set *wfds,fd_set *efds,struct timeval *tv)FD_ZERO(fd_set *set) FD_ISSET(int fd,fd_set *set)FD_SET(int fd,fd_set *set)...

2019-08-28 22:24:10 617

原创 BubbleSort

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>void BubbleSort(int* array, int size){for (int i = 0; i < size - 1; i++){for (int j = i + 1; j < size; j++...

2019-08-28 22:22:00 165

原创 倒序打印数组

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>void Swap(int *x, int *y){int temp = *x;*x = y;y = temp;}void Reverse(int array, int size){if (size <= 1)...

2019-08-23 13:40:11 344

原创 IP地址分类

![在这里插入图片(https://img-blog.csdnimg.cn/20190815085334948.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlcnRpb3k=,size_16,color_FFFFFF,t_70)...

2019-08-15 08:54:27 78

原创 HTTP状态码详解

状态码 含义100 客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。101 服务器已经理解了客户端的请求,并将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求。在发送完这个响应最后的空行后,服务器将会切换到在Upg...

2019-08-14 08:38:20 79

原创 MergeSort

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <assert.h>#include <string.h>void MergeData(int* array,int left,int...

2019-08-13 15:22:37 169

原创 快排(QuickSort)

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>void swap(int* left, int* right){int temp = left;left = right;right = temp;}int Partion(int array, int left, ...

2019-08-08 20:25:05 179

原创 选择排序

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>void swap(int* pLeft, int* pRight){int temp = *pLeft;*pLeft = pRight;pRight = temp;}void SelectSort(int array,...

2019-08-08 18:38:52 122

原创 选择排序(SelectSort)

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>void swap(int* pLeft, int* pRight){int temp = *pLeft;*pLeft = pRight;pRight = temp;}void SelectSort(int array,...

2019-08-08 17:55:53 113

原创 希尔排序(ShellSort)

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>void ShellSort(int* array, int size){int gap = 3;while (gap > 0){for (int i = gap; i < size; ++i){int k...

2019-08-08 17:12:58 66

原创 InserSort

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>void InserSort(int* array, int size){for (int i = 1; i < size; ++i){int key = array[i];int end = i - 1;whil...

2019-08-08 16:14:04 118

原创 给定三边长,判断该三边长能不能组成一个三角形

#define _CRT_SECURE_NO_WARNINGS#include #include <stdlib.h>#include “cmath”using namespace std;int main(){double a, b, c;while (cin >> a >> b >> c){if ((a + b) > ...

2019-07-31 11:27:47 1059

原创 写一个函数,求两个整数之和,要求在函数体内不得使用四则运算符号

class Solution {public:int Add(int num1, int num2){while(num1!=0){int sum=(num1^num2);int carryBit=(num1&num2)<<1;num2=sum;num1=carryBit;}return num2;}};

2019-07-31 10:45:42 143

原创 杨辉三角

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int main(){int a[20][20], n, i, j;printf(“输入n = “);scanf(”%d”, &n);for (i = 0; i < n; ++i){a[i][i] = 1...

2019-07-30 13:55:49 73

原创 心型

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int main(){float y, x, a;for (y = 1.5; y > -1.5; y -= 0.1){for (x = -1.5; x < 1.5; x += 0.04){a = xx + ...

2019-07-30 12:50:13 202

原创 递归方式实现打印一个整数的每一位

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <assert.h>int print(const int n){if (n > 9){print(n / 10);}printf("%d\n", n % 10);}int ma...

2019-07-29 13:01:08 89

原创 递归和非递归分别实现求n的阶乘

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <assert.h>//递归方法/int fac(const int n){if (n == 1 || n == 0)return 1;else{return nfac(n - 1);...

2019-07-29 12:54:07 103

原创 递归和非递归分别实现strlen

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <assert.h>int Mystrlen(const char *string){if (*string){return 1 + Mystrlen(string + 1);}else...

2019-07-29 11:39:32 66

原创 编写一个函数 reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数。

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <assert.h>void reverse_string(char* string){if (*string != ‘\0’){string++;reverse_string(string...

2019-07-29 11:29:55 106

原创 C语言用递归函数Digitsum(n),输入一个非负整数,返回组成它的各位数字之和

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int DigitSum(int n){int sum = 0;int m = 0;if (n <= 0)return 0;else{{m = n % 10;n = n / 10;sum = m + Di...

2019-07-29 11:09:53 288

原创 C语言用递归的方法求n^k

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int Mybow(int n, int k){if (k == 1)return n;elsereturn n*Mybow(n, k - 1);}int main(){int a = Mybow(4, 2);p...

2019-07-29 10:56:33 173

原创 递归和非递归求斐波那契数

递归实现求第n个斐波那契数#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int fib(int n){if (n <= 2)return 1;elsereturn fib(n - 1) + fib(n - 2);}int main(){int n, ...

2019-07-29 10:42:35 166

原创 三次握手和四次挥手的过程及原因

三次握手:第一次握手:client将标志位SYN置为1,随机产生一个值为seq=J,并将该数据包发送给server,client进入SYN_SENT状态,等待server确认。第二次握手:server收到数据包后由标志位SYN=1知道client请求建立连接,server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将数据包发送给client以确认连接请求,ser...

2019-07-29 10:16:52 3842

原创 进程创建,等待,终止

进程创建:#include <stdio.h>#include <stdlib.h>#include <unistd.h>int main(void){printf(“before fork\n”);pid_t pid = fork();if (pid == 0) { //子进程 while (1) printf("child\n");...

2019-07-23 18:01:42 96

原创 task_struct结构体成员详解

进程就是程序动态运行的实例,它是承担分配系统资源的实体。我们也可以把进程当成是由一组元素组成的实体,进程的两个基本的元素时程序代码和与代码相关联的数据集合。在进程执行时,都可以被表征为一下元素:1.标识符:与进程相关的唯一标识符,用来区别正在执行的进程和其他进程。2.状态:描述进程的状态,因为进程有挂起,阻塞,运行等好几个状态,所以都有个标识符来记录进程的执行状态。3.优先级:如果有好几个进...

2019-07-23 16:28:39 311

原创 进程调度算法

进程调度算法调度算法是指:根据系统的资源分配策略所规定的资源分配算法。一、先来先服务和短作业(进程)优先调度算法先来先服务调度算法。先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度, 也可用于进程调度。FCFS算法比较有利于长作业(进程),而不利于短作业(进程)。由此可知,本算法适合于CPU繁忙型作业, 而不利于I/O繁忙型的作业(进程)。短作业(进程)优先调...

2019-07-23 16:07:44 115

原创 计算两个字符串最大公共字串的长度,字符不区分大小写

#include #include using namespace std;int Maxsubstr(string a,string b){unsigned int s1,s2;int count=0,Max=0;for(unsigned int i=0;a[i]!=’\0’;++i){for(unsigned int j=0;b[j]!=’\0’;++j){s1=i; ...

2019-07-23 14:07:39 285

原创 二叉树及其三种遍历

1.二叉树的常用性质<1>.在二叉树的第i层上最多有2 i-1 个节点 。(i>=1)<2>.二叉树中如果深度为k(有k层),那么最多有2k-1个节点。(k>=1)<3>.若二叉树按照从上到下从左到右依次编号,则若某节点编号为k,则其左右子树根节点编号分别为2k和2k+1;<4>.二叉树分类:满二叉树,完全二叉树满二叉树:高度为...

2019-07-23 11:32:17 148

原创 一个软件的Tarball是如何安装的?

将Tarball由厂商的网页下载下来;将Tarball解开,产生很多的原始码档案;开始以gcc进行原始码的编译(会产生目标文件object files);然后以gcc进行函式库、主、子程序的链接,以形成主要的binary file;将上述的binary file以及相关的配置文件安装至自己的主机上面。RPM安装RPM全名是RedHat Package Manager,简称为RPM,顾名...

2019-05-22 19:20:35 345

原创 在Linux下实现一个进度条程序,通过makefile进行编译

首先,我们需要知道进度条是怎么实现的?进度条的动态效果是利用人眼的视觉暂留做到的。比如说:先输出: “= ”表示1%在下一次则显示:“== ”再一次: “=== ...

2019-05-22 19:19:27 220

原创 简要介绍几种了解到的编译器

编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)。下面介绍一下GCC、Clang、Visual St...

2019-05-22 19:17:46 946

原创 栈和队列

什么是栈,栈有什么特性?答:栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作,进行数据插入和删除操作的一端称为栈顶,另一端称为栈底,栈的特性是先进后出。请用C语言实现一个动态栈typedef int SDataType;typedef struct Stack{SDataType* _array;int _capacity;int _size; // 表示栈中有...

2019-05-17 14:26:14 80

原创 Linux基础命令

有关Linux权限的认识,理解权限:就是对某事项进行决策程度和范围,通俗来说,就是规定哪些事情能做、哪些事情不能做。那么,在Linux中有哪些基本权限呢?基本权限:r(读):对于文件而言,具有读文件的权限,对目录而言,具有浏览目录的权限。w(写):对文件而言,具有修改文件的权限,对目录而言,具有删除,移动目录的权限。x(执行):execute对文件而言,具有执行文件的权限,对于目录而言...

2019-05-17 13:43:49 96

原创 链表知识梳理

熟悉什么是链表,链表的分类?答:链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序来实现的。熟悉链表带头结点和不带头结点的区别?答:在结构上:带头结点的单链表,不管链表是否为空,均含有一个头结点,不带头结点的单链表不含头结点。在操作上:带头结点的单链表的初始化为申请一个头结点。无论插入或删除的位置是第一个结点还是其他结点,算法步骤都相同。不带头...

2019-05-11 14:22:15 103

原创 算法效率,时间复杂度,空间复杂度

1.衡量一个算法好坏的标准在于其算法效率高,算法效率分为时间复杂度和空间复杂度,时间复杂度主要衡量一个算法的运行速度,空间复杂度主要衡量一个算法所需要的额外空间。一个算法好应该时间复杂度最低,空间复杂度最小。2.时间复杂度就是衡量一个算法的运行速度,也就是时间效率。3.算法的时间复杂度是一个函数,他定量描述了该算法的运行时间,一个算法执行所耗费的时间,是不能算出来的,是基本操作的执行次数。4...

2019-05-10 15:19:34 1796 1

空空如也

空空如也

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

TA关注的人

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