java学习概览

装载:http://blog.chinaunix.net/uid-9789791-id-1997452.html

1.分布式JAVA应用 

基于TCP/IP+BIO,TCP/IP+NIO,UDP/IP +BIO,UDP/IP+NIO 实现消息方式的系统间的通信方式 
基于MINA,JETTY框架 
基于远程调用 RMI(spring rmi),WebService(CXF) 

2.大型分布式java应用与SOA 
基于SCA实现SOA平台 
基于ESB实现SOA平台 
ESB核心思想是基于消息中间件来实现系统间的交互 
基于Tuscany实现SOA平台--SCA 
基于Mule实现SOA平台   --ESB 

3.深入理解JVM 
Java源码编译步骤 1.分析和输入到符号表 2.注解处理  3.语义分析和生成class文件 
类加载机制 1.装载(二进制字节码加载至JVM)   2.链接(负责对二进制字节码的格式进行校验,初始化装载类中静态变量及解析类中调用的接口,类) 
           3.初始化(执行类中的静态初始化代码,构造器代码及静态属性的初始化) 
JDK基于栈的体系结构来执行字节码,基于栈方式是好处为代码紧凑,体积小. 
编译时提供两种模式:client compiler 和 server compiler 
client compiler 是轻量级,只做少量性能开销比高的优化,它占用内存较少,适用于桌面交互式应用。优化主要有:方法内联,去虚拟化,冗余削除。 
server compiler 是重量级,采用了大量的传统编译优化技巧来进行优化,占用内存相对会多一些,适用于服务器的应用。 
堆用于存储对象及数组值。 
-XMS -XMX 设置一样的大小,防止内存大于变化。 
jstat -gcutil [pid] 1000 10 minor GC时的变化情况 
jconsole 可以图形查看JVM内存变化状况 
JVisualVM 它类似于JPofiler 工具,基于此工具可查看内存的消耗情况,线程的执行状况及程序中消耗CPU,内存的动作。 
JMap 分析JVM内存状况的工具 jmap -heap [pid] --查看JVM堆的配置信息 
jmap -histo [pid] 查看JVM堆中对象详细占用情况 
jHat 是java自带的一个用于分析jvm堆dump文件工具  jhat -J-Xmx1024 [file] 
jStat JAVA自带的一个统计分析JVM运行状况的工具 
Eclipse Memory Analyzer 分析jvm 堆dump文件的插件 
TDA是开源界一个不错的用于分析线程堆栈信息的图形化工具 

5。性能调优 
调用步骤:衡量系统现状  设定调优目标  寻找性能瓶颈 性能调优   衡量是否达到目标  性能调优 
通常性能瓶颈在表象是资源消耗过多,外部处理系统性能不足,或得资源消耗不多 
资源主要消耗在CPU,文件IO,网络IO以级内存方法,机器的资源是有限的。当某些资源消耗过多时,通常会造成系统的响应速度慢。 
分析CPU  上下文切换, 运行队列 ,利用率 
top 或 pidstat 方式来查看进程中线程的CPU的消耗状况 
us 过高时,表示运行的应用消耗了大部分的CPU,sy值高时,表示Linux 花费了更多时间在进行线程的切换。 
pidstat -d -t -p [pid] 1 100 查看线程IO消耗情况 
iostat查看各个设备的IO历史状况 
Linux 中可采用sar 来分析网络IO 的消耗状况 
vmstat 查看内存信息 

JVM调优 
1.避免新生代大小设置过小 -当新生代大小设置过小时,会产生两种比较明显的现象,一是minor GC次数更加频繁,二是有可能导致minor gc对象直接进入旧生代。 
2.避免新生代设置过大 
3.避免Survivor区过小或过大 
4.合理设置新生代存活周期 

程序调优 
1.us过高 增加 Thread.sleep 
2.sy 过高 基于kilim 采用Coroution方式支撑高并发 

最耗CPU的线程26697为例,将26697换算成十六进制的值,结合java thread dump (jstack [pid] | grmp 'nid = 0x6849') 找到些线程 

文件IO消耗严重解决方法 
1.异步写文件  log4j AsyncAppender 
2.批量写文件 
3.限流 
4.限文件大小 

网络IO消耗严重的解决方法 
1.释放不必要的引用 
2.使用对象缓存池 
3.采用合理的缓存失效算法 
4.合理使用SoftReference 和 WearReference 


销竞争激烈 
1.使用并发包中的类 
2.使用Treiber 算法 
3.使用michael-scott非阻塞队列算法 
4.尽可能少用锁 
5.拆分锁 
6.去除读写操作的互斥锁 

6。构建高可用的系统 
负载均均衡技术 
选择实际业务处理机器方式 1.随机选择  2.Hash选择  3.(Round-Robin)选择   4.按权重选择  5.按负载选择  6.按连接选择 
响应返回方式  1.响应通过负载均衡机器返回(NAT)   2.响应直接返回请求发起方(IP Tunneling 或  DR) 
硬件负载设备  F5 各 Netscalar 
软件负载  LVS 
去中心实现负载均衡   Gossip(Cassandra 采用) 
基于Paxos保存一致性 
Fackbook Scribe 日志分析系统 
书推荐 web容量规划的艺术 


7.构建可伸缩的系统 

分布式文件系统  HDFS GFS 
DAL(数据库访问层)--- amoeba 
支撑大数据量  读写分离    多master 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值