eclipse中如果选中一个变量,则在本源文件中高亮显示相同的变量
Window->Preferences,在type filter text 中输入Mark Occurrences
在Java-Editor-Mark Occurrences中将Mark occurrences of the selected element in the current file.选中OK即可
|
下午头儿出去了,这周一口气粘帖复制了14个Action20个jsp,没什么技术含量,完全是粘帖复制,我在等待什么?
|
工作快三年了,一直没有用到spring,做的几个项目全部基于struts+hibernate,昨天忙完手头的活儿,自己建了个struts+spring+hibernate的demo,能用MyEclipse自动生成的全部自动生成,表映射、pojo、SessionFactory、applicationContext.xml、struts-config.xml都自动生成了,弄了两个jsp,一个add,一个view
运行发现,spring未被加载,原因找来找去找不到,最后还是看了以前写的一篇blog,可能存在重复jar包,有冲突,确实发现Myeclipse自动键入的jar包好多好多,而且有的有重复,捣鼓出以前做的例子,复制lib里面的jar包,果然OK了,实现了增查。
spring确实是个好东西,强大、强大。
Google SSH整合的例子,发现都是Struts2SpringHibernate了,俺还struts1呢,out了
转自:http://pengjiayou.com/blog/fedora-10-auto-install-scripts
easyLife 是另一款和 autoten 类似的软件,是刚刚才发现的,不过其官方网站打不开,需翻墙解决,我找到了它的下载页面,在 sf.net 上,请直接点击这里下载最新的 easylife-1.1-1.fc10.noarch.rpm 。
easyLife 允许你配置 Fedora 10 的各软件,只需用鼠标点击就搞定了!它的主要特性如下:
- 为你系统中的常规用户添加 sudo 命令
- 自动安装 Flash Player 插件
- 安装各种 Codecs (视频、音频解码库等)
- 安装额外字体
- 安装 Livna 软件仓库以安装其它额外及非免费软件
- 安装 Skype
- 为 Firefox 安装 Sun Java 和 Sun Java Plugin 插件
- 用 system-switch-java 整合 Sun Java
- 安装 Adobe Raeder
- 安装其他软件等
用esayLife安装来Flash Player 挺好用,真的是省了很多事,可能对我这个Linux初学者不是啥好事
google app engine对String长度有限制,里面中有个com.google.appengine.api.datastore.Text类型以替换长String,但是换了com.google.appengine.api.datastore.Text后不能向数据库保存了,就单单这个字段不能保存,看数据库列中就没有这个字段,google中找到 说要在字段前加@Enumerated,但是在我这也不好使,后来又找到要加
@Persistent(serialized="true", defaultFetchGroup="true")
private Text text;
// private String text;
恩,这下好使了
开发中遇到这个异常:
NestedThrowablesStackTrace:
Attempt was made to manually set the id component of a Key primary key.
If you want to control the value of the primary key, set the name
component instead.
org.datanucleus.exceptions.NucleusUserException: Attempt was made to
manually set the id component of a Key primary key. If you want to
control the value of the primary key, set the name component instead.
原来的修改代码是这样些的:
public void attachDirty(UrlTarget instance) {
PersistenceManager pm = null;
try {
pm = PMF.get().getPersistenceManager();
UrlTarget ut = (UrlTarget) pm.getObjectById(UrlTarget.class, instance.getId());
ut.setName(instance.getName());
ut.setRemark(instance.getRemark());
ut.setUrl(instance.getUrl());
pm.makePersistent(ut);
} catch(Exception ex){
ex.printStackTrace();
}finally {
if(pm != null)pm.close();
}
}
public UrlTarget findById(Long id) {
PersistenceManager pm = PMF.get().getPersistenceManager();
try{
return (UrlTarget) pm.getObjectById(UrlTarget.class, id);
}catch(Exception ex){
ex.printStackTrace();
}finally {
pm.close();
}
return null;
}
在利用findById方法得到对象后修改,但是findById中pm已经关闭,这就是错误的原因了
来自http://net.zdnet.com.cn/network_security_zone/2008/0519/869835.shtml
一.简介
vi是unix世界中最通用的全屏编辑器,linux中是用的是vi的加强版vim,vim同vi完全兼容,vi就是"visual
interface"的缩写。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其它编辑程序所没
有的。
vi不是一个排版程序,它不象Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。
vi没有菜单,只有命令,且命令繁多。只要在命令行上键入vi就可进入vi的编辑环境。vi有三种状态:命令模式,文本输入模式和末行模式。键入vi回车后首先进入vi的命令模式。
在命令模式下用户输入的任何字符都被Vi当作命令加以解释执行,如果用户要将输入的字符当作是文本内容时,则首先应将Vi的工作模式从命令模式切换到文
本输入模式。在命令模式下,按一下"a"("A")键或者”i”
("I")或者"o"("O")键,即进入插入态文本输入模式。按"a"键,插入到当前光标的后面;按"i"键,在当前光标处插入;按"A"键,在当前光
标所在行的最后插入;按"I"键,在当前光标所在行的开头插入。在文本输入模式下,按Esc键,即回到命令模式。
末行模式也称ex转义模式。Vi有一个专门的“转义”命令,可访问很多面向行的Ex命令。在命令模式下,用户按“:”键即可进入末行模式下,此时Vi会
在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编
辑缓冲区的内容写到文件中等)。末行命令执行完后,Vi自动回到命令模式。
例如:
:1,$s /A/a/g
则从文件第一行至文件尾将大写A全部替换成小写a。
若在末行模式下输入命令过程中想转换的到命令模式,可按键,或用退格键将输入的命令全部删除之后,再按一下退格键,即可使Vi回到命令模式下。
如果要从命令模式转换到编辑模式,可以键入命令a或者i;如果需要从文本模式返回,则按Esc键即可。在命令模式下输入“:”即可切换到末行模式,然后输入命令。
Vi中的许多命令都要用到行号及行数等数值。若编辑的文件较大时,自己去数是非常不方便的。为此Vi提供了给文本加行号的功能。这些行号显示在屏幕的左
边,而相应行的内容则显示在行号之后。 需要说明的是,这里加的行号只是显示给用户看的,它们并不是文件内容的一部分。
当用Vi建立一个新文件时,在进入Vi的命令中也可以不给出文件名,当编辑完文件需要保存数据时,再由用户指定文件名。
进入Vi时,用户不仅可以指定一个待编辑的文件名,而且还有许多附加操作。如果希望在进入Vi之后,光标处于文件中特定的某行上,可在Vi后加上任选
项+n,其中n为指定的行数。例如 键入命令:vi +3 example.txt后,光标将位于文件example.txt中的第3行上。
二.vi常用的命令
1.插入(Insert)命令
Vi提供了两个插入命令:i 和 I命令
(1)i命令
插入文本从光标所在位置前开始,并且插入过程中可以使用键删除错误的输入。此时Vi处于插入状态,屏幕最下行显示“--INSERT--”(插入)字样。
例1,有一正在编辑的文件,如下所示:
Welcome to vi world!Come on!
~
~
光标位于第一个“!”上,需在其前面插入:
This is an example!
使用i命令,并输入相应文本后,屏幕显示如下:
Welcome to vi world This is an example!!Come on!
~
~
由此例可以看到,光标本来是在第一个“!”处,但是由于是从光标所在位置前开始插入,所以这个“!”就被挤到了新插入的文本之后。
(2)I命令
该命令是将光标移到当前行的行首,然后在其前插入文本.
2.光标移动操作在屏幕上移动
全屏幕文本编辑器中,光标的移动操作无疑是最经常使用的操作了。用户只有熟练地使用移动光标的这些命令,才能迅速准确地到达所期望的位置处进行编辑。
Vi中的光标移动既可以在命令模式下,也可以在文本输入模式下,但操作的方法不尽相同。
(1)在文本输入模式下,可直接使用键盘上的四个方向键移动光标。
(2)在命令模式下,有很多移动光标的方法。不但可以使用四个方向键来移动光标,还可以用h、j、k、l这四个键代替四个方向键来移动光标,这样可以避免
由于不同机器上的不同键盘定义所带来的矛盾,而且使用熟练后可以手不离开字母键盘位置就能完成所有操作,从而提高工作效率。
3.在屏幕上移动
Vi提供了三个关于光标在全屏幕上移动并且文件本身不发生滚动的命令。它们分别是H、M和L命令。
(1)H命令
该命令将光标移至屏幕首行的行首(即左上角),也就是当前屏幕的第一行,而不是整个文件的第一行。利用此命令可以快速将光标移至屏幕顶部。若在H命令之前
加上数字n,则将光标移至第n行的行首。值得一提的是,使用命令dH将会删除从光标当前所在行至所显示屏幕首行的全部内容。
(2)M命令
该命令将光标移至屏幕显示文件的中间行的行首。即如果当前屏幕已经充满,则移动到整个屏幕的中间行;如果并未充满,则移动到文本的那些行的中间行。利用此
命令可以快速地将光标从屏幕的任意位置移至屏幕显示文件的中间行的行首。例如,在上面屏幕显示的情况下(不论光标在屏幕的何处),在命令模式下,输入命令
M之后,光标都将移到add这一行的字母a上。同样值得一提的是,使用命令dM将会删除从光标当前所在行至屏幕显示文件的中间行的全部内容。
(3)L命令
当文件显示内容超过一屏时,该命令将光标移至屏幕上的最底行的行首;当文件显示内容不足一屏时,该命令将光标移至文件的最后一行的行首。可见,利用此命令
可以快速准确地将光标移至屏幕底部或文件的最后一行。若在L命令之前加上数字n,则将光标移至从屏幕底部算起第n行的行首。同样值得一提的是,使用命令
dL将会删除从光标当前行至屏幕底行的全部内容。
4.编辑命令
让我们看看最简单也是最常用的编辑过程:没有人不犯错误。所以迟早你会碰到修改你输入的文本的时候。实际上花在字处理上的大多数时间是修改而不是输入新的东西。因此,你要知道如何方便地修改就很重要。
(1)x--删除一个字符
删除文字的最简单的方式是用x。这个命令的结果是光标所处的字符的消失,后面的文字左移动。如果你删除的字符是一行最后的一个字符,那么光标将向左移动一个,这样光标就不会停留在不存在的字符的下面了。假如没有任何文字了,喇叭就叫。
(2)d--删除对象
这个命令的右边还要有一定的文字对象。文字对象就是一块文字。他右边接的就是在控制光标移动的那些字符。例如 w 表示向前一个单词,那么 dw 将删除下一个单词。5w 表示前进5个单词,那么 d5w 将删除他们。
(3)dd--删除一行
最常用的 d 系列命令之一。和前面一样, 5dd 将删除 5 行
(4)D--整个删除
大写形式的 D 用来删除从光标到行尾。和 d$ 一样效果。
(5)u--恢复
要后悔吗?他不仅仅撤消删除,还撤消你所有的编辑工作。
(6).--重复
重复编辑工作。
5.退出Vi
当编辑完文件,准备退出Vi返回到shell时,可以使用以下几种方法之一。
(1)在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell;若当前编辑的文件没被修改过,则Vi直接退出, 返回到shell。
(2)在末行模式下,输入命令 :w Vi保存当前编辑文件,但并不退出,而是继续等待用户输入命令。在使用w命令时,可以再给编辑文件起一个新的文件名。
例如:w newfile
此时Vi将把当前文件的内容保存到指定的newfile中,而原有文件保持不变。若newfile是一个已存在的文件,则Vi在显示窗口的状态行给出提示信息:
File exists (use ! to override)
此时,若用户真的希望用文件的当前内容替换newfile中原有内容,可使用命令
:w! newfile
否则可选择另外的文件名来保存当前文件。
(3)在末行模式下,输入命令 :q 系统退出Vi返回到shell。若在用此命令退出Vi时,编辑文件没有被保存,则Vi在显示窗口的最末行显示如下信息:
No write since last change (use ! to overrides)
提示用户该文件被修改后没有保存,然后Vi并不退出,继续等待用户命令。若用户就是不想保存被修改后的文件而要强行退出Vi时,可使用命令:q! Vi放弃所作修改而直接退到shell下。
(4)在末行模式下,输入命令 :wq Vi将先保存文件,然后退出Vi返回到shell。
(5)在末行模式下,输入命令 :x 该命令的功能同命令模式下的ZZ命令功能相同。
来自:http://net.zdnet.com.cn/network_security_zone/2008/0519/869835.shtml
因为最近比较闲 有点不思进取 也没什么问题要写了
今天不错,发现一个,恩,感觉不错
做了一个上传Excel并解析数据然后入库的功能,里面涉及到是否是日期格式的判断
之前是这么写的(深谙这么写是不好的,但以为它是可靠的)
private boolean checkDate(String content) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
sdf.parse(content);
return true;
} catch (Exception e){
return false;
}
}
现在发现问题了,对于“2008-06-23asdf”这种情况是返回true的,哈哈,看来是孤陋寡闻了,基础不扎实了,看API上这样讲:
在默认情况下,进行的分析是不严格的:如果输入的形式不是此对象的格式化方法使用的形式,但仍可作为日期进行分析,则分析将获得成功。客户机可能通过调用 setLenient(false) 来强调严格遵守该格式。
按照API说法,将代码改成
private boolean checkDate(String content) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
sdf.
setLenient(false);
sdf.parse(content);
return true;
} catch (Exception e){
return false;
}
}
运行结果“2008-06-23asdf”这种情况还是返回true的,但“2008-13-23”这种情况是返回false的
最后改进程这种写法,可以适应"yyyy-MM-dd""yyyy-M-d""yyyy-MM-d""yyyy-M-dd"
private boolean checkDate(String content) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-d");
try {
sdf.setLenient(false);
content = content.replaceAll("-0", "-");
Date d = sdf.parse(content);
String s = sdf.format(d);
return content.equals(s);
} catch (Exception e){
return false;
}
}
参考资料http://www.99inf.net/SoftwareDev/Java/52734.htm
http://blog.163.com/everlee@126/blog/static/263574220089822631229/
当然也可以用正则表达式做到。
昨天就发现这个问题,用firefox没问题,我的chrome谷歌浏览器是3.0.182.3
提示 yahoo邮箱无法加载
按照提示 清楚缓存也没有用
|
Yahoo! 邮箱无法加载 |
Loading Yahoo! Mail failed due to a client side error
您可以尝试对您的防火墙进行设置,并且禁用“屏蔽广告”。如果这个方法仍不凑效,请联系我们的客服。
|
建一个文本文件,命名为proxy.pac
用文本编辑器打开 输入:
function FindProxyForURL(url,host){ if(dnsDomainIs(host, ".blogspot.com")){ return "PROXY google.cn:80"; } }
保存后,在FireFox-工具-选项-高级-网络选项卡-设置-选自动代理配置URL ,在文本框中输入file:///C:/proxy.pac
OK,可以访问blogger了。
别的代理
https://soproxy.appspot.com/
http://proxy-12345.appspot.com/
貌似已经跟我没啥关系的六一儿童节,忙活了一天,签字画押,我勇敢的加入房奴大军了...
一下子从小康生活回归到了解放前,呜呜~~~~(>_<)~~~~
拿着一大堆票据、一大把钥匙回到家倒头便睡,累死了
预祝房奴生活开开心心。
想参考一下roller的设计思路,遂又捡起roller,刚开始是看roller4.0,磨叽了半天时间,因为对struts2不熟悉,转而搞了个
roller3.0,还好都运行起来了,之中发现下载的源码竟然不全,如果不引用roller的jar包的话会报错,缺几个package里的类,累的我
还要反编译,不知道我是走弯路了还是怎么着,总算运行起来了,改了log4j的配置让日志在控制台输出,昨晚下班刚弄到这儿,接着捣鼓
突然想起来写blog也好长时间了,可以追溯到3年前,一开始是在msn space,后来搬家到baidu,那时候对baidu还是很支持的,后来感觉baidu进步有点慢啊,完了还出来一些绯闻
接着就有些不安分了,到处搬家哈哈,csdn、javaeye、博客大巴、yo2、blogjava、blogger,哦天,真的不少,现在csdn、
javaeye、博客大巴、yo2已经荒了,blogger这几天还被和谐了很郁闷,就剩blogjava和baidu了,现在在捣鼓在
GAE上弄个java写的blog,已经糊弄上去了,凑合能添加文章,一有空就修改一下代码往上面更新一下,现在在研究怎么静态化和上传图片