自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux目录索引

linux:环境的简单配置linux:基本命令linux:进程linux:进程控制linux:进程替换linux:模拟实现shelllinux:进程间通信—-消息队列linux:进程间通信—–管道linux:进程间通信—-共享内存linux:进程间通信—-信号量...

2018-04-20 15:21:10 2936 3

原创 C++目录索引

c++:类和对象,默认成员函数c++:指针和引用c++:命名空间,缺省参数,重载c++:const&&内联函数&&友元函数&

2018-03-28 16:32:17 1023

原创 经典排序算法比较

排序基本概念排序:将一组杂乱无章的数据按一定的规律顺次排列起来。数据表( data list)::它是待排序数据对象的有限集合。排序码(key):通常数据对象有多个属性域,即多个数据成员组成,其中有一个属性域可用来区分对象,作为排序依据。该域即为排序码。每个数据表用哪个属性域作为排序码,要视具体的应用需要而定。排序算法分析1. 排序算法的稳定性如果在元素序列中有...

2018-03-12 17:06:57 342

原创 《 剑指offer》 目录索引

剑指offer—001(赋值运算符重载函数)剑指offer—003(找出数组中重复的数字)剑指offer—-004(二维数组中查找整数)剑指offer—-005 (字符串空格替换)剑指offer—006(从尾到头打印单链表)剑指offer—-007(重建二叉树)剑指offer—009(两个栈实现一个队列)剑指offer—010(斐波那契数列)...

2018-03-03 20:48:41 2377

原创 简易游戏----贪吃蛇

设计思路: 界面设置:采用system()函数来调整界面的大小,背景颜色 绘制地图:采用库函数获取坐标(下面具体介绍) 蛇的设计:采用链式结构实现蛇 食物设计:rand()随机产生食物坐标 蛇的移动:蛇移动实现采用链表相关操作,下面具体介绍 方向控制:采用GetAsyncKeyState()函数,通过键盘操作蛇移动的方向 蛇移动速度:采用Sleep()函数控制

2018-01-11 17:03:18 579 1

原创 注释转换

