摘要: 由于同事强烈推荐,公司最近在考虑将一些小型项目从Spring+ibatis+webx(mvc框架)开发改为ruby on rails开发,所以就接触了ruby语言和rails这个框架,感觉这个框架很适合小型项目的开发,重null到一个连接数据库的拥有曾删改查的网站(当然没有ued,界面很简单),一分钟之内就可以搞定啊,速度那是相当快啊,有木有啊,呵呵如果做java web开发的就知道,有时候我们做的都是重复的劳动,从建立数据库开始然后写dao-bo-ao-web层,基本上都是重复的劳动,共性也很大,无非就是那些曾删改查,以前在学校就这样认为了,现在项目大了感觉更强了,感觉我们的时间都浪费在这. 阅读全文
posted @ 2011-05-22 22:23 Evanlee 阅读(891) 评论(1) 推荐(2) 编辑
摘要: 最近想自己做访问日志,而且想通过用户的IP获取用户的地址,网上搜了一下,好像都是用qq的库来搜索,自己试验了一下都不怎么准,又没有什么服务可以使用。于是自己想了一个办法,通过网站查询,然后获取返回的html,解析获取查询的地址,比如http://www.ip.cn这个网站就是通过ip查询地址的。代码很简单先查询获取网页public static String getResourcesByURL(String pageUrl,String encoding) throws Exception { URL requestURL = new URL(pageUrl); i... 阅读全文
posted @ 2013-02-01 13:04 Evanlee 阅读(411) 评论(0) 推荐(0) 编辑
摘要: MVC是现在用的很多的设计模式之一,他很好的将业务逻辑和展示分开,让重构变得简单了很多,但我发现很多人对MVC有误解V:view这个很好理解,就是展示数据用的,但对于M和C就不好理解了最初我以为M:model就是单纯的数据C:controller就是业务逻辑,但后来发现错了,model不是单纯的数据引用Struts2 in action中的解释,其实模型是应用程序的内部状态,这个状态由数据模型和业务逻辑共同组成,而Controller是决定请求映射到那个动作,从而返回模型,最后模型在view中展现就拿Struts来取例子,filterDispatcher就应该是控制器的角色,他决定你的请求触发 阅读全文
posted @ 2011-10-27 20:31 Evanlee 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 1.浏览器的请求方式 浏览器的请求方式有很多,最典型的就是get和post方式,但你是否知道其实还有几种方式,只是我们不经常用!options,head,put,delete,trace,至于为什么现在不经常用这些方式,我想是因为get和post就可以满足我们大多数的需求吧!2.get和post的区别这个问题似乎大家讨论了很久,而且面试题中也时常出现这类题,但他们的最大区别到底在哪里呢其实最主要的区别在于get 请求用于从服务器获取信息post请求用于改变服务器的状态当然还有其他的不同(1) get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在UR 阅读全文
posted @ 2011-06-06 19:26 Evanlee 阅读(1323) 评论(0) 推荐(0) 编辑
摘要: 因为在做的一个项目里用的是velocity,以前一直没用过,一直都是用的框架自带的标签,如struts2等,做了一段时间感觉差不多都一样的,无非就是if..else...,foreach等,但是网上说freemaker要强大的多,我也没用过,所以就没资格说那个好,但是用velocity有点让我不爽,velocity不能用索引访问数组,也就是访问数组不能用 list[i]这样访问,只能用foreach遍历整个数组,要控制访问的位置,就只能用velocity自带的关键字velocitycount来控制(我是这样解决的,不知道还有没有更好的办法),所以有点麻烦最近出现的一个错误更是让我抓狂,在就在页 阅读全文
posted @ 2011-05-22 20:39 Evanlee 阅读(10414) 评论(5) 推荐(0) 编辑
摘要: java中存储数据的几种区域1首先是Pcregister他存储的的线程运行的地址,每个线程会有一个2然后是栈他提供一个线程运行的场所,每一个线程都有一个栈,他存放局部变量,中间结果和返回值3堆他存放所有jvm的对象(其实不是所有,有时候对象也存放在栈上),每一个jvm只有一个堆4方法区他存放clss的相关信息,如常量池、字段和方法的数据、方法和构造器的代码你是否认为所有的基本类型都放在栈上,所有的对象都放在堆上?答案是否定的类是放在堆上的,而且类里面的基本类型还是放在堆上的,而基本类型的局部变量才是放在栈上的方法在执行的时候会有一个压栈的过程,每个压入的东西就做frame,他保存了方法执行时的 阅读全文
posted @ 2011-05-19 22:04 Evanlee 阅读(338) 评论(1) 推荐(0) 编辑
摘要: 最近在看java的中finalizer终结方法,也就是用来释放内存的,但这绝对和C++中的析构函数不相同C++中的析构函数是用来回收对象所占用的资源的方法,而在java中,当一个对象不可到达时(也就是重堆栈和静态存储区开始,由引用开始,寻找实体对象),垃圾回收器会释放该对象所相关联的存储空间,并不需要程序员的编码对于finalizer方法的使用,就只有一条建议--------------尽量不要使用effective java中有这几个结论1 不应该依赖终结方法来更新重要的持久状态如用finalizer方法释放数据库上的永久锁,而且finalizer方法是不一定会被调用的,只有到了内存满了系统 阅读全文
posted @ 2011-05-16 19:54 Evanlee 阅读(3604) 评论(0) 推荐(0) 编辑
摘要: 假如我们要创建一个对象,而对象有很多字段,一些是必须的,有一些是可选的,现在我们要根据不同的参数组合来写不同的构造函数。如我们要创建一个用户(user)类,他有必须的字段,id,userName,password还有可选的字段age,email,birthday我们要怎么创建这个类呢!首先我们想到得就是提供不同参数的构造函数! 1 import java.util.Date; 2 3 4 public class User { 5 private String id; 6 private String userName; 7 private String password; 8 private 阅读全文
posted @ 2011-05-12 19:28 Evanlee 阅读(430) 评论(0) 推荐(0) 编辑
摘要: package equals.tran;import java.util.HashSet;import java.util.Set;public class Example { public static void main(String[] args) { Point p = new Point(1, 2); Set<Point> set = new HashSet<Point>(); set.add(p); System.out.println(set.contains(new Point(1, 2))); p.setX(2); System.out.println 阅读全文
posted @ 2011-05-04 17:45 Evanlee 阅读(574) 评论(1) 推荐(0) 编辑