自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux 常见面试题总结

1、TCP和UDP的区别:1)TCP提供面向连接的传输,通信前要先建立连接(三次握手机制);UDP提供无连接的传输,通信前不需要建立连接。2)TCP提供可靠的传输(有序,无差错,不丢失,不重复);UDP提供不可靠的传输。3)TCP面向字节流的传输,因此它能将信息分割成组,并在接收端将其重组;UDP是面向数据报的传输,没有分组开销。4)TCP提供拥塞控制和流量控制机制;UDP不提供拥塞控制和流量控制机

2017-09-15 22:44:10 355

原创 八、内存管理

对一个进程来说,内存是最基本也是最重要的资源。存储器分配(allocation),内存操控(manipulation)和最后的内存释放(release)。进程地址空间Linux将它的物理内存虚拟化。进程不能直接在物理内存上寻址而是由Linux内核为每个进程维护一个特殊的虚拟地址空间。这个地址空间是线性的,从0开始。页和页面调度虚拟空间由许多页组成。系统的体系结构决定了页的大小,典型的页大小包

2017-09-10 13:34:51 558

原创 七、文件与目录管理

一切皆文件。每一个文件或者目录都有一个inode节点,通过stat结构体来管理。stat函数Unix提供了一组获取文件元数据的函数:#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>int stat(const char *path, struct stat *buf);int fstat(iny fd, struc

2017-09-09 15:26:40 363

原创 六、高级进程管理

进程调度简称调度器,是把有限的处理器资源分配给进程的内核子系统。在作出决策的过程中,调度器既要最大化处理器效率,又要让多个进程同时运行、互不影响。就绪进程:该进程是非阻塞的。进行用户交互、大量读写文件、响应I/O和网路事件的进程会花费大量时间来等待资源可用,在相当长的事件内无法转换为就绪状态。 多任务操作系统分为两大类:协同式和抢占式。Linux实现了后一种形式的多任务。时间片Linux分配给

2017-09-08 15:04:59 403

原创 10、UDP用户数据报协议

一、引言UDP是一个简单的面向数据报的传输层协议:进程每一个输出正好产生一个UDP数据报,并组装成一份待发送的IP数据报。UDP是不可靠的;应用程序需要关注IP数据报的长度如果超过了MTU那么IP数据报进行分片。二、UDP首部端口号指明了发送、接收进程。长度字段是UDP首部和数据的字节长度,最小8个字节。UDP长度检验和覆盖UDP首部和UDP数据。UDP数据报包含12字节长

2017-09-06 21:44:08 300

原创 11、TCP:传输控制协议

TCP服务TCP和UDP使用相同的网路层(IP),TCP提供一种面向连接的、可靠的字节流服务。 面向连接意味着仅有两方进行彼此通信。广播和多播不能用于TCP。 TCP的可靠性主要表现在以下几个方面: (1)分割:应用数据被分割成TCP认为最合适发送的数据块。 (2)超时重传:发出一个段后会启动一个定时器,等待目的端确认收到这个报文段。不能及时收到确认就会重传。 (3)接收端的确认不是立刻发

2017-09-06 21:42:41 386

原创 9、IP选路

引言 IP执行选路机制,而路由守护程序则一般提供选路策略。静态IP选路U:该路由可用G:该路由是到一个网关(路由器),如果没有标志,那么说明目的地是直接相连的H:该路由是到一个主机。目的地址是完整的主机地址,没有改标志说明是到一个网络。D:该路由是由重定向报文创建的M:该路由已被重定向报文修改U没啥可说的,G说明这是一个网关,如果你要发数据给Destination,IP头应该写Desti

2017-09-05 15:42:20 201

原创 五、进程管理

进程:它由数据、资源、状态和一个虚拟计算机组成。进程ID每个进程都有一个唯一识别的进程ID,简称pid。 空闲进程:当没有其他进程运行时,内核所运行的进程它的pid为0。 在启动后内核第一个运行的进程为init进程,它的pid为1。 内核分配进程ID是以严格的线性函数方式进行的。如果上一个进程的ID为17则下一个分配就是18,若17进程以及不存在了,知道内核分配pid达到了/proc/sys

2017-09-04 23:00:35 252

原创 7、Ping和Traceroute程序

Ping程序ping的目的是为了测试另一台主机是否可达,该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。报文格式发送回显请求的ping程序为客户,被ping的主机为服务器。ping程序通过ICMP报文数据中请求时间值来计算往返时间,当应答返回时,用当前时间减去存放在ICMP报文中的时间值。 IP数据报中的RR选项格式 code是一个字节,指明IP选项类型,RR选项中

