自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 Stable Diffusion 图像生成技术背后的三大数学支柱

概率论:定义加噪与去噪过程微积分:提供连续优化与梯度方向线性代数:实现高维表示与跨模态对齐三者融合,构成 Stable Diffusion 的核心机制。

2026-03-18 03:08:38 364

原创 学中文汉语拼音,学越南语音调发音的网站

这个网站 Vietnamese Lab 的发音页面:https://vietnameselab.com/pronunciation#tone-section主要是一个 越南语发音学习网站,专门帮助初学者系统学习越南语的字母、声调和音节结构。下面给你简单介绍它的主要内容。这个网站提供几个核心学习模块:它的特点是:在你给的 tone section 页面里,重点讲 越南语6个声调。越南语是 声调语言,声调不同,词义完全不同。 (Vietnamese Lab)这些声调通过 变音符号(diacritics) 标

2026-03-15 23:09:34 421

原创 libxml的链表初始化、插入节点

libxml2是广泛使用的XML解析器,其节点结构采用标准双向链表设计,没有使用头节点。xmlNode结构通过children指针直接指向第一个真实子节点,last指针指向末尾节点。节点创建时所有指针初始化为NULL,在首次添加子节点时通过xmlInsertNode函数初始化链表。这种设计在libxml2的各个版本中保持一致,包括2001年的早期版本。链表操作通过next/prev指针连接兄弟节点,首节点的prev和末节点的next均为NULL。

2026-03-14 01:47:01 189

原创 字节流(XML、JSON、文件、网络、图像、加密…)必须用无符号语义unsigned char

摘要: xmlchar(typedef unsigned char xmlchar)的设计在XML处理中至关重要,主要解决两个问题: 正确处理UTF-8编码:避免signed char将高位字节错误解释为负数,确保UTF-8字符(128-255)处理正确。 类型安全:强制显式转换(如(const char*)),防止普通字符串误用,提升代码安全性。 应用场景: XML/HTML库(如libxml2)广泛使用unsigned char处理节点内容。 现代C++引入std::byte和char8_t进一步规范字

2026-03-11 23:55:40 396

原创 使用python语言,对 “ 短视频、ai让人生活更加快乐,让世界产生更多爱 ” 的主题的ai token文本预测分析

本文分析了AI token消耗估算方法,通过字符统计和编码器推导得出中文文本的token估算公式(2中文字符≈1 token,4非中文字符≈1 token)。针对1863字符的示例文本,估算约846 tokens,其中结构化代码段仅220 tokens且质量极高。文章提供了Python代码自动计算精确token数,并将文本中的黄瓜切法指南转换为可执行的Python函数,支持6种切法查询。该函数可直接集成到项目中,包含详细步骤、用途和技巧说明,展现了如何将生活经验转化为结构化代码。

2026-03-09 11:53:56 310

原创 总有一种力量让人泪流满面,总有一种感到让人泪流满面

《南方周末》1999年新年献词《总有一种力量让我们泪流满面》以温暖而坚定的笔触,在世纪之交传递出对真实、希望与人性的思考。文章以"阳光打在你脸上"的意象开篇,在描述普通冬日景象中,道出人们对真实的渴望。它直面时代的困惑与幻灭,却更强调"真实、真情、真理"的可贵,认为直面真实才是成熟的标志。最后以"让无力者有力,让悲观者前行"的祝福收尾,将改变的力量归于每个人心中的正义与良知。这篇充满人文关怀的献词,因其对真实力量的坚持而超越时代,成为一代人的精神坐

2026-03-07 10:27:46 19

原创 撇除猪肉腥味调料

摘要:猪肉去腥需分三步:1)浸泡去血水,冷水泡10-15分钟至肉发白;2)腌制时加盐、料酒、白胡椒粉(关键)、姜丝和淀粉,最后封油;3)爆炒时热锅凉油,先爆香姜蒜,出锅前锅边淋醋。若腥味仍重,可能是肉不新鲜、含淋巴或火候不足。核心方法为"浸泡+白胡椒腌制+锅边醋",能有效去除腥味。(149字)

