惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Schneier on Security
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
Threat Research - Cisco Blogs
C
Cyber Attacks, Cyber Crime and Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
A
Arctic Wolf
Security Latest
Security Latest
Simon Willison's Weblog
Simon Willison's Weblog
I
Intezer
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Troy Hunt's Blog
Latest news
Latest news
Help Net Security
Help Net Security
S
Security Affairs
Webroot Blog
Webroot Blog
The Hacker News
The Hacker News
AI
AI
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Tor Project blog
Forbes - Security
Forbes - Security
Google DeepMind News
Google DeepMind News
AWS News Blog
AWS News Blog
Attack and Defense Labs
Attack and Defense Labs
P
Proofpoint News Feed
www.infosecurity-magazine.com
www.infosecurity-magazine.com
H
Help Net Security
L
Lohrmann on Cybersecurity
S
SegmentFault 最新的问题
Google Online Security Blog
Google Online Security Blog
MongoDB | Blog
MongoDB | Blog
Cyberwarzone
Cyberwarzone
The Last Watchdog
The Last Watchdog
S
Securelist
N
News and Events Feed by Topic
S
Secure Thoughts
F
Fortinet All Blogs
博客园_首页
C
Cybersecurity and Infrastructure Security Agency CISA
量子位
M
MIT News - Artificial intelligence
F
Full Disclosure
T
The Blog of Author Tim Ferriss
T
Tailwind CSS Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Microsoft Security Blog
Microsoft Security Blog
I
InfoQ
P
Privacy International News Feed
L
LangChain Blog
Know Your Adversary
Know Your Adversary
C
CERT Recently Published Vulnerability Notes

博客园 - iTech