2017-09-04 11:42:41 262

原创 四、高级文件I/O

总览散布/聚集I/O:I/O在单次调用中同时对多个缓冲区做读取或者写入操作,适合于聚集多个不同数据结构进行统一的I/O操作。 epoll:poll()和select()的改进版,在一个程序需要处理数百个文件描述符的时候很有用。 内存映射I/O:将文件映射到内存,可以用简单的内存管理方式来处理文件,适合有特殊要求的I/O。 文件I/O提示:语序进程将文件I/O使用上的一些提示信息提供给内核;能提

2017-09-03 22:43:24 373

原创 6、ICMP:Internet控制报文协议

引言ICMP报文通常被IP层或更高层协议(TCP/UDP)使用,把差多报文返回给用户进程。ICMP报文是在IP数据报内部被传输的。 ICMP报文类型 上图是ICMP报文格式,格式的值对应于下表 最后两列标明ICMP报文是查询报文还是差错报文,差错报文需要特殊处理所以队它们进行区分。 当发送一份差错报文的时候,报文始终包含IP首部和ICMP报文差错报文的IP数据报的前八个字节。ICMP差错

2017-09-03 15:41:05 341

原创 5、RARP逆地址解析协议

RARP协议是许多无盘系统在引导时用来获取IP地址的。分组格式和ARP一致,一个RARP请求在网络上进行广播,他在分组中表标明发送端的硬件地址,以请求相应的IP地址的响应,应答通常是单播传送。

2017-09-03 15:11:19 216

原创 4、ARP地址解析协议

引言ARP是IP地址到对应的硬件地址之间提供的动态映射。RARP是被那些没有磁盘驱动器的系统使用。ARP解析过程在以太网中,ARP发送端主机必须要把32bit的IP地址变成48位的以太网地址。(1)ARP广播发送一份ARP请求的以太网数据帧给以太网上的每个主机。ARP请求中包含目的主机IP。(2)目的主机ARP层收到广播后,返回一个ARP应答其中包括IP及对应的硬件地址。(3)收到ARP应

2017-09-03 15:03:48 212

原创 3、IP网际协议

一、引言IP提供不可靠、无连接的数据报传送。不可靠:不能保证IP数据报能成功到达目的地。如果发生了某个错误,IP有一个简单的错误处理算法:丢弃改数据报,然后发送ICMP消息报给信源端。可靠性由上层来提供(TCP)。无连接:IP并不维护任何关于后续数据报的状态信息。每个数据报处理相互独立。IP数据报可以不按发送顺序接收。每个数据报都是独立地进行路由选择,可能选择不同的路线。二、IP首部

2017-09-03 11:45:53 255

原创 三、缓冲输入输出

磁盘操作都是基于块进行的,所以请求以块大小的整数倍对齐地址时,I/O效率是最理想的。操作系统效率随系统调用次数的增多而急剧下降。例如每次读1个字节读1024次明显比一次读1024字节慢。如果每次不是块的整数倍效率也不是最理想的。用户-缓冲I/O轻量级I/O请求通常使用用户缓冲I/O,它是在用户空间而不是内核完成的。块大小:通常是512字节、1024字节等。所以大规模操作的时候我们需要设置为块的

2017-09-02 18:00:50 906

原创 2、链路层

引言链路层主要有三个目的:(1)为IP模块发送和接收IP数据报;(2)位ARP模块发送ARP请求和接收ARP应答;(3)为RARP发送RARP请求和接收RARP应答。以太网、令牌环网、FDDI和RS-232串行线路是常见的链路层协议。以太网和IEEE 802封装以太网是当今TCP/IP采用的主要局域网技术。采用带冲突检测的载波侦听多路(CSMA/CD)的媒体接入。它的定义封装在RFC 894中。

2017-09-02 14:59:07 381

原创 二、文件I/O

一、基础内核为每个进程维护了一个打开文件的列表,该表由文件描述符(file descriptors)称作fds的非负整数进行索引;表中每一项包含一个打开文件的信息其中包括指向文件备份inode的内存拷贝指针和元数据。子进程会默认获得父进程文件表的拷贝;文件描述符用int 类型表示默认从0开始;按照惯例进程至少会有三个文件描述符0是标准输入(stdin),1是标准输出(stdout),2是标准错误输出

2017-09-01 20:50:13 344

原创 一、概述

一、系统编程1、系统调用(syscalls):为了从操作系统获得服务或者资源而从用户空间向内核(系统核心)发起的函数调用。2、调用系统调用:用户空间程序发送信号通知内核它希望调用一个系统调用。3、API应用程序接口:软件模块之间在源代码层交互的接口4、ABI应用程序二进制接口:在特定的架构上两个或者多个软件模块之间的二进制接口。二、文件系统1、普通文件:包含以线性字节数组方式组织的数据,通常称为字节

