第九周总结
Java 学习第九周总结
一、学习概述
本周学习内容涵盖性能调优、前沿技术探索、实战项目架构设计、持续交付流水线、基础设施即代码以及 Web 开发基础。在性能调优方面,深入学习了 JVM 和数据库的优化策略;前沿技术部分探索了 Serverless 架构和 AI 集成;实战项目聚焦电商平台架构设计与压测策略;持续交付部分学习了 Jenkins 流水线和 GitOps 实践;基础设施即代码部分掌握了 Terraform 和 Crossplane 的使用;Web 开发基础学习了 HTML 的核心标签与进阶应用。
二、性能调优黄金法则
- JVM 层优化
GC 策略选择 - G1 收集器:适用于大部分场景,可通过以下参数启用:
-XX:+UseG1GC -Xmx8g -Xms8g -XX:MaxGCPauseMillis=200
2. ZGC 收集器:适用于超大堆内存(如 16GB 以上),参数配置:
-XX:+UseZGC -Xmx16g -Xlog:gc*=info
3. JIT 分析:通过以下参数打印编译信息,优化热点代码:
-XX:+PrintCompilation -XX:+UnlockDiagnosticVMOptions
内存布局优化
4. 对象预分配:通过-XX:PretenureSizeThreshold设置大对象直接进入老年代
5. TLAB(Thread Local Allocation Buffer):启用参数-XX:+UseTLAB提升对象分配效率
2. 数据库优化
索引策略
6. 覆盖索引:设计查询时让索引包含所有需要的字段,避免回表查询
7. 避免隐式转换:确保查询条件字段与索引类型一致,例如:
-- 反例:字段为varchar,查询时未加引号
SELECT * FROM users WHERE phone = 13800138000
-- 正例:
SELECT * FROM users WHERE phone = '13800138000'
连接池监控
8. HikariCP 监控参数:
spring.datasource.hikari.metrics-track-metrics: true
spring.datasource.hikari.metrics-extension: prometheus
9. 检测泄漏:通过spring.datasource.hikari.leak-detection-threshold设置泄漏检测阈值
三、前沿技术探索
- Serverless 架构
应用场景 - 突发流量处理:如电商大促期间的图片生成、订单快照处理
- 定时任务:周期性数据统计、报表生成
- 事件驱动:文件上传触发的处理流程
实现方案 - AWS Lambda + Spring Cloud Function:
@SpringBootApplication
public class ImageProcessingFunction {
@Bean
public Function<File, String> imageResizer() {
return file -> {
// 图片处理逻辑
return "processed:" + file.getName();
};
}
}
2. AI 集成(DeepJavaLibrary, DJL)
图像分类示例
// 配置模型加载条件
Criteria<Image, Classifications> criteria = Criteria.builder()
.optApplication(Application.CV.IMAGE_CLASSIFICATION)
.setTypes(Image.class, Classifications.class)
.optFilter("resnet", "18") // 指定ResNet-18模型
.build();
try (ZooModel<Image, Classifications> model = ModelZoo.loadModel(criteria);
Predictor<Image, Classifications> predictor = model.newPredictor()) {
// 加载图像
Image img = ImageFactory.getInstance().fromUrl("https://example.com/cat.jpg");
// 执行预测
Classifications result = predictor.predict(img);
// 输出结果
result.getClasses().forEach((label, prob) ->
System.out.printf("Label: %s, Probability: %.2f%n", label, prob));
}
四、实战项目:电商平台架构设计
- 架构蓝图
分层设计 - 前端层:Vue 3 + Nginx(SSR 服务端渲染)
- 网关层:Spring Cloud Gateway + OAuth2 JWT 认证
- 业务层:
- 用户服务:基于 DDD 聚合根设计
- 商品服务:CQRS 架构 + Elasticsearch 搜索
- 订单服务:Saga 模式 + RocketMQ 事务消息
- 支付服务:状态机设计 + 幂等令牌机制
- 数据层:
- MySQL 分库分表:ShardingSphere 实现
- Redis 集群:Codis 管理
- OLAP 分析:ClickHouse 处理海量订单统计
- 压测策略
工具与指标 - 压测工具:JMeter + Gatling
- 核心指标:
- 99% 响应时间 < 200ms
- 系统吞吐量 > 5000 TPS
- 错误率 < 0.1%
- 数据库连接池活跃数 < 80% 最大连接数
压测场景 - 峰值场景:模拟双十一期间每秒 5000 订单创建
- 故障场景:模拟库存服务 50% 故障率的降级表现
- 容量场景:逐步加压至系统极限,确定最大承载能力
五、持续交付流水线设计 - Jenkins 多阶段流水线
declarative pipeline 示例
pipeline {
agent any
environment {
IMAGE_NAME = "ecommerce/order-service"
GIT_COMMIT = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
}
stages {
stage('代码检查') {
steps {
sh 'mvn checkstyle:check pmd:pmd'
sh 'mvn spotbugs:check'
}
}
stage('单元测试') {
steps {
sh 'mvn test -DskipTests=false'
junit 'target/surefire-reports/*.xml'
archiveArtifacts artifacts: 'target/surefire-reports/**', fingerprint: true
}
}
stage('构建镜像') {
steps {
script {
docker.build("${IMAGE_NAME}😒{GIT_COMMIT}", "--file Dockerfile .")
}
}
}
stage('安全扫描') {
steps {
sh "trivy image --severity HIGH,CRITICAL ${IMAGE_NAME}😒{GIT_COMMIT}"
}
}
stage('部署到Staging') {
when { branch 'main' }
steps {
sh "kubectl apply -f k8s/staging --record"
sh "kubectl rollout status deployment/order-service -n staging"
}
}
}
post {
success {
slackSend channel: '#deployments', message: "部署成功: ${BUILD_URL}"
}
failure {
slackSend channel: '#ci-alerts', message: "构建失败: ${BUILD_URL}"
}
}
}
2. GitOps 实践(Argo CD)
应用配置示例
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: order-service
namespace: argocd
spec:
destination:
server: "https://kubernetes.default.svc"
namespace: production
source:
repoURL: "git@github.com:myorg/ecommerce-infra.git"
path: apps/order-service
targetRevision: HEAD
syncPolicy:
automated:
prune: true # 自动清理不再声明的资源
selfHeal: true # 自动修复漂移
syncOptions:
- CreateNamespace=true
六、基础设施即代码(IaC)
- Terraform 管理 AWS 资源
创建 RDS 实例
定义RDS实例
resource "aws_db_instance" "order_db" {
identifier = "order-db-prod"
engine = "mysql"
engine_version = "8.0.28"
instance_class = "db.t3.medium"
allocated_storage = 100
storage_encrypted = true
backup_retention_period = 7
publicly_accessible = false
skip_final_snapshot = true
安全组配置
vpc_security_group_ids = [aws_security_group.rds.id]
参数组配置
db_parameter_group_name = aws_db_parameter_group.order.name
凭据
master_username = var.db_username
master_password = var.db_password
标签
tags = {
Environment = "Production"
Service = "Order"
}
}
输出连接信息
output "rds_endpoint" {
value = aws_db_instance.order_db.endpoint
}
2. Crossplane 实现多云编排
跨云数据库资源定义
apiVersion: database.aws.crossplane.io/v1beta1
kind: RDSInstance
metadata:
name: crosscloud-db
namespace: crossplane-system
spec:
forProvider:
region: us-west-2
dbInstanceClass: db.t2.micro
engine: postgres
engineVersion: "13.4"
allocatedStorage: 20
masterUsername: admin
vpcSecurityGroupIds:
- ${SECURITY_GROUP_ID}
publiclyAccessible: false
providerConfigRef:
name: aws-prod
writeConnectionSecretToRef:
name: db-conn-secret
七、Web 开发基础:HTML 核心技术
- HTML 基础结构与标签
基本文档结构

浙公网安备 33010602011771号