程序人生——Java异常使用建议,我把所有软件测试第三方库整理成了PDF
先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,现在阿里P7深知大多数程序员,想要提升技能,往往是自己探索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术故步自封!
因此收集整理了一份《2024年最新软件测试全套学习资料》,初志也很简朴,就是希望能够帮助到想自学提升又不知道该从何学起的朋侪。
https://i-blog.csdnimg.cn/blog_migrate/78624996f5f4fc86339c0c5114d489ca.png
https://i-blog.csdnimg.cn/blog_migrate/9a97362bf02660a8d565409e3551d572.png
https://i-blog.csdnimg.cn/blog_migrate/5796a496950cda7f41097b34a5fad53a.png
https://i-blog.csdnimg.cn/blog_migrate/a44735d089822e4260288b97aafcdba7.png
https://i-blog.csdnimg.cn/blog_migrate/b5ac1f3c6ce3b2d874bf9ed1f3d59ea8.png
既有适合小白学习的零基础资料,也有适合3年以上履历的小同伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比力多,这里只是将部门目录截图出来,全套包罗大厂面经、学习笔记、源码课本、实战项目、大纲路线、解说视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
https://i-blog.csdnimg.cn/blog_migrate/cc07d3787ce62a2f87cd41a6f5f59120.jpeg
正文
[*]建议112:受检异常尽可能转化为非受检异常
[*]
[*]建议113:不要在finally块中处理返回值
[*]建议114:不要在构造函数中抛异常
[*]
[*]建议115:使用Throwable得到栈信息
[*]建议116:异常只为异常服务
[*]
[*]建议117:多使用异常,把性能标题放一边
[*]深入认识JVM
[*]
[*]JVM内存分配,类加载
[*]创建对象的4种方法总结
[*]垃圾接纳GC
[*]JVM调优,Arthas使用
[*]认识多线程
[*]
[*]创建多线程方法+了解线程池
[*]多线程下-1非原子性标题即解决
[*]再论线程,创建、生命周期
[*]总结
引出
程序人生——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)& 注解 & 反射+注解的案例
https://i-blog.csdnimg.cn/blog_migrate/9d86e3e499c9402c0f39ceb60d0babc4.png
创建对象的4种方法总结
Java进阶(4)——联合类加载JVM的过程理解创建对象的几种方式:new,反射Class,克隆clone(拷贝),序列化反序列化
https://i-blog.csdnimg.cn/blog_migrate/7cb8f7f19bfe1e2d7778aa3a1b112761.png
垃圾接纳GC
https://i-blog.csdnimg.cn/blog_migrate/7a6a26a970996afb73168ac7c45be06b.png
Java进阶(垃圾接纳GC)——理论篇:JVM内存模型 & 垃圾接纳定位打扫算法 & JVM中的垃圾接纳器
简介:本篇博客介绍JVM的内存模型,对比了1.7和1.8的内存模型的变化;介绍了垃圾接纳的语言发展;论述了定位垃圾的方法,引用计数法和可达性分析发以及垃圾打扫算法;然后介绍了Java中的垃圾接纳器,由串行、到并行再到并发,末了到G1的演变;末了给出了垃圾接纳器的对比和使用指引。
JVM调优,Arthas使用
网上学习资料一大堆,但如果学到的知识不成体系,遇到标题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份体系化的资料的朋侪,可以添加V获取:vip1024b (备注软件测试)
https://i-blog.csdnimg.cn/blog_migrate/04329f49119e079716f68b9bf041ab5e.jpeg
一个人可以走的很快,但一群人才气走的更远!岂论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎参加我们的的圈子(技术交换、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
*
[外链图片转存中…(img-ilaMAUBv-1713235765533)]
一个人可以走的很快,但一群人才气走的更远!岂论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎参加我们的的圈子(技术交换、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]