2026-02-18 19:27:05 990

原创 小腿三头肌--人体第二心脏;踝关节屈伸环绕运动让小腿三头肌收缩,促进血液回流心脏,降低饭后血糖,减少饭困

【健康新知:小腿肌肉锻炼的惊人益处】 最新研究揭示,小腿肌肉(尤其是比目鱼肌)的健康对整体代谢具有重要作用。休斯顿大学研究发现,正确锻炼这块仅占体重1%的肌肉,能显著提升局部代谢水平并维持数小时,改善葡萄糖和脂肪代谢。专家指出,小腿三头肌作为"人体第二心脏",其收缩能促进血液循环,临床常用的"踝泵运动"就是典型应用。简单如餐后提踵(踮脚尖)或步行10-15分钟,就能有效调控血糖,效果仅次于深蹲。这些发现为久坐人群提供了便捷的健康管理方案,通过激活小腿肌肉可同时改善代谢

2026-02-17 15:24:40 146

原创 从Windows terminal连接Google cloud shell输出中截取trim IP 地址,再更新到.ssh/config文件里面

本文介绍了如何自动更新Google Cloud Shell的动态IP地址到SSH配置文件的方法。通过修改Google CLI的SSH连接方式为OpenSSH,并编写PowerShell脚本实现以下功能:1)连接Cloud Shell;2)退出时自动获取最新IP;3)更新.ssh/config文件中的HostName字段。脚本会匹配IP地址格式并替换配置文件,解决因IP变化导致SSH连接失效的问题。使用时只需运行脚本,正常连接后退出,即可自动完成IP更新,方便后续在VS Code中直接连接。

2026-02-16 22:16:43 477 2

原创 GitHub的codespaces入门,以及git设置

本文介绍了使用VS Code和GitHub CLI连接GitHub Codespaces的完整流程。首先在VS Code安装Codespaces插件进行连接,然后通过Windows Terminal使用GitHub CLI进行授权认证。详细说明了SSH和HTTPS两种协议的区别及适用场景,并展示了如何查看认证状态。特别强调了在Codespaces环境中应使用HTTPS协议而非SSH进行Git操作,如遇错误配置需及时更正。最后提供了通过CLI进入Codespaces容器的方法,帮助开发者快速建立高效的云端开发

2026-02-13 18:14:55 457 2

原创 社会等级制度中的支配(dominance)、追求地位(status)和等级统治(hierarchy)

进化基础:在进化史上,male通过支配和竞争在等级制度中上升,以获得更多资源、配偶和后代生存优势。这源于灵长类动物中的竞争模式,人类继承了这种机制,但加入了声望(prestige)路径。支配帮助male在资源稀缺环境中脱颖而出。生殖收益:高支配地位的male往往有更多婚内和婚外后代,以及更低的子女死亡率。这是因为支配信号了力量、资源控制和盟友支持,吸引女性并威慑竞争者。心理机制:male有专化的支配心理,包括对地位线索的敏感(如身体力量、攻击性),以及通过威胁或威吓维持地位的倾向。

2026-02-11 18:41:33 627

原创 s->data[++s->top]的运算符顺序

代码执行顺序与运算符优先级解析: 在表达式 s->data[++s->top] 中,++ 前缀递增先执行,后执行数组下标访问 在表达式 *a[99] 中,[] 优先级高于 *,先进行数组访问再进行解引用 若 * 优先于 [],会导致先解引用后取下标,这种顺序在多数情况下会造成逻辑混乱 正确的运算符优先级设计确保了表达式执行的合理性和可预测性

2026-02-10 23:13:21 21

原创 操作系统调度、浏览器历史——使用线性表实现

摘要:操作系统进程调度常用链表实现队列(如就绪队列),因其高效处理动态进程的插入/删除(O(1)),而数组更适合固定进程的简单系统。浏览器历史记录多采用动态数组(如vector)实现双栈结构,兼顾随机访问效率和内存连续性,尽管链表更灵活但缓存性能较差。两种场景分别体现了链表(动态操作优势)和数组(访问效率优势)在不同应用中的最优选择。(149字)

