31
3月
从去年的10月份开始,因为工作的关系,好久没有运动,以前很难感冒的我最近就感冒了两回
,今天天气好,邀了几个去踢球,才上场没有10分钟,就感觉跑不动了
,但是还是休息、踢球、休息、踢球这样一个下午,直到实在跑不动了。。。
。。。但是出完汗的感觉真的好。。。哈哈 。。。。。
,今天天气好,邀了几个去踢球,才上场没有10分钟,就感觉跑不动了
,但是还是休息、踢球、休息、踢球这样一个下午,直到实在跑不动了。。。
。。。但是出完汗的感觉真的好。。。哈哈 。。。。。
29
3月
今天打开电脑,按照往常一样登上msn和qq(fc6系统),无意中发现,怎么我的3D DESKTOP感觉有点不流畅(以前没有注意),我的本本可是1280M的RAM啊。。。。
赶紧top一下,竟然发现我的GAIM占了将近600M的内存。。那还得了!把qq kill掉再看看,还是占了300多兆!我晕了,干脆把GAIM給kill了。下了个EVA装着,然后所有的“不适”都不见了
,机子的风扇也安静了一点。嚯嚯~~~~~
赶紧top一下,竟然发现我的GAIM占了将近600M的内存。。那还得了!把qq kill掉再看看,还是占了300多兆!我晕了,干脆把GAIM給kill了。下了个EVA装着,然后所有的“不适”都不见了
,机子的风扇也安静了一点。嚯嚯~~~~~
28
3月
A村庄周1,2,3都说谎话,B村庄4,5,6说谎话,其他时间都说真话。
一个人问今天星期几,
A村庄的人说"昨天我说谎话",
B村庄的人说"昨天我说谎话",
问:今天到底星期几?
呵呵。。。。
一个人问今天星期几,
A村庄的人说"昨天我说谎话",
B村庄的人说"昨天我说谎话",
问:今天到底星期几?
呵呵。。。。
28
3月
在一个项目中用到了extremetable,但是有些的体现形式还不符合业务的需求,所以做了些改动。下面贴出来,供大家参考:
主要增加功能:加入 全选 反选 全不选 的按钮,外观布置改动,增加table的td监听事件。
首先在http://extremecomponents.org/下载eXtremeComponents 1.0.1 的源码
修改org.extremecomponents.table.view.DefaultToolbar如下:
主要增加功能:加入 全选 反选 全不选 的按钮,外观布置改动,增加table的td监听事件。
首先在http://extremecomponents.org/下载eXtremeComponents 1.0.1 的源码
修改org.extremecomponents.table.view.DefaultToolbar如下:
28
3月
久违了的太阳终于出来了,感觉到了春天的气息,精神百倍,上班也没有那么的吃力了。
27
3月
以前写的,现在转过来。(整合篇)
先来搭下环境,jstl的包当然是不能少的拉。其次,下载必须的标签库或者是java的标签库文件。没有的话,也可以联系我 xxx_programer@163.com
将jstl 1.1.jar加到class中,(这就不要我详细的讲了吧),然后将标签库放到WEB-INF下或则将java的标签库文件(*.jar)放到WEB-INF\lib下,就可以写测试代码了。
first_jstl.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<c:set var="userName" value="hellking"/>
<c:set value="16" var="age"/>
欢迎您,<c:out value="${userName}"/><hr>
<c:forEach var="i" begin="1" end="5">
<font size=${i}>${i}</font>
<br>
</c:forEach>
<c:if test="${age<18}">
对不起,你的年龄过小,不能访问这个网页◎!
</c:if>
<br>
</body>
</html>
web.xml
(使用java的标签库文件*.jar)
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"
version="2.4">
<display-name>jstl test</display-name>
<description>
jstl test
</description>
</web-app>
(使用标签库文件*.tld)
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/fmt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
<taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
<taglib-location>/WEB-INF/c-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/sql.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
<taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
<taglib-location>/WEB-INF/x.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>
<taglib-location>/WEB-INF/x-rt.tld</taglib-location>
</taglib>
</web-app>
好了,一个最简单的包含有jstl的页面设计完成了。下面测试。
http://localhost:8080/jstl/frist_jstl.jsp
页面输出结果:
欢迎您,hellking
--------------------------------------------------------------------------------
1
2
3
4
5
对不起,你的年龄过小,不能访问这个网页◎!
呵呵。。。简单吧,下篇继续。。。。。:)
JSTL详解(一)
先来搭下环境,jstl的包当然是不能少的拉。其次,下载必须的标签库或者是java的标签库文件。没有的话,也可以联系我 xxx_programer@163.com
将jstl 1.1.jar加到class中,(这就不要我详细的讲了吧),然后将标签库放到WEB-INF下或则将java的标签库文件(*.jar)放到WEB-INF\lib下,就可以写测试代码了。
first_jstl.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<c:set var="userName" value="hellking"/>
<c:set value="16" var="age"/>
欢迎您,<c:out value="${userName}"/><hr>
<c:forEach var="i" begin="1" end="5">
<font size=${i}>${i}</font>
<br>
</c:forEach>
<c:if test="${age<18}">
对不起,你的年龄过小,不能访问这个网页◎!
</c:if>
<br>
</body>
</html>
web.xml
(使用java的标签库文件*.jar)
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"
version="2.4">
<display-name>jstl test</display-name>
<description>
jstl test
</description>
</web-app>
(使用标签库文件*.tld)
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/fmt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
<taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
<taglib-location>/WEB-INF/c-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/sql.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
<taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
<taglib-location>/WEB-INF/x.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>
<taglib-location>/WEB-INF/x-rt.tld</taglib-location>
</taglib>
</web-app>
好了,一个最简单的包含有jstl的页面设计完成了。下面测试。
http://localhost:8080/jstl/frist_jstl.jsp
页面输出结果:
欢迎您,hellking
--------------------------------------------------------------------------------
1
2
3
4
5
对不起,你的年龄过小,不能访问这个网页◎!
呵呵。。。简单吧,下篇继续。。。。。:)
27
3月
在我们进行jsp的开发中,不可避免的会遇到有jsp层叠的情况,所以经过我的试验,<IFRAME>这个标签还是很有的作用的。下面我们来看看具体怎么使用:
<IFRAME> 里面的属性我就不多说了,都是很常见的。这里我多写了一个函数dyniframesize(),它的作用是处理装载页面与容器页面的同步,即将大小调整到合适的位置。
因为这样装载的页面很难固定的控制大小,所以用Document进行相对大小的设定,是一个不错的想法。
<IFRAME> 里面的属性我就不多说了,都是很常见的。这里我多写了一个函数dyniframesize(),它的作用是处理装载页面与容器页面的同步,即将大小调整到合适的位置。
因为这样装载的页面很难固定的控制大小,所以用Document进行相对大小的设定,是一个不错的想法。
27
3月
1、CreateDataBase.java
[codes=java]
/**
*@description 创建库文件
*@package com.mysearch
*@author 李国庆
*@company LEEMENZ
*@version 1.0.0
*@discription
*
*/
package com.mysearch;
import java.io.File;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.IndexWriter;
/**
* @author Administrator
*
*/
public class CreateDataBase {
public CreateDataBase() {
}
/**
*
* @param file
* @return
*/
public int createDataBase(File file) {
int returnValue = 0;
if (!file.isDirectory()) {
file.mkdirs();
}
try {
IndexWriter indexWriter = new IndexWriter(file,
new StandardAnalyzer(), true);
indexWriter.close();
returnValue = 1;
} catch (Exception ex) {
ex.printStackTrace();
}
return returnValue;
}
/**
*传入检索库路径,初始化库
* @paramfile
* @return
*/
public int createDataBase(String file) {
return this.createDataBase(new File(file));
}
/*
*
*
*/
public static void main(String[] args) {
CreateDataBase temp = new CreateDataBase();
if (temp.createDataBase("d:\\lucene\\holendb") == 1) {
System.out.println("db init succ");
}
}
}
[codes=java]
/**
*@description 创建库文件
*@package com.mysearch
*@author 李国庆
*@company LEEMENZ
*@version 1.0.0
*@discription
*
*/
package com.mysearch;
import java.io.File;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.IndexWriter;
/**
* @author Administrator
*
*/
public class CreateDataBase {
public CreateDataBase() {
}
/**
*
* @param file
* @return
*/
public int createDataBase(File file) {
int returnValue = 0;
if (!file.isDirectory()) {
file.mkdirs();
}
try {
IndexWriter indexWriter = new IndexWriter(file,
new StandardAnalyzer(), true);
indexWriter.close();
returnValue = 1;
} catch (Exception ex) {
ex.printStackTrace();
}
return returnValue;
}
/**
*传入检索库路径,初始化库
* @paramfile
* @return
*/
public int createDataBase(String file) {
return this.createDataBase(new File(file));
}
/*
*
*
*/
public static void main(String[] args) {
CreateDataBase temp = new CreateDataBase();
if (temp.createDataBase("d:\\lucene\\holendb") == 1) {
System.out.println("db init succ");
}
}
}
27
3月
我们不管开发什么系统,通常情况下,都要求有日志,我现在写了个,希望大家提意见:
package com.util.log;
import java.util.Vector;
import java.sql.*;
import com.database.ConnectionManager;
/**
*
* <p>Title:日志处理类 </p>
* <p>Description: 将日志信息写入到数据库</p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: 自由鸟</p>
* @author XXX Programer
* @version 1.0
*/
public class LogUtil {
/**
* 用于缓存系统日志。当这个Vector对象的大小达到一定的值时,系统把这个缓存里的
* 数据一次性写入数据库。这个集合对象里每个元素都是一个LogBean对象
*/
private static Vector logCache = new Vector();
/**
* 缓存容量
* 当缓存里面的数据条数(即logCache对象的大小)达到这个值时,系统把缓存里的数据
* 写入数据库
*/
private static final int CACHE_SIZE = 20; //XX条记录写入一次
/**
* 把数据集里的数据写入到数据库
* @param datas 数据集合。里面每个元素都是一条数据(LogBean对象)
*/
private static void writeToDB(Vector datas){
Connection conn = null;
PreparedStatement pstmt = null;
try{
conn = ConnectionManager.getConnection();
String sql = "insert into lmzwap.WAP_MANAGE_LOG (USER_NAME, LOG_TIME, CLIENT_IP, OPERATE_TYPE, OPERATE_DESC) "
+" values(?,NOW(),?,?,?)";
pstmt = conn.prepareStatement(sql);
LogBean logBean;
//System.out.println("---------------writeToDB,datas.size(): "+datas.size());
for(int i=0;i<datas.size();i++){
logBean = (LogBean)datas.get(i);
pstmt.setString(1,logBean.user_name);
pstmt.setString(2,logBean.client_ip);
pstmt.setString(3,String.valueOf(logBean.operateTypeID));
pstmt.setString(4,logBean.operateTypeDesc);
pstmt.addBatch();
}//end for i
pstmt.executeBatch(); //执行批处理
}catch(Exception e){
System.out.println("===============批处理写入日志失败,e: "+e);
}finally{
if(pstmt!=null)
try{
pstmt.close();
}catch(Exception e1){}
if(conn!=null)
try{
conn.close();
}catch(Exception e1){}
}
}
/**
* 把系统日志缓存里的数据写入数据库,不论缓存里有多少条记录。这个方法一般用在
* 用户从系统退出时时,把缓存里的数据写入数据库,而不管缓存里的数据条数是否达到
* 缓存容量
*/
public static void writeToDB(){
Vector copied = null;
synchronized(logCache){
//从缓存取得数据:
copied = new Vector(logCache.size());
for(int i=0;i<logCache.size();i++){
copied.addElement(logCache.get(i));
}
logCache.clear(); //清除缓存数据
}//end synchronized
writeToDB(copied);
}
/**
* 记录系统日志。调用这个方法只是把日志内容写进缓存,并不一定立即写入数据库;
* 当缓存里的日志数量达到一定程度时,再一次性写入数据库
* @param request 客户端发过来的request请求,里面包含了客户端端IP的信息,
* 通过这个请求可得到session,在session里可得到操作员工ID,
* 操作员工姓名等资料
* @param operateTypeID: 操作类型ID
* @param operateTypeDesc: 操作类型描述
* @param operateDetail: 操作的具体内容的描述
*/
public static void writeLog(String user_name,String client_ip,
char operateTypeID,String operateTypeDesc) {
try{
//Timestamp time = new Timestamp(System.currentTimeMillis()); //操作时间
LogBean bean = new LogBean(user_name,client_ip,operateTypeID,operateTypeDesc);
synchronized(logCache){
logCache.addElement(bean); //向缓存加入数据
//如果缓存里的数据达到了缓存容量时,向数据库写入数据:
if(logCache.size()>=CACHE_SIZE){
//从缓存取得数据:
Vector copied = new Vector(logCache.size());
for(int i=0;i<logCache.size();i++){
copied.addElement(logCache.get(i));
}
logCache.clear(); //清除缓存数据
writeToDB(copied);
}
}//end synchronized
}catch(Exception e){
System.out.println("LogUtil,e: "+e);
}
}
/**
* <pre>
* 类名: LogBean
* 描述: 用来缓存日志数据的类。一个对象代表一条日志记录
* </pre>
*/
private static class LogBean{
String user_name;
String client_ip;
char operateTypeID;
String operateTypeDesc;
public LogBean(String user_name,String client_ip,
char operateTypeID,String operateTypeDesc){
this.user_name = user_name;
this.client_ip = client_ip;
this.operateTypeID = operateTypeID;
this.operateTypeDesc = operateTypeDesc;
}//
}
}
package com.util.log;
import java.util.Vector;
import java.sql.*;
import com.database.ConnectionManager;
/**
*
* <p>Title:日志处理类 </p>
* <p>Description: 将日志信息写入到数据库</p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: 自由鸟</p>
* @author XXX Programer
* @version 1.0
*/
public class LogUtil {
/**
* 用于缓存系统日志。当这个Vector对象的大小达到一定的值时,系统把这个缓存里的
* 数据一次性写入数据库。这个集合对象里每个元素都是一个LogBean对象
*/
private static Vector logCache = new Vector();
/**
* 缓存容量
* 当缓存里面的数据条数(即logCache对象的大小)达到这个值时,系统把缓存里的数据
* 写入数据库
*/
private static final int CACHE_SIZE = 20; //XX条记录写入一次
/**
* 把数据集里的数据写入到数据库
* @param datas 数据集合。里面每个元素都是一条数据(LogBean对象)
*/
private static void writeToDB(Vector datas){
Connection conn = null;
PreparedStatement pstmt = null;
try{
conn = ConnectionManager.getConnection();
String sql = "insert into lmzwap.WAP_MANAGE_LOG (USER_NAME, LOG_TIME, CLIENT_IP, OPERATE_TYPE, OPERATE_DESC) "
+" values(?,NOW(),?,?,?)";
pstmt = conn.prepareStatement(sql);
LogBean logBean;
//System.out.println("---------------writeToDB,datas.size(): "+datas.size());
for(int i=0;i<datas.size();i++){
logBean = (LogBean)datas.get(i);
pstmt.setString(1,logBean.user_name);
pstmt.setString(2,logBean.client_ip);
pstmt.setString(3,String.valueOf(logBean.operateTypeID));
pstmt.setString(4,logBean.operateTypeDesc);
pstmt.addBatch();
}//end for i
pstmt.executeBatch(); //执行批处理
}catch(Exception e){
System.out.println("===============批处理写入日志失败,e: "+e);
}finally{
if(pstmt!=null)
try{
pstmt.close();
}catch(Exception e1){}
if(conn!=null)
try{
conn.close();
}catch(Exception e1){}
}
}
/**
* 把系统日志缓存里的数据写入数据库,不论缓存里有多少条记录。这个方法一般用在
* 用户从系统退出时时,把缓存里的数据写入数据库,而不管缓存里的数据条数是否达到
* 缓存容量
*/
public static void writeToDB(){
Vector copied = null;
synchronized(logCache){
//从缓存取得数据:
copied = new Vector(logCache.size());
for(int i=0;i<logCache.size();i++){
copied.addElement(logCache.get(i));
}
logCache.clear(); //清除缓存数据
}//end synchronized
writeToDB(copied);
}
/**
* 记录系统日志。调用这个方法只是把日志内容写进缓存,并不一定立即写入数据库;
* 当缓存里的日志数量达到一定程度时,再一次性写入数据库
* @param request 客户端发过来的request请求,里面包含了客户端端IP的信息,
* 通过这个请求可得到session,在session里可得到操作员工ID,
* 操作员工姓名等资料
* @param operateTypeID: 操作类型ID
* @param operateTypeDesc: 操作类型描述
* @param operateDetail: 操作的具体内容的描述
*/
public static void writeLog(String user_name,String client_ip,
char operateTypeID,String operateTypeDesc) {
try{
//Timestamp time = new Timestamp(System.currentTimeMillis()); //操作时间
LogBean bean = new LogBean(user_name,client_ip,operateTypeID,operateTypeDesc);
synchronized(logCache){
logCache.addElement(bean); //向缓存加入数据
//如果缓存里的数据达到了缓存容量时,向数据库写入数据:
if(logCache.size()>=CACHE_SIZE){
//从缓存取得数据:
Vector copied = new Vector(logCache.size());
for(int i=0;i<logCache.size();i++){
copied.addElement(logCache.get(i));
}
logCache.clear(); //清除缓存数据
writeToDB(copied);
}
}//end synchronized
}catch(Exception e){
System.out.println("LogUtil,e: "+e);
}
}
/**
* <pre>
* 类名: LogBean
* 描述: 用来缓存日志数据的类。一个对象代表一条日志记录
* </pre>
*/
private static class LogBean{
String user_name;
String client_ip;
char operateTypeID;
String operateTypeDesc;
public LogBean(String user_name,String client_ip,
char operateTypeID,String operateTypeDesc){
this.user_name = user_name;
this.client_ip = client_ip;
this.operateTypeID = operateTypeID;
this.operateTypeDesc = operateTypeDesc;
}//
}
}
27
3月
刚刚做了个类似功能,与大家分享下,大家多提意见:
import java.io.*;
import java.util.zip.*;
import java.util.*;
public class UnZip {
static final int BUFFER = 2048; //设置缓冲流
public static String[] unZip(String path) {
String[] list = null;
String patht = new String("文件路径");
try {
BufferedOutputStream dest = null;
FileInputStream fis = new FileInputStream(path); //获得输入流
ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
ZipEntry entry;
while ( (entry = zis.getNextEntry()) != null) {
int count;
byte data[] = new byte[BUFFER]; //开始读入
// 分文件写到磁盘
FileOutputStream fos = new FileOutputStream(patht+entry.getName());
dest = new BufferedOutputStream(fos, BUFFER);
while ( (count = zis.read(data, 0, BUFFER))
!= -1) {
dest.write(data, 0, count);
}
//关闭流
dest.flush();
dest.close();
}
zis.close();
File f = new File(patht);
list = f.list(); //返回由path指定路径里的所有文件名和目录名
}
catch (Exception e) {
e.printStackTrace();
}
return list;
}
}
import java.io.*;
import java.util.zip.*;
import java.util.*;
public class UnZip {
static final int BUFFER = 2048; //设置缓冲流
public static String[] unZip(String path) {
String[] list = null;
String patht = new String("文件路径");
try {
BufferedOutputStream dest = null;
FileInputStream fis = new FileInputStream(path); //获得输入流
ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
ZipEntry entry;
while ( (entry = zis.getNextEntry()) != null) {
int count;
byte data[] = new byte[BUFFER]; //开始读入
// 分文件写到磁盘
FileOutputStream fos = new FileOutputStream(patht+entry.getName());
dest = new BufferedOutputStream(fos, BUFFER);
while ( (count = zis.read(data, 0, BUFFER))
!= -1) {
dest.write(data, 0, count);
}
//关闭流
dest.flush();
dest.close();
}
zis.close();
File f = new File(patht);
list = f.list(); //返回由path指定路径里的所有文件名和目录名
}
catch (Exception e) {
e.printStackTrace();
}
return list;
}
}














