自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1)
  • 资源 (20)
  • 收藏
  • 关注

原创 1.为什么要写博客

常有写笔记的习惯,但都没有搬到网上写,之前有想法在网上写,但都没有坚持写下去,这次坚持写下去。网上写最大的好处就是便于查阅和分享;纸质上写最大好处便于整理和书写。自从2005年正式从事JAVA应用软件的开发至今,越来越有强烈写作冲动,很多时候静下来写些工作总结,采用思维脑图的方式分类梳理,对技术的应用和理解的提升,我深有体会。

2015-11-10 16:46:09 173

JDK时区.txt

JDK时区 相差8小问题 JDK版本问题

2011-11-23

oracle数据库的性能调整

oracle数据库 oracle数据库的性能调整 性能调整

2011-11-23

jbuilder光标问题.txt

jbuilder光标问题.txt jbuilderX JDK1.4版本会有此问题。

2011-11-23

javascript调试工具(第三方集成版本)

javascript调试工具(第三方集成版本)

2010-03-11

javascript调试工具(IE集成版本)

javascript调试工具(IE集成版本)

2010-03-11

eclipse插件管理图示

eclipse插件管理图示 links 方式

2010-03-11

XP系统手功清理垃圾

XP系统手功清理垃圾,不需要第三方工具 加速系统运行速度

2010-03-11

UltraEdit注册码

UltraEdit注册码,比较通用 非常好用

2010-03-11

iReport2.0.5报表工具

iReport2.0.5报表工具 这个版本更好用

2010-03-11

Juilder使用热键

Juilder使用热键,使用Juilder的朋友非常有用的

2010-02-01

javascript 去除特殊符和标点符号

javascript 去除特殊符和标点符号 非常实用

2010-01-27

javascript页面关闭事件

javascript页面关闭触发事件 非常实用

2010-01-27

javascript 对xml文件解析

javascript 对xml文件解析 解决大家常见的javascript对xml文件解析问题

2010-01-27

dex2jar-2.0可用版本

本人使用的版本,可以添加环境变量使用更方便

2015-12-12

最新版本APKTool

本人在使用的。常用功能已写成bat可以使用

2015-12-12

jsp + oracle分页简单实用

<%-- 作者:何志强[hhzqq@21cn.com] 日期:2000-08-03 版本:1.0 功能:JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - Oracle --%> <%@ page contentType="text/html;charset=8859_1" %> <% //变量声明 java.sql.Connection sqlCon; //数据库连接对象 java.sql.Statement sqlStmt; //SQL语句对象 java.sql.ResultSet sqlRst; //结果集对象 java.lang.String strCon; //数据库连接字符串 java.lang.String strSQL; //SQL语句 int intPageSize; //一页显示的记录数 int intRowCount; //记录总数 int intPageCount; //总页数 int intPage; //待显示页码 java.lang.String strPage; int i; //设置一页显示的记录数 intPageSize = 2; //取得待显示页码 strPage = request.getParameter("page"); if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据 intPage = 1; } else{//将字符串转换成整型 intPage = java.lang.Integer.parseInt(strPage); if(intPage<1) intPage = 1; } //装载JDBC驱动程序 java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); //设置数据库连接字符串 strCon = "jdbc:oracle:thin:@linux:1521:ora4cweb"; //连接数据库 sqlCon = java.sql.DriverManager.getConnection(strCon,"hzq","hzq"); //创建一个可以滚动的只读的SQL语句对象 sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY); //准备SQL语句 strSQL = "select name,age from test"; //执行SQL语句并获取结果集 sqlRst = sqlStmt.executeQuery(strSQL); //获取记录总数 sqlRst.last(); intRowCount = sqlRst.getRow(); //记算总页数 intPageCount = (intRowCount+intPageSize-1) / intPageSize; //调整待显示的页码 if(intPage>intPageCount) intPage = intPageCount; %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>JSP数据库操作例程 - 数据分页显示 - JDBC 2.0 - Oracle</title> </head> <body> <table border="1" cellspacing="0" cellpadding="0"> <tr> <th>姓名</th> <th>年龄</th> </tr> <% if(intPageCount>0){ //将记录指针定位到待显示页的第一条记录上 sqlRst.absolute((intPage-1) * intPageSize + 1); //显示数据 i = 0; while(i<intPageSize && !sqlRst.isAfterLast()){ %> <tr> <td><%=sqlRst.getString(1)%></td> <td><%=sqlRst.getString(2)%></td> </tr> <% sqlRst.next(); i++; } } %> </table> 第<%=intPage%>页 共<%=intPageCount%>页 <%if(intPage<intPageCount){%><a href="jdbc20-oracle.jsp?page=<%=intPage+1%>">下一页</a><%}%> <%if(intPage>1){%><a href="jdbc20-oracle.jsp?page=<%=intPage-1%>">上一页</a><%}%> </body> </html> <% //关闭结果集 sqlRst.close(); //关闭SQL语句对象 sqlStmt.close(); //关闭数据库 sqlCon.close(); %>