7万星的AI交易框架:让大模型模拟投行多空辩论,自动做交易决策 71000颗星的AI交易团队:让大模型模拟投行分工,自动做交易决策 13400颗星的开源项目:输入一句话,AI全自动帮你做短视频 102颗星的沙盒:当AI学会自己写代码、跑测试、做部署 AI 技术日报 - 2026-05-08 29k 星的 PageIndex:不用向量数据库,靠推理就能做 RAG 每天花两小时刷信息?这个开源项目帮你全自动搞定 读源码像读小说?试了 DeepWiki 和 Zread,我再也不想裸读 GitHub 了 Matt Pocock 开源的这套 .claude 技能,为什么让工程师集体上头? Cursor Team Kit:Cursor 官方团队在用的 17 个 AI 工作流 AI 技术日报 - 2026-05-07 AI 技术日报 - 2026-05-06 AI 技术日报 - 2026-05-05 Anthropic CEO 说 12 个月内程序员要失业,我扒完他的底牌,发现事情没那么简单 把工程师的肌肉记忆装进 Claude Code,这个 4300 Star 的项目我后悔没早用 AI 技术日报 - 2026-05-04 AI 技术日报 - 2026-05-03 AI 技术日报 - 2026-05-02 六大 Agent 框架横评:谁支持 Skills?谁能自动创建 Agent?MCP 呢? Wechatsync:一个 Chrome 插件,一键把文章同步到 31 个平台 LangChain 开源了 Open SWE:Stripe、Ramp、Coinbase 内部都在造的编程 Agent Cockpit:把 Claude Code 从终端里搬出来,装进浏览器 Cursor 把自家的 AI Agent 开放了:写几行 TypeScript 就能调 Cursor 干活 AI 技术日报 - 2026-05-01 AI 写代码每次结果都不一样?Archon 用 YAML 工作流把 AI 编程变成流水线 AI 写代码比你快了,但你还是得学编程——只不过学法得换 腾讯的龙虾特工队:4 个 AI Agent 同日更新,全家桶正式成型 Agno 不做更聪明的 Agent,它要把所有 Agent 框架包进同一个操作系统 Hermes Agent 终于有了像样的 Web 界面,而且还支持远程访问 Datawhale 出了一套 29 学科知识地图,把 AI 的底牌全掀了 Hermes Agent 在聊天框里就能用的 20 种高级功能 一份 AGENTS.md 能顶一次模型升级?Augment Code 用数据说了算 NVIDIA 开源了一个「AI 沙箱」,20K Star,让 Agent 跑代码不再裸奔 60ms 冷启动、5MB 内存:腾讯开源的这个沙箱让 Docker 安全隔离像笑话 AI 技术日报 - 2026-04-30 AI 技术日报 - 2026-04-29 AI 技术日报 - 2026-04-28 Goose:Linux 基金会亲儿子,能撼动 Claude Code 和 OpenCode 吗? AI 技术日报 - 2026-04-27 AI 技术日报 - 2026-04-26 Google 把价值20美元/月的东西免费了,102K人已经抢到了 OpenClaw 和 Claude Code 网络搜索配置指南 AI 技术日报 - 2026-04-25 Anthropic 为什么遥遥领先:从 Cat Wu 专访看AI霸主的底层逻辑 Mac 本地跑大模型完全指南:你的苹果电脑就是 AI 工作站 同样 70B 参数,为什么 MoE 只激活 13B 就能打平 Dense? DeepSeek-V4 技术报告里藏着一条线:华为昇腾 NPU 已完成推理验证 DeepSeek-V4 深夜炸场:1M 上下文、384K 输出、双模型,API 定价直接卷到底 MacBook Air 跑大模型实测:Ollama、llama.cpp、LM Studio 谁才是本地推理之王? AI 技术日报 - 2026-04-24 OpenCode:Claude Code 的最佳平替 2026 开源大模型五国杀:Qwen 3.6 vs Gemma 4 vs Llama 4 vs GLM-5.1 vs DeepSeek V4 MCP 与 Skills 的你死我活:Anthropic 的 Agent 生态野心与开发者的站队困境 给 AI Agent 配搜索,国内能用的搜索 API 实测对比 AI 技术日报 - 2026-04-23 CC Switch:49K Star 的 Claude Code 登录绕过神器,还能管 Codex 和 Gemini CLI NVIDIA 开出 32 万美元年薪招 AI Agent 工程师,JD 里藏着这些信号 fast-mirror-skill 技术拆解:一个小而完整的 Claude Skill 是怎么设计的 Cursor 值 600 亿美元?马斯克这次赌的不是技术,是入口 AI 技术日报 - 2026-04-22 别再问 AI 能不能赚钱了:3 个上班族亲测有效的副业方法(2026 最新版) 10 分钟从零搞定 Hermes Agent:飞书微信双通道丝滑上线 AI 技术日报 - 2026-04-21 Anthropic 实战总结:AI Agent 的 3 种工作流模式,选错代价很大 安装 openclaw,hermes 慢的想发疯,fast-mirror-skill 来救了 Claude Routines:你下班睡觉了,Agent 还在为你干活 微信飞书里敲一个斜杠就能干活:Hermes Quick Command 到底多省事 AI 正在疯狂吃电:算力尽头是电力,谁能解这道题? AI 技术日报 - 2026-04-20 3K 行代码造一个越用越聪明的 AI Agent:GenericAgent 登顶 GitHub Trending 高德途途封神机器人半马,背后的 ABot-Claw 到底是什么 人们希望 AI 能干啥?Anthropic 调查:第一名不是赚钱,是变强 AI 时代人们在担心什么?Anthropic 的 13 条焦虑排行榜 OpenAI 官方 Agent SDK 来了:22k Star,支持 100+ 模型,Python 10 行代码上手 AI 技术日报 - 2026-04-19 OpenAgents Workspace:让 Claude Code 和 Codex 在同一个群里干活 Claude 是要干掉整个软件行业吗? Claude 官方推荐多 Agents 设计模式 多 Agent 系统的 5 种协调模式:选错了模式,再强的 Agent 也白搭 AI 技术日报 - 2026-04-18 AI 技术日报 - 2026-04-17 Better-Harness:让AI Agent自己优化自己的革命性框架 OpenClaw Workspace 完全指南:我的AI编程工作流 DeepSeek内蒙草原高薪招聘:AI时代的数字牧民梦,还是营销噱头? 2 核 2G 的阿里云 ECS 能跑 OpenClaw 吗?能,但有点折腾 AI 技术日报 - 2026-04-16 OpenCLI:一个命令行搞定 16+ 内容平台的神器 从零到精通:OpenClaw CLI 命令完全指南 AI 技术日报 - 2026-04-15 AI Agent 如何自我进化?Hermes Agent Self-Evolution 深度解析 AI 技术日报 - 2026-04-14 为什么你的飞书 Bot 总是连不上?OpenClaw Gateway 架构深度解析 OpenClaw 连接飞书的原理:Gateway、Channel 与消息流转 国内安装 Hermes Agent 踩坑全记录:从 GitHub 超时到正常跑起来的每一步 35 万 Star 的 OpenClaw:5 分钟部署你的私人 AI 助手,直连飞书 AI 技术日报 - 2026-04-13 公司用 AI 筛简历,这个开源项目让候选人用 AI 反选公司 为什么 Google ADK 可能是你下一个 Agent 框架——7 个改变游戏规则的特性 Microsoft Agent Framework 深度解析:架构设计与实战落地 AI 技术日报 - 2026-04-11
程序员必备核心技能手册:从 Linux 到 Docker 的实战速查
iTech · 2026-05-22 · via 博客园 - iTech