功能思想: 1)注释分为两种:c 语言注释和 c++ 注释 2)文本状态分为四种: 普通状态(即NULLSTATUS) C++状态(即CPPSTATUS) C 状态(即CSTATUS) EOF状态(即EOFSTATUS)3)四种状态关系图具体实现: 普通状态 —– C 状态(或C++ 状态) /* int i = 0; *

2017-12-07 18:48:19 346 1

原创 通讯录--文件存储

功能要求添加联系人信息 删除指定联系人信息 查找指定联系人信息 修改指定联系人信息 显示所有联系人信息 清空所有联系人 以名字排序所有联系人 实现思想采用多文件实现功能,避免程序混乱利用转移表(函数指针数组)减少代码量采用动态内存,节省了内存空间使用结构体保存通讯录信息使用I/O流的概念,并使用IO函数,完成通讯录的文件存储具体代码:contact.h#ifndef

2017-12-04 16:24:05 592

原创 浅析函数栈帧、变量的创建与销毁

函数调用过程 每一个函数调用都有一个过程,在此期间,为函数开辟栈空间、用于本次函数调用临时变量的保存、现场保护。 函数栈帧 函数调用过程中为函数开辟的栈空间称为函数栈帧。 通过一个例子来分析函数栈帧:#include<stdio.h>int Add(int x, int y){ int z = 0; z = x + y; return z;}int main(

2017-11-04 23:39:27 690

原创 c语言小游戏---扫雷

程序思想: 多文件实现扫雷基本功能: 1)test.c : 功能的测试,函数的调用; 2)game.h : 包含头文件的引用,函数的声明; 3)game.c : 各函数的功能的实现。 功能的具体思想: 1. 雷盘的初始化:注意实际雷盘的大小与展示雷盘的大小; 2. 雷盘的打印 :注意展示雷盘的大小; 3. 布置雷盘 :随机分布雷时,注意 srand 的使用;

2017-10-26 19:38:41 409

原创 求平均数的几种方法

平均数:给定两个数a和b,求其平均值;分析:数学运算中一贯的算法是(a+b)/2,但在c语言中这种算法存在着一定的缺陷,当a和b足够大时,a和b的和就会存在溢出,从而得不到我们想要的结果。c语言中有相应的操作符可达到求平均数的效果,例如:>>(右移),&按为与,^(按位异或)。1、存在缺陷的算法(a+b)/2  例:int main(){ int a=4,b=2; int r

2017-10-18 16:24:45 14707

转载 软件测试知识点汇总

转自:https://blog.csdn.net/LiuJiuXiaoShiTou/article/details/72808451软件测试是软件生存周期中必不可少的环节,软件的典型生存周期可以用下图来形容:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs

2018-10-04 17:40:45 10143

原创 Google Test源码浅析(三) -------- RUN_ALL_TESTS

一、例子引入:二、源码分析2.1 UnitTest::Run()2.2 UnitTestImpl::RunAllTests()一、例子引入:TEST(TestCaseName1, TestName1){ ...

2018-07-25 17:15:02 5639 1

原创 Google Test源码浅析(二) -------- TEST宏

一、TEST宏的定义一个例子:TEST(TestCaseName1, TestName1){ cout &lt;&lt; "hello1" &lt;&lt; endl; ...

2018-07-19 16:18:17 1117

原创 Google Test源码浅析(一) -------- 基本使用

目录:0. 引言1. TEST宏2. 参数化设计3. 预处理目录:0. 引言  Google Test是常用的一个开源测试框架,它的框架在测试过程中更加灵活,便捷,在后续演示实例的过程中会提到。源码可以参照https://github.com/google/googletest.git,本篇文章中介绍gtest的基本使用1. TEST宏...

2018-07-19 11:14:19 768

原创 windows下配置gtest及实例

1. 安装gtest2. 配置工程3. 进行单元测试1. 安装gtest     将gtest压缩文件下载放到指定位置,进行解压缩,可看到如下结果;安装源码:https://github.com/smarr/googletest2. 配置工程将gtest的头文件添加到工程 项目属性 ——— C/C++常规——–附加包含目录———编辑———添加头文件...

2018-07-10 16:40:19 8215 4

原创 TCP协议------三次握手&&四次挥手

前言一、三次握手1. 过程分析,如图:2. 三次握手的目的二、四次挥手1. 过程分析2. TIME_WAIT 状态 3. 解决 TIME_WAIT 状态引起的 bind失败的方法前言  TCP的他点有面向连接和可靠性等特点,其中面向连接体现在三次握手和四次挥手,今天来看一下三次握手和四次挥手   一、三次握手1. 过程分析,如图:...

2018-07-06 11:53:56 460

原创 HTTP协议

一、什么是HTTP二、HTTP之URL四、HTTP之urlencode和urldecode五、HTTP之请求消息Request六、HTTP之响应Response七、HTTP的状态码八、HTTP的方法九、实现一个简单的HTTP服务器一、什么是HTTP  HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,...

2018-06-30 20:21:06 542

原创 STL -------- 全排列算法非递归

全排列:  输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。思路: 全排列思想主要分为三部分: 1. 从右向左找出第一对右大于左的字符对 2. 从右向左找第一个大于左边字符大的字符,进行交换 3. 找出需要逆置的区间下面看一个例子:字符串为1...

2018-06-29 15:53:05 305 1

原创 Linux:进程间关系和守护进程

1. 进程间关系1.0 进程组1.1 作业1.2 会话2. 守护进程2.0 什么是守护进程2.1守护进程的特点2.2 守护进程存在的原因2.3 创建守护进程的几个重要部分4. 系统提供的daemon函数1. 进程间关系1.0 进程组 进程组是一个或多个进程的集合。 每个进程除了有一个进程ID之外,还属于一个进程组...

2018-06-27 20:11:25 379

原创 网络编程--------基于UDP的服务器--客户端socket实例

1. UDP协议的传输特点2. 客户端和服务器传输流程图3. 实现代码1. UDP协议的传输特点 不面向连接:udp传输时不需要建立连接,需指定我要跟谁进行数据传输 面向数据报:以数据包的形式进行传输 可靠传输:没有建立连接,那么在发数据和收数据时就有可能发生丢数据的情况 2. 客户端和服务器传输流程图3. 实现代码注:这...

2018-06-23 22:47:58 1183

原创 网络编程-------基于TCP协议的客户端--服务器socket实例

1. socket  socket指的是某一主机的 ip地址和端口号 2. socket常见API创建socket #include &amp;amp;lt;sys/types.h&amp;amp;gt; /* See NOTES */ #include &amp;amp;lt;sys/socket.h&amp;amp;gt; int socket(int domain, int type, int protoco...

2018-06-23 22:33:50 580

转载 STL------容器与迭代器

