自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STL仿函数

《STL源码剖析》中用单独的一张讲解来仿函数,仿函数主要应用在算法的实现里,用来实现一个算法的多种功能,比如sort函数,通过仿函数机制使得用户可以自定义排序规则。关于仿函数的讲解可以参考《STL源码剖析》一书,博客:https://blog.csdn.net/yzhang6_10/article/details/51297424也对书中内容做来一些总结笔记,下面贴上一段代码帮助理解:#inclu...

2018-03-29 17:13:36 241

原创 简单选择排序

简单选择排序的思想是:从0位置开始,min也初始化为0位置,依次找后边的元素中的最小值,用min记录下最小值的下标,然后将0位置和min位置元素交换,即完成第一次排序,依次重复这个过程。总言之,就是每次找到一个最小或最大的数放在数组的0、1、2、3、...、n-1位置...

2018-03-29 09:47:26 177

转载 C++ main函数中参数argc和argv含义及用法

argc 是 argument count的缩写,表示传入main函数的参数个数;argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的名称,并且包含了程序所在的完整路径,所以确切的说需要我们输入的main函数的参数个数应该是argc-1个;简单用法示例,新建工程键代码:[cpp] view plain copy#incl...

2018-03-20 19:42:13 397 1

原创 UDP简介

UDP介绍:用户数据报协议,属于传输层的协议,无连接,不保证传输的可靠性。对于来自应用层的数据包,直接加上UDP报头然后传送给IP。UDP头部中有一个校验和字段,可用于差错的检测,但是UDP是不提供差错纠正的。此外IPV4不强制这个校验和字段必须使用,但IPV6是强制要求使用的。UDP报头:其中,①源端口号如果不需要可以置0;②长度字段是UDP首部和UDP数据的总长度,这个字段是冗余的,因为IP中...

2018-03-20 19:09:43 16704

转载 MySQL事务、隔离级别

事务是访问并更新数据库中各种数据项的一个程序执行单元。在事务中的操作,要么都执行修改,要么都不执行,这就是事务的目的,也是事务模型区别于文件系统的重要特征之一。严格上来说,事务必须同时满足4个特性,即通常所说事务的ACID特性。虽然理论上定义了严格的事务要求,但是数据库厂商出于各种目的并没有严格满足事务的ACID标准。例如,对于MYSQL的NDB Cluster引擎,虽然支持事务,但是不满足D的要...

2018-03-15 16:24:45 231

原创 const用法总结

与const有关的用法以及由const引申出的相关内容包括:1、用const代替#define2、声明为static const类型的类中的数据成员何时为其赋初值3、const修饰指针*ptr4、const修饰STL中容器迭代器5、const修饰函数参数、返回值6、mutable7、类型强制转换:const_cast、static_cast、dynamic_cast、reinterpret_cas...

2018-03-14 14:59:04 255

转载 MySQL索引总结

Mysql索引介绍及常见索引的区别Mysql索引概念:说说Mysql索引,看到一个很少比如:索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不是越多越好,假如这本书1000页,有500也是目录,它当然效率低,目录是要占纸张的,而索引是要占磁盘空间的。Mysql索引主要有两种结构:B+Tree索引和Hash索引.Hash索引MySQL中,只有Memory(Memory表只存在内存中...

2018-03-12 19:30:08 104

原创 MySQL命令(持续更新ing..)

1、net start MySQL57 //启动MySQL服务2、net stop MySQL57 //关闭MySQL服务3、mysql -V; //输出版本信息4、mysql -uusername -p //登陆mysql mysql -uusername -ppassword promte 提示符(\h、\D、\d、\h、\n)注:上述username、password替换...

2018-03-12 15:54:14 140

原创 MySQL运算符和函数

按功能划分,MySQL运算符包括数值运算符、比较运算符等;MySQL函数包括字符函数、日期时间函数、数值运算函数、比较运算函数、信息函数、聚合函数、加密函数等。下面分别对以上运算符和函数进行介绍:1、字符函数:1)CONCAT() //字符连接eg. SELECT CONCAT('string1','string2','string3');2)CONCAT_WS() //使用指定的分隔符进行字符...

2018-03-12 15:52:35 247

原创 Windows下MySQL安装

1、在官网下载安装文件网址:https://dev.mysql.com/downloads/installer/2、双击运行安装文件,按提示即可,实在不放心可以参考以下连接参考网址:http://jingyan.baidu.com/article/7e440953d6f0702fc1e2ef61.html3、安装好后,可通过以下操作或命令查看MySQL是否安装成功1)查看计算机服务里是否有MySQ...

2018-03-12 15:49:21 92

原创 4、重建二叉树

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:1、前序遍历第一个元素1即为根节点;2、在中序遍历中找到1,1左边的元素属于根节点的左子树,右边的元素属于右子树;3、因此可以得到根节点的左子...

2018-03-11 21:25:05 88

原创 3、从尾到头打印链表

