跳至主要內容
生产教训:测试环境要与生产环境一致

生产教训:测试环境要与生产环境一致

事件还原

业务流程:

  1. app-a 上传文件
  2. app-b 下载文件后使用文件

其他信息:

  1. 开发、测试环境使用 MinIO
  2. 生产环境使用 Amazon S3

问题:

  1. app-a 上传文件成功
  2. app-b 使用文件报错

逐步分析定位问题:

  1. app-a 与 app-b 配置是否一致?——确认都是使用 S3
  2. S3 是否正确配置?有没权限问题?——确认配置正确,没有权限问题
  3. app-a 是否真的上传成功?——确认文件已在 S3
  4. app-b 是否下载成功?——根据日志,判断下载失败,得到的信息是:文件不存在。

levy大约 2 分钟Daily
避免密码明文传输

避免密码明文传输

说明

密码加密是很常见的安全性需求,但由于涉及前后端,前后端分离的情况下,开发人员容易只关心自己熟悉的领域,最终导致“知道要加密,实际还是没明文”的情况发生。

本文分享实际可运行的前后端代码,以减轻大家实现密码密文传输的负担。

流程说明:前端加密,后端解密。

当然,数据库存储的肯定是密文。这里后端解密的意思是:需要使用密码的时候,如获取数据库的连接,由后端解密后使用。


levy大约 2 分钟JavaJavaScriptDaily
检查名字是否重复

检查名字是否重复

检查名字是否重复是很常用的业务需求,本文推荐一种更省心、更少bug的做法。


levy大约 1 分钟JavaMySQLDaily
复制代码也许不是罪

复制代码也许不是罪

前言

熟悉我的人都知道,我对代码是有追求的。

正式参加工作后,我就知道,复制粘贴是坏的实践,自己一直极力避免做这样的事。要是遇到了别人复制粘贴,要么喷,要么自己改。

我早期认为:复制代码就是菜。

后来认为:复制代码可能不是菜,而是懒,没有素养,自我要求。

而现在:代码其实也没那么重要;某些情况下复制粘贴是可以接受的。

编码经过七个年头,我思想上为何会有如此改变?难道这就是传说中的七年之痒?


levy大约 2 分钟Daily
技术点评:别每张表都加tenant_id

技术点评:别每张表都加tenant_id

前言

系统满足多租户需求,是很常见的场景。本文主要聊一下在维护旧系统过程中,发现的前人多租户方案中设计、实现不合理的地方。


levy大约 3 分钟DesignDaily
使用 Postman 进行 API 测试

使用 Postman 进行 API 测试

前言

虽然之前分享过 RestAssured 进行接口测试的教程,但实践起来,会有阻碍:研发同学还是对 Postman 更熟悉,更倾向于使用 Postman 调试接口,而不是写 Java 代码对 Controller 层进行测试。

而笔者在针对旧的 Java 项目添加接口测试时,又遇到了另一个问题:那就是由于模块依赖,进行接口测试时,还在把旧的测试代码一并带上。虽然说有办法解决,但究竟是麻烦不断。

还有就是,Java 的类型检查,在写接口测试时十分束缚手脚。如下述代码:


levy大约 6 分钟Node.jsDaily
根据时间范围查询推荐实践

根据时间范围查询推荐实践

背景

不敢说是最佳实践,因为受限于特定技术、框架,并且带上了个人偏好。

虽然原理简单,但细节很多,不想每次搞来搞去,因此还是有记录的价值。

本文用到的技术栈为:MySQL、MyBatis、Java 8、Jackson


levy大约 3 分钟JavaDaily
微软中国CTO演讲观后感

微软中国CTO演讲观后感

看看大佬的演讲,还是有很多启发的。别的不说,推荐的书单就很有价值。


levy小于 1 分钟DailyVideo
迭代复盘之三员管理

迭代复盘之三员管理

前言

本次迭代做的工作主要是回收项目能力,具体做法是把 fork 出去的代码合并回来。

这次迭代因为各种原因,延期了快一个星期(周六还加了班)。

那么,我从工作流、方法论的角度,反思了自己可以改进的点,期望在这种迁移旧代码的实践中,抽取出能复用的经验。


levy大约 3 分钟DailyWorking Experience
Excel处理常用实践

Excel处理常用实践

基础知识

导入需要用到对象,MultipartFile。

@PostMapping("/import")
public boolean importLicense(
      @RequestParam("file") MultipartFile file,
      @RequestParam("tenantId") @NotBlank String tenantId,
) {
  return true;
}

levy大约 5 分钟JavaDaily
2
3
4