- 博客(55)
- 收藏
- 关注
原创 Linux---目录索引(知识小渠道)
无法打开虚拟机readonly option is retmake及小程序进度条编写自主shell,及两次fork进程间通信IPC之消息队列
2018-04-30 19:07:00 381
原创 c++---目录索引(知识小渠道)
重载和缺省参数引用和指针类和对象默认成员函数实现日期类const成员函数,内联函数,友元函数,static成员,构造函数的优化new/delete以及this指针模拟实现String类(深拷贝)模拟实现String类(浅拷贝)...
2018-04-30 18:39:35 250
原创 Linux---进程间关系和守护进程
进程间关系进程组进程组是一个或多个进程的集合每个进程除了有一个进程ID之外,还属于一个进程组这些进程通常与同一作业相关联,可以接受来自同一终端的各种信号每个进程组有唯一进程组ID,每个进程组可以有一个组长进程,其进程ID和进程组ID一致组长进程可以创建一个进程组,创建该组中进程,然后终止只要某个进程组中有一个进程存在,该进程组就存在,与组长进程是否终止无关从进程组的创建到最后一个...
2019-04-02 09:31:40 406
转载 Linux---kill及kill -9的用法及如何实现进程的优雅退出
转载自[https://blog.csdn.net/slvher/article/details/8977338]如何在shell中终止一个后台进程?一个后台服务进程如何实现优雅退出?kill与signals我们这里所说的kill是指作为shell command的那个kill(相对的,Linux系统中还有个叫做kill的system call,man 2 kill可查看其功能及用法),s...
2019-03-31 21:12:26 3771
原创 C++---智能指针
在代码中经常忘记释放动态开辟的内存资源,造成内存泄露,并且在操作时要小心谨慎,避免内存泄露,因此产生了只能指针来动态的管理指针所指向的动态资源释放auto_ptr:管理权的转移操作,存在缺陷scoped_ptr:一种粗暴模式的防拷贝shared_ptr:在需要拷贝的地方增加了引用计数功能weak_ptr:具有弱指针功能,主要配合解决shared_ptr循环引用auto_ptr作用:是一...
2019-03-27 14:54:31 232
原创 单例模式
单例模式是一种软件设计模式,在它的核心结构中只包含一个被称为单例类的特殊类,通过单例模式可以保证系统中一个类只有一个实例,而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源 如何保证一个类只有一个实例并且这个实例易于被访问?定义一个全局变量可以确保对象随时都可以被访问,但不能防止我们实例化多个对象。更好的办法是让类自身负责保存它的唯一实例,这个类可以保证没有其他实例被创建,并且它提...
2019-02-26 16:54:53 157
原创 malloc的一点点东西
提问:malloc是不是线程安全的?提问:malloc是如何实现的?线程安全:需要解决多个线程调用函数时访问共享资源的冲突可重入:需要不再函数内部使用静态或全局数据,不反悔静态或全局数据,也不调用不可重入函数malloc函数线程安全但不可重入 malloc函数在用户空间要自己管理各进程共享的内存链表,由于有共享资源访问,本身会造成线程不安全。为了做到线程安全,加锁保护。递归锁,如果当程...
2019-02-18 17:22:17 492
原创 c++---多态和虚函数
一、多态 c++有三大特性:封装,继承,多态 多态是面向对象程序设计的一个重要特征,多态就是一个东西有多重状态,具有不同功能的函数可以用一个函数名,这样就可以用一个函数名实现不同的功能 静态多态和动态多态静态多态是利用重载实现的,在程序编译时确定要调用的是哪个函数,也称为编译时多态。动态多态是利用虚函数实现的,在程序执行期间才动态的确定操作所指对的对象,也称为运行时多态 动态多态:当一个基...
2019-02-17 21:22:36 269
原创 C++---模拟实现list
#include<iostream>#include<assert.h>using namespace std;typedef int DataType;struct ListNode{ ListNode *_next; ListNode *_prev; ListNode _data; ListNode(DataType x) :_data(x...
2018-12-01 17:07:11 222 1
原创 C++---模拟实现vector
#include<iostream>#include<assert.h>typedef int DataType;using namespace std;class Vector{public: Vector() :_first(NULL) ,_finish(NULL) ,_endofstorage(NULL) {} Vector(con...
2018-12-01 16:08:30 243
原创 Linux的stat命令下的三个时间
man手册里,对stat的描述是[display file or file system status],描述文件和文件属性信息,inode信息stat命令显示出来的信息:File:文件名Size:文件大小Blocks:文件使用的数据块数IO Block:IO块大小regular file:文件类型为常规文件Device:设备编号Inode:inode号Links:链接数A...
2018-10-13 20:12:21 567
原创 Linux---进程间通信IPC之信号量
SYSTEM V信号量,这是信号量值的集合,不是单个的信号量,相关的信号量操作函数由“sys/ipc.h”引用,这篇主要描述了这个信号量集 信号量 也称信号灯,主要用来控制多个进程对共享资源的访问,信号量是进程通信的一种重要方法,但其本身并不进行数据交换,和管道、消息队列不同,而是以同步,互斥,协调于各个进程之间,协调进程对共享资源的访问,共享内存的使用就要用到信号量。把多个执行流能够访问到的...
2018-08-08 15:58:14 198
原创 Linux---进程间通信IPC之管道
进程间通信(IPC):是指在不同进程之间传播或交换信息。 IPC的方式:通常有管道(无名管道、命名管道)、消息队列、信号量、共享存储、Socket、Streams等(Socket和Streams支持不同主机上的两个进程IPC) 进程间通信的目的: 1.数据传输:一个进程需要将它的数据发给另一个进程 2.资源共享:多个进程之间共享同样的资源 3.通知事件:一个进程需要向另一个或一...
2018-08-06 20:40:38 230
原创 new和malloc的你来我往--区别
操作符与函数new是一个操作符,malloc是一个函数分配内存的位置new 在自由存储区,malloc在堆上 自由存储区是c++对new的一个抽象概念,可以是堆,也可以是静态存储区,看operator new在哪给分配内存内存分配成功的返回值new返回对象类型指针,malloc返回void* ,根据需要强转类型 new内存分配成功的时候,返回的是对象类型的指针,不需要进行类...
2018-08-03 19:24:35 182
原创 哈希扩展【位图,布隆】,海量数据处理
位图: 它是用一个byte位来标识一个整数存在或者不存在,一般用于大数据的简单确认是否存在 类似于哈希的直接定址法,只不过位图定在了一个位上,哈哈...
2018-08-01 16:25:41 210
原创 哈希表的基本操作
理想的搜索方式:可以不经过任何比较,一次直接从表中得到要搜索的元素,构造一种结构,通过某种函数使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么查找时就能通过函数一下找到该元素哈希本质上是一个数组,通过哈希函数使元素关键码和元素存储位置有一定的映射关系搜索某一元素时,通过哈希函数计算出元素存储位置,在数组中按此位置取元素比较,相等即存在插入,通过哈希函数计算出元素的存储...
2018-07-30 16:06:49 1009
原创 数据结构的八大排序
直接插入排序,希尔排序选择排序,堆排序冒泡排序,快速排序归并排序计数排序直接插入排序 关键元素tmp前面的元素已经是排好序的,把tmp放到合适的地方void InsertSort(int* a,size_t n){ assert(a); for(size_t i=0;i&amp;lt;n-1;++i) { int end=i; ...
2018-05-21 20:29:00 342
原创 c++---继承
c++—目录索引(知识小渠道)1.继承继承概念 继承是面向对象复用的重要手段,通过继承定义一个类,继承是类型之间的关系建模,共享共有的访问限定符和继承关系 private:私有,在父类里,成员为私有限定,意味着不管是什么继承,这个成员就是不让你看,就算你是从我这继承的 protect:保护,父类成员受保护,说明访问还是可以让你访问的,但只能是子类在自己的内部访问,不可以...
2018-05-13 12:00:23 225 1
原创 c++---模板
模板是泛型编程的基础,不支持分离编译(定义和声明只能在一个文件中) 泛型编程就是编写与类型无关的逻辑代码,是一种复用的方式 编译器调用模板参数函数时,编译器会根据传递的参数自动推演出模板的形参的类型,自动生成对应代码。 模板的分离编译 模板实现在一个.cpp文件,模板的调用在main函数的.cpp文件,main函数去其他.cpp找模板实现,但实现函数的.cpp因为没有在文件内调用并不...
2018-05-12 20:16:13 321
原创 c++---模拟实现String类(浅拷贝)
更多点子:c++—目录索引(知识小渠道)String:浅拷贝之引用计数+写时拷贝浅拷贝:当类里面有指针对象时,进行简单赋值的浅拷贝,两个对象指向同一块内存,析构时delete两次这块内存,存在崩溃问题,这时得进行深拷贝 深拷贝:(String s2=s1)构造s2时拷贝一块跟s1指向数据块一样大的数据块,并将值拷贝下来,这样s1和s2指向各自的数据块,析构时delete各自的数据块...
2018-04-30 08:50:35 238
原创 Linux---进程间通信IPC之消息队列
更多点子:linux—目录索引(知识小渠道)进程间通信(IPC):是指在不同进程之间传播或交换信息。 IPC的方式:通常有管道(无名管道、命名管道)、消息队列、信号量、共享存储、Socket、Streams等(Socket和Streams支持不同主机上的两个进程IPC) 进程间通信的目的: 1.数据传输:一个进程需要将它的数据发给另一个进程 2.资源共享:多个进程之间共享同样的资源...
2018-04-29 10:31:08 594
原创 c++----模拟实现String类(深拷贝)
更多点子:c++—目录索引(知识小渠道)string:深拷贝之传统现代写法浅拷贝:当类里面有指针对象时,进行简单赋值的浅拷贝,两个对象指向同一块内存,析构时delete两次这块内存,存在崩溃问题,这时得进行深拷贝深拷贝:(String s2=s1)构造s2时拷贝一块跟s1指向数据块一样大的数据块,并将值拷贝下来,这样s1和s2指向各自的数据块,析构时delete各自的数据块传统写...
2018-04-25 09:09:39 233
原创 c++----new/delete 以及this指针
更多点子:c++—目录索引(知识小渠道)this指针的值是当前调用成员函数的对象的起始地址 this指针特性: 1. this指针并不是对象本身的一部分,不影响sizeof的结果 2. this的作用域在类成员函数的内部(不严谨) 3. this指针是类成员函数的第一个默认隐含参数,编译器自动维护传递,类编写者不能显示传递 4.只有在类的非静态成员函数中才可以使用this指针,其...
2018-04-11 07:46:48 1287
原创 Linux---编写自主shell. 以及两次fork
更多点子:linux—目录索引(知识小渠道)两次fork 可以让两个进程同时运行,一次fork 只能一个运行一个阻塞 在子进程里再调一个进程,然后让儿子死亡,孙子成孤儿,之后父亲和孙子一起并发运行#include&lt;stdio.h&gt;#include&lt;std;lib.h&gt;#include&lt;string.h&gt;#include&lt;sys/wait
2018-04-10 13:32:06 542
原创 c++---const成员函数,内联函数,友元函数,static成员,构造函数的优化
更多点子:c++—目录索引(知识小渠道)const修饰成员函数: 在成员函数后面加上const,const修饰this指针所指向的对象,也就是保证调用这个const成员函数的对象在函数体内不会被改变 权限可以缩小,但是不可以放大 **1.**const对象不可以调用非const成员函数 2.非const对象可以调用const成员函数 **3.**const成员函数内不可以调用其...
2018-04-09 08:18:48 476
原创 c++---实现日期类
更多点子:c++—目录索引(知识小渠道)#pragma once#include<iostream>#include<assert.h>using namespace std;class Date{public: Date(int year = 1900, int month = 1, int day = 1)//构造函数,支持重载 ...
2018-04-08 16:41:42 317 2
原创 c++---默认成员函数
更多点子:c++—目录索引(知识小渠道)class Date{public: void show() { cout&lt;&lt;_year&lt;&lt;"-"&lt;&lt;_month&lt;&lt;"-"&lt;&lt;_day
2018-04-06 16:15:09 374
原创 Linux---make及小程序进度条
更多点子:linux—目录索引(知识小渠道)make 执行 Makefile 一个Makefile主要含有一系列的规则: 目标:依赖文件 tab 命令 main.o: main.c gcc -c -g main.c -o main.o-Wall 输出所有警告信息-O 在编译时进行优化-g 表示编译debug版本$^ 代表所有的依赖文件$@ ...
2018-04-04 17:39:52 341 2
原创 使用VMware Workstation Pro时,打不开虚拟机了
更多点子:linux—目录索引(知识小渠道)在刚开始使用虚拟机的时候,有的时候会打不开虚拟机,像这样: 做法很简单 第一步:打开你的服务,如果知不道在哪,可以直接在电脑中搜索服务,就出来啦 第二步:在服务里找到所有VMware相关的,把它们几个都打开,像这样: 第三步:重新开启你的虚拟机 如果有什么不对的地方,可以评论告诉我,望指导!...
2018-04-02 16:47:07 12155 2
原创 用vim编辑修改文件,保存文件时,报有“readonly option is set”提示
更多点子:linux—目录索引(知识小渠道)用vim编辑修改文件,保存文件时,报有“readonly option is set”提示: 第一步:调到命令模式(Esc) 第二步:输入 set noreadonly 第三步:之后就可以正常保存退出了:wq 保存退出文件,q 退出文件 如果有什么不对的地方,可以评论告诉我,望指导!...
2018-04-01 11:57:57 2508 4
原创 c++---类和对象
更多点子:c++—目录索引(知识小渠道)面向对象程序设计(OOP):是一种程序设计型,也是一种程序开发的方法,对象指的是类的实例,将对象作为程序的基本单元,将程序和数据封装在里面,提高软件的重用性,灵活性和扩展性 类类里面除了数据(成员变量),还有方法(成员函数)面向对象的三大特性:封装,继承,多态三种访问限定符:public,protected,private **1.*...
2018-03-27 11:37:10 192
原创 c++---引用和指针
更多点子:c++—目录索引(知识小渠道)引用: 引用不是定义一个变量,而是给一个已经定义好的变量重新起一个名字 类型&引用变量名=已定义过的变量名 特点: 1 一个变量可以取多个别名 2 引用必须初始化 3 引用只能在初始化的时候引用一次,不能改变为引用其他的变量void Test1(){ int a = 1; int& b = a;...
2018-03-26 20:38:38 227
原创 c++---重载和缺省参数
更多点子:c++—目录索引(知识小渠道)c++ 贝尔实验室的比亚尼.斯特劳斯特鲁普博士在二十世纪80年代发明并实现了c++。起初,这种语言被称作“C with Class”(包含类别的C语言),作为C语言的增强版出现。c几乎是c++的一个子集,所以C语言支持的语法在c++基本都支持并需要使用。#include<iostream.h>//这是就C++库的头文件,新的编译器...
2018-03-23 20:37:53 294
原创 main函数的参数解析及实现整数计算器
main函数其实是有参数的int main(int argc , char* argv[],char* envp[]){ //代码片}这里有三个参数 : 第一个:argc是个整形变量,表示命令行参数的个数(含第一个参数,就是含.exe的字符) 第二个:argv是个字符指针的数组,每个元素是一个字符指针,指向一个字符串,这些字符串就是命令行中的每一个参数 第三个:envp是...
2018-03-22 19:12:40 339
原创 模拟实现strlen,strcpy,strcat,strstr,strcmp,memcpy,memmove
【strlen】 返回字符串的长度,不包括‘\0’//变量计数器int my_strlen(const char* str){ int count = 0; while (*str)//遍历一遍字符串,走一个,计数器加一 { count++; str++; } return count;}//不创建变量计数器...
2018-03-07 19:19:26 317
原创 冒泡排序多个字符串
冒泡排序数组里的数字,应该都做过,那排序多个字符串呢? 冒泡法,它重复地访问要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。时间复杂度O(n)。 这里是多个字符串,在文字常量区,除了可以用指针进行操作之外,还可以进行“字符串自己的办法”void bubble_sort(char(*arr)[6], int len)//因为arr是个二维数组,这是以一维数组进行操...
2018-03-06 20:01:00 657
原创 模拟实现strncpy,strncat,strncmp
【模拟实现strncpy】【模拟实现strncat】【模拟实现strncmp】 这三个函数都是在字节上进行实现 【strncpy】 char* strncpy(char* destination,const char* source,size_t num); 拷贝num个字符从源字符到目标空间,如果源字符串的长度小于num,则考完源字符串之后,在目标的后边追加0,直到num个。ch...
2018-03-05 11:23:31 387
原创 非递归遍历二叉树
【非递归前中后序遍历二叉树】 有关二叉树的建立及基本操作在上一篇,戳链接二叉树的基本操作 【非递归·前序】 //非递归 前序遍历void BTreePrevOrderNonR(BTNode* root){ BTNode* cur = root; BTNode* top = NULL; stack S; StackInit(&S); ...
2018-03-04 09:52:01 421
原创 二叉树的基本操作
【递归前中后序遍历二叉树】 【求树的结点数,叶子数,第k层结点数,深度】 【求树中某个结点】 【判断是否为完全二叉树】 【层序遍历二叉树】 首先得有最基础的函数,创建新的结点,创建二叉树typedef int BTDataType;typedef struct BinaryTreeNode{ struct BinaryTreeNode* _left;//左子树 ...
2018-03-03 18:04:23 319 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人