2017-09-01 12:35:49 249

原创 线程的创建和使用

一、概述线程:是指机器中连续的、顺序的属性集合。一个线程包含执行一系列机器指令必须的机器状态;包括当前指令位置、地址和数据寄存器。多个线程共享地址空间(包括代码段、数据段和堆栈)。进程:一个进程可以理解为一个一个线程加上地址空间、文件描述符合其他数据同步:事件按照顺序一步一步发展,比如小明叫小红吃饭,小明一直等待小明过来后再回去吃饭。异步:事件相互独立发生,比如小明叫小红吃饭,小红还没有过来小明先回

2017-08-30 20:39:13 234

原创 二、进程控制

进程的建立进程:进程是正在执行的程序,包括程序代码和数据其中数据包含程序变量数据、外部数据和程序堆栈等。 进程建立:#include <unistd.h> //Linux系统库pid_t fork(void); //建立进程的声明/*如果fork()调用成功,就会使内核建立一个与其创建者一样的程序。它返回一个pid_t 类型的值pid。pid 被用来区分父进程和子进程。在父进程中,pid

2017-08-26 23:54:42 152

原创 一、概论及xnix模型

OSI模型OSI模型有8个层次 1. Physical物理层 它在物理线路上传输bit 信息,处理与物理介质有关的机械的,电气的,功能的和规 程的特性。它是硬件连接的接口。 2. Data Link数据链路层 它负责实现通信信道的无差错传输,提供数据成帧,差错控制,流量控制和链路控制 等功能。 3. NetWork 网络层 负责将数据正确迅速的从源点主机传送到目的点主机,其功能主要有

2017-08-26 23:41:24 1057

原创 大鱼吃小鱼

有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右。游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼。从左到右给出每条鱼的大小和游动的方向(0表示向左,1表示向右)。问足够长的时间之后,能剩下多少条鱼?Input 第1行:1个数N,表示鱼的数量(1 <= N <= 100000)。 第2 - N + 1行:每行两个数A[i], B[i],中间用空格分隔,分别表示鱼的大小及游动的方

2017-05-21 10:21:59 3146

原创 Pairwise Sum and Divide

题目:有这样一段程序,fun会对整数数组A进行求值,其中Floor表示向下取整:fun(A) sum = 0 for i = 1 to A.length for j = i+1 to A.length sum = sum + Floor((A[i]+A[j])/(A[i]*A[j])) return sum给出数组A,由你来

2017-05-21 10:18:59 249

原创 2 3 5 7

