随笔小记(记录下工作中遇到的问题)--主要是在网上找到解决方案

查看端口命令:

netstat -anp | grep 8080

杀进程,比如java:

killall -9 java

导出数据库的命令:

mysqldump -uroot --all-databases -p > d:/all.sql.0315

mysqldump db_name --default-character-set=utf8 -p > db_name.sql

修改字段类型:

alter table table_name modify title varchar(200);

---------------------------------------------------------------------------------------------------------------------------------------------------------------
网上转载:
昨天遇到这个问题,No result defined for action XXXX and result input。一直以为是不是缓存的问题,试了半天,未果,郁闷至极。后来在struts.xml里边加了<result name="input">/userEdit.jsp</result>,表面看起来好像是没问题了,但实际上,submit以后根本没有进入到action的saveUser这个method/action。郁闷了半天。。。。
昨晚回去想了下,因为之前是没问题的,于是仔细回想昨天jsp页面修改的地方,锁定了几个新加的字段。今天一试,果不其然。jsp页面的字段类型跟UserAction里边的字段类型不一样,比如<s:select list=”departmentList“ name="department" />,departmentList是一个string[]的list,那么department就应该是private String[] department;。。。。
唉,郁闷呀,这种问题有点隐晦哦。解决方法就是在userEdit.jsp页面上加上<s:fielderror />,然后就能在input指向的页面显示字段的错误信息,这样的话就能很快发现是什么问题,改之。
感觉struts2还是挺烦的,很多规则,很多标签,不弄清楚原理、用法,经常会碰到“莫名其妙”的错误。只能一点点积累,慢慢累积经验吧。


在linux上出现No result defined for action and result input 404错误,本地没出现,
最后通过以上方法才知道是data类型的数据转换错误,这个input是拦截器自动返回的,以后注意。
---------------------------------------------------------------------------------------------------------------------------------------------------------------




枚举类型的数据可以直接在value里面写大写的值,到action直接就能转成枚举类型了。


---------------------------------------------------------------------------------------------------------------------------------------------------------------
cursor:鼠标形状参数 


CSS鼠标形状参数表: 


CSS代码 


鼠标形状 


style="cursor:hand" 手形 
style="cursor:crosshair" 十字形 
style="cursor:text"文本形 
style="cursor:wait" 沙漏形 
style="cursor:move" 十字箭头形 
style="cursor:help" 问号形 
style="cursor:e-resize"右箭头形 
style="cursor:n-resize" 上箭头形 
style="cursor:nw-resize" 左上箭头形 
style="cursor:w-resize" 左箭头形 
style="cursor:s-resize" 下箭头形 
style="cursor:se-resize" 右下箭头形 
style="cursor:sw-resize" 左下箭头形 
还可以自定义鼠标样式,这样鼠标这成你要的图了
style="CURSOR: url(http://image2.sina.com.cn/gm/ol/cross/mouse/arrow40.cur)"


---------------------------------------------------------------------------------------------------------------------------------------------------------------


 could not deserialize 不能反序列化
数据库中的数据类型和hibernate中得数据类型 不一致


---------------------------------------------------------------------------------------------------------------------------------------------------------------
关于支付宝返回通知的问题。
如果服务器DNS无法解析支付宝的2个域名:notify.alipay.com 和 www.alipay.com
则会导致 返回的通知 提示验证失败 并且  发货失败


---------------------------------------------------------------------------------------------------------------------------------------------------------------
如何避免不小心关掉web浏览器窗口
<script language="javascript">
  g_blnCheckUnload = true;
  function RunOnBeforeUnload() {
     if (g_blnCheckUnload) {window.event.returnValue = 'You will lose any unsaved content';   
     }  
  }
</script>
<body  οnbefοreunlοad="RunOnBeforeUnload()">
</body>


---------------------------------------------------------------------------------------------------------------------------------------------------------------


验证密码强度
1、密码由6-32位字母、数字或下划线构成; 
2、至少需要一位小写字母; 
3、至少需要一位大写字母; 
4、至少需要一位数字。


String password = "password";
        System.out.println(password != null && password.length() >= 6
                && password.length() <= 32
                && Pattern.compile("[a-z]+").matcher(password).find()
                && Pattern.compile("[A-Z]+").matcher(password).find()
                && Pattern.compile("[\\d]+").matcher(password).find());




