﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-My Java Blog Park</title><link>http://www.blogjava.net/2195113/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 05:59:39 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 05:59:39 GMT</pubDate><ttl>60</ttl><item><title>http学习笔记</title><link>http://www.blogjava.net/2195113/archive/2006/09/28/72603.html</link><dc:creator>2195113</dc:creator><author>2195113</author><pubDate>Thu, 28 Sep 2006 07:53:00 GMT</pubDate><guid>http://www.blogjava.net/2195113/archive/2006/09/28/72603.html</guid><wfw:comment>http://www.blogjava.net/2195113/comments/72603.html</wfw:comment><comments>http://www.blogjava.net/2195113/archive/2006/09/28/72603.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/2195113/comments/commentRss/72603.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/2195113/services/trackbacks/72603.html</trackback:ping><description><![CDATA[一.HTTP请求:<br />HTTP请求分为:<br />  1).请求行<br />  2).消息头<br />  3).空行<br />  4).正文<br /><br />1.请求行<br />  [方法 URI HTTP版本信息]<br />  如: GET /index.htm HTTP/1.0<br /><br />2.方法(全部大写):<br />  GET      请求URI标识的资源<br />  HEAD     请求获取响应消息头<br />  PUT      请求存储资源,并用URI作为其标识<br />  POST     请求服务器接收信息<br />  CONNECT  ?<br />  TRACE    <br />  DELETE<br />  OPTIONS<br /><br /><br />二.HTTP响应:<br />  1).状态行 <br />  2).消息头<br />  3).空行<br />  4).正文(资源的内容,比如index.htm文件的文本内容)<br /><br /><br />1.状态行<br />  HTTP版本信息 状态码 响应码描述<br />  例: HTTP/1.1 200 OK<br /><br />2.状态码(第一位表示响应的类别)<br />  1xx:<br />  2xx:<br />  3xx:<br />  4xx:<br />  5xx:<br />HTTP协议状态码具体意义<br />   100  :  Continue<br />   101  :  witchingProtocols<br />   200  :  OK<br />   201  :  Created<br />   202  :  Accepted<br />   203  :  Non-AuthoritativeInformation<br />   204  :  NoContent<br />   205  :  ResetContent<br />   206  :  PartialContent<br />   300  :  MultipleChoices<br />   301  :  MovedPermanently<br />   302  :  Found<br />   303  :  SeeOther<br />   304  :  NotModified<br />   305  :  UseProxy<br />   307  :  TemporaryRedirect<br />   400  :  BadRequest<br />   401  :  Unauthorized<br />   402  :  PaymentRequired<br />   403  :  Forbidden<br />   404  :  NotFound<br />   405  :  MethodNotAllowed<br />   406  :  NotAcceptable<br />   407  :  ProxyAuthenticationRequired<br />   408  :  RequestTime-out<br />   409  :  Conflict<br />   410  :  Gone<br />   411  :  LengthRequired<br />   412  :  PreconditionFailed<br />   413  :  RequestEntityTooLarge<br />   414  :  Request-URITooLarge<br />   415  :  UnsupportedMediaType<br />   416  :  Requestedrangenotsatisfiable<br />   417  :  ExpectationFailed<br />   500  :  InternalServerError<br />   501  :  NotImplemented<br />   502  :  BadGateway<br />   503  :  ServiceUnavailable<br />   504  :  GatewayTime-out<br />   505  :  HTTPVersionnotsupported<br /><br />三.HTTP消息头:<br />1. 普通<br />2. 请求头<br />3. 响应头<br />4. 实体头<br /><br />格式:(名字大小写无关)<br />&lt;名字&gt;:&lt;空格&gt;&lt;值&gt;<br /><br />1.普通头<br />  .Cache-Control  (HTTP1.1,  HTTP1.0:Pragma)<br />      缓存指令:<br />      请求时: no-cache,no-store,max-age,max-stale,min-fresh,only-if-cached<br />      响应时: public,private,no-cache,no-store,no-transform,must-revalidate,proxy-revalidate,max-age,s-maxage.<br />      例: Cache-Control: no-cache<br />  .Date<br />      客户端:在发送正文时要包含Date,<br />      服务器:在响应时包含Date.<br />  .Connection<br />  .Pragma(1.0用)<br /><br />2. 请求头<br />  .Accept<br />  .Accept-Charset<br />  .Accept-Encoding<br />  .Accept-Language<br />  .Authorization<br />  .Host(必须的)<br />  .User-agent<br /><br />3.响应头<br />  .Location<br />  .Server<br />  .WWW-Authenticate,要包含在401中.<br /><br />4.实体头<br />  .Content-Encoding<br />  .Content-Language<br />  .Content-Length<br />  .Content-Type<br />  .Last-Modified<br />  .Expires<br /><br />  <br /><img src ="http://www.blogjava.net/2195113/aggbug/72603.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/2195113/" target="_blank">2195113</a> 2006-09-28 15:53 <a href="http://www.blogjava.net/2195113/archive/2006/09/28/72603.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于ThreadLocal的使用</title><link>http://www.blogjava.net/2195113/archive/2006/09/25/71779.html</link><dc:creator>2195113</dc:creator><author>2195113</author><pubDate>Mon, 25 Sep 2006 08:18:00 GMT</pubDate><guid>http://www.blogjava.net/2195113/archive/2006/09/25/71779.html</guid><wfw:comment>http://www.blogjava.net/2195113/comments/71779.html</wfw:comment><comments>http://www.blogjava.net/2195113/archive/2006/09/25/71779.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/2195113/comments/commentRss/71779.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/2195113/services/trackbacks/71779.html</trackback:ping><description><![CDATA[1.线程中要使用的类.各线程只有其一个引用.<br /><br />public class VarClass {<br />    <br />    private static ThreadLocal threadVar=new ThreadLocal(){<br />        protected synchronized Object initialValue(){<br />            System.out.println(Thread.currentThread().getName()+" initial value is 1");<br />            return new Integer(1);<br />        }};<br />    <br />    public int getValue(){<br />        return ((Integer)threadVar.get()).intValue();<br />    }<br />    <br />    public void setValue(){<br />        int a=getValue();<br />        a++;<br />        threadVar.set(new Integer(a));<br />    }<br />}<br /><br /><br />2.线程类<br /><br />public class Worker extends Thread {<br />    private long interval=0;<br />    private boolean isRun=true;<br />    private VarClass v=null;<br />    <br />    public Worker(String name,VarClass v,long interval){<br />        setName(name);<br />        this.v=v;<br />        this.interval=interval;<br />    }<br /><br />    public void run() {<br />        while(isRun){<br />            try{<br />                Thread.sleep(interval);<br />            }catch(InterruptedException e){<br />                e.printStackTrace();<br />            }<br />            v.setValue();<br />        }<br />        System.out.println(getName()+" is over at "+v.getValue());<br />    }<br />    <br />    public void stopThread(){<br />        isRun=false;<br />    }<br />}<br /><br /><br />3.测试类<br />public class TestThreadLocal {<br />   public static void main(String[] args){<br />       VarClass v=new VarClass();<br />       <br />       Worker w1=new Worker("Thread_A",v,100);<br />       Worker w2=new Worker("Thread_B",v,200);<br />       Worker w3=new Worker("Thread_C",v,300);<br />       Worker w4=new Worker("Thread_D",v,400);<br />       Worker w5=new Worker("Thread_E",v,500);<br />       <br />       w1.start();<br />       w2.start();<br />       w3.start();<br />       w4.start();<br />       w5.start();<br />                          <br />       System.out.println("All threads is over after 20 seconds"); <br />       <br />       //延时20秒后,终止5个线程<br />       try{<br />           Thread.sleep(20000);<br />       }catch(InterruptedException e){<br />           e.printStackTrace();<br />       }<br />       <br />       System.out.println("All threads will be overed");<br />       w1.stopThread();<br />       w2.stopThread();<br />       w3.stopThread();<br />       w4.stopThread();<br />       w5.stopThread();<br />  }<br />}<br /><br /><br />4.测试结果:<br />All threads is over after 20 seconds<br />Thread_A initial value is 1<br />Thread_B initial value is 1<br />Thread_C initial value is 1<br />Thread_D initial value is 1<br />Thread_E initial value is 1<br />All threads will be overed<br />Thread_A is over at 200<br />Thread_B is over at 101<br />Thread_D is over at 51<br />Thread_C is over at 68<br />Thread_E is over at 42<br /><br />5.结果说明:虽然各线程使用的是同一个对象的引用,但由于使用了ThreadLocal,实际上每个线程所操作的数据是不一样的.<br /><img src ="http://www.blogjava.net/2195113/aggbug/71779.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/2195113/" target="_blank">2195113</a> 2006-09-25 16:18 <a href="http://www.blogjava.net/2195113/archive/2006/09/25/71779.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>proxool连接池的配置</title><link>http://www.blogjava.net/2195113/archive/2006/08/03/61502.html</link><dc:creator>2195113</dc:creator><author>2195113</author><pubDate>Thu, 03 Aug 2006 06:03:00 GMT</pubDate><guid>http://www.blogjava.net/2195113/archive/2006/08/03/61502.html</guid><wfw:comment>http://www.blogjava.net/2195113/comments/61502.html</wfw:comment><comments>http://www.blogjava.net/2195113/archive/2006/08/03/61502.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/2195113/comments/commentRss/61502.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/2195113/services/trackbacks/61502.html</trackback:ping><description><![CDATA[proxool连接池的配置(0.8.3)<br /><br />1. 配置文件(xml形式,文件名任意)<br />--------------------------------<br />&lt;?xml version="1.0"?&gt;<br />&lt;!-- the proxool configuration can be embedded within your own application's.<br />Anything outside the "proxool" tag is ignored. --&gt;<br /><br />&lt;something-else-entirely&gt;<br />  &lt;proxool&gt;<br />    &lt;alias&gt;mypool&lt;/alias&gt;  &lt;!-- add "proxool" before alias -- proxool.alias --&gt;<br />    &lt;driver-url&gt;jdbc:oracle:thin:@localhost:1521:oradb&lt;/driver-url&gt;<br />    &lt;driver-class&gt;oracle.jdbc.driver.OracleDriver&lt;/driver-class&gt;<br />    &lt;driver-properties&gt;<br />      &lt;property name="user"     value="username"/&gt;<br />      &lt;property name="password" value="password"/&gt;<br />    &lt;/driver-properties&gt;<br />    &lt;connection-lifetime&gt;60&lt;/connection-lifetime&gt;<br />        &lt;maximum-connection-count&gt;50&lt;/maximum-connection-count&gt;<br />    &lt;minimum-connection-count&gt;4&lt;/minimum-connection-count&gt;<br />    &lt;house-keeping-test-sql&gt;select CURRENT_DATE&lt;/house-keeping-test-sql&gt;<br />  &lt;/proxool&gt;<br />&lt;/something-else-entirely&gt;<br /><br /><br />2.web.xml配置<br />--------------<br />&lt;servlet&gt;<br />    &lt;servlet-name&gt;ServletConfigurator&lt;/servlet-name&gt;<br />        &lt;servlet-class&gt;<br />        org.logicalcobwebs.proxool.configuration.ServletConfigurator<br />        &lt;/servlet-class&gt;<br />    &lt;init-param&gt;<br />        &lt;param-name&gt;xmlFile&lt;/param-name&gt;<br />        &lt;param-value&gt;WEB-INF/proxool.xml&lt;/param-value&gt;<br />        &lt;/init-param&gt;<br />    &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />&lt;/servlet&gt; <br /><br />&lt;!-- monitor proxool status --&gt;<br />&lt;servlet&gt;<br />    &lt;servlet-name&gt;Admin&lt;/servlet-name&gt;<br />    &lt;servlet-class&gt;org.logicalcobwebs.proxool.admin.servlet.AdminServlet&lt;/servlet-class&gt;<br />&lt;/servlet&gt;<br />&lt;servlet-mapping&gt;<br />    &lt;servlet-name&gt;Admin&lt;/servlet-name&gt;<br />    &lt;url-pattern&gt;/admin&lt;/url-pattern&gt;<br />&lt;/servlet-mapping&gt;<br /><br /><br />3. 程序调用<br />Connection conn=null;<br />try {<br />    Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");<br />    conn = DriverManager.getConnection("proxool.mypool"); //add "proxool" before "mypool" in proxool.xml<br />}catch(ClassNotFountException e){<br />    e.printStackTrace();<br />}catch(SQLException e) {<br />    e.printStackTrace();<br />}<br /><br /><br /><br /><img src ="http://www.blogjava.net/2195113/aggbug/61502.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/2195113/" target="_blank">2195113</a> 2006-08-03 14:03 <a href="http://www.blogjava.net/2195113/archive/2006/08/03/61502.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>线程同步随记</title><link>http://www.blogjava.net/2195113/archive/2006/07/25/60005.html</link><dc:creator>2195113</dc:creator><author>2195113</author><pubDate>Tue, 25 Jul 2006 06:53:00 GMT</pubDate><guid>http://www.blogjava.net/2195113/archive/2006/07/25/60005.html</guid><wfw:comment>http://www.blogjava.net/2195113/comments/60005.html</wfw:comment><comments>http://www.blogjava.net/2195113/archive/2006/07/25/60005.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/2195113/comments/commentRss/60005.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/2195113/services/trackbacks/60005.html</trackback:ping><description><![CDATA[1. wait:<br />   Causes current thread to wait until either another thread invokes the notify()<a href="/jdk141/api/java/lang/Object.html#notify%28%29"><code></code></a> 
method or the<code> notifyAll()</code><a href="/jdk141/api/java/lang/Object.html#notifyAll%28%29"><code></code></a> 
method for this object<br />   This method should only be called by a thread that is the owner of this object's 
monitor<br /><br />   使当前线程放弃对象锁(等待?)，直到其它线程为该对象调用notify()或notifyAll().<br />   这个方法只能被拥有对象锁（监听器?)的线程执行。<br />   <br />   <br />2. notify,notifyAll<br />   Wakes up a or all threads that are waiting on this object's monitor.<br />   <br />   唤醒正在等待指定对象的锁的一个或所有线程。<br /><br />-- 这样翻译也不知是否准确,括号内是按直译过来的意思。<br /><br />3. 四种方式  <br />   1.static synchronized method(){}<br />   2.sychronized(Class)<br />   3.sychronized method(){}<br />
   4.sychronized() {}<br /><br />4.  书上没说过的： Spin  Lock (旋转锁) <br /><img src ="http://www.blogjava.net/2195113/aggbug/60005.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/2195113/" target="_blank">2195113</a> 2006-07-25 14:53 <a href="http://www.blogjava.net/2195113/archive/2006/07/25/60005.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>动态代理的应用一例</title><link>http://www.blogjava.net/2195113/archive/2006/07/19/59018.html</link><dc:creator>2195113</dc:creator><author>2195113</author><pubDate>Wed, 19 Jul 2006 08:47:00 GMT</pubDate><guid>http://www.blogjava.net/2195113/archive/2006/07/19/59018.html</guid><wfw:comment>http://www.blogjava.net/2195113/comments/59018.html</wfw:comment><comments>http://www.blogjava.net/2195113/archive/2006/07/19/59018.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/2195113/comments/commentRss/59018.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/2195113/services/trackbacks/59018.html</trackback:ping><description><![CDATA[本例以租房子为例：<br />一.说明:<br />   动态代理可动态为某个类添加代理,以拦截客户端的调用,在此基础上进行额外的处理.<br />   目前较流行的AOP技术,就有以动态代理为技术基础进行实现的.<br /><br />   本例中,中介作为房子的动态代理,所有调用房子的方法,必须经过中介类(HouseAgency).<br /><br />二.源代码:<br />   1.House接口:<br /><br />public interface House {<br />    public void rent();<br />    public int getPrice();<br />}<br /><br />   2.House接口实现类ConcreateHouse:<br /><br />public class ConcreteHouse implements House{<br />    private int price;<br />    <br />    public ConcreteHouse(int price){<br />        this.price=price;<br />    }<br />    <br />    public void rent(){<br />        System.out.println("rent ok!");<br />    }<br />    <br />    public int getPrice(){<br />        return price;<br />    }<br />}<br /><br />   3.实现InvocationHandler接口的中介类:<br />    <br />import java.lang.reflect.*;<br /><br />public class HouseAgency implements InvocationHandler {<br />    private Object house;<br /><br />    public HouseAgency(Object house){<br />        this.house=house;<br />    }<br />    <br />    public  HouseAgency(){}<br />       <br />    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {<br /><br />        Object result=null;<br />        if("getPrice".equals(method.getName())){<br />            System.out.println("invoking getPrice() to query rent price.");<br />        }<br />        if("rent".equals(method.getName())){<br />            System.out.println("invoking rent() to rent the house.");<br />        }<br />        result=method.invoke(house,args);<br />        return result;<br />    }<br />}<br /><br />   4.客户端 <br /><br />import java.lang.reflect.*;<br /><br />public class HouseClient{<br /><br />    public static void main(String[] args){<br />        ConcreteHouse house1=new ConcreteHouse(400);<br />        HouseAgency ha=new HouseAgency(house1);<br />        House house=(House)Proxy.newProxyInstance(house1.getClass().getClassLoader(),<br />                                                  house1.getClass().getInterfaces(),ha);<br />        <br />        int price=house.getPrice();<br />        <br />        System.out.println("the house rent is : "+price);<br />        <br />        if(price&gt;300){<br />            house.rent();<br />        }<br />    }<br />}<br /><br />三:打印结果<br />invoking getPrice() to query rent price.<br />the house rent is : 400<br />invoking rent() to rent the house.<br />rent ok!<br /><br /><br /><img src ="http://www.blogjava.net/2195113/aggbug/59018.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/2195113/" target="_blank">2195113</a> 2006-07-19 16:47 <a href="http://www.blogjava.net/2195113/archive/2006/07/19/59018.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDOM(1.0)的初次接触</title><link>http://www.blogjava.net/2195113/archive/2006/07/14/58165.html</link><dc:creator>2195113</dc:creator><author>2195113</author><pubDate>Fri, 14 Jul 2006 05:20:00 GMT</pubDate><guid>http://www.blogjava.net/2195113/archive/2006/07/14/58165.html</guid><wfw:comment>http://www.blogjava.net/2195113/comments/58165.html</wfw:comment><comments>http://www.blogjava.net/2195113/archive/2006/07/14/58165.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/2195113/comments/commentRss/58165.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/2195113/services/trackbacks/58165.html</trackback:ping><description><![CDATA[
		<pre>JDOM(1.0)的初次接触<br /><br />一.源代码：<br /><br />import org.jdom.Element;                 //代表元素<br />import org.jdom.Attribute;               //代表元素的属性<br />import org.jdom.Document;                //代表整个XML文档<br />import org.jdom.Comment;                 //注释<br />import org.jdom.output.XMLOutputter;     //输出<br />import org.jdom.output.Format;           //输出的格式<br />import java.io.FileWriter;               //  :)<br /><br />public class JDomTest {<br /><br />	public static void main(String[] args) throws Exception{<br /><br />		Element root=new Element("人员信息");<br />		Document document=new Document(root);    //建立新XML文档，并以根元素初始化<br /><br />		root.addContent(new Comment("新进公司职员")); //建立新元素，并将新元素作为根元素的内容.<br />		root.setAttribute(new Attribute("单位","XXXX软件公司"));<br />		root.addContent(new Element("姓名").addContent("XYZ"));<br />		root.addContent(new Element("年龄").addContent("23")<br />		                                   .setAttribute("体形","适中"));<br />		root.addContent(new Element("性别").addContent("男"));<br />		root.addContent(new Element("身高").addContent("green"));<br />		root.addContent(new Element("体重").addContent("75KG"));<br /><br /><br />		//output<br />		Format format=Format.getPrettyFormat(); //静态方法，产生两个空格的缩进格式<br />		format.setIndent("    ");               //变成四个空格的缩进格式,用四个空格字符作参数<br />		format.setEncoding("gb2312");           //设置编码格式<br /><br />		XMLOutputter out=new XMLOutputter(format);  <br />		out.output(document,System.out);	//输出到控制台<br /><br />		FileWriter writer=new FileWriter("./jdomtest.xml");<br />		out.output(document,writer);            //输出到文件<br />	}<br />}<br /><br /><br />二.说明：<br />以上代码根据网上文章所写，总体感觉JDOM使用起来，比SAX，DOM要顺手的多（仅为个人观点）。<br /><br />三.程序输出<br /><br />&lt;?xml version="1.0" encoding="gb2312"?&gt;<br />&lt;人员信息 单位="XXXX软件公司"&gt;<br />    &lt;!--新进公司职员--&gt;<br />    &lt;姓名&gt;XYZ&lt;/姓名&gt;<br />    &lt;年龄 体形="适中"&gt;23&lt;/年龄&gt;<br />    &lt;性别&gt;男&lt;/性别&gt;<br />    &lt;身高&gt;green&lt;/身高&gt;<br />    &lt;体重&gt;75KG&lt;/体重&gt;<br />&lt;/人员信息&gt;<br /><br /><br /><br /><!--体重--><!--人员信息--></pre>
<img src ="http://www.blogjava.net/2195113/aggbug/58165.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/2195113/" target="_blank">2195113</a> 2006-07-14 13:20 <a href="http://www.blogjava.net/2195113/archive/2006/07/14/58165.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>