2026-02-10 19:17:26 396

原创 线性表(顺序存储线性表、链式存储表)除first和last元素,每元素都有且仅有一个前驱和一个后继

线性表是一种基本的数据结构,其元素间呈一对一的线性关系(除首尾元素外,每个元素有唯一前驱和后继)。它是抽象的逻辑结构,与具体存储方式无关。非线性结构如树(一对多)和图(多对多)则具有更复杂的关联关系。相关术语中,predecessor指前驱/前任,successor指后继/继任者,通过前缀pre-(之前)和success-(接续)可帮助记忆。线性表作为基础概念,与数组、链表等实现方式相区别。

2026-02-10 18:01:39 26

原创 自我效能理论、自我赋权

摘要:自我效能理论由班杜拉提出,强调个体对自身能力的信念如何影响行为动机和表现。该理论指出自我效能感来源于成功经验、替代经验、言语说服及情绪状态,并影响行为选择、努力程度和情绪调节。其广泛应用于教育、职业、健康等领域,通过培养特定信念提升个人潜力。自我赋权的实践方法包括设定清晰目标、自我反思、技能学习、建立支持网络、身心管理及面对挑战等步骤,旨在增强自信与掌控感。这些方法需持续实践,逐步提升自我效能感。

2026-02-09 18:35:31 663

原创 ELF文件节结构和其他os下的可执行文件、目标文件、共享库、核心转储的文件格式

ELF文件(可执行与可链接格式)是Unix-like系统中的标准二进制文件格式,用于可执行文件、目标文件、共享库等。其结构包含ELF Header(文件元信息)、Program Header Table(运行时加载段)、Sections(功能区域)和Section Header Table(节属性描述)。ELF文件提供链接视图(关注节)和执行视图(关注段)。常见节包括.text(代码)、.data(初始化数据)、.bss(未初始化数据)、.symtab(符号表)等,各具特定类型和标志。程序头部表则管理内存加

2026-01-21 20:00:03 1031

原创 链接错误(collect2: ld 返回1):原型与定义不符(undefined reference)

检查 poly.c 是否有 poly_show 的定义。如果没有,添加或链接包含定义的文件。确保声明和定义完全匹配(参数、返回类型、名称)。用nm会显示未定义符号 (U poly_show)。如果是多文件,修改 Makefile 添加所有 .o 文件。编译时加开启警告,早发现不匹配。这个推断完全基于错误消息的结构和C构建过程。如果有视频完整代码或更多上下文,能更精确确认"原型不符"的具体点。这不是简单的"函数没写",而更可能是函数声明和实现的接口不一致。

2026-01-16 17:22:14 209

原创 创建链表注意项(三):使用内存池减少malloc开销(用标志位或空闲链表)

摘要:C语言中一次性预分配多个链表节点(如malloc(sizeof(node)*n))虽能减少内存碎片,但释放时存在严重限制。关键点在于free()只能释放整个malloc块,不能单独释放其中部分节点,否则会导致未定义行为。正确做法包括:1)整体释放整个内存块;2)使用内存池管理节点状态(通过标记位);3)混合策略(区分池内/独立分配节点)。必须注意free()参数必须是malloc直接返回的指针,而非内存块内部地址。(149字)

2026-01-16 16:19:16 352

原创 创建链表注意项(二):malloc函数的使用/替代;errno;内存释放

free。

2026-01-14 17:30:55 320

原创 C语言malloc函数的errno(错误返回值)

摘要:标准C规定malloc失败时返回NULL且不设置errno,但POSIX和Windows通常会设置errno为ENOMEM。最佳实践是以返回值为准判断失败,在POSIX/Windows环境下可附带读取errno记录日志。相关函数如calloc/realloc行为类似,posix_memalign则直接返回错误码而非设置errno。仅当需要区分内存耗尽或其他错误时,errno才有参考价值,但不可单独依赖。不同平台(Linux/Windows等)的具体实现可能有所差异。

2026-01-14 16:28:54 429

