一 . 技术积累前端
(1)代码规范程序员
1.1.一、一般的模块分布:通常若是你要实现一个web应用,你从后台将数据展现到前端页面,在一个比较大的公司,你少不了跟其余项目有交集(你调用他的接口,他依赖你的接口),这样下来,整个公司有不少个模块,怎么作到很好的联系。回到刚刚的模块分布,你的一个web应用,应当须要分红三个模块:core模块、service模块、web模块。web模块就是展现到页面,后台代码而言主要就controller层了,其余逻辑基本都放在core了,service模块就是一些接口类和参数dto等等,接口的实现类在core模块。这样下来,web模块只须要依赖service模块,一样的其余系统依赖你的接口也仅仅是依赖service模块,而后利用远程调用方式消费你的接口服务。web
1.1.二、代码层级结构:针对后台服务项目,通常分为对外接口层、service层、Dao层。Dao层就是与数据库交接的接口层,service层主要调用Dao或者外部系统的接口,复杂的逻辑基本都放在service层;一些方法须要提供给其余模块调用的时候,就封装在对外接口层,只有对外接口层是暴露。这里说的只是层级结构,还有与层级结构无关的,也是须要归类的,好比对外部系统接口方法封装的咱们放在一个目录下面,一些常量和工具类等咱们放在common目录下面。固然还有其余考虑,尽可能让整个模块有层次感,代码才不会太乱,更好的维护。sql
1.1.三、总结上面两点:可能很多猿友以为上面啰嗦又不像代码规范,其实这两点也是代码规范的一部分,主要引导你们往结构清晰好维护的思惟方向走,多思考吧。数据库
1.1.四、对于一些须要异步处理的,不要直接new一个thread,应当使用线程池。使用线程池的时候应当对线程数量大小合理设置,通常最大不超过50个,固然还须要考虑你的IO和CPU,怎么分析网上搜搜吧。架构
1.1.五、容器类变量,若是变化比较大且频繁,尽可能定义的时候设置初始容量大小,减小扩容带来的消耗。并发
1.1.六、分支判断if…else的时候,最常符合的条件处理放在前面。异步
1.1.七、对象比较的时候常量放前面,养成好习惯,减小空指针的出现。工具
1.1.八、减小synchronized中等待处理的代码,能放在外面就尽可能放在外面。性能
1.1.九、下面到数据库了,我以为仍是在这里说了好点,通常查询比较慢,颇有多是没有建索引或者索引没用到,多去检查一下。
1.1.十、两个大表的关联查询,可使用二次访问数据库替代,先查出A表的数据,利用关联字段再查B表的。不要一味想着一条sql搞定最好。
1.1.十一、坚定避免,查全表数据或者数量大的数据,返回list加载到内存中,一不当心查了100w数据,又查得比较频繁,内存的爆了。有这种风险的改为分页查询。
1.1.十二、不要select *,按需取列。
1.1.1三、多考虑避免事务里面有长这链接或者长事务,若是大量种状况出现占用数据链接,会影响性能。一些无必要的逻辑能够放到事务外执行。
1.1.1四、对字段的加减乘除处理放到sql,严格避免先get处理,而后运算在set到数据库里面,并发状况很是容易致使失真。
1.1.1五、方法里面代码不要太长,注意封装,命名语义化,代码整洁。常挂嘴边的,没放心上,一如既往的给本身埋坑,举个博主的例子,最近把咱们组长不写代码,一到代码评审我就惧怕,检视到有问题的代码,毕业生吧就说这代码之前就是这样写的,问题最终确定都落我身上,如今感受代码是本身的孩子,只能有空本身偷偷的优化一下,怕出问题还得很是仔细。
(2) 关于数据库链接池。
可能一些猿友都少去注意吧。先来看看一些参数,这里只罗列了博主比较关注的,更多的能够自行查看一下配置。
initialSize : 默认值是 0, 链接池建立链接的初始链接数目。
minIdle : 默认是 0, 链接数中最小空闲链接数。
maxIdle : 默认是 8 ,链接池中最大空闲链接数。
maxActive : 默认值是 8, 链接池中同时能够分派的最大活跃链接数。
maxWait : 默认值是无限大,当链接池中链接已经用完了,等待创建一个新链接的最大毫秒数 ( 在抛异常以前 )。
validationQuery : 一条 sql 语句,用来验证数据库链接是否正常。这条语句必须是一个查询模式,并至少返回一条数据。通常用“ select 1 ”。
minEvictableIdleTimeMilis : 默认值是 1000 * 60 * 30(30 分钟 ) 单位也是毫秒,链接池中链接可空闲的时间。
timeBetweenEvictionRunsMilis : 默认值是 -1 ,每隔一段多少毫秒跑一次回收空闲线程的线程。
对于minEvictableIdleTimeMilis、timeBetweenEvictionRunsMilis这两个参数,timeBetweenEvictionRunsMilis必须大于1且小于minEvictableIdleTimeMilis,建议是minEvictableIdleTimeMilis的五分之一或十分之一。
(3)
对于前端的几点建议。
1.7.一、一些图片压缩后再使用,性能方面提升不小吧(可使用熊猫图片压缩)。虽然本身前端比较菜,可是估计也有很多猿友跟我同样偶尔须要兼顾前端吧。
关于技术积累这一块,以前罗列的提纲还挺多的,写到后面感受没什么精力了,有些三言两语彷佛说不清楚啊。
2、工做心得
(1)沟通协做第一:
工做中必然少不了团队协做,积极主动去沟通的人作事老是更加靠谱。道理你们都懂。可是咱们须要把想法问题,简洁明确的表达给对方。另外老是以沟通的心态面对问题,而不是抱怨。若是以为上级分配的任务难度太大了,你能够尝试跟他沟通,获取他有很好的建议或解决方案。
(2)谨慎记录与排漏:
常常是开一两个会,测试同时偶尔找你排查一下环境问题,一天下来其实写代
码的时间并很少。一些关键点,很是建议提早记录下来,方便接回被打断的思路,同时避免一些逻辑或功能点的遗漏。
(3)思路清晰与效率:
建议动手写代码以前,建议先理清思路,关键逻辑,需求细节,这样后面写代码的时候效率比较高,并且质量也比较好。
(4)主动与多管闲事:
清楚本身的工做范围,本身内心有个界限,有些属于别人工做范围的事情,能够你提出的建议是好的,可是最好仍是在合适的场景和时机提出。
(5)心态与工做状态:
程序员,总会有被坑的时候,或者不顺心的时候,尽可能尝试控制一下本身的心态。
(6)可持续发展观看待技术与业务:
这点是我本身但愿作到的。对于责任心而言,或者是说一个优秀的程序员。不少时候并非完成产品提的需求就行了。多为它着想,代码可维护性和扩展性高不高。一些功能点也能够提出本身的想法,不要老是被动的接受产品的需求,业务功能拓展性好的话,能够减小产品改动需求。
3、学习方向与职业发展
(1)先广后深仍是先深后广:
我的性格而言,比较偏向于实用驱动,若是在实际使用场景有用到再去深刻学习,这样边学边用才能比较集中注意力。像一些同事,他们喜欢把同样东西研究得很深。
(2)业务经验也应当注重:
技术人员必然是技术优先,可是等你到了必定工做年限,其实业务经验也是很是重要了,招高级工程师的时候对业务经验也很是看重,是否有本身独特的看法。相信道理你们都懂,可是平时有没有这样的意识,有没有去作又是另一方面了。平时也能够多学习业务方面的知识。
(3)相同的工做年限为何当过项目经理的人更吃香:
由于他们对业务理解更加深刻,代码质量问题落在他头上,项目的人员协调与时间安排规划,责任越大,思考的问题就越多,遇到的问题处理经验就越丰富。把控能力也比较强。
(4)怎样能进入学习状态,而且坚持:
要想集中注意力学习技术,须要安静的环境,须要耐得住寂寞,所以你须要没有人打扰的环境,好比在一个集体居住环境,几个朋友一块儿住,通常多数回想着去哪玩,朋友在玩游戏,估计也是对你的一种诱惑吧。能够早点到办公室学习或下班学习一段时间再回去。或者选择本身一我的住。
(5)如何把握住学习的时机:
学习最能集中注意力的状况是有着比较强的好奇心和求知欲。因此通常一些技术分享或者老员工讨论的问题,可能不少概念知识你都不懂,这时候你就能够去学习了解这些知识。或者你工做中遇到的问题,尽可能刨根问底的去弄清楚是什么缘由致使的,不要一些老司机帮忙解决了就一了了之。或者是其余同事遇到的问题,你均可以去了解一下。
(6)你更适合走一条怎样的职业道路:
刚毕业不久的猿友,通常都是会比较心浮气躁的,对技术求知欲很强,特别是一些高大上的技术,什么大数据、云计算、架构等等,有些偏向于技术研究,有些偏向于业务。大部分程序员可能都会选择偏向于技术研究的,因而乎对偏向业务的不怎么感冒,所以以为每天作这些东西没什么意思。这时候,静下来分析一下,你到底适合哪一种方向。你可否静下心来对技术研究很深刻,可否耐得住寂寞。