自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

focksor‘s blog

Knowledge is for issues

  • 博客(30)
  • 资源 (1)
  • 收藏
  • 关注

原创 Linux 内存统计方法差异分析

本文探讨了Linux系统中不同工具(如top、ps、systemctl)统计内存使用量的差异。通过分析Nginx进程的内存数据,发现systemctl和ps显示的内存用量存在显著差别:systemctl汇总内存时可能考虑了共享内存,而ps直接读取单个进程的RSS(驻留内存)。文章深入解析了各工具的数据来源和计算原理,指出应根据实际场景选择合适的指标——systemctl更适合服务监控,ps/top则适合精确分析单个进程。最终帮助读者理解这些差异背后的机制,并掌握在不同场景下正确判断内存使用情况的方法。

2025-06-20 14:00:50 2065

原创 Nginx与lighttpd配置平滑切换指南

本文对比了Nginx和Lighttpd在Web服务器配置方面的差异,重点介绍了如何在资源受限环境下将Nginx配置平滑迁移到更轻量的Lighttpd。文章通过逐项对比的方式,详细说明了access_log、add_header和alias等常见配置项在两款服务器中的对应设置方法。其中,Nginx默认内存占用约18MB,而Lighttpd仅需1.2MB,特别适合嵌入式等资源受限场景。每项配置都提供了Nginx和Lighttpd的具体配置示例及注意事项,为需要切换Web服务器的用户提供了实用参考。

2025-11-10 11:03:44 458

原创 编译缓存工具 sccache 效果对比

本文介绍了编译缓存工具 sccache 的安装和配置过程。

2025-09-08 11:44:55 1010 1

原创 C 内存对齐踩坑记录

本文记述了一个 C 语言使用过程中由于不当设置内存对齐属性导致的问题。

2025-09-03 17:16:08 595

原创 VSCode在WSL环境下无法使用Github Copilot(网络问题)

本文记录了一个案例:VSCode 在 WSL 环境下无法使用 Github Copilot,但是原生 Windows 下使用没问题。

2025-09-03 16:18:09 1195 2

原创 pytest 并发执行用例(基于受限的测试资源)

本文探讨了在测试资源受限时如何通过并发测试减少整体耗时。针对被测设备(DUT)性能低下不支持并发的情况,提出了使用多台设备分散测试负载的方案。重点介绍了基于pytest-xdist的实现方法:将设备信息存入json文件,通过fixture机制在测试前锁定设备,执行后释放。文章还指出了实际应用中可能遇到的设备差异、多机验证和死锁等问题,并提供了示例代码仓库。该方法尤其适用于网络设备等低性能测试场景,能显著提升测试效率。

2025-08-25 17:10:38 1094

原创 在VsCode上使用开发容器devcontainer

本文介绍在VSCode中使用开发容器统一团队开发环境的方法。通过在项目根目录创建.devcontainer文件夹,配置devcontainer.json定义容器名称、Dockerfile路径、扩展插件等参数,并编写Dockerfile指定基础镜像(如Ubuntu 24.04)和依赖安装命令。安装Dev Containers插件后,在VSCode中重新打开项目即可自动构建容器环境。该方法可确保团队成员使用完全一致的开发环境,避免因环境差异导致的问题。

2025-07-17 16:08:19 832

原创 WSL2 Ubuntu使用podman-remote进行容器管理

本文介绍了如何在WSL2的Ubuntu系统中通过podman-remote连接到Windows下Podman Desktop创建的podman-machine-default环境,实现跨系统统一管理容器。通过在Ubuntu中安装podman-remote并配置连接参数(包括URI和认证文件),使得Windows和Ubuntu可以共享同一套Podman环境,避免重复安装和管理多个独立环境带来的资源浪费。验证结果显示两个系统能访问相同的镜像列表,实现了容器管理的系统间协同。这种方法既节省存储空间,又提高了容器管

2025-07-17 14:23:01 989

原创 Python 内存分析方法

