自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【计算机网络】传输层

4.传输层为两台主机上的应用程序提供端到端的服务(进程间通信的服务)端口:标识一个应用程序,它是应用程序的代号一个进程可以有几个端口总结常用端口:FTP:21 TELNET:23 SMTP:25 TFTP:69 HTTP:80 SNMP:161 Mysql:3306套接字:唯一标识了网络中的一个主机和它上面的一个进程A主机把“hello”发给B主机的过程?...

2019-08-07 17:09:16 262

原创 【计算机网络】物理层、数据链路层、网络层

互联网:IP地址:在网络中唯一标识一台主机MAC地址(物理地址)各层的功能?1.物理层在物理媒体上实现比特流的透明传输单位:比特物理设备:集线器(对信号再生和还原) 中继器(对信号进行放大)2.数据链路层IP->MAC:ARP(地址解析协议)/ MAC->IP:RARP(逆地址解析协议):两个相邻节点数据的可靠传输把网络层传下来的数据报组装成帧...

2019-08-07 16:58:15 966

原创 【线程篇】线程的实现和线程安全

线程的实现?要管理线程就要维持线程的各种信息,存放这些信息的数据结构称为线程控制块。线程共享一个进程空间,因此许多资源是共享的(如地址空间、全局变量、文件等),这些共享资源存放在进程控制块即可。还有一些不被共享的资源和信息(如程序计数器、寄存器等),需要存放在线程控制块里。由谁来管理线程有两种选择:一是让进程自己来管理线程;二是让操作系统来管理线程。由进程自己管理就是用户态线程实现,由操作系...

2019-08-06 14:31:15 120

原创 【线程篇】原子操作

原子操作?是怎么实现?《从哲学层次看操作系统》--锁的实现不可被中断的一个或一系列操作32位IA-32处理器使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作。1.禁止/开启中断中断的启用和禁止是原子的,不能被其他代码插入的lock(){disable interrupt;//禁止中断 while(v...

2019-08-06 14:25:52 121

原创 【线程篇】线程间同步之信号量、互斥锁

线程:进程内部的一条执行路径(序列)什么是线程什么是进程,进程和线程的区别?进程是一个正在运行的程序,是系统进程资源分配的基本单位线程是进程内部的一条执行路径,是系统调度的基本单位Pthread.h头文件 -lpthread 库理解多线程的并发运行?并发运行:单个或多个处理器并行:需要多处理器线程同步(线程间通讯):信号量,互斥锁,条件变量,读写锁信号量和...

2019-08-06 14:24:09 225

原创 【进程间通信】共享内存、消息队列

共享内存ipcs 查看进程间通信的信号量 共享内存 消息队列 的使用情况ipcrm 删除共享内存的使用需要信号量同步同步?对临界资源的访问有控制,能保证同一时刻只有一个进程访问,则这两个进程是同步。在不同地方,意义不同。 1.进程线程同步2.通信方式同步和异步的方式?同步:严格按照代码顺序执行,如果遇到需要等待的事件就阻塞等待异步:不一定按照代码的顺序执...

2019-07-29 19:11:28 253

原创 【进程间通信】管道、信号量

管道:有名管道:任意两个进程之间通信mkfifo无名管道:父子进程之间通信pipe写入管道的数据放在哪里?数据在内存中通信方式:半双工(单工,半双工,全双工)实现:读完才能覆盖程序中:管道有固定的读端和写端无名管道:管道是基于文件描述符的通信方式,当一个管道建立时,它会创建两个文件描述符fd[0]和fd[1],其中fd[0]固定用于读管道,而fd[1]...

2019-07-29 19:04:15 292

原创 【LeetCode】子集1

//给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。#include<iostream>#include<vector>#include<string>using namespace std;//第一种解法//思路:把1,2放进分别放进vector,之后再合并,以此类推vector<vector<in...

2019-07-26 21:56:52 93

原创 【剑指offer】回溯法

面试题12:矩阵中的路径//上下左右递归,在看边界条件#include<iostream>#include<vector>using namespace std;//递归bool haspathcore( char* m, int row, int col, int i, int j, const char* str, int& pathlen, ...

2019-07-26 11:15:09 140

原创 【C++关键字】inline

inline函数处理方式:编译阶段 在代码的调用点直接代码展开 不会生成符号static函数:inline函数和static修饰的函数的区别inline函数无开栈和清栈的开销 static修饰的函数有 inline函数在调用点直接代码展开 static修饰的函数 函数符号属性localinline函数和宏的区别inline函数 编译 类型检查和安全检查 宏 预编译 无...

2019-07-25 19:38:04 2385

原创 【C/C++区别】const

constC:常变量编译阶段 常变量有没有做左值 其他的处理和变量一样的可取地址改变1.const int a = 10;int arr[a];x运行时,才会寻址找到a的值,编译时无法找到a的值2.const int a = 20;int* p = &a;*p = 10;C++ 常量编译阶段 把常量使用的地方替换常量初始化的值const int...

2019-07-25 19:35:52 63

原创 【进程篇】信号

信号:signal()//改变信号的响应方式signal(参数1,参数2)看一下SIG_DFL 默认 SIG_IGN 忽略 fun 自定义kill()发送信号int kill(pid_t pid, int sig);kill(pid,信号名)一个进程调用kill函数可以发送信号到另一个进程.可以用kill命令发送信号给某个进程SIGCHID :子进程结束发送给...

2019-07-24 22:12:14 103

原创 【进程篇】进程

进程 进程概念:一个正在运行的程序pid:唯一标识一个进程/pcb:进程控制块(进程描述符),描述一个进程的属性信息的结构体进程状态:就绪 运行 阻塞僵死进程:1.子进程先结束,2.父进程没有调用wait获取子进程的状态信息(退出码)-》(系统不删子进程的PCB)1.fork复制进程流程复制PCB,重新分配新的pid(修改才重新分配,其他先共享(提高效率))1)在...