输入一个n,求解1到n中有多少个数不是2、3、5、7的倍数。 解析:典型的容斥原理。void solve(){#ifndef ONLINE_JUDGE freopen("input.in","r",stdin);#endif LL n, a, b, c, d, ab, ac, ad, bc, bd, cd, abc, abd, acd, bcd, abcd; RDL(

2017-05-21 10:12:29 401

原创 线段相交

给定n条线段的起点和终点找到任意两条线段相交的最大值。对于所有的线段的起点进行排序。将每一个线段i的起点作为相交的起点,找到线段j(j < i)终点的最大值与线段i终点的最大值进行比较,获取最大相交线段长度,复杂度O(nlogn)void solve(){#ifndef ONLINE_JUDGE freopen("input.in","r",stdin);#endif pair

2017-05-19 10:12:48 283

原创 Shell运算符

1、declare声明变量类型 可将变量声明为需要的类型后再进行计算 注:declare -x 等价于 export声明环境变量 2、 3、 4、运算符优先级 5、变量测试

2017-05-19 10:07:23 143

原创 Shell变量

1、变量分类 2、将用户自定义变量设置成环境变量 export 变量名=变量值 或 变量名=变量值 export 变量名 3、环境变量 ①PATH环境变量:系统查找命令的路径 echo PATH #查看变量的值      PATH=”PATH #查看变量的值 PATH=”PATH”:/root/sh #增加PATH

2017-05-19 09:58:44 244

原创 用户管理

1、用户组文件 2、用户文件 3、创建用户组:groupadd xxx(组名) 4、修改用户组的名称:groupmod -n market(新组名) xxx(原组名) 5、修改组编号:groupmod -g 668 market 6、创建组名为boss的用户组,组编号为888:groupadd -g 888 boss 7、删除用户组:groupdel market //删除组之

2017-05-19 09:44:55 372

原创 磁盘管理

1、df 查看磁盘分区使用状况 选项: -l:仅显示本地磁盘(默认) -a:显示所有文件系统的磁盘使用情况 -h:以1024进制最合适的单位显示 -H:以1000进制最合适的单位显示 -T:显示磁盘分区类型 -t:显示指定类型文件系统的磁盘分区 -x:不显示指定文件系

2017-05-19 09:39:11 371

原创 Shell基础

1、什么是Shell Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序 Shell还是一个编程语言,是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令 2、关系 3、echo输出命令 格式:echo [选项] [输出内容] 选项: -e:支持反斜线控制的字符转换 echo “bols

2017-05-17 16:02:15 172

原创 用户登录查看命令

1、w [用户名] 查看用户登录信息,如未指定用户名则查看所有登录信息 2、who [用户名] 查看用户登录信息,如未指定用户名则查看所有登录信息 3、last:查询当前登录和过去登录的用户信息 读取/var/log/wtmp文件数据 4、lastlog:查询所有用户的最后一次登录时间 读取/var/log/lastlog文件数据

2017-05-17 15:36:28 335

原创 文件挂载

1、查询与自动挂载 mount:查看系统中已经挂载的设备 mount -a :依据/etc/fstab的内容,自动挂载 2、挂载格式 mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点 -t 文件系统:加入文件系统类型来指定挂载的类型,如ext3、ext4、iso9660等 -o 特殊选项:可以指定挂载的额外选项 3、挂载光盘

2017-05-17 15:31:18 269

原创 关机命令

1、安全的命令:shutdown [选项] [时间] 选项: -h:关机 -r:重启 -c:取消前一个关机命令 2、其他非安全命令 关机:halt、poweroff、init 0 重启:reboot、init 6 3、系统运行级别runlevel查看运行级别 0:关机

2017-05-17 15:23:31 1056

原创 文件压缩

1、zip [选项] [文件名]:将文件压缩成zip格式 选项:-r:压缩目录 unzip [压缩文件名]:解压缩 2、gzip [源文件]:压缩为.gz文件,源文件会消失 gzip -c [源文件] > 压缩文件 #压缩为.gz格式,源文件保留 如:gzip -c cangls > cangls.gz gzip -r [目录]:压缩目录

2017-05-17 15:17:28 172

原创 帮助命令

1、man [选项] [命令]:查询命令的使用方法 选项: -f:查看命令用用的级别相当于whatis 命令 -k:查看与命令相关的所有帮助 -级别:查看对于级别的命令帮助 级别:可用man man查看 1:查看命令的帮助 2:查看可被内核调用的函数的帮助 3:查看函数和函

2017-05-17 15:01:57 569

原创 文件搜索命令

1、locate [文件名] 在/var/lib/mlocate 数据库中搜索速度快但是数据库一天更新一次可用命令updatedb强制更新数据库,/etc/updatedb.conf中有部分目录不被搜索 2、 搜索命令whereis、which 只能找到外来命令,shell内部命令找不到,定义用户操作的环境变量$PATH:定义的是系统搜索的命令路径 whereis [选项] [命令名]

2017-05-17 14:50:53 323

原创 文件处理命令

1、ls [参数] [文件或目录] :显示文件或目录的内容 可选参数: -l:列出详细信息, -i:显示i-node节点号,-a:显示所有文件,-h:生成结果利于人类观看,-d:查看目录属性 2、pwd:显示当前路径 3、mkdir [参数] [文件名]:创建目录 可选参数:-p:递归创建 4、touch [文件名]:创建新文件 5、cd [路径名]:切换到指定目录

2017-05-14 10:24:46 163

原创 回文子串 manarcher算法

对于一般的回文子串的计算方法枚举每一个字符s[i]作为回文串的中心,然后分为奇数回文串和偶数回文串来进行遍历两端,算法复杂度O(n^2)int palindromeString(const char *s){ int len = strlen(s); int mx1, mx2, ans = 0; REP(i, len) { mx1 = 1;

2017-05-02 09:42:47 369

原创 逆序数

顾名思义,例如:有序列 2 4 3 1 那么 2 4, 2 1,4 1, 3 1为逆序对,逆序数为4。#include <stdio.h>#include <assert.h>#include <math.h>#include <string.h>#include <time.h>#include <iostream>#include <sstream>#include <string

2017-04-30 09:18:47 530

原创 大数加法 可为负数

基础题#include <stdio.h>#include <assert.h>#include <math.h>#include <string.h>#include <time.h>#include <iostream>#include <sstream>#include <string>#include <vector>#include <map>#include <set

2017-04-29 09:59:43 474

空空如也

空空如也

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

TA关注的人

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