到现在为止,我们创建了一个叫MyFirstTestCase的项目,一个叫TCLOG-1的test case,还有三个函数。如果项目很简单,就几个Case,那这么写就够用了。可事实上呢?往往不可能。实际项目都很大,动辄需要…
ISP 接口隔离原则
Interface Segregation Principle 动机 当我们试图去设计软件应用时,我们要仔细思考如何去抽象一个包含多个子模块的模块。假设模块仅由一个类构成,我们可以用一个接口来实现系统的抽象。不过,假如我…
计算模型
性能测试 不同DSA性能有好坏优劣之分 To measure is to know. If you can not measure it, you can not improve it. —— Lord Kelvin 1…
如何将ORM框架封装为通用的BaseDao
最近开发的项目中需要使用到ORM框架,但是我并不想针对每一个具体业务写一个Dao,对于通用的CRUD功能,我想试着通过一个BaseDao解决问题,这里涉及到一个关键问题是:如何在编译时获取泛型的实际类型?后来通过抽象类解…
AtCoder Beginner Contest 100 完整解题报告
题目链接 https://beta.atcoder.jp/contests/abc100/tasks A题 #include <iostream> using namespace std; int main(…
封装变化----策略模式
考虑到下面这种情行: 一个动作冒险游戏:有不同的角色:弓箭手(Archer),战士(Warrior),有不同的武器:剑(Sword),匕首(Knife),弓(Bow)。。。 实现:每个角色能使用一种武器,并可以在游戏过程…
lintcode 寻找峰值
你给出一个整数数组(size为n),其具有以下特点: 相邻位置的数字是不同的 A[0] < A[1] 并且 A[n – 2] > A[n – 1] 假定P是峰值的位置则满足A[P] &…
用户思维,产品思维和工程思维
我们常常面临这样的尴尬,用户/客户说需要X功能,老板觉得特别简单让立马加上,产品经理经过调查,发现要添加X功能,必须要有实现Y功能,Z功能,否则没法用,技术评估了一下要实现X功能,Y功能,Z功,必须改动A模块,B模块,C…
来自Facebook算法比赛的题目(PieProgress)
HackerCup FacobookHackerCup是facebook下面的一个算法比赛,始于2011年,每年举办一届。来自世界各地的coder都能够参加该项比赛。在前两天,HackCup刚进行完Round1,Roun…
关于iOS网络基础
网络基本概念 概念 核心 服务器 URL和HTTP协议 URL HTTP协议 请求和响应 请求 响应 网络开发方案 NSURLConnection 加载HTML数据和错误处理 展示HTML数据和反序列化 NSURLSes…
缓存雪崩,缓存穿透,缓存预热,缓存热备都是什么鬼?
QQ用得起来越少了,现在就加入300+技术微信群,下方公众号回复”微信群”即可加入。 公众号:java技术栈,每日更新 缓存雪崩,缓存穿透,缓存预热,缓存热备是在做缓存设计或者缓存应用时经常遇到的…
最大堆应用: 堆排序 --- Java版
堆定义 生活中需要使用优先队列, 比如cpu调度算法,线程调度算法都需要把优先级高的任务装入一个优先队列PriorityQueue。这个需求是很频繁的。优先级队列其实就是最大最小堆,本文的堆都是二叉堆。 堆定义: 当一棵…