自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 死锁

指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象死锁发生的基本条件:mutual exclusion 互斥hold and wait 保持而且等待no preemption 不能抢占circular wait 循环等待 没环一定没死锁 有环可能有死锁 有环但是没死锁 所以,没环一定没死锁,有环可能

2017-11-28 23:59:23 405

原创 进程的同步

解决多个进程同时访问同一个资源的时候出现数据破坏的问题首先找到临界区 临界区:一段代码对共享的数据进行访问然后对临界区进行保护 加锁 应该满足三个条件: 互斥进度有限等待软件方法(现在不常用) 硬件方法(常用) 硬件方法有以上两种,下面仅介绍第一种,这种操作是基于硬件的原子指令(执行过程中不能被中断)实现的。TestAndSet()就是原子操作

2017-11-28 13:57:46 385

原创 CPU调度

多进程与多线程的提出根本上是为了做大化CPU的利用率,调度也是如此多数程序都是通过IO读取数据,之后经过CPU的运算后再通过IO输出,基本就是CPU与IO操作轮换进行。通过分析进程对IO和CPU的占用,可以将进程分为两类: 1. CPU绑定的进程 2. IO绑定的进程CPU scheduling decisions may take place:Switch from running to w

2017-11-26 16:37:31 406

原创 线程

进程的特点是分离,而线程的特点是不分离。 使用线程可以提高程序的响应性,一般将耗时的任务单独交给一个线程去完成。 进程与进程之间的资源是完全独立的,而线程之间的资源是共享的,所以信息的传递较快,效率高。Thread Include:Thread IDProgram countRegister setStack可见线程有独立的栈和寄存器 属于同一个进程的线程一同共享除上述内容的其他数据

2017-11-26 10:00:08 279

原创 进程

主要研究进程对CPU是如何管理的。进程状态A process includes:program counter and other registersstackheapdata sectiontext sectionProcess Statesnewready (就绪态)runing (运行态)waiting (阻塞态)terminated进程切换进程控制块PCBPCB是一个

2017-11-25 21:27:03 249

原创 系统内核的加载

计算机上电后第一个执行的程序是BIOS,BIOS存放在ROM中(现在一般放在flash中),BIOS将磁盘前512字节的MBR( 主引导记录,记录了磁盘的分区表等信息)读到(或加载到)内存地址为0X7C00的位置,从此位置运行程序。之后MBR将活动分区(装有操作系统)的第一个扇区的512字节也加载到地址为0X7C00的位置,又从此位置运行程序,进行操作系统的加载。

2017-11-24 20:49:46 455

原创 关联容器set map

概念关联容器是用于存放多个单一类型数据的类模板关联容器是内部存储元素的形式大多是以哈希表或者二叉树等非线性的数据结构进行存储。关联容器增删元素时效率较低,但是查找的速度会比线性表更快。关联容器的种类与选择set容器中存储的元素作为键,键不能重复,能够快速读取。map容器中除了键外,每个键还有对应的值。键不能重复,值可以重复。multiset支持一个键多次出现的set类型multimap支持一

2017-11-24 15:37:20 167

原创 迭代器

概念迭代器是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中元素的确定地址。迭代器提供了一些类似于指针的运算符: *、++、==、!=、=。这些操作和C/C++操作指针的接口一致。简言之,迭代器虽然不是指针,但是我们可以把它看作指向容器中元素的指针。常用操作 获取不同容器的迭代类型: 模板类类型::iterator 获取容器中指向首个元素的迭代器

2017-11-23 22:39:27 231

原创 sort排序函数

