❶ java如何處理高並發
你指的高並發量大概有多少?
幾點需要注意:
盡量使用緩存,包括用戶緩存,信息緩存等,多花點內存來做緩存,可以大量減少與資料庫的交互,提高性能。
用jprofiler等工具找出性能瓶頸,減少額外的開銷。
優化資料庫查詢語句,減少直接使用hibernate等工具的直接生成語句(僅耗時較長的查詢做優化)。
優化資料庫結構,多做索引,提高查詢效率。
統計的功能盡量做緩存,或按每天一統計或定時統計相關報表,避免需要時進行統計的功能。
能使用靜態頁面的地方盡量使用,減少容器的解析(盡量將動態內容生成靜態html來顯示)。
解決以上問題後,使用伺服器集群來解決單台的瓶頸問題。
基本上以上述問題解決後,達到系統最優。
至於樓上有人提到別用JAVA來做,除非是低層的連接數過大(如大量的埠佔用需求),這種情況下考慮直接C來寫,其他的可以用JAVA來做。
可以網上購買視頻做教育學習。
❷ 濡備綍澶勭悊java楂樺苟鍙戦棶棰
濡備綍澶勭悊騫跺彂鍜屽悓姝
浠婂ぉ璁茬殑濡備綍澶勭悊騫跺彂鍜屽悓鍚屾ラ棶棰樹富瑕佹槸閫氳繃閿佹満鍒躲
鎴戜滑闇瑕佹槑鐧斤紝閿佹満鍒舵湁涓や釜灞傞潰銆
涓縐嶆槸浠g爜灞傛′笂鐨勶紝濡俲ava涓鐨勫悓姝ラ攣錛屽吀鍨嬬殑灝辨槸鍚屾ュ叧閿瀛梥ynchronized錛岃繖閲屾垜涓嶅湪鍋氳繃澶氱殑璁茶В錛
鎰熷叴瓚g殑鍙浠ュ弬鑰:http://www.cnblogs.com/xiohao/p/4151408.html
鍙﹀栦竴縐嶆槸鏁版嵁搴撳眰嬈′笂鐨勶紝姣旇緝鍏稿瀷鐨勫氨鏄鎮茶傞攣鍜屼箰瑙傞攣銆傝繖閲屾垜浠閲嶇偣璁茶В鐨勫氨鏄鎮茶傞攣錛堜紶緇熺殑鐗╃悊閿侊級鍜屼箰瑙傞攣銆
鎮茶傞攣(Pessimistic Locking):
鎮茶傞攣錛屾e傚叾鍚嶏紝瀹冩寚鐨勬槸瀵規暟鎹琚澶栫晫錛堝寘鎷鏈緋葷粺褰撳墠鐨勫叾浠栦簨鍔★紝浠ュ強鏉ヨ嚜 澶栭儴緋葷粺鐨勪簨鍔″勭悊錛変慨鏀規寔淇濆畧鎬佸害錛屽洜姝わ紝
鍦ㄦ暣涓鏁版嵁澶勭悊榪囩▼涓錛屽皢鏁版嵁澶勪簬閿佸畾鐘舵併
鎮茶傞攣鐨勫疄鐜幫紝寰寰渚濋潬鏁版嵁搴撴彁渚涚殑閿佹満鍒訛紙涔熷彧鏈夋暟鎹搴撳眰鎻愪緵鐨勯攣鏈哄埗鎵嶈兘 鐪熸d繚璇佹暟鎹璁塊棶鐨勬帓浠栨э紝鍚﹀垯錛屽嵆浣垮湪鏈緋葷粺
涓瀹炵幇浜嗗姞閿佹満鍒訛紝涔熸棤娉曚繚璇佸栭儴緋 緇熶笉浼氫慨鏀規暟鎹錛夈
涓涓鍏稿瀷鐨勫氳禆鏁版嵁搴撶殑鎮茶傞攣璋冪敤錛
select * from account where name=鈥滶rica鈥 for update
榪欐潯 sql 璇鍙ラ攣瀹氫簡 account 琛ㄤ腑鎵鏈夌﹀悎媯緔㈡潯浠訛紙 name=鈥滶rica鈥 錛夌殑璁板綍銆
鏈嬈′簨鍔℃彁浜や箣鍓嶏紙浜嬪姟鎻愪氦鏃朵細閲婃斁浜嬪姟榪囩▼涓鐨勯攣錛夛紝澶栫晫鏃犳硶淇鏀硅繖浜涜板綍銆
Hibernate 鐨勬偛瑙傞攣錛屼篃鏄鍩轟簬鏁版嵁搴撶殑閿佹満鍒跺疄鐜般
涓嬮潰鐨勪唬鐮佸疄鐜頒簡瀵規煡璇㈣板綍鐨勫姞閿侊細
String hqlStr ="from TUser as user where user.name='Erica'";
Query query = session.createQuery(hqlStr);
query.setLockMode("user",LockMode.UPGRADE); // 鍔犻攣
List userList = query.list();// 鎵ц屾煡璇錛岃幏鍙栨暟鎹
query.setLockMode 瀵規煡璇㈣鍙ヤ腑錛岀壒瀹氬埆鍚嶆墍瀵瑰簲鐨勮板綍榪涜屽姞閿侊紙鎴戜滑涓 TUser 綾繪寚瀹氫簡涓涓鍒鍚 鈥渦ser鈥 錛夛紝榪欓噷涔熷氨鏄瀵
榪斿洖鐨勬墍鏈 user 璁板綍榪涜屽姞閿併
瑙傚療榪愯屾湡 Hibernate 鐢熸垚鐨 SQL 璇鍙ワ細
select tuser0_.id as id, tuser0_.name as name, tuser0_.group_id
as group_id, tuser0_.user_type as user_type, tuser0_.sex as sex
from t_user tuser0_ where (tuser0_.name='Erica' ) for update
榪欓噷 Hibernate 閫氳繃浣跨敤鏁版嵁搴撶殑 for update 瀛愬彞瀹炵幇浜嗘偛瑙傞攣鏈哄埗銆
Hibernate 鐨勫姞閿佹ā寮忔湁錛
Ø LockMode.NONE 錛 鏃犻攣鏈哄埗銆
Ø LockMode.WRITE 錛 Hibernate 鍦 Insert 鍜 Update 璁板綍鐨勬椂鍊欎細鑷鍔ㄨ幏鍙
Ø LockMode.READ 錛 Hibernate 鍦ㄨ誨彇璁板綍鐨勬椂鍊欎細鑷鍔ㄨ幏鍙栥
浠ヤ笂榪欎笁縐嶉攣鏈哄埗涓鑸鐢 Hibernate 鍐呴儴浣跨敤錛屽 Hibernate 涓轟簡淇濊瘉 Update
榪囩▼涓瀵硅薄涓嶄細琚澶栫晫淇鏀癸紝浼氬湪 save 鏂規硶瀹炵幇涓鑷鍔ㄤ負鐩鏍囧硅薄鍔犱笂 WRITE 閿併
Ø LockMode.UPGRADE 錛氬埄鐢ㄦ暟鎹搴撶殑 for update 瀛愬彞鍔犻攣銆
Ø LockMode. UPGRADE_NOWAIT 錛 Oracle 鐨勭壒瀹氬疄鐜幫紝鍒╃敤 Oracle 鐨 for
update nowait 瀛愬彞瀹炵幇鍔犻攣銆
涓婇潰榪欎袱縐嶉攣鏈哄埗鏄鎴戜滑鍦ㄥ簲鐢ㄥ眰杈冧負甯哥敤鐨勶紝鍔犻攣涓鑸閫氳繃浠ヤ笅鏂規硶瀹炵幇錛
Criteria.setLockMode
Query.setLockMode
Session.lock
❸ java 怎樣處理高並發
一、背景綜述
並發就是可以使用多個線程或進程,同時處理(就是並發)不同的操作。
高並發的時候就是有很多用戶在訪問,導致系統數據不正確、糗事數據的現象。對於一些大型網站,比如門戶網站,在面對大量用戶訪問、高並發請求方面,基本的解決方案集中在這樣幾個環節:使用高性能的伺服器、高性能的資料庫、高效率的編程語言、還有高性能的Web容器。這幾個解決思路在一定程度上意味著更大的投入。
使用一般的synchronized或者是lock或者是隊列都是無法滿足高並發的問題。
二、解決方法有三:
1.使用緩存
2.使用生成靜態頁面
html純靜態頁面是效率最高、消耗最小的頁面。我們可以使用信息發布系統來實現簡單的信息錄入自動生成靜態頁面,頻道管理、許可權管理和自動抓取等功能,對於一個大型網站來說,擁有一套高效、可管理的信息發布系統CMS是必不可少的。
3.圖片伺服器分離
圖片是最消耗資源的,僵圖片和頁面分離可以降低提供頁面訪問請求的伺服器系統壓力,並且可以保證系統不會因為圖片問題而崩潰。
3.寫代碼的時候減少不必要的資源浪費:
不要頻繁得使用new對象,對於在整個應用中只需要存在一個實例的類使用單例模式.對於String的連接操作,使用StringBuffer或者StringBuilder.對於utility類型的類通過靜態方法來訪問。
避免使用錯誤的方式,如Exception可以控制方法推出,但是Exception要保留stacktrace消耗性能,除非必要不要使用 instanceof做條件判斷,盡量使用比的條件判斷方式.使用JAVA中效率高的類,比如ArrayList比Vector性能好。)
使用線程安全的集合對象vector hashtable
使用線程池
❹ java rsa加密,高並發如何解決
把你的加密的過程做成同步的,就不會存在這個問題了