摘要: 看过《算法导论》的人应该知道,动态规划中一个非常经典的例子就是LCS(Longest Common Length)最长公共子序列问题。下面我们来回顾一下LCS的概念。 假设有两个字符串,X=<A, B, C, B, D, A, B>,Y=<B, D, C, A, B, A>,那么它们的最长公共子序列为<B, C, B, A>,它的特点在于每个字符可以不连续。LCS问题在实际中也有非常多的应用,比如说用于论文查重等。 都说表达一个动态规划算法的精髓在于状态转移方程,那么我们就顺便回忆一下LCS的状态转移方程吧。如果用c[i, j]来表示序列Xi和Yi的LCS的 阅读全文
posted @ 2012-10-30 21:16 ErinFlyingFish 阅读(6106) 评论(1) 推荐(1) 编辑
摘要: 好久没有回来博客了,半年多了么。这半年多,技术提升的很慢,主要在忙毕业的事情了。现在又重新读研了,受刺激了,回来更博了。三年研究生,静下心来学习。也希望能够多跟同行们交流。 我不是一个爱到处跑的人,但是今年5月左右去了一趟广东,发现出门见识了大山大水,还能调节心情,真的不错。下面记录了一位22岁程序媛所去过的地方。 主要经历:江苏无锡:去江南大学征战两次(参加比赛),一次凯旋,第二次铩羽而归。真的很想再去一次,那里的天空很美。广东深圳:怎么说我也算是半个深圳人了,男友是深圳滴。大二暑期社会实践走访了腾讯、中兴、创维等企业,实践团队还去了欢乐谷玩。大四夏天公司旅游再回深圳,去... 阅读全文
posted @ 2012-10-11 09:31 ErinFlyingFish 阅读(671) 评论(2) 推荐(0) 编辑
摘要: openfire中通过ofgroup/ofgroupprop/ofgroupuser实现组织结构中的分组,通过ofroster/ofrostergroups实现好友关系中的分组。但是呢,我们做二次开发的时候,希望能够有自己的个人联系人及分组,它没有确认过程,也就是说,只要我愿意,我可以将任何组织结构中的用户添加到自己的任何联系人分组中。那么我们设计如下:两张表ofprivateuser/ofprivategroup,前者记录联系人信息,后者记录分组信息。ofprivateuser:userid(primary key)(用户id), groupid(primary key)(组id), pe. 阅读全文
posted @ 2012-03-06 17:20 ErinFlyingFish 阅读(6374) 评论(0) 推荐(0) 编辑
摘要: 原文链接:http://www.hechunchen.info/?p=54生活中的中介者非常常见,比如维护世界和平的联合国组织、房屋中介、出国中介。那么,设计模式中的中介者模式是怎么样的呢?我们openfire中的群组聊天就是a typical example。我们用一个简化的群组聊天模型来说明mediator(中介者)模式。 我们的考虑是这样的,我们在用户之间添加中介者——聊天室。这样的话,用户之间的耦合度就会降低,而且不需要相互引用。它们只需独立地跟中介者交互即可。 结构图如下: 下面贴上关键代码。 接口IChatroom.java:package mediator;public inte 阅读全文
posted @ 2012-01-02 18:06 ErinFlyingFish 阅读(4259) 评论(0) 推荐(0) 编辑
摘要: 原文链接:http://www.hechunchen.info/?p=17 最近看到Design Patterns的Chain of Responsibility(职责链模式),印象最深的一点是Client的请求会沿着一条链往后走。非常像Openfire里边处理客户端的packet的过程(也是有一条链存在的)。那么openfire到底有没有用到职责链模式呢? 我带着疑问,重温了一下openfire处理packet的过程。 可以看到StanzaHandler.process(Element doc)中,对于包的处理其实被分成了3条线。并不是我们预想中的只有“职责链”这1条链。在process函. 阅读全文
posted @ 2011-12-30 16:36 ErinFlyingFish 阅读(1551) 评论(0) 推荐(0) 编辑
摘要: 原文链接:http://www.hechunchen.info/?p=15 我们知道openfire插件开发主要有3种方式注册方式:1)IQHandler(IQ handlers respond to IQ packets with a particular element name and namespace),2)Interceptor(PacketInterceptor to receive all packets being send through the system and optionally reject them),3)Component(Components receiv 阅读全文
posted @ 2011-12-25 19:56 ErinFlyingFish 阅读(7197) 评论(0) 推荐(1) 编辑
摘要: 我们都知道,openfire的二次开发一般都是以插件形式组织的。openfire已有数据库及数据表。今天我们来讲,我们进行插件开发的时候,如何创建自己的数据表,添加到openfire原有的数据库中。1.写数据库创建的脚本。插件src目录下新建database文件夹,目录结构如下所示:在database目录下新建testPlugin_mysql.sql,内容如下:INSERT INTO ofVersion (name, version) VALUES ('testplugin', 0);CREATE TABLE messageHistory ( messageID BIGIN.. 阅读全文
posted @ 2011-12-12 17:13 ErinFlyingFish 阅读(5835) 评论(2) 推荐(1) 编辑
摘要: 你是否常常遇到没有校园网充值卡所以不能上网的情况呢?没关系,今天教你通过Ad hoc利用室友的网上网。前提是,你们俩都是笔记本电脑。那么,这是一种轻便的暂时性联网方式,因为它不需要用到其他任何辅助设备,只要两个笔记本就好了。让无线路由器什么的见鬼去吧!Ad-hoc跟一般的无线上网不同,它无需AP(Access Point,即接入点)。它是一种点对点的无线网络应用模式,只适用在2台(点对点!)网络连接设备之间。(其本质,也是一台计算机充当了虚拟的AP,这个听不懂没关系,会用就好。)今天这个解决方案的原型是大学宿舍上网,但是也非常适合于家庭无线局域网的组建,它使得一台计算机可以共享另外一台已经连接 阅读全文
posted @ 2011-08-17 00:59 ErinFlyingFish 阅读(2208) 评论(8) 推荐(0) 编辑
摘要: Problem DescriptionIn this problem, your task is to calculate SUM(n) = 1 + 2 + 3 + ... + n.InputThe input will consist of a series of integers n, one integer per lineOutputFor each case, output SUM(n) in one line, followed by a blank line. You may assume the result will be in the range of 32-bit sig 阅读全文
posted @ 2011-07-20 17:04 ErinFlyingFish 阅读(15103) 评论(4) 推荐(2) 编辑
摘要: 1 // OpenAndFilterAndPres.cpp : Defines the entry point for the console application. 2 // 3 4 #include "stdafx.h" 5 #include "pcap.h" 6 #include "remote-ext.h" 7 #include"stdlib.h" 8 9 /* 4 bytes IP address */ 10 typedef struct ip_address{ 11 u_char byte1; 12 阅读全文
posted @ 2011-07-10 20:39 ErinFlyingFish 阅读(5982) 评论(1) 推荐(0) 编辑