2019-07-24 22:08:01 66

原创 字符串的全排列和组合(一)

#include<iostream>#include<string>#include<vector>#include <algorithm>using namespace std;//全排列void Permutation(vector<string> &array,string str,int begin){...

2019-07-24 12:00:36 189

原创 【C/C++区别】函数重载 引用

函数重载(重定义)函数覆盖(重写)函数符号的生成规则C:函数名C++:函数原型返回值x 函数名x 函数形参v(1.参数个数2.参数类型3.参数顺序)给函数重载做了支持重载的三要素:同名 不同参 同作用域所有内置类型系统会强制转换2..引用:别名指针和引用的区别1)引用不是一个对象,而指针是对象2)引用必须在定义时初始化,而指针可以不用,使得 ...

2019-07-23 20:30:14 135

原创 【C/C++区别】new/delete malloc/free

C malloc freemalloc void*malloc(size_t size) 1.半开半闭 容易越界 2.类型强转free void free(void* ptr)C++ new deletenew的底层实现new创建新对象时1)分配内存2)调用构造函数调用new会发生:1.object *p = new object();new->ope...

2019-07-23 19:26:45 150

原创 实现atoi函数

实现的功能1.atoi,将字符串转化为整型 (十进制,八进制,十六进制)2.如果输入的数字超过整型范围,输出整型最大值,负数输出整型最小值#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS#include<iostream>#include<cstdio> #include<string>...

2019-07-23 10:00:44 171

原创 【c++】调用约定

为什么要有调用约定?1、当参数个数多于一个时,按什么顺序把参数压入栈?2、函数调用后,由谁来把堆栈恢复原装。_cdecl C标准调用约定int fun(char *a,unsigned long) -----"?fun@@YAHPADK@Z"YA函数采用从右到左的压栈方式_stdeall windows标准调用约定int fun(char *a,unsi...

2019-07-22 20:26:28 85

原创 函数堆栈调用

汇编代码的认识寄存器:eax(累加器) ebx(基地址) ecx(计数器) edx(余数)pc(下一行指令地址寄存器)EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址。ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。EDX 则总是被用...

2019-07-22 20:06:31 106

原创 二叉树问题(1)--遍历

#include<iostream>#include<stack>using namespace std;class Node{public: int val; Node* left; Node* right; Node(int val):val(val), left(NULL), right(NULL){} }; //先序遍历void p...

2019-07-19 18:45:49 69

原创 【动态规划】01背包

#include<iostream>#include<iomanip>using namespace std;int** Get2Array(int row, int col){ int** s = (int **)malloc(sizeof(int*)*row); for (int i = 0; i < col; i++) { s[i] = ...

2019-07-19 18:41:22 61

原创 【c++】编译链接运行原理

编译链接运行原理编译链接预编译 .i删除#define文本替换 #if #endif #elif 递归展开#include 删除注释 添加行号和文件标识 #pragma编译 .s词法分析 语法分析 一条语句 语义分析 结合上下文 默认值从右向左赋值 代码优化 生成汇编指令汇编 .o 二进制可重定位目标文件汇编指令 mov add lea sub...

2019-07-19 18:29:52 161

原创 【c++】虚拟地址空间的布局

每一个程序运行都会有一个虚拟地址空间1.虚拟地址空间有多大?CPU的位数有关(ALU的宽度,数据总线的条数) x86 32bit Linux内核(4G)2.为什么是数据总线的条数?16CPU 数据总线:16 地址总线:208CPU 数据总线:8 地址总线:16.bss 未初始化和初始化为0的全局变量和静态变量.data已初始化且初始化不为0的全局变量和静态变量...

2019-07-18 19:03:50 186

原创 源码分析(二)——Epoll

Epoll源码解析epoll_create()//创建内核时间表 容纳事件的容器size(>0)没有意义 inode每一个文件都有自己的idstruct file 打开的文件当创建好epoll句柄后,它就是会占用一个fd值一、getfd 分配空闲的struct file,fd,struct inode,将fd和file关联起来1.struct file...

2019-07-02 22:03:36 66

原创 源码分析(一)--Fork

系统调用简单描述:产生中断,陷入内核详细描述:调用函数;产生0x80中断;不能继续执行main程序,被替换下去;将对应系统调用号写入eax寄存器中;在进行现场保护;陷入内核,在系统调用表中寻找eax中存放的系统调用号;将找到的返回值写回eax中;这样就得到了最终的返回值,完成了系统调用。Fork的实现ForkVforkClone 都是通过do_fork...

2019-07-02 12:47:30 78

原创 链表问题(1)

两个链表相交的一系列问题1)判断单链表是否有环 有环返回第一个入环节点 无环返回NULL#include<iostream>#include<hash_set>using namespace std;typedef struct Node{ int data; Node* next;};typedef struct{ Node* head...

