准备弃用wp,把blog迁到github上去。
记得有个人说过,开blog的人有几步:
1.在csdn,iteye这样的网站上开blog
2.自己搞定域名和主机,开blog
3.最终会把blog托管给别的地方。
现在我已经走到第3步了,因为不想折腾这个wp了,虽然开了一年也没怎么折腾,就是写写blog。
本来想搞定域名可以做做自己的网站什么的,但是暂时太忙了,等以后闲下来再说吧。
先准备迁到github上去。
我的github地址:http://xumeng.github.io/
创建子虚拟盘后父虚拟盘发生改变
不能打开磁盘vmname- 000001.vmdk或者是所依赖的磁盘快照。原因:创建子磁盘快照后父磁盘被修改过.
某次在vm用linux的快照的时候,不能恢复了,提示上述错误,google it的方案是:
每个虚拟磁盘都有两个附属VMDK文件,较大的文件名称最后有-flat,是虚拟磁盘的实际原始数据。较小的文件是描述符文件,包含虚拟磁盘配置的基本 信息。使用诸如Nano等文本编辑器打开原始磁盘的描述符文件(通常情况下和虚拟机的名称相同,如myvm.vmdk),可以看到列出来的CID和父 CID。第一个磁盘的父CID一般是“ffffffff”,在下面的例子中需要注意快照的父CID和原始磁盘的CID并不一致。
原始磁盘文件:
CID=37b6f123
parentCID=ffffffff
快照磁盘文件:
CID=afafa03b
parentCID=ba4f9916
为了重新关联父子CID,编辑快照的描述符VMDK文件。标识原始磁盘文件的CID,修改快照磁盘文件的父CID,保证两者一致。如下所示:
原始磁盘文件:
CID=37b6f123
parentCID=ffffffff
快照磁盘文件:
CID=afafa03b parentCID=37b6f123
重新启动虚拟机,就可以顺利重新引导系统了。
PS:如果是分盘的,我们会发现,vmdk1的CID是vmdk2的parentCID,vmdk2的CID是vmdk3的parentCID,依此类推,按顺序修改即可。
Flex的缓存问题
flex下载文件的时候很恶心,第一次下载完后,如果服务器上这个文件又修改了,再下载时是还是取的缓存里第一个文件。
通过加随机数(也就是方法二)目测是解决了这个问题,后台仔细测试的时候发现居然在ie中还是不行,在chrome中可以。
后台又找了第一种方法,是ok的。
方法一:
本人解决的方法,保证可用。
添加过滤器(代码如下)
package com.cn.util;
import java.io.* ;
import javax.servlet.* ;
import javax.servlet.http.HttpServletResponse;
public class ForceNoCacheFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException
{
((HttpServletResponse) response).setHeader(“Cache-Control”,”no-cache”);
((HttpServletResponse) response).setHeader(“Pragma”,”no-cache”);
((HttpServletResponse) response).setDateHeader (“Expires”, -1);
filterChain.doFilter(request, response);
}
public void destroy()
{
}
public void init(FilterConfig filterConfig) throws ServletException
{
}
}
然后在web.xml中添加这个过滤器
com.cn.util.ForceNoCacheFilter为刚才过滤器的包名.类名,/*为匹配所有请求。
这样你所有的请求都将会传到服务器处理,不会查看缓存了。
方法二:
inComeHttp.url=”familyGroup.do?method=query&tmp=”+Math.random();
url上随意传一个随机数
ORA-01756: quoted string not properly terminated错误解决
今天用sql脚本初始化数据库数据的时候出现在了标题中的错误。
后经检查怀疑是格式或编码的问题。
如果是格式的问题,需要用dos2unix,windows中和linux系统的换行符不同。
命令如下:
dos2unix initData.sql
如果是编码的问题,需要用iconv来转换文件的编码为数据库的编码。
命令如下:
iconv -f fromencode -t toencode fileName
查看数据库编码:
select * from nls_database_parameters where parameter =’NLS_CHARACTERSET’;
drop表时出现ORA-02449: 表中的唯一/主键被外键引用
用select A.*
from user_constraints A, user_constraints B
WHERE b.table_name = ‘TABLE_NAME’
and a.constraint_type = ‘R’
and a.r_constraint_name = b.constraint_name;
查出扎有关联的表,然后删掉!再drop 即可!
Ubuntu下如何切换到超级用户 (superuser)
由于 Ubuntu 是基于 Debian 的 linux 操作系统,在默认的情况下,是没有超级用户(superuser, root)的,但有些系统操作必须有超级用户的权限才能进行,如手动释放内存等。
在其他 linux 操作系统 (如 fedora) 下,可以使用
su
切换到超级用户。
当输入 su 命令后, 系统会要求输入 root 的密码。
可是,在 Ubuntu 下我们根本不知道 root 的密码是什么。
这样,在 Ubuntu 下切换到超级用户需要使用其他方法,主要有两种:
- sudo -i
sudo
是 su 的加强版,意思是 do something as the supervisor。
不需要密码就可以得到 root 的权限。
但是它也有很多限制,比如,在默认的情况下,只能在 5 分钟之内使用 root 权限。
- 如果想一直使用 root 权限,还是要使用 su, 还是要得到 root 密码的。
用
sudo passwd root
可以设置 root 的密码。
之后就可以自由使用 su 命令啦。
oracle导出的一二事
导出时候出现:IMP-00010: 不是有效的导出文件, 头部验证失败。
经查明是导出和导入的oracle版本不同,用文件编辑器修改dmp文件的头部分的版本信息,改为导入oracle的版本。
对应版本:
11g R2:V11.02.00
11g R1:V11.01.00
10g:V10.02.01警告: 这些对象由 xxx导出, 而不是当前用户
在导出语句中加上fromuser=xxx touser=xxxx
附oracle导出格式:
数据导出:
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp full=y
2 将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
3 将数据库中的表table1 、table2导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)
4 将数据库中的表table1中的字段filed1以”00”打头的数据导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=" where filed1 like ‘00%’"
上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。
不过在上面命令后面 加上 compress=y 就可以了
数据的导入
1 将D:\daochu.dmp 中的数据导入 TEST数据库中。
imp system/manager@TEST file=d:\daochu.dmp
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上 ignore=y 就可以了。
2 将d:\daochu.dmp中的表table1 导入
imp system/manager@TEST file=d:\daochu.dmp tables=(table1)
基本上上面的导入导出够用了。不少情况我是将表彻底删除,然后导入。
注意:
你要有足够的权限,权限不够它会提示你。
数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。
数据导出:
exp hkb/hkb@boss_14 full=y file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbfull.log;
导出注意事项:导出的是当前用户的的数据,当前用户如果有DBA的权限,则导出所有数据!
同名用户之间的数据导入:
imp hkb/hkb@xe file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbimp.log full=y
不同名之间的数据导入:
imp system/test@xe fromuser=hkb touser=hkb_new file=c:\orabackup\hkbfull.dmp
log=c:\orabackup\hkbimp.log;
linux sftp取文件
今天在从某个server上取文件,但是本地无法直接连接,只能通过另外一台server连接,再ssh到它的上面。
1.在有外网ip的server上:sftp username@ip
get filename
2.在本地用secureCRT登录有外网ip的server,alt+P打开sftp标签页,get filename
附sftp相关command
sftp> help
可用命令:
cd 路径 更改远程目录到“路径”
lcd 路径 更改本地目录到“路径”
chgrp group path 将文件“path”的组更改为“group”
chmod mode path 将文件“path”的权限更改为“mode”
chown owner path 将文件“path”的属主更改为“owner”
exit 退出 sftp
help 显示这个帮助文本
get 远程路径 下载文件
ln existingpath linkpath 符号链接远程文件
ls [选项] [路径] 显示远程目录列表
lls [选项] [路径] 显示本地目录列表
mkdir 路径 创建远程目录
lmkdir 路径 创建本地目录
mv oldpath newpath 移动远程文件
open [用户@]主机[:端口] 连接到远程主机
put 本地路径 上传文件
pwd 显示远程工作目录
lpwd 打印本地工作目录
quit 退出 sftp
rmdir 路径 移除远程目录
lrmdir 路径 移除本地目录
rm 路径 删除远程文件
lrm 路径 删除本地文件
symlink existingpath linkpath 符号链接远程文件
version 显示协议版本
解决oracle分页查询数据重复问题
oracle分页查询时,会遇到数据重复的问题,下面就教您一个解决oracle分页查询数据重复问题的方法,希望对您能够有所帮助。
在oracle分页查询中,我们采用类似以下所示的公认的比较高效的数据库分页查询语句(Effective Oracle by Design中有描述、众多oracle使用者也做过测试)。
写道
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= n)
WHERE RN > m
这里的ROWNUM是一个伪列,它是oracle为查询结果所编的一个号,第一行的 ROWNUM为1,第二行为2,以此类推。
因为oracle是按块进行读取数据的,如果数据按顺序存储,则可能使读取出来的数据是按顺序的,给用户误解为默认排序。事实上,oracle没有进行任何排序操作,如果sql没有要求排序,oracle会顺序的从数据块中读取符合条件的数据返回到客户端。所以在没有使用排序sql的时候,分页返回的数据可能是按顺序的,也可能是杂乱无章的,这都取决与数据的存储位置。在oracle分页查询过程中,如果数据的物理位置发生了改变,就可能会引起分页数据重复的现象。
所以,要正确使用oracle分页查询,sql语句中必须有排序条件。
但是,在有排序条件的时候,仍然会出现数据重复的现象,这是为什么呢?
通过了解oracle的排序机理就会明白,出现这种情况的原因是因为排序列值的不唯一性。 Oracle这里使用的排序算法不具有稳定性,也就是说,对于键值相等的数据,这种算法完成排序后,不保证这些键值相等的数据保持排序前的顺序。
解决的方法是在后边增加一个唯一性列,比如主键。
所以解决方法如下(两个条件必须同时满足):
**
1.sql语句中需要有排序条件。
2.排序条件如果没有唯一性,那么必须在后边跟上一个唯一性的条件,比如主键。**