写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,希望可以给大家一些经验,能让大家更好学习和使用Java。大家如果需要大数据相关的学习资料可以在评论区留言哦,小编看到之后会对大家回复并且分发资料。
这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE相关的、和Java中各个框架相关的内容。
经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。
1. JVM相关
对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。
不过对于一个有着3年以上Java经验的资深开发者来说,不会JVM几乎是不可接受的。
JVM作为java运行的基础,很难相信对于JVM一点都不了解的人可以把java语言吃得很透。
我在面试有超过3年Java经验的开发者的时候, JVM几乎就是一个必问的问题了。
当然JVM不是唯一决定技术能力好坏的面试问题,但是可以佐证java开发能力的高低。
在这里还是要推荐下我自己建的Java学习裙:574加上253再加上075,群里都是学Java开发的,如果你正在学习Java ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有Java软件开发相关的),包括我自己整理的一份2018最新的Java进阶资料和高级开发教程,欢迎进阶中和进想深入java的小伙伴
在JVM这个大类中,我认为需要掌握的知识有:
● JVM内存模型和结构
● GC原理,性能调优
● 调优:Thread Dump, 分析内存结构
● class 二进制字节码结构, class loader 体系 , class加载过程 , 实例创建过程
● 方法执行过程
● Java各个大版本更新提供的新特性(需要简单了解)
2. Java的运行
这条可能出看很简单,java程序的运行谁不会呢?
不过很多时候, 我们只是单纯通过IDE去执行java程序,底层IDE又是如何执行java程序呢?很多人并不了解。
这个知识点是最最基本的java开发者需要掌握的,第一个肯定是教你如何在命令行中执行java程序,但是很多人一旦把java学完了,IDE用上了,就把这个都忘了。
为什么强调要知道这个呢,知道了java最纯粹的启动方式之后,你才能在启动出问题的时候,去分析当时启动的目录多少,执行命名如何,参数如何,是否有缺失等。
这样有利于你真正开发中去解决那些奇奇怪怪的可能和环境相关的问题。
在Java工程师平常的开发过程中,由于业务的不同,可能关注的点有很多不一样的地方,但是在技术掌握层面还是有一些共性的。
本文概括了在Java开发、测试、部署、工程化方面一些必备技能,供大家参考。
变动的配置写在属性文件中
比如,没有把一些需要并发执行时使用的线程数设置成可在属性文件中配置。
那么你的程序无论在DEV环境中,还是TEST环境中,都可以顺畅无阻地运行,但是一旦部署在PROD上,把它作为多线程程序处理更大的数据集时,就会抛出IOException,原因也许是线上环境并发造成也许是其他。
如果线程数目可以在属性文件中配置,那么使它成为一个单线程应用程序就变得十分容易了。我们不再需要为了解决问题而反复地部署和测试应用了。这种方法也同样适用于配置 URL、服务器和端口号等。
这里推荐使用属性文件外化这些配置,文件格式使用properties、yaml、hocon、json都可以。
测试中尽可能模拟线上环境
生产过程中一个典型的场景就是只使用1到3个帐户进行测试,而这个数量本应是1000到2000个的。
在做性能测试时,使用的数据必须是真实并且未经裁剪的。
不贴近真实环境的性能测试,可能会带来不可预料的性能、拓展和多线程问题。
外部调用及内部服务做容错处理
不管是RPC调用还是对于第三方服务的调用,都不能想当然的认为可用性是100%的。
不允许出现服务调用超时和重试,将会对应用程序的稳定性和性能造成不利地影响。
安全设计上系统要遵循最小权限原则
网络服务随处可见,从而使得黑客可以轻易地利用它进行拒绝服务攻击。所以,设计系统时,需要遵循“最小权限”原则,采用白名单等方式。
需要提供以下文档
编写单元测试文档并使其拥有良好的代码覆盖率。
高层次的设计图:描述了所有的组件,交互和结构。
详细的设计图:具体到代码层面的设计
系统map(类似于site map):说明系统的所有组成文件、配置文件等
系统关键功能做好监控、错误恢复、备份
对于系统一些至关重要的功能模块要做好对其的监控,防止其影响系统的运行,造成不可估算的损失。
另外,如果可以,监控到故障后去去试图恢复,恢复失败再发送告警。对于一些很重要的数据文件,还要做到冗余备份,防止发生一些突然故障造成数据丢失。
有人说,程序员的门槛正在逐渐消失,因为计算机相关专业毕业生一年比一年多; IT 培训班出来的学生一年比一年多;IT培训机构,也正在帮助无数人零基础转型软件开发。
Java程序员薪酬待遇一路水涨船高,在2018新的一年里,Java软件工程师工资会如何走势呢?根据IDC的统计数字,在所有软件开发类人才的需求中,对Java工程师的需求达到全部需求量60%~70%。应该说Java软件工程师的就业机会和前景是非。我们一起分析一下。
2018年Java软件工程师平均月薪多少?
近年来Java工程师的待遇每年都有所提高,从月薪几千块到几万块的比比皆是,那么Java工程师平均工资是多少?智联招聘的有效数据统计Java工程师的平均工资已经达到了9870元,这是一个很可观的数字,不要看还没过万但是大家有没有想过这是平均工资的水平。
通常情况下,3~5年开发经验的工程师,拥有年薪20万元是很正常的一个薪酬水平。由此可见Java的迅猛发展是不可避免的因素,Java工程师薪酬待遇在2018年也会有突飞猛进的势态。更多编程方面的分享请关注威信工宗号:程序员大牛,每天分享干货!