2019-07-02 12:26:05 92

原创 内存管理

2019-03-05 17:50:12 97

原创 经典题目

第一题初始时有n个灯泡关闭。 第 1 轮,你打开所有的灯泡。 第 2 轮,每两个灯泡你关闭一次。 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。第i轮,每i个灯泡切换一次开关。 对于第n轮,你只切换最后一个灯泡的开关。 找出n轮后有多少个亮着的灯泡。class Solution {public: int bulbSwitch(int ...

2019-01-19 19:40:49 105

原创 Linux复习知识点(一)

Linux 复习1.Linux基本操作        多用户   命令进行交互      目录结构 1)目录结构/文件系统/bin  命令  可执行程序/lib   库文件/etc   系统的配置文件/boot  内核,与启动有关的文件/dev   设备文件/home  普通用户的家目录/mnt    临时挂载点/proc   内存中进程的信息/usr ...

2019-01-16 20:54:12 444

原创 进程调度指标

进程调度的指标不同的进程调度算法具有不同的特征,为此需要建立衡量一个算法的基本指标。一般而言,衡量和比较各种进程调度算法性能的主要因素如下所示:CPU利用率:CPU是计算机系统中的稀缺资源,所以应在有具体任务的情况下尽可能使CPU保持忙,从而使得CPU资源利用率最高。40%到90%吞吐量:CPU运行时的工作量大小是以每单位时间所完成的进程数目来描述的,即称为吞吐量。单位时间内完成的任务...

2019-01-15 14:35:48 1907

原创 C++继承多态面试题总结

1.类的默认权限:private2.类的编译顺序:类名---》编译成员名---》编译方法体 类的构造顺序:成员对象---》类对象 子类的构造:先构造父类,再构造子类 子类的析构:先析构子类,再析构父类 子类构造时需要提供父类的参数时,要在子类的初始化列表初始化3.成员方法之间的关系重载:作用域相同 函数名相同 参数列表不同隐藏:子类会隐藏父类中成...

2019-01-15 14:23:05 729

原创 反转大王

1.数组逆置void Reverse( int * arr,int len ){int n;for(i=0;i<=len/2;i++){n=a[len-1-i];a[len-1-i]=a[i];a[i]=n;}}

2018-03-18 15:32:28 123

原创 指针(二)

指针算术运算指针加法需要调整(加1:加一个单元格),                                  加一int*p                           4字节char*p                        1字节short*p                       2字节double*p                    8字节调整的权重为...

2018-03-18 15:15:56 105

原创 考试归纳(一)

1.进制转换假设在n进制下,567*456=150216,n的值(5n^2+6n+7)*(4n^2+5n+6)=20n^4+49n^3+88n^2+71n+42//展开20n^4+49n^3+88n^2+71n+42=n^5+5n^4+2n^2+n+6(两边除以n,然后再取余)71%n+42/n%n=1%n+6/n%n=1(71+42/n)%n=1n=18(2)按宏...

2018-03-18 14:56:05 113

原创 指针(一)

指针作为c语言的重点不在于它本身有多少的难度而是理解的程度问题。这里是我对指针简单的理解。1.首先,要对指针有一个正确的认识:指针==地址先看这个例题,总结出几个常用的变量,常量:int main(){ int a = 10; int b = 20; int *p = &amp;a;                         //整型地址变量存放整型地址值 *p = 100;        ...

2018-03-13 18:16:05 108

原创 丢弃个位法

经典题型:1.输入一个数输出是几位数,并输出各位数字1)丢弃个位int Figure(int n){int count =0;do 或 if(n=0){ ...

2018-03-10 18:47:48 175

空空如也

空空如也

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

TA关注的人

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