自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

happen_zhang

只要平平安安.

  • 博客(63)
  • 资源 (1)
  • 收藏
  • 关注

原创 2013.12小记

12月快到月末了,想想11、12月没做什么总结,忙学习吗?没有做总结的学习算哪门子的学习呀?说来惭愧,不过这两个月学的东西想想还真多,最重要的一点可能就是明白了什么才叫真正的开源。大一就已经听过“开源”这个词了,但那时对编程还不太了解,大概地理解为“可以看到源码的程序”。如今我心中的开源不仅仅只是分享一些代码,分享一些经典的文章,分享一些外文翻译,它还是一种精神—创造价值,改变世界。文字是不足于描

2013-12-27 21:31:55 972

原创 [php]选择工厂和更新工厂模式

任何需要和数据库打交道的系统都需要使用Sql,但系统本身是由领域对象和业务规则而不是数据库组成的。这里介绍的选择工厂和更新工厂模式可以为树状的领域结构和表格式的数据库之间搭建一座桥梁。在将领域数据转换为数据库可以理解的格式时,我们需要进行解耦。        之前可以看到标记对象(IdentityObject)模式所带来的好处,它能更加动态地生成查询语句,因为各种查询条件组合的可能性非常多。

2013-11-26 19:03:25 1281

原创 [php]标记对象

在Mapper中查找一个对象(findById)或者查找所有相关的对象(findAll())很简单,但要查找符合特定条件的对象时就需要创建特定的SQL语句来实现查询了。        比如查找user表中score大于10,查找user表中age等于18的Sql语句:SELECT * FROM `user` WHERE score > 10;SELECT * FORM `user` WH

2013-11-23 18:00:29 1366

原创 [php]延迟加载和领域对象工厂

延迟加载        延迟加载是一个用于避免过多数据库查询的极为重要的机制,大部分web应用都需要注意对大量数据的操作和查询,所以延迟加载还是很有必要学习的。        在之前我们的建立的数据表和例子可以知道,每个Classroom对象可能包含多个Student对象,而每个Student对象又有可能和更多的Score类进行关联。那么,当从数据库中取出一个Classroom对象的时候,

2013-11-22 17:12:43 3092

原创 [android]模拟Http表单,实现本地文件(图片等)上传到服务器端

Android客服端可以用过模拟HTTP的Post方式提交表单的方式来上传本地图片到服务器端。       为了模拟Http提交表单,我们可以先来看看通过网页提交表单来请求服务器时,客户端提交了什么数据给服务端的(HTTP Header中都有什么内容)。       比如,提交的表单如下:        点击提交表单之后,我们可以利用抓包工具来查看客户端提交给服务器端的

2013-11-15 17:10:13 22808 6

原创 2013.10 小记

