memcached安装需要指定libevent

1、下载memcached和libevent

2、安装libevent

  • tar zxvf libevent-1.3d.tar.gz
  • cd libevent-1.3d
  • ./configure -prefix=/usr
  • make
  • make install

3、检查安装的libevent

ls -la /usr/lib | grep libevent

lrwxrwxrwx    1 root root       22  7月  4 11:18 libevent-1.3d.so.1 -> libevent-1.3d.so.1.0.3
-rwxr-xr-x    1 root root   317044  7月  4 11:18 libevent-1.3d.so.1.0.3
-rw-r--r--    1 root root   513386  7月  4 11:18 libevent.a
-rwxr-xr-x    1 root root      844  7月  4 11:18 libevent.la
lrwxrwxrwx    1 root root       22  7月  4 11:18 libevent.so -> libevent-1.3d.so.1.0.3

4、memcached安装

  • tar xzvf memcached-1.2.4.tar.gz
  • cd memcached-1.2.4
  • ./configure --prefix=/usr/local/memcached --with-libevent=/usr
  • make
  • make install

5、启动memcached

     /usr/local/memcached/bin/memcached -d -m 1024 -p 12121 -u root

 

如果启动memcached的时候出现错误:

/usr/local/memcached/bin/memcached: error while loading shared libraries: libevent-1.3d.so.1: cannot open shared object file: No such file or directory

需要使用 ldconfig,使系统/usr/lib目录从新载如下so

Continue reading "安装 memcached"
Tags: memcached Category: java
Posted on 2008-07-04 20:08:57 reader (421) | Comments (0)

在tomcat中设置了404和505等页面,设置方法,打开web.xml


    <error-page>
        <error-code>505/error-code>
        <location>/505.html</location>
    </error-page>
    <error-page>
        <error-code>403</error-code>
        <location>/403.html<location>
    </error-page>
    <error-page>
        <error-code>404</error-code>
        <location>/404.html</location>
    </error-page>

设置404.html的内容为test 404,然后随便输入个URL用IE进行测试,显示始终是错误,但用FF就显示正常,然后就定位是IE的问题,调查资料发现IE存在问题,当404页面内容小于512bytes时候,就会用IE自带的错误显示页面.

 

 

Continue reading "IE下404页面不显示的问题"
Tags: 404505IE Category: java
Posted on 2008-06-16 21:58:40 reader (479) | Comments (0)

下载windows下的memcached,安装运行步骤:

1、安装 c:\memcached\memcached.exe -d install

2、启动 c:\memcached\memcached.exe -d start

memcached的基本设置

-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助

 

Spring applicationContext.xml中设置

  1. <bean id="memcache" class="com.danga.MemCached.SockIOPool"  
  2.     factory-method="getInstance" init-method="initialize"  
  3.     destroy-method="shutDown">  
  4.     <constructor-arg>  
  5.         <value>memcache</value>  
  6.     </constructor-arg>  
  7.     <property name="servers">  
  8.         <list>  
  9.             <value>${memcache.server}</value>  
  10.         </list>  
  11.     </property>  
  12.     <property name="initConn">  
  13.         <value>${memcache.initConn}</value>  
  14.     </property>  
  15.     <property name="minConn">  
  16.         <value>${memcache.minConn}</value>  
  17.     </property>  
  18.     <property name="maxConn">  
  19.         <value>${memcache.maxConn}</value>  
  20.     </property>  
  21.     <property name="maintSleep">  
  22.         <value>${memcache.maintSleep}</value>  
  23.     </property>  
  24.     <property name="nagle">  
  25.         <value>${memcache.nagle}</value>  
  26.     </property>  
  27.     <property name="socketTO">  
  28.         <value>${memcache.socketTO}</value>  
  29.     </property>  
  30. </bean>   
配置信息
memcache.server=192.168.0.9:11211
memcache.initConn=20
memcache.minConn=10
memcache.maxConn=50
memcache.maintSleep=30
memcache.nagle=false
memcache.socketTO=3000
 