2009-02-19

java生成RSS的jar,大家看看就知道了

多个关键字请用空格分隔,最多填写5个。点击右侧Tag快速添加多个关键字请用空格分隔,最多填写5个。点击右侧Tag快速添加多个关键字请用空格分隔,最多填写5个。点击右侧Tag快速添加

2009-01-16

数据结构与算法(JAVA篇)之递归算法(二)

/** * * @author SunnyMoon */ /** * 概念介绍: * * 递归的二分查找: 想用最少的比较次数在一个有序的数组中找到一个给定的数据项。 * * 非递归的二分查找:二分查找也可以用非递归的算法,但是分治算法通常要回到递归。分治算 * 法常常是一个方法,在这个方法中含有两个对自身的递归的调用。 * * 分治算法:递归的二分查找是分治算法的一种实现方法。把一个是问题分成两个更小的问题, * 并且解决它们。这个过程一直持续下去直到易于求解的基值情况,就不需再分了。 * 分治算法常常是一上方法,在这个方法中含有两个对自身的递归调用,分别对应于 * 问题的两个部分。在二分查找中,就有两个这样的调用,但是只有一个真的执行了 * (调用哪一个取决于关键字的值)。 * 递归的效率:调用一个方法会有一定的代价和开销。首先,控制必须须从当前位置转移到调用 * 方法的开始处。其次,传给这个方法的参数以及这个方法返回地址都要初压到一 * 个栈里,为的是方法能够访问参数以及知道返回值在存储在哪里,这个过程也称 * "保存现场"。递归方法的使用的本质是从概念上简化了问题,而不是因为它更有 * 效率。当使用递归的效率很低的时候,就可以考虑如果把递归转化成非递归。 */ class OrdArray { private long[] a; private int nElems; public OrdArray(int max) { a = new long[max]; nElems = 0; } public int size() { return nElems; } public int find(long searchKey) { return recFind(searchKey, 0, nElems - 1);//调用递归方法 //return recFind2(searchKey, 0, nElems - 1);//调用非递归方法 } public int recFind(long searchKey, int lowerBound, int upperBound) {//递归方法定义 int curIn = (lowerBound + upperBound) / 2; if (a[curIn] == searchKey) { return curIn; } else if (lowerBound > upperBound) { return nElems; } else { if (a[curIn] < searchKey) { return recFind(searchKey, curIn + 1, upperBound); } else { return recFind(searchKey, lowerBound, curIn - 1); } } } public int recFind2(long searchKey, int lowerBound, int upperBound){//非递归方法定义 int curIn=0; while(true){ curIn=(lowerBound+upperBound)/2; if(a[curIn]==searchKey) return curIn; else if(lowerBound>upperBound) return nElems; else{ if(a[curIn]<searchKey){ lowerBound=curIn+1; } else{ upperBound=curIn-1; } } } } public void insert(long value){ int j; for(j=0; j<nElems; j++) if(a[j]>value) break; for(int k=nElems; k>j; k--) a[k]=a[k-1]; a[j]=value; nElems++; } public void display(){ for(int j=0; j<nElems; j++){ System.out.println(a[j]+""); } } } class BinarySearchApp{ public static void main(String[] args){ int maxSize=100; OrdArray arr=new OrdArray(maxSize); arr.insert(72); arr.insert(90); arr.insert(45); arr.insert(126); arr.insert(54); arr.insert(99); arr.insert(144); arr.insert(27); arr.insert(135); arr.insert(81); arr.insert(18); arr.insert(100); arr.insert(9); arr.insert(117); arr.insert(63); arr.insert(36); arr.display(); int searchKey=100; if(arr.find(searchKey) !=arr.size()) System.out.println("Found "+searchKey); else System.out.println("Can't find "+ searchKey); } } /** * 运行结果: * 9 * 18 * 27 * 36 * 45 * 54 * 63 * 72 * 81 * 90 * 99 * 100 * 117 * 126 * 135 * 144 * Found 100 */ /** * 总结: * 很多的数学问题都使用递归的方法解决,比如找两个数的最大公约数,求一个数的 * 乘方等等。如果有效率需求的时候,可以再考虑将递归转化成非递归。 */

2008-11-26

数据结构与算法(JAVA篇)之递归算法

/** * * @author SunnyMoon */ ////////////////////////////////////////////////////////////////////////////// /** * 概念介绍: * * 消除递归: * 一个算法作为一个递归的方法通常从概念上很容易理解,但实际使用中递归的效率不高,在这种 * 情况下,把递归算法转换成非递归的算法是非常有用的,这种转换经常用到栈。 * * 递归和栈: * 递归和栈之间有着紧密的联系,大部分的编译器使用栈实现递归的。 * * 调用方法的时候发生什么: * 1. 编译器会把这个方法所有当前参数及返回地址压入栈中; * 2. 将控制权交给这个方法,方法通过获得栈顶元素值访问参数; * 3. 方法运行结束的时候,值退栈,参数消失且控制权重新回到返回地址; * * 模拟递归方法: * 可以将任意一个递归方法转换为非递归的基于栈的方法。在一些简单的情况可以完全消除栈,只 * 使用一个简单的循环,但是在很复杂的情况,算法中必须须要保留栈。本例子是简单的情况,可 * 以进一步完全消除栈。 */ ///////////////////////////////////////////////////////////////////////////// /** * 计算三角数字的问题: * 递归算法描述如下 * int triiangle(int n){ * if(n==1) * return 1; * else * return (n+triangle(n-1)); * } */ import java.io.*; /** * 模拟一个递归方法,通用的方式消除递归 */ class Params {//封装了方法的返回地址和方法的参数 public int number; public int returnAddress; public Params(int num, int returnAdd) { number = num; returnAddress = returnAdd; } } class StackX {//模拟递归时使用的栈 private int maxSize; private Params[] stackArray; private int top; public StackX(int s) { maxSize = s; stackArray = new Params[maxSize]; top = -1; } public void push(Params p) { stackArray[++top] = p; } public Params pop() { return stackArray[top--]; } public Params peek() { return stackArray[top]; } } class StackTriangleApp { static int theNumber; static int theAnswer; static StackX theStack; static int logicAddress; static Params theseParams; public static void main(String[] args) throws IOException{//主方法 System.out.print("Number = "); theNumber = getInt(); stackTriangle(); System.out.println(""); System.out.println("Trriangle = " + theAnswer); } @SuppressWarnings("empty-statement") public static void stackTriangle() {//计算三角数字的方法,模拟递归方法 theStack = new StackX(100); logicAddress = 1;//设置一个逻辑地址为入口地址 while (step() == false); } public static boolean step() { switch (logicAddress) { case 1: theseParams = new Params(theNumber, 6);//设定循环返回的地址 theStack.push(theseParams); logicAddress = 2; break; case 2: theseParams = theStack.peek(); if (theseParams.number == 1) { theAnswer = 1; logicAddress = 5; } else { logicAddress = 3; } break; case 3: Params newParams = new Params(theseParams.number - 1, 4); theStack.push(newParams); logicAddress = 2; break; case 4: theseParams = theStack.peek(); theAnswer = theAnswer + theseParams.number; logicAddress = 5; break; case 5: theseParams = theStack.peek(); logicAddress = theseParams.returnAddress; theStack.pop(); break; case 6: return true; } return false; } public static String getString() throws IOException{ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String s = br.readLine(); return s; } public static int getInt() throws IOException{ String s=getString(); return Integer.parseInt(s); } } /** * 总结: * 当要求效率的时候可以把弟归转化为基于栈的非递归,进而可以把基于栈的转化为仅有循环的 * 非递归,这种情况下效率是最高的。 * 但是一些复杂的情况可以转化为基于栈的非递归,但是无法消除栈的。 * 一些递归的算法是非常优秀的,比如分治算法。 */

2008-11-26

javascript小技巧

<html> <head> <title>网页特效|Linkweb.cn/Js|---重要信息说明脚本</title> <style type="text/css"> <!-- body { font-family: "宋体"; font-size: 9pt; margin-top: 0px; margin-left: 0px; margin-right: 0px} A { COLOR: black; FONT-SIZE: 11pt; FONT-WEIGHT: 400; TEXT-DECORATION: none } A:hover { COLOR: red; FONT-SIZE: 11pt; FONT-WEIGHT: 400; TEXT-DECORATION: underline } a:active { font: 11pt "宋体"; cursor: hand; color: #FF0033 } --> </style> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <script language="javascript"> //显示的信息,可以使用HTML语法,注意引号用法,单套双。 var message='<b><font size=5 face=arial color=red><a href="#" target="_blank">请点击进入本站</a></font></b>' //背景色 var backgroundcolor="#eeffee" //0 代表信息永远显示,1 代表信息只显示一段时间,2为随机显示模式; var displaymode=1 //如果显示模式为在指定时间内显示,输入时间段(1000为1秒); var displayduration=10000 //1代表闪烁,0代表不闪烁; var flashmode=1 //如果设置了闪烁,输入闪烁的颜色; var flashtocolor="lightgreen" ////下面不必修改/// function regenerate(){ window.location.reload() } var which=0 function regenerate2(){ if (document.layers) setTimeout("window.onresize=regenerate",700) } function display2(){ if (document.layers){ if (topmsg.visibility=="show") topmsg.visibility="hide" else topmsg.visibility="show" } else if (document.all){ if (topmsg.style.visibility=="visible") topmsg.style.visibility="hidden" else topmsg.style.visibility="visible" setTimeout("display2()",Math.round(Math.random()*10000)+10000) } } function flash(){ if (which==0){ if (document.layers) topmsg.bgColor=flashtocolor else topmsg.style.backgroundColor=flashtocolor which=1 } else{ if (document.layers) topmsg.bgColor=backgroundcolor else topmsg.style.backgroundColor=backgroundcolor which=0 } } if (document.all){ document.write('<span id="topmsg" style="position:absolute;visibility:hidden">'+message+'</span>') } function logoit(){ document.all.topmsg.style.left=document.body.scrollLeft+document.body.clientWidth/2-document.all.topmsg.offsetWidth/2 document.all.topmsg.style.top=document.body.scrollTop+document.body.clientHeight-document.all.topmsg.offsetHeight-4 } function logoit2(){ topmsg.left=pageXOffset+window.innerWidth/2-topmsg.document.width/2 topmsg.top=pageYOffset+window.innerHeight-topmsg.document.height-5 setTimeout("logoit2()",90) } function setmessage(){ document.all.topmsg.style.left=document.body.scrollLeft+document.body.clientWidth/2-document.all.topmsg.offsetWidth/2 document.all.topmsg.style.top=document.body.scrollTop+document.body.clientHeight-document.all.topmsg.offsetHeight-4 document.all.topmsg.style.backgroundColor=backgroundcolor document.all.topmsg.style.visibility="visible" if (displaymode==1) setTimeout("topmsg.style.visibility='hidden'",displayduration) else if (displaymode==2) display2() if (flashmode==1) setInterval("flash()",1000) window.onscroll=logoit window.onresize=new Function("window.location.reload()") } function setmessage2(){ topmsg=new Layer(window.innerWidth) topmsg.bgColor=backgroundcolor regenerate2() topmsg.document.write(message) topmsg.document.close() logoit2() topmsg.visibility="show" if (displaymode==1) setTimeout("topmsg.visibility='hide'",displayduration) else if (displaymode==2) display2() if (flashmode==1) setInterval("flash()",1000) } if (document.layers) window.onload=setmessage2 else if (document.all) window.onload=setmessage </script> <center> <br> <br> <br><center> <table border=1 bordercolor=#000000 borderlight=green style="border-collapse: collapse" cellpadding="0" cellspacing="0"> <tr><td align=center><font size=5 color=red face="Arial, Helvetica, sans-serif"><strong>下面为脚本显示区!</strong></font></td></tr><tr><td align=left height=110 width=240>下面的信息说明10秒后消失,你也可以设置更长时间或不消失. </td></tr> </table></center> <br> <br> <center> <SCRIPT LANGUAGE="JavaScript"> <!-- hide function goHist(a) { history.go(a); } //--> </script></center> <br> <br> </body> </html>

2008-08-29

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除