- 博客(58)
- 收藏
- 关注
原创 Linux学习-目录索引
不积跬步,无以至千里。只有一点点的积累,才能有所作为。这是一种记录自己学习的方式,希望可以总结自己帮助到各位,如有错误,还请指正。 - Linux-初学总结(一些开发工具总结) -Linux:进程创建-等待-退出 -Linux:进程间通信-信号量 -Linux:信号...
2018-05-13 19:53:57 458
原创 c语言实现小游戏-扫雷
扫雷大家都玩过吧,没玩过的可以在自己电脑上玩一下,我实现在这个扫雷不像电脑上那种是直接用鼠标点,而是自己输入坐标来排雷。 头文件game.h#ifndef _GAME_H_#define _GAME_H_//这两句以及下面的#endif//_GAME_H_是为了防止头文件重复被多次编译#include<stdio.h>#include<windows.h>...
2018-02-12 12:26:42 409
原创 智能三子棋小游戏(简单+困难模式版)
在编写三子棋时最好采用图片中创建项目方式,将源文件和头文件分开创建以后头文件放在game.h中就可以在其他源文件直接调用game.h头文件就行game.h中放的代码如下:#ifndef _GAME_H_#define _GAME_H_#include<stdio.h>#include<windows.h>#include<time.h>#defin...
2017-11-30 01:49:28 410
原创 c中main()函数的解析
main()函数其实是有参数的,像下面一样int main(int argc, char *argv[ ], char *envp[ ] ){program-statements}有三个参数第一个参数:argc是个整型变量,表示命令行参数的个数(含第一个参数)。第二个参数:argv是个字符指针的数组,每个元素是一个字符指针,指向一个字符串。这
2017-11-12 22:45:10 671
原创 IP数据包的格式总结
- 版本:- 首部长度:- 区分服务:- 总长度:- 标识:- 标志:- 片偏移:- 生存时间:- 协议:- 首部校验和:- 源地址和目的地址:- 可选字段:- 填充- 版本:占4位,指IP协议版本。并且通信双方使用的版本必须一致,目前我们使用的是IPv4,IPv6也是一种版本,目前用的不多,以后会使用- 首部长度:占4位,表示的最大十进...
2018-07-24 15:30:03 7110
原创 HTTP协议
1.了解一下URL2.HTTP协议格式2.1: HTTP请求消息Request2.1.2:GET和POST的区别2.2:HTTP响应消息Response2.3:状态码2.4:HTTP常见的头部2.5:HTTP的请求方法1.了解一下URL概念:统一定位符URL:(Unifrom Resource Locator) 其实它就是我们所说的网址。 上面...
2018-07-08 18:40:09 287
原创 Linux:进程间关系和守护进程
更多学习资源尽在Linux学习总结1.进程组2.作业3.会话4.守护进程4.1:概念及作用4.2:查看守护进程4.3:创建守护进程4.3.1:setsid函数4.3.2:注意事项4.3.3:模拟是实现daemon函数的守护进程4.3.4:创建守护进程函数daemon 进程间关系分为进程组、作业、会话。1.进程组概念:进程组是一个...
2018-07-03 16:26:52 394
原创 STL简单序列式容器的使用(vector、list、stack、queue)
1:STL的起源2:STL历史3:vector容器的使用3.1:创建容器3.2:定义二维数组3.3:接口的使用3.3.1: resize()3.3.2:reserve()3.3.3:clear()3.3.4:assign()3.3.5:operator[]3.3.6:insert()3.3.7:erase()3.3.8:其它接口3.4:优缺点4:list容...
2018-06-19 20:51:00 737
原创 死锁的原理以及避免算法
Linux学习-目录索引1.死锁的定义2.死锁产生的原因2.1:竞争资源引起进程死锁2.2:可剥夺资源和不可剥夺资源2.3:竞争不可剥夺资源2.4:竞争临时资源2.5:进程推进顺序不当引起死锁3.死锁的产生必须满足一下特定的条件4.防止死锁的方法4.1.破坏资源互斥和不共享4.2.破坏请求和保持条件4.3.破坏资源不可剥夺性4.4.破坏循环等待条件5....
2018-06-11 15:41:28 8758
原创 Linux:查看调试多进程和多线程调试和查看
Linux学习-目录1.进程查看2.进程调试2.1:单进程调试2.1:多进程调试3.线程查看4.线程调试4.1:进入gdb调试中4.2:查看线程信息4.3:设置断点,并执行线程3的函数,指行完毕继续运行到断点处4.4:只运行当前线程4.5:所有线程同步执行1.进程查看eg:#include&amp;amp;amp;lt;stdio.h&amp;amp;amp;gt;#i...
2018-06-07 21:02:46 2725
原创 c++:智能指针
1、为什么要有智能指针?1.1、追溯历史1.2、auto_ptr2、RAII3、像指针一样4、深浅拷贝问题1、为什么要有智能指针? 因为在代码中经常忘记释放动态开辟的内存资源,造成内存泄漏,并且在操作时要小心谨慎,谨防内存泄漏。因此产生了智能指针来动态的管理指针所指向的动态资源释放1.1、追溯历史C++98中一开始的智能指针是auto_ptr,...
2018-05-28 17:53:41 278
原创 剑指offer-04-二维数组查找
更多题目请点这里《剑指offer》第二版:目录索引1、题目:2、分析:1、题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数2、分析:从题目可以看出数组的规律和杨氏矩阵一样,从左到右依次递增,从上到下依次递增,数组每一行最大元素都...
2018-05-24 16:47:15 252
原创 Linux:线程概念及基本操作
1、 线程的概念1.1、线程和进程的区别1.2、线程共享的资源1.3、线程独立的资源1.4、线程控制1.4.1、线程创建1:POSIX线程库2:函数格式1、创建线程2、获取线程id3、终止线程4、线程等待5、查看线程1.5、分离线程1、 线程的概念1、线程是进程内部的一个执行分支,线程量级很小。(所谓的内部就是在进程的地址空间内运...
2018-05-20 15:45:09 11005 1
原创 异常处理和捕获总结
1、为什么要使用异常处理?1.1、传统的异常处理方法2.1、异常处理2.1.1、异常处理机制的原理2.1.1、异常处理机制的语法结构2.1.2、异常的类型匹配规则1、为什么要使用异常处理? 健壮性是非常重要的软件质量属性,它是软件在异常情况下依然可以运行的能力,因此在错误即将发生前通过检测触发它的条件来阻止它,从而防止造成危害,是软件正常运行。...
2018-05-19 21:46:18 1324
原创 C++的模板理解
1、模板1.1、模板的概念1.2、模板的分类1.2.1、模板函数1.2.2、模板类2、非类型模板参数2.1、定义2.2、例子2.3、使用规则1、模板1.1、模板的概念模板就是生成一个通用的函数,这个函数可以接受任意数据类型的参数,可以返回任意类型的值。 模板是泛型编程的基础。所谓泛型编程就是编写与类型无关的逻辑代码,是一种强大...
2018-05-14 20:32:48 753
原创 Linux:信号
一、信号概念1.1、概念: 信号是linux系统为了响应某些状况而产生的事件,进程收到信号后采用相应的动作。 信号是异步事件,当信号到达,保存当前进程的执行环境,转去执行信号处理函数,当信号处理函数执行完毕,恢复现场,继续执行。1.2、哪些情况会引发信号?1.键盘事件 ctrl +c ,ctrl + \(以段错误方式退出)2.非法内存3.硬件故障4.从...
2018-05-10 18:30:51 223
原创 Linux:进程创建-等待-退出
1、进程的创建1.1:fork函数pid_t fork(void)返回值:父进程返回子进程id,子进程返回0,出错返回-1当进程调用fork时,内核中的fork都做下面的事情 &amp;gt;分配新的内存块和内核数据给子进程将父进程的部分数据结构拷贝到子进程中添加子进程到系统进程列表中fork返回,开始调度器调度eg:#include&amp;lt;stdio.h&amp;g...
2018-05-01 15:21:13 655
原创 对多态的缠缠绵绵
多态: 概念:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性 简单概括是:一个接口,多种结果。c++的多态性是通过虚函数实现的,虚函数是允许子类成员函数重写父类成员函数,当然父类成员函数前要加virtual关键字,子类可以不加,但是为了提高代码的清晰性,建议你最好加上。而子类重新定义父类成员函数的做法叫做覆盖(或者重写)。 只有重写了虚函数...
2018-04-23 21:24:18 201
原创 Linux:初学总结(一些开发工具总结)
开始linux学习时想必大多数人开始使用的文本编译器是Vim编译器,但是linux里可不止只有它一个编译器。来开始讲起:1.文本编译器介绍1.1:Vim文本编译器Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是自由的软件,具有特别丰富代码补全、编译及错误跳转等方便编程的功能,在程序员中被广泛使用,和Emacs并列成为类...
2018-04-08 21:00:44 360
原创 掰扯掰扯面向对象的类和默认成员函数
来先上车了解一下面向对象的概念吧:对于对于单身党来说对象这个词应该是可望而不可即的词吧,而面向对象更难。下面我们来掰扯掰扯面向对象。 面向对象:它的思想是把整个世界看成具有行为活动的各种对象的组成。比如,当你谈对象时,你是不是要了解人家的性格,爱好,年龄等特征啊。当你买水果时你是不是要看看水果的价格和新鲜程度,这些都是对象的特征,万事万物都是由对象组成的。
2018-03-28 17:17:00 227
原创 c++函数重载、缺省参数、命名空间的解析
1.c和c++的优缺点解析 c语言属于面向过程。优点是:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源。 缺点:没有面向对象易维护、易复用、易扩展 c++属于面向对象优点是:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护 缺点:性能比面向过程低 面向对象程序设计(...
2018-03-20 14:51:13 295
原创 海量数据处理问题分析
哈希切割top K问题给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址?将100G的log file 哈希切分成1000份,为什么不切成100份因为100份中不一定每个文件大小都是1G,有的文件可能要5,6个G的,因为有哈希冲突,可能某个文件哈希冲突多文件大小要10G左右了,因此哈希切分成1000份,每份100M这样最多...
2018-03-08 22:15:14 267
原创 堆的创建及应用-详细解释
堆(英语:heap)通常是一个可以被看做一棵树的数组对象。 堆总是满足下列性质:堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。 堆的定义如下:n个元素的序列{k1,k2,ki,…,kn}当且仅当满足下关系时,称之为堆。 (ki <= k2i,ki ...
2018-02-28 15:16:21 371
原创 二叉搜索树的删,查,插(递归&非递归)
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。如下图示: int a[] = { 5, 3, 4, 1, 7, 8, 2, 6, 0, 9 ...
2018-02-27 16:19:52 303
原创 实现一个函数,可以左旋字符串中的k个字符.ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB
实现一个函数,可以左旋字符串中的k个字符.ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB
2018-02-20 18:04:22 686 1
原创 杨氏矩阵中查找一个数-时间复杂度小于O(N)
杨氏矩阵 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N); 数组: 1 3 4 2 4 5 4 5 6
2018-02-19 16:09:46 374
原创 C语言深度解剖(第二章-符号读书笔记)
2.1 注释符号 c语言注释有两种:/…/和//, 其中:/…/编译器剔除注释代码时会将/…/变为空格。 特别注意:/…/这种注释不能嵌套,/总是与离它最近的/匹配2.2 连续符和转义符C语言里以反斜杠\表示断行。编译器会将反斜杠剔除掉,跟在反斜杠后面的字符自动接续到前一行。但是注意:反斜杠之后不能有空格,反斜杠的下一行之前也不能有空格。当然你可以测试一下加了空格之后的效果。有时候...
2018-02-14 20:59:21 206
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人