本文介绍了分析Python应用内存使用情况的两种方法:统计分析和对象分析。统计分析主要使用Python内置的tracemalloc模块,通过启动跟踪、获取内存快照、比较差异等方式,可以定位内存分配最多的文件和变化情况。对象分析推荐使用第三方工具Pympler,它能深入分析Python对象的内存占用。文档重点讲解了tracemalloc的使用场景和示例,包括如何通过环境变量尽早启动跟踪、打印内存统计值、对比不同时点的内存差异等操作,为诊断Python应用内存问题提供了实用指导。

2025-07-15 09:23:09 1208

原创 解决sysrepo无法启动问题 [ERR] Module “yang“ was not found in sysrepo.

问题描述:执行sysrepoctl命令时出现"Module yang was not found"错误,同时无法安装netopeer2。通过gdb调试发现共享内存中模块数量为0,进一步分析发现是repository数据文件(sysrepo.startup)为空导致。解决方法为:1)删除/dev/shm下的sr_*共享内存文件;2)删除build/repository目录重建数据仓库。验证表明该方法有效恢复了正常功能。该问题可能由系统初始化失败导致数据损坏引起。

2025-07-04 15:07:02 768

原创 sysrepo running 数据库缓存机制分析

本文分析了sysrepo函数sr_connect中SR_CONN_CACHE_RUNNING参数的缓存机制。该选项主要用于缓存running数据库数据,以加速重复数据获取。分析显示,缓存更新通过sr_modinfo_data_load实现,当满足条件时会调用sr_conn_run_cache_update更新缓存。缓存适用范围仅限于从running数据库获取数据的情况。性能测试表明,该缓存机制通过减少重复数据获取时的系统开销,优化了系统整体性能表现。

2025-07-02 17:59:11 1069

原创 netopeer2 主要流程导读

摘要 本文分析了NETCONF服务器netopeer2的实现架构和核心流程。基于libyang v2.1.55、libnetconf2 v2.1.31、sysrepo v2.2.60和netopeer2 v2.1.59版本,主要流程包括: 初始化阶段:设置信号处理、解析参数、创建PID文件、初始化日志回调,并通过server_init完成sysrepo连接和libnetconf2初始化。 多线程工作模型:采用主线程+worker线程的混合模式,主线程也参与连接处理。通过原子变量控制线程退出,确保优雅关闭。

2025-07-01 16:08:53 1130

原创 ncclient 懒加载子模块以减少内存使用

本文记录了发现ncclient库内存占用过高问题及优化过程。测试显示导入ncclient后内存使用增加约20MB,通过importtime分析发现其加载了大量依赖模块。初步排查表明,这种高内存占用主要源于其一次性加载所有子模块。作者建议采用懒加载机制优化,即只在需要时加载特定子模块,从而显著降低初始内存占用。该优化方法对资源受限环境尤为重要,可有效改善Python网络配置工具ncclient的性能表现。

2025-06-25 00:03:11 611

原创 libnetconf2 编译安装

本文简要介绍了CESNET/libnetconf2库的编译安装过程。首先列出所需依赖,包括gcc、cmake、libyang等,并提供了Ubuntu下的安装命令。接着详细说明编译步骤:克隆仓库后,通过cmake和make命令进行编译安装。最后指出安装成功后的默认文件位置,可通过检查头文件和动态库的存在确认安装结果。安装过程中需注意libyang需要单独安装。

2025-06-24 20:00:00 293

原创 sysrepo 编译安装

本文介绍了sysrepo的编译安装过程。sysrepo是基于YANG的配置和操作状态数据存储工具。安装前需先满足依赖:C编译器、CMake、libyang和tar。在Ubuntu上可通过apt安装基础依赖,libyang需单独编译安装。然后克隆sysrepo仓库,执行CMake构建和make编译安装。安装完成后默认会将头文件放在/usr/local/include,动态库放在/usr/local/lib,可通过检查这些文件验证安装是否成功。整个过程涉及从源码构建到系统安装的完整步骤。

2025-06-24 20:00:00 200

