![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
内功心法
文章平均质量分 93
Cardiac.TJ
克己勤免
展开
-
进程调度队列与进程调度算法的学习
引言:在学习了进程创建、进程等待、进程退出后,父进程创建子进程,父子进程谁先执行由它们的优先级决定,这就了解到了进程的调度,本篇为关于进程调度知识的学习。1.为什么要引入调度,引入调度的目的是什么?在计算机操作系统中,可能同时有数百个批处理任务存放在磁盘的中,或者有数百个终端与主机相连接,这样一来内存和处理器等资源便供不应求。如何从这些任务中挑选任务进入主存运行、如何在进程之间分配处理器时间,...原创 2019-07-17 20:59:54 · 1407 阅读 · 0 评论 -
Linux调试器gdb的使用
1.使用条件在源代码生成二进制程序时加上-g。2.使用相关命令1)使用gdb 需要调试的文件名命令开始调试2)使用 ctrl + d或者quit退出3)list/l:显示源代码,每次列10列4)l/list 函数名:显示函数的源代码5)r/run:运行程序,相当于vs中的F56)n/next :单条执行,相当于vs中的F10逐过程7)s/step:进入函数调用,相当于vs中的F1...原创 2019-01-14 22:10:02 · 198 阅读 · 0 评论 -
行缓冲了解
1.回车与换行在电视上大家应该看到过,有人用一种打字机打字,那是计算机未出现前的产品。但它存在一个缺陷,在打完一行换行的时候,需要0.2秒的时间,但是这0.2秒可以打两个字符,如果这0.2秒内有新的字符传入,那么该字符会丢失。于是打字机的研发人员便想了办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做”回车”,告诉打字机把打印头定位在左边界;另一个叫做”换行”,告诉打字机把纸向下移...原创 2019-01-15 15:48:15 · 1155 阅读 · 0 评论 -
冯诺依曼体系的了解
冯诺依曼体系结构1.框图2.组成输入设备:键盘、鼠标、写板、扫描仪等。中央处理器:含有运算器与控制器等。输出单元:显示器,打印机等。3.注意事项上面所说的存储器指的是内存不考虑缓存情况,CPU只能对内存进行读写,不能访问输入设备或输出设备输入/输出设备要输入或者输出数据,也只能写入内存或者从内存中读取所有设备都只能直接与内存打交道操作系统1.组成任何计算机系统都包含...原创 2019-01-15 20:43:47 · 5333 阅读 · 4 评论 -
C++string类模拟实现与深浅拷贝
文章目录1.深浅拷贝1)深浅拷贝的引入2)浅拷贝3)深拷贝a.传统写法b.现代写法4)写时拷贝2.string的模拟实现String.hString.cc1.深浅拷贝1)深浅拷贝的引入观察下面的代码:class String{public: String(const char* str = "") { // 构造string类对象时,如果传递nullptr指针,认为程序非法,此处...原创 2018-11-24 19:21:22 · 527 阅读 · 0 评论 -
C++string类初识及其常用接口说明
文章目录1.初识string类1)为什么c++不使用c语言中的字符串?2)string类基本了解2.string类的常用接口1)string类对象的常见构造a.常用构造了解b.常用构造测试2)string类对象的容量操作a.容量操作了解b.容量操作测试c.注意事项d.可以使用reserve提高插入数据时的效率,避免增容的开销。3)string类对象的访问操作a.访问接口了解b.测试4)string...原创 2018-11-24 12:07:01 · 1219 阅读 · 0 评论 -
【c++】模版初了解
文章目录1.泛型编程的引入2.模版1)函数模版1>概念2>函数模版格式3>函数模版的原理4>函数模版的实例化《1》 隐式实例化:让编译器根据实参推演模板参数的实际类型《2》显式实例化:在函数名后的<>中指定模板参数的实际类型5> 模板参数的匹配原则2)类模版1.泛型编程的引入当我们想实现一个交换函数时,但要考虑多种类型,怎么实现一个通用的交换类型呢原创 2018-11-20 21:22:16 · 155 阅读 · 0 评论 -
【c/c++】内存管理
文章目录1.c/c++内存分配2.C语言中动态内存管理方式malloc/calloc/realloc与free3.C++内存管理方式3.1new/delete操作内置类型3.2new和delete操作自定义类型4.operator new与operator delete函数5.new和delect的实现原理5.1内置类型5.2自定义类型6.定位new表达式(placement-new)7.常见面试...原创 2018-11-03 21:07:09 · 255 阅读 · 0 评论 -
【c++】类和对象3
文章目录1.再谈构造函数a.构造函数体赋值b.初始化列表c.构造函数的作用d.默认构造函数2.友元a.友元函数b.友元类3.static成员1.再谈构造函数a.构造函数体赋值在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称作为类对象成员的初始化,构造函数体中的语句只能将其称作为赋初值,而不能称作初始...原创 2018-10-29 16:53:38 · 338 阅读 · 0 评论 -
【c++】类和对象2
内容包括1.类的6个默认成员函数2.构造函数3 析构函数4.拷贝构造函数5.赋值操作符重载6.默认拷贝构造与赋值运算符重载的问题1.类的6个默认成员函数构造函数,拷贝构造函数,析构函数,赋值操作符重载,取地址操作符重载,const修饰的取地址操作符重载2.构造函数引出概念对于以下的日期类class Date{public: void S...原创 2018-10-21 15:07:17 · 198 阅读 · 0 评论 -
【c++】类和对象1
1.类和对象的初步认识c语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。c++是基于面向对象的,关注的是对象,将一件事情拆分为不同的对象,靠对象之间的交互完成。2.类的引入C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。#include<iostream>#include<s原创 2018-10-21 12:35:47 · 211 阅读 · 0 评论 -
【c++】入门
命名空间基本概念在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题。命名空间定义定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名...原创 2018-10-15 19:28:13 · 519 阅读 · 0 评论 -
Linux系统调用接口
open #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int open(const char *pathname, int...原创 2019-01-20 19:35:22 · 636 阅读 · 0 评论 -
守护进程
1)守护进程基本概念守护进程也称精灵进程(Daemon),是运⾏在后台的⼀种特殊进程。它独⽴于控制终端并且周期性地执⾏某种任务或等待处理某些发⽣的事件。守护进程是⼀种很有⽤的进程。Linux的⼤多数服务器就是⽤守护进程实现的。⽐如淘宝啦,百度,支付宝这些等等。Linux系统启动时会启动很多系统服务进程,这些系统服务进程没有控制终端,不能直接和⽤户交互。其它进程都是在⽤户登录或运⾏程序时创建,在...原创 2019-01-22 17:14:32 · 219 阅读 · 0 评论 -
生产者消费者模型
1.基本概念生产者消费者模型就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里面取出,阻塞队列就相当于一个缓冲区平衡了生产者和消费者的处理能力,这个阻塞队列就是用来给生产者和消费者解耦的。2.优点解耦支持并发支持忙闲不均...原创 2019-01-28 21:34:32 · 163 阅读 · 0 评论 -
zip与tar指令
1.zip/unzip指令1)zip语法:zip 压缩文件.需要zip的目录或文件功能:将目录或文件压缩成zip格式使用-f参数可以将指定目录下的所有文件与子目录递归处理2)unzip语法:unzip 压缩文件功能:将zip解压为文件使用-d参数可以指明解压文件的存放路径3)实例a.创建file.cc文件,并使用zip指令进行解压,得到file.zip文件。b.unzip ...原创 2019-01-14 13:49:47 · 599 阅读 · 1 评论 -
touch指令
1.touch指令的语法touch【选项】 文件。2.功能touch指令可以创建不存在的文件,或者touch通过参数修改目录或文档的日期时间。3.实例(1)使用touch指令创建一个新文件test.cc(2)使用shat查看文件Access:最后访问时间,查看文件,这个时间会改变,使用cat命令查看文件时,可以看出Access时间改变了。Modefy:最后修改时间,文件内容修...原创 2019-01-13 21:07:01 · 8032 阅读 · 0 评论 -
线程的同步与互斥
文章目录1.名词了解2.互斥量1)互斥量存在的意义2)通过操作实现共享变量带来问题的售票系统理解互斥量3)互斥量的接口4)互斥量的加锁与解锁5)完善的售票系统6)互斥量原理探究3.条件变量1)条件变量存在的意义2)条件变量基本概念3)条件变量的接口4.可重入与线程安全1)概念2)常见的线程不安全的情况3)常见的线程安全的情况4)常见不可重入的情况5)常见可重入的情况6)可重入与线程安全联系7)可重...原创 2018-12-25 16:21:51 · 244 阅读 · 0 评论 -
linux权限基础知识
《嘻嘻嘻,这是我第一篇博客,请多指教各位》Linux权限:A.Linux有两种用户:超级用户(root)以及普通用户。1>超级用户:可以在Linux系统下做任何事情,不受限制2>普通用户:在linux下做有限的事情。上图处于普通用户。使用命令:su[用户名】可以切换用户。例如:su root可以从普通用户切换至超级用户。如下图所示,并且切换超...原创 2018-08-28 18:10:58 · 835 阅读 · 1 评论 -
Linux相关开发工具
vim的配置简易配置a.进入rootb.在当前用户的主目录下创.vimrc文件c.将下面代码粘贴到 .vimrc文件 “双引号开始的行为注释行,下同“去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限 set nocompatible “显示行号 set number “检测文件的类型 filetype on “记录历史的行数 set h...原创 2018-10-11 10:38:04 · 237 阅读 · 0 评论 -
Linux环境变量与虚拟地址空间
进程基本概念a.程序的一个执行实例,正在执行的程序。b.(内核的角度)担当分配系统资源(CPU时间,内存)的实体。进程组成PCB,虚拟地址空间,页表,映射关系。管理方式:先描述再组织。先用结构体将进程描述,再使用合适的数据结构将这些结构体描述块组织起来。描述进程:a.进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。b.Linux操作系统下的PCB是tas...原创 2018-10-12 17:22:47 · 468 阅读 · 0 评论 -
Linux进程控制
文章目录1.进程创建1)fork函数2)调度算法了解3)fork的写时拷贝4)fork调用失败原因5)vfork函数2.进程等待1)进程等待的必要性2)进程等待的方法1&amp;amp;amp;amp;amp;amp;gt;wait2&amp;amp;amp;amp;amp;amp;gt;waitpid3)返回值4)参数1&amp;amp;amp;amp;amp;amp;gt;pid2&amp;amp;amp;amp;amp;amp;gt;st原创 2018-11-28 11:10:50 · 246 阅读 · 0 评论 -
popen函数与system函数
system函数函数原型 #include &amp;lt;stdlib.h&amp;gt; int system(const char *command);函数描述system()调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD 信号会...原创 2018-10-21 20:35:57 · 311 阅读 · 0 评论 -
Linux文件系统
文章目录openclosewriteread文件描述符重定向缓冲方式FILEinode文件系统软硬链接open #include &amp;amp;amp;amp;amp;amp;lt;sys/types.h&amp;amp;amp;amp;amp;amp;gt; #include &amp;amp;amp;amp;amp;amp;lt;sys/stat.h&amp;amp;amp;amp;amp;amp;g原创 2018-10-22 18:30:41 · 288 阅读 · 0 评论 -
Linux静态库及动态库
文章目录动态库与静态库概念1.静态库(.a)2.动态库(.so)库在连接以后引进进程说明了什么?实现加法和减法的静态库实现动态库动态库与静态库概念1.静态库(.a)程序在编译链接时把库的代码链接到可执行文件之中,程序运行的时间不需要依赖库。可移植性强,一旦编译成功不需要静态库,但是每一次都要讲代码链接进去,生成的可执行程序较大,浪费磁盘空间。2.动态库(.so)程序在运行的时候才去链接...原创 2018-10-22 20:37:15 · 181 阅读 · 0 评论 -
基本重定向的使用
文章目录输出重定向1.&amp;gt;输出重定向到一个文件或设备 覆盖原来的文件2.&amp;gt;! 输出重定向到一个文件或设备 强制覆盖原来的文件3.&amp;gt;&amp;gt; 输出重定向到一个文件或设备 追加原来的文件4. `ls -al 1&amp;gt; list.txt 2&amp;gt; list.err`将显示的数据,正确的输出到 list.txt 错误的数据输出到 list.err5. `原创 2018-10-23 13:54:58 · 270 阅读 · 0 评论 -
进程间通信之消息队列
文章目录消息队列功能IPC对象数据结构/usr/include/linux/ipc.h消息队列结构/usr/include/linux/msg.h消息队列在内核中的表示消息队列相关的函数1.ftok:创造消息队列的key2.msgget:用来创造和访问一个消息队列3.msgctl:创建队列的控制函数4.msgsnd函数:把一条消息添加到消息队列5.msgrcv函数:从一个消息队列接受信息实例错误报...原创 2018-10-24 20:20:01 · 630 阅读 · 0 评论 -
Linux进程间通信
文章目录1.进程间通信的目的2.进程间通信的本质3.进程通信的不同方式4.管道1)管道基本理解2)管道的分类3)匿名管道(PIPE)4)命名管道(FIFO)5.消息队列6.共享内存1)基本概念2)共享内存示意图3)共享内存数据结构4)共享内存函数5)实例代码6)ipcrm -m 与ipcrs -m表示删除或查看共享内存1.进程间通信的目的数据传输,一个进程需要将它的数据发送给另一个进程资源...原创 2018-10-28 12:49:13 · 588 阅读 · 1 评论 -
Linux的vim的简单指令
【转载】https://coolshell.cn/articles/5426.html原创 2018-10-28 13:14:46 · 190 阅读 · 0 评论 -
Linux信号的产生、阻塞与捕捉
文章目录1.信号的基本概念1)理解什么是信号?2)信号列表2.信号的产生1)产生信号的方法概述2)终端产生信号3)调用系统函数向进程发信号kill命令raise函数abort函数4)软件条件产生信号3.阻塞信号1)信号其他相关常见概念2)在内核中的表达3)sigset_t4)信号集操作函数5)sigprocmask函数6)sigpending函数1.信号的基本概念1)理解什么是信号?⽤户...原创 2018-11-06 17:00:15 · 333 阅读 · 0 评论 -
Linux进程
文章目录1.进程基本概念2.进程组成3.管理方式:先描述再组织。1)描述进程2)组织进程4.查看进程&amp;amp;amp;amp;lt;1&amp;amp;amp;amp;gt;使用`ps aux | grep 文件1 获取文件1的进程信息&amp;amp;amp;amp;lt;2&amp;amp;amp;amp;gt; top:动态查看进程的变化5.通过系统调用获取进程标识符号6.进程的状态1)常见状态2)进程状态修改7.僵尸进程1)概念原创 2018-11-28 10:49:37 · 217 阅读 · 0 评论 -
linux线程基本概念及线程控制
文章目录1.初始线程1)线程的概念2)进程与线程的关系1.初始线程1)线程的概念在一个进程里的一个执行路线被称为线程,更专业的说是:线程是一个进程内部的控制序列,并且一个进程中至少有一个线程。2)进程与线程的关系进程:Linux系统中的进程被称为轻量级进程,CPU眼中的看到的PCB要比传统进程更加轻量级。透过进程虚拟地址空间可以看到进程的大部分资源将进程资源合理分配给每个执行流就形成了线...原创 2018-11-28 14:56:34 · 245 阅读 · 0 评论 -
简易线程池的实现
1.首先我们创建一个任务类。//回调函数typedef int(*cal_t)(int,int);class Task{ private: int x;//操作数1 int y;//操作数2 int z;//运算结果 cal_t handler_task;//运算操作 public: Task(int a,int b,cal_t handle...原创 2018-11-30 18:01:33 · 284 阅读 · 0 评论 -
进程间关系
文章目录一:进程组、作业、会话1.进程组2.作业1)基本概念2)作业控制一:进程组、作业、会话1.进程组每个进程除了有⼀个进程ID之外,还属于⼀个进程组。进程组是⼀个或多个进程的集合。通常,它们与同⼀作业相关联,可以接收来⾃同⼀终端的各种信号。每个进程组有⼀个唯⼀的进程组ID。每个进程组都可以有⼀个组⻓进程。组⻓进程的标识是,其进程组ID等于其进程ID。 组⻓进程可以创建⼀个进程组,创建该组...原创 2018-12-24 18:19:58 · 246 阅读 · 0 评论 -
读写锁
1.基本概念读写锁就是解决多读少的问题。读写锁支持当没有线程去写入时,多个线程可以同时去共享的访问临界资源,而当临界区没有线程去访问或者没有线程去写的时候才允许该线程去写。这种用于共享访问给定资源的读写锁,也叫共享-独占锁,获取一个读写锁用于读的叫做共享锁,获取一个读写锁用于写的叫做独占锁。2.三种关系读者与读者:共享关系,可以多个线程同时访问写者与写者:互斥关系,当一个线程在写,其他线...原创 2019-01-29 17:35:40 · 169 阅读 · 0 评论 -
STL简介
1.STL基本概念STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且 是一个包罗数据结构与算法的软件框架。2.STL的版本原始版本 Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意 运用、拷贝、修改、传播商业使用这些代码,无需付费。唯一的...原创 2019-02-10 03:21:42 · 188 阅读 · 0 评论 -
模版特化及类型萃取
1.非类型模版参数模版参数分为类型形参与非类型形参类型形参:出现在模版参数列表中,跟在class或者typename之类的参数类型名称非类型参数:用一个常量作为类(函数)模版的一个参数,在类(函数)模版中可将该参数当做常量来使用T为类型形参,N为非类型形参template<class T, size_t N = 10>class Array{public: T&a...原创 2019-02-11 00:52:50 · 179 阅读 · 0 评论 -
【c语言】利用指针模拟实现函数(strlen、strcat、strstr、strcpy、strcmp、memcpy、memove)
模拟实现strlenint my_strlen(const char *p){ assert(p != NULL); char *s = p; while (*p) { p++; } return p - s;}模拟实现strcpyvoid my_strcpy(char* dst, const ch...原创 2018-09-14 19:17:44 · 1554 阅读 · 0 评论 -
【c语言】数组
1.数组的创建type name [const];//type指数组的元素类型//const是一个常量表达式,用来表示数组的大小,但是不可为0;2.数组的初始化数组的初始化是指,在创建数组的同时给数组的内容一些合理的初始值(初始化)。int main(){ int arr1[10] = { 1, 2, 3 }; int arr2[] = { 1, 2, 3, 4, 5 };...原创 2018-09-19 23:40:18 · 251 阅读 · 0 评论 -
【c语言】static关键字的三种用法
static1.修饰局部变量改变了 生命周期,作用域不发生改变eg:void test(){ int i = 0; i++; printf(&amp;amp;amp;quot;%d\n&amp;amp;amp;quot;, i);}int main(){ int i = 0; for (i = 0; i &amp;amp;amp;amp;lt; 10; i++) { test();原创 2018-09-19 16:14:43 · 2647 阅读 · 0 评论