随笔 - 72  文章 - 28  trackbacks - 0
<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(4)

随笔分类(66)

随笔档案(72)

文章档案(19)

收藏夹

搜索

  •  

最新评论

阅读排行榜

评论排行榜

一般情况下,URL 中的参数应使用 url 编码规则,即把参数字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。但是对于带有中文的参数来说,这种编码会使编码后的字符串变得很长。如果希望有短一点的方式对参数编码,可以采用 base64 编码方式对字符串进行编码,但是 base64 编码方式不能处理 JavaScript 中的中文,因为 JavaScript 中的中文都是以 UTF-16 方式保存的。而 base64 只能处理单字节字符,所以不能直接用 base64 对带有中文的 JavaScript 字符串进行编码。但是可以通过 utf.js 这个程序中提供的 utf16to8 来将 UTF-16 编码的中文先转化为 UTF-8 方式,然后再进行 base64 编码。这样编码后的字符串,在传递到服务器端后可以直接通过 base64_decode 解码成 UTF-8 的中文字符串。但是还有个问题需要注意。base64 编码中使用了加号(+),而 + 在 URL 传递时会被当成空格,因此必须要将 base64 编码后的字符串中的加号替换成 %2B 才能当作 URL 参数进行传递。否则在服务器端解码后就会出错。

所以我们需要做的就是:
js中:encodeURI(str).replace(/\+/g,'%2B')
java中:str.replaceAll("\\+","%2B")

posted @ 2013-12-17 11:03 kelly 阅读(1503) | 评论 (0)编辑 收藏

        将mysql数据文件导入到数据库中:

            1.在navicat 中创建一个mysql数据库链接,填写端口、用户名、密码

            2.创建数据库

            3.打开数据库

            4.右键选择“运行sql文件”

            5.选择sql文件的地址并执行

            

             用navicat将mysql数据库中的数据导出的两种方法:

             1.右键,转储sql文件,直接保存文件,不能设置执行选项。

             2.右键,数据传输;如果只想导出数据库表结构,不导出数据,可以把“数据传输”-》“高级”-》“记录选项”中的勾去掉,则不会导出记录。

posted @ 2013-12-13 15:12 kelly 阅读(271) | 评论 (0)编辑 收藏

Windows 2008 R2默认是禁止Ping的,但是我们在日常中很多情况都需要用到Ping功能,这时候只需要打开Ping功能即可。

在防火期开启的状态下,怎样才能ping呢?

开始-控制面板-管理工具-服务器管理器,如图


选择配置-高级安全 Windows 防火墙-入站规则:文件和打印机共享(回显请求 - ICMPv4-In)(配置文件为域和公用的这条) 启用该规则即可
在本地测试一下:ping ip,已经通了!


posted @ 2013-12-13 13:54 kelly 阅读(219) | 评论 (0)编辑 收藏
改变applicationContext.xml中

<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>classpath:SqlMapConfig.xml</value>
</property>
<property name="dataSource">
<ref bean="dataSource"/>
</property>
< /bean>

中的

<value>classpath:SqlMapConfig.xml</value>
然后把SqlMapConfig.xml放到src下面

posted @ 2013-12-05 13:39 kelly 阅读(467) | 评论 (0)编辑 收藏

全部删除

如果是删除某个表的所有数据,并且不需要回滚,使用 TRUNCATE 就ok了。关于Trancate 参见这里http://blog.csdn.net/gnolhh168/archive/2011/05/24/6442561.aspx

SQL> truncate   table   table_name;

 

条件删除

如果删除数据有条件,如 delete from tablename where col1 = 'lucy';这时除了加索引外, 你可以删除时加NO   LOGGING选项,不写日志加快删除速度

 

引用某人的一句话“几千万条记录的表都不分区,明显有问题嘛。Oracle的技术支持工程师建议,2,000,000条以上记录的表,应该考虑分区,你完全可以按照时间为维度来建表,每个月的数据存放在一个分区表中,以后要删除一个月的数据,直接truncate   table即可,不记录日志,速度很快。”

 

 删除大量重复记录

《转》做项目的时候,一位同事导数据的时候,不小心把一个表中的数据全都搞重了,也就是说,这个表里所有的记录都有一条重复的。这个表的数据是千万级的,而且是生产系统。也就是说,不能把所有的记录都删除,而且必须快速的把重复记录删掉。

对此,总结了一下删除重复记录的方法,以及每种方法的优缺点。

为了陈诉方便,假设表名为Tbl,表中有三列col1,col2,col3,其中col1,col2是主键,并且,col1,col2上加了索引。

1、通过创建临时表

可以把数据先导入到一个临时表中,然后删除原表的数据,再把数据导回原表,SQL语句如下:

 

creat table tbl_tmp (select distinct* from tbl);

truncate table tbl;            //清空表记录i

nsert into tbl select * from tbl_tmp;//将临时表中的数据插回来。

 

这种方法可以实现需求,但是很明显,对于一个千万级记录的表,这种方法很慢,在生产系统中,这会给系统带来很大的开销,不可行。

2、利用rowid

在oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是oracle中的哪一个数据文件、块、行上。在重复的记录中,可能所有列的内容都相同,但rowid不会相同。SQL语句如下:

 

delete from tbl where rowid in (select a.rowid

from tbl a,            tbl b

where a.rowid>b.rowid and a.col1=b.col1 and a.col2 = b.col2) 

 

如果已经知道每条记录只有一条重复的,这个sql语句适用。但是如果每条记录的重复记录有N条,这个N是未知的,就要考虑适用下面这种方法了。

3、利用max或min函数

这里也要使用rowid,与上面不同的是结合max或min函数来实现。SQL语句如下

 

delete from tbl a

where rowid not in (

          select max(b.rowid)           

          from tbl b

           where a.col1=b.col1 and a.col2 = b.col2);            //这里max使用min也可以 

 

或者用下面的语句

 

delete from tbl awhere rowid<(

             select max(b.rowid)           

             from tbl b

             where a.col1=b.col1 and a.col2 = b.col2);            //这里如果把max换成min的话,前面的where子句中需要把"<"改为">" 

 

跟上面的方法思路基本是一样的,不过使用了group by,减少了显性的比较条件,提高效率。SQL语句如下:

 

deletefrom tbl where rowid not in (

                select max(rowid)           

               from tbl tgroup by t.col1, t.col2);

 

delete from tbl where (col1, col2)  in (

                   select col1,col2

                    from tblgroup bycol1,col2havingcount(*)            >1) and rowidnotin(selectnin(rowid)fromtblgroup bycol1,            col2havingcount(*) >1)    ----???

还有一种方法,对于表中有重复记录的记录比较少的,并且有索引的情况,比较适用。假定col1,col2上有索引,并且tbl表中有重复记录的记录比较少,SQL语句如下4、利用group by,提高效率

posted @ 2013-12-02 10:49 kelly 阅读(363) | 评论 (0)编辑 收藏
仅列出标题
共15页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last