2020/10/10

十一假期前,进行了一次代码评审,发现我代码中存在的很多问题。确实令我汗颜,在此记录一下。

1、排序不能使用$符号,跟产品事先定义好有几个排序,然后把这些排序在mapper.xml中写固定。通过传一个flag来判断使用哪个排序。

2.不能使用 where 1=1,太low了,使用<where>标签。

3.参数校验不能写在controller层,而是写在service层,因为service层不光可以用在控制层,也可以用在别的service中调用。在service层做校验,只需要做一遍就可以了。

11/12

今天好险,我看同事的代码的时候,觉得明显有问题,于是我想给他指出这个问题,但我没直接说你的代码有问题,而是说你的代码我有些看不懂,请你给我讲讲。结果人家一讲,我才发现写的其实没问题,是我没认真看!差点丢人了。。

以后都得这样,不能武断的认为别人的代码有问题,很可能是自己没看好。

2019/8/22

思维缜密,思路清晰,寥寥八字,但真的做到很不容易,昨天业务反应的一个问题,我简单一思考,就把原因往前端那边想,而对自己这边可能出现的原因,却怎么也想不起来,这就说明我思维还不够缜密,我的leader,稍加思索, 就能一语中的,指出问题所在,真的好惭愧!

问题大概如下:页面上一个查询功能,一个导出EXcel个功能,用户输入了一堆查询条件,查询好使,但导出就立刻报错,查询和导出 组装查询提交件的代码 是通用的一个,我当时就想到这是前端在传参的时候没传对。但却忽略了一个问题,查询和导出有个不同点,导出需要往一张record表里写入一条数据,这个表里有个字段 叫输入参数,这个字段的length是有限的,如果用户只是简单的查询,完全能胜任,但用户搞了一个很长的查询条件,结果写入数据库记录的时候,立马就报错了。

2019/8/20

非空校验:如果入参是一个List<T>,那么需要做如下四种非空检验:

1.list本身是null,

2.list的size是0     这两个统一使用 CollectionUtils.isNotEmpty()方法

3.list中的元素T是null

4如果需要使用list中的元素T的属性去调用方法,还需对T的get出来的属性值就行非空校验

5.根据阿里编程规范,字符串equal时,把字符串常量和你认为肯定不会为空的参数放到左边,因为一个null调用equal()方法,百分百会报错,但是把null放置到equal()方法内,就不会报错。

昨晚搞到凌晨1点,问题是这样的,一个导出Excel功能,我在我本地测试是好使的。我本地连测试环境的数据库,进行测试,也是好使的。但是代码部署到测试环境后,就不好使了,什么也导不出来……11点12点,我找了两个小时,想找出到底 我本地和测试环境,哪里不一样,但始终没找到、

最后,还是我经验丰富的leader,他看了下我的代码,几分钟就定位出了不同点!原因如下:代码是一样的,连的数据库也是一样的,但我在程序中调用了一个dubbo接口,这个外部接口,在我本地,和在测试环境,访问的IP不是一个环境,所以拿到的dubbo远程接口数据也就不一样,所以在我本地好使,但部署到测试环境,就嗝屁了!!

俗话说,吃一堑长一智,以后再遇到这种“找不同”类型的bug,我一定要思维更加缜密,更加冷静分析。

经过最近两天的实践,前些天一直困扰我的idea编辑代码时,内存飙升 卡死的问题,罪魁祸首就是阿里巴巴出的P3C插件的实时检测,右键,把实时检测关掉后,一切的卡顿都烟消云散!哈哈,没想到阿里巴巴这么大牛,也是一个坑爹货,P3C插件没有给我们用户任何关于实时检测占内存的提示!

2019/8/15

bean中的属性,布尔类型记得一定要用包装类大写的B:Boolean,而不要用小写的关键字boolean,还有命名布尔类型值的时候,尽量不要以is开头,不管是lombok,还是属性复制,还是序列化,这其中都有大坑,哈哈!

修改bean属性的时候,一定要有修改后building的意识,因为我不能知道这个被修改的bean都在哪用到了,修改后本地不building,直接提交的话,造成报错,到时就很不好了、