程序员必备核心技能手册:从 Linux 到 Docker 的实战速查

框架在变,语言在变,但有些底层技能不会过时。

这篇文章整理了程序员日常最高频使用的核心技能,每个部分只讲最实用的操作,不废话。可以当速查手册用。

一、Linux 进程与会话管理

后台执行与恢复

把正在运行的 job 移到后台:

# 1. 按 Ctrl+Z 暂停当前任务
# 2. 用 bg 放到后台继续运行
bg

# 查看所有后台 job
jobs -l

# 把 job 1 拿回前台
fg %1

用 nohup 让任务在退出终端后继续运行:

nohup python3 train.py > train.log 2>&1 &

# 查看是否还在跑
ps aux | grep train.py

# 实时看日志
tail -f train.log

nohup 的作用是忽略 SIGHUP 信号。终端关闭时会向所有子进程发送 SIGHUP,nohup 让进程忽略这个信号。末尾的 & 让进程在后台启动。

用 disown 彻底脱离终端:

python3 train.py &
disown -h %1

disownnohup 更灵活——你已经忘了加 nohup 的时候,还能用 disown 救回来。

硬链接 vs 软链接

为什么需要硬链接?

硬链接和软链接(符号链接)解决不同的问题:

# 硬链接:指向同一个 inode
ln /data/model.bin /backup/model.bin

# 软链接:指向文件路径
ln -s /data/model.bin /backup/model_link

硬链接的核心用途:

  • 节省空间:不会复制文件内容,两个文件名指向同一份数据
  • 防止误删:删除原文件,硬链接仍然能访问数据(引用计数不为零,数据块不释放)
  • 原子更新:很多程序(如日志轮转、数据库 checkpoint)通过「创建新文件 → 原子 rename」来更新,硬链接保证旧文件句柄依然有效

软链接更像 Windows 的快捷方式。删了原文件,软链接就坏了(悬空链接)。

关键区别:硬链接不能跨文件系统,不能链接目录。软链接可以。

二、Git 高级操作

Branch 与 Worktree

创建分支并切换:

# 创建并切换
git checkout -b feature/login
# 或新版写法
git switch -c feature/login

# 从某个 commit 创建分支
git branch hotfix abc1234
git switch hotfix

Git Worktree(同时在多个分支上工作):

# 创建一个 worktree,在 ../feature-login 目录
git worktree add ../feature-login feature/login

# 在那个目录正常工作
cd ../feature-login
# ... 修改、提交 ...

# 回到主仓库,两边互不影响
cd -

# 列出所有 worktree
git worktree list

# 用完删掉
git worktree remove ../feature-login

Worktree 解决了一个痛点:你正在 feature/A 上开发,突然需要紧急修一个 bug。不想 stash 半成品,也不想 clone 一份仓库。Worktree 让你同时 checkout 多个分支到不同目录。

Merge vs Rebase

