程序人生——Java非常使用建议

杀鸡焉用牛刀  金牌会员 | 2024-7-21 04:26:33 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 547|帖子 547|积分 1641



  
引出

程序人生——Java非常使用建议

非常

建议110:提倡非常封装;



  • 非常封装有三方面的优点:

    • 1、提高体系的友爱性;
    • 2、提高体系的可维护性;
    • 3、办理Java非常机制本身的缺陷;

建议111:采用非常链通报非常



  • 责任链模式(Chain of Responsibility),目标是将多个对象连城一条链,并沿着这条链通报该请求,直到有对象处理它为止,非常的通报处理也应该采用责任链模式
建议112:受检非常尽可能转化为非受检非常



  • 受检非常威胁到体系的安全性、稳定性、可靠性、正确性时、不能转为非受检非常)(受检非常(Checked Exception),非受检非常(Unchecked Exception),受检非常时正常逻辑的一种补偿处理手段,特殊是对可靠性要求比较高的体系来说,在某些条件下必须抛出受检非常以便由程序进行补偿处理,也就是说受检非常有公道的存在理由。但是受检非常有不足的地方:1、受检非常使接口声明脆弱;2、受检非常是代码的可读性降低,一个方法增长了受检非常,则必须有一个调用者对非常进行处理。受检非常必要try…catch处理;3、受检非常增长了开发工作量。避免以上受检非常缺点办法:将受检非常转化为非受检非常
建议113:不要在finally块中处理返回值



  • 在finally块中加入了return语句会导致以下两个题目:1、覆盖了try代码块中的return返回值;2、屏蔽非常,纵然throw出去了非常,非常线程会登记非常,但是当执行器执行finally代码块时,则会重新为方法赋值,也就是告诉调用者“该方法执行正确”,没有发生非常,于是乎,非常神奇的消散了
建议114:不要在构造函数中抛非常



  • Java非常机制有三种:1、Error类及其子类表示的是错误,它是不必要程序员处理的也不能处理的非常,比如VirtualMachineError虚拟机错误,ThreadDeath线程僵死等;2、RuntimeException类及其子类表示的是非受检非常,是体系可能抛出的非常,程序员可以行止理,也可以不处理,最经典的是NullPointerException空指针非常和IndexOutOfBoundsException越界非常;3、Exception类及其子类(不包含非受检非常)表示的是受检非常,这是程序员必须要处理的非常,不处理则程序不能通过编译,比如IOException表示I/O非常,SQLException数据库访问非常。一个对象的创建过程要经过内存分配、静态代码初始化、构造函数执行等过程,构造函数中是否答应抛出非常呢?从Java语法上来说,完全可以,三类非常都可以,但是从体系计划和开发的角度分析,则尽量不要在构造函数中抛出非常
建议115:使用Throwable获得栈信息



  • 在出现非常时(或主动声明一个Throwable对象时),JVM会通过fillInStackTrace方法记载下栈信息,然后生成一个Throwable对象,如许就能知道类间的调用次序、方法名称以及当前行号等
建议116:非常只为非常服务



  • 非常原本是正常逻辑的一个补充,但偶然候会被当前主逻辑使用。非常作为主逻辑有题目:1、非常判断降低了体系性能;2、降低了代码的可读性,只有详细相识valueOf方法的人才能读懂如许的代码,因为valueOf抛出的是一个非受检非常;3、隐藏了运行期可能产生的错误,catch到非常,但没有做任何处理
建议117:多使用非常,把性能题目放一边



  • new一个IOException会被String慢5倍:因为它要执行fillInStackTrace方法,要记载当前栈的快照,而String类则是直接申请一个内存创建对象。而且,非常类是不能缓存的。但是非常是主逻辑的例外逻辑,会让方法更符合现实的处理逻辑,同时使主逻辑更加清晰,可让正常代码和非常代码分离、能快速查找题目(栈信息快照)等
深入认识JVM

JVM内存分配,类加载

Java进阶(1)——JVM的内存分配 & 反射Class类的类对象 & 创建对象的几种方式 & 类加载(何时进入内存JVM)& 注解 & 反射+注解的案例

创建对象的4种方法总结

Java进阶(4)——联合类加载JVM的过程理解创建对象的几种方式:new,反射Class,克隆clone(拷贝),序列化反序列化

垃圾接纳GC


Java进阶(垃圾接纳GC)——理论篇:JVM内存模子 & 垃圾接纳定位扫除算法 & JVM中的垃圾接纳器
简介:本篇博客介绍JVM的内存模子,对比了1.7和1.8的内存模子的变革;介绍了垃圾接纳的语言发展;论述了定位垃圾的方法,引用计数法和可达性分析发以及垃圾扫除算法;然后介绍了Java中的垃圾接纳器,由串行、到并行再到并发,最后到G1的演变;最后给出了垃圾接纳器的对比和使用指引。
JVM调优,Arthas使用



  • Java进阶(JVM调优)——阿里云的Arthas的使用 & 安装和使用 & 死锁查找案例,重新加载案例,慢调用分析
  • Java进阶(JVM调优)——JVM调优参数 & JDK自带工具使用 & 内存溢出和死锁题目案例 & GC垃圾接纳



认识多线程

创建多线程方法+相识线程池

Java进阶(5)——创建多线程的方法extends Thread和implements Runnable的对比 & 线程池及常用的线程池

多线程下-1非原子性题目即办理

Java进阶(6)——抢购题目中的数据不安全(非原子性题目)& Java中的synchronize和ReentrantLock锁使用 & 死锁及其产生的条件

再论线程,创建、生命周期

Java进阶(再论线程)——线程的4种创建方式 & 线程的生命周期 & 线程的3大特性 & 集合中的线程安全题目
重要内容:
1.线程创建的方式,继承Thread类,实现Runable接口,实现Callable接口,采用线程池;
2.线程生命周期: join():运行竣事再下一个, yield():临时让出cpu的使用权,deamon():保卫线程,最后竣事,sleep():假如有锁,不会让出;
3.线程3大特性,原子性,可见性,有序性;
4.list集合中线程安全题目,hash算法题目;

总结

程序人生——Java非常使用建议

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

杀鸡焉用牛刀

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表