❶ 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加密,高并发如何解决
把你的加密的过程做成同步的,就不会存在这个问题了