斷點(diǎn)

          每天進(jìn)步一點(diǎn)點(diǎn)!
          posts - 174, comments - 56, trackbacks - 0, articles - 21

              今天用反編譯工具查看java源代碼,發(fā)現(xiàn)反編譯的java文件有錯(cuò)誤,在網(wǎng)上了解了下,是原先開發(fā)人員對(duì)代碼做了一下加密處理。下面介紹一下java的混淆器Proguard。
              ProGuard 是一個(gè)免費(fèi)的 Java類文件的壓縮,優(yōu)化,混肴器。它刪除沒有用的類,字段,方法與屬性。使字節(jié)碼最大程度地優(yōu)化,使用簡(jiǎn)短且無意義的名字來重命名類、字段和方法 。eclipse已經(jīng)把Proguard集成在一起了。

          其他地方也有介紹,如下:http://blog.csdn.net/alex197963/archive/2008/07/07/2620603.aspx

          posted @ 2010-08-10 11:40 斷點(diǎn) 閱讀(325) | 評(píng)論 (0)編輯 收藏

          1、當(dāng)處理多個(gè)訪問相同數(shù)據(jù)的用戶時(shí),通常可能出現(xiàn)三種問題:
          臟讀
          當(dāng)應(yīng)用程序使用了被另一個(gè)應(yīng)用程序修改過的數(shù)據(jù),而這個(gè)數(shù)據(jù)處于未提交狀態(tài)時(shí),就會(huì)發(fā)生臟讀。第二個(gè)應(yīng)用程序隨后會(huì)請(qǐng)求回滾被其修改的數(shù)據(jù)。第一個(gè)事務(wù)使用的數(shù)據(jù)就會(huì)
          被損壞,或者“變臟”。

          不可重復(fù)的讀
          當(dāng)一個(gè)事務(wù)獲得了數(shù)據(jù),而該數(shù)據(jù)隨后被一個(gè)單獨(dú)的事務(wù)所更改時(shí),若第一個(gè)事務(wù)再次讀取更改后的數(shù)據(jù),就會(huì)發(fā)生不可重復(fù)的讀。這樣,第一個(gè)事務(wù)進(jìn)行了一個(gè)不可重復(fù)的讀。

          虛讀
          當(dāng)事務(wù)通過某種查詢獲取了數(shù)據(jù),另一個(gè)事務(wù)修改了部分該數(shù)據(jù),原來的事務(wù)第二次獲取該數(shù)據(jù)時(shí),就會(huì)發(fā)生虛讀。第一個(gè)事務(wù)現(xiàn)在會(huì)有不同的結(jié)果集,它可能包含虛讀。

           

          2、Java.sql.Connection接口定義的隔離級(jí)別
          TRANSACTION_NONE 說明不支持事務(wù)
          TRANSACTION_READ_UNCOMMITTED 說明在提交前一個(gè)事務(wù)可以看到另一個(gè)事務(wù)的變化。這樣臟讀、不可重復(fù)的讀和虛讀都是允許的。
          TRANSACTION_READ_COMMITTED 說明讀取未提交的數(shù)據(jù)是不允許的。這個(gè)級(jí)別仍然允許不可重復(fù)的讀和虛讀產(chǎn)生。
          TRANSACTION_REPEATABLE_READ 說明事務(wù)保證能夠再次讀取相同的數(shù)據(jù)而不會(huì)失敗,但虛讀仍然會(huì)出現(xiàn)。
          TRANSACTION_SERIALIZABLE 是最高的事務(wù)級(jí)別,它防止臟讀、不可重復(fù)的讀和虛讀。


          3、事務(wù)的隔離級(jí)別
          在J2EE中,通過java.sql.Connection接口設(shè)置事務(wù)隔離級(jí)別,這一接口為連接的隔離級(jí)別提供了getter()和setter()
          Int getTransactionIsolation() throws SQLException
          void setTransactionIsolation() throws SQLException
          Connection對(duì)象負(fù)責(zé)事務(wù),一旦收到事務(wù)請(qǐng)求,事務(wù)將自動(dòng)提交,因?yàn)镃onnection對(duì)象已定義為自動(dòng)提交方式,可通過setAutoCommit(false)禁用自動(dòng)提交模式
          另外java.sql.DatabaseMetaData接口為數(shù)據(jù)存儲(chǔ)提供支持的隔離級(jí)別查找方法:getTransactionIsolation(),supportsTransactionIsolationLevel()
          對(duì)多個(gè)庫操作的分布式事務(wù)必須在所有庫中執(zhí)行同一個(gè)隔離級(jí)別,否則會(huì)出現(xiàn)意想不到的結(jié)果


          4、事務(wù)提交和回滾
          為了完成提交事務(wù)和回滾事務(wù),JDBC API包括了兩個(gè)方法作為 Connection 接口的一部分。若將 Connection 對(duì)象名稱指定為 con,通過調(diào)用 con.commit(); 可以保存程序狀態(tài);

          通過調(diào)用 con.rollback(); 可以返回到以前保存的狀態(tài)。如果數(shù)據(jù)庫實(shí)際運(yùn)行操作時(shí)有錯(cuò)誤發(fā)生,這兩個(gè)方法都會(huì)拋出 SQLExceptions,所以您需要在 try ... catch 塊中包裝它們。


          5、批處理和事務(wù)
          缺省情況下,JDBC 驅(qū)動(dòng)程序運(yùn)行在被稱為自動(dòng)提交的模式下,可禁用自動(dòng)提交模式
          con.setAutoCommit(false);
          批處理操作中通過在一次單獨(dú)的操作(或批處理)中執(zhí)行多個(gè)數(shù)據(jù)庫更新操作
          {con.setAutoCommit(false) ;
          Statement stmt = connection.createStatement() ; stmt.addBatch("INSERT INTO people VALUES('Joe Jackson', 0.325, 25, 105) ; stmt.addBatch("INSERT INTO people

          VALUES('Jim Jackson', 0.349, 18, 99) ; stmt.addBatch("INSERT INTO people VALUES('Jack Jackson', 0.295, 15, 84) ;
          int[] updateCounts = stmt.executeBatch() ; con.commit() ;

          posted @ 2010-07-25 21:18 斷點(diǎn) 閱讀(443) | 評(píng)論 (0)編輯 收藏

          Initial Capacity:池的連接數(shù)量,在啟動(dòng)時(shí)創(chuàng)建
          Maximun Capacity:這是池可以打開的連接的最大數(shù)量
          Capacity Increment:成組地打開增量連接
          Login Delay Seconds:池驅(qū)動(dòng)程序在啟動(dòng)時(shí)打開每一個(gè)新的連接需要等待的時(shí)間
          Refresh Period(刷新周期)
          Supports Local Transaction:只用于XA連接池
          Allow Shrinking and Shrink Period(允許收縮和收縮期):如果池的數(shù)量太大,超過了初始,且如果任何一個(gè)連接在收縮期內(nèi)空閑,那么空閑的連接將在收縮期末關(guān)閉


          監(jiān)控JDBC連接池:
          Waiters Hight字段指明了最多有多少客戶等待數(shù)據(jù)庫連接
          Waiters字段告訴你當(dāng)前有多少客戶正在等待連接
          Connections Hight字段給出最大的并發(fā)連接數(shù)。
          Wait Seconds Hight字段顯示了客戶等待數(shù)據(jù)庫連接的最長(zhǎng)時(shí)間

          posted @ 2010-07-25 21:16 斷點(diǎn) 閱讀(404) | 評(píng)論 (0)編輯 收藏

          1、連接:
          直接連接(direct connection)
          池連接(pooled connection)
          連接復(fù)用 ,避免了數(shù)據(jù)庫連接頻繁建立、關(guān)閉的開銷 ;
          對(duì)JDBC中的原始連接進(jìn)行了封裝 ,隔離了應(yīng)用的本身的處理邏輯和具體數(shù)據(jù)庫訪問邏輯 。

          2、什么是連接池?
          連接池是在Weblogic啟動(dòng)時(shí)候預(yù)先建立的數(shù)據(jù)庫連接,由Weblogic在運(yùn)行時(shí)負(fù)責(zé)維護(hù)。
          可以減少程序每次數(shù)據(jù)庫請(qǐng)求都要新創(chuàng)建數(shù)據(jù)庫物理連接的時(shí)間及資源。
          對(duì)數(shù)據(jù)庫屬性的更改只需通過控制臺(tái)進(jìn)行,不需改動(dòng)客戶端代碼

          MultiPool
          可以使用MultiPool為高用戶訪問量提供數(shù)據(jù)庫負(fù)載均衡,它使用簡(jiǎn)單的循環(huán)算法將連接請(qǐng)求平衡分配MultiPool中的每一個(gè)池。

          多池的作用:為防數(shù)據(jù)庫連接失敗提供冗余,備份或高有效池;為高用戶訪問量提供數(shù)據(jù)庫負(fù)載均衡,負(fù)載均衡池。
          備份池:一個(gè)備份池由一個(gè)有順序的連接池列表組成。
          負(fù)載均衡池:使用簡(jiǎn)單的循環(huán)算法將連接請(qǐng)求平衡地分到在列表中的每一個(gè)池。

          3、DataSource

          數(shù)據(jù)源對(duì)應(yīng)一個(gè)數(shù)據(jù)庫連接池。客戶程序可以通過數(shù)據(jù)源綁定的JNDI名字得到該數(shù)據(jù)源的引用,并通過數(shù)據(jù)源對(duì)象得到數(shù)據(jù)庫連接。

          JDBC的API:
          java.sql.DriverManager 
          java.sql.Connection 
          java.sql.ResultSet 
          Javax.sql.RowSet:
          javax.sql.Statement  
          java.sql.PreparedStatement:用于執(zhí)行預(yù)編譯的SQL語句
          java.sql.CallableStatement:用于執(zhí)行在數(shù)據(jù)庫中定義的存儲(chǔ)過程   
          Javax.sql.DataSource是java.sql.Connectioin對(duì)象的工廠并使用一個(gè)JNDI服務(wù)注冊(cè)它.

          posted @ 2010-07-25 21:13 斷點(diǎn) 閱讀(318) | 評(píng)論 (0)編輯 收藏

          1、Type 1類型驅(qū)動(dòng),JDBC-ODBC橋
          通常運(yùn)行Windows平臺(tái),需要在客戶端安裝ODBC驅(qū)動(dòng),早期Java訪問數(shù)據(jù)庫的主要方式,效率較低。

          適用于快速的原型系統(tǒng),沒有提供JDBC驅(qū)動(dòng)的數(shù)據(jù)庫如Access ,由于包含多個(gè)驅(qū)動(dòng)程序?qū)樱湫阅芤话悴贿m合生產(chǎn)系統(tǒng)
          Java-->JDBC-ODBC Bridge---->JDBC-ODBC Library--->ODBC Driver-->Database
          驅(qū)動(dòng)程序的類名稱是 sun.jdbc.odbc.JdbcOdbcDriver
          JDBC URL 的形式為 jdbc:odbc:dsn(dsn 是使用 ODBC 管理員注冊(cè)數(shù)據(jù)庫的數(shù)據(jù)源名稱)
          不是100%JAVA程序,與ODBC之間的接口采用非JAVA方式調(diào)用,因此不能在APPLET中使用
          {
          String url = "jdbc:odbc:jdbc" ;
          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          Connection con = DriverManager.getConnection(url, "java", "sun");
          }


          2、Type 2類型驅(qū)動(dòng),需要在客戶端安裝數(shù)據(jù)庫的本地驅(qū)動(dòng),JDBC請(qǐng)求會(huì)轉(zhuǎn)換為對(duì)數(shù)據(jù)庫本地API的調(diào)用。

          利用開發(fā)商提供的本地庫來直接與數(shù)據(jù)庫通信。
          Java-->JDBC-Driver-->DB Client Library-->Database
          繞過了ODBC層,性能優(yōu)于Type1
          也稱為部分 Java 驅(qū)動(dòng)程序,因?yàn)樗鼈冎苯訉?JDBC API 翻譯成具體數(shù)據(jù)庫的API
          使用第二種模型將開發(fā)者限制在數(shù)據(jù)庫廠商的客戶機(jī)庫支持的客戶機(jī)平臺(tái)和操作系統(tǒng)
          Oracle的OCI驅(qū)動(dòng)就屬于Type2

          3、Type 3類型驅(qū)動(dòng),DBC請(qǐng)求通過網(wǎng)絡(luò)服務(wù)器層實(shí)現(xiàn),在網(wǎng)絡(luò)服務(wù)器層可以實(shí)現(xiàn)負(fù)載均衡,連接池管理等。

          第三種驅(qū)動(dòng)程序是純 Java 驅(qū)動(dòng)程序,它將 JDBC API 轉(zhuǎn)換成獨(dú)立于數(shù)據(jù)庫的協(xié)議。JDBC 驅(qū)動(dòng)程序并沒有直接和數(shù)據(jù)庫進(jìn)行通訊;它和一個(gè)中間件服務(wù)器通訊,然后這個(gè)中間件服務(wù)器和數(shù)據(jù)庫進(jìn)行通訊。這種額外的中間層次提供了靈活性:可以用相同的代碼訪問不同的數(shù)據(jù)庫,因?yàn)橹虚g件服務(wù)器隱藏了 Java 應(yīng)用程序的細(xì)節(jié)。要轉(zhuǎn)到不同的數(shù)據(jù)庫,您只需在中間件服務(wù)器上改變參數(shù)。(有一點(diǎn)需要注意:中間件服務(wù)器必須支持您訪問的數(shù)據(jù)庫格式。)
          第三種驅(qū)動(dòng)程序的缺點(diǎn)是,額外的中間層次可能有損整體系統(tǒng)性能。另一方面,如果應(yīng)用程序需要和不同的數(shù)據(jù)庫格式進(jìn)行交互,第三種驅(qū)動(dòng)程序是個(gè)有效的方法,因?yàn)椴还艿讓?/span>的數(shù)據(jù)庫是什么,都使用同樣的 JDBC 驅(qū)動(dòng)程序。另外,因?yàn)橹虚g件服務(wù)器可以安裝在專門的硬件平臺(tái)上,可以利用總的結(jié)果進(jìn)行一些優(yōu)化。
          Java--->Jdbc Driver(Type3 jdbc driver)----->java middleware--->JDBC Driver---->Database
          Weblogic的Pool驅(qū)動(dòng)程序就是一個(gè)Type3的JDBC驅(qū)動(dòng)程序。


          4、Type 4類型驅(qū)動(dòng),為純Java實(shí)現(xiàn),不需要任何客戶端設(shè)置。
          OCI驅(qū)動(dòng)程序利用Java本地化接口(JNI),通過Oracle客戶端軟件與數(shù)據(jù)庫進(jìn)行通訊。Thin驅(qū)動(dòng)程序是純Java驅(qū)動(dòng)程序,它直接與數(shù)據(jù)庫進(jìn)行通訊。

          JDBC應(yīng)用的兩種架構(gòu)
          兩層架構(gòu):客戶程序直接對(duì)數(shù)據(jù)庫發(fā)起JDBC請(qǐng)求,Type1、2、4支持兩層架構(gòu)。
          多層架構(gòu):客戶程序?qū)DBC請(qǐng)求發(fā)送到中間層,中間層再將請(qǐng)求發(fā)送到數(shù)據(jù)庫。

          posted @ 2010-07-25 21:11 斷點(diǎn) 閱讀(679) | 評(píng)論 (0)編輯 收藏

          通常應(yīng)用系統(tǒng)會(huì)根據(jù)用戶數(shù)、并發(fā)數(shù)、用戶的行為等等來確定具體的性能目標(biāo),如果確定應(yīng)用程序不能滿足性能目標(biāo),那么就需要優(yōu)化、重構(gòu)程序并調(diào)整JVM、應(yīng)用服務(wù)器、數(shù)據(jù)庫、OS 或者改變硬件配置等等。

          影響Java 性能的主要因素:
          硬件,如CPU、內(nèi)存、體系結(jié)構(gòu)等等
          操作系統(tǒng)
          數(shù)據(jù)庫系統(tǒng)
          JVM
          應(yīng)用服務(wù)器
          數(shù)據(jù)庫服務(wù)器
          網(wǎng)絡(luò)環(huán)境
          應(yīng)用架構(gòu)及程序編寫水平

          性能調(diào)整的步驟:
          1、 使用工具測(cè)試系統(tǒng)是否滿足性能目標(biāo)
          2、 發(fā)現(xiàn)性能瓶頸
          3、 假設(shè)瓶頸的原因
          4、 測(cè)試你的假設(shè)
          5、 如果假設(shè)成立,更改這一部分
          6、 測(cè)試確定更改是否可以提高性能,衡量性能提高的程度
          7、重復(fù)以上步驟,直到獲得可以接受的性能。

          J2EE性能不好時(shí)的現(xiàn)象,主要表現(xiàn)在對(duì)客戶端的請(qǐng)求響應(yīng)很慢:
          一向很慢:應(yīng)用的響應(yīng)總是很慢,改變環(huán)境(如應(yīng)用負(fù)載、數(shù)據(jù)庫的連接池?cái)?shù)量等等),對(duì)響應(yīng)時(shí)間的
          影響不大。

          越來越慢:在相同的負(fù)載情況下,隨著系統(tǒng)運(yùn)行的時(shí)間的增長(zhǎng),系統(tǒng)越來越慢,這可能是系統(tǒng)已到達(dá)
          極限或是系統(tǒng)死鎖和錯(cuò)誤引起的。

          低于負(fù)載時(shí)會(huì)越來越慢(Slower and slower under load):.

          偶爾的掛起或異常錯(cuò)誤(Sporadic hangs or aberrant errors):有時(shí)這可能是由于負(fù)載的變化或其他
          情況引起的可以預(yù)測(cè)的死鎖(Foreseeable lock ups): 掛起或最初只有少量錯(cuò)誤,但隨著時(shí)間的推移整個(gè)系統(tǒng)都鎖上了,典型地這可能是為的適應(yīng)"management by restarts.“

          突發(fā)性的混亂(Sudden chaos): 系統(tǒng)已運(yùn)行了一段時(shí)間(如一個(gè)小時(shí)或可能是三、四天),性能穩(wěn)定并
          可以接受, 突然沒有任何理由,開始出錯(cuò)或死鎖了。


          監(jiān)控工具:
          WebLogic Server的控制臺(tái)
          cpu
          內(nèi)存
          JDBC
          輔助的工具
          Jprobe
          Optimizit
          Vtune
          TowerJ Performance

          posted @ 2010-07-25 17:02 斷點(diǎn) 閱讀(227) | 評(píng)論 (0)編輯 收藏

          WebLogic Server 10的下載地址:
          http://www.oracle.com/technology/software/products/ias/htdocs/wls_main.html

          1、域(Domains)
          域是管理的單元或邊界;
          作為一個(gè)單元來管理的,并相互關(guān)聯(lián)的一組Weblogic 服務(wù)器資源被稱為域;
          域由單一的管理服務(wù)器來管理。

          2、機(jī)器(Machines)
          可以對(duì)應(yīng)到服務(wù)器所在的物理硬件;
          可以是Unix或non-Unix類型;
          可以用來遠(yuǎn)程管理和監(jiān)控;

          3、服務(wù)器(Servers)
          服務(wù)器是執(zhí)行在單一Java虛擬機(jī) (JVM)中weblogic.Server類的實(shí)例。
          服務(wù)器:最多和一個(gè)WLS機(jī)器關(guān)聯(lián);占用一定數(shù)量的RAM ;是多線程的。

          4、管理服務(wù)器(Administration server)
          對(duì)整個(gè)域的集中控制
          XML配置存儲(chǔ)庫的保存者
          日志信息的集中保存

          5、被管理服務(wù)器(Managed Server)
          WebLogicServer的一個(gè)實(shí)例;
          從管理服務(wù)器遠(yuǎn)程加載配置信息‘;
          可以是也可以不是集群的一部分。

          6、集群 (Clustering)
          WebLogic集群技術(shù)指通過一組服務(wù)器共同 工作,在多臺(tái)機(jī)器間復(fù)制應(yīng)用表示層和應(yīng)用邏輯層的能力,
          實(shí)現(xiàn)關(guān)鍵業(yè)務(wù)系統(tǒng)的負(fù)載分布,消除個(gè)別故障點(diǎn);集群用來實(shí)現(xiàn)負(fù)載均衡和容錯(cuò)。

          posted @ 2010-07-25 16:03 斷點(diǎn) 閱讀(286) | 評(píng)論 (0)編輯 收藏

          1、J2EE應(yīng)用開發(fā)的核心組件。
          Servlet: 處理HTTP請(qǐng)求,產(chǎn)生響應(yīng)。
          JSP:Java Server Pages ,同Servlet。其中包含了HTML和JSP標(biāo)簽、Java代碼和其他信息。
          EJB:EJB服務(wù)端組件模型簡(jiǎn)化了具有交互性、擴(kuò)展性和移植性中間組件的開發(fā)。EJB一般用于實(shí)現(xiàn)系統(tǒng)的業(yè)務(wù)邏輯。

          2、J2EE的相關(guān)技術(shù)
          核心:Servlet 、JSP、EJB
          數(shù)據(jù)庫:JDBC
          命名和目錄服務(wù):JNDI
          消息服務(wù):JMS( Java Message Service )
          Email:Java Mail
          分布式計(jì)算:RMI、RMI-IIOP
          事務(wù):JTA(Java Transaction API)
          數(shù)據(jù)格式化:XML、HTML、XSL
          協(xié)議:TCP/IP、HTTP(S)、IIOP、SSL
          安全:JAAS

          3、J2EE的4層結(jié)構(gòu)
          客戶層(瀏覽器)
          Web層(HTML、Servlet、JSP)
          業(yè)務(wù)層(EJB)
          EIS層(關(guān)系數(shù)據(jù)庫)

          4、J2EE的Application Server:

          Tomcat
          BEA Weblogic
          IBM Websphere
          Oracle Application Server
          Sun Java System
          Jboss
          Borland AppServer
          Sybase Application Server
          HP Application Server
          Apusic

          5、集成開發(fā)工具:
          Borland:JBuilder
          Oracle :JDeveloper
          Bea :WebLogic Workshop
          IBM:Websphere Studio
          Sun:NetBeans
          MyEclipse

          在小型的應(yīng)用系統(tǒng)或者有特殊需要的系統(tǒng)中,可以使用一個(gè)免費(fèi)的Web服務(wù)器Tomcat,該服務(wù)器支持全部JSP以及Servlet規(guī)范,但是目前還不支持EJB。

          在Java相關(guān)的開發(fā)領(lǐng)域中,常用的是3種數(shù)據(jù)庫:Oracle、DB2和MySQL。有時(shí)候也使用微軟公司的SQL Server數(shù)據(jù)庫服務(wù)器 。

          posted @ 2010-07-25 15:50 斷點(diǎn) 閱讀(271) | 評(píng)論 (0)編輯 收藏

          DateUtils.compareYear(regDate, base.getTInsrncBgnTm()) // 新舊車標(biāo)志【保險(xiǎn)起期 - 初登年月】 單位:年

          posted @ 2010-07-25 11:02 斷點(diǎn) 閱讀(269) | 評(píng)論 (0)編輯 收藏

          //顯示輸入框錄入的字符位數(shù)。 ztf 10.07.19
          function displayLength(obj) {
           var lenSpan = document.getElementById("lenSpan");
           if (lenSpan == null) {
            lenSpan = document.createElement("SPAN");
            lenSpan.id = "lenSpan";
            obj.parentNode.appendChild(lenSpan);
           }
           lenSpan.innerText = "已輸入" + obj.value.length + "位";
          }

          onkeyup="displayLength(this)"進(jìn)行js調(diào)用。

          posted @ 2010-07-24 17:02 斷點(diǎn) 閱讀(211) | 評(píng)論 (0)編輯 收藏

          僅列出標(biāo)題
          共18頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
          主站蜘蛛池模板: 金秀| 得荣县| 内丘县| 雷山县| 饶河县| 浙江省| 六枝特区| 全州县| 常州市| 昌图县| 塘沽区| 陇南市| 乌拉特中旗| 景泰县| 疏勒县| 广平县| 静宁县| 龙海市| 台东县| 井陉县| 郁南县| 泰来县| 凤阳县| 沧州市| 临颍县| 陇川县| 文水县| 古丈县| 于田县| 甘南县| 洛阳市| 柯坪县| 武安市| 新巴尔虎左旗| 扶绥县| 洛隆县| 灵山县| 信宜市| 云霄县| 云和县| 进贤县|