原创 netopeer2 编译安装

本文介绍了Netconf服务器netopeer2的编译环境搭建过程。首先需要安装三个核心依赖:libyang、libnetconf2和sysrepo,均需从源码编译安装。随后通过git克隆netopeer2仓库,使用cmake和make命令完成编译安装,并执行ldconfig刷新库链接。最后通过运行netopeer2-server验证安装成功,该命令支持多种参数配置,包括调试模式、UNIX套接字设置、超时控制等。整个过程覆盖了从依赖安装到服务验证的完整步骤。

2025-06-24 20:00:00 376

原创 libyang 编译安装

本文介绍了在Ubuntu系统下编译安装CESNET/libyang(YANG数据建模语言库)的过程。安装需要满足以下依赖:C编译器、CMake(≥2.8.12)和libpcre2(≥10.21)。具体步骤包括:1)通过apt命令安装依赖包;2)克隆GitHub仓库;3)使用CMake和make进行编译安装。安装成功后,主要文件会存储在/usr/local/include/libyang(头文件)和/usr/local/lib/libyang.so*(动态库)路径下。

2025-06-24 15:29:30 515

原创 VSCode 连接 podman 容器作为开发环境

本文介绍了如何在VSCode中配置Podman作为开发容器环境。基于Windows11和WSL2系统,通过修改Dev Containers插件的dockerPath设置为"podman",使VSCode能够识别并连接Podman创建的容器。具体步骤包括:1)使用Podman GUI拉取Ubuntu镜像并创建容器;2)在VSCode设置中更改容器路径;3)刷新并连接到容器进行开发。这种方法避免了污染主机环境,实现了与Docker类似的容器开发体验。

2025-06-24 14:52:00 1458

原创 1512. 好数对的数目

题目要求计算数组中满足条件的好数对数目,即数组中相同元素且下标i<j的数对数量。 解题思路: 直接双重遍历数组,检查所有i<j的元素对,若相等则计数(时间复杂度O(n²))。 优化方法使用哈希表存储元素及其所有下标,对每个元素计算其后出现相同元素的次数(时间复杂度O(n))。 示例代码提供了两种实现:直接遍历和哈希表优化方法。哈希表方法虽在本题数据规模下优势不明显,但展示了更高效的算法思路。

2025-06-23 23:54:55 288

原创 1486. 数组异或操作

这道题要求计算由公式生成数组元素的异或结果。给定整数n和start,数组nums定义为每个元素nums[i]=start+2*i,数组长度为n。需要返回所有数组元素按位异或后的最终值。 解题方法: 初始化结果变量res为0 遍历0到n-1的每个i 计算当前元素item=start+2*i 将当前元素与res进行异或运算 最终返回异或结果 该方法直接按照题意模拟计算过程,时间复杂度为O(n)。示例输入如n=5、start=0时,计算数组[0,2,4,6,8]的异或结果为8。

2025-06-23 23:25:23 228

原创 2236. 判断根结点是否等于子结点之和

摘要: 题目要求判断二叉树的根节点值是否等于其左右子节点值之和。给定二叉树仅包含根节点和两个子节点。通过比较root.val与root.left.val + root.right.val是否相等即可得出结果。示例1中根值10等于4+6返回true,示例2中5不等于3+1返回false。解题代码使用Rust语言实现,通过Option<Rc<RefCell<TreeNode>>>结构访问节点值并进行比较。

2025-06-21 07:42:08 259

原创 2413. 最小偶倍数

该题目要求计算2和给定正整数n的最小公倍数(LCM)。通过分析可知,当n为偶数时,LCM(n,2)=n;当n为奇数时,LCM(n,2)=n×2。使用条件判断即可高效解决,时间复杂度为O(1)。示例显示,输入5输出10,输入6输出6,验证了算法的正确性。Rust实现简洁明了,通过n%2判断奇偶性,返回相应结果。

2025-06-21 07:41:25 148

原创 2413. 最小偶倍数

