- 博客(58)
- 资源 (1)
- 收藏
- 关注

原创 数据结构_布隆过滤器
基于位图的缺点——只能保存整型,在现实中的应用有了很大的局限性,所以又引出了一种新的哈希变形,其实也算是位图的变形——布隆过滤器。
2018-03-02 20:28:48
206

原创 C语言_函数调用过程(栈帧)
首先举个栗子:#include <stdio,h>int add(int x,int y){ int c=0; c=x+y return c;}int main(){ int a=1; int b=2; int c=0; c=add(a,b);} 在这个程序里,函数被调用才会发挥函数的功能,而函数的调用其实是一个过程,在这个过程计算机要为函数开辟栈空间,
2017-11-14 15:33:49
471
原创 CPP_STL——内存池(附源代码)
内存碎片 讲述内存池之前,先来说一下内存碎片的概念。物理内存实际的存储空间是连续的,内存没有被使用之前,进程刚跑起来的时候确实是顺序使用的,但是在系统中不断有进程提起,退出。这样内存在不停的被申请和释放,可用的物理内存空间不再连续,会产生很多的碎片,这就是内存碎片。 内存碎片过多,将造成内存的可用性降低,实际能用的内存没有剩余那么多,好比把一个亿分别存到一亿张银行卡一样,刷卡的时候每次只能刷一...
2018-07-27 20:33:13
876
原创 单片机编程_中断
单片机三种中断 1.外部中断 2.定时中断 3.串行口中断 中断概念:CPU暂停当前工作A,转去处理其他工作B,处理完毕再回到中断处继续工作A。52单片机中断优先级 中断源 序号(C语言用) INT0 外部中断0 T0 定时器/计数器0中断 INT1 外部中断1 T1 定时器/计数器1中断 T1/RI 串行口...
2018-07-18 16:48:54
1740
原创 Linux_线程控制
互斥锁//定义互斥锁pthread_t mutex;//初始化int pthread_mutex_init(&mutex, NULL);//锁和解锁int pthread_mutex_lock(&mutex);int pthread_mutex_unlock(&mutex);//销毁int pthread_mutex_destroy(&mut...
2018-07-08 01:29:38
217
原创 DP_扔鸡蛋
初阶——100层,2个鸡蛋 两个鸡蛋的硬度相同,从X层扔不碎,X+1层扔碎了,则硬度为X, 要测试鸡蛋的硬度,如果每次用最优的方法,在最坏的情况下测试次数n为多少? 测试次数为n,则第一次扔需要在第n层, 这样如果鸡蛋碎了,第2次就要从第1层开始往上慢慢试,试到第n-1层,都没碎,这样鸡蛋的硬度就是n,测试次数是1 + n -1 = n. 如果鸡蛋没碎,第2次的最优选择就在n+n-1层扔...
2018-07-04 00:07:00
675
原创 C++_STL
概念 STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。体现了泛型化程序设计的思想。框架 容器 string、 序列式容器:vector、list、deque、 关联式容器:map...
2018-06-27 20:14:26
201
原创 Linux_守护进程
概念 无控制终端的会话首进程,或者是孤儿进程组的成员,在后台执行任务。 守护进程程序的名称通常以“d”结尾。编程规则 (1)调用unmask将文件模式创建屏蔽字设置为一个已知值(通常是0)。因为继承来的文件模式创建屏蔽字可能会被设置为拒绝某些权限。 (2)调用fork,然后父进程exit。作用: 1)如果该守护进程是作为一条简单的shell命令启动的,那么父进程终止会...
2018-06-27 19:42:43
248
原创 Linux_死锁
死锁 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。四个条件 (1) 互斥条件:一个资源每次只能被一个进程使用。 (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 (3) 不剥夺条件:进程已获得的资...
2018-06-27 18:43:11
151
原创 Linux_线程
概念 有时被称为轻量级进程,是程序执行流的最小单元,是被系统独立调度和分派的基本单位。 线程自己不拥有系统资源,但是线程可以与同属一个进程的其他线程共享该进程拥有的全部资源 一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。 线程独立的数据:栈、线程id、一组寄存器、errno、信号屏蔽字、调度优先级线程的优点 代价小、占用资源小、线程切换需要操作系统做的工作少 ...
2018-06-16 22:18:08
143
原创 C语言总结
I/O//输入输出缓存区的流int scanf(const char *format, ...);int printf(const char *format, ...);int getchar(void);int putchar(int character);//未格式化char* gets(char *str);int puts(const char *str);//打...
2018-06-11 16:46:51
353
原创 数据结构_二叉树线索化
二叉树结构typedef int DataType;typedef enum PtrTag{ THEARD, // 线索化 LINK, // 链接左右孩纸 }PtrTag;typedef struct BinaryTreeNodeThd{ DataType _data; struct BinaryTreeNodeThd* _left; ...
2018-05-27 12:43:02
163
原创 C++_异常
错误处理 1.终止程序(段错误等) 2.返回错误码 3.返回合法值,让程序处于某种非法状态 4.调用一个预先设置的出错时调用的函数——回调函数 在一个程序中,都应该尽量不要因为错误而终止程序,引入异常处理来处理一个函数自己无法处理的错误。异常 当一个函数发现自己无法处理的错误时抛出异常,让函数的调用者直接或间接的处理这个问题。 异常对象类型与catch说明符的类型必须一致; 1...
2018-05-24 22:01:34
174
原创 C++_智能指针
作用 实现内存的智能回收,当在用delete或delete[]手动回收内存之前,被异常打断,则会产生内存泄漏问题。 只能指针其实是定义一个类,指向一块内存空间,析构函数释放这块空间。所以当被异常打断,智能指针生命周期结束,自动调用析构函数,释放内存。 智能指针的实现需要使用到模板 常用的几种智能指针 auto_ptr 当第2个智能指针指向同一块内存时,第一个智能指针不再指向那块内存,相...
2018-05-23 20:37:07
321
原创 数据结构_排序
常见排序 1.插入排序:直接插入排序,希尔排序 2.选择排序:选择排序,堆排序 3.交换排序:冒泡排序,快速排序 4.归并排序:归并排序插入排序 直接插入排序:元素越接近有序,时间效率越高 最优情况:O(N) 最差情况:O(N^2) 空间复杂度:O(1) 是一种稳定的排序算法static void swap(int* a, int* b){ int c = *a...
2018-05-23 10:50:55
948
1
原创 C++_模板实现顺序表和链表
顺序表#pragma once#include <iostream>#include <string>#include <string.h>using namespace std;// 模板实现顺序表--考虑深层次的深浅拷贝问题 template<class T>class SeqList{public: SeqL...
2018-05-21 22:59:32
246
原创 Linux_静态库&&动态库
PV操作输出完整的cute或者shuai#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/wait.h>#include <sys/ipc.h>#include <sys/sem.h>union semun{int va...
2018-05-21 18:02:13
139
原创 Linux_消息队列
概念 消息队列是消息的链接表,存储在内核中,由消息队列标识符标识。#include<sys/msg.h>int msgget(key_t key, int flag); //创建或打开消息队列,若成功返回消息队列ID,失败返回-1int msgctl(int msqid, int cmd, struct msqid_ds *buf); //cmd参数指定...
2018-05-20 17:10:52
189
原创 Linux_管道
局限性 (1)半双工,只能数据在一个方向上流动,某些系统提供全双工,为了可移植性,决不预先假定系统支持全双工、 (2)只能在具有公共祖先的两个进程间使用#include <unistd.h>int pipe(int fd[2]); //返回值 成功返回0,出错返回-1经由参数fd返回两个文件描述符,fd[0]为读打开,fd[1]为写打开。fd[1]的输出是fd...
2018-05-20 15:24:09
242
原创 C++_模板
概念 模板是泛型编程的基础。所谓泛型编程就是编写与类型无关的逻辑代码,是一种复用的方式。模板分为模板函数和模板类。模板函数 模板形参的定义可以用class也可以用typenametemplate&lt;class T&gt;void fun(T a, T b){ printf("a b");}//重载模板函数template&lt;class T1, class T...
2018-05-16 14:43:08
115
原创 C++_多态模型
非虚继承多继承 class B : public A class C : public B 菱形继承 虚继承单继承 多继承 菱形继承
2018-05-14 20:28:45
207
原创 Linux_popen&&system
函数system 功能:封装fork(), waitpid(),exec(),实现*cmdstring的命令。#include <stdlib.h>int system(const char *cmdstring); //返回值:(见下)(1)如果cmdstring是一个空指针,仅当命令处理程序可用时,返回0. 可以用这个确定这个操作系统是否支持syste...
2018-05-09 16:30:53
147
原创 Linux_exec
概念 当进程调用exec函数,该进程执行的程序完全替换成新程序,从main开始执行,进程前后ID不变,exec只替换当前进程的正文段、数据段、堆段和栈段。7个exec函数#include <unistd.h>int execl(const char *pathname, const char *arg0, .../* (char *)0 */ );int execv(...
2018-05-09 16:12:17
353
原创 C++_概念题
1.一个C++程序是由哪几部分构成的?其中的每一部分起什么作用? 答:(1)预处理:一堆头文件#include,自定义#define,编译开关#pragma (2)全局声明:类、结构体、全局变量等声明 (3)函数体:主程序和被调用函数2.请根据你的了解,叙述C++的特点。C++对C有哪些发展? 特点: C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。 C++设计直接...
2018-05-06 20:34:02
1027
原创 Linux_进程控制
fork#include <unistd.h>pid_t fork(void);//返回值:子进程返回0,父进程返回子进程ID;若出错返回-1pid_t getpid();//获得子进程IDpid_t getppid();//获得父进程ID注意 fork之后,父子进程交替运行。 写时拷贝。 进程被虚拟成文件: /prev/pid/ ps 查看...
2018-05-02 13:10:50
134
原创 Linux_进程
进程的概念 从用户角度:进程是程序的一次动态执行过程 从操作系统角度看: 1.进程是操作系统分配内存,CPU时间片等系统资源的基本单位。 2.每个进程有自己独立的地址空间和进程状态 3.进程是分配资源的最小单位进程是程序的一次执行过程,需要保存进程的现场信息,这些信息需要一个数据结构来保存,在C语言中用结构体PCB(process control block)。进程和程序的区别...
2018-05-02 12:04:56
139
原创 Linux_readelf&&elf
NAME readelf - Displays information about ELF files. readelf命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。 SYNOPSIS readelf [-a|--all] [-h|--file-header] 显示在elf文件头里包含的...
2018-05-02 11:43:05
200
原创 Linux_vim&&gcc&&...
VIM Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是自由软件。 Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。1999 年Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈居第二。但在2000年2月Vim赢得了Slashdot Beanie的最佳开放源代码文本编辑器大奖,又将...
2018-05-01 16:48:16
267
原创 Linux_yum&&rpm
yum安装 yum是从网络安装源(例如网易镜像,可以自己配置)上下载rpm,如果存在依赖关系会把依赖的rpm同时下载安装。 安装的时候,会下载软件包.Rpm在安装 自动解决依赖关系 引入仓库概念,支持多个仓库 可以对rpm进行分组,基于组进行安装操作rpm安装 rpm是安装本地存在的rpm包,如果存在依赖也需要安装上 如果某个rpm是自己修改编译...
2018-04-29 21:00:56
129
原创 Linux_彩色进度条
如何输出颜色 printf(“\033[47;37mhaha\033[0m”); \033[背景颜色;字体颜色m字符串、033[0m \033[0m 关闭属性,确保颜色不影响下一行 \033[47 背景颜色 \033[37m 字体颜色背景颜色: 40–47 40: 黑 41: 红 42: 绿 ...
2018-04-29 20:44:55
141
原创 C++_继承&多态
三种继承关系 1.公有public继承 基类为public,派生类也是public,基类为protected,派生类也是protected,基类为private,派生类为不可见。 2.保护protected继承 基类为public,派生类为protected,基类为protected,派生类也是protected,基类为private,派生类为不可见。 3.基类为public,派生类为p...
2018-04-26 21:43:00
209
原创 Linux_vim超简单配置
功能配置概述: 语法高亮 自动缩进 括号自动补全 设置行号 快捷搜索 去除搜索高亮 去除错误命令响声“人狠话不多”直接上代码vim ~/.vimrc" 去掉有关vi一致性模式,避免旧版本的一些bug和局限set nocompatible" 去除vim的GUI版本中的toolbarset guioptions-=T" 去除命令错误的响...
2018-04-15 16:34:25
303
原创 C++_new/delete和new[]/delete[]以及maloc/free
malloc/calloc/realloc void* malloc(size_t size) 申请一块内存大小为size字节的大小空间。 void* calloc(size_t n, size_t size) 申请n块连续的大小为size字节大小的空间 void* realloc(void* p, size_t size) 给p重新申请一块大小为size字节大小的空间,...
2018-04-08 23:25:16
222
原创 C++_const&&内联&&友元&&static
const成员函数 在成员函数声明的后面加const,该成员函数不能修改成员变量,不能调用非const成员函数,可以在类外定义。 const成员函数只能调用const成员函数 非const成员函数能调用const和非const成员函数 const对象只能调用const成员函数 非const对象能调用const和非const成员函数内联 用inline修饰的函数叫...
2018-04-07 00:35:46
327
原创 C++_类
面向对象 是一种编程方法、思想与风格 以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。 将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。对象 对象是人们要进行研究的任何事物,对象是封装的最基本单位。 对象的状态和行为 对象具有状态,一个对象用数据值来描述它的状态。 对象还有操作,用于改变...
2018-04-01 22:24:04
122
原创 C++_引用
引用的定义 引用是给变量起一个别名,而不是重新定义一个变量,也没有重新申请一块空间。 引用的特点 一个变量可以有多个引用 一个引用只能对应一个变量,不可再被修改去引用其他变量 引用需要立刻初始化引用的用途 引用作参数传递 引用做返回值传递 const引用当你把a的引用当作参数传给函数时,又不希望a被函数改变,就可以在传参时用上const,只给...
2018-03-20 17:19:28
165
原创 C++_入门基础
什么是C++ C++是包含类别的C语言,是C语言的增强版,C语言可以说是C++的子集。 C++新特性 虚函数 运算子多载 多重继承 模板 异常处理 RTTI 命名空间C++的具体构成 C 类和对象 继承和多态 模板和泛型编程 异常处理 C++库和标准模板库C++的数据类型 基本数据类型:cha...
2018-03-20 16:55:41
2317
原创 数据结构_海量数据面试题
面试题 1.哈希切割top K问题 给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址? 2.位图应用 给定100亿个整数,设计算法找到只出现一次的整数 给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集 1个文件有100亿个int,1G内存,设计算法找到出现次数不超过2次的所...
2018-03-02 22:49:19
375
原创 数据结构_位图
位图概念基于哈希结构,在海量整型数据处理时,内存往往不够用,所以当只需要判断是否存在时,可以使用比特位来标记,一个整型数32个比特位,就可以标记32个数,如果有100亿个整数,就只需大约半个G的空间就可以处理,需要的空间大小和数据数量无关,和范围有关。
2018-03-02 17:22:52
242
原创 数据结构_哈希
哈希关键:不比较关键码,直接搜索得到需要的数。 特点:与搜索树不一样,哈希结构元素的储存位置与关键码直接对应,可以不用进行比较遍历。
2018-03-02 17:03:13
205
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人