2019/8/14

今晚给一个新员工解决git无法拉代码的问题,什么都配置好了,但就是拉不下来,耗了一些时间,最后重启电脑才好了,总计下经验:还是重启治百病,哈哈!

如果项目本来用着好好的,更新过git以后,突然就无法启动,那十之八九肯定是上个提交人员,提交的代码引出的问题,这时,话不多说,直接看Git提交记录,把肇事者拎出来

Idea的常用快捷键经常会被别的一些软件所占用,我的态度就是绝不容忍,一定要把占用热键的幕后黑手揪出来,然后改掉。目前,我个人体会占用热键最多的就是,有道词典和搜狗输入法这两个渣渣,但都可以通过改他们的设置,把热键再改回来

最上方的import导包行上面,要注意一点,随着多次的开发,import会有一些不用的置灰的包,每次提交代码前,需要检查下这些import,把无用的去掉后再提交。Idea有一个自动导包(Auto Import)功能很好使,会把没用的包自动删除掉,建议开发团队一块儿用,如果只有一两个人用,会出现每次commit代码时,会多出来好多different

开发当中,一遇到问题,不要马上问别人,因为你问别人一次,就是打扰别人一次,就是打断别人的思路一次,一天多次打断一个程序员的思路,无异于谋财害命!我觉得,在不卡住自己开发进度的情况下,可以多积攒几个问题,一块问。

时不时的会在开发中遇到NullPointerException异常,主要实在dev和test环境,这两个环境的数据往往是不完整的,是有缺陷的。如何在开发中尽量避免空指针异常呢?

非空检验宁滥勿缺,加非空检验主要有以下几个注意事项:

调用外部的接口,比如通过dubbo调用远程服务,得到一个返回值,就一定要检验这个返回值。List<T> 集合类型的返回值,校验集合本身不为空,并且集合的size大于0。通常项目中有封装好的方法,如:CollectionUtils.isEmpty();取反

遍历取出List中的元素,通过get方法获得元素field时,如果要调用该field,一定要加非空校验。要做最坏的假想,认为所有数据都有可能出现空值的情况。

平时在开发中,要有加非空检验,增加程序健壮性的意识,不要等到被测试人员测出了空指针,再去加。

编码中需要的七个意识:

多写注释的意识,为己为人,为了以后能快速看得懂代码,多写注释,特别是一些复杂的功能,一定要多写注释

多打log的意识,多打log,最大的好处就是方便在生产环境排错

非空校验的意识 记得用Optional

分拆代码的意识 长方法,分拆成若干个小方法,根据阿里的编程规范,每个方法最多80行

提高复用的意识 一些与业务无关的的util类方法,写到统一的一个util类中

使用新语法糖的意识 Optional和双冒号:: 在后续的开发中,一定要用起来

代码简洁的意识 尽可能的多使用兰慕妲lambda表达式

调用dubbo服务时,调用的入参size要可控,不能一次一调,也不能一次大批量的调用。

