跳至主要內容
企业级Web后端工程生命周期

学习核心

  • 需求管理
  • 需求开发
  • 测试
  • 部署
  • 运维(测试(DEV\SIT\UAT)、生产(PROD))
  • 安全

学习参考

开发规范

1.需求管理

​ 基于PaaS平台结合线上线下进行Web开发的生命周期管理:

  • 需求评审:构建需求Story进行评审,随后开发人员构建开发子任务(创建开发相关Story)进行相应的业务开发
  • 开发联调:开发完成与前端组员进行项目联调(本地自测、DEV联调)
  • 项目提测:基于CI/CD流水线部署,进行自测 ->冒烟测试(开发侧)-> SIT测试(提测)-> UAT测试(转测),随后交由产品验收
  • 上线发布:上线准备(文档准备、环境准备、流程疏通)-> 项目发布

holic-x...大约 4 分钟碎片化碎片化
数据批量操作篇

前情提要

​ 在MySQL原理学习中,经常需要用到一些大数据量的表来支撑理论学习,因此不免会陷入"造数据"的烦恼,虽然可以借助一些函数或者程序设计(例如hutool工具类)的方式来动态生成一些可用的数据,但还需要进一步满足对大数据量处理的需求,从一开始的1w、10w、100w的数据测试过程会发现可能批量插入几万条数据借助存储过程可能就几分钟忍忍就过去了,但是对于更大的数据量批量插入操作却直接断层拉开时间成本,可能需要更长的时间去完成批量操作

  • MySQL服务环境:MySQL8.0.21(核心测试)、MySQL5.7.44(辅助对照)
  • IDEA(JAVA程序构建,用于批量生成数据)
  • 客户端环境:Navicat、Windows 10(16G)

holic-x...大约 33 分钟碎片化碎片化
Java线上问题排查流程&方案

系统运行一段时间后很慢如何排查?

​ 如果说程序上线一段时间后运行特别慢,则考虑是否同一时间段出现大量请求导致阻塞(❌如果是在请求正常的情况下)

​ 排除思路:由外到内,结合系统日志跟踪,排除外部原因,然后跟踪内部因素

​ 可以结合实际业务场景从多个维度去思考:关注点:监控排查、代码排查、数据库分析、系统资源、外部依赖、应用架构

  • 性能监控和排查(linux指令查看系统运行、宝塔面板查看):查看程序的CPU、内存、磁盘I/O和网络使用情况,随后跟踪线上日志定位异常信息

holic-x...大约 16 分钟碎片化碎片化
Java系统出现内存飙升的常见情况及处理

Java 系统内存飙升可能是由以下几种情况导致的:

(1)内存泄漏(Memory Leak):程序中已分配的内存没有被释放,导致可用内存逐渐减少

(2)大对象分配:程序创建了大型对象,导致内存不足分配新对象

(3)垃圾回收问题(GC Pause or Stall):垃圾回收器无法及时回收内存,或者回收效率低,导致内存长期被占用

(4)错误的内存管理:程序代码中存在不当的内存分配和释放策略,导致内存使用不当


holic-x...大约 2 分钟碎片化碎片化
HashMap的底层实现原理

HashMap是Java集合框架中的一个类,它实现了Map接口。JDK1.7中HashMap内部是通过数组+链表实现的,并且可以接受null键和值。在JDK1.8之后,当链表长度超过阈值(默认为8)时,链表将转换为红黑树以提高查询效率(即数组+链表+红黑树)。

以下是HashMap的一些关键属性:

  • DEFAULT_INITIAL_CAPACITY:默认初始容量,必须是2的幂。
  • MAXIMUM_CAPACITY:最大容量,必须是2的幂,且小于2^30。
  • DEFAULT_LOAD_FACTOR:默认负载因子,用于计算自动扩容的阈值。
  • TREEIFY_THRESHOLD:当链表长度超过这个值会转换为红黑树。
  • UNTREEIFY_THRESHOLD:当红黑树的节点数少于这个值会转换回链表。
  • table:存储数据的数组,每个元素是一个链表的头节点。
  • sizeHashMap包含的键值对数量。
  • threshold:扩容的阈值,等于容量乘以负载因子

holic-x...大约 5 分钟碎片化碎片化
水印篇

参考代码

​ noob-demo=》springboot-demo =》springboot-demo-watermark

学习核心

  • 水印实现方案策略
  • 水印兼容性问题处理
  • 本地开发 VS 线上部署 (常见水印问题处理)

水印策略

​ ITEXT水印文本实现(普通水印、铺满策略),根据图片(不同图片格式:PNG、BMP、JPG、GIF等进行适配)、PDF(ITEXT策略、生成PDF的时候写入水印)


holic-x...大约 3 分钟碎片化碎片化
hutool工具包应用

基本概念

Hutool定义

Hutool 是一个小而全的 Java 工具类库,通过静态方法封装,降低相关 API 的学习成本,提高工作效率,使 Java 拥有函数式语言般的优雅,让 Java 语言也可以“甜甜的”。

​ Hutool 中的工具方法来自每个用户的精雕细琢,它涵盖了 Java 开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;


holic-x...大约 6 分钟碎片化碎片化
IDEA开发工具实践应用

参考代码

noob-demo=》java-demo=》HelloWorld

IDEA下载安装

IDEA安装下载官网安装下载(需要注册码),选择破解版安装(公众号软件管家:下载最新版本IDEA)

​ 下载安装一般不选择关联(否则其他一些文件关联默认用idea打开,可能会比较慢,一般正常文本可以用文本编辑器查看即可)


holic-x...大约 4 分钟碎片化碎片化