---------------------------------------------------------------------------------------------------------------------------------------------------------------
js的三种跳转:
"window.location.href"、"location.href"是本页面跳转
"parent.location.href"外城层跳转
"top.location.href"是最外层的页面跳转
举例说明:
如果A,B,C,D都是jsp,D是C的iframe,C是B的iframe,B是A的iframe,如果D中js这样写
"window.location.href"、"location.href":D页面跳转
"parent.location.href":C页面跳转
"top.location.href":A页面跳转
如果D页面中有form的话,
<form>: form提交后D页面跳转
<form target="_blank">: form提交后弹出新页面
<form target="_parent">: form提交后C页面跳转
<form target="_top"> : form提交后A页面跳转
关于页面刷新,D 页面中这样写:
"parent.location.reload();": C页面刷新 (当然,也可以使用子窗口的 opener 对象来获得父窗口的对象:window.opener.document.location.reload(); )
 "top.location.reload();": A页面刷新


---------------------------------------------------------------------------------------------------------------------------------------------------------------


ajax返回来的字符串和js中的字符串比较总是不相等,发现是在action中的out.println(result);导致的,加了ln,在result后边就会加上回车,所以会多%0A%0D字符。
---------------------------------------------------------------------------------------------------------------------------------------------------------------
jQuery.get在IE浏览器中会有缓存,解决方法,在url后加上时间戳, 具体如:jQuery.get("<%=request.getContextPath()%>/common/index/loginAction_validateImage?tamp="+new Date().getTime()+"&validataImaPath="+validateImage.src,null, back);
---------------------------------------------------------------------------------------------------------------------------------------------------------------
 
hql语句查询非空用 is not null


---------------------------------------------------------------------------------------------------------------------------------------------------------------




在Oracle数据库内有一种特殊的表Dual。Dual表是Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的Select中。Dual表由Oracle连同数据字典一同创建,所有的用户都可以用名称DUAL访问该表。这个表里只有一列DUMMY,该列定义为VARCHAR2(1)类型,有一行值X。从DUAL表选择数据常被用来通过SELECT语句计算常数表达式,由于DUAL只有一行数据,所以常数只返回一次。


---------------------------------------------------------------------------------------------------------------------------------------------------------------
        经常写JSP页面的人会对这个属性很熟悉,原理很简单:iterator标签的status属性提供了对于当前行奇偶性等的判断。


JSP中结果集显示如下:


    <ww:iterator value="resultList" status="status"> 
    <tr class="<ww:if test="#status.even">row-even</ww:if><ww:else>row-odd</ww:else>"> 
        <td> 
               <ww:property value=""/> 
        </td> 
    </tr> 
    </ww:iterator>


样式表可以参考:


.row-even{background:#def7c2;} /*偶数行样式*/ 
.row-odd{background:#c8e7a6;}   /*奇数行样式*/
除了使用#status.even判断是否偶数行外,还有其他几个属性可以使用:


1:#status.odd        是否奇数行


2:#status.count    当前行数


3:#status.index    当前行的序号,从0开始『#status.count=#status.index+1』


4:#status.first     是否第一行


5:#status.last      是否最后一行


6:#status.modules(int) 当前行数取模


---------------------------------------------------------------------------------------------------------------------------------------------------------------


在使用Hibernate做为数据持久层的项目中,应用程序中的修改操作有时候会涉及到关联的外键的修改。而我们知道,在Hibernate做为持久层时,外键在持久化类中都是作为一个对象存在的,一般我们会采用使用延迟加载外键对象的策略来节省资源。在修改的时候,如果要修改外键,一般我们会加载该外键对象并重新设置该外键的id最后set到要修改的持久化类中来达到修改的目的。使用这种方法有时候会出现session关闭的错误,而且加载该对象也会占用一些资源。下面给出一种避免出现session关闭错误且不用加载外键对象的更新方法。而这个方法其实很简单,步骤如下:


1.新建一个空白的外键对象(使用new 方法);


2.把外键对象的Id值set为要修改Id;


3.把外键对象set到要修改的持久化对象中;


4.最后使用update方法更新即可。


----------------------------------------------------------------------------------------------------------------------------------------------------------------
使用Compass和Hibernate整合是应注意的地方:当我们用hibernateGpsDevice 监测 Hibernate对数据库的操作时,它只监测Session的save,update,delete方法,而不会
监测update excute方法,也就是说自己手动写的hql语句 hibernateGpsDevice 是监测不到的。


----------------------------------------------------------------------------------------------------------------------------------------------------------------
二级域名如果使用了不合法的字符、符号,会导致Cookie读写失败。
----------------------------------------------------------------------------------------------------------------------------------------------------------------


one-to-one 中的constrained属性会导致继承关系不好用。hibernate读取出来的对象全TM的是子类
<one-to-one name="classroom" class="com.wenice.domain.user.teacher.Classroom" constrained="true"/>
----------------------------------------------------------------------------------------------------------------------------------------------------------------


当使用struts2的json插件时,在没必要转成json对象的get方法要加上@JSON(serialize=false)。

----------------------------------------------------------------------------------------------------------------------------------------------------------------

给tomcat增加gzip压缩功能

    <Connector port="80" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" executor="tomcatThreadPool" URIEncoding="utf-8" 
                           compression="on" 
                           compressionMinSize="50" noCompressionUserAgents="gozilla, traviata" 
                           compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" />


----------------------------------------------------------------------------------------------------------------------------------------------------------------

 <!--[if gte IE 6]> 这段文字仅显示在 IE6及IE6以上版本。 <![endif]-->

  <!--[if gt IE 6]> 这段文字仅显示在 IE6以上版本(不包含IE6)。 <![endif]-->

  <!--[if IE 6]> 这段文字仅显示在 IE6。 <![endif]-->

  上面的语句都是通过IE专属的条件注释来完成判断,lt=小于,gt=大于,lte=大于及等于,gte=小于及等于,上面的6代表了IE版本号,我们可以取6、7、8、9...分别区别IE版本,再在中间的部分插入专属的Html代码(JS、CSS),以修正不同IE浏览器版本的问题。

----------------------------------------------------------------------------------------------------------------------------------------------------------------

一个关于android的监听器的问题,该监听器以内部类的形式实现,这个监听器放在绑定的组件里面实现才行。

----------------------------------------------------------------------------------------------------------------------------------------------------------------

新建android项目没有R.java文件

将setContentView(R.layout.main); 注掉,这个时候,我发现AndroidManifest.xml和layout/activity.xml都是有错误的,进去之后才发现这些文件里面的内容都有重复,删掉这些内容,然后clean,搞定。
----------------------------------------------------------------------------------------------------------------------------------------------------------------

存储过程在什么情况下使用?

答:存储过程会有较大的性能牺牲,应用服务器可以扩展,而数据库服务器不行,因此最好不用存储过程,只有在数据同步的时候需要用到它。

网上看到的一个答案

1. 存储过程绝对有其存在价值,比如可以避免与应用之间来回传递参数、数据
2. 不要和数据库打交道的时候,动不动就写存储过程(言必称希腊),很多时候用Where/Having/子查询之类就可以搞定的,非要在存储过程中写fetch+if,看了就恶心
3. 如果项目规模不大,主要看开发团队习惯及喜好
4. 以个人经验,按照现在的趋势,如果项目数据规模比较大,为了性能考虑,今后可能会进行分割,或者,上来就投入了很多服务器,分层就分的很清楚,应用集群、分压、缓存都考虑到了,就应考虑避免存储过程。IMHO,在应用层提高效率,速度的手段相对比较多,也灵活一点。
5. 也是本人经验,招Java/.NET,会基本SQL的程序员相对来说比在此基础上增加存储过程的容易一些,另外,好的数据库结构设计,通常也削减了存储过程存在的必要性。

当然,不管选哪种,永远应当记得:
1. 避免在应用与数据库之间传递大量非必要信息
2. 尽量避免数据库中的计算,比如将经常用的统计的数据单独做一个字段或者设计表,避免不必要的计算量

----------------------------------------------------------------------------------------------------------------------------------------------------------------

在本地环境用maven将项目编译好后的文件打成war包,在linux下解压之后,路径有错误,原本是www.xxx.com.cn/WEB-INF变成了www.xxx.com.cn//WEB-INF,注意多了一个斜杠,导致class文件读取错误。

在下边附上错误信息:

Caused by: java.lang.NoClassDefFoundError: org/operamasks/el/eval/MethodExpressionImpl
        at org.operamasks.faces.config.FacesConfig.parseLocaleConfig(FacesConfig.java:546)
        at org.operamasks.faces.config.FacesConfig.parseApplication(FacesConfig.java:528)
        at org.operamasks.faces.config.FacesConfig.parse(FacesConfig.java:360)
        at org.operamasks.faces.config.FacesConfig.loadFromWebInf(FacesConfig.java:284)
        at org.operamasks.faces.config.FacesConfig.load(FacesConfig.java:199)
        at org.operamasks.faces.config.FacesConfigLoader.loadFacesConfig(FacesConfigLoader.java:69)
        ... 22 more

我跟进去看了,这段源代码是框架内部的实现,从代码上无法找到其错误,后来在删掉这个www.xxx.com.cn的时候才发现这个问题。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值