定义比较函数bool compare(const 数据类型 &a, const 数据类型 &b){ return a < b; //小的数先输出,即升序输出}sortvector<int> n;sort(n.begin(),n.end(),compare);

2017-11-23 22:09:53 648

原创 模板

函数模板概念在编译阶段,编译器会根据函数模板的使用情况创建出函数名相同,参数类型由编译器判断的若干函数。通过函数模板创建的函数拥有相同的函数体,只是函数的参数类型不同。使用模板的声明定义一般放在头文件中声明template<typename T,...>返回类型 函数名(参数列表);其中T表示任意类型,参数的类型和返回类型都可以指定为T函数模板的特化函数模板的特化是指在实例化函数模板

2017-11-23 21:22:03 211

原创 内联函数

内联:内联函数在执行时不进行压栈出栈操作,提高运行效率注意:不允许使用循环语句、switch语句、递归调用只适用于1-5行的小函数在类结构内部的函数默认为内联函数inline关键字只是向编译器提出请求,编译器有可能忽略

2017-11-22 22:40:59 198

原创 面向对象的三大特性:封装,继承,多态

1.封装指的是信息隐藏,隐藏对象的实现细节,不让外部直接访问,只留下操作接口访问控制:public:成员能直接在成员函数中访问,也能通过对象访问private:成员只能在成员函数中访问所以为了达到封装的目的,成员(变量)一般定义为private为了允许修改或读取对象的私有成员,就要提供公共的存取器函数例:class Student{private: char

2017-11-22 22:39:52 249

原创 sublime配置

打开控制台(View > Show Console)打开网址复制代码到控制台CTRL+shift+p后输入install,选择install package安装插件: Boxy Theme #主题side bar #侧边栏brackethighlighter #括号高亮Markdown Preview #markdown浏览器预览MarkdownEditin

2017-11-18 12:20:22 205

原创 github搭建博客与Jekyll环境设置

1.Windows:安装Jekyll:下载 RubyInstaller:2.Ubuntu:安装Jekyll:sudo apt-get install ruby-devsudo gem install jekyll

2017-11-16 22:27:21 203

原创 常用模块功能

#运行系统命令import osos.system(r'ls -l')#修改文件内容import fileinputfile = fileinput.input(r'filename', backup = '.bak', inplace = 1)  #backup是备份文件的后缀名,inplace=1是将输出到屏幕的内容输入到文件中,这样便达到了修改文件内容的目的f

2017-11-14 21:32:44 226

原创 友元函数

当类中的成员为私有成员的时候,外部函数是不能够访问的,若想访问,可以讲此函数设置为友元函数即:class Student {friend void PrintValue(Student & stu);private:char name[20];int num;public:Student::Student();};

2017-11-10 14:20:47 184

原创 函数重载与运算符重载

定义名称相同但参数不同(个数、类型)的函数若要比较两个数的大小,则针对不同的数据类型要写不同的函数,而通过函数重载,则只需要编写一个函数即可int Max(int a, int b);int Max(float a, float b);int Max(nool a, bool b);

2017-11-10 14:20:13 860

原创 静态成员与静态函数

1.

2017-11-10 14:18:54 160

原创 拷贝构造函数

拷贝构造函数是一种特殊的构造函数,其唯一的形参必须是构造对象的引用。编译器会自动生成拷贝构造函数,自动生成的拷贝构造函数会将参数中的所有非静态成员拷贝给当前对象以下三种情况会调用拷贝构造函数:对象作为函数参数,以值传递d

2017-11-10 14:17:55 184

原创 const关键字

1.const引用:int a = 1;const int &b = a;尽可能在参数传递时使用const引用2.const成员函数:当成员函数不会更改对象的任何成员变量时,可以将成员函数生声明为const;class 类名{返回类型  函数名(参数列表) const;}

2017-11-10 14:16:44 138

原创 对象、构造函数、析构函数

对象:类的具体化由于对象在内存中占有一定的空间,所以一定会有申请内存和释放内存的过程构造函数:对象在申请内存时调用的函数    Student::Student()   //在外定义需要在类中声明定义在内(.h )在外(.cpp)都可以没有返回值函数名必须和类名一致可以有参数列表析构函数:对象在释放内存时调用的函     Student::~Student()

2017-11-05 17:20:35 177

原创 类的声明与定义

声明写在头文件中定义(指的是声明在类中的函数的定义)写在与头文件相对应的.CPP文件中例如:写一个学生成绩的类//Student.h#ifndef  _STUDENT_H#define  _STUDENT_Hclass Student{public:int id;char name[20];double score;void Prin

2017-11-05 17:03:59 465

原创 enum枚举类型

enum WEEKDAY{sun,mou,tue,wed,thu,fri,sat };enum WEEK day = mon;   不能赋值 即:day = 3;           //error可以通过强制转换进行赋值:day = (enum WEEKDAY)6;    //ok进行运算时相当于数字    int a = day;    总的

2017-11-05 16:34:14 225

转载 Ubuntu内核升级以及如何开启BBR加速

BBR是个什么东西我就不赘述了,可以理解为和锐速差不多的一个东西,但是呢,锐速过高的价格和不再低端售卖。导致了我们并无法实现一个免费好用的单边加速功能;所以,在这个前提下,咱们现在可以选择BBR(新的 TCP 拥塞控制算法Bottleneck Bandwidth and RTT)。众所周知,Ubuntu开启BBR的前提是内核必须等于高于4.9,所以想要使用这个牛逼的玩意儿,需要先看看你

2017-11-03 22:47:24 8543 2

转载 时间与时间戳之间的转换

对于时间数据,如2016-05-05 20:28:54,有时需要与时间戳进行相互的运算,此时就需要对两种形式进行转换,在Python中,转换时需要用到time模块,具体的操作有如下的几种:将时间转换为时间戳重新格式化时间时间戳转换为时间获取当前时间及将其转换成时间戳1、将时间转换成时间戳将如上的时间2016-05-05 20:28:54转换成时间戳,具体的操作过程为:

2017-11-02 17:27:33 1086

转载 正则表达式

下图列出了Python支持的正则表达式元字符和语法:   1.2. 数量词的贪婪模式与非贪婪模式正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式"ab*"如果用于查找"abbbc",将找到"abbb"。而如果使用非贪婪的数量词"

2017-10-22 10:35:19 146

原创 HTML5基本内容

html>lang="en"> charset="UTF-8"> Titlehtml主要是对文本做语义说明的,字体页面的修饰应该由CSS来做一:基本标签1. 注释--> 注释解释说明2. 标题h1-h6 独占一行,一个页面最好只有一个h1标签3. 段落一个段落,独占一段,两个p标签之间由段间距4. 水平分割线---------

2017-10-07 17:27:22 409

转载 nmap使用

首先,简单列举一个扫描端口的运用:nmap –sT –sV –p80,443,8080 –P0 –n IP说明:-sT,说明是TCP协议;-sV,说明是显示详情-p后面跟指定的扫描端口;-n 后面对应的IP  一,简介nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运

2017-08-31 14:53:18 365

原创 vim配置

一:YouCompleteMe代码补全:1. sudo apt update2. sudo apt install cmake3. sudo apt install clang4. sudo apt install python-dev5. 下载YouCompleteMegit clone --recursive git://github.com/Vallori

2017-08-26 19:28:53 195

转载 GDB的使用

GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能:    1、启动你的程序,可以按照你的自

2017-08-24 13:35:19 208

转载 栈实现括号匹配

算法:检测表达式中的字符,若是左括号就入栈,如果是右括号就出栈一个元素与其配对,配对成功则继续访问下一个字符,否则退出。出现非括号字符则跳过。[cpp] view plain copy print?#include   #include    //malloc,realloc  #include      //含有overflow  #include   //e

2017-08-24 11:24:57 330

原创 malloc内存分配

malloc一次性分配的内存在虚拟内存中是连续的,在物理内存上不一定连续malloc若两次分配内存,则前后两次的地址不一定连续在应用于栈时,若内存不够,则应将之前申请的内存释放,重新申请一块连续的更大内存,或realloc申请,而不是再用malloc申请一块小内存

2017-08-24 10:45:00 282

原创 数组和链表、栈和队列

数组:  查找数据方便,添加删除数据不方便,故常用来做查找表。当表较大时不宜存放在堆空间。通常已知数据数量用数组,未知数量用链表。  操作:按下标查找数值链表:  添加删除数据方便,查找数据不方便。查找数据只能遍历  结点:1)存放应用相关数据  2)存放下一个结点的地址  操作:1)在不同位置添加成员   2)删除成员删除添加结点时应考虑操作是否会影响