memcached常用方法:
1、设置数据到内存
memCachedClient.set(key, value, cache中存在时长);
2、删除内存中的数据
memCachedClient.delete(key);
3、取得内存中的数据
memCachedClient.get(key);
Continue reading "spring整合memcached"
Tags: memcachedspring Category: java
Posted on 2008-06-02 19:28:31 reader (423) | Comments (0)
由于需要使用wget下载文件,发现不能通过域名来下载,所以配置了主机DNS

配置方式:
vi /etc/resolv.conf
增加nameserver
nameserver 202.101.224.68
nameserver 202.101.240.36
nameserver 202.109.129.2
其中nameserver后的IP为你主机所在区域的IP
Continue reading "Linux dns设置"
Tags: linuxdns Category: java
Posted on 2008-05-04 20:32:31 reader (355) | Comments (0)
A页面的域名 a.com B页面的域名b.com,现A中iframe嵌了个B页面,此时B中的cookie就会失效。

解决办法  :
1、增加P3P.xml文件
     在B的网站服务器上存放P3P.xml文件,文件内容为
  1. <META xmlns="http://www.w3.org/2002/01/P3Pv1">  
  2. <POLICY-REFERENCES>  
  3. <POLICY-REF about="/w3c/P3P.xml">  
  4. <COOKIE-INCLUDE name="*" value="*" domain="*" path="*"/>  
  5. </POLICY-REF>  
  6. </POLICY-REFERENCES>  
  7. </META>  
2、在web.xml中增加个fliter,保证每次应答的时候浏览器头文件中都设置了p3p的头信息。
  1. ((HttpServletResponse)response).setHeader("P3P""CP=\"NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM\"  policyref=\"http://www.udooo.com/w3c/P3P.xml\""); 
Continue reading "使用p3p解决Iframe中cookie跨域问题"
Tags: P3Pweb.xmlfiltercookie Category: java
Posted on 2007-11-27 10:23:46 reader (1,955) | Comments (5)
1、下载lucene,最新的版本为lucene-2.2
2、运行luceneweb需要建立index文件,我们将下载的lucene的docs目录拷贝到tomcat下的luceneweb下。
       在cmd中运行如下的命令 :
       java -classpath "D:\lucene-2.2.0\lucene-core-2.2.0.jar;D:\lucene-2.2.0\lucene-demos-2.2.0.jar" org.apache.lucene.demo.IndexHTML -create -index "D:\webserver\apache-tomcat-6.0.13_test\webapps\luceneweb\index" "D:\webserver\apache-tomcat-6.0.13_test\webapps\luceneweb\docs"
3、可以看到在D:\webserver\apache-tomcat-6.0.13_test\webapps\luceneweb\index下建立了几个索引文件。
4、启动Tomcat
5、在浏览器中运行 http://127.0.0.1:8080/luceneweb/将看到lucene的界面,输入apache将输出检索结果。
Continue reading "luceneweb 配置步骤"
Tags: lucene Category: java
Posted on 2007-10-25 18:35:20 reader (1,045) | Comments (0)