原创 创建链表注意项(一):创建和插入节点的函数最好返回成功创建节点的个数

该代码实现了链表的两种创建方式:尾插法和头插法,并返回成功创建的节点数。主要功能包括:1)创建新节点并处理内存分配失败情况;2)尾插法顺序创建链表;3)头插法逆序创建链表;4)打印和释放链表。代码具有完善的错误处理机制,在内存分配失败时会自动释放已创建节点,并返回成功创建的节点数。示例演示了两种创建方法的使用,并展示了链表的打印和内存释放过程。整个实现结构清晰,包含必要的辅助函数,便于调试和维护。

2026-01-14 13:42:39 120

原创 消息队列Message Queue(MQ),队列链表(queue),消费者,生产者

消息队列(MQ)是队列数据结构在分布式系统中的工程化实现,核心仍保持FIFO特性,但增加了更多实用功能。与数据结构中的队列相比,MQ支持持久化存储、分布式部署、多消费者模式及可靠性机制(如ACK确认、重试等)。典型实现包括RabbitMQ、Kafka等,它们通过生产者-消费者模型实现系统间异步通信,生产者发送消息到队列,消费者按顺序处理。MQ不仅具备队列的基本特性,还扩展了路由、延迟队列等功能,成为现代分布式系统的重要基础设施。

2026-01-14 12:02:14 706

原创 int (*a)[3]和int (*b)[4]的核心区别:步长不同

本文包含两部分内容:1) C语言中指针数组的正确声明方式,强调int (*a)[3]与int *a[3]的区别,指出前者是指向3个int元素数组的指针,步长为3*sizeof(int);后者是包含3个int指针的数组。2) 介绍国家气象中心(NMC)及其域名nmc.cn,包含单词"meteorological"(气象的)的音标和例句。两部分内容无直接关联,分别涉及编程语法和气象术语。

2026-01-13 21:52:08 378

原创 老代码(例如链表)复用:编译为libxxx.a库文件

本文介绍了C语言项目中代码复用的标准做法,包括将常用数据结构封装成独立库文件的方法。重点讲解了如何通过Makefile将.o文件打包成静态库(.a),以及ar rcs命令的具体用法和参数含义。同时解释了Makefile中的自动化变量$@、$^和$<的作用,这些变量分别代表目标文件、所有依赖文件和第一个依赖文件。文章还提供了静态库命名规范建议和实际使用示例,说明了这种标准化做法既便于项目扩展,又能提高代码复用性,特别适合嵌入式或小型项目开发。

2026-01-13 16:33:26 137

原创 C语言里面的中断程序:“exit()”和“return返回”

摘要:《C Primer Plus》示例代码films3.c中,初始化阶段使用exit(EXIT_FAILURE)处理内存分配失败这类致命错误,以立即终止程序;而main函数末尾用return 0表示正常结束。exit()会强制终止整个程序,适合处理不可恢复错误;return则从当前函数返回,在main中使用时效果与exit()相似但语义更清晰。两者都会执行清理操作,但exit()可在程序任何位置调用实现全局终止,体现了防御性编程思想。

2026-01-08 17:10:54 351

原创 C语言数组初始化

摘要:本文总结了C语言数组声明的常见错误和正确用法。主要错误包括:1) 数组大小必须为正整数,不能为0;2) 二维数组声明时必须指定第二维大小。正确用法包括:1) 使用初始化列表让编译器推断数组大小;2) 函数参数中数组声明等价于指针;3) 二维数组初始化时编译器可推断第一维大小。重点强调了数组声明时编译器需要足够信息来确定内存分配。

2026-01-07 17:31:12 210

原创 经典数据结构练习题:链表实现2个多项式的合并

经典数据结构教材如严蔚敏《数据结构》、《算法导论》等都将链表实现多项式运算作为标配例题。该练习的经典性体现在:多项式天然稀疏,链表能高效存储非零项;加法操作完美展示有序链表合并过程,需处理同次项系数相加和零系数节点删除;难度适中,全面考察链表基本操作和边界处理。这道题常见于大学课程实验、考研真题和编程面试,是数据结构学习的经典范例。

