FTP同步服务静默崩溃故障分析:SIGPIPE信号与TCP半关闭状态的致命陷阱
问题 故障情景 业务背景: 技术栈:C++线程池 + FTP 协议长连接 分布式系统中的文件 FTP 同步服务 故障描述: 本地FTP目录同步服务存在非正常进程终止缺陷。当远程FTP服务器发生非计划性停机(服务崩溃/网络中断/强制kill进程)时,本地同步进程发生静默崩溃(无退出状态码、无异常抛出) 故障分析 首先通过打印的 LOG 信息,快速定位到了 tcpSocket 的 Send() 方法中,Send() 方法的实现如下: ssize_t TcpSocket::Send(const void *buf, int len) const { if (!connected_) { return 0; } return ::write(skt_, buf, len);} 添加 try-catch 语句 首先先对其添加了 try-catch 语句尝试捕获异常,发现程序仍然直接退出 事后查阅资料发现,POSIX 的系统调用的错误以返回值出现,因此这里 try-catch 完全无效,应该针对返回值进行...
WSL2 配置 tensorflow 环境
Windows 系统中更新 NVIDA 驱动 这里可以直接通过 Geforce Experience 直接更新 更新完成后可以在命令行/wsl 中输入 nvidia-smi 可以看到输出 这里的 CUDA Version 指的是该驱动版本最高可支持的 CUDA 版本 安装 CUDA 到 NVIDIA官网下载符合条件的 CUDA 这里我一开始直接选择安装了最新版的 CUDA 12.4,随后发现 Tensorflow 目前 (2024.3.17) 并不支持 12.4,于是重新安装,选择了 CUDA 11.2 直接下载 EXE 版本安装即可 在安装时,会发现安装报错 cuda you already have a newer version of the nvidia frameview sdk installed 这里需要到系统设置里卸载NVIDIA frameview sdk 组件,我使用的是 Geek 进行卸载,很干净 注意:不要直接到 NVIDIA 文件夹删除对应文件 下载 ANACONDA 到最新下载地址找到对应的 ANACONDA...
基于Nexus的第三方Nuget源搭建
Nexus 是支持 Nuget、Docker、Npm 等多种包的仓库管理器,可用做私有包的存储分发,缓存官方包。 https://help.sonatype.com/en/sonatype-nexus-repository.html 环境需求 Docker 安装 创建数据挂载目录并赋予权限 mkdir data && chown -R 200 data 创建 docker-compose. Yml 文件 version: '3.1'services: nexus: # 这里使用latest可能拉不动 image: m.daocloud.io/docker.io/sonatype/nexus3:3.61.0 container_name: nexus3 restart: always environment: # Nexus 上下文路径 NEXUS_CONTEXT: / # 指定jvm参数 INSTALL4J_ADD_VM_PARAMS: -Xms1g...
告别“搬运式”更新,打造丝滑写作流(Obsidian + Hexo + Github Page)(如告,暂时只告别了本地搬运版)
如果你在其他平台看到这篇文章,这可能不是最终版本。为了获得更好的阅读体验(包含最新的评论讨论和勘误),欢迎移步原文 写在前面 作为一个强迫症兼折腾爱好者,我一直梦想有一套完美的博客工作流:在 Obsidian 里像写日记一样随手记录,然后博客就自动静默发布到了网页上。 在折腾出这套方案之前,我每天都在重复极其琐碎的体力活:写完 Markdown -> 手动复制到 Hexo 目录 -> 手动敲指令 -> 等待上传。这种低效的流程不仅累,而且极其消磨写作的热情。 经过持续的踩坑,我终于基本跑通了这套基于 GitHub Actions 的 Obsidian-Hexo 自动化发布方案”。它的核心优势只有三个字:全自动。 写作在 Ob: 享受 Obsidian 强大的插件和管理能力。 图床在 Git: PicGo 配合 GitHub 仓库,图片随粘贴随上传。(这个得小心点,别白嫖太多,图片多了就得买个服务器了,不过那样指不定哪天图片就全 404 了,欢迎分享更好用的方案) 发布在云端: 只要我在 Git 提交,GitHub Actions...
渲染测试
【提示:Github 中 Front-matter 以表格形式显示】 简介 文章使用方法 这原本是一篇 Typora 下使用 Markdown 语法的案例实践分享,最早创建于 2021 年 11 月之前,于 2023 年 6 月大改。本篇文章使用 Markdown 标记语法编写而成,汇聚了常用 Markdown 语法标注。对于不同目标人群有不同的作用: 对于 Markdown 学习者。可以获取文章源码(Github 仓库地址在下面),并使用你的本地编辑器打开。通过对比标记语言与渲染结果直接学习。如果你不喜欢这种 MarkDown 学习方式,你可以参考 GitHub 学习相关 Markdown 规范:基本撰写和格式语法 - GitHub 文档 对于其他人。这篇文章包含不同标准 Markdown 语法,你可以在任何 Markdown 编辑器打开以测试其渲染效果。 比如说——你。你使用什么方式看到这篇文章,就了解到你所用的软件对 Markdown 语言的支持情况。如果你通过我的博客打开,那么你看到的就是 Hexo...