2017-08-23 11:54:53 238

转载 fork()详解

一、fork入门知识     一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。    一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进

2017-08-22 16:53:37 332

转载 shell中$(( ))、$( )与${ }的区别

原文链接命令替换在bash中,$( )与` `(反引号)都是用来作命令替换的。命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行。exp 1$ echo today is $(date "+%Y-%m-%d")today is 2014-07-01$( )与``

2017-08-01 16:17:30 226

原创 shell的${}使用

${param:-default}   If  param is null, then set it to the value of  default .${#param} Gives the length of  param${param%word} From the end, removes the smallest part of  param thatmatches  word

2017-08-01 16:08:54 344

原创 IP地址的分类

0.0.0.0 与 224之后的网段不为民用A 1.0.0.0--126.255.255.255网络数 2^7-2 主机数 2^24-2B 128.0.0.0--191.255.255.255网络数 2^16 主机数 2^16-2C 192.0.0.0--223.255.255.255网络数 2^21 主机数 2^8-2

2017-07-28 16:43:59 186

原创 OSI七层框架与TCP/IP四层框架

应用层     应用的用户接口表示层     数据的表现形式,如对数据加密、编码会话层     对应用会话的管理,例如判断是否需要远程会话传输层(TPDU)     可靠与不可靠的传输,TCP与UDP的选择,传输前的错误检测网络层(报文) 加入本机与目标机的IP数据链路层(帧) 加入本机与目标机的mac地址物理层(比特) 设备之间比特流的传输

2017-07-28 15:38:23 426

转载 $$ $! $?

$0 这个程式的执行名字$n 这个程式的第n个参数值,n=1..9$* 这个程式的所有参数,此选项参数可超过9个。$# 这个程式的参数个数$$ 这个程式的PID(脚本运行的当前进程ID号)$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)$- 显示shell使用的当前选项,与set命令

2017-07-28 11:40:46 275

原创 shell的$()与``

$()与``的作用是相同的,都是取命令的执行结果例:x=`ls`echo $x结果将会列出当前目录的文件x=$(ls)同样如此

2017-07-21 00:16:32 231

空空如也

空空如也

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

TA关注的人

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