GaGa's Blog

One GaGa, One World !

docker-compose.dev.yml 生效——Compose 按 -f 的书写顺序从左到右层层合并,后面的文件覆盖/追加到前面的结果上。所以标准约定就是:基础文件在前,环境覆盖文件(dev / prod / local)在后。后者(docker-compose.dev.yml)优先级更高。 Compose 把 -f 后面的文件按顺序叠加到前面的结果上,最后一份文件的话语权最大。

f4c4a298c8a5794bbfdf213b87bbb69d.png


1.同名service三种合并行为准则

Read more »

ping主要用于测试网络层的连通性和往返时延(RTT round trip time)。它基于ICMP协议工作,通常使用:

  • ICMP Echo Request(Type=8):请求报文
  • ICMP Echo Reply(Type=0):响应报文
  • IPv4下协议号:1(ICMP)
  • IPv6下使用ICMPv6,类型不同

以IPv4为例:

1
2
3
4
5
6
7
主机A                                      主机B
| |
|--- ICMP Echo Request ------------------> |
| |
|<-- ICMP Echo Reply --------------------- |
| |
| 计算往返时间RTT |
Read more »

1.生成的服务文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cat > /etc/systemd/system/tengine.service<<'EOF'
[Unit]
Description=tengine group
After=syslog.target network.target

[Service]
Type=simple
WorkingDirectory=/local/base/tengine
ExecStart=/local/base/tengine/sbin/nginx
Restart=on-failure
RestartSec=30

[Install]
WantedBy=multi-user.target
EOF

优化版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cat > /etc/systemd/system/tengine.service<<'EOF'
[Unit]
Description=tengine group
After=syslog.target network.target

[Service]
Type=simple
WorkingDirectory=/local/base/tengine
ExecStart=/local/base/tengine/sbin/nginx -g "daemon off;"
ExecReload=/local/base/tengine/sbin/nginx -s reload
ExecStop=/local/base/tengine/sbin/nginx -s quit
Restart=on-failure
RestartSec=30

[Install]
WantedBy=multi-user.target
EOF
Read more »

MySQL InnoDB是兼顾高可靠性与高性能的通用事务型存储引擎,其架构由内存结构(In-Memory Structures)、磁盘结构(On-Disk Structures)以及连接二者的后台线程(Background Threads)组成。


1.InnoDB核心架构

InnoDB 整体采用 WAL(Write-Ahead Logging,预写日志)机制,修改数据时先写内存与 Redo Log,再由后台线程异步刷盘到表空间。

Read more »

web2py是一个基于Python的开源Web应用开发框架,采用MVC架构,提供数据库访问、表单处理、用户认证、权限管理和后台管理等功能,目标是让开发者快速构建Web应用。


1.主要特点

  • 全栈框架:内置Web服务器、数据库抽象层(DAL)、模板引擎和表单验证机制。
  • MVC架构:将数据模型、业务逻辑和页面展示分离。
  • 无需复杂配置:许多常见功能开箱即用。
  • 数据库支持:通过DAL访问SQLite、PostgreSQL、MySQL等数据库,具体支持情况取决于驱动和版本。
  • 安全功能:提供表单验证、输入处理、身份认证和基于角色的访问控制等机制。
  • 管理界面:提供管理工具,便于开发和维护应用。
Read more »

Linux 内核将进程状态存储在 task_struct 结构体中的 state 字段(一个位图),通过 ps、top、**/proc/pid/status** 等命令可查看(STAT 列)。Linux 的进程状态主要为 R、S、D、T、Z、X(加上可能的前缀标记,如 +、l 等)。


1. Linux进程状态定义

状态码 英文含义 中文含义 说明
R TASK_RUNNING 可执行/运行状态 进程正在 CPU 上运行,或已就绪等待调度
S TASK_INTERRUPTIBLE 可中断睡眠状态 等待事件(如 I/O、信号),可被信号唤醒
D TASK_UNINTERRUPTIBLE 不可中断睡眠状态(Disk Sleep) 等待硬件 I/O(如磁盘、网络),不可被信号打断(kill 无效)
T TASK_STOPPED / TASK_TRACED 暂停/跟踪停止状态 被 SIGSTOP/SIGTSTP 暂停,或被 ptrace 跟踪
Z EXIT_ZOMBIE 僵尸进程状态 进程已退出,但父进程未回收资源(等待 wait())
X EXIT_DEAD 死亡状态 进程即将被完全销毁(短暂,几乎不出现)
Read more »

套接字(Socket) 是Linux网络编程的核心机制,它像一个插座一样,连接两个进程(本地或跨网络)。它支持 TCP(可靠、面向连接,用于文件传输等)和 UDP(无连接、快速,用于广播/实时数据)。


基础概念

  • 创建Socket:socket() 函数返回一个文件描述符(类似 FD)。
  • 协议族(domain):
    • AF_INET:IPv4(最常用)
    • AF_INET6:IPv6
    • AF_UNIX / AF_LOCAL:本地 IPC(同一台机器)
  • 类型(type):
    • SOCK_STREAM:TCP(可靠流式)
    • SOCK_DGRAM:UDP(无连接数据报)
  • 协议:通常填 0,让系统自动选默认协议。
  • 地址结构:sockaddr_in(包含 IP + 端口)。
Read more »

Chrome CDP(Chrome DevTools Protocol,Chrome开发者工具协议)是Chrome及其他基于Chromium的浏览器提供的一套远程调试与自动化控制协议。它允许外部程序通过协议接口控制浏览器、执行JavaScript、操作DOM、监听网络请求、获取页面截图、分析性能以及管理浏览器会话。CDP是Chrome DevTools、Puppeteer、Playwright部分浏览器自动化能力以及各类浏览器Agent的核心基础技术之一。


1.CDP整体技术架构

Read more »

Java中的自动装箱(Autoboxing)和自动拆箱(Unboxing)是指基本数据类型与对应包装类之间的自动转换机制,从Java 5开始引入。


1.基本概念

Java中有8种基本数据类型,每种都有对应的包装类。

Read more »
0%