Merge(保留完整历史):

git switch main
git merge feature/login
# 如果有冲突,解决后
git add .
git commit

Rebase(线性历史,更干净):

git switch feature/login
git rebase main
# 如果有冲突
git add .
git rebase --continue
# 想放弃
git rebase --abort

选择原则

  • 本地分支同步最新代码 → 用 rebase(历史干净)
  • 合并 feature 到 main → 用 merge(保留分支信息,方便回溯)
  • 公共分支(main/develop)→ 永远不要 rebase(会改写别人的历史)

Restore 与 Reset

# 撤销工作区修改(未 stage)
git restore app.py
git restore --source HEAD~2 app.py   # 恢复到两个版本前

# 取消暂存(已 git add,但未 commit)
git restore --staged app.py

# 回退到上一个 commit(工作区修改保留)
git reset --soft HEAD~1

# 回退到上一个 commit(丢弃所有修改)⚠️ 危险
git reset --hard HEAD~1

# 找回误删的 commit
git reflog
git reset --hard abc1234

三、Python 并发:多进程与队列

multiprocessing 基础

from multiprocessing import Process, Queue, Pool
import os

def worker(name, q):
    result = f"{name} running in PID {os.getpid()}"
    q.put(result)

if __name__ == "__main__":
    q = Queue()
    processes = []
    for i in range(4):
        p = Process(target=worker, args=(f"worker-{i}", q))
        p.start()
        processes.append(p)

    for p in processes:
        p.join()

    while not q.empty():
        print(q.get())

进程池 + Map 模式

from multiprocessing import Pool

def process_file(filename):
    # 处理单个文件
    return f"processed {filename}"

if __name__ == "__main__":
    files = ["a.csv", "b.csv", "c.csv", "d.csv"]
    with Pool(processes=4) as pool:
        results = pool.map(process_file, files)
    print(results)

Producer-Consumer 模式

from multiprocessing import Process, Queue
import time

def producer(q):
    for i in range(10):
        q.put(f"task-{i}")
        time.sleep(0.1)
    q.put(None)  # sentinel

def consumer(q):
    while True:
        item = q.get()
        if item is None:
            break
        print(f"processing {item}")

if __name__ == "__main__":
    q = Queue(maxsize=5)
    p = Process(target=producer, args=(q,))
    c = Process(target=consumer, args=(q,))
    p.start()
    c.start()
    p.join()
    c.join()

什么时候用多进程而非多线程:Python 有 GIL,CPU 密集型任务用多线程没有加速效果。多进程是真正利用多核的方式。I/O 密集型任务(网络请求、文件读写)用多线程或 asyncio 就够了。

四、GitHub Actions 工作流

基本结构

name: CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.11"
      - run: pip install -r requirements.txt
      - run: pytest
      - run: ruff check .

  deploy:
    needs: test
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    steps:
      - run: echo "deploying..."

常用触发条件

on:
  schedule:
    - cron: "0 6 * * *"    # 每天早上 6 点
  workflow_dispatch:         # 手动触发
  push:
    tags: ["v*"]             # 打 tag 时触发

Secrets 和环境变量

steps:
  - name: Deploy
    env:
      API_KEY: ${{ secrets.API_KEY }}
    run: |
      curl -H "Authorization: Bearer $API_KEY" \
        https://api.example.com/deploy

五、DevOps 与 CI/CD 核心概念

CI/CD 是什么

  • CI(持续集成):每次代码提交自动触发构建和测试,尽早发现问题
  • CD(持续交付):通过所有测试的代码自动部署到预发环境
  • CD(持续部署):进一步自动化,直接部署到生产环境

用 Jenkins API 控制任务

Jenkins 提供 REST API,可以在脚本中触发、查询和管理 Job。

# 触发构建
curl -X POST "https://jenkins.example.com/job/my-project/build" \
  --user "username:api_token"

# 带参数触发
curl -X POST "https://jenkins.example.com/job/my-project/buildWithParameters" \
  --user "username:api_token" \
  --data "BRANCH=feature/login&ENV=staging"

