代码改变世界

随笔档案-2012年01月

Java工厂方法---Factory Method

2012-01-31 23:50 by myjava2, 197 阅读, 收藏,
摘要: 工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类工厂方法优点: 1.支持OCP原则,开闭原则,把创建产品的细节隐藏起来,对上层类的调用时透明的2.工厂方法可以带来一个灵活性,当产品发生改变的时候,它的工厂不需要修改,只需要添加就行了如上图所示:如果需要添加海信电视的时候,只需要添加一个海信工厂和一个海信电视类 而,如果使用简单工厂的话,需要修改电视工厂,违反了开闭原则:可以添加不可以修改,因为修改就要停止程序,并且需要再次调试,而添加不需要,并且不影响其他的类,修改了工厂类,就会影响其他的工厂方法的缺点: 1.只能创建单一系列的产品,如果添. 阅读全文

xStream完美转换XML、JSON

2012-01-31 10:40 by myjava2, 158 阅读, 收藏,
摘要: xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换; 前面有介绍过json-lib这个框架,在线博文:http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.html以及Jackson这个框架,在线博文:http://www.cnblogs.com/hoojo/archive/2011/04/22/2024628.html它们都完美支持JSON,但是对xml的支持还不是很好。一定程度上限制了对Java对象的描述,不能让xml完全体现到对Java对象 阅读全文

5000==5000 吗?

2012-01-27 20:30 by myjava2, 226 阅读, 收藏,
摘要: 春节的假期很快就过去了,大年初四踏上了回学校的旅途。今年春节实行网络订票和电话订票,但是自己感觉怎么买票不如以前好买了呢?这个问题很奇怪哈。晚上九点半多到达学校,我们有将近二十个提高班的人坐了同一趟车。那个气势,浩浩荡荡的,感觉提高班的规模真的是壮大了。第二天上午集体去第三合班开会,特别佩服米老师,总是每一堂课都讲的那么有声有色,就地取材,让每个人都体会深刻。这节课主要说了两个问题第一个是老师用自己回老家的一个经历,告诉我们农村现在还很贫困,只有教育才能改变命运。第二个说的是有很多人问这样一个问题,“我的某个同学初中毕业,现在在那里那里打工,一个月也挣五千,你现在上了这么长时间学,也挣五千,上 阅读全文

实用算法实现-第 27 篇 中国余数定理

2012-01-24 21:49 by myjava2, 329 阅读, 收藏,
摘要: 27.1 中国余数定理定理:对任意n > 1,如果gcd(a, n) = 1,则方程a • x ≡ 1(mod n)对模n有唯一解,否则方程无解。若方程有解,x可以表示为(a^-1) mod n,x可以由欧几里德算法的扩广形式求出。设n1, n2, ..., nk两两互质,n = n1• n2 • ... • nk定义:mi = n1• n2 • ... • ni-1 • ni+1 • ... • nk定义:ci = mi • (mi^-1 mod ni)定义:a ≡ (a1•c1 + a2• c2 + ...+ak•ck) (mod n)可以证明:a ≡ ai (mod ni)证明如下 阅读全文

实用算法实现-第 26 篇 模运算

2012-01-24 21:42 by myjava2, 322 阅读, 收藏,
摘要: 26.1 模运算的基本性质《算法导论》中提到,模加法和模乘法是两个有限可交换群。由于模运算的基本性质,故此可以对模乘运算进行分治。26.2 实例PKU JudgeOnline, 1811, Prime Test.PKU JudgeOnline, 3070, Fibonacci.本文章欢迎转载,请保留原始博客链接http://blog.csdn.net/fsdev/article待续... 阅读全文

实用算法实现-第 25 篇 最大公约数

