几个拓展知识点

1、网络编程概述

随着互联网的发展,支持高并发的http服务器是市场所需的;网络编程面临的问题就是支持高并发以及异常处理。

http://www.jdon.com/concurrent/nio%D4%AD%C0%ED%D3%A6%D3%C3.htm

http://www.jdon.com/concurrent/reactor.htm


2、责任链模式


3、Spring面向切面编程

介绍AOP之前先介绍了代理模式以及java的反射机制。
Java反射机制(java.lang.reflect包中)
在java.lang.reflect包中有两个类是专门用于动态代理的:
InvocationHandler以及Proxy类用于做动态代理。


新建一个实现了InvocationHandle的接口,在里面必须实现invoke方法,在例子中的类中,方法bind的作用就是能够创建一个被代理类的代理,然后在用返回的对象调用方法的时候,那么就会走代理里面的方法invoke。这样就可以在方法的前后做统一的处理。

面向切面编程是将程序的业务分解为各个切面。

面向切面编程就是找到横切关切点。


具体编程实现,定义切面类,然后在spring配置文件中配置aop:config指定pointcut以及before等属性。


4、Redis

Redis支持的数据类型string list set map,而且针对每一种数据类型都有自己的操作命令。

Redis持久化有两种方案:rdb和aof,rdb是用于定时存储数据的一个快照;aof是对于每一个写操作都存储到临时日志文件中。

Redis的内部数据结构中提到了一种“跳跃表”,

跳跃表:1987年提出,对于增加,删除和查找的期望复杂度都是O(logn),有近乎平衡树的本领。其编程复杂度相对于同类的AVL树来说都简单的多。

跳跃表数据结构有多个链表构成。其中每一个链表都包含负无穷大和正无穷大两个元素。S0链表中包含所有的元素,每一个链表都是递增排序的,Sk中的元素都包含于Sk-1中。

http://www.cnblogs.com/visionwang/archive/2013/08/03/3234501.html



http://blog.csdn.net/tyf122/article/details/7707126



5、Maven



6、反射的一些方法



7、JVM性能优化

Java由源代码编程字节码之后,还需要由字节码编译编程机器码,此处所说的优化也主要是指在将字节码转化为机器码时的优化。首先就有很多不同种类的编译器,客户端编译器和服务器端编译器,还有多层编译。在JVM优化上面,也是如何能让翻译成的机器指令更好。比如死代码清除,循环体修改,代码嵌入等。

若干个可选的JVM、垃圾收集器和性能调优参数让开发者花费大量的时间在无休无尽的性能调优方面。这使有些人因此得出结论:垃圾收集是糟糕的,通过调优使垃圾收集较少发生或者持续时间较短是一个很好的变通办法,不过这样做是有风险的。

 

多数的调优参数(例如内存分配率、对象大小、响应时间)都是基于当前测试的数据量对应用程序的内存分配率。你越是优化垃圾收集器来匹配特定的负载,越是远离了Java运行时的动态特性。

影响Java应用程序性能的因素不是垃圾收集器,而是碎片化以及垃圾收集器如何处理碎片化。内存溢出错误会挂起进程,日志显示垃圾收集器正在超负荷工作,这些都显示垃圾收集正试图释放内存,也表明堆中碎片很多。


·        不同的垃圾收集算法和实现适应不同的应用程序需要,跟踪垃圾收集器是商业Java虚拟机中使用的最多的垃圾收集器。

·        并行垃圾收集在执行垃圾收集时并行使用所有资源。它通常是一个stop-the-world垃圾收集器,因此有更高的吞吐量,但是应用程序的工作线程必须等待垃圾收集线程完成,这对应用程序的响应时间有一定影响。

·        并发垃圾收集在执行收集时,应用程序工作线程仍然在运行。并发垃圾收集器需要在应用程序需要内存之前完成垃圾收集。

·        分代垃圾收集有助于延迟碎片化,但无法消除碎片化。分代垃圾收集将堆分为两个空间,其中一个空间存放新对象,另一个空间存放老对象。分代垃圾收集适合有很多存活时间很短的小对象的应用程序。

·        压缩是解决碎片化的唯一方法。多数的垃圾收集器都是以stop-the-world的方式执行压缩的,程序运行时间越久,对象引用越是复杂,对象的大小越是分布不均匀都将导致压缩时间延长。堆的大小也会影响压缩时间,因为可能有更多的活动对象和引用需要更新。

·        调优有助于延迟内存溢出错误。但是过度调优的结果是僵化的配置。在通过试错的方式开始调优之前,要确保清楚生产环境的负载、应用程序的对象类型以及对象引用的特性。过于僵化的配置很可能无法应付动态负载,因此在设置非动态值时一定要了解这样做的后果。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值