2026-01-07 14:22:48 714

原创 关闭VS Code中的GitHub Copilot部分功能,降低远程开发机服务器的CPU内存使用率

如果你想完全关闭自动建议,可以试着禁用 “All files” 或使用命令面板搜索 “Copilot toggle” 来切换。启用后,Copilot 会考虑整个项目中的所有文件来生成更广泛、更上下文相关的代码补全建议(包括跨文件的影响)。禁用它可以限制建议范围,减少干扰(有些用户通过禁用这个来关闭自动 ghost text 建议,只用手动触发)。截图中用蓝色方块标记,可能表示当前文件是 C 语言(或刚好是当前模式),这是 Copilot 的高级功能(简称 NES),它不只补全当前光标处的代码,

2025-12-28 13:53:34 863

原创 本地下载vscode server安装包(tar.gz)然后上传至服务器开发机

本文介绍了在无网络环境下安装VS Code Server的离线方法。步骤包括:1)从日志获取Commit ID;2)在有网机器下载对应版本的server文件(约70MB);3)通过scp传输到目标机器;4)创建指定目录并解压文件(注意新版和老版的路径差异);5)重新连接VS Code Remote-SSH验证安装。还提供了解决常见问题的建议,如删除旧目录、使用镜像源加速下载等。该方法可绕过VS Code自动下载服务器的步骤,适用于网络受限环境。

2025-12-28 13:38:12 734

原创 C语言函数的双循环里面的return语句会直接退出双循环并返回

return语句会直接终止整个函数执行,而不仅仅是退出当前循环。示例代码演示了在二维数组中查找目标值时,一旦找到就立即通过return返回结果,后续循环不再执行。这与break仅退出单层循环不同。若只需退出多重循环而不终止函数,需使用标志变量或goto语句。该机制可有效提高程序执行效率,避免不必要的循环操作。

2025-12-28 13:14:13 206

原创 程序崩溃free(): double free detected in tcache 2

文章摘要: 通过分析core文件的内存片段,可以追踪程序崩溃前的执行路径。尽管没有使用-g编译选项,但仍可通过以下方法定位问题: 利用strings命令提取core文件中的字符串信息,搜索关键函数名(如list_destroy)和相关日志; 根据程序输出缓冲区的残留日志顺序推断崩溃点; 从printf格式化字符串中推断数据结构内容。 分析发现程序在list_destroy函数执行过程中发生了double free错误。这是由于GLIBC内存管理器检测到重复释放内存所致。核心文件中同时保留了.rodata段和

2025-12-23 18:03:03 329

原创 gcc/g++ err: 警告: 数据定义时没有类型或存储类/data definition has no type or storage class

摘要:GCC编译C代码时出现"数据定义无类型或存储类"警告,通常由隐式int规则(C99已禁止)或全局变量初始化错误导致。解决方法包括显式声明函数返回值类型和使用严格编译选项。另一常见错误是"double free detected in tcache 2",表明程序多次释放同一内存块,可能因指针操作错误或链表销毁逻辑不当引起。建议使用Valgrind、AddressSanitizer等工具调试,并在free后置空指针。这些错误提示均反映代码中存在需要修复的内存管理问

2025-12-22 20:06:08 373

原创 安卓里运行Linux

摘要:三款安卓运行Linux的实用工具推荐:UserLAnd适合新手一键安装Ubuntu等系统;Andronix提供优化版系统,部分付费功能;AnLinux完全开源免费。均支持命令行和VNC图形桌面(XFCE/LXDE),利用PRoot技术无需root,适合开发、服务器模拟等用途,简单易用。(149字)

2025-12-22 18:01:55 332

原创 c/c++指针回填(Pointer Backpatching)

指针回填是编程中预留指针位置后续填充的技术,主要用于编译器跳转地址处理、数据结构构建(如链表/图节点连接)和动态链接场景。其核心是先创建指针占位,待目标地址确定后再回填,适用于无法一次性确定所有指针指向的情况。

2025-12-15 16:46:20 248

原创 “链表按索引插入”在业界用的多吗?

