前言:本篇博客仅为记录笔者在学习苍穹外卖中的能力总结
1、业务分析能力
2、接口设计能力
2.1 处理时间格式
LocalDateTime相比Date类,提供了更加直观和易用的日期时间表示方式,同时也具有更好的性能和线程安全性。在Java 8及以后的版本中,建议优先使用LocalDateTime来处理日期和时间相关的需求。
[方式一] 使用@JsonFormat注解
[方式二](推荐使用,可以全局统一处理)
具体步骤:自定义配置类WebMvcConfiguration(配置类记得加上@Configuration),继承WebMvcConfigurationSupport类,重写extendMessageConverters()方法
JacksonObjectMapper为自定义类,继承ObjectMapper
2.2 处理公共字段
在我们设计数据库的表结构时,一般每张表都会有固定的几个字段,比如创建时间、创建人等,如果每张表的插入语句都手动去赋值,太笨重。大多数公司用的是mybatis-plus来简化开发,使用@TableField注解即可自动填充。其本质就是在利用AOP,对加了@TableField注解的字段进行赋值。
@TableField(fill= FieldFill.INSERT) //新增时填充
private Date createTime;
@TableField(fill=FieldFill.INSERT_UPDATE) //新增和更新时填充
private Date updateTime;
2.3 频繁修改的字段
针对频繁修改的字段,可以优化到Redis中操作更加方便。比如设置店铺的营业状态,如果单独设计一张表来更新修改这个字段,会比较浪费。可以通过redis来优化。
3、编码规范能力
3.1 项目整体架构
在一家公司中,不需要重新搭建一个新项目,但要了解最基本的规范,如下是一个最为常见的项目架构:
常用模块:common模块
常用模块:pojo模块(Entity、DTO、VO都属于POJO)
pojo的使用样例:DTO接收前端参数,VO封装返回结果给前端
常用模块:server模块(常为三层架构,用来写业务代码)
3.2 优雅编写代码
针对同样类名的controller层,比如UserController这个类在项目中有两个,启动时spring会报错bean已存在,可以在@RestController注解上添加名称:
@RestController(”userShopController“)和@RestController(”adminShopController“)区分
4、文档阅读能力
5、代码调试能力
客户端每发起的一次请求都是一个单独的线程,即使是同一个用户发起的多个相同的请求,服务器也会为每个请求创建一个新的线程,确保请求的独立性和并发性。
6、其他能力(技术栈)
nginx代理过程如下图所示:路径中匹配到 /api/,就会对/api/其后面的uri进行剪切,拼接到反向代理的地址后面,完成我们真正的访问路径。
Redis五种常见类型:
hash:value是健值对的格式,适合存储对象,pojo
list:因为有序,所以像朋友圈点赞这样有序的,适合存储【可重复】
set:无序可以去重,适合朋友圈取交集,筛选共同好友【不可重复】
zset:可以计算分值,比如视频的推荐【不可重复】