不想浪费大家时间,下面都是我想到什么写什么,没有任何有营养的文字。           都已经到了月末,很想写一点东西来释放心中的各种负面的情绪。静静地听着FM,想从那优美的字里行间撷取一点心理上的慰藉和共鸣,但我始终无法与那恬静安谧的意境想结合,再美好的文字,恐怕此刻带给我的都是那与现实生活无奈的巨大反差。我懒散地敲着键盘,时间一分一秒就在我不断来来回回按着回退键(Backspace

2013-11-01 10:15:29 1944

原创 [php]标记映射和工作单元

标记映射        系统中可能存在两个值相同,但又不是同一个引用的对象,这样的重复对象可能是从数据库中读出来的,这样就造成了不必要的查询。        标记映射是一个类ObjectWatcher,它负责管理进程中的领域对象,以保证进程中不出现重复对象。        标记映射可以防止重新读取数据库查询数据,只有当ObjectWatcher类中不存在标记映射对应的对象时才去查询数据

2013-10-23 23:13:55 1396

原创 [php]Collection和持久化工厂

Mapper类中的findById($id)可以从数据库中取出指定id的一条数据,映射成一个对象返回。很多时候我们需要返回一个数据集合(findAll),那我们就需要一种数据结构来保存这些数据,在需要时映射成对象。既然一条数据映射成一个对象,那么一个数据集合就需要一个对象集合。可以把数据集合和对象集合放在一个类中,这样就方便处理数据到对象的映射了。我们把这个类命名为Collection,为了能更好

2013-10-20 00:38:00 2134

原创 [php]领域模型和数据映射器

业务逻辑层使用的是领域模型,因为它能使用数据映射器中的大部分模式。        “万物皆对象”,领域模型就是对于项目中各种个体的抽象表达,就是一个类。它常常被描述为一组属性及附加的操作。它们是做某些相关事的某个东西。         领域模型的复杂性主要来自于尝试使模型纯粹(pure),即将领域模型从应用中其他层中分离出来。把领域模型的参与者从表现层分离出来不难,但将这些参与者从数据

2013-10-16 00:25:34 3093 1

原创 [php]应用控制器(二)

为了能更清晰地了解应用控制器总体实现的结构,代码中需要使用到的类都已经在之前实现了,现在只剩下的是核心的部分:AppController和Controller。namespace demo\controller;/** * Controller */class Controller { private $appHelper; private function __cons

2013-10-12 00:24:22 1618

原创 [php]应用控制器(一)

前端控制器已经能很好地在一个地方集中处理请求并选择适当的Command了,但是Command子类对象自己处理了视图的分配工作。要是能够使用一个类(根据Command处理后返回的状态值)来决定视图并返回到前端控制器,再由前端控制器来调用视图显示,这样的话前端控制器就处于视图层和业务层的中间了,而且也很好地把Command和视图分开了。应用控制器是个好的解决方案。        应用控制器负责映射

2013-10-11 00:21:26 2548

原创 [php]前端控制器

当一个请求达到系统时,系统必须能够理解请求中的需求是什么,然后调用适当的业务逻辑进行处理,最后返回相应结果。对于简单的程序,整个过程可以放在视图中,但随着系统的增长,这种处理方式不能很好地满足请求、调用业务逻辑和显示适当视图。那么我们就需要在较大的系统中较好地管理这三者的关系,我们可以划分出视图层与命令和控制层。        视图层与命令和控制层之间的界线通常比较模糊,又是也把这两个层称为表

2013-10-09 00:06:17 7048

原创 我是这么认为的

以下纯属个人的观点,由于见的世面少,理解和想法会有偏差,愿意接收批评,但不欢迎吐糟。        我时常在想,作为一位在校大学生,我们要去做有一些有挑战性的、有难度、能开发思维的一类东西,而不是整天拿着别人的东西像搭积木一样东拼西凑,调用调用接口,这样的活我相信只要学过编程的人基本都会。我觉得大学生应该做到的不仅仅是学会怎么用,更重要的是要知道为什么、如何去做。大学有太多的事物不知不觉地就禁

2013-10-07 00:53:02 1701

原创 [php]提供可全局访问的数据

PHP变量作用域:作用域通常用来描述代码结构中对象或者值的可见程度。PHP的变量作用域有三个级别,1)标准级别是指一个HTTP请求从开始到结束的周期。2)PHP内置了对会话变量Session的支持。在一次请求结束后,会话变量会被序列化并存储到文件系统或者数据库中,然后在下一个请求开始时取回。存放在cookie中的会话ID和通过查询字符串传递的会话ID被用于跟踪该会话的拥有者。3)在Java中有一个

2013-10-05 20:51:52 1216

原创 [php]架构模式回顾

一直想把以前学过的知识写到博客上,由于太懒,时间久了也就忘得差不多了。这次国庆回家有时间能写点了,也算是给自己复习吧。对于编码写业务,我更喜欢花时间在架构设计上。我在这里面学到了比较多的东西,遂作企业架构模式笔记以加深印象。        PHP是一种为Web开发而设计的语言,在PHP5之后,PHP不断完善对面向对象的支持而且也提供了新的特性,那么这样的话PHP就能像JAVA那样享受设

2013-10-03 20:44:11 1029

原创 LCP数组的实现和最长公共连续子串

LCP数组(Longest Common Prefix Array, 高度数组):是由后缀数组中相邻两个后缀的最长公共前缀的长度组成的数组。        假设字符串S, 后缀数组sa, LCP数组lcp, 那么有后缀S[sa[i]...]与S[sa[i + 1]...]的最长公共前缀的长度为lcp[i]。        lcp的计算: (后缀数组的实现)假设S[i...]与S[sa[ra

2013-09-29 21:24:21 4681

原创 后缀数组的实现和字符串匹配

字符串后缀:从字符串的某个位置开始到字符串末尾的子串。        后缀数组:指将某个字符串的所有后缀按照字典序排序后得到的数组,但数组并不直接保存后缀字符串,只保存对应的其实位置。         S[]="suffixarray"的后缀数组sa[]isa[i]S[sa[i]...]011'\0'(空串)16array

2013-09-28 20:25:36 2304

原创 对字符序列循环向左(右)移动的技巧

给出一个字符序列S,求对S向左(右)循环移动i后的字符序列。        比如:S = abcdefg, i = 3, 则操作完成后S = defgabc (向右同理哦)        技巧:假如S = abcdefg, i = 3, 那么可以进行如下操作:        1) 对S的前i个字符进行翻转, 对于上例,则可以得到 abc => cba        2) 对S中i以