摘要:高性能C编程中,链表通常用于O(1)的头尾插入操作,而非按索引插入(O(N))。Linux内核链表不存储长度,通过节点指针操作;Redis链表虽存储长度但主要使用头尾插入API。工程建议:定义包含长度的链表结构体以便快速判断越界和获取长度,而简单练习中可通过遍历判断边界。多数开源项目避免提供按索引插入的API,强调选择合适数据结构的重要性。

2025-12-15 14:45:58 165

原创 ps aux|grep pid 和 ps -p pid 的区别

Linux 命令 ps -p 和 ps aux | grep 都能查看进程信息,但存在关键区别。ps -p 直接通过 PID 精确查找进程,输出简洁高效;而 ps aux | grep 会扫描所有进程并通过文本匹配,可能产生误匹配且效率较低。前者适合已知 PID 时快速查询,后者用于模糊搜索进程名。推荐优先使用 ps -p 进行精确查询。

2025-12-14 17:22:39 892

原创 bash “ if <command>; then”语句,<command>返回0,then后面语句才执行

本文介绍了Bash中if语句的条件判断机制和命令退出状态码的使用。主要内容包括:1) if <command>; then语句中,命令返回0表示成功/真,非0表示失败/假;2) 通过$?变量可查看上一条命令的退出状态码;3) 提供了多个示例说明不同命令的返回状态,如ls、grep等命令在不同情况下的返回码。文章强调Bash遵循0表示成功、非0表示失败的标准,这与许多编程语言的约定一致。

2025-12-14 14:32:19 221

原创 在一台电脑上生成多个ssh公钥并添加到不同GitHub账号

本文介绍了在同一台电脑上管理多个GitHub账号仓库的方法。核心步骤包括:1)为每个账号生成独立的SSH密钥对;2)将公钥分别添加到对应GitHub账号;3)配置~/.ssh/config文件,通过不同Host别名自动切换密钥;4)克隆仓库时,个人账号使用默认配置,工作账号使用指定别名。此外还提供了临时访问特定仓库的命令参数。这种方法通过SSH配置实现了账号隔离,无需频繁切换全局设置。

2025-12-14 13:49:07 275

原创 bash判断ssh -Tgit@GitHub是否成功,不要看 ssh 的退出码,而要看输出内容

摘要:GitHub的SSH认证成功与否不能依赖传统退出码判断,因为成功时ssh -T git@github.com会返回退出码1(因拒绝shell访问),同时输出"Hi username!..."的欢迎消息;失败则通常返回255并显示"Permission denied"。正确做法是优先检查输出内容是否包含成功认证提示,或在脚本中判断退出码是否为1(而非0)。这是GitHub的特殊设计导致的反常规情况。(149字)

2025-12-14 02:16:13 475

原创 git一键push的脚本

借着ai帮助写了以下脚本,希望能运行当前脚本后,直接完成add/commit/push 3条命令,适用于频繁需要git push的情形,如果写得有错误,请各位大佬指正,

2025-12-06 13:29:26 454

产生的core文件free(): double free detected in tcache 2

程序名称: ./headless_list +2 涉及的关键函数: list_insert(): 插入节点,包含 malloc 操作 。 +1 list_delete(): 删除节点,包含 free 操作 。 +1 list_find(): 查找节点 。 +1 崩溃发生点: 程序在打印出 "prepare into list_destory() ......" 之后崩溃 。 +1 直接诱因: 在执行 list_destroy() 函数期间,程序在释放链表节点时触发了 double free

2025-12-23

haproxy架构指南(中文翻译版).pdf

haproxy架构指南中文翻译版,版本V1.0时间2012-07-18版权GPL作者itnihao 邮箱 itnihao@qq.com本文档来自haproxy1.4.21官方文档的翻译,如有不妥之处,请邮件联系我,谢谢!注意:本文档1-3.1为此博客翻译http://blog.chinaunix.net/uid-10249062-id-348470.html 3.1章节以后为itnihao翻译本博客不定期维护更新此文档。

2018-02-26

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

TA关注的人

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