声明:1、本博文主要整理自《C++ Primer》和《STL源码剖析》这两本经典书籍。同时,也参考了网络中不少优秀博客,对这些博客的作者表示感谢。2、由于博主能力有限,对于一些容器的用法可能尚未进行深入研究。因此,本博文若有错误和不足之处,欢迎大家批评指正。3、本博文仅作学术交流只用,无任何其他用途。言归正传,下面开始介绍C++中的STL容...

2018-06-19 21:45:28 222

原创 STL------List与迭代器的实现

1. List  List是STL库(标准模板库)中的一个容器。它的实质上就是一个双向带头循环链表,这样的设计有以下几个优点:    随机插入数据时,不用遍历链表,去找某一特定位置 尾插时,只需head-&amp;gt;prev就可找到,提高了效率 在链表中删除数据时,也只需给出迭代器的位置即可,不需遍历链表找 到其前一个,或者采用替换删除的方法删除节点 2...

2018-06-19 21:41:00 803

原创 C++:强制类型转换

1. C语言中的几种强制类型转换  C语言的强制类型转换不做解释,直接上代码://c语言void TestC(){ int i = 1; double d = i;//相近类型的隐式类型转换(1) int* p = &amp;amp;amp;i; //int j = p;//不是相近类型,不支持隐式类型转换,一个指针,一个大小 int j = (int)p;/...

2018-06-16 15:41:02 287

原创 信号量--------多线程下的生产者消费者模型

1. 生产者消费者模型  从现实生活中的角度出发,对于这个模型,我们可以总结为3 2 1原则,即: 三种关系: 生产者与生产者:互斥关系,我生产的时候你不能生产 消费者与消费者:互斥关系,我消费的时候你不能消费 生产者与消费者:同步关系,我生产了你才能消费,我消费完了你才能生产 两个角色 生产者 消费者 一个中间媒介 生产出来的产品...

2018-06-16 11:03:50 983

原创 C++:智能指针及其实现原理

1. RAII思想定义一个类来封装资源的分配与释放,构造函数中完成资源的分配及初始化;析构函数中完成资源的清理,可以保证资源的正确初始化和释放如果对象是用声明的方式在栈上创建局部对象,那么RAII机制就会正常工作,当离开作用域对象会自动销毁而调用析构函数释放资源。2. 智能指针的特点具有 RAII的思想向指针一样,可以使其指向对象成员,并且重载了 * 和 -&amp;amp;gt; 运算...

2018-05-25 10:44:58 5426 1

原创 剑指offer----061(扑克牌的顺子)

题目描述  从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王可以看成任意数字。思路 首先扑克牌是由1~13组成的,在这里的顺子指的是5张牌是不是连续的,比如1,2,3,4,5就是连续的,因此我们可以将这五张牌进行排序,在去判断是否是连续的 其次大王小王可以代替任何一个数字,故此我们可以...

2018-05-23 23:58:32 259 1

原创 剑指offer ---- 063(股票的最大利润)

1. 题目描述  假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖交易该股票可能获得的利润是多少?例如一只股票在某些时间节点的价格为{9, 11, 8, 5,7, 12, 16, 14}。如果我们能在价格为5的时候买入并在价格为16时卖出,则能收获最大的利润11。2. 思路 首先,我们知道利润 = 收入 - 本金 其次,这里需要求最大利润,则可采取:价格最低时买...

2018-05-22 17:42:16 1028 1

原创 剑指offer ------065(不用加减乘除求两个数的加法)

题目描述:  写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷ 四则运算符号。思路: 在数学中,我们一直使用四则运算来进行求和等运算,那么在计算机中,我们可以使用位运算来进行四则运算 常用的有,左移(&amp;lt;&amp;lt;)代表乘2,右移(&amp;gt;&amp;gt;)代表除2 此题的解法为,将给定两个数进行异或,在使两个操作数进行按位异或,在左移1位当左移后的数为0时...

2018-05-21 22:12:10 269

原创 linux下的线程ID和进程ID

 在描述线程ID和进程ID之前我们先来分清楚几个概念:1. 用户级线程和内核级线程什么是用户级线程? 用户级线程内核的切换由用户态程序自己控制内核切换,不需要内核干涉,少了进出内核态的消耗,但不能很好的利用多核Cpu,目前Linux pthread大体是这么做的。什么是内核级线程? 切换由内核控制,当线程进行切换的时候,由用户态转化为内核态。切换完毕要从内核态返回用...

2018-05-21 19:44:58 6856