我在Java开发工作中的一些心得体会,不断更新中相关推荐

  1. 总结Java开发面试常问的问题,持续更新中~

    数据库 mysql redis java java虚拟机 java并发 java容器 java基础 计算机网络 数据结构与算法 操作系统/Linux 设计模式 场景题和设计题 流行框架 数据库 mys ...

  2. 工作一年的心得体会(持续中.......)

    在公司的一年中,生活的非常愉快,工作氛围也很好,但是相对来说太清闲,感觉到自我提升的太少了.而且从工作学习中发现自己的多方面不足之处,可以说会的东西太少了.公司是一个大家庭,不管是领导还是同事,都兢兢 ...

  3. java开发工作经历_开发人员在寻找第二份工作时会经历什么

    java开发工作经历 Just a little background before we begin. I have been working as a mobile app developer f ...

  4. java开发工作好找吗

    现在学习java的人很多,那java开发工作好找吗?好不好找工作主要看自己学得怎么样.根据招聘网的需求量显示,java开发工作其实还是很好找的. Java是世界第一编程语言!由于它开源.免费.跨平台, ...

  5. Java开发面试高频考点学习笔记(每日更新)

    Java开发面试高频考点学习笔记(每日更新) 1.深拷贝和浅拷贝 2.接口和抽象类的区别 3.java的内存是怎么分配的 4.java中的泛型是什么?类型擦除是什么? 5.Java中的反射是什么 6. ...

  6. java类与对象实验报告心得体会_java上机实验心得体会报告(大全五篇)

    北京联合大学信息学院 "面向对象程序设计"课程上机实验报告 题目: JAVA上机实验心得体会 姓名(学号): 专业:计算机科学与技术 编制时间: 2012年12月19日 版本: 1 ...

  7. 重庆找Java开发工作_重庆【Java开发程序员】

    重庆[Java开发程序员],提倡一切为了学员就业的办学思想,教学过程中坚持以练习企业项目为主,让学员真正能学到技术,毕业就能适应工作岗位. 重庆[Java开发程序员], Java 编程开发.而且很多软 ...

  8. 海天食品的java开发工作如何_再三个月就秋招了,我想找一份java开发工作,现在应该怎么准备一下?...

    在找工作之前,大家都要做一些准备工作,java开发也是如此 掌握核心JavaSE 首先,从核心Java(JavaSE)开始学习,尽可能地掌握它.你应该了解和掌握一些基本概念,如循环,数组,运算符等等. ...

  9. java开发工作找不到要放弃吗,这样学习Java,才能找到一份Java开发的工作。不要盲目的学!...

    203726-156647744638f8.jpg 这篇文章,给自学的人扫扫盲区,很多人自学java都是错误的方式,导致最后浪费时间.越学越迷茫.从事Java八年,希望我的建议可以帮助到每个在学习ja ...

  10. 两年Java开发工作经验面试总结

    微信搜索[程序员囧辉],关注这个坚持分享技术干货的程序员. 我的最新文章:BAT 老兵的经验之谈,成长路上这个道理越早知道越好 动机: 最近换了个公司,从三月底开始面,面到四月底,面了有快二十家公司. ...

最新文章

  1. Python join sorted sort map reduce 函数解析
  2. 设计模式笔记之 - State
  3. 简述mysql 存储引擎_Mysql基础-存储引擎简述
  4. JAVA-date(计算时间差)
  5. linux 多块硬盘 snmp,[技术干货] Zabbix使用snmp监控Linux硬盘大小不准问题
  6. 6 | Spatial-based GNN/convolution模型之MoNET
  7. VxWorks 6.9 内核编程指导之读书笔记 -- VxWorks kernel application (一)
  8. DBS:CUPhone
  9. jdk6-jdk9常用版本下载地址整理
  10. Linux必学书籍!五本强烈推荐,你读过几本?
  11. 手把手教你建立私人数据检索库(二)
  12. java基础(11)函数重载以及函数递归求和
  13. 世界杯开赛在即,告诉你5个用区块链玩转球赛的秘密 | 内附独家资源
  14. 尚硅谷的后台管理系统学习笔记【尚硅谷】【Vue】
  15. 零基础免费通过hexo+github快速搭建个人博客(超详细图解+B站视频讲解资源)
  16. 金融断直连,正式开始落地!
  17. 新概念三英语学习Unit2
  18. 数据库实验三 数据查询二
  19. 刘鹏计算广告学1:广告的基本知识(一)
  20. 魔兽世界linux客户端,使用Wine在Linux下玩魔兽世界

热门文章

  1. Stm32串口通讯的几种方式及其优缺点
  2. 什么是全员营销?企业开展全员营销的好处
  3. 修改oracle的连接时间,如何显式修改数据库连接超时时间
  4. ADSP使用SNS_SPRINTF输出字符串log信息
  5. 企业微信接入自有应用实现免登录
  6. 我们测量了 6 个 JS 框架的 SSR 性能 - 这是我们发现的
  7. 视频添加多段滚动字幕是怎么操作的
  8. 封龙战纪电脑版怎么玩 封龙战纪安卓模拟器教程
  9. [转]三五个人十来条枪 如何走出软件作坊成为开发正规军
  10. 推荐十个不错的编程类公众号学习