摘要: 出現的問題:一個裝有CentOs的VPS不知道為什么重啟之后,出現網站無法連接數據庫的現象:
Can't connect to MySQL server on 'www.zzgwt.com' (13) 此處域名也可以使IP,我習慣用域名直接連接數據庫,因為重新解析域名后,不用再修改數據庫配置了但是本地通過數據庫管理工具如:Navicat for MySql卻是能夠正常連接!
網上查了很多文章,發現又是SELinux(Linux上的強制訪問控制安全模塊)惹得禍,很想關閉它,但是據說他是系統被攻破后的最后一道防線,那就暫時記錄此類問題的解決方案,以后有時間的話,好好研究一下這個SELinux!
閱讀全文
posted @
2012-09-09 16:02 零全零美 閱讀(3495) |
評論 (1) |
編輯 收藏
由于開發www.website371.com 、www.modaotea.com 兩個網站時使用的框架是自己寫的,其中有一個工具是模擬hibernate的思路,動態生成對象關系映射!中間利用freemarker生成.java類!但是始終存在一個很大的問題,就是生成的.java文件,沒有辦法直接編譯,當然最好的結果當然是自動編譯后能達成JAR包,直接放在工程里!
研究好了半天,終于找到一種解決方案,既然是用JAVA生成.java文件自動編譯并打成JAR包,
那第一步自然就是用JAVA執行CMD命令了(注意多個命令之間要用“&&”隔開哦,在這個問題上浪費了我很多時間!)
第二步:利用javac編譯.java文件(因.java依賴包過多,如果手寫要累死了!!這里正好使用:System.getProperty("java.class.path"))
第三步:利用jar命令打包
全部代碼如下:
public final static String FILE_PATH = "d:\\db2java\\";
public final static String PACKAGE_PATH = "com/zzsb/beans/";
public final static String CLASS_FILE_PATH = FILE_PATH+"classes";
String cmd = "cmd /c cd /d " + FILE_PATH +
" && " +
"javac -classpath "+ System.getProperty("java.class.path") +" "+ FILE_PATH+PACKAGE_PATH + "*.java " +
" && " +
"jar cf bean-"+TABLE_SCHEMA+"-"+ DateUtil.getCurrentDate14() +".jar " + PACKAGE_PATH+"*.class" +
" && " +
"jar cf bean-source-"+TABLE_SCHEMA+"-"+ DateUtil.getCurrentDate14() +".jar " + PACKAGE_PATH+"*.java" +
" && " +
"jar cf bean-all-"+TABLE_SCHEMA+"-"+ DateUtil.getCurrentDate14() +".jar " + PACKAGE_PATH+"*.*"
;
System.out.println(cmd);
Process p = Runtime.getRuntime().exec(cmd);
可以看一下控制臺輸出的代碼,您就明白了:
cmd /c cd /d d:\db2java\ && javac -classpath E:\job\workspace\DianLiang\WebRoot\WEB-INF\classes;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\acegi-security-1.0.7.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\activation.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\axis.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\axis-ant.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\bonecp-0.7.1.RELEASE.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\commons-attributes-api.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\commons-attributes-compiler.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\commons-beanutils-1.8.3.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\commons-cli-1.2.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\commons-codec-1.3.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\commons-collections-3.2.1.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\commons-configuration-1.4.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\commons-discovery-0.2.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\commons-fileupload-1.2.1.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\commons-io-2.0.1.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\commons-lang-2.5.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\commons-logging.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\commons-pool-1.4.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\ezmorph-1.0.6.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\freemarker.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\guava-r09.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\javassist.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\jaxrpc.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\jdbcspy.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\jodconverter-2.2.2.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\jodconverter-cli-2.2.2.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\json_simple-1.1.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\json-lib-2.2.3-jdk15.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\juh-3.0.1.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\jurt-3.0.1.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\jxl.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\kaptcha-2.3.2.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\log4j-1.2.15.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\mail.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\mysql-connector-java-5.1.13-bin.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\ognl-2.7.3.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\quartz-2.0.1.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\ridl-3.0.1.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\saaj.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\slf4j-api-1.6.1.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\slf4j-jdk14-1.6.1.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\unoil-3.0.1.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\urlrewrite-3.2.0.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\wsdl4j-1.5.1.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\xstream-1.3.1.jar;E:\job\workspace\DianLiang\WebRoot\WEB-INF\lib\bean-dianliang-20120723181047.jar d:\db2java\com/zzsb/beans/*.java && jar cf bean-dianliang-20120724232924.jar com/zzsb/beans/*.class && jar cf bean-source-dianliang-20120724232924.jar com/zzsb/beans/*.java && jar cf bean-all-dianliang-20120724232924.jar com/zzsb/beans/*.*
看看System.getProperty()都為我們提供了什么有用信息吧!
java.version |
Java 運行時環境版本 |
java.vendor |
Java 運行時環境供應商 |
java.vendor.url |
Java 供應商的 URL |
java.home |
Java 安裝目錄 |
java.vm.specification.version |
Java 虛擬機規范版本 |
java.vm.specification.vendor |
Java 虛擬機規范供應商 |
java.vm.specification.name |
Java 虛擬機規范名稱 |
java.vm.version |
Java 虛擬機實現版本 |
java.vm.vendor |
Java 虛擬機實現供應商 |
java.vm.name |
Java 虛擬機實現名稱 |
java.specification.version |
Java 運行時環境規范版本 |
java.specification.vendor |
Java 運行時環境規范供應商 |
java.specification.name |
Java 運行時環境規范名稱 |
java.class.version |
Java 類格式版本號 |
java.class.path |
Java 類路徑 |
java.library.path |
加載庫時搜索的路徑列表 |
java.io.tmpdir |
默認的臨時文件路徑 |
java.compiler |
要使用的 JIT 編譯器的名稱 |
java.ext.dirs |
一個或多個擴展目錄的路徑 |
os.name |
操作系統的名稱 |
os.arch |
操作系統的架構 |
os.version |
操作系統的版本 |
file.separator |
文件分隔符(在 UNIX 系統中是“/”) |
path.separator |
路徑分隔符(在 UNIX 系統中是“:”) |
line.separator |
行分隔符(在 UNIX 系統中是“/n”) |
user.name |
用戶的賬戶名稱 |
user.home |
用戶的主目錄 |
user.dir |
用戶的當前工作目錄 |
本文所提供的方法解決了使用JAVA動態編譯現有工程中的源文件的簡便方法,順便說一下有空可以去
www.modaotea.com 喝茶,老板人不錯,對茶這塊很專業,不像我這種苦逼的程序員,無聊透頂啊!
文章原創,轉載請以超鏈接形式標明文章原始出處和作者
posted @
2012-07-24 23:44 零全零美 閱讀(1523) |
評論 (1) |
編輯 收藏
現在國家對信息安全要求的越來越嚴,網站備案的流程和手續是越來越復雜啊!記錄一下河南景安網站備案需要準備的材料,和備案地址,一是備查而是也方便一下其他人吧!
1. 公司營業執照副本復印件
2. 公司公章
3. 公司法人身份證復印件
4. 網站負責人身份證復印件
5. 公司固定電話
6. 網站負責人手機號碼
7. 網站負責人電子郵箱
8. 網站名稱
9. 域名
備案地址:花園路省廣播電視中心對面工信廳7樓301室
如果是個人備案,網站中不能含有任何商業元素!
信息來源:
鄭州做網站 http://www.website371.com
posted @
2012-07-07 16:44 零全零美 閱讀(728) |
評論 (0) |
編輯 收藏
Apache是世界使用排名第一的Web服務器軟件。它可以運行在幾乎所有廣泛使用的計算機平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。web服務器軟件兩大陣營Apache和IIS的市場占有率分別為:62.53% 和 20.36%,Apache的在web服務器軟件領域的地位可見一斑啊!Tomcat是一個輕量級JAVA應用服務器,在中小型系統中被普遍使用,是開發和調試JSP程序的首選。俗話說尺有所短寸有所長,Apache在靜態文件處理方面性能表現卓著,tomcat是JAVA中小型系統的首選運行環境,兩項組合可以發揮他們最大的優勢,絕對是中小型JAVA B/S系統的首選環境!
話不多說,開始干活!以下環境基于windows系統進行。
1、工具準備:
Apache httpd 最新版2.2.22下載地址:http://labs.renren.com/apache-mirror/httpd/binaries/win32/httpd-2.2.22-win32-x86-no_ssl.msi
Jk最新版1.2.37下載地址:
http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/tomcat-connectors-1.2.37-windows-i386-httpd-2.2.x.zip (下載JK時要注意選擇與Apache相對應的版本):

tomcat最新版7.0.28下載地址:http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.28/bin/apache-tomcat-7.0.28-windows-x86.zip ;
JAVA程序員對tomcat的安裝和調試一定非常熟悉了,下邊就重點講解一下Apache Httpd的安裝和調試! 其實Apache的在windows下的安裝也非常簡單,一路next下去,會有一個要求輸入的地方,要求填入Domain和Server Name,這兩項其實無所謂的,隨便輸入個域名就行了,反正后邊也可以修改的啊,筆者就已自己公司的域名
www.website371.com為例:
下一步選標準安裝,不用選什么自定義,其實也沒有什么好自定義的,反正安裝完成后所有的配置都可改動! 安裝完成后輸入http://localhost/ ,看到經典的It works,Apache就算安裝完成了!接下來就是繁瑣的配置了,其實我非常贊同一句話:JAVA界習慣繁瑣,好像不經過繁瑣的配置就顯示不出來自己有多么高深一樣!這方面該學學微軟啊!
Tomcat就自己玩吧,別告訴我您連tomcat也不知道怎么運行,那接下來的文章您也不用看了!
文章原創,未完待續,轉載請注明出處!
鄭州做網站 鄭州網站建設 http://www.website371.com
posted @
2012-07-07 16:06 零全零美 閱讀(2117) |
評論 (1) |
編輯 收藏
現在做SEO大家普遍認為站外優化在排名提升中起到的作用要遠大于站內優化的作用,雖然很久以來都流傳著“內容為王外鏈為皇”這句話,但是又有多少SEOER能夠真正的靜下心來每天挖盡心思的為自己的網站做一些真正的原創內容呢!
鄭州網站建設做SEO也有幾個年頭了,始終想總結一下外部優化也就是外鏈建設的幾個形式,今天總算有時間能夠好好研究一下這個事情了!
1、純文本URL外鏈,如:http://www.website371.com ,即只是一個普通的文本格式,無法通過鼠標點擊進入URL所標識的網站。
個人認為此種外鏈并不能算是優質的外鏈,因為蜘蛛無法通過該外鏈獲得任何有價值的信息。到底此類外鏈會不會指引蜘蛛進入目標網站實在不得而知。但毫無疑問的是就算不是什么優質外鏈,但此類外鏈如果大量存在的話,也會增加相關域名的數量,對排名或者收錄還是有幫助的!
2、超鏈接URL外鏈:如:
http://www.website371.com ,是一個超鏈接格式,訪客可以直接點擊該鏈接進入網站。
帶超鏈接的URL跟第一種純文本鏈接最大的區別就是,這種鏈接可以點擊進入網站,很多朋友寫文章寫的很吸引人,在文章最后面留了個,想看更精彩的內容,請點擊網站。還有一種最常見的就是在論壇留言中會看到很多評論,我的網站也很不錯哦。相比第一種外鏈的形式,這種帶超鏈接的url肯定效果更佳,它不僅可以提升一個網站的權重,如果發的文章吸引人的話,還可以引來很多流量。這種鏈接在seo發布中也是很常見的,他對于網站權重提升取到了很大的作用,從而讓自己的網站關鍵詞有好的排名。
3、錨文本URL外鏈:如:
鄭州做網站 ,是一個具有錨文本的超鏈接格式,訪客除了可以點擊鏈接進入網站外,還可以看到針對這個網站的一個基本描述。
錨文本中出現關鍵詞是做好的外部鏈接。這中外鏈不僅可以提升網站的權重,而且還是讓關鍵詞快速有排名的一種方法!現在淘寶上出現很多自詡為SEO高手的店鋪,他們優化一個關鍵詞的費用是200-500元,相比正規網站優化公司動輒5000多塊的費用對最終客戶是具有很大優勢的!筆者也曾跟他們打過幾次交道,他們使用的方法就是以低價獲得大量網站然后以帶有關鍵詞的錨文本URL外鏈的形式構成單向鏈接,從而快速提升排名!但是這種以站養站,單純為了SEO而SEO的做法是不會獲得穩定性排名的。最終的結果是網站排名在百度首頁曇花一現,客戶付過余款后沒幾天排名便一掉千里了!
一個優質外鏈除了應該是錨文本外鏈之外最好是單向鏈接,對方站長主動給予,不需要回鏈,兩個網站互相鏈接如友情鏈接權重要比單向鏈接低很多。
未盡之處,改天有時間再好好研究吧!
文章原創,轉載請注明出處!
posted @
2012-06-30 10:57 零全零美 閱讀(1554) |
評論 (0) |
編輯 收藏
一個網站要想在搜索引擎排行靠前,重要度依次為:反鏈、外鏈、原創內容、更新。對于鄭州網站建設而言,覺得反鏈和外鏈尤為重要,因為反鏈的多少直接反映著網站的權重,而外鏈也會影響排名。那么這2者之間到底有什么區別,只有弄清楚這點之后我們才能從根本下手有的放矢的開始對網站進行優化。
鄭州網站建設覺得反鏈和外鏈要每天都增加,日積月累、多多益善。但是反鏈和外鏈絕對是不相同的,這一點做SEO的人都知道,反鏈從屬于外鏈,而外鏈我們完全可以直接理解為本站以外的所有本站的鏈接,也可以說外鏈就是引導蜘蛛爬行來到你的網站,很多朋友都知道反向鏈接不多,然后蜘蛛卻瘋狂的來到本站,這就完全是外鏈的作用,如果經常大批量的制造外鏈的話,那么去搜索引擎里會發現存在快照的根本不多或許就沒有,所以說外鏈的作用完全是引導蜘蛛爬行到本站來,簡單的說就是路標,指引蜘蛛爬行到本站來的路標。
而反鏈就是存在快照并且長期存在外鏈,有時候我們會發現一個鏈接剛剛發出去被蜘蛛抓取并且放出了快照,但是只存在很短的時間內,蜘蛛下次抓取的時候沒有它(這種情況多數都是劣質外鏈),這種就只能叫做外鏈。不能夠長期存在快照的鏈接就只能是外鏈,盡管勾引蜘蛛但不是長期勾引蜘蛛來本站,那么就可以說不能為本站多投一票了。其實反鏈我們很多站長都理解成為網站是否受大眾喜愛的指標,這是正確的,反鏈就是別的站點對我站點的投票,反鏈越多那么我價值就越高,權重就越高。反鏈越多,搜索引擎得到分值就越高,分值越高我排名就越好。不過鄭州網站建設覺得沒有必要刻意的做反鏈,每天認真的原創一篇文章久OK了,如果實在不會寫的也要講究偽原創,這樣讓蜘蛛抓取到并且放出快照,好的就一直存在就是反鏈。另外就是做做外鏈,把蜘蛛勾引過來。
突然想起友情鏈接的一點注意,新站或者被降權站交換友情鏈寧可少些甚至沒有,哪怕自己建一些博客去單向鏈接,或者多發一些軟文與外鏈,都要比與權重低的站點交換鏈接要好,一旦自己的網站被搜索引擎認同,給予了一定的權重內容收錄與快照更新就是做友情鏈接的時機了。我認為一般在論壇與QQ群里經常發找友情鏈接信息的往往是一些新站與降權、低權重網站,所以找友情鏈接最好還是按照剛才談的第一點來做,自己的站有了一定的權重后主動在搜索引擎上找和自己關鍵字相關的高權重站點更好一些,其次如果對方給您的友情鏈接頁面放在IFRame框架里。不要跟他交換友情鏈接。因為搜索根本抓不到IFRame里的內容。 做友情接時一定要用文字鏈。不要用圖片鏈接。因為圖片鏈接搜索引擎抓對方網站時根本抓不到圖片鏈接。對你一點用處都沒有。
個人認為外鏈可以適當的多做,但是反鏈就不能刻意的瘋狂增加,不然被認為作弊了會引起被K的,所有的事情都不會來的那么快,看著人家網站的反鏈幾萬幾萬的是很羨慕的,你想想人家做了多久,做的有多辛苦的,所以我們要堅持努力,既然選擇了做站,就要準備每天不停寫作、更新、宣傳,希望這些對大家有用
posted @
2012-06-29 12:37 零全零美 閱讀(297) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-28 19:21 零全零美 閱讀(2248) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-28 13:01 零全零美 閱讀(356) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:47 零全零美 閱讀(1408) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:46 零全零美 閱讀(520) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:46 零全零美 閱讀(300) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:45 零全零美 閱讀(456) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:44 零全零美 閱讀(1349) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:43 零全零美 閱讀(4759) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:42 零全零美 閱讀(1588) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:42 零全零美 閱讀(1217) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:41 零全零美 閱讀(382) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:41 零全零美 閱讀(2754) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:40 零全零美 閱讀(535) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:40 零全零美 閱讀(581) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:39 零全零美 閱讀(280) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:39 零全零美 閱讀(477) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:37 零全零美 閱讀(1289) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:36 零全零美 閱讀(1103) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:35 零全零美 閱讀(2994) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:35 零全零美 閱讀(593) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:34 零全零美 閱讀(589) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:33 零全零美 閱讀(673) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:33 零全零美 閱讀(915) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:32 零全零美 閱讀(425) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:30 零全零美 閱讀(195) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:29 零全零美 閱讀(268) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-27 17:28 零全零美 閱讀(281) |
評論 (0) |
編輯 收藏
摘要: 分享一下播布課的視頻教程,在Apache中使用SSL
閱讀全文
posted @
2009-11-26 18:22 零全零美 閱讀(1629) |
評論 (2) |
編輯 收藏
摘要:
閱讀全文
posted @
2009-11-26 17:10 零全零美 閱讀(354) |
評論 (0) |
編輯 收藏
摘要: 我的電腦安裝了雙系統,Windows和Linux,不過由于Linux在最近一段時間內不會使用,所以我打算刪除Linux。
刪除Linux最需要注意的地方,就是MBR(Master Boot Record)。在刪除Linux分區前,我們需要將啟動Windows的引導信息寫入MBR,否則,MBR中的Linux引導信息,當然就不能啟動Windows系統了。
閱讀全文
posted @
2009-11-26 13:14 零全零美 閱讀(2811) |
評論 (0) |
編輯 收藏
摘要: 在系統開發中,與用戶交互的地方,例如表單輸入,瀏覽器URL傳參都是系統安全的敏感地帶。傳統的客戶端JavaScript驗證只能擋君子而不能攔小人,因為用戶一旦將JS禁用,我們就無能為力。于是人們說最安全的方式還是在服務器端驗證。但是這種最安全的方式卻是很麻煩的做法!因為我們無法只單單的在服務器端驗證,我們還需要做客戶端傳統驗證,這樣一來同一套驗證,客戶端一次,服務器端一次,暫且不考慮執行的效率,單單是開發的效率就很讓人抓狂了!尤其是對URL傳參的驗證,難道我們對每一個URL傳遞參數的地方都必須寫一堆的驗證代碼嗎?
如果有這樣一種方法能夠通過一個過濾器能夠一次性的攔截獲取所有的用戶輸入,那么我們就可以只通過這個過濾器來做基礎的安全性驗證,例如我們可以過濾SQL語句,過濾非安全字符等等,而把業務規則驗證留給程序員去實現,就將大大的加快開發效率,同時也可以構建一個通用的用戶輸入驗證框架,減少與程序的緊耦合!
例如我們將所有用戶輸入中的"<"改為"<",將所有的">"改為">"
本文試圖尋找一種方法來解決這個問題!
閱讀全文
posted @
2009-11-24 12:15 零全零美 閱讀(1227) |
評論 (2) |
編輯 收藏
摘要: 裝飾模式是Erich Gamma等人所著的《設計模式:可利用面向對象軟件的基礎》一書中眾多模式之一。一般來說,此模式在設計Swing的程序員中比較流行,他們用它來改進軟件。今天,即使有許多程序是基于Web應用的,裝飾模式仍有用武之地,在J2EE的環境下也有使用的價值。
本文說明了如何將裝飾模式應用到servlet request對象上。首先,提出了一個與servlet filter有關的問題,并解釋了隨之而引入的裝飾模式。然后,討論了如何在servlet環境下使用此模式,并列出了使用此模式的幾個比較有名的基于servlet的項目。最后,文章通過實現一個刪除空白符的filter例子,演示了裝飾模式在servlet中的使用。
閱讀全文
posted @
2009-11-24 11:21 零全零美 閱讀(631) |
評論 (0) |
編輯 收藏
摘要: 內存越來越大,裝的程序也越來越多,平時工作時Myeclipse、PowerDesigner、Dreamweaver、Tomcat、Plsqldev開了一大堆!很多經常用,但又不是每次都用到的程序,如Oracle、Mysql、VMware,設置自啟動太浪費內存,設置為手動有必須每次一個一個的找到分別啟動,很是麻煩!
這個批處理(以VMware為例)可以讓你動動鼠標即可以自動開啟和關閉服務!
閱讀全文
posted @
2009-11-23 11:30 零全零美 閱讀(790) |
評論 (0) |
編輯 收藏
摘要: 編譯安裝Apache,讓其開機自啟動,配置其在webmin里可用
閱讀全文
posted @
2009-11-04 15:14 零全零美 閱讀(2171) |
評論 (1) |
編輯 收藏
摘要: 安裝JDK、mysql、ftp,使用webmin管理ftp,并讓ftp用戶不具有登錄系統的權限和限制一些系統級的用戶禁止使用ftp登錄,以增加安全性!
閱讀全文
posted @
2009-11-04 11:12 零全零美 閱讀(1472) |
評論 (0) |
編輯 收藏
摘要: 基本環境的配置:安裝openssh、配置靜態IP、配置源列表、更新系統、安裝webmin
閱讀全文
posted @
2009-11-03 18:42 零全零美 閱讀(1425) |
評論 (1) |
編輯 收藏
摘要: vsftpd.conf - vsftpd 的配置文件
描述
vsftpd.conf 可以用于控制 vsftpd, 以實現各種各樣的功能. vsftpd 缺省到 /etc/vsftpd.conf 處查找此文件. 當然, 您也可以通過命令行參數進行指定. 這個命令行參數就是指 vsftpd 的配置文件. 對于想使用高級 inetd 管理的用戶, 例如, xinetd, 則這個功能非常有用. 可以使用不同的配置文件來啟動基于虛擬主機的每個服務.
閱讀全文
posted @
2009-10-28 13:24 零全零美 閱讀(226) |
評論 (0) |
編輯 收藏
摘要: /etc/network/interfaces
打開后里面可設置DHCP或手動設置靜態ip。前面auto eth0,讓網卡開機自動掛載.
閱讀全文
posted @
2009-10-28 11:19 零全零美 閱讀(299) |
評論 (0) |
編輯 收藏
摘要: 一、ORACLE實例
1、ORACLE 實例——包括內存結構與后臺進程
System Global Area(SGA) 和 Background Process 稱為數據庫的實例。
2、ORACLE 數據庫——物理操作系統文件的集合
一系列物理文件的集合(數據文件,控制文件,聯機日志,參數文件等)
閱讀全文
posted @
2009-10-25 22:10 零全零美 閱讀(207) |
評論 (0) |
編輯 收藏
摘要: 在實際的開發應用中,關于Oracle數據庫,經常聽見有人說建立一個數據庫,建立一個Instance,啟動一個
Instance之類的話。 其實問他們什么是數據庫,什么是Instance,很可能他們給的答案就是數據庫就是
Instance,Instance就是數據庫啊,沒有什么區別。在這里,只能說雖然他們Oracle用了可能有了一定的經
驗,不過基礎的概念還是不太清楚。
閱讀全文
posted @
2009-10-25 21:57 零全零美 閱讀(389) |
評論 (0) |
編輯 收藏
摘要: 問題提出:將格式為:"25/10/2009"的時間轉換為"2009-10-25"的格式
問題分析:
1、年份2009、月份10、日25應該做為一個獨立的單位,這樣我們可以直接知道什么地方匹配的是年、月還是日
2、可以用\d\d\d\d來匹配年份,用\d\d來匹配月份,用\d\d來匹配日
3、應該可以有一個地方存儲匹配過的結果,以便于轉換
解決問題所必須知道的:
1、分組就是將若干單位(可以是字符,正則表達式等等)組織在一起,成為一個獨立的單元,
該單位可以跟獨立的字符一樣,受量詞的控制,分組使用()表示
2、分組分為捕獲性分組和非捕獲性分組,簡單的說捕獲性分組就是捕獲分組所匹配的內容暫且存儲在某個地方,以便下次使用,捕獲性分組以(...)表示,有些地方將取得捕獲性分組所匹配結果的過程稱之為"反向引用",非捕獲性分組不捕獲分組所匹配的內容,當然也就得不到匹配的結果,非捕獲性分組以(?:...)表示,在一些只需要分組匹配但是并不需要得到各個分組匹配的結果時,使用非捕獲性分組可以提供匹配速度。
3、在JavaScr
閱讀全文
posted @
2009-10-25 13:01 零全零美 閱讀(3978) |
評論 (2) |
編輯 收藏
摘要: ubuntu@ubuntu:/home$ sudo adduser username
出現如下的信息:
Adding user username' ...
Adding new group username' (1001) ...
Adding new user username' (1001) with group `dengyanhui' ...
Creating home directory `/home/username' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for username
Enter the new value, or press ENTER for the default
閱讀全文
posted @
2009-10-22 10:21 零全零美 閱讀(3416) |
評論 (0) |
編輯 收藏
摘要: 通用格式:find pathname -options [-print -exec -ok]
例子:
find / -name filename 再根目錄里面搜索文件名為filename的文件
find /etc -name *s*在目錄里面搜索帶有s的文件
find /etc -name *S 在目錄里面搜索以s結尾的文件
find /etc -name s*在目錄里面搜索以s開頭的文件
find / -amin -10在系統中搜索最后10分鐘訪問的文件
find / -atime -2查找在系統中最后48小時訪問的文件
find / -empty 查找在系統中為空的文件或者是文件夾
find / -group groupname 查找在系統中屬于groupname的文件
find / -mmin -5查找在系統中最后5分鐘修改過的文件
find / -mtime -1查找在系統中最后24小時修改過的文件
find /-nouser查找在系統中屬于費用戶的文件
find / -us 閱讀全文
posted @
2009-10-19 14:19 零全零美 閱讀(8789) |
評論 (0) |
編輯 收藏
摘要: sudo chown -R username filename
-R :遞歸文件夾內部的所有文件及文件夾
username:目標所有者名稱
filename:文件或文件夾名稱 閱讀全文
posted @
2009-10-19 09:49 零全零美 閱讀(1231) |
評論 (0) |
編輯 收藏
摘要: tar -zxvf mysql-5.0.45.tar.gz
tar的參數z是調用gzip解壓,x是解包,v是校驗,f是顯示結果。更多 參考 tar --help
閱讀全文
posted @
2009-10-12 20:15 零全零美 閱讀(212) |
評論 (0) |
編輯 收藏
摘要: 1、sudo apt-get remove apache2
2、sudo apt-get remove apache2.2-common
3、sudo apt-get autoremove (此命令會自動卸載PHP)
卸載完成 閱讀全文
posted @
2009-10-12 20:14 零全零美 閱讀(2094) |
評論 (0) |
編輯 收藏
摘要: 用戶可以使用mv命令來為文件或目錄改名或將文件由一個目錄移入另一個目錄中。該命令如同MSDOS下的ren和move的組合 。
語法:mv [選項] 源文件或目錄 目標文件或目錄
注意:
1、如果第一個參數和第二個參數都是文件名且第二個參數已經存在,那么前者會覆蓋后者,這個時候可以使用-i選項來強制系統在第二個參數表示的文件已經存在是詢問,而不是直接覆蓋。 閱讀全文
posted @
2009-10-12 19:14 零全零美 閱讀(3788) |
評論 (0) |
編輯 收藏
摘要: 閱讀全文
posted @
2009-10-10 16:00 零全零美 閱讀(734) |
評論 (0) |
編輯 收藏
摘要: 閱讀全文
posted @
2009-10-10 11:01 零全零美 閱讀(336) |
評論 (0) |
編輯 收藏
摘要: 閱讀全文
posted @
2009-10-10 10:48 零全零美 閱讀(268) |
評論 (0) |
編輯 收藏
摘要: 前段時間因為項目原因,要在修改數據庫連接池到DBCP上,折騰了半天,有一點收獲,不敢藏私,特在這里與朋友們共享。
在配置時,主要難以理解的主要有:removeAbandoned 、logAbandoned、removeAbandonedTimeout、maxWait這四個參數,設置了rmoveAbandoned=true那么在getNumActive()快要到getMaxActive()的時候,系統會進行無效的Connection的回收,回收的Connection為removeAbandonedTimeout(默認300秒)中設置的秒數后沒有使用的Connection,激活回收機制好像是getNumActive()=getMaxActive()-2。 :) 有點忘了。
logAbandoned=true的話,將會在回收事件后,在log中打印出回收Connection的錯誤信息,包括在哪個地方用了Connection卻忘記關閉了,在調試的時候很有用。 閱讀全文
posted @
2009-10-10 10:45 零全零美 閱讀(483) |
評論 (0) |
編輯 收藏
摘要: 閱讀全文
posted @
2009-10-09 15:38 零全零美 閱讀(1960) |
評論 (0) |
編輯 收藏
摘要: 閱讀全文
posted @
2009-10-09 15:25 零全零美 閱讀(3347) |
評論 (0) |
編輯 收藏
摘要: 1、進入根路徑:鍵入cd,按回車鍵。
2、進入一個子目錄:鍵入cd,空格,然后是子路徑名(例如:cd Documents),再按回車鍵。
3、進入當前目錄的上一級目錄:鍵入cd,空格,兩個點,然后按回車鍵。
4、進入一個特定的目錄:鍵入cd,空格,路徑名(例如 cd /usr/local/lib),再按回車鍵。
5、鍵入pwd,按回車鍵,你將看到你所在的當前目錄名稱 閱讀全文
posted @
2009-10-09 14:43 零全零美 閱讀(634) |
評論 (0) |
編輯 收藏
不知怎么了,干什么事情都提不起來勁,估計是該換個環境好好休息休息一下了!
posted @
2009-09-27 16:26 零全零美 閱讀(117) |
評論 (0) |
編輯 收藏
摘要: Oralce數據庫中,提供了“專用服務器模式”與“共享服務器模式”兩種連接模式。雖然說,數據庫管理員可以隨意選擇連接模式,一般情況下,不會有什么使用上的問題。兩者的差異,主要在于不同的使用情況下,其數據庫訪問的性能會有所差別。所以,對于性能要求比較高的企業,則就需要根據自己的情況,選擇合適的連接模式。
閱讀全文
posted @
2009-02-26 17:56 零全零美 閱讀(226) |
評論 (0) |
編輯 收藏
摘要: 貪婪量詞:
先看整個字符串是不是一個匹配。如果沒有發現匹配,它去掉最后字符串中的最后一個字符,并再次嘗試。如果還是沒有發現匹配,那么 再次去掉最后一個字符串,這個過程會一直重復直到發現一個匹配或者字符串不剩任何字符。簡單量詞都是貪婪量詞。
惰性量詞:
先看字符串中的第一個字母是不是一個匹配,如果單獨著一個字符還不夠,就讀入下一個字符,組成兩個字符的字符串。如果還沒有發現匹配,惰性量詞繼續從字符串中添加字符直到發現一個匹配或者整個字符串都檢查過也沒有匹配。惰性量詞和貪婪量詞的工作方式恰好相反。
支配量詞:
只嘗試匹配整個字符串。如果整個字符串不能產生匹配,不做進一步嘗試。 閱讀全文
posted @
2009-01-07 14:54 零全零美 閱讀(3497) |
評論 (3) |
編輯 收藏
摘要: 量詞用于指定特定模式出現的次數,這個次數可以是硬性的,如某個字符應該出現4次,如果沒有出現四次就是錯的,也可以是軟性的,如某個字符應該出現0至4次,意思是該字符可以出現,也可以不出現,可以出現一次,兩次,也可以出現三次,四次。 閱讀全文
posted @
2008-11-29 14:13 零全零美 閱讀(1743) |
評論 (3) |
編輯 收藏
摘要: cloneNode是進行DOM操作經常使用的方法,有了它我們可以很容易的克隆一個跟原來一模一樣的DOM對象,如:在動態增加table的行的時候,我們只需克隆一個table中現有的行,然后調用talbe.appendChild()方法就可以實現,而無需調用table繁瑣的DOM操作方法。但是在開發中,我發現cloneNode在對select進行克隆時卻無法克隆出當前選中的option,克隆出來的對象的options中擁有selected屬性的永遠都是第一個。
閱讀全文
posted @
2008-11-24 13:08 零全零美 閱讀(1938) |
評論 (1) |
編輯 收藏
摘要: "|":意思是"或",他可以把多個子表達式組合成一個總的表達式,而這個總表達式擁有子表達式的全部能力 閱讀全文
posted @
2008-11-21 13:44 零全零美 閱讀(3656) |
評論 (2) |
編輯 收藏
摘要: 行的開始和結束 開始符號:^ 結束符號:$ 如:^cat 應該理解為以c作為一行的第一個字符,緊接著是a,然后是t
例如:String str = "catabdcatdetfcat"
^cat : 驗證該行以c開頭緊接著是a,然后是t
cat$ : 驗證該行以t結尾倒數第二個字符為a倒數第三個字符為c
^cat$: 以c開頭接著是a->t然后是行結束:只有cat三個字母的數據行
^$ : 開頭之后馬上結束:空白行,不包括任何字符
^ : 行的開頭,可以匹配任何行,因為每個行都有行開頭
閱讀全文
posted @
2008-11-19 19:36 零全零美 閱讀(17750) |
評論 (7) |
編輯 收藏
摘要: 前面我有一篇《JBPM源碼解讀之:Fork》,大致分析了JBPM對于Fork的實現方式,其實Fork和Join是不可分割的一對,Fork實現分拆,Join實現匯集。先讓我們看一下《JBPM 3.2.3 User Guide》中關于Join的描述:
The default join assumes that all tokens that arrive in the join are children of the same parent. This situation is created when using the fork as mentioned above and when all tokens created by a fork arrive in the same join. A join will end every token that enters the join. Then the join will examine the parent-child relation of the token that enters the join. When 閱讀全文
posted @
2008-11-14 23:55 零全零美 閱讀(1913) |
評論 (2) |
編輯 收藏
摘要: 關于JBPM中并發子流程的實現方式,網上有很多的說法,但是好像每種辦法都有這樣那樣的缺點,要么實現太復雜,要么就是會使Token無法繼續流轉。這里我介紹一種我的并發子流程的實現方式:使用TaskNode使任務并行的方式,模擬實現JBPM子流程的并發執行。
我先簡單的介紹一下實現思路:
1、數據庫中應該有至少三個已經發布過的流程定義(ProcessDefinition),發布的順序無所謂,一個主流程兩個子流程
2、我們在主流程中要實現并發子流程的環節放置TaskNode,設置create-tasks="false"、signal="last-wait"
3、我們想要實現幾個子流程的并發就在第二步放置的TaskNode中放置幾個Task,每個Task的名字都是要并發的子流程的名稱
4、在TaskNode的Node-Enter action中,我們手動為每一個Task創建一個任務實例,同時我們取得Task的名字也就是要并發的子流程的名字,創建流程實例
閱讀全文
posted @
2008-11-12 15:00 零全零美 閱讀(3318) |
評論 (6) |
編輯 收藏
摘要: 在閱讀本文之前,建議先閱讀一下《JBPM源碼解讀之:Fork》以了解Fork中Script的配置方法及處理方式:
按照Fork對Script的規范Script必須包含一個具有write權限的變量,而且該變量必須實現java.util.Collection接口。 閱讀全文
posted @
2008-11-05 17:05 零全零美 閱讀(1919) |
評論 (4) |
編輯 收藏
摘要: Fork節點在整個JBPM流程運轉過程中配合Join使用提供使多于一個的節點如:TaskNode、State等并行運行的作用,很可惜我們不能利用Fork提供的現有機制實現需求中經常遇到的并發子流程的效果,當然雖然JBPM并不支持并發子流程的機制,并不代表我們不能變通的實現,我將在另一篇文章中詳細說明我的并發子流程的實現方式。
Fork類的注釋中說:if this fork behaviour is not sufficient for your needs, consider writing your own custom TokenHandler.看來連JBPM開發小組也意識到Fork可能不能滿足某些特殊的需求。注釋中還說Fork節點有三種配置方式,我很奇怪為什么代碼中只能找到兩種: 閱讀全文
posted @
2008-11-05 16:41 零全零美 閱讀(2106) |
評論 (0) |
編輯 收藏
摘要: 在默認的情況下,雙擊事件時是要觸發單擊事件的,但是這種情況有時候卻是我們不想要的,那么如何才能在雙擊的時候屏蔽單擊事件的觸發呢?網上流傳一種延遲執行的方法,大致思路如下:
1、聲明一個全局的計時器變量如:clickTimer
2、在代理單擊事件里設置計時器,默認220毫秒之后觸發真正的單擊事件處理函數
3、在雙擊事件里判斷計時器變量,如果該變量不為NULL,則說明在觸發該雙擊事件前觸發了單擊事件,取消計時器,因為真正的單擊事件處理函數在220毫秒之后才會觸發,所以在這個時候結束定時器,則真正單擊事件處理函數不會被執行。 閱讀全文
posted @
2008-11-04 20:14 零全零美 閱讀(1256) |
評論 (0) |
編輯 收藏
摘要: 在做流程的流轉歷史時,通常情況下還是以列表的形式表現,但是這樣總是感覺不太直觀,JBPM號稱是面向圖的編程,那么為什么我們不能在流程圖上顯示我們的流轉歷史呢,至少我們可以在流程圖上高亮顯示當前流程執行到了哪個節點,如果能這樣的話用戶可以很輕松而且一目了然的看到流程的流轉情況。
我發現在JBPM自帶的例子中有類似的效果,后來無意中又在網上發現了一篇文章《 JBPM圖形化流程監控》,作者簡單的闡述了圖形化流程監控的實現思路,讓我欣喜萬分,最終決定一試,呵呵,首先讓我秀一下戰果吧: 閱讀全文
posted @
2008-09-25 13:30 零全零美 閱讀(6482) |
評論 (5) |
編輯 收藏
摘要: 閱讀全文
posted @
2008-08-18 10:38 零全零美 閱讀(203) |
評論 (0) |
編輯 收藏
摘要: 如果你在頁面上做一次點擊例如點擊一個按鈕,那么你是首先點擊了該按鈕然后動作傳入了按鈕的容器,最后傳入整個頁面Document還是首先點擊了頁面Document,然后是按鈕的容器,最后導致按鈕的點擊呢?
JavaScript對這種問題的處理方式可以稱之為事件流即事件的傳播機制。對于事件流IE跟FF有不同的解釋。IE下的解決方案稱之為:冒泡型事件,而FF下稱之為:捕獲型事件。顧名思義冒泡型事件是從低而上的觸發機制,而捕獲型事件則是從上到下的觸發機制。 閱讀全文
posted @
2008-07-23 09:35 零全零美 閱讀(1495) |
評論 (2) |
編輯 收藏
摘要: 本文所實現的表格排序大致可以分為以下幾個步驟:
1、取得要排序的所有行,將其引用push到一個數組中
2、根據要排序的行的情況編寫數組排序時使用的比較函數
3、對包含所有行引用的數組進行排序
4、將排序后的數組按照指定的順序把數組所引用的行重新寫回DOM
如果您對使用DOM操作表格還不太熟悉,您可以參考一下《使用DOM編寫瀏覽器兼容的Table操作》,如果您對數組的排序還不太熟悉,可以參考一下《數組排序以及在漢字排序中localeCompare()方法的使用》,因為使用DOM操作表格和數組排序是表格排序的基礎。 閱讀全文
posted @
2008-07-21 17:00 零全零美 閱讀(1565) |
評論 (0) |
編輯 收藏
摘要: 說到表格排序,首先要說的就一定是數組的排序,因為數組排序是表格排序的基礎。JavaScript為數組提供了sort()方法用于表格排序,默認情況下該方法會使Array中的數組按照ASCII碼的順序進行排列,JavaScript還為數組提供了數組倒序的方法reverse()。 閱讀全文
posted @
2008-07-14 11:39 零全零美 閱讀(2021) |
評論 (0) |
編輯 收藏
摘要: 想要動態的操作Table就必須熟悉DOM,要想實現瀏覽器兼容就必須熟悉W3C標準及各個瀏覽器在表格操作方面的特性。Table是現今數據展示的不二選擇,DOM專門為Table添加了一些特性和方法,這有助于我們編寫出更簡單、高效的程序。
注: 本文的程序在IE7和FireFox3下測試通過。
閱讀全文
posted @
2008-07-07 11:18 零全零美 閱讀(1432) |
評論 (1) |
編輯 收藏