原创 线程的查看以及利用gdb调试多线程

1. 线程的查看首先创建两个线程:#include &amp;amp;amp;lt;stdio.h&amp;amp;amp;gt;#include &amp;amp;amp;lt;unistd.h&amp;amp;amp;gt;#include &amp;amp;amp;lt;pthread.h&amp;amp;amp;gt;#include &amp;amp;amp;lt;stdlib.h&amp;amp;amp;gt;#in

2018-05-20 15:56:47 96585 16

原创 linux:线程的创建、线程等待、线程终止、线程分离

1. 什么是线程  线程是进程执行内部的一个执行分支,在一个进程内部运行的多种执行流;内部本质上是多个线程在同一个地址空间运行;第一个pcb称之为主线程;有多个线程就有多个执行流;一个进程至少有一个线程2. 图解线程PCB1所代表的进程通过vfork创建一个子进程,子进程再vfork一个新的子进程,以此类推产生两个新的子进程;此时PCB1、PCB2、PCB3都指向同一块虚拟地址空间...

2018-05-18 17:20:31 13073

原创 C++:模板

1. 什么是模板? 1. 模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函 数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数 返回值取得任意类型。 2. 模板是一种对类型进行参数化的工具; 通常有两种形式:函数模板和类模板; 函数模板针对仅参数类型不同的函数; 类模板针对仅数据成员和成员函数类型不同的类。 2. 模板的好处  可...

2018-05-17 09:40:09 221

原创 C++异常捕获和处理

0. 写在前面  异常,让一个函数可以在发现自己无法处理的错误时抛出一个异常,希望它的调用者可以直接或者间接处理这个问题。而传统错误处理技术,检查到一个错误,返回退出码或者终止程序等等,此时我们只知道有错误,但不能更清楚的知道哪种错误,因此,使用异常,就把错误和处理分开来,由库函数抛出异常,由调用者捕获这个异常,调用者就可以知道程序函数库调用出现错误了,并去处理,而是否终止程序就把握在调用者手...

2018-05-14 16:13:32 32137 1

转载 Linux:信号(2):从内核看信号

想要有顺序地学习Linux,入口在这里哦:Linux:目录索引一、信号在内核中的表示1.信号在内核中的三种状态①抵达态②未决态③阻塞态(屏蔽态)④三中状态的对比2.三种状态在内核中的存储①使用结构体存储②结构体类型sigset_t③操作结构体sigset_t的函数3.s...

2018-05-12 19:08:28 538

转载 Linux:信号(1):signal函数、pause函数、alarm函数

原 Linux:信号(1):signal函数、pause函数、alarm函数 2018年05月09日 02:42:09 阅读数:93 ...

2018-05-12 19:03:08 2408 1

原创 进程间通信----信号量

更多linux知识点:linux目录索引1. 什么是信号量    信号量的本质是数据操作锁,它本身不具有数据交换的功能,而是通过控制其他的通信资源(文件,外部设备)来实现进程间通信,它本身只是一种外部资源的标识。信号量在此过程中负责数据操作的互斥、同步等功能。    个人理解: 信号量就是具有原子性的计数器,当使用了资源时,计数器就要减一,表示可用的资源就少了一个,当用完这个资源...

2018-05-06 15:10:09 424

原创 剑指offer-----021(调整数组顺序使奇数位于偶数前面)

更多题目:《 剑指offer》 目录索引题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。方法一: 利用左右指针,left和right。left指向数组首元素,right指向数组尾元素。 左指针从左往右找,找到偶数停止 右指针从右往左找,找到奇数停止 交换左右指针的元素 当左右...

2018-05-06 14:20:08 208

原创 进程间通信------共享内存

更多linux知识点:linux目录索引1. 什么是共享内存   共享内存(Shared Memory),指两个或多个进程共享一个给定的存储区。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访问同一段共享内存的任何其他进程。 ...

2018-05-04 21:35:43 804

原创 进程间通信------管道

更多linux知识:linux目录索引1.什么是管道  把一个进程连接到另一个进程的一个数据流称为一个“管道”,通常是用作把一个进程的输出通过管道连接到另一个进程的输入。管道本质上是内核的一块缓存例子:  在shell中输入命令:ls -l | grep string,我们知道ls命令(其实也是一个进程)会把当前目录中的文件都列出来,但是它不会直接输出,而是把本来要输出到屏...

2018-05-04 08:46:53 4749 2

空空如也

空空如也

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

TA关注的人

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