模板方法模式定义:
定义一个算法的骨架,而将步骤延迟到子类中。这种模式可以使得在不改变算法骨架(模板)的情况下修改每个步骤的具体实现
从功能上来看,这个模式跟生成器模式有些相像,只不过生成器模式定义了创建对象的过程,而模板方法模式定义了算法过程
.接口和抽象类
(1)接口是特殊的抽象类,接口中所有方法必须是抽象的,不能有具体实现;而抽象类中可以有实现的方法
(2)抽象类不一定包含抽象方法,有抽象方法的类一定是抽象类
(3)需要约束子类行为时用接口,既要约束子类行为,又要为其提供公共功能时用抽象类
模板方法模...
分类:
其他好文 时间:
2014-05-09 15:21:55
阅读次数:
324
1.什么泛型
泛型出现的真正意义在于,类型能在运行时指定类型参数。在没有泛型的时候很多算法相同但是传入类型不同的方法需要反复的出现在不同的类里面,增加了工作量,并且在维护过程中的代价也是非常的巨大,在这样的情况下如果方法能够在运行时指定类型那么就可以降低很多的工作量,所以“懒惰”的软件工程师设计出了可以获取类型参数的方法“泛型”。
利用泛型,可以在声明变量时创建用来处理特定类型的特殊数...
分类:
Web程序 时间:
2014-05-09 15:09:40
阅读次数:
379
翻转链表绝对是终点项目,应该掌握的,这道题要求的是翻转一个区间内的节点,做法其实很相似,只不过要注意判定开始是头的特殊情况,这样head要更新的,还有就是要把翻转之后的尾部下一个节点保存好,要么链表就断掉了。一趟就可以,遇到节点直接翻转,最后把整个翻转的链表再翻转一次,就实现了。
class Solution {
public:
ListNode *reverseBetween(List...
分类:
其他好文 时间:
2014-05-09 15:05:06
阅读次数:
225
递归实现当然太简单,也用不着为了ac走这种捷径吧。。非递归实现还挺有意思的。
树的非递归遍历一定要借助栈,相当于把原来编译器做的事情显式的写出来。对于中序遍历,先要访问最左下的节点,一定是进入循环后,不断的往左下走,走到不能走为止,这时候,可以从栈中弹出访问的节点,相当于“左根右”过程的“根”,然后应该怎么做呢?想一下中序遍历完根节点之后应该干嘛,对,是走到右子树中继续重复这个过程,但是有一点,...
分类:
其他好文 时间:
2014-05-09 14:57:08
阅读次数:
211
字符串的问题真是难,一般递归比较好写代码,一般地归还会超时,而且测试用例特别多。。
这道题刚拿到手时直接慌了,这情况也太多了,后来冷静下来想想,其实还是比较单纯的。一个ip地址,肯定是四个整数加三个点构成,四个整数要满足什么呢,0~255嘛,还有呢,就是这四个整数必须正好把原来的字符串给用完。一开始忽略掉的一类测试用类是前面有0但实际这个数不是零的情况。
用什么来穷举呢,或者说穷举的对象是什么...
分类:
其他好文 时间:
2014-05-09 14:54:11
阅读次数:
210
昨晚一朋友问了我道数学题:已知弧长l=156,弦长d=140,求半径R和夹角a。
我试了下,方程比较好列,但是求解的话就比较费劲了,心想要是用Matlab的话也就瞬间的事儿,可电脑没安装Matlab,然后想到Python的一个数学库scipy,研究下,是可以解决的。
方程如下:
· cos(a) = 1 - d^2 / (2*R^2)
· L = a * R...
分类:
编程语言 时间:
2014-05-09 14:42:43
阅读次数:
393
本人于去年十月份开始接收游戏元数据管理系统的开发,下面就把使用的技术总结一下:
由于元数据数据库比较多,链接频繁会影响效率,所以我们使用了facebook开源的Thrift,服务端使用C++,客户端链接使用python和php,由于我主要做php,下面是Thrift的php客户端入口文件:
<?php
#Thrift Lib Path Root
$GLOBALS['THRIFT_ROOT']=...
分类:
其他好文 时间:
2014-05-09 14:00:16
阅读次数:
332
最近在用tornado写一个基于Rest的WebService服务端,只提供后端服务,其他webserver应用通过URL,Rest的方式来访问。
我们在开发web应用的时候,难免会想到ORM的一些框架,比如java ee中常用的hibernate, ibatis以及python中的SQLAlchemy之类。使用ORM会在一定程度上加快我们的开发效率。...
分类:
数据库 时间:
2014-05-09 13:54:08
阅读次数:
755
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。
快速排序的优点:
(1)原址排序,空间复杂度较小。
(2)虽然最坏情况下(有序数组)...
分类:
其他好文 时间:
2014-05-09 13:50:58
阅读次数:
283
在上一篇中,使用scrapy修改源IP发送请求的最后我们提到由于hosts文件不支持正则,会导致我们的随机域名DNS查询失败。是用DNS服务器可以解决这个问题,下面是我用gevent写的小工具,很简单。我们只拦截匹配的A记录,然后发送DNS Response,如果不匹配,那么我们服务器就是一个DNS代理,转发请求。# -*- coding=utf-8 -*-
import struct
from...
分类:
编程语言 时间:
2014-05-09 13:49:34
阅读次数:
560