自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Tian_Luo_Girl的博客

一只小菜鸟的胡说八道

  • 博客(32)
  • 收藏
  • 关注

原创 TCP与UDP的区别

UDP协议段格式 16位源端口号 16位目的端口号 16位报文长度 16位检验和 数据 16位源端口号:记录着发送端的进程端口号 16位目的端口号:数据将要发送给哪个进程 16位报文长度:报文长度=报文首部+传输数据,能传送2^16字节=64K内容,因此要在应用层将要传输的数据大小处理好,因为UDP是不会拆分和合并的,应用层多大的...

2018-09-05 12:19:45 249

原创 面试题1.2

1.TCP三次握手,四次挥手的过程四次挥手: ·主动关闭连接的一方,调用close();协议层发送FIN包·被动关闭的一方收到FIN包后,协议层回复ACK;然后被动关闭的一方,进入CLOSE_WAIT状态,主动关闭的一方等待对方关闭,则进入FIN_WAIT_2状态;此时,主动关闭的一方 等待 被动关闭一方的应用程序,调用close操作·被动关闭的一方在完成所有数据发送后,调用cl...

2018-09-03 23:02:05 217

原创 面试题1

1.CentOS7和CentOS6的区别1)初始化(init)系统不同 系统功能 CentOS6 CentOS7 init系统 Sysvinit SystemdLinux操作系统的系统首先会从BIOS开始,接下来进入boot loader,由bootloader载入内核,进行内核初始化。内核初始化的最后一步就是启动pid为1的init进程,这个进...

2018-09-03 12:28:26 291

原创 常见排序算法

排序算法:插入排序,选择排序,交换排序,归并排序插入排序:直接插入排序,希尔排序 选择排序:直接选择排序,堆排序 交换排序:快速排序,冒泡排序 归并排序:归并排序1.插入排序1.1直接插入排序算法思想:在要排序的一组数中,假设前边n-1个数是已经排好顺序的,现在要把第n个数插入到前面的有序数中,使得这n个数也是排好顺序的,如此反复循环,直到全部排好顺序。假设要排序的数...

2018-09-01 23:50:46 175

原创 位图&布隆过滤器&哈希表的应用——海量数据处理

1. 给定一个大小超过 100G 的文件, 其中存着 IP 地址, 找到其中出现次数最多的 IP 地址100G远远大于内存的大小,因此不能一次全部读入到内存中进行统计。进行哈希切分,一般的内存是4G,但肯定不能一下子把4G填满,内存还要放其他的东西,因此可以选择切成1000份小文件,每份大小100G/1000=100M(这个值只是估算一下,实际上每份的大小是和具体的数据有关系)将ip地...

2018-08-30 18:10:19 323

原创 Linux进程控制

1 进程创建1.fork函数fork从已存在的进程中创建一个新进程,新进程为子进程,原进程为父进程。 fork返回值: 在fork返回时,新进程已经创建完毕,子进程返回0,父进程返回子进程的pid在执行fork时,内核做了以下几件事: 1.分配新的内存块和pcb给子进程 2.复制父进程的部分pcb内容给子进程 3.将子进程添加到系统进程列表中 4.fork返回,开始调度器调...

2018-08-28 12:33:23 167

原创 Linux进程的概念

1 操作系统设计OS的目的: 1.管理计算机软硬件资源 2.为用户程序提供一个良好的执行环境1.1 OS如何管理计算机资源1.描述被管理的对象 2.组织被管理的对象1.1.1 如何描述被管理的对象用struct结构体1.1.2 如何组织被管理的对象用链表或者其他更高效的数据结构1.2 系统调用系统调用:由操作系统提供的接口 库函数:开发者对部分系统调用进...

2018-08-28 11:48:33 150

原创 C/C++常见名词对比

1.宏和函数宏通常被应用于执行简单的运算。 宏的优点: 1)宏比函数在程序的规模和速度方面更胜一筹。宏是插入到程序中直接执行的,而函数还要建立栈帧和销毁栈帧,这些工作所耗费的时间可能比函数内部的指令的执行所耗费的时间还要多。 2)宏是类型无关的。函数的参数必须声明为特定的类型,所以函数只能在类型合适的表达式上使用。反之宏,只要对参数的操作是合法的,就可以用于任何参数类型。 宏的缺点: ...

2018-08-19 18:13:58 299

原创 C++继承与派生

继承方式继承是面向对象实现复用的重要手段,通过继承定义一个类,共享公有的东西,实现各自本质不同的东西。继承方式有三种:public继承,protected继承,private继承继承方式影响着基类成员在派生类中的访问关系,具体如表所示: 继承方式 基类的public成员 基类的protected成员 基类的private成员 public继承 pu...

2018-08-08 18:17:49 307

原创 [剑指offer]3.二维数组中的查找

