GaGa's Blog

One GaGa, One World !

Python 世界里,pip 就像是宇宙飞船的推进器,不装它你就只能在原地踏步。

1.检查系统里是否已有 pip

1
2
3
python3 -m pip --version
pip --version
pip3 --version

若已有 pip,会直接显示版本。

Read more »

在分布式架构里,Tomcat 的 Session 不再是单机,而要变成可跨节点访问的“共享状态”。核心目的是在多节点负载均衡时保持用户无感的一致会话体验。

主流方案分为三类:

  • 会话复制
  • 集中存储
  • 彻底无状态化。

外部集中式会话存储

Read more »

alias vs root 的本质区别

1.1.root 是“前缀拼接”

root 会把 location 匹配到的 URI 片段“拼接”到文件系统路径后面。

location /img/ {
    root /data/www;
}
# 访问 /img/a.png → 文件路径 /data/www/img/a.png
Read more »

一、最常见的写法(主机 8000 → 容器 8082)

在 docker-compose.yml 里:

1
2
3
4
5
6
7
version: "3.8"

services:
web:
image: myapp:latest
ports:
- "8000:8082" # 主机:容器

解释:

Read more »

1.直接挂载宿主机 /etc/localtime 和 /etc/timezone

1
2
3
4
5
6
services:
app:
image: myapp:latest
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro # centos7
  • :ro 表示只读挂载,防止容器修改宿主机时间。
  • 这样容器会使用宿主机的时区和时间。

Read more »

mvn clean package -Dmaven.test.skip=true -P pro

  • 1 clean
    清理项目的 target/ 目录,确保构建从干净环境开始。

  • 2 package
    执行 Maven 的生命周期到 package 阶段,通常会生成 .jar 或 .war 包。

  • 3 -Dmaven.test.skip=true
    跳过测试用例的 执行 和 编译。
    这是一个 JVM 系统属性,Maven 构建时会跳过 Surefire/Failsafe 测试任务。

  • 4 -P pro
    它表示 激活 Maven Profile:pro。
    Profile 是 Maven 用来实现“不同环境构建”的机制,例如 dev、test、pre、pro 等。

- P pro 在哪里读取配置

  • pom.xml(最常见)
    项目的 pom.xml 内部定义:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <profiles>
    <profile>
    <id>pro</id>
    <properties>
    <env>prod</env>
    </properties>
    <activation>
    <activeByDefault>false</activeByDefault>
    </activation>
    </profile>
    </profiles>
  • ~/.m2/settings.xml(用户级别配置)
    这里也可以定义 profile,例如仓库源、私服账号:

    1
    2
    3
    4
    5
    6
    7
    8
    <profiles>
    <profile>
    <id>pro</id>
    <properties>
    <nexus.url>http://nexus.example.com</nexus.url>
    </properties>
    </profile>
    </profiles>
  • 全局 settings.xml(Maven 安装目录 conf/settings.xml)

Read more »

集群脑裂(Split-Brain)像是“同一个大脑被硬生生裂成两个”,两个节点或多个节点因为通信中断,各自误以为对方挂了,于是纷纷把自己当成“合法主节点”。
这会导致一个危险局面:出现多个主节点同时对外提供写入服务,数据就像被两个平行宇宙分别改写,最终回到现实世界只能引爆混乱(数据冲突、版本不一致、服务错乱)。

脑裂是分布式系统的天敌,它本质是对“共识”失败的暴露:节点失去彼此的视野,让一致性算法失去了基础。

典型诱因包括:

  • 网络抖动、延迟、短暂隔离
  • 仲裁节点不够(例如偶数节点)
  • 心跳机制过于敏感或超时时间太短
  • 资源耗尽导致心跳丢包(CPU/RAM/IO 抖动)
Read more »

Java 启动时确实可以同时加载多个 agent,只要它们都通过 -javaagent: 形式添加即可。JVM 在启动阶段会按顺序依次调用每个agent 的 premain 方法(或在 attach 时调用 agentmain)。

1.启动示例

假设你有两个 Agent:A 和 B,启动 Java 时可以这样写:

java \
 -javaagent:/opt/agentA.jar=cfgA \
 -javaagent:/opt/agentB.jar=cfgB \
 -jar app.jar
Read more »

在 Linux 系统中,dns1 和 dns2 通常表示 主 DNS(Primary DNS) 与 备用 DNS(Secondary DNS),它们是系统用于域名解析的服务器地址。


一、定义与作用

项目 含义 优先级 作用
DNS1 主 DNS 服务器 优先使用 首选的域名解析服务器
DNS2 备用 DNS 服务器 备用使用 当主 DNS 无响应或解析失败时使用
Read more »

基础结构

1
ENTRYPOINT ["java", "<JVM参数>", "-jar", "/java/crab.jar", "<应用参数>"]
  • java:启动 JVM
  • <JVM参数>:控制内存、日志、诊断等 JVM 行为
  • -jar /java/crab.jar:启动你的 Spring Boot 应用
  • <应用参数>:传递给应用的参数,如端口或 profile

-Dspring.profiles.active=pro jvm参数可以转换应用参数 –spring.profiles.active=pro

Read more »
0%