我的評論
re: 由數(shù)據(jù)訂正想到的 stone2083 2008-07-28 21:13
無奈啊,很多時候,也只能盡自己力量,在有限的條件呢,把事情做好。
理想和現(xiàn)實的差距實在是太大了。
理想和現(xiàn)實的差距實在是太大了。
re: 資源如何避免多線程下載 stone2083 2008-07-18 20:39
文章的本意不是說通過servlet,來控制文件的下載。
而是站在協(xié)議的角度上,通過servlet的例子,來說明,只要修改content-length的值,就能達到“只允許單線程下載資源“的目的。
雖然,通過修改協(xié)議的規(guī)定,擅自修改http頭信息的方式的做法,不符合規(guī)范。但是對于小站點來說,是一個成本最小的方法。
站點上的圖片等,都是資源,如果都允許多線程下載,那么用戶量一多,對于小網(wǎng)站來說,還是有點困難的。
文章采用servlet,僅僅用于舉例說明.真正的應用上,可以通過修改apache,lighttpd,等web服務器的配置,來達到這個目的。
如果是資源的下載,那么肯定通過更為專業(yè)的ftp server來對外服務。而不是采用http協(xié)議。當然傳統(tǒng)的ftp server,也是有IO消耗的。
至于樓上所說的X-sendfile,我也看過javaeye的文章(http://robbin.javaeye.com/blog/154538)。X-sendfile,確實是一個很先進的理念(至少我看來是,或許我是一個很老土的人)。
但是自己對這個沒有任何嘗試,也沒有更多的評論資格。
而是站在協(xié)議的角度上,通過servlet的例子,來說明,只要修改content-length的值,就能達到“只允許單線程下載資源“的目的。
雖然,通過修改協(xié)議的規(guī)定,擅自修改http頭信息的方式的做法,不符合規(guī)范。但是對于小站點來說,是一個成本最小的方法。
站點上的圖片等,都是資源,如果都允許多線程下載,那么用戶量一多,對于小網(wǎng)站來說,還是有點困難的。
文章采用servlet,僅僅用于舉例說明.真正的應用上,可以通過修改apache,lighttpd,等web服務器的配置,來達到這個目的。
如果是資源的下載,那么肯定通過更為專業(yè)的ftp server來對外服務。而不是采用http協(xié)議。當然傳統(tǒng)的ftp server,也是有IO消耗的。
至于樓上所說的X-sendfile,我也看過javaeye的文章(http://robbin.javaeye.com/blog/154538)。X-sendfile,確實是一個很先進的理念(至少我看來是,或許我是一個很老土的人)。
但是自己對這個沒有任何嘗試,也沒有更多的評論資格。
re: SSL雙向認證java實現(xiàn) stone2083 2008-07-14 13:21
@JessonWoo
hi,首先申明下,我自己對ssl的認識還是很膚淺的,僅僅上次和cnnic合作的時候,為了了解安全性問題,才被迫稍微看了相應的一些知識.
所謂認證,是要對某臺(當然可以是集群)服務器身份做認證.
認證方式有兩種:
自簽名認證:服務端生成key,然后根據(jù)key導出證書.公布于站點.
通過第三方認證機構認證:有服務端生成key,然后導出認證信息,交由天威誠信等第三方認證機構認證,最后生成證書,公布于站點.
客戶端,將證書下載,確認為可信任公司認證信息,并且導入到受信任區(qū)(trustscore),建立連接與服務端進行正常交互.至此,就完成了對服務端的認證.
所以客戶端必須將證書導入信任區(qū).
java中,可以查看證書:
寫個簡單的方法:
FileInputStream fis = new FileInputStream("cert.cer");
CertificateFactory cf=CertificateFactory.getInstance("X509");
X509Certificate c=(X509Certificate) cf.generateCertificate(fis);
System.out.println(c.getSubjectDN());
//可以查看下X509Certificate的一些get方法.
其實keytool僅僅是jdk中的工具.
openssl是更常用的一個工具
可見:http://www.openssl.org/
hi,首先申明下,我自己對ssl的認識還是很膚淺的,僅僅上次和cnnic合作的時候,為了了解安全性問題,才被迫稍微看了相應的一些知識.
所謂認證,是要對某臺(當然可以是集群)服務器身份做認證.
認證方式有兩種:
自簽名認證:服務端生成key,然后根據(jù)key導出證書.公布于站點.
通過第三方認證機構認證:有服務端生成key,然后導出認證信息,交由天威誠信等第三方認證機構認證,最后生成證書,公布于站點.
客戶端,將證書下載,確認為可信任公司認證信息,并且導入到受信任區(qū)(trustscore),建立連接與服務端進行正常交互.至此,就完成了對服務端的認證.
所以客戶端必須將證書導入信任區(qū).
java中,可以查看證書:
寫個簡單的方法:
FileInputStream fis = new FileInputStream("cert.cer");
CertificateFactory cf=CertificateFactory.getInstance("X509");
X509Certificate c=(X509Certificate) cf.generateCertificate(fis);
System.out.println(c.getSubjectDN());
//可以查看下X509Certificate的一些get方法.
其實keytool僅僅是jdk中的工具.
openssl是更常用的一個工具
可見:http://www.openssl.org/
re: jdk gc簡介 stone2083 2008-07-03 22:09
這么朋友實在是過獎了.
我僅僅記錄了我對jdk gc的淺薄理解.
sun的文檔,比我這邊是詳細多了.
我僅僅記錄了我對jdk gc的淺薄理解.
sun的文檔,比我這邊是詳細多了.
re: CGlib簡單介紹 stone2083 2008-07-03 22:07
不可否認,每項技術總會存在弊端,比如cglib,導致jvm Permanet Generation 不再穩(wěn)定,如果配置不當,并且大量生成cglib代理類的時候,出現(xiàn)out of memory;
又或者,調試代理類的時候,相當不方便...
但是cglib有他可喜的一面,底層采用asm,動態(tài)生成字節(jié)碼,比jdk proxy效率高了不知多少;為spring aop提供了底層的一種實現(xiàn);hibernate使用cglib動態(tài)生成DO/PO (接口層對象)字節(jié)碼...應用是何等的廣泛.
為java靜態(tài)語言提供了動態(tài)特性(當然,底層是asm功勞),多么可喜.
我不清楚,你所謂使用cglib產(chǎn)生附加問題,具體是什么問題?
又或者,調試代理類的時候,相當不方便...
但是cglib有他可喜的一面,底層采用asm,動態(tài)生成字節(jié)碼,比jdk proxy效率高了不知多少;為spring aop提供了底層的一種實現(xiàn);hibernate使用cglib動態(tài)生成DO/PO (接口層對象)字節(jié)碼...應用是何等的廣泛.
為java靜態(tài)語言提供了動態(tài)特性(當然,底層是asm功勞),多么可喜.
我不清楚,你所謂使用cglib產(chǎn)生附加問題,具體是什么問題?
re: 感慨于我們的技術土壤 stone2083 2008-05-25 20:33
深有同感,現(xiàn)在google上搜索某些內容,會有多少千篇一律,甚至一字不差的文章.
期待原創(chuàng)的作品,哪怕是不成熟的想法,見解.
期待原創(chuàng)的作品,哪怕是不成熟的想法,見解.
re: 關于Java String對象創(chuàng)建問題解惑 stone2083 2008-04-27 12:04
沒有必要太在意這個問題.
因為不同的jdk下,比如sun jdk,ibm jdk等,答案是非唯一的.而且不同的jdk版本下,也有可能存在不同的答案.
sun jdk是對String優(yōu)化做的最多的.所以才這么拗.很多公司都拿string做面試題,沒有意義的.
至于s=s+"47",至少在jdk5以下,在String pool中肯定會創(chuàng)建一個新的對象.但是之后的版本怎么處理,就沒去看過了.
因為不同的jdk下,比如sun jdk,ibm jdk等,答案是非唯一的.而且不同的jdk版本下,也有可能存在不同的答案.
sun jdk是對String優(yōu)化做的最多的.所以才這么拗.很多公司都拿string做面試題,沒有意義的.
至于s=s+"47",至少在jdk5以下,在String pool中肯定會創(chuàng)建一個新的對象.但是之后的版本怎么處理,就沒去看過了.
re: SSL雙向認證java實現(xiàn) stone2083 2008-04-20 17:18
謝謝wangpeng朋友,找到上原先demo中的一個問題。
因為在Server端程序中,初始化的SSLServreSocket
serverSocket = (SSLServerSocket) ctx.getServerSocketFactory().createServerSocket(DEFAULT_PORT);
少寫了條語句:serverSocket.setNeedClientAuth(true); //表明需要驗證客戶端的身份。
由于原demo程序,不需要客戶端身份驗證,所以即使服務端沒有客戶端證書,也能完成通訊。
受限于自己對jsse理解非常的淺,上面的文章僅僅是覆蓋了jsse很表層的內容。
推薦ibm網(wǎng)站上的一篇文章,對jsse和ssl寫得很深入淺出。
為高級 JSSE 開發(fā)人員定制 :http://www.ibm.com/developerworks/cn/java/j-customssl/
如有問題,歡迎再交流 :)
因為在Server端程序中,初始化的SSLServreSocket
serverSocket = (SSLServerSocket) ctx.getServerSocketFactory().createServerSocket(DEFAULT_PORT);
少寫了條語句:serverSocket.setNeedClientAuth(true); //表明需要驗證客戶端的身份。
由于原demo程序,不需要客戶端身份驗證,所以即使服務端沒有客戶端證書,也能完成通訊。
受限于自己對jsse理解非常的淺,上面的文章僅僅是覆蓋了jsse很表層的內容。
推薦ibm網(wǎng)站上的一篇文章,對jsse和ssl寫得很深入淺出。
為高級 JSSE 開發(fā)人員定制 :http://www.ibm.com/developerworks/cn/java/j-customssl/
如有問題,歡迎再交流 :)
re: tomcat reload幾次后OutOfMemoryError: PermGen space的解決方法 stone2083 2008-04-12 20:57
主要是spring和hibernate這些框架使用cglib動態(tài)生成代理類,動態(tài)加載類描述信息,導致如果perm區(qū)設置過小的情況下,會出現(xiàn)outofmemoryerror的情況。
但是也沒有必要把perm區(qū)設置過大,可以在生產(chǎn)環(huán)境使用jstat命令觀察perm區(qū)的情況,從來設定它的大小。
但是也沒有必要把perm區(qū)設置過大,可以在生產(chǎn)環(huán)境使用jstat命令觀察perm區(qū)的情況,從來設定它的大小。