架构师修炼之道

知识日新月异,唯有保持同步迭代,才能适应美好的未来!

0%

介绍

  • 多模块项目由管理一组子模块的聚合器 POM 来构建。在大多数情况下聚合器位于项目的根目录中,并且必须是 pom 类型的项目。
  • 子模块是常规的 Maven 项目,它们可以单独构建,也可以通过聚合器 POM 构建。
  • 通过聚合器 POM 构建项目时会一并构建下属的所有子模块。

多模块的优势

调什么

内存方面

  1. JVM需要的内存总大小
  2. 各块内存分配,新生代、老年代、存活区
  3. 选择合适的垃圾回收算法、控制GC停顿次数和时间
  4. 解决内存泄露的问题,辅助代码优化
  5. 内存热点:检查哪些对象在系统中数量最大,辅助代码优化

线程方面

  1. 死锁检查,辅助代码优化
  2. Dump线程详细信息:查看线程内部运行情况,查找竞争线程,辅助代码优化
  3. CPU热点:检查系统哪些方法占用的大量CPU时间,辅助代码优化

如何调

  1. 监控JVM的状态,主要是内存、线程、代码、I/O几个部分
  2. 分析结果,判断是否需要优化
  3. 调整GC类型和内存分配;修改并优化代码
  4. 不断的重复分析和调整,直至找到优化的平衡点
阅读全文 »

背景

  • 在实际软件项目开发中,项目需要经过不同环境验证通过后才能上线,而每个环境都有不同的配置参数,如何管理这些不同环境的配置数据对于项目开发和部署均至关重要。
  • Apache Maven 中是可以实现这个需求的,接下来介绍具体的实施过程。
    阅读全文 »

当项目启动时若出现下面错误,可通过添加具体日志实现框架解决。

1
2
3
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

1 添加 Maven 依赖

1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
阅读全文 »

今天发现在 IDEA 中下载源码失败,通过查看 IDEA 日志看到了出错的原因:

1
tail -f ~/Library/Logs/JetBrains/IntelliJIdea2021.3/idea.log

再次单击下载源码按钮后实时输出:

1
2
3
4
5
6
7
8
2022-01-25 17:23:15,247 [ 135367]   INFO -      #org.jetbrains.idea.maven - org.eclipse.aether.resolution.ArtifactResolutionException: Could not transfer artifact org.springframework:spring-webmvc:jar:sources:5.3.15 from/to maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories: [nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public, default, releases)]
in DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:424)
Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact org.springframework:spring-webmvc:jar:sources:5.3.15 from/to maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories: [nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public, default, releases)]
in DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:520)
... 24 more
Caused by: org.eclipse.aether.transfer.NoRepositoryConnectorException: Blocked mirror for repositories: [nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public, default, releases)]
in DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:506)
... 25 more
阅读全文 »