该题目要求计算2和给定正整数n的最小公倍数(LCM)。通过分析可知,当n为偶数时,LCM(n,2)=n;当n为奇数时,LCM(n,2)=n×2。使用条件判断即可高效解决,时间复杂度为O(1)。示例显示,输入5输出10,输入6输出6,验证了算法的正确性。Rust实现简洁明了,通过n%2判断奇偶性,返回相应结果。

2025-06-21 07:40:38 160

原创 2469. 温度转换

该题目要求将给定的摄氏温度转换为开氏度和华氏度。通过简单的数学公式转换:开氏度=摄氏度+273.15,华氏度=摄氏度×1.80+32.00。只需按照这两个公式计算并将结果放入数组返回即可。示例显示输入36.50摄氏度时,正确输出为[309.65000,97.70000],验证了公式的正确性。解题代码直接应用公式计算,生成包含两个转换结果的数组返回。需要注意的是浮点数精度问题,但题目允许误差范围。

2025-06-21 07:39:42 212

原创 2235. 两整数相加

题目要求实现两个整数的加法运算。给定两个整数num1和num2,直接返回它们的和即可。示例展示了12+5=17和-10+4=-6的情况。解题思路简单直接,只需将两数相加。Rust代码通过一个sum函数实现,直接返回num1与num2的和。这是一道基础编程练习,考察最基本的算术运算能力。

2025-06-21 07:38:33 214

原创 sccache 无法启动问题

VSCode中Rust项目出现sccache连接超时问题,原因是4226端口被Hyper-V保留占用。有两种解决方案:1)释放端口保留:通过PowerShell命令禁用Hyper-V,添加端口例外后再启用;2)更改sccache端口:设置环境变量使用Unix域套接字。最终采用方案二,修改sccache配置为Unix socket路径后,重启服务成功解决问题。

2025-06-20 14:27:37 322

原创 Python 删除已导入的模块

本文探讨了Python中如何真正释放已导入模块的内存。作者测试了多种方法:直接使用del删除模块引用、深度删除模块所有关联引用、以及使用第三方库deimport,但这些方法都无法有效降低内存占用。原因在于模块导入会产生大量变量和依赖模块,很难彻底清除所有引用。作者提出了一种替代方案:在子进程中导入并使用模块,通过进程隔离确保主进程不会引入模块内存消耗。测试表明,常规方法均无法实现内存释放,而分治法可能是更可行的解决方案。

2025-06-20 13:57:17 447

原创 uWSGI+Django 最简实践

本文介绍了使用Django和uWSGI部署Web应用的方法。首先通过pip安装uWSGI和Django,然后使用django-admin创建项目。重点讲解了uWSGI的启动命令参数,包括端口设置、模块指定、日志输出等。还提供了应用验证和终止服务的方法。该方案适用于Django项目的基本部署需求,并提供了相关文档和GitHub资源链接。

2025-06-20 13:56:33 280

原创 uWSGI+CGI 最简实践

uWSGI提供了CGI插件支持传统CGI脚本运行,但性能与传统CGI相近,仅适用于兼容旧系统或调试场景。要使用该功能需通过指定参数编译安装CGI插件,并配置--http-socket-modifier1参数为9以指定CGI处理模式。本文详细演示了C和Bash两种CGI应用的编写方法,以及uWSGI的启动配置步骤。同时总结了常见问题如"未找到标识符0"、"找不到CGI插件"等情况的解决方法。该项目源码已上传Github,更多细节可参考uWSGI官方CGI文档。

2025-06-20 13:55:19 727

原创 Gitee图床+PicGo+Typora便捷在博客中使用图片

为什么要使用图床在hugo中,图片是以/static为基准目录的,例如,设baseUrl为https://focksor.gitee.io/,图片文件存放位置是static/img/gitee/123.jpg,那么,编译完成后页面图片引用的地址就是https://focksor.gitee.io/img/gitee/123.jpg,则在Markdown要引用此图片应该用![图片说明](...

2025-06-20 13:53:51 960

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除