2012-01-24 21:42 by myjava2, 189 阅读, 收藏,
摘要: 最大公约数有经典算法Euclid算法可以求出。而对于正整数a、b,若将它们的最大公约数表示为gcd(a, b),最小公倍数表示为lcm(a, b),那么有公式:a • b = gcd(a, b) • lcm(a, b)。由这个公式,可以求得两个数的最小公倍数。25.1 Euclid算法int Euclid(int a, intb) { /* 欧几里德算法 GCD递归定理: 对任意非负证书a和任意正整数b gcd(a, b) = gcd(b, a mod b) */ if(b == 0){ returna; }else{ returnEuc... 阅读全文

假期DRP学习记录

2012-01-20 15:41 by myjava2, 166 阅读, 收藏,
摘要: 年前的寒假马上就过去了,明天就回家过年了。虽然现在感觉过年的年味一点淡了。但是没有了年味,更重要的还是亲情味。回家能看到自己的父母。和家人一起团聚。真的是很温暖。假期里面一直再学习DRP的视频。这个视频是一个完整的DRP项目。现在看到了大约三分之二吧。边看边实现里面的代码。感觉这个项目能让自己学习很多java方面的东西。是一个java web开发的入门级视频。这里简单的梳理一下关于DRP中学要重点理解的知识点。将来对每一个知识点再细细整理。1:关于javascript的知识。由于上次web开发中没有来得及看js的视频,到了这次已经是第二次用这个技术了,js无疑是web开发中必须用到的技术。所以 阅读全文

Java 线程安全问题—synchronized锁机制

2012-01-16 16:19 by myjava2, 178 阅读, 收藏,
摘要: 一个采用了多线程技术的应用程序可以更好地利用系统资源。其主要优势在于充分利用了CPU的空闲时间片,可以用尽可能少的时间来对用户的要求做出响应,使得进程的整体运行效率得到较大提高,同时增强了应用程序的灵活性。更为重要的是,由于同一进程的所有线程是共享同一内存,所以不需要特殊的数据传送机制,不需要建立共享存储区或共享文件,从而使得不同任务之间的协调操作与运行、数据的交互、资源的分配等问题更加易于解决。 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 线程安全问题都是. 阅读全文

实用算法实现-第 24 篇 高精度整数运算

2012-01-15 23:24 by myjava2, 260 阅读, 收藏,
摘要: 24.1 高精度整数加法24.1.1实例PKU JudgeOnline, 1503, Integer Inquiry.24.1.2问题描述给定一组超长的正整数(100位),求出它们的和。24.1.3输入123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890024.1.4输出37037036703703703670370370367024.1.5分析写一个高精度的加法就可以了。这个题目的测试比较弱,或者说我曾经写的程序的错误很难通过这个题目的测试找出。因为在调试PKU J 阅读全文

实用算法实现-第 23 篇 最大流

2012-01-14 23:16 by myjava2, 366 阅读, 收藏,
摘要: 23.1 Ford-Fullkerson方法使用BFS来实现Ford-Fullkerson方法中的找增广路径的算法称为Edmods-Karp算法。Edmods-Karp算法是最短增广路算法,因为实用BFS找到的增广路径是所有可能的增广路径中最短的路径。它的复杂度是O(VE­­2­),其中V是结点数,E是有向边数。如果用使用DFS代替BFS,则Ford-Fullkerson方法退化成一般增广路算法。其复杂度是O(E| f* |)。其中f*是算法找出的最大流。23.2 最大流的Edmods-Karp算法 23.2.1实例PKU JudgeOnline, 1273, D 阅读全文

信息化 + 个性化再造学习生命力

2012-01-11 14:43 by myjava2, 183 阅读, 收藏,
摘要: 提高班的全名叫做:信息技术提高班。在很多人看来,第一眼看到这个名称首先会认为提高班里是提高信息技术的。没错,每个刚刚进入提高班的学生都是这样认为的。但是随着时间的深入。我们领会到了提高班的另一层意思,也是最重要的一层意思。那就是充分利用信息技术,提高我们自主学习的能力,再造我们的学习生命力。记得刚刚进入提高班的时候,提高班不讲编程,讲的是搜索引擎的使用。老师通过几个演示告诉我们搜索引擎的其它功能。我们第一次知道百度还可以定向搜索你需要格式的文件,可以做数据分析,可以做向全世界的网民提问……。提高班的全名叫做:信息技术提高班。在很多人看来,第一眼看到这个名称首先会认为提高班里是提高信息技术的。没 阅读全文

实用算法实践-第 22 篇 字符串匹配

2012-01-10 22:53 by myjava2, 139 阅读, 收藏,
摘要: 22.1 Knuth-Morris-Pratt算法22.1.1实例PKU JudgeOnline, 3461, Oulipo.22.1.2问题描述求字符串在另外一个字符串中出现了几次。22.1.3输入3BAPCBAPCAZAAZAZAZAVERDIAVERDXIVYERDIAN22.1.4输出13022.1.5分析标准的KMP算法解决的问题。将KMP的伪代码一翻译就出来了。22.1.6程序#include <iostream.h> #include <string.h> #include <stdlib.h> #include <stdio.h> 阅读全文

实用算法实现-第 21 篇 每对顶点间的最短路径

2012-01-09 22:28 by myjava2, 324 阅读, 收藏,
摘要: 21.1 每对顶点间最短路径与矩阵乘法 考虑矩阵乘法D*D,有:d’’(i, j) = ∑(d’ (i, k) * d’ (k, j)) 考虑有向图每对顶点间的距离邻接矩阵。w(i, j)为由i点都j点的路径距离。故此有矩阵W的i行向量为i到点集合{j, 1≤j≤n}的距离。而矩阵W的j列向量为点集合{i, 1≤i≤n}到j的距离。 要求最短路径,可以先考虑某一个点i到j的较短路径的求法。由i点到j点,可以通过点集合{k, 1≤k≤n}中任意一点作为中间结点。i通过这些中间点到达j的最短路径就是一条较短的路径。故此i到j的较短路径长度为: W’’(i, j) = min(w’ (i, k) + 阅读全文

Java单例模式实例---读取配置文件

2012-01-06 20:00 by myjava2, 753 阅读, 收藏,
摘要: 因为配置文件里的信息都是一样的,不论哪个用户要登录系统访问连接数据库,都是要读取配置文件的,这样每次如果都要实例化读取配置文件的类,这样就会非常浪费系统资源。因此使用单例模式:只要实例化一次之后,有了一个对象,之后就不再需要实例化了。 为了配置文件修改的方便将配置文件的信息单独放到一个xml文件中。 <?xml version="1.0" encoding="UTF-8"?><config><!-- 根元素配置文件 --> <db-info><!--配置文件的子元素(数据库信息) --> < 阅读全文

最近仔细研究了一下Java的NIO以及线程并发,搞清了点思路,特作笔记如下(NIO篇)

2012-01-06 18:19 by myjava2, 270 阅读, 收藏,
摘要: 因为前段时间的项目需要写一些高性能服务器,结果写出来的结果是五花八门,我们要求使用NIO编写异步服务器,但是竟然有人把NIO硬生生地写成同步的,还写成了一个单道批处理,线程调度、通信、同步操作,尤如天马行空,看不出一点架构,典型的面条代码,极度晕倒,不得不下定决心,将IO部分与线程调度部分隔离出来。 为此,狠下心来,仔细研究了一下nio机制和dl的util.concurrent包。一、NIO的出现NIO是JDK1.4里面才出现的东东,他给大家带来的最大好处是异步socket。其它file,pipe暂时就不多谈了。 在JDK1.4出现之前,如果你需要编写一个Java服务器,为了实现异步操作,你必 阅读全文

JAVA单例模式(Singleton)

2012-01-06 15:49 by myjava2, 238 阅读, 收藏,
摘要: 单例模式主要用于:有一些对象我们只需要一个,比如:线程池、缓存、对话框、处理偏好设置、注册表对象、日志对象以及配置文件对象、数据库连接对象等等。单例模式常用于管理共享资源,例如:数据库连接或者线程池。 Java Singleton模式就为我们提供了这样实现的可能。使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利Java垃圾回收(garbagecollection)。这些对象只能有一个实例,如果制造出多个实例,就会导致很多问题如:程序异常、资源使用过量等。 单例模式很像静态类,它自身有一个全局访问点但是又没有全局变量的缺点:如果将一个对象赋值给一个全局变量,那么你必. 阅读全文

Mysql Profiling的使用

2012-01-05 20:47 by myjava2, 184 阅读, 收藏,
摘要: profiling是个很好用的mysql性能分析工具,今儿就来试验下profiling的功能。感谢 有爱玫瑰的博文:mysql 的 sql 性能分析器主要用途是显示 sql 执行的整个过程中各项资源的使用情况。分析器可以更好的展示出不良 SQL 的性能问题所在。 下面我们举例介绍一下MySQL SQL Profiler的使用方法: 首先,开启 MySQL SQL Profilermysql> SELECT @@profiling; +-------------+ | @@profiling | +-------------+ | 0 | +------------... 阅读全文

xml语法规则(一)

2012-01-05 15:19 by myjava2, 315 阅读, 收藏,
摘要: 一.XML语法规则XML的文档和HTML的原代码类似,也是用标识来标识内容。创建XML文档必须遵守下列重要规则:规则1:必须有XML声明语句这一点我们在上一章学习时已经提到过。声明是XML文档的第一句,其格式如下:<?XMLversion="1.0"standalone="yes/no"encoding="UTF-8"?>声明的作用是告诉浏览器或者其它处理程序:这个文档是XML文档。声明语句中的version表示文档遵守的XML规范的版本;standalone表示文档是否附带DTD文件,如果有,参数为no;encoding 阅读全文

说话就是生产力

2012-01-03 00:56 by myjava2, 146 阅读, 收藏,
摘要: 这段时间里就感觉到自己总是说话不到位,理儿懂但是在表达的时候就是杂乱无章,没有头绪。很致命的一项不足啊,今儿在逛微博的时候看到了一个很好的节目:优米网的一个访谈节目优米职场,感觉挺不错的,在这里记录下来推荐给大家看看。网址是http://chuangye.umiwi.com/zls/在训练自己工作技能的同时也要把说话办事的能力给提升上去。我在路上…… 阅读全文

传智播客张孝祥老师病逝,表示哀悼啊!

2012-01-02 21:38 by myjava2, 243 阅读, 收藏,
摘要: 张老师一路走好! 阅读全文

java中的 this、super 和 final

2012-01-01 20:53 by myjava2, 478 阅读, 收藏,
摘要: 一、在Java中,this通常指当前对象,super则指父类的。当你想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象的某个成员,你便可以利用this来实现这个目的,当然,this的另一个用途是调用当前对象的另一个构造函数,这些马上就要讨论。如果你想引用父类的某种东西,则非super莫属。由于this与super有如此相似的一些特性和与生俱来的某种关系,所以我们在这一块儿来讨论,希望能帮助你区分和掌握它们两个。 最普遍的情况就是,在你的方法中的某个形参名与当前对象的某个成员有相同的名字,这时为了不至于混淆,你便需要明确使用this关键字来指明你要使用某个成员,使用方法是“this. 阅读全文

java static总结

2012-01-01 20:27 by myjava2, 262 阅读, 收藏,
摘要: static声明的有三种:1.静态变量,2,静态方法。3.静态类1.静态变量:静态变量相当于c中的全局变量按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。两者的区别是: 对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。 对于实例变量,每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响,非常灵活。 静态变量:所有此类实例... 阅读全文

2011年总结以及2012的展望

2012-01-01 01:00 by myjava2, 133 阅读, 收藏,
摘要: 2011年就要过去了,在这里做下总结以便自己以后回忆起来能知道这一年都做了什么:影响自己最大的一件事:参加了新浪网络学院的培训,让我知道自己要学什么,怎么去学!在这之前,自己处在一种自卑心理作祟的状态下,整天逼着自己去努力的赶紧的学习,想去赶上周围的同学们。恰恰就是因为这样,经常性的更换自己学习材料ssh(spring struts ibatis)、android我也学过一段时间呢,主要是想看看是不是感兴趣,后来也是放弃因为没有时间让你去学习那个东西。还有段时间就是重新学习ssh的知识,可是这过程中虽然收获到了很多知识,可总是感觉自己没有学到东西(感觉这些都是些工具的熟练应用,说白了学会了也最 阅读全文