- 浏览: 215734 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (151)
- java综合 (53)
- Struts1 (4)
- Oracle (9)
- 环境配置 (14)
- Hibernate (6)
- javascript (11)
- Spring (3)
- Oracle常用傻瓜问题1000问 (13)
- jquery (6)
- Android (5)
- DWR (3)
- Sql server 2005 (1)
- JasperReport (3)
- sturts2 (3)
- ExtJS (2)
- SQL (2)
- SQLITE (1)
- WebService (1)
- java队列 (2)
- Socket (1)
- JSTL标签+OGNL标签 (1)
- 乱码 (1)
- 设计模式 (1)
- Android经验分享 (3)
- 撒旦法 (0)
- 开源库 (1)
最新评论
-
Mr.Cheney:
Apple_2011 写道为什么我删了后还是报这个错啊?
检查 ...
解决办法java.lang.ClassCastException: cannot assign instance of net.sf.jasperreports -
Apple_2011:
为什么我删了后还是报这个错啊?
解决办法java.lang.ClassCastException: cannot assign instance of net.sf.jasperreports -
yangguang111345:
ORA-01922: CASCADE must be spec ...
Oracle 删除用户时出现错误ora-01922: CASCADE must bu specified to drop 用户名 -
移动硬盘:
遇到同樣的錯誤,已使用此方法解決成功,謝謝博主。
OracleDBconsoleorcl无法启动解决方案 -
NeverGiveUpToChange:
非常的不错,学习学习…………
java中timer用法
收藏列表
- 全部 [25]
- 默认 [14]
- javascript [1]
- 键盘上的keycode [1]
- 用来获得到web-inf的路径 [1]
- jndi数据库连接池 [1]
- jsp上得到action的绝对路径 [1]
- debug调试详解 [1]
- http://lveyo.iteye.com/blog/175705 [1]
- struts2 的taglib 标签 [1]
- 重新加载 [1]
- 加载js文件 [1]
- 重新加载js文件 [1]
- 解决action跳转的路径还有中文参数的问题 [1]
- 螺旋矩阵! [1]
- java配置环境变量的两种方法 [1]
标题 | 标签 | 来源 | |
android ant | Android Ant | ||
<?xml version="1.0" encoding="UTF-8"?> <project name="onewayonelife" default="release" basedir="."> <!-- 环境变量 --> <property environment="env" /> <!-- 应用的名称 --> <property name="appName" value="${ant.project.name}" /> <!-- 应用的包目录 --> <property name="appPackage" value="org.wp.activity" /> <!-- SDK目录(获取操作系统环境变量ANDROID_SDK_HOME的值) --> <property name="sdk-folder" value="${env.ANDROID_SDK_HOME}" /> <!-- SDK中tools目录 --> <property name="sdk-tools" value="${sdk-folder}\tools" /> <!-- SDK指定平台目录 --> <property name="sdk-platform-folder" value="${sdk-folder}\platforms\android-8" /> <!-- SDK指定平台的tools目录 --> <property name="sdk-platform-tools" value="${sdk-folder}\platform-tools" /> <!-- 使用到得命令 --> <property name="aapt" value="${sdk-platform-tools}\aapt.exe" /> <property name="aidl" value="${sdk-platform-tools}\aidl.exe" /> <property name="dx" value="${sdk-platform-tools}\dx.bat" /> <property name="apkbuilder" value="${sdk-tools}\apkbuilder.bat" /> <property name="jarsigner" value="${env.JAVA_HOME}\bin\jarsigner.exe" /> <property name="zipalign" value="${sdk-tools}\zipalign.exe" /> <property name="adb" value="${sdk-tools}\adb.exe" /> <!-- 生成R文件的相对目录 --> <property name="outdir-gen" value="gen" /> <!-- 编译后的文件放置目录 --> <property name="outdir-bin" value="bin" /> <!-- 生成class目录 --> <property name="outdir-classes" value="${outdir-bin}" /> <property name="outdir-classes-ospath" value="${basedir}\${outdir-classes}" /> <!-- 资源文件目录 --> <property name="resource-dir" value="res" /> <property name="assets-dir" value="assets" /> <!-- 配置清单文件 --> <property name="android-manifest-xml" value="AndroidManifest.xml" /> <!-- 编译时需要的jar,如果项目需要使用到地图服务则需要maps.jar --> <property name="android-jar" value="${sdk-platform-folder}\android.jar" /> <property name="android-maps-jar" value="${sdk-folder}\add-ons\addon_google_apis_google_inc_8\libs\maps.jar" /> <!-- 编译aidl文件所需的预处理框架文件framework.aidl --> <property name="framework-aidl" value="${sdk-platform-folder}\framework.aidl" /> <!-- Java源文件目录 --> <property name="srcdir" value="src" /> <property name="srcdir-ospath" value="${basedir}\${srcdir}" /> <!-- 外部类库所在目录 --> <property name="external-lib" value="lib" /> <property name="external-lib-ospath" value="${basedir}\${external-lib}" /> <!-- proguard所在目录 --> <property name="proguard-dir" value="proguard" /> <property name="proguard-lib" value="${proguard-dir}\proguard.jar" /> <property name="unoptimized" value="${proguard-dir}\unoptimized.jar" /> <property name="optimized" value="${proguard-dir}\optimized.jar" /> <!-- classes.dex相关变量 --> <property name="dex-file" value="classes.dex" /> <property name="dex-path" value="${outdir-bin}\${dex-file}" /> <property name="dex-ospath" value="${basedir}\${dex-path}" /> <!-- 经过aapt生成的资源包文件 --> <property name="resources-package" value="${outdir-bin}\resources.ap_" /> <property name="resources-package-ospath" value="${basedir}\${resources-package}" /> <!-- 未签名apk包 --> <property name="out-unsigned-package" value="${outdir-bin}\${appName}-unsigned.apk" /> <property name="out-unsigned-package-ospath" value="${basedir}\${out-unsigned-package}" /> <!-- 证书文件 --> <property name="keystore-file" value="${basedir}\keystore\wp.keystore" /> <!-- 已签名apk包 --> <property name="out-signed-package" value="${outdir-bin}\${appName}-signed.apk" /> <property name="out-signed-package-ospath" value="${basedir}\${out-signed-package}" /> <!-- 优化后apk包 --> <property name="out-zipalign-package" value="${outdir-bin}\${appName}.apk" /> <property name="out-zipalign-package-ospath" value="${basedir}\${out-zipalign-package}" /> <target name="init"> <echo>${appName}</echo> <echo>${appPackage}</echo> <echo>${sdk-folder}</echo> <echo>${sdk-tools}</echo> <echo>${sdk-platform-folder}</echo> <echo>${sdk-platform-tools}</echo> <echo>${aapt}</echo> <echo>${aidl}</echo> <echo>${dx}</echo> <echo>${apkbuilder}</echo> <echo>${jarsigner}</echo> <echo>${zipalign}</echo> <echo>${adb}</echo> <echo>${outdir-gen}</echo> <echo>${outdir-bin}</echo> <echo>${outdir-classes}</echo> <echo>${outdir-classes-ospath}</echo> <echo>${resource-dir}</echo> <echo>${assets-dir}</echo> <echo>${android-manifest-xml}</echo> <echo>${android-jar}</echo> <echo>${android-maps-jar}</echo> <echo>${framework-aidl}</echo> <echo>${srcdir}</echo> <echo>${srcdir-ospath}</echo> <echo>${external-lib}</echo> <echo>${external-lib-ospath}</echo> <echo>${proguard-dir}</echo> <echo>${proguard-lib}</echo> <echo>${unoptimized}</echo> <echo>${optimized}</echo> <echo>${dex-file}</echo> <echo>${dex-path}</echo> <echo>${dex-ospath}</echo> <echo>${resources-package}</echo> <echo>${resources-package-ospath}</echo> <echo>${out-unsigned-package}</echo> <echo>${out-unsigned-package-ospath}</echo> <echo>${keystore-file}</echo> <echo>${out-signed-package}</echo> <echo>${out-signed-package-ospath}</echo> <echo>${out-zipalign-package}</echo> <echo>${out-zipalign-package-ospath}</echo> </target> <target name="initDir" depends="init"> <echo>初始化文件夹...</echo> <delete dir="${outdir-classes}" /> <mkdir dir="${outdir-classes}" /> <echo>初始化文件夹完成...</echo> </target> <!-- 根据工程中的资源文件生成R.java文件 --> <target name="gen-R" depends="initDir"> <echo>生成R.java文件...</echo> <exec executable="${aapt}" failonerror="true"> <arg value="package" /> <!-- 输出详细内容 --> <arg value="-v" /> <!-- 强制覆盖已存在的文件 --> <arg value="-f" /> <!-- 在-J指定的位置下生成相应的包的目录 --> <arg value="-m" /> <!-- 指定R.java文件生成的目录 --> <arg value="-J" /> <arg value="${outdir-gen}" /> <!-- 指定资源文件目录 --> <arg value="-S" /> <arg value="${resource-dir}" /> <!-- 指定assets文件目录 --> <arg value="-A" /> <arg value="${assets-dir}" /> <!-- 指定配置清单文件 --> <arg value="-M" /> <arg value="${android-manifest-xml}" /> <!-- 引入类库 --> <arg value="-I" /> <arg value="${android-jar}" /> </exec> <echo>R.java文件生成完成...</echo> </target> <!-- 编译aidl文件 --> <target name="aidl" depends="gen-R"> <echo>开始编译.aidl文件为.java文件...</echo> <apply executable="${aidl}" failonerror="true" verbose="true"> <!-- aidl声明的目录 --> <arg value="-I${srcdir}" /> <!-- 指定预处理文件 --> <arg value="-p${framework-aidl}" /> <!-- 目标文件目录 --> <arg value="-o${outdir-gen}" /> <!-- 指定哪些文件需要编译 --> <fileset dir="${srcdir}"> <include name="**/*.aidl" /> </fileset> </apply> <echo>aidl文件编译完成...</echo> </target> <!-- 将工程中的java源文件编译成class文件 --> <target name="compile" depends="aidl"> <echo>编译Java源文件...</echo> <!-- bootclasspath 指定引导类文件的位置--> <javac encoding="GB18030" target="1.6" srcdir="." destdir="${outdir-classes}" bootclasspath="${android-jar}" verbose="true"> <classpath> <fileset dir="${external-lib}" includes="**/*.jar" /> <filelist> <file name="${android-maps-jar}" /> </filelist> </classpath> </javac> <echo>Java源文件编译完成...</echo> </target> <!-- 将class文件进行混淆 --> <target name="optimize"> <echo>开始进行代码混淆...</echo> <jar basedir="${outdir-classes}" destfile="${unoptimized}" /> <java jar="${proguard-lib}" fork="true" failonerror="true"> <!-- Dmaximum.inlined.code.length 默认值为8 设置内联代码的长度 --> <jvmarg value="-Dmaximum.inlined.code.length=32" /> <!-- 指定配置文件 --> <arg value="@proguard.cfg" /> <arg value="-injars ${unoptimized}" /> <arg value="-outjars ${optimized}" /> <arg value="-libraryjars ${android-jar}" /> <arg value="-libraryjars ${android-maps-jar}" /> <arg value="-libraryjars ${external-lib}\core.jar " /> </java> <delete dir="${outdir-classes}" /> <mkdir dir="${outdir-classes}" /> <unzip src="${optimized}" dest="${outdir-classes}" /> <delete file="${unoptimized}" /> <delete file="${optimized}" /> <echo>代码混淆完成...</echo> </target> <!-- 将.class文件转化成.dex文件 --> <target name="dex" depends="compile, optimize"> <echo>编译文件和引用类库转化为.dex文件...</echo> <exec executable="${dx}" failonerror="true"> <arg value="--dex" /> <arg value="--verbose" /> <arg value="--output=${dex-ospath}" /> <!-- 要生成.dex文件的源classes和libraries --> <arg value="${outdir-classes-ospath}" /> <arg value="${external-lib-ospath}" /> </exec> <echo>.dex文件转换完成...</echo> </target> <!-- 将资源文件放进输出目录 --> <target name="package-res-and-assets"> <echo>开始转化资源文件...</echo> <exec executable="${aapt}" failonerror="true"> <arg value="package" /> <!-- 输出详细内容 --> <arg value="-v" /> <!-- 强制覆盖已存在的文件 --> <arg value="-f" /> <!-- 指定资源文件目录 --> <arg value="-S" /> <arg value="${resource-dir}" /> <!-- 指定assets文件目录 --> <arg value="-A" /> <arg value="${assets-dir}" /> <!-- 指定配置清单文件 --> <arg value="-M" /> <arg value="${android-manifest-xml}" /> <!-- 引入类库 --> <arg value="-I" /> <arg value="${android-jar}" /> <!-- 指定要生成的包 --> <arg value="-F" /> <arg value="${resources-package}" /> </exec> <echo>资源文件转化完成...</echo> </target> <!-- 打包成未签名的apk --> <target name="package" depends="dex, package-res-and-assets"> <echo>开始打包未签名程序...</echo> <exec executable="${apkbuilder}" failonerror="true"> <arg value="${out-unsigned-package-ospath}" /> <!-- 输出详细内容 --> <arg value="-v" /> <!-- 创建未签名程序 --> <arg value="-u" /> <!-- 指定dex文件添加到应用程序包中 --> <arg value="-f" /> <arg value="${dex-ospath}" /> <!-- 指定资源文件添加到应用程序包中 --> <arg value="-z" /> <arg value="${resources-package-ospath}" /> <!-- 参照源文件的目录结构 --> <arg value="-rf" /> <arg value="${srcdir-ospath}" /> </exec> <echo>未签名程序打包完成...</echo> </target> <!-- 对apk进行签名 --> <target name="jarsigner" depends="package"> <echo>开始为apk文件签名...</echo> <exec executable="${jarsigner}" failonerror="true"> <!-- 签名/验证时输出详细信息 --> <arg value="-verbose" /> <!-- 密钥库位置 --> <arg value="-keystore" /> <arg value="${keystore-file}" /> <!-- 用于密钥库完整性的口令 --> <arg value="-storepass" /> <arg value="wp" /> <!-- 专用密钥的口令(如果不同)--> <arg value="-keypass" /> <arg value="wp" /> <!-- 已签名的 JAR文件的名称 --> <arg value="-signedjar" /> <arg value="${out-signed-package-ospath}" /> <!-- 要签名的JAR文件 --> <arg value="${out-unsigned-package-ospath}" /> <!-- 文件别名 --> <arg value="onewayonelife" /> </exec> <echo>apk文件签名完成...</echo> </target> <!-- 对apk进行优化 --> <target name="zipalign" depends="jarsigner"> <echo>开始对apk文件进行优化...</echo> <exec executable="${zipalign}" failonerror="true"> <!-- 覆盖已经存在的文件 --> <arg value="-f" /> <!-- 输出详细内容 --> <arg value="-v" /> <!-- 以字节为单位对齐 4 提供了32位对齐 --> <arg value="4" /> <!-- 需要优化的apk文件 --> <arg value="${out-signed-package}" /> <!-- 优化完成的apk文件 --> <arg value="${out-zipalign-package}" /> </exec> <echo>apk文件优化完成...</echo> </target> <!-- 发布 --> <target name="release" depends="zipalign"> <!-- 删除未签名apk --> <delete file="${out-unsigned-package-ospath}" /> <delete file="${out-signed-package}" /> <echo>APK文件生成完成,生成目录:${out-zipalign-package-ospath}</echo> </target> <!-- 安装 --> <target name="install"> <echo>开始安装apk文件...</echo> <exec executable="${adb}" failonerror="true"> <arg value="install" /> <arg value="${out-zipalign-package}" /> </exec> <echo>apk文件安装完成...</echo> </target> <!-- 重新安装 --> <target name="reinstall"> <echo>重新安装apk文件...</echo> <exec executable="${adb}" failonerror="true"> <arg value="install" /> <arg value="-r" /> <arg value="${out-zipalign-package}" /> </exec> <echo>重新安装apk文件完成...</echo> </target> <!-- 卸载 --> <target name="uninstall"> <echo>开始卸载apk文件...</echo> <exec executable="${adb}" failonerror="true"> <arg value="uninstall" /> <arg value="${appPackage}" /> </exec> <echo>apk文件卸载完成...</echo> </target> </project> |
|||
学习网址 | |||
http://www.blogjava.net/ldcsaa/archive/2013/01/07/393890.html http://code.google.com/p/portal-basic/downloads/list |
|||
BC3Key.txt | |||
Beyond Compare 3 Licensed to: Olivier Guillory Quantity: 1 user Serial number: 3281-0350 License type: Pro Edition for Windows --- BEGIN LICENSE KEY --- mv1nPlXAywBDCdhxFc9QOVv6TBcQHLAXBQUAKTh3ie4fqSEOnWrPsnVkF yt0wAkJHweoExRJWWVwwCniKNROSdJzJXE6YVapYW7f+tRRXRFI4yn4Nj jZ0RiiqGRCTVzwComUcXB-eiFWRBY6JpSsCNkmIxL5KsRCo442djHhTZE --- END LICENSE KEY ----- |
|||
JVM内存在cmd命令中设置 | |||
典型设置: • java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -Xmx3550m:设置JVM最大可用内存为3550M。 -Xms3550m:设置JVM促使内存为3550m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 -Xmn2g:设置年轻代大小为2G。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。 -Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。 • java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0 -XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5 -XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6 -XX:MaxPermSize=16m:设置持久代大小为16m。 -XX:MaxTenuringThreshold=0:设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。 |
|||
弹出的窗口关闭前刷新主页面的 | |||
<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>修改记录成功</title> <script type="text/javascript"> var cTime=0; function TimeClose() { window.setTimeout('TimeClose()',1000); if(cTime>=0){ cTime--; }else{ closewindow(); } } function closewindow(){ if(window.opener){ opener.document.getElementById("query").fireEvent("onclick"); //执行主页面里面的查询按钮的onclick事件。 window.close(); } } </script> </head> <body onload="TimeClose();"> |
|||
可以得到当前文件在硬盘上的绝对路径! | |||
String path = application.getRealPath("/").substring(0,application.getRealPath("/").length()-1) + request.getRequestURI().substring(request.getContextPath().length()); |
|||
获取网页上所有div中的image对象 | |||
var images = []; var divs = document.getElementsByTagName("div"); for(var i=0,i<divs.length;i++){ var imgs = divs[i].getElementsByTagName("img"); for(var j=0;j<imgs.length;j++){ images.push(imgs[j]) } } |
|||
struts2的tag标签的<s:iterator 的用法 | |||
action中的方法: public String getShowTypeList(){ List<Showtype> list = new ArrayList<Showtype>(); list = showTypeServices.find(); HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); request.setAttribute("list", list); return "index"; } jsp页面: 迭代显示号码和名字 <s:iterator id="showtype" value="%{#request.list}"> <s:property value='#showtype.no'/> <s:property value='#showtype.name'/> </s:iterator> |
|||
STRUTS2获得session和request | |||
在struts1中,获得到系统的request或者session对象非常方便,都是按照形参传递的,但是在struts2中,request和session都被隐藏了 struts提供两种方式访问session和request,其中比较常用的是利用SPRING里面所说的IOC即控制反转 IOC方式: action类实现ServletRequestAware接口,并新建一个HttpServletRequest request public class UserLoginAction extends ActionSupport implements ServletRequestAware{ public void setServletRequest(HttpServletRequest request) { this.request=request; } 然后可以生成的request得到对象,如request.getRemoteAddr() action类实现SessionAware接口,并创建一个MAP对象session public class UserLoginAction extends ActionSupport implements ServletRequestAware,SessionAware{ public void setServletRequest(HttpServletRequest request) { this.request=request; } public void setSession(Map session) { this.session=session; } 非IOC方式 非Ioc方式 这种方式主要是利用了com.opensymphony.xwork2.ActionContext类以及org.apache.struts2.ServletActionContext类,具体的方法如下所示。 获得request对象: A . HttpServletRequest request = ServletActionContext.getRequest (); B.ActionContext ct= ActionContext.getContext() HttpServletRequest request= (HttpServletRequest)ct.get(ServletActionContext. HTTP_REQUEST ); 获得session对象: 在Struts2中底层的session都被封装成了Map类型,我们称之为SessionMap,而平常我们所说的session则是指HttpSession对象,具体的获得方法如下所示。 A.Map session=ActionContext.getSession(); B.Map session=(Map)ActionContext.getContext().get(ActionContext.SESSION); 得到这个SessionMap之后我们就可以对session进行读写了,如果我们想得到原始的HttpSession可以首先得到HttpServletRequest对象,然后通过request.getSession()来取得原始的HttpSession对象。一般情况下SessionMap已经可以完成所有的工作,我们不必再去碰底层的session了。 |
|||
struts2中的action中得到webroot下面的文件夹的路径 | |||
String path =new WebContextFactory().get().getHttpServletRequest().getSession().getServletContext().getRealPath("/upload")+ "\\" + fname;; |
|||
struts2的tag标签的用法 | |||
<s:actionmessage/> <s:actionerror/> <s:form action="fileload" namespace="/fileload" method="post" theme="xhtml" enctype="multipart/form-data"> <s:select label="文件类型:" name="filetype" headerKey="-1" headerValue="请选择文件类型" list="#{1:'网址',0:'关屏',4:'动画文件',5:'图片文件',6:'文本文件',7:'网页文件',13:'PPT文件',2:'文字',3:'FLASH文件'}" value="" required="true" /> <s:select list="%{#request.list}" listKey="no" listValue="name"></s:select> <s:file label="请选择要上传的文件" name="doc"></s:file> <s:submit value="上传"></s:submit> </s:form> |
|||
java配置环境变量的两种方法 | java配置环境变量的两种方法 | ||
假设JDK安装路径: E:\Program Files\Java\jdk1.6.0_05 以下的变量可以设置成用户变量,业可以设置成系统变量。他们的区别只是使用权限的问题而已。 第一种方法: 建立两个变量: 变量名:PATH 变量值:E:\Program Files\Java\jdk1.6.0_05\bin 变量名:CLASSPATH 变量值:.;E:\Program Files\Java\jdk1.6.0_05\lib\tools.jar;E:\Program Files\Java\jdk1.6.0_05\jre\lib\dt.jar 【注意开头是句号加分好】 第二种方法: 建立三个环境变量 变量名:JAVA_HOME 变量值:E:\Program Files\Java\jdk1.6.0_05 注:JDK安装路径 变量名:PATH 变量值:%JAVA_HOME%\bin 变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\jre\lib\dt.jar 【注意开头是句号加分好】 |
|||
scheduleAtFixedRate()定时器 | |||
需要导入: import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; ScheduledExecutorService timer = Executors.newScheduledThreadPool(1); timer.scheduleAtFixedRate( new Runnable(){ public void run(){ System.out.println("来了!"); currentLamp = currentLamp.blackOut();//当前灯变黑 } }, 10, 10, TimeUnit.SECONDS); } |
|||
螺旋矩阵! | 螺旋矩阵! | 关于螺旋矩阵问题的新思路 | |
public class Test { /** * Create date:May 3, 2011 * Method name:main * Description: [螺旋问题] * return:void */ public static void main(String[] args) { LX lx = new LX(3, 5); lx.print(); } } class LX { private int col; private int row; private int[][] matrix;//二维数组 private int count = 0; private boolean flag = true;//行列 private int x = 1;//增减值 public LX(int col, int row) { this.col = col; this.row = row; this.matrix = new int[col][row]; turn(); } public void print() { for (int[] i : matrix) { for (int j : i) { System.out.format("%3d", j); } System.out.println(); } } public void turn() { int i = 0; int j = 0; int end = col * row; while (count < end) { matrix[i][j] = ++count; if (flag) { j += x; // 触边转向 if (j < 0 || j >= row || matrix[i][j] != 0) { j -= x; flag = !flag; i += x; } } else { i += x; // 触边转向 if (i < 0 || i >= col || matrix[i][j] != 0) { i -= x; x *= -1;//纵方向到边界 flag = !flag; j += x; } } } } } |
|||
解决action跳转的路径还有中文参数的问题 | 解决action跳转的路径还有中文参数的问题 | ||
解决action跳转的路径还有中文参数的问题: 首先在actjion 对要传递的中文参数进行URLEncoder加码; URLEncoder.encode("中文","UTF-8"); 然后在页面上进行解码: <% URLDecoder.decode(new String(request.getParameter("username").getBytes("iso8859-1"),"utf-8"),"utf-8"); %> |
|||
重新加载javascript文件的方法! | 重新加载, javascript, 加载js文件, 重新加载js文件 | ||
//重新加载js文件的方法(给js文件定个id) function reloadAbleJSFn(id,newJS){ var oldjs = null; var t = null; var oldjs = document.getElementById(id); if(oldjs) oldjs.parentNode.removeChild(oldjs); var scriptObj = document.createElement("script"); scriptObj.src = newJS; scriptObj.type = "text/javascript"; scriptObj.id = id; document.getElementsByTagName("head")[0].appendChild(scriptObj); } //重新加载正则表达式 var jssrc = new Array(); jssrc[0]="js/jquery-1.3.2.js"; jssrc[1]="js/easy_validator.pack.js"; jssrc[2]="js/jquery.bgiframe.min.js"; for(i=0;i<jssrc.length;i++){ reloadAbleJSFn(i,jssrc[i]); } |
|||
Struts2 的taglib 标签 | struts2 的taglib 标签 | ||
<s:select id="selectList" list="#{'0':'航班号','1':'起飞地','2':'目的地','3':'起飞时间','4':'计划时间','5':'目的地','6':'目的地','7':'目的地','8':'目的地','9':'目的地','10':'目的地','11':'目的地','12':'目的地','13':'目的地','14':'目的地'}" listKey="key" listValue="value" ></s:select> |
|||
java文件流 | [转]java读取文件及文件流 | ||
import java.io.BufferedInputStream; import java.io.File; import java.io.BufferedOutputStream; import java.io.IOException; import java.io.FileInputStream; import java.io.FileOutputStream; public class Util { public Util() { } /** *//** * 读取源文件内容 * @param filename String 文件路径 * @throws IOException * @return byte[] 文件内容 */ public static byte[] readFile(String filename) throws IOException ...{ File file =new File(filename); if(filename==null || filename.equals("")) ...{ throw new NullPointerException("无效的文件路径"); } long len = file.length(); byte[] bytes = new byte[(int)len]; BufferedInputStream bufferedInputStream=new BufferedInputStream(new FileInputStream(file)); int r = bufferedInputStream.read( bytes ); if (r != len) throw new IOException("读取文件不正确"); bufferedInputStream.close(); return bytes; } /** *//** * 将数据写入文件 * @param data byte[] * @throws IOException */ public static void writeFile(byte[] data,String filename) throws IOException ...{ File file =new File(filename); file.getParentFile().mkdirs(); BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(new FileOutputStream(file)); bufferedOutputStream.write(data); bufferedOutputStream.close(); } /** *//** * 从jar文件里读取class * @param filename String * @throws IOException * @return byte[] */ public byte[] readFileJar(String filename) throws IOException ...{ BufferedInputStream bufferedInputStream=new BufferedInputStream(getClass().getResource(filename).openStream()); int len=bufferedInputStream.available(); byte[] bytes=new byte[len]; int r=bufferedInputStream.read(bytes); if(len!=r) ...{ bytes=null; throw new IOException("读取文件不正确"); } bufferedInputStream.close(); return bytes; } /** *//** * 读取网络流,为了防止中文的问题,在读取过程中没有进行编码转换,而且采取了动态的byte[]的方式获得所有的 byte返回 * @param bufferedInputStream BufferedInputStream * @throws IOException * @return byte[] */ public byte[] readUrlStream(BufferedInputStream bufferedInputStream) throws IOException ...{ byte[] bytes = new byte[100]; byte[] bytecount=null; int n=0; int ilength=0; while((n=bufferedInputStream.read(bytes))>=0) ...{ if(bytecount!=null) ilength=bytecount.length; byte[] tempbyte=new byte[ilength+n]; if(bytecount!=null) ...{ System.arraycopy(bytecount,0,tempbyte,0,ilength); } System.arraycopy(bytes,0,tempbyte,ilength,n); bytecount=tempbyte; if(n<bytes.length) break; } return bytecount; } } |
|||
http://lveyo.iteye.com/blog/175705 | http://lveyo.iteye.com/blog/175705 | ||
http://lveyo.iteye.com/blog/175705 |
|||
JSON数据在javascript中的object | |||
<script src=http://www.json.org/json2.js></script> <script> var obj = JSON.parse('{"添加新站点":"icon-addnew-site","系统设置":"icon-set","lovqq.cn":"icon-site","test_4.com":"icon-site","test_3.com":"icon-sitJe","test_2.com":"icon-site","test_1.com":"icon-site"}'); alert(obj.添加新站点); </script> ------------------------------------------------------ 或者 var a = null; eval('a=' + jsonstr + ';'); |
|||
debug调试详解 | debug调试详解 | ||
1, 首先在一个java文件中设断点,然后运行,当程序走到断点处就会转到debug视图下, 2, F5键与F6键均为单步调试,F5是step into,也就是进入本行代码中执行,F6是step over, 也就是执行本行代码,跳到下一行, 3,F7是跳出函数 4,F8是执行到最后。 //////////////////////////////////////////////// 1.Step Into (also F5) 跳入 2.Step Over (also F6) 跳过 3.Step Return (also F7) 执行完当前method,然后return跳出此method 4.step Filter 逐步过滤 一直执行直到遇到未经过滤的位置或断点(设置Filter:window-preferences-java-Debug-step Filtering) 5.resume 重新开始执行debug,一直运行直到遇到breakpoint 6.hit count 设置执行次数 适合程序中的for循环(设置 breakpoint view-右键hit count) 7.inspect 检查 运算。执行一个表达式显示执行值 8.watch 实时地监视变量的变化 9.我们常说的断点(breakpoints)是指line breakpoints,除了line breakpoints,还有其他的断点类型:field(watchpoint)breakpoint,method breakpoint,exception breakpoint. 10.field breakpoint 也叫watchpoint(监视点) 当成员变量被读取或修改时暂挂 11.添加method breakpoint 进入/离开此方法时暂挂(Run-method breakpoint) 12.添加Exception breakpoint 捕抓到Execption时暂挂(待续...) 断点属性: 1.hit count 执行多少次数后暂挂 用于循环 2.enable condition 遇到符合你输入条件(为ture\改变时)就暂挂 3.suspend thread 多线程时暂挂此线程 4.suspend VM 暂挂虚拟机 13.variables 视图里的变量可以改变变量值,在variables 视图选择变量点击右键--change value.一次来进行快速调试。 14.debug 过程中修改了某些code后--〉save&build-->resume-->重新暂挂于断点 |
|||
jsp上得到action的绝对路径 | jsp上得到action的绝对路径 | ||
新建一个jsp ,jsp类型为struts1.2/1.3, 然后把这个jsp页面上的<% taglib %>复制,放在要调用action的jsp里面。把新建的jsp删掉。 然后再这个jsp上写action的绝对路径时就写: <html:rewrite action="/fbf/fbfAccountLogin" /> <form action="" method="post"> <input type="text" name="account"/> <input type="text" name="password"/> <input type="submit" /> </form> 把<html:rewrite action="/fbf/fbfAccountLogin" />放在form的acton里 如:<form action="<html:rewrite action="/fbf/fbfAccountLogin" />" method="post"> 再把外面的<html:rewrite action="/fbf/fbfAccountLogin" />删掉 |
|||
JNDI数据库连接池 | jndi数据库连接池 | ||
连接池一般情况下指数据库连接池,它的作用是将数据库连接池化,在池中时刻保持多个数据库连接,在程序需要连接数据库的时候,直接从连接池中取连接,而不去直接建立到数据库的连接,这样可以大大减少建立连接和断开连接的次数。从而减轻了数据库压力,同时也提高的应用程序的效率。 而JDBC,是Java DataBase Connection的简称,是java连接数据库的一种技术。目前,java只能通过jdbc来连接数据库。 package com.accp.cbrc.util; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; import org.apache.commons.dbcp.BasicDataSource; public class ConnUtil { private static BasicDataSource bds=null; private ConnUtil(){ } private static BasicDataSource getBasicDataSource() { if (null == bds) { try { // 读取配置文件 Properties prop = new Properties(); prop.load(ConnUtil.class .getResourceAsStream("db_cfg.properties")); // prop.loadFromXML(ConnUtil.class // .getResourceAsStream("db_cfg.xml")); // 初始化连接池 bds = new BasicDataSource(); bds.setDriverClassName(prop.getProperty("driver")); bds.setUrl(prop.getProperty("url")); bds.setUsername(prop.getProperty("username")); bds.setPassword(prop.getProperty("password")); bds.setMaxActive(4); bds.setMaxIdle(4); } catch (Exception e) { e.printStackTrace(); } } return bds; } public static Connection getConnection() { Connection conn = null; try { conn = getBasicDataSource().getConnection(); } catch (Exception e) { e.printStackTrace(); } return conn; } public static void closeConnection(Connection conn){ try { if(conn!=null){ conn.close(); conn=null; } } catch (SQLException e) { e.printStackTrace(); } } public static void closePrepareStatement(PreparedStatement pst){ try { if(pst!=null){ pst.close(); } } catch (SQLException e) { e.printStackTrace(); } } public static void closeResultset(ResultSet rs){ try { if(rs!=null){ rs.close(); } } catch (SQLException e) { e.printStackTrace(); } } } |
|||
用来获得到WEB-INF的路径 | 用来获得到web-inf的路径 | ||
package com.brit.cx.common; import java.io.IOException; public class Test { public static void main(String[] args) throws IOException { Util util = new Util(); String path =getAddress()+"/lib/jdom.jar"; System.out.println(path); } /** * 用来获得到WEB-INF的路径 */ public static String getAddress(){ Class theClass = Test.class; java.net.URL u = theClass.getResource(""); //str会得到这个函数所在类的路径 String str = u.toString(); //截去一些前面6个无用的字符 str=str.substring(6,str.length()); //将%20换成空格(如果文件夹的名称带有空格的话,会在取得的字符串上变成%20) str=str.replaceAll("%20", " "); //查找“WEB-INF”在该字符串的位置 int num = str.indexOf("WEB-INF"); //截取即可 str=str.substring(0, num+"WEB-INF".length()); return str; } } |
|||
键盘上的KeyCode | 键盘上的keycode | ||
keycode 8 = BackSpace BackSpace keycode 9 = Tab Tab keycode 12 = Clear keycode 13 = Enter keycode 16 = Shift_L keycode 17 = Control_L keycode 18 = Alt_L keycode 19 = Pause keycode 20 = Caps_Lock keycode 27 = Escape Escape keycode 32 = space space keycode 33 = Prior keycode 34 = Next keycode 35 = End keycode 36 = Home keycode 37 = Left keycode 38 = Up keycode 39 = Right keycode 40 = Down keycode 41 = Select keycode 42 = Print keycode 43 = Execute keycode 45 = Insert keycode 46 = Delete keycode 47 = Help keycode 48 = 0 equal braceright keycode 49 = 1 exclam onesuperior keycode 50 = 2 quotedbl twosuperior keycode 51 = 3 section threesuperior keycode 52 = 4 dollar keycode 553 = 5 percent keycode 54 = 6 ampersand keycode 55 = 7 slash braceleft keycode 56 = 8 parenleft bracketleft keycode 57 = 9 parenright bracketright keycode 65 = a A keycode 66 = b B keycode 67 = c C keycode 68 = d D keycode 69 = e E EuroSign keycode 70 = f F keycode 71 = g G keycode 72 = h H keycode 73 = i I keycode 74 = j J keycode 75 = k K keycode 76 = l L keycode 77 = m M mu keycode 78 = n N keycode 79 = o O keycode 80 = p P keycode 81 = q Q at keycode 82 = r R keycode 83 = s S keycode 84 = t T keycode 85 = u U keycode 86 = v V keycode 87 = w W keycode 88 = x X keycode 89 = y Y keycode 90 = z Z keycode 96 = KP_0 KP_0 keycode 97 = KP_1 KP_1 keycode 98 = KP_2 KP_2 keycode 99 = KP_3 KP_3 keycode 100 = KP_4 KP_4 keycode 101 = KP_5 KP_5 keycode 102 = KP_6 KP_6 keycode 103 = KP_7 KP_7 keycode 104 = KP_8 KP_8 keycode 105 = KP_9 KP_9 keycode 106 = KP_Multiply KP_Multiply keycode 107 = KP_Add KP_Add keycode 108 = KP_Separator KP_Separator keycode 109 = KP_Subtract KP_Subtract keycode 110 = KP_Decimal KP_Decimal keycode 111 = KP_Divide KP_Divide keycode 112 = F1 keycode 113 = F2 keycode 114 = F3 keycode 115 = F4 keycode 116 = F5 keycode 117 = F6 keycode 118 = F7 keycode 119 = F8 keycode 120 = F9 keycode 121 = F10 keycode 122 = F11 keycode 123 = F12 keycode 124 = F13 keycode 125 = F14 keycode 126 = F15 keycode 127 = F16 keycode 128 = F17 keycode 129 = F18 keycode 130 = F19 keycode 131 = F20 keycode 132 = F21 keycode 133 = F22 keycode 134 = F23 keycode 135 = F24 keycode 136 = Num_Lock keycode 137 = Scroll_Lock keycode 187 = acute grave keycode 188 = comma semicolon keycode 189 = minus underscore keycode 190 = period colon keycode 192 = numbersign apostrophe keycode 210 = plusminus hyphen macron keycode 211 = keycode 212 = copyright registered keycode 213 = guillemotleft guillemotright keycode 214 = masculine ordfeminine keycode 215 = ae AE keycode 216 = cent yen keycode 217 = questiondown exclamdown keycode 218 = onequarter onehalf threequarters keycode 220 = less greater bar keycode 221 = plus asterisk asciitilde keycode 227 = multiply division keycode 228 = acircumflex Acircumflex keycode 229 = ecircumflex Ecircumflex keycode 230 = icircumflex Icircumflex keycode 231 = ocircumflex Ocircumflex keycode 232 = ucircumflex Ucircumflex keycode 233 = ntilde Ntilde keycode 234 = yacute Yacute keycode 235 = oslash Ooblique keycode 236 = aring Aring keycode 237 = ccedilla Ccedilla keycode 238 = thorn THORN keycode 239 = eth ETH keycode 240 = diaeresis cedilla currency keycode 241 = agrave Agrave atilde Atilde keycode 242 = egrave Egrave keycode 243 = igrave Igrave keycode 244 = ograve Ograve otilde Otilde keycode 245 = ugrave Ugrave keycode 246 = adiaeresis Adiaeresis keycode 247 = ediaeresis Ediaeresis keycode 248 = idiaeresis Idiaeresis keycode 249 = odiaeresis Odiaeresis keycode 250 = udiaeresis Udiaeresis keycode 251 = ssharp question backslash keycode 252 = asciicircum degree keycode 253 = 3 sterling keycode 254 = Mode_switch |