- 博客(65)
- 收藏
- 关注
原创 观察者模式
1. 概念解析1.1 理解 Observer模式要解决的问题为:建立一个一(Subject)对多(Observer)的依赖关系,并且做到当“一”变化的时候,依赖这个“一”的多也能够同步改变。最常见的一个例子就是:对同一组数据进行统计分析时候,我们希望能够提供多种形式的表示(例如以表格进行统计显示、柱状图统计显示、百分比统计显示等)。这些表示都依赖于同一组数据,我们当然需要当数据改变的时候,所有的统计的显示都能够同时改变。Observer模式就是解决了这一个问题。1.2 类图2. 示例代码2.
2020-08-12 15:48:11 167 1
原创 代理模式
1.概念解析2.示例代码#include<string>#include<iostream>using namespace std;class Interface{public: virtual void Request() = 0;};class RealClass : public Interface{public: virtual vo...
2019-11-11 10:48:04 182
原创 装饰模式
1.概念解析2.示例代码#include<string>#include<iostream>using namespace std;class Person{public: Person(){ } Person(string strName) { _strName = strName; } virtual void show() { c...
2019-11-11 09:35:44 186
原创 策略模式
1.概念解析2.示例代码#include<bits/stdc++.h>using namespace std;class Operation{public: Operation():_numberA(0), _numberB(0){ } double GetNumberA() { return _numberA; } double SetNumberA...
2019-11-04 11:45:43 142
原创 简单工厂模式
1.概念解析2.示例代码#include<bits/stdc++.h>using namespace std;class Operation{public: Operation():_numberA(0), _numberB(0){ } double GetNumberA() { return _numberA; } double SetNumberA...
2019-11-04 09:08:13 118
原创 第一个windows应用程序
一、示例代码 和字符模式版本的程序一样,Windows对应的“Hello, world”程序包括了同样的组成部分,即include语句、程序入口、函数调用,以及return语句。#include<windows.h>int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, ...
2019-10-29 16:36:47 163
原创 C++11新特性
使用C++11实现起来会更加方便,而线上的生产环境还不支持C++11,于是决定新年开工后,在组内把C++11推广开来,整理以下文档,方便自己查阅,也方便同事快速上手。(对于异步编程十分实用的Future/Promise以及智能指针等,将不做整理介绍,组内使用的框架已经支持并广泛使用了,用的是自己公司参考boost实现的版本)1. nullptr2. 类型推导(auto)3. decltype...
2019-10-24 21:53:32 151
原创 快速查找一个数字是否出现在40亿个数字中
1.问题描述给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中2.解决方法这个问题在《编程珠玑》里有很好的描述,大家可以参考下面的思路,探讨一下:又因为2^32为40亿多,所以给定一个数可能在,也可能不在其中;这里我们把40亿个数中的每一个用32位的二进制来表示假设这40亿个数开始放在一个文件中。然后将这40亿个数分...
2019-10-24 21:47:46 719
原创 string类的简易实现(C++)
#include<bits/stdc++.h>using namespace std;class String{public: String():_size(0), _str(NULL){ } String(char *str); String(const String &des); String & operator=(const String &...
2019-10-21 10:59:54 212
原创 万万没想到之抓捕孔连顺
1.【题目描述】 我叫王大锤,是一名特工。我刚刚接到任务:在字节跳动大街进行埋伏,抓捕恐怖分子孔连顺。和我一起行动的还有另外两名特工,我提议我们在字节跳动大街的 N 个建筑中选定 3 个埋伏地点。为了相互照应,我们决定相距最远的两名特工间的距离不超过 D。 我特喵是个天才! 经过精密的计算,我们从 X 种可行的埋伏方案中选择了一种。这个方案万无一失,颤抖吧,孔连顺! …… 万万没想...
2019-08-29 16:27:36 361 1
原创 小Q的最小值序列
1.【题目描述】 小 Q 得到了一个长度为 n 的序列 A,A 中的数各不相同。对于 A 中的每一个数 Ai,求:min(1≤j<i)|Ai−Aj| 以及令上式取到最小值的 j(记为 P_i)。若最小值点不唯一,则选择使 Aj 较小的那个。输入描述:第一行一个整数 n,第二行 n 个数。输出描述: n-1 行,每行 2 个用空格隔开的整数。分别表示当 i 取 2~n 时,对应...
2019-08-28 18:03:23 669 1
原创 妞妞的问题
1.【题目描述】 妞妞公主新得到一块白色棋盘。这块棋盘共有n行m列,任意相邻的两个格子都是不同的颜色(黑或白),坐标位(1,1)的格子是白色的。 这一天牛牛来看妞妞公主时,牛牛公主正望着棋盘发呆。牛牛看妞妞公主闷闷不乐的样子,便对妞妞公主说:“只要你告诉我n和m,我能马上算出黑色方块的白色方块的数量。” “这太简单了。”妞妞公主想了一会,“我会在这n行m列中选择一个左下角坐标位(x0,...
2019-08-28 11:51:13 450 1
原创 两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 ->...
2019-08-17 15:22:30 178 1
原创 窗口点击问题
具体题目后边补充(网易雷火)#include<iostream>#include<vector>using namespace std;int defaultId = 1;typedef struct Win_property{ int X_pos; int Y_pos; int wide; int hight;}Win_property;...
2019-08-05 00:36:49 251 2
原创 Linux中的文件存储
1.Linux中的文件1.1 文件、文件描述符和文件表 Linux内核将一切视为文件,那么Linux的文件是什么呢?其既可以是事实上真正的物理文件,也可以是设备、管道,甚至还可以是一块内存。狭义的文件是指文件系统中的物理文件,而广义的文件是Linux管理的所有对象。这些广义的文件利用VFS机制,以文件系统的形式挂载在Linux内核中,对外提供一致的文件操作接口。VFS机制:https://...
2019-08-03 21:30:32 230 1
原创 内存管理
1. 内存分配方式 内存分配方式有三种:从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。从堆上分配,亦称动态内存分配。程序在运行的时候用...
2019-08-02 21:18:28 129 1
原创 命名规则
1. 共性规则标识符应当直观且可以拼读,可望文知意,不必进行“解码”。标识符最好采用英文单词或其组合,便于记忆和阅读。切忌使用汉语拼音来命名。程序中的英文单词一般不会太复杂,用词应当准确。例如不要把CurrentValue写成NowValue。标识符的长度应当符合“min-length && max-information”原则。几十年前老ANSI C 规定名字不准超过6个...
2019-08-01 14:28:00 216 1
原创 程序的版式
1. 头文件的作用 通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。 头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。2. ...
2019-08-01 13:36:52 129 1
原创 斐波那契数列及其优化
描述:求斐波那契数列的第n项。写一个函数,输入n,求斐波那契数列的第n项。 时间:2019-07-31 20:27 类名:fibonacci 斐波那契数列 又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, …F(n)=F(n-1)+F(n-2),即从第三项开始每一项都等...
2019-08-01 01:49:02 411 1
原创 用两个队列实现一个栈
描述:用两个栈实现一个队列。用两个队列实现栈,栈的声明如下,分别实现栈的push()函数和topAnddelete()函数,用来完成在栈的顶部插入和删除(返回栈顶值)的操作 时间:2019-07-31 20:27 类名:CStack分析 通过一系列的栈的压入和弹出操作来分析用队列模拟一个栈的过程,如图所示,我们先往栈内压入一个元素a。由于两个队列现在都是空,我们可以选择把a插入两...
2019-07-31 21:28:10 278 1
原创 用两个栈实现队列(尾插头删)
描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deletedHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。 时间:2019-07-31 16:20 类名:CQueue分析 入队列的操作就等同于栈stack1.push()操作。 栈stack1满并且栈stack2不为空时,队列满 出队列时首先要判断栈stack2是否为...
2019-07-31 20:24:33 270 1
原创 二叉树的下一个节点
描述:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。 注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 时间:2019-07-28 16:07 函数名:getNext分析 首先这道题给出的是中序遍历这个二叉树,那么就是左根右。我们在求一个结点的下一个结点,那么这个时候我们需要分情况讨论:1、如果该结点有右子树,则该结点的下一...
2019-07-31 18:13:49 117 1
原创 通过宏函数计算结构体成员偏移量
编译器在为结构体成员分配内存时,由于存在内存对齐机制,各个成员所占空间可能不是连续的,因而不能简单的通过成员类型所占的字长来推断其它成员或结构体对象的地址。 获得结构体成员偏移量的方法可以参照博客: https://blog.csdn.net/zhanshen2015/article/details/51500757现在主要以第二种方法(通过宏函数计算结构体成员偏移量)为例,做简单整...
2019-07-31 16:53:17 1240 1
原创 KMP算法详解
在文本编辑中,我们经常要在一段文本中某个特定的位置找出 某个特定的字符或模式。 由此,便产生了字符串的匹配问题。 首先,我们从简单的字符串匹配算法开始,再到KMP算法,由浅入深,教你从头到尾彻底理解KMP算法。...
2019-07-30 17:45:40 147 1
原创 Linux基础知识
1.ELF格式 Linux下二进制可执行程序的格式一般为ELF格式,使用命令readelf查看其ELF格式。Win9x和Win NT/2000/XP下的32位的可执行文件PE(Portable Executable:可移动的可执行文件)。 ELF文件的主要内容就是由各个section和symbol表组成。最熟悉的应该是text段、data段和bss段。text段为代码段,用于保存可执行指令...
2019-07-29 00:40:53 289 1
原创 线索化二叉树
在二叉树的结点上加上线索的二叉树称为线索二叉树,对二叉树以某种遍历方式(如先序、中序、后序或层次等)进行遍历,使其变为线索二叉树的过程称为对二叉树进行线索化。
2019-07-28 20:34:51 137 2
原创 重建二叉树
描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 时间:2019-07-28 13:30 函数名:printListFromTailToHead 在前序遍历的数组中依次查找根节点,记录...
2019-07-28 15:49:24 100 1
原创 MySQL事务
1.事务的引入 事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的。而整个单独单元作为一个不可分割的整体,如果单元中某条SQL语句一旦执行失败或产生错误,整个单元将会回滚。所有受到影响的数据将返回到事物开始以前的状态;如果单元中的所有SQL语句均执行成功,则事物被顺利执行。 MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,...
2019-07-26 21:15:03 134
原创 同步和异步、阻塞与非阻塞、阻塞和挂起、同步和互斥
同步和异步关注的是消息通信机制。阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态
2019-07-25 14:33:44 599 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人