# 查询构建状态
curl "https://jenkins.example.com/job/my-project/lastBuild/api/json" \
  --user "username:api_token" | jq '.result'

# 获取构建日志
curl "https://jenkins.example.com/job/my-project/lastBuild/consoleText" \
  --user "username:api_token"

# 列出所有 Job
curl "https://jenkins.example.com/api/json?pretty=true" \
  --user "username:api_token" | jq '.jobs[].name'

API Token 在 Jenkins 个人设置页面生成:用户 → 配置 → API Token → 添加新 Token。

六、Docker 与 Docker Compose

构建、运行、清理

构建镜像:

# 用 Dockerfile 构建并打 tag
docker build -t myapp:v1 .

# 查看本地镜像
docker images

# 查看镜像构建历史(排查镜像大小问题)
docker history myapp:v1

运行容器:

# 后台运行,映射端口,挂载目录
docker run -d \
  --name myapp \
  -p 8080:80 \
  -v $(pwd)/data:/app/data \
  myapp:v1

# 查看运行中的容器
docker ps

# 查看所有容器(包括已停止的)
docker ps -a

# 进入容器调试
docker exec -it myapp /bin/bash

# 查看容器日志
docker logs -f myapp

# 停止并删除容器
docker stop myapp
docker rm myapp

删除镜像:

# 删除指定镜像
docker rmi myapp:v1

# 强制删除(即使有容器引用)
docker rmi -f myapp:v1

# 清理所有未使用的镜像、容器、网络
docker system prune -a

Dockerfile 最佳实践

FROM python:3.11-slim

WORKDIR /app

# 先复制依赖文件,利用缓存层
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 再复制源码
COPY . .

EXPOSE 8080
CMD ["python", "main.py"]

关键点:把 requirements.txt 单独 COPY 再 RUN pip install,这样源码变了不会重新安装依赖。Docker 层缓存只在该层及之后失效。

Docker Compose 编排多服务

# docker-compose.yml
version: "3.8"
services:
  web:
    build: .
    ports:
      - "8080:80"
    depends_on:
      - db
      - redis
    environment:
      - DB_HOST=db
      - REDIS_HOST=redis

  db:
    image: postgres:16
    volumes:
      - pgdata:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=secret

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

volumes:
  pgdata:
# 启动所有服务(后台)
docker compose up -d

# 查看状态
docker compose ps

# 查看日志
docker compose logs -f web

# 重新构建并启动
docker compose up -d --build

# 停止并删除所有容器
docker compose down

# 停止并删除容器 + 数据卷
docker compose down -v

七、补充:其他高频技能

SSH 免密登录

# 生成密钥对
ssh-keygen -t ed25519

# 复制公钥到服务器
ssh-copy-id user@server

# 配置快捷别名(~/.ssh/config)
Host myserver
    HostName 192.168.1.100
    User deploy
    IdentityFile ~/.ssh/id_ed25519

# 之后直接
ssh myserver

屏幕复用:tmux

# 新建会话
tmux new -s work

# 分离会话(不中断)
# 按 Ctrl+B 然后按 D

# 列出会话
tmux ls

# 重新连接
tmux attach -t work

# 水平分屏
# Ctrl+B 然后按 "
# 垂直分屏
# Ctrl+B 然后按 %

tmux 比 nohup 更适合长期运行的任务——你可以随时重新连接查看输出。

快速分析日志

# 统计 HTTP 状态码分布
awk '{print $9}' access.log | sort | uniq -c | sort -rn

# 找出最频繁的 IP
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10

# 按时间范围过滤
awk '$4 >= "[22/May/2026:06:00" && $4 < "[22/May/2026:12:00"' access.log

# 实时监控并高亮关键词
tail -f app.log | grep --color -E "ERROR|FAIL|^"

这些技能不会出现在任何招聘 JD 的"必备要求"里,但它们是每天都会用到的基本功。建议收藏备用,需要的时候直接查。


作者: itech001
来源: 公众号:AI人工智能时代
网站: https://www.theaiera.cn/
每日分享最前沿的AI新闻资讯和技术研究。

关注公众号,获取更多 AI 技术干货!