- 博客(28)
- 资源 (1)
- 收藏
- 关注
原创 设计模式之 原型模式(prototype)(C++实现 深拷贝 + 浅拷贝版本[bug])
本文介绍设计模式中的原型模式。本质上其实就是克隆。下面以个人简历很工作经历为例。深拷贝版本:#include #include #include using namespace std;templateclass ICloneable{public: virtual T* clone() = 0;};class CWorkExper
2016-03-31 23:34:39 2163
原创 设计模式之 创建者(Builder)模式(C++实现)
这篇文章介绍设计模式中 "创建型模式"的第三种 —— 创建者(Builder)模式。创建者模式将复杂对象的构造和表示相分离,同样的构建过程可以创建不同的表示。其强调创建产品的过程是有步骤的,有时候甚至可以强制指定构建次序。其中产品的不同表现形式是通过扩展 构造器 实现的。下面以汽车产品为例进行说明,比如汽车包括:汽车厂商 汽车引擎 汽车底盘 汽车轮胎。一
2016-03-31 22:52:39 549
原创 面向对象编程的原则
面向对象的原则 —— 高内聚 低耦合(最终目的)单一职责原则(SRP Single Responsibility Principle)类的职责单一 对外只提供一种功能开放封闭原则(OCP Open Close Principle)类的改动是通过增加代码进行的 而不是修改源代码依赖倒置原则(DIP Dependence Inversion Principle)依赖抽象
2016-03-31 01:56:17 650
原创 设计模式之 抽象工厂模式的扩展(C++实现)
上一篇主要介绍了抽象工厂模式。考虑下面一种应用场景:我们需要增加一个产品族,如何实现。当然可以考虑修改抽象工厂 增加相应的方法。但这违反了面向对象编程的原则——开放闭合原则。因此我们需要尽量去扩展 而不是修改。【对扩展开发 对修改闭合】下面给出汽车厂中增加卡车产品族的例子代码如下:#include #include #include
2016-03-31 01:53:21 553
原创 设计模式之 抽象工厂模式(C++实现)
这篇文章介绍设计模式中的 抽象工厂模式。目前为止介绍过 简单工厂模式 工厂方法模式。本文要介绍的抽象工厂模式可以看做是 多个工厂方法模式的组合。以汽车厂生产汽车为例进行说明。代码如下:#include #include #include using namespace std;class CCarBase{public: virtual
2016-03-30 23:05:16 398
原创 设计模式之 工厂方法模式(C++实现)
这篇文章介绍设计模式中的 工厂方法模式。前面两篇文章介绍了简单工厂模式的介绍和实现。本文同样以汽车厂生产汽车为例介绍工厂方法模式。代码如下:#include #include #include using namespace std;// Abstract Productclass CarBase{public: // 虚函数 实现多态
2016-03-30 23:03:17 375
原创 设计模式之 简单工厂模式(C++ 模板实现)
这篇文章在上一篇介绍简单工厂模式的实现基础之上,采用C++模板技术来克服上一篇中提到的缺点。同样以汽车厂生产汽车为例进行说明。代码如下:#include #include using namespace std;class CCarBase{public: virtual void printName() { cout << "汽车厂商:" <<
2016-03-30 23:01:33 1303
原创 设计模式之 简单工厂模式(C++实现)
这篇文章主要介绍 简单工厂模式 。下面是关于汽车厂生产汽车的一个典型案例。代码如下:#include #include #include using namespace std;// Abstract Productclass CarBase{public: // 虚函数 实现多态 virtual ~CarBase(){} virtual v
2016-03-30 22:59:13 365
原创 设计模式之单例模式 (模板 智能指针 删除器) 实现【饿汉】
上一篇实现的是使用模板 智能指针 删除器的懒汉模式单例。这一篇实现饿汉模式的版本。#include #include #include #include using namespace std;template class CEagerSingletonPtr{private: static T m_sg;private: CEagerSingleton
2016-03-29 16:39:48 683
原创 设计模式之单例模式 (模板 智能指针 删除器) 实现【懒汉】
上一篇关于单例模式的实现 主要是基于DCL。但是多线程环境下并不能保证完全线程安全。这篇文章实现的单例:懒汉模式 的单例基于模板和继承线程安全使用智能指针 防止内存泄露效率相对较高实现代码如下:#include #include #include #include using namespace std;template class
2016-03-29 15:05:27 1467
原创 Leetcode 57 Insert Interval
57. Insert IntervalMy SubmissionsQuestionEditorial SolutionTotal Accepted: 55165 Total Submissions: 234338 Difficulty: HardGiven a set of non-overlapping intervals, insert a
2016-03-28 20:43:36 474
原创 Leetcode 56 Merge Intervals
56. Merge IntervalsMy SubmissionsQuestionEditorial SolutionTotal Accepted: 63180 Total Submissions: 252043 Difficulty: HardGiven a collection of intervals, merge all overlapp
2016-03-28 18:50:10 451
原创 设计模式之 概览(设计模式是什么 设计模式分类)
一、设计模式是什么"设计模式描述了对象如何进行通信才能不牵涉相互的数据模型和方法。"通俗讲就是:解决类与类、对象与对象之间耦合性问题。二、设计模式的分类《Design Patterns: Elements of Resualbel Software》一书中将23种设计模式分为以下三类:1. 创建型模式(Creational)与对象创建有关 涉及对象实例化的方式 【共
2016-03-28 00:56:30 497
原创 win10 下使用VS2012 出现中文????的解决方案(仅限安装了visual assist插件)
--------------写点别的----------------恩,visual assist插件确实好用,但是前段时间它一直提示KEY KEY KEY网上找了好久的解决方案,然后重新安装好了~【目前来说很wonderful的解决方案如下:① 如果出现插件启动后提示需要KEY的 基本上你就要卸载 然后重新装了。但是。。。卸载不干净!!!然后重新装一个版本 还是没有用。所
2016-03-27 16:29:27 2572
原创 设计模式 之 单例模式 (C++ 懒汉经典实现 & DCL实现 & 饿汉经典实现)
顾名思义:单例模式,指的是仅有一个(类)实例。即:在应用程序的整个生命周期中,任何时刻,某个类(单例类)仅存在唯一一个实例。同时仅提供一个全局访问点。单例的实现一般要求满足:(1) 类构造函数私有(2) 提供一个全局访问点 一般是静态的共有方法一、单例的经典实现代码如下:class Singleton{public: // 全局访问点
2016-03-27 02:52:26 4092 2
原创 腾讯2016春招模拟笔试题 —— 编程题(3道)
写在前面的话~ 春招 + 模拟笔试 【C++研发】 模拟笔试时间是 2016-03-25 21:30 ~ 22:30 试题主要包括两部分:不定项选择 + 编程 分别及时 时间都是30分钟。(坑~。。 前面的不定项选择15道 大部分都是往年的题 所以我基本上15分钟就提交了。。。(然并卵~。。 编程
2016-03-26 20:57:36 6709
原创 Leetcode 338 Counting Bits
338. Counting BitsMy SubmissionsQuestionTotal Accepted: 6881 Total Submissions: 12500 Difficulty: MediumGiven a non negative integer number num. For every numbers i in the rang
2016-03-25 23:59:09 647
原创 HTTP 请求的各种方法及安全性
一道题:下列哪些http方法对于服务端和用户端一定是安全的?()GETHEADTRACEOPTIONSPOST答案:C这道题注意 服务端和客户端都要安全。GET / HEAD / OPTIONS方法 只从服务端获取资源 并不对服务器进行修改 因此相对安全。 对于客户端
2016-03-25 20:13:09 4375
原创 【运算符优先级问题(持续更新...)】
一道题:计算 2^1 0261答案: C---------------运算符优先级------------------从高到低依次是:取反 左移 按位与 按位异或 按位或
2016-03-25 18:49:24 394
原创 Leetcode 67 —— Add Binary
Total Accepted: 78879 Total Submissions: 291470 Difficulty: EasyGiven two binary strings, return their sum (also a binary string).For example,a = "11"b = "1"Return "100".Subs
2016-03-24 21:44:21 458
原创 Leetcode 29 —— Divide Two Integers
29. Divide Two IntegersMy SubmissionsQuestionTotal Accepted: 62780 Total Submissions: 403300 Difficulty: MediumDivide two integers without using multiplication, division and mo
2016-03-24 21:12:54 636
转载 【编程之美】1.11 NIM(1) —— 排石头的游戏
题目大意如下:N块石头排列成一行,每块石头对应一个编号。两个玩家依次取石头,每次取只能取任意一块或者相邻的两块。石头在游戏过程中不能移位,最后将剩下的石头一次取光的玩家获胜。问:该游戏是否存在必胜策略。拓展问题:1. 若最后取光石头的人输,又该如何应对?2. 两人轮流取,每次最少取一块,最多取K块,最后取走石头的人赢得游戏。如何应对?--
2016-03-24 15:15:15 785
原创 Leetcode 50 Pow(x, n) 两种方式求解
50. Pow(x, n)My SubmissionsQuestionTotal Accepted: 85668 Total Submissions: 307134 Difficulty: MediumImplement pow(x, n).Subscribe to see which companies asked th
2016-03-24 10:49:48 2212
转载 2.20 程序理解和时间分析
C++代码如下:#include #include #include using namespace std;int main(void){ vector rg; for (int i = 2; i < 32; ++i) { rg.push_back(i); } int hit = 0, hit1 = -1, hit2 = -1; for (__int64
2016-03-23 21:51:40 437
原创 关于图的一些日常
一、基础概念 2016-03-09 1. 强连通图和强连通分量 —— 搜索Tarjan算法时 强连通图:图G中任意两个顶点都强连通。 注:顶点强连通指的是两个顶点之间至少存在一条路径 强连通分量:非强连通图中的极大强连通子图
2016-03-09 10:04:12 292
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人