公司平台从ASP+SQLSERVER往J2EE+MYSQL迁移,需要将SQLSERVER的库转移到MYSQL,在网上找了些ETL工具,由于需要些逻辑运算,最后放弃了ETL工具,直接用JDBC来执行导出导入。

    public void convertDB(int start,int end) throws InstantiationException,

           IllegalAccessException, ClassNotFoundException {

       Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

       String sqlserver_url = "jdbc:microsoft:sqlserver://192.168.0.135:1433;DatabaseName=cubcn";

       // mydb为数据库

       String user = "sa";

       String password = "1234";

       Connection sql_conn = null;

        PreparedStatement sql_stmt = null;

       Connection mysql_conn = null;

       PreparedStatement mysql_stmt = null;

       try {

           System.out.print("开始....");

           sql_conn = (Connection) DriverManager.getConnection(sqlserver_url, user,

                  password);

           sql_stmt = (PreparedStatement) sql_conn.prepareStatement("SELECT * FROM B_UserInfo where ui_id between '"+start+"' and '"+end+"'");

           ResultSet sql_rs = (ResultSet) sql_stmt

                  .executeQuery();

Continue reading "使用JDBC将SqlServer库导出到Mysql"
Tags: jdbcsqlservermysql Category: java
Posted on 2007-10-25 15:43:53 reader (1,013) | Comments (0)
log4j.rootLogger=error, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

log4j.appender.D2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.D2.DatePattern='.'yyyy-MM-dd
log4j.appender.D2.File=c:/blog.log
log4j.appender.D2.Append=true
log4j.appender.D2.Threshold=INFO
log4j.appender.D2.layout=org.apache.log4j.PatternLayout
log4j.appender.D2.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

log4j.logger.com.ntsky.blog = warn stdout
#log4j.logger.com.ibatis=ERROR D2
#log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=ERROR D2
#log4j.logger.com.ibatis.common.jdbc.ScriptRunner=ERROR D2
#log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=ERROR D2
#log4j.logger.java.sql.Connection=ERROR D2
#log4j.logger.java.sql.Statement=DEBUG D2
log4j.logger.java.sql.PreparedStatement=DEBUG stdout
log4j.logger.java.sql.ResultSet=INFO stdout

java.sql.PreparedStatement输出SQL信息,java.sql.ResultSet输出结果信息.
Continue reading "配置log4j查看ibatis输出的SQL信息"
Posted on 2007-10-23 11:59:38 reader (1,763) | Comments (0)
web应用越来越趋向于多用户,像blog等,但同样在开发过程中不能忽视常见的安全问题。

例如 :
用户 A  写了两篇blog blog的ID号为 1、2
用户 B  写了两篇blog blog的ID号为 3、4

问题 : 用户A在后台登录后通过模拟 postDelete?id=3来删除用户B的记录,这样就会造成用户A删除用户B记录的问题。

解决方法 :
1、在Action中执行删除前判断下该记录是否属于该记录,如果不属于就报非法操作,返回信息给用户
2、在前台生成ID时候同时加上校验码,校验码信息为MD5(ID+内部分配的KEY),在Action中同样再根据取得的ID和内部的KEY MD5一次, 判断传递过来的校验码是否属于等于根据ID生成的校验码。

优劣 :
1、第一种传递参数方便,代码实现比较简单,需要根据ID查找次数据库。
2、第二种需要多传递一个参数,进行两次MD5转换,不需要去查找数据库。

由于第二种不需要去查找数据库,缓解了数据库的压力,我更倾向于第二种。
Continue reading "多用户系统安全问题和解决方案"
Tags: 安全MD5 Category: java
Posted on 2007-10-22 11:48:10 reader (719) | Comments (0)
JDBC连接SQL执行select语句,当SQL SERVER表中有text类型字段,并且字段中的内容为空时,就会出现 “Error reading data from static cursor cache” 错误。

解决方法 :
1、保证text字段内容都不为空
2、如果一定有空的话,存放个空格字符
Continue reading "Error reading data from static cursor cache"
Tags: sqlserverjdbc Category: java
Posted on 2007-10-21 19:23:07 reader (890) | Comments (0)
总结Java中使用split分隔字符串

1、转义字符 "\"
转义字符进行分隔时,需要将转义字符再转义一次,也就是"\\"

2、正则表达式字符

public class Test {

   

    public static void main(String[] args) {

       String str = "a|b";

       System.out.println(str.split("|").length);

    }

   

}

由于|属于正则表达式字符,split的参数也是正则表达式,这里 得到的结果是 4,修改"|"为[|],得到的结果为2

从上面的结果我们可知,像replaceAll这类函数代替换字符为正则表达式字符时同样加上"[]"进行replace.
Continue reading "Java split的几个注意点"
Tags: javasplit Category: java
Posted on 2007-10-12 00:19:25 reader (3,322) | Comments (0)

Blog项目对应的文件目录树如下:

blog:.
├─demo                 —— demo 目录
├─sql                      —— sql脚本目录
├─src                      —— Java源文件目录
├─test                     —— 测试文件目录
└─web                    —— web存放目录
    ├─admin
    ├─common
    ├─includes
    ├─scripts
    ├─system
    ├─themes
    ├─UserFiles
    └─WEB-INF       —— j2ee规范目录
        ├─classes     —— 编译路径
        ├─config
        └─lib               —— 类库目录

Continue reading "Ant编译打包项目"
Tags: antjsp预编译 Category: java
Posted on 2007-09-29 14:15:21 reader (1,137) | Comments (0)
当我们在ibatis中使用一对一的时候,想取得自增加字段的值。  

Ibatis也提供这种取值方式,具体的配置如下 :

DROP TABLE IF EXISTS `t_blog`;
CREATE TABLE `t_blog`(
  `id` bigint NOT NULL auto_increment,    -- blog编号
  `name` varchar(255) NOT NULL ,  -- blog名称
  `description` varchar(255) default '' ,  -- blog介绍
  `domain` varchar(255) NOT NULL ,  -- blog域名
  PRIMARY KEY  (`id`)
)
TYPE=InnoDB DEFAULT CHARSET=utf8 ;

ibatis中对应的配置如下:
<!-- 添加博客 -->
<insert id="insertBlog">
        insert into t_blog
            (name, description, domain)
        values
            (#name#, #description#, #domain#)
        <selectKey resultClass="int" keyProperty="id" >
            SELECT @@IDENTITY AS ID
        </selectKey>

</insert>
Continue reading "ibatis实现取得mysql表中auto_increment的值"
Posted on 2007-09-26 00:10:12 reader (1,322) | Comments (2)
记录下Java+Linux开发的点滴,预防自己犯同样的错误。
  1. Linux下文件名区分大小写,所以代码中注意文件名的大小写。
  2. Linux下Mysql的表名区别大小写,字段不区分,所以Java代码中表名大小写也需注意。
  3. Linux的分隔符是"/"而windows下是"\",而windows下"/"也能识别的,所以Java代码中统一用"/"。
Continue reading "Java+Linux程序应该注意的问题"
Tags: Linuxjavamysql Category: java
Posted on 2007-09-23 22:58:27 reader (765) | Comments (1)
Action的定义 :
public class UserAction extends ActionSupport{
       public String doCreate() throws Exception{
          .....
        }
       public String doEdit() throws Exception{
          .....
        }  
       public String execute() throws Exception{
          .....
        }  
}

struts.xml中定义方法 :
一、最古老的方法       
<action name="user" class="com.ntsky.blog.web.struts2.action.UserAction">
        <result name="success">/user.ftl</result>
</action>
<action name="createUser" class="com.ntsky.blog.web.struts2.action.UserAction" method="create">
        <result name="success">/user.ftl</result>
</action>
说明 :
    1、访问user.action时默认执行的是UserAction的execute方法
    2、访问createUser.action的时候执行的是UserAction的create方法

二、webwork中的方法
<action name="user" class="com.ntsky.blog.web.struts2.action.UserAction">
        <result name="success">/user.ftl</result>
</action>
说明:
访问user!create.action,执行的是UserAction的doCreate的方法

三、struts2中的定义方法
<action name="User-*" class="com.ntsky.blog.web.struts2.action.UserAction">
        <result name="success">/user.ftl</result>
</action>
说明 :
访问User-create时候执行的是UserAction中的doCreate方法。  
Continue reading "struts2中struts.xml的配置方法以及访问方法"
Tags: struts2struts.xml Category: java
Posted on 2007-09-23 22:43:31 reader (1,969) | Comments (1)
博客基于struts2开发,又遇到个莫名奇妙的问题,错误如下 :

严重: Error filterStart
2007-9-22 22:18:55 org.apache.catalina.core.StandardContext start
严重: Context startup failed due to previous errors
Continue reading "struts2 严重: Error filterStart"
Tags: tomcaterror filterStart Category: java
Posted on 2007-09-23 01:41:56 reader (2,729) | Comments (3)
公司项目的系统使用了Tiles进行布局管理,对使用过程进行次整理。
使用环境是 struts1.2.9 + Tiles

模板页面定义为 :
<%@ page contentType="text/html;charset=GBK"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>首页</title>
</head>
<body>
<div id="container"> 
  <!--页面主层-->
  <tiles:insert attribute="header"/>
  <div id="pagebody">
    <!--主体pagebody-->
    <tiles:insert attribute="menu"/>
    <!--/左边树-->
    <div id="divbar">
      <!--展开隐藏按钮-->
      <img src="images/icon_left.jpg" width="9" height="52" style="CURSOR: hand; padding-top:200px;"  onclick="displayleft(this,'left')"/> </div>
    <!--/展开隐藏按钮-->
    <div id="mainBody">
      <!--右侧主体mainBody-->
      <div class="mainright">
        <!--右侧主体内层mainright-->
        <tiles:insert attribute="body"/>
      </div>
      <!--/右侧主体内层mainright-->
    </div>
    <!--/右侧主体mainBody-->
  </div>
  <!--/主体pagebody---->
  <tiles:insert attribute="footer"/>
</div>
<!--/页面主层-->
</body>
</html>

下面再看看struts中和jsp中如何调用tiles.
Continue reading "网页布局Tiles的使用"
Tags: tiles模板jsp布局 Category: java
Posted on 2007-09-17 17:22:44 reader (930) | Comments (0)
为了实现SEO,博客采用Url Rewrite Filter 3.0.4 进行URL转发,下面是我使用Url Rewrite filter的总结。

  1. 博客代码中的URL都使用了response.encodeURL("url");对应的urlrewrite.xml中的配置如下  
      <outbound-rule>
            <from>/home.action</from>
            <to>/home</to>
        </outbound-rule>

    此时当url为/home.action时在页面上输出的时候都为/home,这样的好处时候当不使用urlrewrite的时候,输出的就为/home.action,我们的URL就不会写死。
  2.  urlrewrite的配置问题,在使用过程,想过滤 post.action?postId=1成post/1,我在urlrewriter.xml的设置如下 :
        <outbound-rule>
            <from>/post.action
    \?postId=([0-9]+)</from>
            <to>/post/$1</to>
        </outbound-rule>

    注意,“?”部分必须经过转义一次,开始的时候我还以为我配错了,后来才发觉这个“?”应该是关键字必须经过转义才可以。
     
Continue reading "URL Rewrite使用总结"
Tags: url rewrite Category: java
Posted on 2007-09-14 09:47:12 reader (1,137) | Comments (0)
现在很多博客系统都支持 *.yourdomain.com的方式进行访问, 在google搜了把关于tomcat泛域名解析的配置,也没有找到合适的答案,不过最终还是把配置环境给整好。

系统的环境是 apache2.0+tomcat5.0.29

关于tomcat的域名配置,大家可以查看http://www.ntsky.com/tech/java/webserver/2007-07-17/7fc1864580a4c7cc.html

由于tomcat的host中无法配置*.yourdomain.com这种方式的域名,所以开始我就觉得无法实现泛域名,而apache是支持的,只要设置*.yourdomain.com就可以了。在server.xml中有个<Engine defaultHost="localhost" name="Catalina"> 当非法子域名指向到本站时候都提交到了webapps/ROOT去, 所以我就想如果那样的话我只要设置泛域名解析到默认的defaultHost就可以了。
Continue reading "Tomcat泛域名解析"
Tags: tomcat泛域名 Category: java
Posted on 2007-09-11 09:27:27 reader (1,009) | Comments (0)
集团为了统一框架,可能会采用jboss seam和jsf的整合,所以学了下jboss seam。在网上search到一个在eclipse环境下开发jboss seam的视频,觉得不错,共享出来。
Continue reading "jboss seam study video"
Tags: jboss seam Category: java
Posted on 2007-08-27 14:37:34 reader (951) | Comments (0)

使用Java对屏幕的拷贝,收藏...

import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

/*******************************************************************
 * 该JavaBean可以直接在其他Java应用程序中调用,实现屏幕的"拍照"
 * This JavaBean is used to snapshot the GUI in a 
 * Java application! You can embeded
 * it in to your java application source code, and us
 * it to snapshot the right GUI of the application
 * @see javax.ImageIO
 * @author liluqun ([email]liluqun@263.net[/email])
 * @version 1.0
 *
 *****************************************************/

public class GuiCamera
{  
    private String fileName; //文件的前缀
    private String defaultName = "GuiCamera";
    static int serialNum=0;
    private String imageFormat; //图像文件的格式
    private String defaultImageFormat="png";
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

    /****************************************************************
     * 默认的文件前缀为GuiCamera,文件格式为PNG格式
     * The default construct will use the default 
     * Image file surname "GuiCamera", 
     * and default image format "png"
     ****************************************************************/
    public GuiCamera() {
      fileName = defaultName;
      imageFormat=defaultImageFormat;
    
    }

    /****************************************************************
     * @param s the surname of the snapshot file
     * @param format the format of the  image file, 
     * it can be "jpg" or "png"
     * 本构造支持JPG和PNG文件的存储
     ****************************************************************/
    public GuiCamera(String s,String format) {
    
      fileName = s;
      imageFormat=format;
    }
    
    /****************************************************************
     * 对屏幕进行拍照
     * snapShot the Gui once
     ****************************************************************/
    public void snapShot() {
    
      try {
      //拷贝屏幕到一个BufferedImage对象screenshot
        BufferedImage screenshot = (new Robot()).createScreenCapture(new
            Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight()));
        serialNum++;
        //根据文件前缀变量和文件格式变量,自动生成文件名
        String name=fileName+String.valueOf(serialNum)+"."+imageFormat;
        File f = new File(name);
        System.out.print("Save File "+name);
      //将screenshot对象写入图像文件
        ImageIO.write(screenshot, imageFormat, f);
        System.out.print("..Finished!\n");
      }
      catch (Exception ex) {
        System.out.println(ex);
      }
    }

    public static void main(String[] args)
    {
        GuiCamera cam= new GuiCamera("d:\\Hello", "png");//

        cam.snapShot();
    }
}

Continue reading "Java的屏幕拷贝应用"
Tags: java图片 Category: java
Posted on 2007-08-26 18:57:18 reader (634) | Comments (0)

现有需求需要根据图片URL读取图片,并在图片上增加水印。

Java代码实现如下 :

public static void watermark(String imageUrl) {
  URL url = null;
  try {
   url = new URL(imageUrl);
   // url = new URL("http://bbs.ntsky.com/images/logo.gif");

  } catch (MalformedURLException e) {
   e.printStackTrace();
  }

  Image image = null;
  try {
   image = ImageIO.read(url);

   int tempWidth = image.getWidth(null);
   int tempHeight = image.getHeight(null);
   int x = (int) (tempWidth * 0.1);
   int y = (int) (tempHeight * 0.9);
   BufferedImage bufferedImage = drawImageFrame(image, tempWidth,
     tempHeight);
   Graphics graphics = bufferedImage.getGraphics();
   // 设置添加的字体颜色

   graphics.setColor(new Color(Integer.parseInt("000000", 16)));
   // 设置字体
   Font mFont = new Font("宋体", Font.PLAIN, 12);// 默认字体
   graphics.setFont(mFont);

   // 输出文字
   graphics.drawString(www.ntsky.com, 10, 20);
   FileOutputStream out = new FileOutputStream("c:/11.jpg");
   JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
   encoder.encode(bufferedImage);
   out.close();

  } catch (IOException ioException) {
    logger.error("载入图片错误!", ioException);
  } catch (ImageFormatException e) {
   e.printStackTrace();
  }
 } 

Continue reading "Java读取web图片并加水印"
Tags: javaio Category: java
Posted on 2007-08-22 14:34:23 reader (1,085) | Comments (2)

Java实现四舍五入方法

 

方法一 : 

double source = 3.129;

java.text.DecimalFormat df = new java.text.DecimalFormat("#.00");   // 保留小数点后两位   

String aveprice=df.format(source);     

 

方法二 : 

double source = 3.129;

BigDecimal bd = new BigDecimal(source);

bd.setScale(2,BigDecimal.ROUND_HALF_EVEN).floatValue() ;  // 保留小数点后两位

Continue reading "Java实现四舍五入方法"
Tags: java四舍五入 Category: java
Posted on 2007-08-14 13:47:51 reader (877) | Comments (0)
Struts 1.x版的详细流程图
Continue reading "struts1.x流程图 "
Tags: struts Category: java
Posted on 2007-08-10 11:27:25 reader (868) | Comments (0)