- 博客(28)
- 资源 (4)
- 收藏
- 关注
原创 结构型设计模式-享元模式
享元模式为运用共享技术有效的支持大量细粒度的对象。因为它可以通过共享大幅度地减少单个实例的数目,避免了大量非常相似类的开销。 享元模式是一个类别的多个对象共享这个类别的一个对象,而不是各自再实例化各自的对象。这样就达到了节省内存的目的。
2016-04-02 15:07:08
472
原创 结构型设计模式-外观模式
外观模式为子系统中的一组接口提供了同意的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 外观模式中,客户对各个具体的子系统是不了解的,所以对这些子系统进行了封装,对外只提供了用户所明白的单一而简单的接口,用户直接使用这个接口就可以完成操作,而不用去理睬具体的过程,而且子系统的变化不会影响到用户,这样就做到了信息隐蔽。 非常容易。
2016-04-02 14:33:19
346
原创 结构型设计模式-装饰模式
装饰模式动态地给一个对象添加一些额外的职责,就增加功能来说,它比生成子类更灵活。也可以这样说,装饰模式把复杂类中的核心职责和装饰功能区分开了,这样既简化了复杂类,有去除了相关类中重复的装饰逻辑。 装饰模式没有通过继承原有类来扩展功能,但却达到了一样的目的,而且比继承更加灵活,所以可以说装饰模式是继承关系的一种替代方案。
2016-04-02 14:07:54
359
原创 结构型设计模式-组合模式
什么是组合模式?组合模式挺简单的,就是把一些对象组装成一个树状结构。但是要求用户使用单一对象和使用组合对象要具有一致性。实现一个组合模式interface Composite { public void add(Composite cp); public void delete(Composite cp); public void each();
2016-04-02 13:24:27
294
原创 结构型设计模式-桥接模式
什么是桥接模式?桥接模式是可以将类的抽象部分与实现部分分离开来的一种设计模式,这使得程序支持了开闭原则,并且降低了耦合性。代码实现abstract class Abstraction { private Implementor impl; public Implementor getImpl() { return impl; }
2016-04-02 12:25:46
309
原创 结构型设计模式-适配器模式
什么是适配器模式?好比我们生活中电脑的插头都是三极的,而我们面前只有一个二极的插座是空闲的,这个时候我们就要弄一个适配器,目的是让我们的三极插头能从二极插座中获取电能。适配器模式就是这样一个适配器,一个类与一个不相通的接口(就是内部方法不同的意思),适配器可以令这个类与接口变得相通。适配器模式的分类这个分为:类适配器 与 对象适配器。实现一个类适配器interface Target {
2016-04-02 12:06:24
446
原创 程序员面试金典 2.7 集合栈
题目请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈。该数据结构应支持与普通栈相同的push和pop操作。
2016-02-27 11:40:35
278
原创 程序员面试金典 2.6 回文链表
请编写一个函数,检查链表是否为回文。 给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。
2016-02-27 11:33:02
402
原创 [我的PHP之旅] YII框架学习 03.连接数据库(使用ActiveRecord)
随意准备一个数据表CREATE TABLE `entry` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `value` VARCHAR(12) NULL DEFAULT NULL, PRIMARY KEY (`id`))COLLATE='utf8_general_ci'ENGINE=InnoDBAUTO_INCREMENT=12;配
2016-02-25 12:41:59
378
原创 程序员面试金典 2.5 链式A+B
题目有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。 给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。我的题解import java.util.*;/*public class ListNode { int val; ListNod
2016-02-24 15:30:31
408
原创 [我的PHP之旅] YII框架学习 02.控制器 视图 模型
用控制器写一个Hello World根据上一篇博文中的文件结构与Http请求的生命周期,我们知道每一个请求发给入口脚本再到应用主题,应用主体会创建一个控制器来处理这个应用,那么我们就写一个输出Hello World的控制器吧。namespace app\controllers;use yii\web\Controller;class MyController extends Controller {
2016-02-24 14:35:55
495
原创 [我的PHP之旅] YII框架学习 01.安装与配置
关于YII这是一款快速,安全,专业的 PHP 框架,自带了丰富的功能 ,包括 MVC,DAO/ActiveRecord,I18N/L10N,缓存,身份验证和基于角色的访问控制,脚手架,测试等,可显著缩短开发时间。 而且我个人觉得这个框架的源码架构比较友好,很适合去学习。安装与配置在YII FrameWork 中文社区中的“下载”选项卡可以下载源码。初学者推荐选择“Yii2的基本应用程序模板”,下载好
2016-02-24 10:43:51
357
原创 程序员面试金典 2.4 链表分割
题目编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。我的题解/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(
2016-02-23 17:31:48
311
原创 程序员面试金典 2.3 访问单个节点的删除
题目实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。 给定带删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true我的题解/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {}};*/class Rem
2016-02-23 16:45:46
309
原创 程序员面试金典 2.2 链表中倒数第k个结点
题目输入一个链表,输出该链表中倒数第k个结点。我的题解class Solution {public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { ListNode* fast = pListHead; ListNode* slow = pListHead; in
2016-02-22 13:45:40
286
原创 程序员面试金典 1.8 翻转子串
题目假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串。请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数。 给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成。字符串中字符为英文字母和空格,区分大小写,字符串长度小于等于1000。我的题解class ReverseEqual {public:
2016-02-22 13:27:42
369
原创 程序员面试金典 1.7 清除行列
题目请编写一个算法,若MxN矩阵中某个元素为0,则将其所在的行与列清零。 给定一个MxN的int[][]矩阵(C++中为vector>)mat和矩阵的阶数n,请返回完成操作后的int[][]矩阵(C++中为vector>),保证n小于等于300,矩阵中的元素为int范围内。我的题解vector<vector<int> > clearZero(vector<vector<int> > mat, in
2016-02-22 11:59:41
294
原创 程序员面试金典 1.6 像素翻转
题目有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于500,图像元素小于等于256。我的题解vector<vector<int> > transformImage(vector<vector<int> > mat, i
2016-02-21 14:18:41
366
原创 程序员面试金典 1.5 基本字符串压缩
题目利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。 给定一个string iniString为待压缩的串(长度小于等于3000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。我的题解string zipString(str
2016-02-21 13:05:26
308
原创 程序员面试金典 1.4 空格替换
题目请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。给定一个string iniString 为原始的串,以及串的长度 int len, 返回替换后的string。我的题解string replaceSpace(string iniString, int length
2016-02-21 12:37:22
334
原创 程序员面试金典 1.3 确定两串乱序同构
题目给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同。保证两串的长度都小于等于5000。我的题解class Same {public: bool checkSam(string st
2016-02-20 12:57:57
298
原创 程序员面试金典 1.2 原串翻转
题目请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。我的题解class Reverse {public: string reverseString(string iniString) { // wri
2016-02-20 12:45:42
324
原创 程序员面试金典 1.1 确定字符互异
题目请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。我的题解class Different {public:bool checkDifferent(string
2016-02-20 12:25:12
395
原创 [我的PHP之旅] 03. mysql数据库的安装
在centOS 7中并没有多少对mysql的有效描述。事实上,人家在centOS中已经正式更名为mariaBD。翻译一下或许叫“玛丽亚数据库”?也不知道有什么典故,据说性能变得更好了。look
2016-01-19 11:57:00
286
原创 [我的PHP之旅] 02. 在Linux上搭建Apache服务器
在建立了CentOS 7的linux环境之后,为了我们的PHP能够运行,我们还要安装Apache的linux版本以及mysql、php。其实如果只为了快速搭建环境呢,大家可以使用套件LAMP(Linux,Apache,Mysql,PHP)。但是为了锻炼嘛,我就不用套件了,我就自行拼装了。这一次我就安装Apache来试试看……应该会遇到很多问题的吧。我们就依旧是用yum来下载安装吧,如果光yum
2016-01-19 08:10:42
451
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人