- 博客(80)
- 资源 (7)
- 收藏
- 关注
原创 查找数组中的众数
查找数组中出现次数最多的数示例一int most_(vector<int> arr) { int len = arr.size(); vector<int> tmp(len, 0); vector<int>::iterator it = arr.begin(); while (it != arr.end()) { tmp[*it++]++; }
2018-10-02 14:44:24 3254
原创 C++基类子类的析构函数
基类的析构函数不为虚函数class Base {public: Base(int a = 0) { cout << "Base default constructor" << endl; p = new int(a); } ~Base() { cout << &
2018-09-15 20:31:01 4957
原创 C++运算符重载
若对象内包含指针,将造成不良后果:指针的值被丢弃了,但指针指向的内容并未释放。指针的值被复制了,但指针所指内容并未复制。 因此,包含动态分配成员的类除提供拷贝构造函数外,还应该考虑重载”=”赋值操作符号。 Base & operator = (const Base &base);/*声明*/Base & Base::operator=(const B...
2018-09-15 20:09:27 215
原创 C++拷贝构造函数
默认构造函数 默认的构造函数存在一定的弊端,属于浅拷贝。比如指针的简单的指向一个变量。class Base {public: Base(int a = 0){ cout << "default constructor" << endl; p = new int(a); } ~Base(){ ...
2018-09-15 20:01:07 1952
转载 陌生但默默一统江湖的MurmurHash
看Jedis的主键分区哈希时,看到了名字很萌很陌陌的MurmurHash,谷歌一看才发现Redis,Memcached,Cassandra,HBase,Lucene都用它。关于Hash,我之前只知道MD5,SHA1,SHA256还有Java自己的h...
2018-09-12 00:16:07 5882
原创 Redis与mysql
MySQLMySQL是关系型数据库,是持久化存储的,查询检索的话,会涉及到磁盘IO操作,为了提高性能,可以使用缓存技术,而memcached就是内存数据库,数据存储在内存中(当然也可以进行持久化存储),可以用作缓存数据库。用户首先去memcached查询数据,如果未查询到(即缓存未命中),才去MySQL中查询数据,查询到的数据会更新到缓存数据库中,提供给下次可能进行的查询。提高了数据查询方面的...
2018-09-10 13:53:29 377
原创 对a变量进行定义
一个整型数int a;一个指向整型数的指针int *a;一个指向指针的指针,它指向的指针是一个整型数int **a;一个有10个整型数的数组int a[10];一个有10个指针的数组,该指针是指向一个整型数int *a[10];一个指向有10个整型数数组的指针int (*a)[10];一个指向函数的指针,该函数有一个整型参数并...
2018-09-08 20:05:30 658
原创 可查询最值的栈
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。示例class Solution {public: void push(int value) { stackData.push(value); if (stackMin.empty() || value < stackMin.top()) ...
2018-09-06 13:32:28 136
原创 字符串移位
对于一个字符串,请设计一个算法,将字符串的长度为len的前缀平移到字符串的最后。 给定一个字符串A和它的长度,同时给定len,请返回平移后的字符串。 测试样例: “ABCDE”,5,3 返回:”DEABC”示例class Prior {public: string findSmallest(vector&lt;string&gt; strs...
2018-09-06 13:27:49 778
原创 句子的逆序
对于一个字符串,请设计一个算法,只在字符串的单词间做逆序调整,也就是说,字符串由一些由空格分隔的部分组成,你需要将这些部分逆序。 给定一个原字符串A和他的长度,请返回逆序后的字符串。 测试样例: “dog loves pig”,13 返回:”pig loves dog”示例一class Reverse {public: string rev...
2018-08-27 13:58:48 326
原创 两串旋转
如果对于一个字符串A,将A的前面任意一部分挪到后边去形成的字符串称为A的旋转词。 比如A=”12345”,A的旋转词有”12345”,”23451”,”34512”,”45123”和”51234”。对于两个字符串A和B,请判断A和B是否互为旋转词。 给定两个字符串A和B及他们的长度lena,lenb,请返回一个bool值,代表他们是否互为旋转词。 测试样例: “cda...
2018-08-27 13:00:19 175
原创 拓扑结构相同子树
对于两棵彼此独立的二叉树A和B,请编写一个高效算法,检查A中是否存在一棵子树与B树的拓扑结构完全相同。给定两棵二叉树的头结点A和B,请返回一个bool值,代表A中是否存在一棵同构于B的子树。分析 利用二叉树的遍历先将二叉树的每个节点放在数组中。接着进行字符的匹配。示例struct TreeNode { int val; struct TreeNode ...
2018-08-26 15:56:25 522
原创 替换空格
请实现一个函数,把字符串中的每个空格替换成”%20”。如,输入”We are happy.”,则输出”We%20are%20happy.”。分析 先遍历一次字符串,统计出空格数。并算出替换后的字符串的总长度。每替换一个空格,字符串长度增加2。示例void ReplaceBlankSpace(char *str, int len){ if (nullpt...
2018-08-26 13:47:25 160
原创 二维数组中的查找
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。分析 选取数组中右上角的数字。 若该数字等于要查找的数字,则查找结束; 若该数字大于要查找的数字,则剔除这个数字所在的列; 若该数字小于要查找的数字,则剔除这个数字所在的行。 若选取数组中...
2018-08-26 11:47:42 146
原创 打印从1到最大的n位数
输入数字n,按顺序打印从1到最大的n位十进制数。比如输入3,则打印1、2、3一直到最大的3位数999class PrintMaxNumber {public: PrintMaxNumber(int i = 1) :n(i) {} void Print1ToMaxOfN();private: bool Increment(char *number); ...
2018-08-25 20:10:27 318
原创 C++string中substr
string substr(size_type _Off = 0,size_type _Count = npos) const;参数_Off:所需的子字符串的起始位置。字符串中第一个字符的索引为 0,默认值为0。 _Count:复制的字符数目。 返回值:一个子字符串,从其指定的位置开始。示例string str("helloworld");string strSu...
2018-08-25 11:14:18 10783
原创 栈的应用-数制转换
数制转换 根据栈的先进后出的特性,可以用栈来改变顺序。如将十进制数m转换为n进制的结果。 将m连续除以n,所得余数依次是n进制由低位到高位的值,但输出结果却要由高位到低位,因此,借助栈来改变顺序。/*进制转换*/void Conversion(int m, int n) { SequenceStack<int> S(5); int e; c...
2018-08-25 11:04:14 4791
原创 线性结构——栈
栈是先进后厨的线性表。即限定仅能在表的一端进行插入(入栈)或删除(出栈)操作的线性表。示例template<typename T>class AbstractStack{public: virtual void ClearStack() = 0; virtual bool StackEmpty() const = 0; virtua...
2018-08-23 08:59:04 261
原创 静态链表
静态链表存储于数组中,但其顺序不是按数组下标的顺序,而是像链表一样,由当前结点link域的值决定下一个结点的位置,这是链表的特性。由于存储于数组中,故称为静态链表。静态链表与单链表的区别 单链表的结点通过new产生,结点被限制在动态存储区内。因此,指示结点位置的指针类型是长整型。而静态链表的结点被限制在静态数组内。因此,指示结点位置的指针(link成员)是整型。 单链表中不...
2018-08-19 15:32:34 596
原创 单链表
单链表节点类型结构体#ifndef __LISTNODE_H__#define __LISTNODE_H__template<typename T> struct LNode{ T data; LNode<T> *next;};#endif单链表的类#ifndef __LINKLIST_H__#define __LI...
2018-08-19 14:50:36 169
原创 重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 在二叉树的前序序列中,第一个数字总是树的根节点值。在中序序列中,左子树的节点的值位于根节点的左边,右子树的节点的值位于根节点的右边。...
2018-08-17 15:26:40 119
原创 分布式事务
数据库事务的特性(ACID):原子性、一致性、隔离性和持久性。分布式事务 指会涉及到操作多个数据库的事务。即将对同一库事务扩大到对多个库的事务。目的是为了保证分布式系统中的数据一致性。分布式事务处理的关键是必须有一种方法知道事务在任何地方所做的所有动作,提交或回滚事务的决定必须产生统一结果。 在分布式系统中,各个节点之间在物理上相互独立,通过网络进行沟通和协调。因为事务...
2018-07-30 21:51:18 199
原创 快速排序
快速排序 对于C++,快速排序是实践中已知最快的泛型排序算法。它的平均运行时间是O(NlogN)。基本思想原理 若序列中有n个元素,将第一个数据作为支点,将它放在表中合适的位置。以支点为界,序列分成两部分。其中左边数据小于等于支点,右半部分数据大于等于支点。然后,对左右两部分分别进行递归处理,直至排好序为止。将支点放在表合适位置—划分算法 设两个指针,i和...
2018-07-29 18:44:03 205
原创 开闭原则案例
开闭原则 类的改动是通过增加代码进行的,不是修改源代码。案例class AbstractBankWorker {public: virtual void doSomething() = 0;};class saveBankWorker : public AbstractBankWorker {public: virtual void doSomethi...
2018-07-29 17:36:56 5313
转载 fastdfs 原理与过程
前言:(1)每次上传文件后都会返回一个地址,用户需要自己保存此地址。(2)为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个...
2018-07-29 16:33:31 1610
原创 C++常见面试题(二)
C++常见面试题(一)死锁的必要条件 互斥条件,请求和保持条件,不剥夺条件,环路等待条件。解决死锁的基本方法 预防死锁,避免死锁,检测死锁,解除死锁。程序在内存中的分布 text:只读,存代码和一些其他的东西; data:存初始化的全局变量和static变量,文字常量区,常量字符串。 bss:存未初始化的全局变量和statci变量。 堆:由低地址...
2018-07-28 20:05:49 245
原创 C++常见面试题(一)
结构体、类、共用体 结构体:把不同类型的数据组合成一个整体,自定义类型,默认为public; 类:将数据表示和操纵数据的方法组合成一个整洁的包,默认为private; 共用体:让不同类型的变量共用一段内存,只能同时存储其中一种类型。内存对齐 结构体或类的自身对齐值:其成员中自身对齐值最大的; 指定对齐值:#pragma pack(n),n=1,2,4,8,16改变...
2018-07-28 16:31:39 547
原创 抽象工厂模式---电脑主板架构案例
要求设计一个电脑主板架构,电脑包括(显卡,内存,CPU)3个固定的插口,显卡具有显示功能(display,功能实现只要打印出意义即可), 内存具有存储功能(storage),cpu具有计算功能(calculate)。 现有Intel厂商,nvidia厂商,Kingston厂商,均会生产以上三种硬件。 要求组装两台电脑, ...
2018-07-26 15:14:13 823
原创 单例模式----打印机
单例模式介绍#include <iostream>#include <string>using namespace std;class printer {public: static printer *getInstance() { return instance; } void print(string text) { cout <&l...
2018-07-26 14:31:55 1219
原创 单例模式
模式意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。要点 某个类只能有一个实例; 它必须自行创建这个实例; 它必须自行向整个系统提供这个实例。工作原理 用一个特殊方法来实例化所需的对象。 调用这个方法时,检查对象是否已经实例化。若已经实例化,该方法仅返回对该对象的一个引用。若未实力哈,该方法实例化该对象并返回对此新实例的一个引用。 为了...
2018-07-26 14:21:20 197
原创 抽象工厂模式
抽象工厂模式工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。此时,我们可以考虑将一些相关的产品组成一个“产品族”,由同一个工厂来统一生产。产品族与产品等级结构模式中的角色和职责抽象工厂(Abstract Factory)角色:它声明了一组用于创建...
2018-07-24 20:14:22 275
原创 工厂方法模式
模式中的角色和职责抽象工厂(Abstract Factory)角色:工厂方法模式的核心,任何工厂类都必须实现这个接口;工厂(Concrete Factory)角色:具体工厂类是抽象工厂的一个实现,负责实例化产品对象;抽象(Abstract Product)产品:工厂方法模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口;具体产品(Concrete Product)角...
2018-07-24 19:58:05 145
原创 简单工厂模式
简单工厂模式 简单工厂模式并不属于GoF的23种设计模式。例子: 假如存在一个水果类Fruit:该类有一个带参数的构造函数,用来初始化水果名称;还有一个获取水果名称的成员函数。 Fruit(string name) { this->name = name; if (name == "apple") { //代表苹果 } else i...
2018-07-24 15:56:19 197
原创 插入排序
插入排序概念void InsertSort(int *arr, int len) { for (int i = 1; i < len; i++) { int tmp = arr[i]; int j; for (j = i; j > 0 && tmp < arr[j - 1]; j--) { arr[j] = arr[j - 1]; ...
2018-07-23 09:27:03 135
原创 模糊处理
模糊原理 目的:给图像预处理时降低噪声 原理:卷积计算 通常这些卷积计算为线性操作,故又称线性滤波。 假设该图为6*6的图像像素点矩阵。 卷积过程:移动3*3的黄色窗口,从左至右,从上向下移动。黄色的每个像的像素点值之和取平均值赋值给中心红色像素作为卷积处理之后的像素值,每次移动一个像素格。均值模糊CV_EXPORTS_W void blur( InputAr...
2018-07-15 14:25:36 2281
原创 绘制形状和文字
绘制线CV_EXPORTS_W void line(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0); img:要绘制直线的图像; pt1:直线...
2018-07-12 16:37:43 216
原创 调整图像的亮度与对比度
理论 像素变换可看成点操作; 邻域操作可看成区域; 调整图像亮度和对比度属于像素变换--点操作 示例:#include <opencv2\opencv.hpp>#include <iostream>using namespace std;using namespace cv;int main(void) { Mat src, dst;...
2018-07-12 09:53:32 1149
原创 图像混合
void addWeighted(InputArray src1, double alpha, InputArray src2,double beta, double gamma, OutputArray dst, int dtype = -1);src1:输入图像Mat;alpha:输入图像src1的alpha值;src2:输入图像Mat;alpha:输入图像src2的alpha值;gamma:...
2018-07-11 17:22:42 154
原创 Mat对象
Mat对象 OpenCV2.0之后引进的图像数据结构、自动分配内存、不存在内存泄漏的问题,是面向对象的数据结构。分了两个部分:头部和数据部分。Mat常用构造函数 Mat () Mat (int rows, int cols, int type) Mat (Size size, int type) Mat (int rows, int cols, int type, con...
2018-07-11 16:59:42 349
原创 矩阵的掩膜操作
获取图像像素指针Mat.ptr<uchar>(int i=0) /*获取像素矩阵的指针,索引i表示第几行,从0开始计行数。*/const uchar* current = myImage.ptr<uchar>(row );/*获得当前行指针*/p(row, col) = current[col] /*获取当前像素点P(row, col)的像素值*/像素范围处理satu...
2018-07-11 16:46:10 1020
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人