博文
iBATIS的多对多映射配置方法之三(转)(2012-09-19 15:05:00)
摘要:
iBATIS的多对多映射配置7,测试
package com.lsm.test;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.lsm.domain.Student;
import com.lsm.domain.Teacher;
public class Many2Many
{
private static SqlMapClient sqlMapClient = null;
static
{
try
{
Reader reader&nbs......
iBATIS的多对多映射配置方法之二(转)(2012-09-19 15:05:00)
摘要:
iBATIS的多对多映射配置6,sqlmap配置文件
Teacher.xml
﹤?xml version="1.0" encoding="UTF-8" ?﹥
!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd"﹥
﹤sqlMap namespace="teacher"﹥
﹤typeAlias alias="Teacher" type="com.lsm.domain.Teacher" /﹥
﹤typeAlias alias="Student" type="com.lsm.domain.Student" /﹥
﹤resultMap class="Teacher" id="teacherBasicResultMap"﹥
﹤result property="id" column="id"/﹥
﹤result property="name" column="name"/﹥
﹤result pr......
iBATIS的多对多映射配置方法(转)(2012-09-19 15:04:00)
摘要:
iBATIS的多对多映射配置方法和多对一映射配置方法差不多,不同的是,多对多映射,数据库设计上需要一个记录两个类关系的中间表,本文以学生-老师为例,在iBATIS的sqlmap中配置多对多关系。
iBATIS的多对多映射配置1,建表。数据库中三个表,分别为:
CREATE TABLE [student] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[birthday] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
CONSTRAINT [PK_student] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
) ON [PRIMARY]
GO
--------------------------------------------------
CREATE TABLE [teacher] (
[id] ......
DIV CSS 网页兼容全搞定 (IE6 IE7 IE8 IE9 火狐 谷歌)转(2012-09-13 17:10:00)
摘要:
转自 http://www.php100.com/html/webkaifa/DIV_CSS/2012/0908/11019.html
CSS兼容常用技巧
请尽量用xhtml格式写代码,而且DOCTYPE影响 CSS 处理,作为W3C标准,一定要加DOCTYPE声明。
1.div的垂直居中问题
vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行 http://www.php100.com
2. margin加倍的问题
设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。解决方案是在这个div里面加上display:inline;
例如:
<#div id=”imfloat”>
相应的css为
#imfloat{
float:left;
margin:5px;
display:inline;}
3.浮动ie产生的双倍距离
#box{ float:left; width:100px; margin:0 0 0 100px; //这种情况之下IE会产生200px的距离 display:inline; //使浮动忽略}
这里细说一下block与inline两个元素:block元素的特点是,总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline元素的特点是,和其他元素在同一行上,不可控制(内嵌元素);
#box{ display:block; //可以为内嵌元素模拟为块元素 display:inline; //实现......
瘦身JS、CSS文件(2012-09-13 15:36:00)
摘要:
WEB项目难免需要编写客户端JS程序,整个项目下来会发现JS程序非常大,整个项目显得很臃肿。为了在线加载速度快非常有必要给JS以及CSS文件瘦瘦身。最近网上有介绍 yuicompressor工具。该工具使用方式如下:
1、下载 yuicompressor-2.4.7.jar ,官方网站地址:http://yui.zenfs.com/releases/yuicompressor/yuicompressor-2.4.7.zip
2、安装JDK以及配置JRE/JAVA_HOME/PATH/CLASSPATH
3、使用命令:
//压缩JS
java -jar yuicompressor-2.4.7.jar --type js --charset utf-8 -v src.js > packed.js
//压缩CSS
java -jar yuicompressor-2.4.7.jar --type cs......
Ibatis 字段做动态绑定时出现找不到栏位(2012-09-06 15:06:00)
摘要:
iBatis会自动缓存每条查询语句的列名映射,对于动态查询字段或分页查询等queryForPage, queryForList ,
就可能产生“列名无效”、rs.getObject(object)异常错误
解决办法:
在SQL语句上加一个属性(remapResults)配置让每次执行都重新映射列名。
注:仅在可能被queryForPage()和queryForList()都调用、或者动态字段的SQL语句上加此属性。(以牺牲性能为代价,损耗很小很小)。
如下所示:
<select id="queryPartyRole" parameterClass="long" resultClass="java.util.HashMap" remapResults="true">
</select>
......
正则表达式2(转转)(2012-08-16 16:51:00)
摘要:
3.3 HTML处理实例二
下面我们来看看另一个处理HTML的例子。这一次,我们假定Web服务器从widgets.acme.com移到了newserver.acme.com。现在你要修改一些页面中的链接:
执行这个搜索的正则表达式如图十三所示:
图十三:匹配修改前的链接
如果能够匹配这个正则表达式,你可以用下面的内容替换图十三的链接:
......
正则表达式1(转转)(2012-08-16 16:51:00)
摘要:
在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包。
可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式。正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式-替换方面富有弹性。在Unix世界里,正则表达式几乎没有什么限制,可肯定的是,它应用非常之广泛。
正则表达式的引擎已被许多普通的Unix工具所实现,包括grep,awk,vi和Emacs等。此外,许多使用比较广泛的脚本语言也支持正则表达式,比如Python,Tcl,JavaScript,以及最著名的Perl。
我很早以前就是个Perl方面的黑客,如果你和我一样话,你也会非常依赖你手边的这些强大的text-munging工具。近几年来,像其他程序开发者一样,我也越来越关注Java的开发。
Java作为一种开发语言,有许多值得推荐的地方,但是它一直以来没有自带对正则表达式的支持。直到最近,借助于第三方的类库,Java开始支持正则表达式,但这些第三方的类库都不一致、兼容性差,而且维护代码起来很糟糕。这个缺点,对我选择Java作为首要的开发工具来说,一直是个巨大的顾虑之处。
你可以想象,当我知道Sun的Java JDK 1.40版本包含了java.util.regex(一个完全开放、自带的正则表达式包)时,是多么的高兴!很搞笑的说,我花好些时间去挖掘这个被隐藏起来的宝石。我非常惊奇的是,Java这样的一个很大改进(自带了java.util.regex包)为什么不多公开一点呢?!
最近,Java双脚都跳进了正则表达式的世界。java.util.regex包在支持正则表达也有它的过人之处,另外Java也提供详细的相关说明文档。使得朦朦胧胧的regex神秘景象也慢慢被拨开。有一些正则表达式的构成(可能最显著的是,在于糅合了字符类库)在Perl都找不到。
在regex包中,包括了两个类,Pattern(模式类)和Matcher(匹配器类)。Pattern类是用来表达和陈述所要搜索模式的对象,Matcher类是真正影响搜索的对象。另加一个新的例外类,PatternSyntaxException,当遇到不合法的搜索......
ssh无密码登陆(2012-06-15 18:07:00)
摘要:
生成密钥及授权文件一般过程:
假设客户机名sy1,IP为ip1.用户名user;服务器名sy2.IP为ip2.用户名user
在sy1上输入:
ssh-keygen -t rsa
然后弹出一些问题,一路回车。然后输入:
scp ~/.ssh/id_rsa.pub user@ip2:/home/user/.ssh/ip2
输入sy2上user的密码,拷贝完成。
在sy2上,输入:cat ~/.ssh/ip2 >> ~/.ssh/authorized_keys
(以上步骤也可用ssh-copy-id命令:ssh-copy-id user@ip2 ,不过少了一个授权文件的备份ip2)在Ubuntu10.04里,相关文件和目录的权限都不需要改。但是会有另外一个问题就是sy2返回Agent admitted failure to sign using the key错误,简单处理方法就是在sy1上执行两个命令:ssh-agent ssh-add id_rsa 然后sy1就可以实现无密码登录了。要实现相互无密码访问,要在sy2上按照相应步骤执行。
对于普通用户authorized_keys的权限必须限定为600(go-rwx),否则普通用户无法实现无密钥访问,而ROOT用户按照默认即可实现无密钥访问
chmod go-rwx ~/.ssh/authorized_keys
不能无字码访问多半是权限问题:
.ssh目录的权限和authorized_keys的权限都要看, 权限大了是不行的
.ssh的权限700, authorized_keys的权限600,就够了,属主要是登陆用户自己(root是不行的),组无所谓
不管是什么原因,查/var/log/secure就明白了
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/L......
Decorator模式(2012-06-14 11:20:00)
摘要:
Decorator模式
一 意图
动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。——包装器Wrapper。
二 动机
有时我们希望给某个对象而不是整个类添加一些功能。
例如,一个图形用户界面工具箱允许你对任意一个用户界面组件添加一些特性,例如边框,或是一些行为,例如窗口滚动。
使用继承机制是添加功能的一种有效途径,从其他类继承过来的边框特性可以被多个子类的实例所使用。
但这种方法不够灵活,因为边框的选择是静态的,用户不能控制对组件加边框的方式和时机。
一种较为灵活的方式是将组件嵌入另一个对象中,由这个对象添加边框。我们称这个嵌入的对象为装饰。
这个装饰与它所装饰的组件接口一致,因此它对使用该组件的客户透明。它将客户请求转发给该组件,并且
可能在转发前后执行一些额外的动作(例如画一个边框)。
透明性使得你可以递归的嵌套多个装饰,从而可以添加任意多的功能,如下图所示。
这样一种结构:
VisualComponent是一个描述可视对象的抽象类,它定义了绘制和事件处理的接口。
注意Decorator类怎样将绘制请求简单地发送给它的组件,以及Decorator的子类如何扩展这个操作。
Decorator的子类为特定功能可以自由地添加一些操作。
例如,如果其他对象知道界面中恰好有一个ScrollDecorator对象,这些对象就可以用ScrollDecorator对象的ScrollTo操作滚动这个界面。
这个模式中有一点很重要,它使得在VisualComponent可以出现的任何地方都可以有装饰。
因此,客户通常不会感觉到装饰过的组件与未装饰组件之间的差异,也不会与装饰产生任何依赖关系。
Decorator中存在一个Component的对象,来接收所要装饰的组件——被装饰。
继承结构来实现:
或者组合的方式:
......