分析表
ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name]
本语句用来分析表的状态,在分析期间,使用一个读取锁对表进行锁定。该语句仅对MyISAM, BDB和InnoDB表有作用。对于MyISAM表,本语句相当于使用myisamchk -a的效果。
mysql> analyze table a;
+——–+———+———-+—————————–+
| Table | Op | Msg_type | Msg_text |
+——–+———+———-+—————————–+
| test.a | analyze | status | OK |
+——–+———+———-+—————————–+
1 row in set (0.00 sec)
优化表
OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name]
如果您已经删除了表的一大部分,或者如果您已经对含有可变长度行的表(含有VARCHAR, BLOB或TEXT列的表)进行了很多更改,则应使用OPTIMIZE TABLE。被删除的记录被保持在链接清单中,后续的INSERT操作会重新使用旧的记录位置。您可以使用OPTIMIZE TABLE来重新利用未使用的空间,并整理数据文件的碎片。
在多数的设置中,您根本不需要运行OPTIMIZE TABLE。即使您对可变长度的行进行了大量的更新,您也不需要经常运行,每周一次或每月一次即可,只对特定的表运行。
OPTIMIZE TABLE只对MyISAM, BDB和InnoDB表起作用。
对于MyISAM表,OPTIMIZE TABLE按如下方式操作:
如果表已经删除或分解了行,则修复表。
如果未对索引页进行分类,则进行分类。
如果表的统计数据没有更新(并且通过对索引进行分类不能实现修复),则进行更新。
mysql> OPTIMIZE table a;
+——–+———-+———-+—————————–+
| Table | Op | Msg_type | Msg_text |
+——–+———-+———-+—————————–+
| test.a | optimize | status | OK |
+——–+———-+———-+—————————–+
1 row in set (0.00 sec)
注意:无论是ANALYZE还是OPTIMIZE在执行期间将对表进行锁定,因此请注意这些操作要在数据库不繁忙的时候
百度加Google查找unicode字符操作方法,翻了好几页,总是找到不合适的源码或实例。没有办法,自己写吧!
需求:实现汉字字符转换成unicode,unicode恢复还原汉字字符
[code]
public class UnicodeUtil {
/**
* unicode字符恢复
* @param unicode
* @return 转换成功的字符
*/
public static String unicode2Char(String unicode) {
int len = unicode.length();
StringBuffer chinese = new StringBuffer(len);
char tmp;
for(int index=0;index<len;){
tmp = unicode.charAt(index++);
if(tmp=='\\'){
tmp = unicode.charAt(index++);
if(tmp=='u'){
StringBuffer cTmp = new StringBuffer(4);
for(int i=0;i<4;i++){
tmp = unicode.charAt(index++);
cTmp.append(tmp);
}
chinese.append((char) Integer.parseInt(cTmp.toString(), 16));
}
}else{
chinese.append(tmp);
}
}
return chinese.toString();
}
/**
* 字符转换成unicode
* @param s
* @return unicode字符
*/
public static String char2Unicode(String s) {
StringBuffer unicode = new StringBuffer();
for(char c:s.toCharArray()){
if(c>128){
unicode.append("\\u").append(Integer.toHexString(c));
}else{
unicode.append(c);
}
}
return unicode.toString();
}
}
[/code]
出来混的,安全很重要!!
收到安全部门的邮件,登录功能存在xss安全漏洞,简单点说就是敏感数据可以被js脚本读到。要用设定cookie的HttpOnly属性,才能降低这种安全风险。百度一下,google HttpOnly,大约描述如下:Servelt3.0有一项新特性,cookie的安全得到提升,提供了HttpOnly属性设置,似的cookie能够根据需要不被js读取。简单,不久在cookie保存的时候,设定一个属性吗?但是,Eclipse告诉我没有该属性。看了下,我用的jar杯具的发现,我们用的是Servlet2.5,不支持HttpOnly。继续google,纠结的是貌似大家实现HttpOnly用的都是Servelt3.0。那么我要实现HttpOnly面临着就是升级Servlet的版本,麻烦接踵而至,Servlet一般是和tomcat一起的,测试的工作量会很大。发现只有tomcat7是Servlet3.0的,现状是公司服务器上的tomcat大多是5的,它们还在等待升级成6呢。为了用HttpOnly升级tomcat到7明显不可能,那么只能另寻它途。在网上看到有tx,介绍可以通过直接写header的方式来保存cookie实现HttpOnly,那么说干就干。第一步先把cookie格式化成一个cookie标准的字符串如(“uc=kbtiao;domain=sina.com.cn;path=/;maxAge=-1;HttpOnly”),第二步通过设置header,response.setHeader(“Set-Cookie”, “uc=kbtiao;domain=sina.com.cn;path=/;maxAge=-1;HttpOnly”),就实现了cookie的HttpOnly。不信,你打开firecookie看看,是不是出现了HttpOnly。
大概的讲完了,下面为了凑字数复制了些关系HttpOnly的介绍:
HttpOnly是微软对cookie做的扩展,该值指定 Cookie 是否可通过客户端脚本访问, 解决用户的cookie可能被盗用的问题,减少跨站脚本攻击 主流的大多数浏览器(firefox,ie6,7,8)已经支持此属性。
1、关于tomcat的一点事情
一直认为在eclipse上改掉tomcat的server.xml文件是可以直接生效的,昨天才发现必须得重新publish下才会生效,杯具了,希望有类似经历的tx不要犯相同的错误。
2、ubuntu下卸载wine
sudo aptitude purge wine (如果不存在aptitude则请先安装sudo apt-get install aptitude)
接着cd ~/.local/share/applications/;sudo rm -rf wine* 删除所有wine相关的东东,那么世界变得清净了
3、ubuntu远程连接到windows只要一句话
rdesktop 192.168.1.2(目标机器ip地址)
-f 全屏 -u 登录用户名 -p登录密码 更多参数查看man rdesktop
rdesktop -f -uadmin -p123456 192.168.1.2
4、通过重定向来达到ubuntu下不能配置tomcat80口的问题
iptables -t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT –to-port 8080
5、产生一个0-32767的随机整数
echo $RANDOM
6、15分钟前的时间按yyyy-MM-dd HH:mm:ss显示
date -d ‘-15min’ ‘+%Y-%m-%d %T’
1:下载http://fastdl.mongodb.org/win32/mongodb-win32-i386-1.6.2.zip
2:将zip文件解压到一个目录,在这里我把它解压到E盘(E:\mongodb)
3:把mongodb的bin目录加到,windows系统的path(不是必须的)
4:打开cmd,输入mongo,看到了版本信息了,如果看到了,那么诸位恭喜你安装成功了
[code]
MongoDB shell version: 1.6.2
connecting to: test
Mon Sep 06 07:20:51 Error: couldn't connect to server 127.0.0.1} (anon):1137
exception: connect failed
[/code]
5:通过4的提示,我们可以看到报错信息,不急那是因为没有可以连接的服务。现在我们开始启动mongod服务,在cmd下输入
[java]
mongod.exe –dbpath=c:\db
[/java]
看到下面的内容了没,这就是服务启动后的提示,关于mongd的参数具体的还请看帮助
[code]
Mon Sep 06 07:26:35 MongoDB starting : pid=1944 port=27017 dbpath=c:\db 32-bit
** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
** see http://blog.mongodb.org/post/137788967/32-bit-limitations
Mon Sep 06 07:26:35 db version v1.6.2, pdfile version 4.5
Mon Sep 06 07:26:35 git version: aef371ecf5d2a824f16ccdc3b745f3702165602f
Mon Sep 06 07:26:35 sys info: windows (5, 1, 2600, 2, 'Service Pack 3') BOOST_LI
B_VERSION=1_35
Mon Sep 06 07:26:35 [initandlisten] waiting for connections on port 27017
Mon Sep 06 07:26:35 [websvr] web admin interface listening on port 28017
[/code]
6:再新打开CMD输入:mongo,如果出现下面提示,那么您就可以开始mongo之旅了
[code]
MongoDB shell version: 1.6.2
connecting to: test
>
[/code]
今天的windows安装mongodb就到这里,具体使用及其他请听下回分解
说干就干,要跨域,那么就要有两个域名,本机测试,只要指host就行了。host设置如下:
127.0.0.1 www.a.com
127.0.0.1 www.b.com
接着开始上代码:
http://www.b.com/b.jsp 通过js设置a的cookie
================
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%
response.addHeader("Cache-Control","no-cache");
response.addHeader("Expires","Thu,01 Jan 1970 00:00:01 GMT");
cookiev = "test";
%>
================
http://www.a.com/a_setcookie.jsp www.a.com下的cookie设置
================
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%
response.setHeader("P3P","CP=\"CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR\"");
String cookiev = request.getParameter("cookiev");
Cookie _cookie = new Cookie("test",cookiev );
_cookie.setMaxAge(30*60*100);
_cookie.setPath("/");
_cookie.setDomain(".a.com");
response.addCookie(_cookie);
%>
================
http://www.a.com/a_getcookie.jsp www.a.com下的cookie遍历
================
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%
Cookie cookies[]=request.getCookies();
Cookie sCookie = null;
if(cookies==null){
out.print("none any cookie");
}else{
out.println(cookies.length+"
“);
for(int i=0;i
out.println("getVersion==>>>”+sCookie.getVersion()+”\n”);
out.println(“cookiename==>>>”+sCookie.getName()+”->cookievalue==>>>”+sCookie.getValue()+”
“);
}
}
%>
================
花絮:在firefox下可以不用设置response头的p3p申明,而ie是必须的。
话说我终于要把一个“旧”系统(比我的工龄还老)维护工作移交给一个新同事去做,但是日常的发布还是走的我流程。因需求方要求,我增加一个新的功能,反正熟门熟路,那个同事不在我就自己动手干吧。我用了一个以前写的时间控件,怎么折腾总是不能成功,看了一遍有一遍的代码,还是发现不了任何问题。同样的控件,同样的环境,同样的使用方法,就是不同的页面。感觉糗大了,本来以为很简单的东西 ,被我折腾了一两个小时。偶然的一眼,我发现了两个页面最大的不同之处,新的页面是有<!DOCTYPE> 声明的,老的页面是没有的。莫非这个就是罪魁祸首,说干就干,我动手把新页面上的<!DOCTYPE> 声明删除掉,没想到控件就可以用了。问题解决了,但是解决的有点莫名其妙,因为平时对html标准并不关注。于是,就开始baidu-google。以下是个人的一些小结:
1、<!DOCTYPE>不能随便用
2、为了兼容老的代码,<!DOCTYPE>还是不要轻易使用
3、俺们的老代码该升级换代了
注:<!DOCTYPE>位于文档中的最前面的位置,用于可告知浏览器文档使用哪种 HTML 或 XHTML 规范。该标签可声明三种 DTD 类型,分别表示严格版本、过渡版本以及基于框架的 HTML 文档。
Analytics Plugin created by Web Hosting