题目:在一个二维数组中,每一行都按照从左到右递增的顺序排列,每一列都按照从上到下递增的顺序排列。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 例如: 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 由该二位数组自身的特性,每一个数字都大于它所在行的左侧元素,都小于它所在列的下边的元素,因此,可以从左下角或者右上角开始查...

2018-07-30 08:43:08 158

原创 [剑指offer]1.赋值运算符函数

题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数。class CMyString{ public: CMyString(char* pData = NULL); CMyString(const CMyString& str); ~CMyString(void); private: ...

2018-07-30 07:57:55 442

原创 C++类与对象

面向对象:对象是指类的实例,将对象作为程序的基本单元,将程序和数据封装在其中,以提高软件的重用性,灵活性和扩展性。 面向对象的三大特性:封装、继承、多态类是现实世界对实体的抽象类别的映射,它是一个模型,定义出一个类并没有分配实际的内存空间来存储它。每个对象的大小为类中所有成员变量的大小之和,并遵循内存对齐规则。内存对齐的原因: 内存的访问不是任意位置访问的,只能读取CPU字长整数倍处的...

2018-07-26 08:21:39 183

原创 C++之引用

1.定义引用的定义格式: 类型& 引用变量名 = 已定义过的变量名; 如:int n=0;int& m=n;引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名。2.特点1.一个变量可被引用多次。这就相当于一个人可以有许多别名。 2.引用必须初始化,并且只能在初始化时引用一次,不能改变为引用其他的变量。3.引用与const3....

2018-07-09 13:55:57 348

原创 C++基本概念

1.区别C语言与C++C++是作为C语言的增强版出现的,并且增添了许多新特性。 C语言支持 基本类型&变量 运算符&表达式 语句控制 函数&程序控制 指针&数组 结构体 I/O输入输出 C库 C++支持 C语言 类&对象 继承&amp...

2018-07-09 10:53:11 226

原创 Linux下的彩色进度条

通过printf设置Linux终端输出的颜色和显示方式#include <stdio.h>#include <stdlib.h>#include <unistd.h>int main(){ char s[51]={0}; int i; int j=31; for(i=0;i<50;i++){ s...

2018-04-18 15:04:06 255

原创 Linux开发工具

vim配置刚开始用的CentOS6.5,配置vim的时候遇到了太多问题,要下载更新好多工具,插件还得手动配置,虚拟机崩溃好几次,最后转战CentOS7,轻松配置好vim CentOS7下Vim简单配置常见编辑器Vim EditorVim是一个类似于Vi的文本编辑器,不过在Vi的基础上增加了很多新的特性,Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不...

2018-04-17 13:27:55 314

原创 Linux命令

du 1.命令格式: du [选项][文件] 2.命令功能: 显示每个文件和目录的磁盘使用空间。 du命令详细信息 df 1.命令格式: df [选项] [文件] 2.命令功能: 显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定...

2018-04-10 17:22:15 259

原创 Linux目录的权限及重要目录的作用

有关目录的权限:进入目录:执行权限在目录中(在目录内部的操作都需要目录的x权限)ls:读权限mv:写权限rm:写权限touch:写权限Linux下一切皆文件,目录也不例外,目录文件里存放的数据是目录内部的文件名和对应的inode编号,所以在目录中创建/删除文件时都需要写权限(即修改了目录文件的内容)进入目录需要执行权限,并且在目录内部执行任何命令时都需要执行权限查看目录...

2018-03-31 13:09:41 884

原创 C语言之动态内存开辟

动态内存开辟void *malloc( size_t size ); malloc向内存申请一块连续可用的size大小的空间,并返回指向这块空间的指针 void* calloc (size_t num, size_t size); calloc向内存申请num个大小为size的空间,并把每个字节初始化为0,函数返回指向这块空间的指针 所以,当需要开辟内存并且要将每个元素初始化为0时,可...

2018-03-30 15:16:20 245

原创 C语言之输入输出函数

I/O函数的三种方式:单个字符,文本行,二进制数据单个字符输入函数:int getchar( void ); 从标准输入里读取下一个字符,相当于getc(stdin)。返回类型为int型,为用户输入的ASCII码,出错返回-1。int getc( FILE *stream ); 和getchar功能一样,从指定的文件流中读取一个字符,读取后文件指针不会移动 getc(st...

2018-03-28 14:25:27 263

原创 C语言之结构体

结构体定义格式struct tag{member-list;}variable-list;tag:结构体名字的一部分,可省略 member-list:结构体成员变量,至少要有一个 variable-list:结构体变量,可以不定义结构体定义好之后就是一个新的变量类型,与int float一样,struct tag也是一种变量类型了 通常用typedef 重新定义结构体的类型...

2018-03-18 14:44:16 302

原创 指针系列易混淆概念

指针数组数组指针函数指针函数指针数组指向函数指针数组的指针1.指针数组这样类似的名字,前边的词是作修饰,后边的词表示类型 指针数组,是一个数组,存放指针的数组 int *arr1[10]; char *arr2[4]; char **arr3[5]; 都是指针数组,因此[]优先级高,所以变量名先和[]结合,确定了变量的类型是数组,然后明确数组的内容,是int *,还是char *,

2018-01-28 16:28:15 340

原创 可变参数列表

实现可变参数的过程: 1.声明一个 va_list 类型的变量 arg 2.调用 va_start 初始化arg 3.访问参数使用 va_arg 4.最后调用 va_end 。va_list,va_start,va_arg,va_end是在库中定义的宏,他们的定义如下:typedef char* va_list;#define _INTSIZEOF(n) ((sizeof(n)+size

2017-12-30 20:25:35 248

原创 函数调用过程

每一个未运行完的函数都对应着一个栈帧,系统为单个函数分配的那部分栈空间就叫做栈帧,栈帧保存了函数的信息。 以下面的代码为例,通过汇编代码的运行过程介绍栈帧创建和销毁的过程#include <stdio.h>int Add(int x, int y) { int z = 0; z = x + y; return z; } int main() { int a = 10;

2017-12-30 16:49:12 382

原创 数组

一维数组定义初始化访问数组数组大小计算数组的存储二维数组关于数组的运算一维数组定义 数组类型 数组名[数组大小];数组定义时, [ ]中要给一个常量才可以,不能使用变量。 const修饰的变量是常变量,仍然是变量初始化数组可以只定义不初始化,但数组大小要明确指出也可以不指出数组大小,在定义时初始化: int arr1[ ] = {1,2,3}; 数组的元素个数根据初始化的

2017-12-09 20:34:04 231

原创 数组的应用——扫雷

扫雷1.在game.h中进行宏定义,头文件引入以及函数声明 2.在main.c中实现主函数 3.在game.c中实现功能函数除了基本的功能外,还实现以下几个功能: 1.第一步不会炸 2.点到周围没有雷的区域会自动展开 3.可以做标记 4.显示当前雷数 5.显示已用时间待拓展的功能:选关需要定义两个二维数组,一个作为记录雷的位置,一个作为展示界面,除此之外,实际定义的数组应比展示出来

2017-12-09 19:08:25 941

原创 数组的应用——三子棋、五子棋

三子棋 五子棋

2017-12-09 16:32:53 582

原创 字符串函数

strcpy字符串复制Copy a string.char *strcpy( char *strDestination, const char *strSource );strcpy把从strSource地址开始且含有’\0’结束符的字符串复制到以strDestination开始的地址空间,返回值的类型为char*。 #include <string.h>#include <stdio.h>voi

2017-11-26 17:49:49 304

原创 C语言操作符汇总

· 算术操作符 · 移位操作符 · 位操作符 · 赋值操作符 · 单目操作符 · 关系操作符 · 逻辑操作符 · 条件操作符 · 逗号表达式 · 下标引用、函数调用和结构成员1.算术操作符 运算符 介绍 + 加法运算 - 减法运算 * 乘法运算 / 除法运算,整型相除结果还是整型,有一个是浮点型结果就是浮点型 % 取模(求余)运算,两个

2017-11-25 13:12:22 445

原创 宏函数

带参数的宏也被称为"函数宏". 利用宏可以提高代码的运行效率: 子程序的调用需要压栈出栈, 这一过程如果过于频繁会耗费掉大量的CPU运算资源. 所以一些代码量小但运行频繁的代码如果采用带参数宏来实现会提高代码的运行效率.经常看到别人的代码中会出现简单的宏函数,代码看起来简洁又方便,今天我也尝试了一下,但在我使用宏函数的过程中有一个问题突然闪现在我的脑海: 交换两个变量的宏:#define SWA

2017-11-13 21:52:31 351

原创 浅谈编程

在进入大学的同时,一不小心开启了属于我自己的编程之旅。忙忙碌碌的编程是为了什么?起初,我认为编程是为了解决一些数学问题,比如最大最小公倍数、质因数分解、斐波那契数等等,利用编程,我们可以快速的得到答案;说到数学,那就离不开数学的应用——生活中的数学问题,这样一想,编程同样可以解决我们生活中的问题,我们只需要把问题数字化,做相应处理就能知道解决办法了,比如一些今天是周几、最短路径、背包问题等等。

2017-11-12 15:11:34 317

原创 大端小端模式

地址由低到高增加大端模式:高字节放低地址上,低字节放高地址上;也就是高字节在低字节前边,符合我们的思维方式小端模式:高字节放高地址上,低字节放低地址上;这样高地址的权值高,低地址的权值低,便于计算机运算处理大小端模式由CPU的类型决定8位的51单片机无所谓大端小端,因为就一个字节,但是Keil C51是大端模式;大多的ARM,DSP和我们常用的台式机一般

2017-07-18 21:02:21 328

空空如也

空空如也

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

TA关注的人

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