2013-09-28 18:40:28 1977

原创 最大流 Ford-Fulkerson算法

最大流和割的关系:        定理一:如果f是网络中的一个流,CUT(S,T)是任意一个割,那么f的值等于正向割边的流量与负向割边的流量之差。        证明:        设X和Y是网络中的两个顶点集合,用f(X,Y)表示从X中的一个顶点指向Y的一个顶点的所有弧(弧尾在X中,弧头在Y中:XY)的流量和。        只需证明:f=f(S,T)-f(T,S) 即可。下

2013-09-27 20:20:56 1312

原创 分桶法和平方分割(对区间的操作)

分桶法:把一排物品或者平面分成桶,每个桶饭分别维护自己的内部信息,以达到高效计算的目的的方法。        平方分割:把一排n个元素中每√n个元素分在一个桶内进行维护的方法,使对区间操作的时间复杂度降为O(√n)。        类似线段树哦。        给定一个n个整数的数列a1, a2, a3, ..., an和m个三元组表示的查询。对于每个查询(i, j, k)输出

2013-09-25 22:21:24 2549 1

原创 摘给给自己

“一心逐鹿不顾兔”的人则往往容易成功,必要的时候完全可以破釜沉舟,孤注一掷,有得必有失,有时候冒险还是值得的。        我崇尚那些不断进取的灵魂,我羡慕那些走到成功地位的个体,我理解所有为生命的价值而不懈努力的精灵。通向成功的道路有很多,失败并不可怕,可怕的是没有一点色彩,没有一点张扬的人生。        童年时惟一的精神资源就是由自己漫无边际的幻想所创造出来的自己

2013-09-22 15:54:05 895

原创 二叉搜索树的实现

二叉搜索树的删除:       (1)、没有左孩子,直接把右孩子替代删除结点       (2)、有左孩子但左孩子没有右孩子,则把左孩子替代删除结点       (3)、其它,把左孩子的最大的结点替代删除结点       时间复杂度O(logn)#include #include struct node { node* left; node* right; in

2013-09-18 18:47:13 764

原创 Bellman-Ford最短路径和负圈判断

Ballman-Ford的最短路径算法是以边为单位进行的,而Dijkstra则是以顶点为单位进行的啦。        Ballman-Ford算法需要遍历所有|E|条边,最坏的情况下需要遍历|V - 1|*|E|条边,所以可以借助这个特点来判断图是否有负圈哦。        Ballman-Ford能够解决带有负圈的图。        时间复杂度为O(|E|*|V|)。#inc

2013-09-18 10:10:25 1593

原创 优先队列的实现

STL中有priority_queue可以实现优先队列。        下面的代码是小堆哦,是从小到大的顺序。#include #define MAX_N 2001int heap[MAX_N];int size;void push(int x) { int i = size++; int p; while (i > 0) { p = (i - 1) / 2;

2013-09-18 08:25:06 675

原创 hdu 1035 Robot Motion

hdu 1035 Robot Motion        深搜。#include #include #define MAX_N 11char map[MAX_N][MAX_N];int visited[MAX_N][MAX_N];int n, m;int sx, sy;int step, loopStep;bool dfs(int x, int

2013-09-15 17:14:05 795

原创 反复推进区间开头和末尾, 求解最小区间

