转眼已经11月份了,写下最近学到的一些知识以及这个月需要学习的知识,虽然出来实习后时间可能比较少,写博客的频率比较低,但是一个月还是必须要总结一下的:
1. DO、DTO、VO、POJO的区别
参考阿里巴巴代码规范:
- DO( Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。
- DTO( Data Transfer Object):数据传输对象,Service或Manager向外传输的对象。
- BO( Business Object):业务对象。 由Service层输出的封装业务逻辑的对象。
- VO( View Object):显示层对象,通常是Web向模板渲染引擎层传输的对象。
- POJO( Plain Ordinary Java Object):在本手册中, POJO专指只有setter/getter/toString的简单类,包括DO/DTO/BO/VO等。
- Query:数据查询对象,各层接收上层的查询请求。 注意超过2个参数的查询封装,禁止使用Map类来传输。
领域模型命名规约:
- 数据对象:xxxDO,xxx即为数据表名。
- 数据传输对象:xxxDTO,xxx为业务领域相关的名称。
- 展示对象:xxxVO,xxx一般为网页名称。
- POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO。
2.代码规范
代码一定要规范,这一点可以参考阿里巴巴代码规范,总结的还是很详细的,通读一遍,会收获许多,最近我也是一直嫌弃自己的代码怎么可以这么丑,而且无章可循,就比如说
- 注释,一般接口、类、枚举类的属性、类属性、类方法这些都是需要注释的,不然不好维护;
- 能简洁就简洁,比如说能使用lambda表达式那种就使用那种,使人看起来很舒服;
- 避免踩坑,这里就要靠经验,比如说不要在ArrayList.foreach里面进行add和remove操作,会报异常,应该使用迭代器;
- 注意时间复杂度,SQL语句编写要规范。
- 谷歌编码规范
- 晓风轻技术小站
3.Git的学习
对于Git的学习还是实操比较好,可以参考官方文档。crison也跟我们培训了Git的常规使用以及原理;
-
Git的分支操作其实就是基于链表来实现,链表切换分支可以达到O(1)的时间复杂度,切换分支时就把Head指针指向哪个分支;
-
Git不保存文件的内容,Git只存储变更记录。
-
git init --bare 跟 git init 的区别:
git init --bare 只是new 一个裸露的.git文件,不能编辑文件的内容,只有.git文件
git init 的话除了有.git文件外,还可以记录文件内容 -
Git的远程仓库也可以在本地,不一定只在远端;
-
.git文件包含以下内容:
4.中台战略思想
我个人理解的中台就是说把一些公共的东西抽取出来,不要做重复的东西。大中台,小前台,简便开发。
可以参考以下文章:
阿里中台思想
ThoughtWorks洞见
5. Mybatis-Plus 的常规使用
最近由于业务驱动,持久层的框架是Mybatis-Plus,花一波时间再去好好了解以下,真的,官方文档就足够,学什么都是如此,可以站在巨人的肩膀上学习。
使用这些主要是进行单表的简单操作,其中还包含一些lambda表达式。使用lambdaQuery相对更好一点,不用硬编码,以后比较好维护。
6. PostMan的使用
- 适当建立工作区
- 建立收藏夹,以后方便进行测试
- 适当使用变量
这样在路径中就可以通过{{url}}、和{{token}}来获取值,这样显示的就很清楚。
7.深拷贝和浅拷贝
- 浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝,此为浅拷贝
- 深拷贝: 对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容,此为深拷贝。
BeanUtils.copyProperties是一个浅拷贝方法,复制属性时,我们只需要把DTO对象和要转化的对象两个的属性值设置为一样的名称,并且保证一样的类型就可以了。如果你在做DTO转化的时候一直使用set进行属性赋值,那么请尝试这种方式简化代码,让代码更加清晰!
- org.springframework.beans.BeanUtils.copyProperties(source, dest) 将source复制给dest
- org.apache.commons.beanutils.BeanUtils.copyProperties(dest,source) 将dest赋值给source
使用org.apache.commons.beanutils.BeanUtils对复杂对象的复制是引用,这是一种浅拷贝,org.apache.commons.beanutils.BeanUtils下的BeanUtils对象拷贝性能太差,不建议使用。
spring下的BeanUtils也是使用 copyProperties方法进行拷贝,只不过它的实现方式非常简单,就是对两个对象中相同名字的属性进行简单的get/set,仅检查属性的可访问性。
对于以上两种最好写一个工具类来进行赋值,不然某天改代码的话会很麻烦。
TODO List
- Docker(命令、原理、用途)
- K8s(原理可参考文档)
- Linux(一些不常用的命令也要会)
- Java8(Lambda表达式)
- Kafka
路漫漫其修远兮,吾将上下而求索,感觉还是很多东西要学哈😂,师父领进门,修行还是得靠个人,有幸的是公司很多大牛可以教你,不懂就问,收获颇丰富。