您所在位置:常熟上元教育 > 上元IT > Java >

常熟IT培训学校_Java程序员发展方向?

2020-03-08 14:34 changshu

本文为大家总结了Java程序员要学习的东西和职业发展方向,非常全面。建议大家仔细阅读,收藏备查。

一、技术积累

(1)代码规范


1.1.1、通常的模块分布:一般如果你要实现一个web应用,你从后台将数据展示到前端页面,在一个比较大的公司,你少不了跟其他项目有交集(你调用他的接口,他依赖你的接口),这样下来,整个公司有很多个模块,怎么做到很好的联系。


回到刚刚的模块分布,你的一个web应用,应当需要分成三个模块:core模块、service模块、web模块。web模块就是展示到页面,后台代码而言主要就controller层了,其他逻辑基本都放在core了,service模块就是一些接口类和参数dto等等,接口的实现类在core模块。


这样下来,web模块只需要依赖service模块,同样的其他系统依赖你的接口也仅仅是依赖service模块,然后利用远程调用方式消费你的接口服务。

联系电话:15262513713 程老师  书院街19号园山居四楼捷梯教育401
联系地址:书院街19号 金海华酒店对面 捷梯教育 全国76家分校
公交路线:2、5、7、8、9、109、116、104、105、110到书院街下



1.1.2、代码层级结构?针对后台服务项目,一般分为对外接口层、service层、Dao层。Dao层就是与数据库交接的接口层,service层主要调用Dao或者外部系统的接口,复杂的逻辑基本都放在service层;一些方法需要提供给其他模块调用的时候,就封装在对外接口层,只有对外接口层是暴露。


这里说的只是层级结构,还有与层级结构无关的,也是需要归类的,比如对外部系统接口方法封装的我们放在一个目录下面,一些常量和工具类等我们放在common目录下面。当然还有其他考虑,尽量让整个模块有层次感,代码才不会太乱,更好的维护。


1.1.3、总结上面两点:可能不少猿友觉得上面啰嗦又不像代码规范,其实这两点也是代码规范的一部分,主要引导大家往结构清晰好维护的思维方向走,多思考吧。


1.1.4、对于一些需要异步处理的,不要直接new一个thread,应当使用线程池。使用线程池的时候应当对线程数量大小合理设置,一般最大不超过50个,当然还需要考虑你的IO和CPU,怎么分析网上搜搜吧。


1.1.5、容器类变量,如果变化比较大且频繁,尽量定义的时候设置初始容量大小,减少扩容带来的消耗。


1.1.6、分支判断if…else的时候,最常符合的条件处理放在前面。


1.1.7、对象比较的时候常量放前面,养成好习惯,减少空指针的出现。


1.1.8、减少synchronized中等待处理的代码,能放在外面就尽量放在外面。


1.1.9、下面到数据库了,我觉得还是在这里说了好点,一般查询比较慢,很有可能是没有建索引或者索引没用到,多去检查一下。


1.1.10、两个大表的关联查询,可以使用二次访问数据库替代,先查出A表的数据,利用关联字段再查B表的。不要一味想着一条sql搞定最好。


1.1.11、坚决避免,查全表数据或者数量大的数据,返回list加载到内存中,一不小心查了100w数据,又查得比较频繁,内存的爆了。有这种风险的改成分页查询。


1.1.12、不要select *,按需取列。


1.1.13、多考虑避免事务里面有长连接或者长事务,如果大量这种情况出现占用数据连接,会影响性能。一些无必要的逻辑可以放到事务外执行。


1.1.14、对字段的加减乘除处理放到sql,严格避免先get处理,然后运算在set到数据库里面,并发情况非常容易导致失真。


1.1.15、方法里面代码不要太长,注意封装,命名语义化,代码整洁。常挂嘴边的,没放心上,一如既往的给自己埋坑,举个博主的例子,那会刚毕业也是没放心上,关注公众号:Java编程精选,最近把我们组长不写代码,一到代码评审我就害怕,检视到有问题的代码,毕业生吧就说这代码以前就是这样写的,问题最终肯定都落我身上,现在感觉代码是自己的孩子,只能有空自己偷偷的优化一下,怕出问题还得非常仔细。


(2)SQL规范与性能优化


1.2.1、先提前声明,博主工作用到是MySQL,可能有些场景只针对MySQL。说到SQL优化,一些概念必须要理解,不然死记硬背一两天就忘记了。特别是执行计划的概念。


1.2.2、什么是执行计划:a.决定如何访问表数据,是否通过索引,是否排序等。b.多表关联是先访问哪个表。c.多表关联时,使用哪种连接方式,不过现在MySQL只有嵌套连接(嵌套循环,顾名思义就是将一个表为出发点,将该表全部记录逐条去遍历另外一张表的记录)。


1.2.3、SQL执行顺序:a.检查语法是否正确。b.检查表是否存在、权限是否满足等。c.根据统计信息(如data length,rows,index length、索引唯一度),生成较优的执行计划。d.根据执行计划,进行数据检索、过滤、合并、排序等操作。访问数据时,内存中如存在表数据,则直接进行操作;否则,从磁带读取表数据,放入内存,再进行操作;如内存不足,则内存中较冷数据涮出内存,再从内存中读取数据。


1.2.4、索引:查询的时候如果使用上了索引,可以提高效率,因为建立了索引后,可以理解为数据字典的结构存储,因此根据条件查询的时候更加高效。下面看一下MySQL常用的索引类型的概念。


a.普通索引:在创建普通索引时,不附加任何限制条件。这类索引可以创建在任何数据类型中,其值是否唯一和非空由字段本身的完整性约束条件决定。建立索引以后,查询时可以通过索引进行查询。例如,在student表的stu_id字段上建立一个普通索引。查询记录时,就可以根据该索引进行查询。


b.唯一性索引:使用UNIQUE参数可以设置索引为唯一性索引。在创建唯一性索引时,限制该索引的值必须是唯一的。例如,在student表的stu_name字段中创建唯一性索引,那么stu_name字段的值就必需是唯一的。通过唯一性索引,可以更快速地确定某条记录。主键就是一种特殊唯一性索引。

上一篇:没有了

下一篇:苏州java目前就业形势_还有什么需要提升?