给出一个n个整数的序列,求出最小的连续序列长度,使得ai + a(i+1) + ... + a(t)的和不小于S。 (1         比如:        输入 n = 10, S = 15, a = {5, 1, 3, 5, 10, 7, 4, 9, 2, 8}                       输入 n = 5,  S = 11, a = {1, 2, 3, 4, 5}

2013-09-15 16:56:38 842

原创 hdu 2571 命运

hdu 2571 命运        动态规划, dp[i][j] = max(dp[i - 1][j], dp[i][j - 1], dp[i][j / k])#include #define MAX 1005#define INF -0xffffff#define max(a, b) (a > b ? a : b) int dp[21][MAX];int m

2013-09-13 14:42:31 554

原创 hdu 1867 A + B for you again

hdu 1867 A + B for you again        题目没有说明输入一定是前一个字符串的后缀和后一个字符串匹配,所以需要进行两次kmp匹配,然后得出最大的匹配数。#include #include #define MAX 100005char strA[MAX], strB[MAX];int next[MAX];void getNext(char*

2013-09-13 10:36:16 727

原创 hdu 2594 Simpsons’ Hidden Talents

hdu 2594 Simpsons’ Hidden Talents        求第一个字符串StrA的前缀和第二个字符串strB的后缀的最大长度.        只要把strA当做模式串去匹配strB就可以啦, 不过还要注意被匹配串strB的长度哦。       例如 strA = 'abcabcabcabc', strB = 'abcabcabcabcabc' 答案却是 ab

2013-09-12 15:24:24 761

原创 hdu 1711 Number Sequence

hdu 1711 Number Sequence        kmp基础题.#include #define MAX 10005int n, m;int a[MAX*100], b[MAX];int next[MAX];void getNext(int* arr, int* next) { int j, k; j = 0; k = -1;

2013-09-12 14:15:53 637

原创 不断减少时间复杂度的一个例子

问题:给出N张写有数字(k1, k2, ..., kn)的牌 和 一个数字M, 从中抽4次(每抽完一次要放回), 判断是否存在抽取4次牌上数字的和为M的组合是否存在。                   1         输入:n = 3, m = 10, k = {1, 3, 5}        n = 3, m = 9, k = {1, 3 , 5}        输出:yes(

2013-09-11 09:39:33 2137

原创 hdu xxxx Peragrams

PeragramsTime Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)Total Submission(s) : 1   Accepted Submission(s) : 1Font: Times New Roman | Verdana | GeorgiaFo

2013-09-09 08:27:41 1248

原创 hdu 2952 Counting Sheep

hdu 2952 Counting Sheep        简单深搜.#include #include #define MAX 105int dir[4][2] = {-1, 0, 1, 0, 0, -1, 0, 1};char map[MAX][MAX];bool visited[MAX][MAX];int T;int n, m;void dfs(int x,

2013-09-08 13:54:47 714

原创 hdu 2717 Catch That Cow

hdu 2717 Catch That Cow        广搜.#include #include using namespace std;#define MAX 100005struct node { int pos; int step;};int n, k;bool visited[MAX];int bfs(int s) {

2013-09-08 12:47:58 694

原创 hdu 2095 find your present (2)

hdu 2095 find your present (2)        ^(异或)运算, 0 ^ a = a, a ^ b ^ b = a,  a ^ (偶数个)b = a, 那么 0 ^ a ^ a = 0咯.#include int main() { int n; int k, a; int i; while (scanf("%d", &n) != EO

2013-09-08 11:30:09 669

原创 hdu 1217 Arbitrage

hdu 1217 Arbitrage        题意:判断是否有一种货币通过和其它不同的货币的汇率进行兑换, 最后是否会多出原来的价值.比如: 1美元去兑换, 1*0.5*10.0*0.21 = 1.05.        Flody最短路径.#include #include #include using namespace std;#define MAX 35dou

2013-09-08 09:36:13 696

原创 hdu 2680 Choose the best route

hdu 2680 Choose the best route        反向建图, 然后计算终点到各点的最短路径.#include #include using namespace std;#define MAX 1001#define INF 0xffffffint map[MAX][MAX];bool visited[MAX];int lowco

2013-09-07 19:22:46 715

原创 hdu 1548 A strange lift

hdu 1548 A strange lift        广搜, 最短路径也可以做。#include #include using namespace std;#define MAX 205struct node { int floor, k; int step;};int n, a, b;node floors[MAX];bool

2013-09-07 19:17:49 659

原创 hdu 1385 Minimum Transport Cost

hdu 1385 Minimum Transport Cost        Floyd最短路径和按字典序存放最短路径.#include #define MAX 105#define INF 0xffffffint map[MAX][MAX];int tax[MAX];int path[MAX][MAX];int n;void floyd() {

2013-09-07 15:02:06 1221

原创 hdu 2112 HDU Today

hdu 2112 HDU Today        求最短路径。        题目是双向图哦, 终点起点一样的话要输出0哦。#include #include #include #include using namespace std;#define MAX 200#define INF 0xffffffint g[MAX][MAX];bool

2013-09-07 11:36:34 878

jsp商城(sql server2005)

jsp商城(sql server2005)

2014-04-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除