GaGa's Blog

One GaGa, One World !

Linux下的 周期性任务 一般是通过 cron 服务来实现的。
cron 是一个守护进程,负责在预设的时间周期性地执行任务(如脚本、命令)。


1. cron 服务

  • 守护进程名:crond

  • 配置文件:

    • 用户级:crontab -e(存放在 /var/spool/cron/用户名
    • 系统级:/etc/crontab/etc/cron.d//etc/cron.daily/
Read more »

git clean -fd 的作用是:

  • -f → force,强制删除(Git 默认不会删除未跟踪文件,需要 -f 才会生效)。
  • -d → 删除未跟踪的目录(不加的话只会删除未跟踪的文件)。

所以执行后效果是:

  • 删除当前仓库里 所有未被 Git 跟踪的文件和目录(包括你报错里的 2100/rz_less/...png)。
  • 不会影响已经被 Git 跟踪的文件(版本库内的文件不会丢)。
Read more »

Kafka懒惰加载(Lazy Loading)

Kafka 客户端的配置读取和实际使用是分阶段的,大概可以理解成这样:

  1. 初始化阶段

    • KafkaProducer / KafkaConsumer 启动时,会把所有配置项读到一个 Map 里。
    • 它会打印日志告诉你“这些配置存在”。
    • 但此时它还没和 broker 建立真正的 SSL/SASL 握手,所以配置只是存放着。
  2. 第一次网络交互阶段

    • 比如 producer 第一次 send() 消息,consumer 第一次 poll() 数据。
    • 客户端才会用到 ssl.truststore.locationssl.truststore.passwordsasl.jaas.configssl.endpoint.identification.algorithm 去做认证、握手。
    • 如果有问题,这时候才会抛异常。
  3. 运行阶段

    • 配置才算真正“被使用”。
    • 这也是 Kafka 日志里会提示 “were supplied but are not used yet” 的原因。

Read more »

编译出来的 r8125.ko 被“安装”到内核模块目录及注册到内核的模块依赖系统里,才支持重启后自动加载模块。


1. 正确安装模块

假设你已经在 r8125-x.x.x/ 源码目录下跑过 make,会生成 src/r8125.ko
你需要执行:

Read more »

什么是池化 (Pooling)

池化 = 把大量分散的物理资源抽象、整合成一个资源池,供用户按需调用

  • 这些资源包括:计算(CPU/内存)、存储、网络、数据库、安全能力等。
  • 用户不需要关心底层是哪台物理机、哪个磁盘,而是从一个“池子”里动态获取。

Read more »

OpenJDK 的官方地址

  1. Oracle 提供的 OpenJDK 下载地址

  2. Eclipse Adoptium 提供的 OpenJDK 下载地址

    • https://adoptium.net/
    • 这个网站由 Eclipse 基金会运行,提供名为“Eclipse Temurin”的 OpenJDK 版本下载。它会自动检测你的操作系统和 CPU 架构,方便你下载适合的版本。
  3. OpenJDK 项目的官方网站

  4. Java 开发者社区网站

    • https://dev.java/
    • 这是一个面向 Java 开发者的网站,提供了关于 OpenJDK 的最新消息和资源。

openjdk LTS

根据最新的信息,OpenJDK 的 LTS(长期支持)版本支持周期如下:

Read more »

目的

通过隧道实现访问私域目标服务。

1.新增隧道认证用户

groupadd tunnel  # 新增隧道组
useradd u03
 
su  - u03
ssh-keygen   # 生成密钥对

cp .ssh/id_rsa.pub  .ssh/authorized_keys
chmod 600 .ssh/authorized_keys

exit
usermod -s /sbin/nologin u03  # 修改禁止登录
usermod -aG tunnel u03  # 添加组
Read more »

net.ipv4.ip_local_port_range(出站端口范围)

  • 作用:定义内核在为本地客户端连接自动分配临时端口(ephemeral port)**时,可以使用的端口范围。

  • 默认值
    一般是 32768 60999(在 Linux 3.x/4.x),在一些发行版上可能是 49152 65535(符合 IANA 建议)。

  • 影响场景
    当进程调用 connect() 发起出站连接(没指定源端口时),内核会从这个范围里挑选一个可用端口。

  • 调优点

    • 如果服务器并发出站连接特别多(如反向代理、NAT 网关),需要扩大范围避免 “cannot assign requested address (EADDRNOTAVAIL)” 错误。

    • 修改命令:

      1
      sysctl -w net.ipv4.ip_local_port_range="1024 65535"

net.ipv4.ip_local_reserved_ports(监听端口范围)

  • 作用:指定一组不能分配给临时端口的保留端口(黑名单)。

  • 配置格式

    • 逗号分隔(如 8080,3306,5432
    • 范围(如 5000-5100
    • 可以混合(如 8080,3306,5432,5000-5100
  • 应用场景

    • 有些服务监听在高位端口(例如 8080),如果不排除它,内核可能会把 8080 分配给临时出站连接,造成 端口冲突
    • 适合 应用监听端口和临时端口范围冲突 时使用。
  • 注意事项

    • 只会影响 自动分配的 ephemeral port,不会阻止你手动 bind() 到这些端口。
    • 保留端口太多会缩小可用范围,导致连接数受限。
    • 建议只保留真正有冲突风险的端口。
Read more »

openjdk:22-jdk-oraclelinux8 镜像运行 java -jar 时,如果没有显式指定堆内存参数(-Xms, -Xmx),Java 会根据容器环境来动态计算堆大小,但这在容器里有几个坑。

1. 默认行为

  • Java 10+(包括 22)默认支持 容器感知(JEP 351)。会根据容器的 cgroups 限制来分配堆内存,而不是宿主机物理内存。
  • 默认情况下,堆大小上限大概是 容器可用内存的 1/4,初始堆(Xms)大约是 1/64

举例:容器限制 --memory=2g,那:

Read more »
0%