2013年9月13日

Java I/O编程思路

摘要: 我们在开发过程中不可避免遇到字符编码问题。遇到乱码问题的时候一定要保持清晰,网上很多关于字符编码集,这里我也就不介绍各种编码,这里我介绍自己编程中遇到字符编码问题时的思路。 乱码问题 无非就是 字节 与 字符 转换时出现问题。 下面一张图显示处理数据的过程: 上面过程中 最复杂的就是 编码 与 解码 两个过程,幸运的是 现在的高级语言都已经帮我们把整个步骤做了。 而 存储 与 读取这两个步骤之中我们最常见的就是 读取 问题,因为存储非常简单,而读取就要考虑到字符编码的问题了。 我们知道在C语言中读取文件最基本的方法是read(int fd, void *bu... 阅读全文

posted @ 2013-09-13 22:52 Arts&Crafts 阅读(275) 评论(0) 推荐(0) 编辑

SpEL快速入门

摘要: Spring表达式语言(简称SpEL)是一种鱼JSP2 EL功能类似的变道时语言,它可以在运行时查询和操作对象图。与JSP 2的EL相比,SpEL功能更加强大,它甚至支持方法的调用和基本字符串模板。 SpEL可以独立Spring容器使用——只是当初简单的表达式语言来使用;也可以在Annotation或XML配置中使用SpEL,这样可以充分利用SpEL简化Spring Bean的配置。 Spring的SpEL可以单独使用,可以使用SpEL对表达式计算,求值。SpEL主要提供如下两个重要的接口。 》ExpressionParser:该接口的实例负责解析一个SpEL表达式,返回一个Expr... 阅读全文

posted @ 2013-09-13 17:09 Arts&Crafts 阅读(1741) 评论(0) 推荐(1) 编辑

Spring ApplicationContext的事件机制

摘要: ApplicationContext的事件机制是观察者设计模式的实现,通过 ApplicationEvent 类和 ApplicationListener 接口,可以实现 ApplicationContext 的事件处理。如果容器中有一个 ApplicationListener Bean 每当 ApplicationContext 发布 ApplicationEvent时,ApplicationListener Bean将自动触发。 Spring的事件框架有如下两个重要成员。 》ApplicationEvent: 容器事件,必须由 ApplicationContext发布。 》App... 阅读全文

posted @ 2013-09-13 10:34 Arts&Crafts 阅读(7051) 评论(0) 推荐(1) 编辑

2013年9月12日

畅谈Spring设计哲学

摘要: 自己从学习编程开始到现在有一个习惯:一直喜欢把软件开发中的技术和思路放到实际生活中去类比考虑。自己平常也喜欢开一些关于软件哲学的书籍,事实证明这些书籍对自己的学习新技术很有很大的帮助。数学是一切学科的基础,也是一切学科的顶峰,如果有那个学科能超越这个顶峰,我认为是哲学。高中时候一直喜欢看奇幻类的小说,所有小说中的主人公最后都是要领悟"道"的,而这个"道"就是 “哲学”。只有领悟道 自己的 道 后才能创造出自己强大的武技。哲学 讲究的是 道 ,道 是 路 也就是方向的意思。我们只有确定方向了,才能有所成就。 “大道至简”一直是我信奉的一句话:大道理(指基本 阅读全文

posted @ 2013-09-12 22:49 Arts&Crafts 阅读(860) 评论(0) 推荐(0) 编辑

Spring ApplicationContext的国际化支持

摘要: ApplicationContext接口继承MessageSource接口,因此具备国际化功能。下面是MessageSource接口定义的三个国际化方法。 》String getMessage(String code, Object[] args, Locale loc) 》String getMessage(String code, Object[] args, String default, Locale loc) 》String getMessage(MessageSourceResolvable resolvable, Locale locale) ApplicationC... 阅读全文

posted @ 2013-09-12 19:39 Arts&Crafts 阅读(888) 评论(0) 推荐(0) 编辑

2013年9月10日

SQL中 WHERE与HAVING的区别

摘要: SQL语句中的Having子句与where子句之区别在说区别之前,得先介绍GROUP BY这个子句,而在说GROUP子句前,又得先说说“聚合函数”——SQL语言中一种特殊的函数。例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。如:SELECT SUM(population) FROM vv_t_bbc ; 这里的SUM作用在所有返回记录的population字段上,结果就是该查询只返回一个结果,即所有国家的总人口数。 而通过使用GROUP BY 子句,可以让SUM 和 COUNT 这些函数对属于一组的数据起作用。当你指定 GROU... 阅读全文

posted @ 2013-09-10 19:49 Arts&Crafts 阅读(359) 评论(0) 推荐(0) 编辑

Hibernate的查询语言之HQL(二)——Hibernate查询的from字句

摘要: from 是最简单的HQL语句,也是最基本的HQL语句。from 关键字后紧跟持久化类的类名。例如:1 from Person 表明从Person持久化类中取出全部的实例。 大部分时候,推荐位该Person的每个实例取一个别名。例如:1 from Person as p 上面的as是可选的,但为了增加可读性,建议保留。 from 后面还可以同时出现多个持久化类,此时将产生一个笛卡尔积或跨表连接,但实际上这种用法很少使用,因为通常我们可能需要使用跨表连接时,可以考虑使用隐士连接或者显示连接,而不是直接在from后紧跟多个表名。 关联和连接 当程序需要从多个数据表中取得数据时,... 阅读全文

posted @ 2013-09-10 19:28 Arts&Crafts 阅读(1720) 评论(0) 推荐(0) 编辑

初窥struts2(二)OGNL表达式

摘要: Struts2总结 Struts2完整的处理流程: 1 客户端发送请求,交给struts2控制器(StrutsPrepareAndExecuteFilter)。 2 Filter控制器进行请求过滤,如果是/actionName.action,/actionName(默认)两种格式请求,执行后给Action处理。 3 Filter控制器创建一个ValueStack对象,讲Action对象压入栈顶,将request,session,application等对象装入Context区域。 4 Filter控制器执行拦截器的前期处理(默认调用defaultStack拦截器栈)。 5 Filter控制执. 阅读全文

posted @ 2013-09-10 16:07 Arts&Crafts 阅读(452) 评论(1) 推荐(0) 编辑

Hibernate的查询语言之HQL(一)——快速入门

摘要: Hibernate提供异常强大的查询体系,使用Hibernat有多种查询方式可以选择:即可以使用Hibernate的HQL查询,也可以使用条件查询,甚至可以使用原生的SQL查询语句。不仅如此, Hibernate还提供了一种数据过滤功能,这些都用于筛选目标数据。 Hibernate是 Hibernate Query Language的缩写,HQL的语法很像SQL,但HQL是一种面向对象的查询语言。SQL的操作对象是数据表,列表数据库对象,而HQL的操作对象是类,实例,属性等。 HQL是完全面向对象查询语言,因此可以支持继承,多态等特性。 HQL查询依赖于Query类,每个Query实... 阅读全文

posted @ 2013-09-10 16:06 Arts&Crafts 阅读(526) 评论(0) 推荐(0) 编辑

2013年9月9日

Hibernate的批量处理

摘要: Hibernate完全以面向对象的方式操作数据库,当程序员以面向对象的方式操作持久化对象时,将自动转换为对数据的操作。例如我们Session的delete()方法,来删除持久化对象,Hibernate将负责删除对应的数据记录;当我们执行持久化对象的setter方法时,Hibernate将自动转换为底层的update语句,修改数据库的对应记录。 问题是:如果我们需要同时更新100000条记录,是不是要逐一加载100000条记录,然后依次调用setter方法——这样不仅繁琐,数据访问的性能也十分糟糕。为了面对这种批量处理的场景,Hibernate提供了批量处理的解决方案。下面分别从批量插入,... 阅读全文

posted @ 2013-09-09 21:10 Arts&Crafts 阅读(525) 评论(0) 推荐(0) 编辑

导航