输入一个链表,从尾到头打印链表每个节点的值。思路:由于单链表是没有办法获取到其前面一个节点的,除非用额外空间来保存节点,此题从尾到头打印,使用栈结构,先遍历单链表,把节点值存入栈中,然后再利用栈的先进后出特性依次弹出栈顶值即可/***  struct ListNode {*        int val;*        struct ListNode *next;*        ListNod...

2018-03-11 21:15:10 112

原创 2、替换空格

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。从后往前循环class Solution {public: void replaceSpace(char *str,int length) {        if(str==NULL||length<0)            return...

2018-03-11 21:11:41 103

原创 1、二维数组中的查找

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution {public:    bool Find(int target, vector<vector<int> > array) {        bool found=false;  ...

2018-03-11 21:09:58 110

原创 线程/进程间同步

1、竞争条件两个或多个进程/线程读写某些共享数据时,结果取决于其CPU调度的运行次序,这种现象称为竞争条件2、互斥以某种手段确保当一个进程/线程在使用一个共享变量或文件时,其他进程/线程不能做同样的操作3、临界区把对共享内存进行访问的程序片段称为临界区,如果能使得两个进程/线程不同时处于临界区,就能够避免竞争条件4、几种互斥方案屏蔽中断、原子操作、锁、自旋锁、多元信号量(又名信号量)、二元信号量、...

2018-03-11 20:40:03 177

转载 最大子数组

原文链接:http://blog.csdn.net/marksenlan/article/details/54934466问题描述: 给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。样例: 给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6分析: 解决这个问题至少有4种方法算法1 穷举法我们穷举出所有的子数组,然后从这些子数组中...

2018-03-07 20:06:27 148

原创 归并排序

示意图归并排序使用分治的思想,先将问题分解为规模较小但类似于原问题的子问题,然后递归求解这些子问题,最后再合并这些子问题的解。定义待排序的数据结构:typedef struct{ int r[MAXSIZE + 1]; /* 用于存储要排序数组,r[0]用作哨兵或临时变量 */ int length; /* 用于记录顺序表的长度 */}SqList;首先我们的归并排序函数:void merge...

2018-03-07 19:43:22 92

原创 插入排序

描述:给定一个数组[12,15,9,20,6,31],通过插入排序算法输出排序后的数组插入排序好比玩纸牌一开始的抓牌过程,流程如上图所示,1、我们抓到第一张牌12,此时手上仅有一张牌;2、第二张牌15,由于15>12,放在12右边,不做处理;3、抓到牌9,因此从15所在的位置依次往回找,找到每个大于9的元素,依次右移;4、把9放入正确的插入位置代码:void insertSort(vecto...

2018-03-07 18:59:45 116

原创 B树、B+树

B树:节点、节点间的有序性、主要是针对磁盘存取操作所有叶节点必须在同一层1、2-3树一种特殊的B树,2节点、3节点、又名3阶B树,节点要么包含0个元素、要么包含满的元素,如3节点要么0个要么2个。2、2-3-4树一种特殊的B树,2节点、3节点、4节点,又名4阶B树,节点性质同上3、B树(又名m阶B树)2,…,m节点当数据量很多,不能全部装入内存,而只能保存在磁盘之类的辅存中时,由于计算机访问辅存很...

2018-03-04 17:01:38 299

原创 进程间通信IPC

管道、FIFO(有名管道)、消息队列、信号量、信号、共享内存、套接字1)管道/无名管道Int pipe(int fd[2]);返回值:成功返回0,失败返回-1,由fd[]返回两个文件描述符:fd[0]为读端、fd[1]为写端,fd[1]的输出是fd[0]的输入管道是一种半双工通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用,若需要双向的可以在两个进程间建立两个方向相反的管道管道只能在...

2018-03-04 16:53:05 146

转载 红黑树

参考博客:http://www.cnblogs.com/skywang12345/p/3245399.html红黑树:一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。通过对任何一条从根到叶子的简单路径上各个结点的颜色进行约束,红黑树确保没有一条路径会比其他路径长出2倍,因而是近似于平衡的(有性质5保证)。树中每个结点包含5个属性:color、key、left、...

2018-03-04 11:16:03 928

原创 哈希表/散列表

Hash table:1、哈希表是一种用于以常数平均时间进行插入和查找的数据结构,不支持排序以及需要依靠排序来实现的操作2、哈希表的主要思想是通过散列函数将关键字映射到数组的某个下标位置,进而来实现常数时间的查找3、由于散列函数可能将不同的关键字映射到同一个位置,这种情况被称为冲突4、哈希表主要面临两个问题:散列函数的选择和冲突的解决5、为了散列均匀,保存元素的数组的长度为质数质数就是除了1和它本...

2018-03-02 21:01:20 328

原创 简单工厂模式——C++实现

如下图所示,简单工厂模式(以计算器为例):1:新建一个抽象类,将getResult方法封装为纯虚函数;2、由上述抽象类派生出各个实际计算操作的类(加、减、乘、除...);3、在一个新的类里面用静态函数来产生实际操作的对象,这个类即为工厂类;4、客户端(使用者)调用工厂类,通过加、减、乘等具体需要的操作来产生相应的对象,进而调用对应的操作:比如通过传入‘+’字符给工厂类的createOperator...

2018-03-01 21:40:47 288

原创 观察者模式——C++实现

定义:    观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个通知对象。当这个通知对象状态发生改变时,会告知它的所有观察者对象自动更新,进而做出相应的反映。举个例子:    在一个班级里,自习课的时候我们偷偷看小说,这时候又很害怕老师突然来了,于是我们总是让坐窗户边没有看小说也没看书的班长替我们看着,老师来了就通知我们这些看小说的同学。然后我们就赶紧收起小说,假装在认真学习的样...

2018-03-01 21:35:01 337

空空如也

空空如也

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

TA关注的人

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