- 博客(123)
- 问答 (2)
- 收藏
- 关注
原创 Rust Box<T> 和引用(deepseek)
Box<T>和引用 (&T&mut T) 是 Rust 中两种不同的指针类型,它们在所有权、生命周期和用途上有显著区别。
2025-12-23 10:45:15
155
原创 Rust transmute(deepseek)
是 Rust 中最危险的操作之一,它允许你绕过 Rust 的类型系统和内存安全保证。让我详细解释它的用途、危险性和正确用法。 是一个极度不安全的函数,它可以将一个类型的值重新解释为另一个类型,不进行任何运行时检查。2. transmute 的危险性危险1:违反类型安全危险2:破坏生命周期危险3:大小不匹配导致 UB3. transmute 的正确使用场景场景1:FFI 调用场景2:底层类型操作场景3:实现 union(在 safe Rust 之前)4. transmute 的替
2025-12-23 10:29:08
136
原创 Rust Borrow 和 BorrowMut(deepseek)
Sized> {// 实现相等的 Hash// 实现相等的 PartialEq// 实现 Borrow<str> 以支持字符串查找&self.0// 使用示例// 可以用小写字符串查找assert!// 因为实现了 Borrow<str>
2025-12-23 10:24:40
367
原创 rust AsRef 和 AsMut(deepseek)
和 是 Rust 中用于廉价引用转换的两个重要 trait,它们用于处理需要“借用为某种类型的引用”的场景。作用提供一种廉价的、非消耗性的方式将类型转换为引用通常用于函数参数,接受多种类型的输入零成本抽象,编译器会优化掉使用示例自动实现Rust 为常见类型自动实现了 :作用提供可变引用的廉价转换用于需要修改内部数据的场景使用示例3. 常见模式和应用通用函数参数与泛型一起使用实现多个 AsRef4. 与 Deref 的区别关键区别:在 API 设计中优先
2025-12-23 10:18:54
136
原创 Rust 中的 `parse` 方法详解(deepseek)
parse方法是 Rust 中用于将字符串转换为其他类型的通用方法,主要通过FromStrtrait 实现。它是 Rust 标准库中非常强大且常用的功能。FromStr。
2025-12-23 10:08:26
73
原创 Rust Turbofish 语法详解(deepseek)
如果你在 Rust 代码中看到::<>,可能会觉得这个语法有点奇怪。它看起来像一条小鱼 🐟,因此被 Rust 社区亲切地称为 “turbofish”。这个语法不仅仅是 Rust 的一个特色,它背后体现了语言设计者对语法明确性的坚持。Turbofish 语法::<>是 Rust 中显式指定泛型类型参数的方式。它之所以得名,是因为::<>形状酷似一条鱼。// 使用 turbofish 明确指定 Vec 的元素类型// 等价于类型标注::<>
2025-12-23 10:06:52
238
原创 Rust 自动引用规则完全指南(deepseek)
场景示例说明方法调用 (&self)自动转为方法调用 (&mut self)自动转为函数参数 (&T)自动转为闭包捕获。
2025-12-23 09:39:01
210
原创 rust自动调用Deref(deepseek)
解引用强制多态是 Rust 在函数和方法的参数传递时自动执行的一系列解引用操作。当类型T实现了时,&T可以自动转换为&U。", name);hello(&m);// 自动发生:&MyBox<String> -> &String -> &str&self.0[1, 2, 3]);// 可以使用所有 Vec 的方法sv.push(4);println!("长度: {}", sv.len());println!("第一个: {}", sv[0]);
2025-12-22 16:51:16
375
原创 操作系统的时间脉搏:时钟、时钟源、定时器与时钟中断(Deepseek)
正是这套从硬件到软件、从连续计数到离散中断、从粗粒度到高精度的完整机制,确保了操作系统能够有条不紊地管理进程、调度任务、处理I/O,为用户和应用程序提供了一个稳定、可靠、精确的时间感知环境。时钟源是硬件设备,其核心是一个自由运行的计数器,通常以固定频率递增。想象操作系统如同一个庞大的交响乐团,需要精确的节拍器来协调所有乐手(硬件和软件)的步调。在CPU空闲时,内核会关闭周期性的时钟中断,转而设置一个到下一个最早到期定时器时刻的。这极大地提升了能效。:传统的周期性时钟中断在CPU空闲时也在空转,浪费功耗。
2025-12-11 09:54:33
822
原创 -L和-Wl,-rpath区别(deepseek问答)
特性-L-Wl,-rpath作用阶段编译时编译时设置,运行时生效影响范围直接依赖所有层次依赖持久性不持久嵌入可执行文件使用场景简单依赖复杂依赖链推荐用法与 -l 配合解决间接依赖问题核心结论-Wl,-rpath在编译阶段不仅设置了运行时路径,还影响了链接器对间接依赖库的查找过程,这是它与-L最本质的区别。在处理复杂库依赖时,建议同时使用两者以确保编译和运行时都能正确找到所需的库文件。
2025-11-27 10:08:27
262
原创 网讯网卡WX1860A4
网讯网卡支持RSS,但是获取的设备信息有问题:rx_offload_capa是显示没有RTE_ETH_RX_OFFLOAD_RSS_HASH标志位的。
2025-11-25 14:19:25
184
原创 volatile 关键字完全解析(deepseek)
volatile是一个被广泛误解的关键字。解决编译器优化问题,而不是多线程同步问题应对异步修改场景,而不是并发访问场景保证指令生成,而不是缓存一致性黄金法则:如果你在考虑用volatile解决多线程问题,99%的情况下你应该使用原子操作或互斥锁。volatile只在特定的底层编程场景中才是正确的选择。理解volatile的真正含义,避免误用,是成为高级C/C++程序员的重要一步。
2025-11-17 10:36:25
260
原创 用户态与内核态(deepseek问答)
想象一下,操作系统就像一个公司的管理层,拥有最高的权限,可以调配所有资源(CPU、内存、硬盘、网络等)。而普通应用程序就像公司的普通员工,权限有限。内核态 (Kernel Mode)也称为管态或特权模式。这是操作系统内核(Kernel)运行时所处的状态。在此状态下,代码具有对硬件和系统资源的完全、无限制的访问权限。可以执行任何CPU指令,访问任何内存地址。操作系统的核心功能,如进程管理、内存管理、设备驱动、中断处理等,都在内核态下运行。用户态 (User Mode)也称为目态。
2025-11-14 16:08:36
618
原创 VLAN数据包转发机制详解(deepseek问答)
操作Access端口Trunk端口接收帧(入向)接收无标签帧,打上PVID接收带标签帧,识别VLAN ID发送帧(出向)剥离标签,发送普通帧保留标签,发送带标签帧(默认)逻辑隔离:VLAN将一个物理网络划分成多个逻辑广播域。一个VLAN就是一个广播域。基于标签的转发:交换机内部处理数据帧时,是基于带VLAN标签的帧进行转发的。MAC地址表按VLAN隔离:交换机的MAC地址学习是基于VLAN的。一个VLAN有一个独立的MAC地址表。
2025-11-14 14:00:51
721
原创 eal-intr-thread 和 rte_mp_handle(deepseek问答)
负责处理硬件中断的线程。它在主核(Master Core)上运行。: 负责处理多进程间通信的线程。它也在主核(Master Core)上运行。因为它们都在主核上运行,所以它们会共享主核的CPU时间片。如果你的主核上还运行着繁忙的应用程序逻辑,可能会对中断响应和进程间通信的及时性产生影响。
2025-11-11 10:16:48
775
原创 C++mutable(deepseek问答)
mutable在 const 成员函数中修改内部缓存或状态线程同步原语lambda 表达式中的按值捕获变量修改正确使用mutable可以提高代码的灵活性和性能,但滥用会破坏 const 正确性,需要谨慎使用。
2025-10-31 09:54:39
385
原创 C++ 虚拟继承(deepseek问答)
/ 普通继承// 普通继承// 多继承D 对象包含两份A 的副本通过 D 访问 A 的成员会产生二义性。
2025-10-31 09:51:14
260
原创 linux文件模式(deepseek问答)
在Linux系统中,(File Mode)是文件权限系统的重要组成部分,它决定了谁可以对文件或目录进行读取、写入和执行操作。
2025-10-31 09:38:38
458
原创 linux会话与进程组的区别(deepseek问答)
包含关系会话 > 进程组 > 进程。一个会话包含一个或多个进程组。一个进程组包含一个或多个进程。管理目标不同进程组管理的是“作业”,是逻辑上相关的一组进程,用于作业控制。会话管理的是“登录环境”,它将所有进程组与一个控制终端绑定,用于管理终端和登录生命周期。与控制终端的交互只有会话才拥有控制终端。在会话内部,只有前台进程组的进程可以直接从终端读取输入,并接收由终端产生的信号(如 Ctrl+C 产生的SIGINT,Ctrl+Z 产生的SIGTSTP。
2025-10-31 09:36:49
770
原创 linux守护进程 概念与创建(deepseek问答)
Linux守护进程与普通进程的区别 守护进程是Linux系统中一种特殊的后台服务进程,与普通进程的主要区别在于: 控制终端:守护进程脱离控制终端,普通进程与启动终端关联 生命周期:守护进程随系统启动/关闭,普通进程随终端会话结束 进程关系:守护进程父进程为init(PID=1),普通进程父进程为Shell 运行环境:守护进程自成新会话组,工作目录为/,umask为0 输入输出:守护进程I/O重定向到/dev/null或日志文件 传统守护进程创建需经过fork、setsid、umask设置等多个步骤,而现代L
2025-10-31 09:33:46
602
原创 用户态RCU用法
读侧: 读取数据时不需要任何锁或原子操作,开销极小。写侧: 更新数据时,先创建一份数据的副本,在副本上修改。然后通过一个原子操作(如指针赋值)让新数据对读者可见。旧数据的回收会延迟到所有正在读它的读者都结束后才进行。URCU 在用户空间实现了这一机制。
2025-09-24 09:34:31
697
原创 suricata源码解读-事务日志
遍历前面添加到OutputPacketLogger *list的日志模块,调用日志模块对应的线程模块的线程初始化函数,对日志模块进行初始化。根据配置选择加载输出模块,调用SetupOutput将输出模块添加到OutputPacketLogger *list;遍历所有事务日志模块OutputTxLogger *list,找到事务协议对应的日志模块,调用日志输出函数输出日志。注册协议的事务日志模块,存储到output_modules。注册协议的日志线程初始化和销毁函数。
2025-09-15 09:56:42
182
原创 GSSAPI、SSPI 和 SASL
摘要: GSSAPI、SSPI和SASL是网络安全认证的核心组件。SASL作为框架,为应用协议提供认证机制的统一接口;GSSAPI是通用安全服务API,默认使用Kerberos实现认证和加密;SSPI则是GSSAPI在Windows中的实现,深度集成Active Directory。三者协同工作:应用通过SASL选择GSSAPI机制,Windows平台通过SSPI调用Kerberos完成认证,实现跨平台单点登录。这种分层设计将认证逻辑与底层技术解耦,为应用程序提供标准化的安全接入方案。(149字)
2025-09-10 09:56:16
342
原创 C++ 模板参数包展开方式
C++模板参数包展开是C++11引入的重要特性,允许处理可变数量模板参数。摘要总结了8种展开方式:基本展开、递归处理、逗号运算符、初始化列表、C++17折叠表达式、模板参数、完美转发及模式展开。每种方式均配有代码示例,展示了不同场景下的应用方法。文中还强调了参数包展开的注意事项:必须存在展开上下文、语法规则、编译时特性及C++17前的递归处理需求。这些展开方式极大增强了C++的泛型编程能力,使编写通用代码更加灵活高效。
2025-05-29 14:32:09
605
原创 C++17 折叠表达式
C++17折叠表达式简化了对参数包的操作,支持算术、逻辑、比较等运算符。它提供四种形式(一元/二元左/右折叠)处理参数包,如求和、打印、逻辑判断等场景。相比递归模板更简洁高效,但空参数包时需注意特殊运算符行为(&&返回true,||返回false)。典型应用包括求和计算、参数打印、成员函数调用等。该特性提升了代码可读性和性能,是处理可变参数模板的有力工具。
2025-05-29 14:23:16
206
原创 C++ 模板元编程语法大全
本文全面介绍了C++模板元编程的核心语法和技术要点,包括基础模板语法、模板特化、可变参数模板、SFINAE、类型萃取、编译期计算等关键概念。重点涵盖了类/函数模板定义、模板特化实现、可变参数展开方式、类型特征检查、编译期递归计算等模板元编程核心机制,并介绍了C++11/17/20引入的constexpr、if constexpr、折叠表达式、概念等现代特性。文章还列举了CRTP、表达式模板等高级应用模式,为开发者提供了一份系统的C++模板元编程语法参考大全。
2025-05-28 17:29:14
297
原创 C++模板语法大全
本文全面介绍C++模板语法,涵盖函数模板、类模板、模板特化、可变参数模板等核心概念,以及C++20新增的模板约束特性。内容包括基本语法、类型推导、模板元编程、SFINAE等技术,并展示了模板在继承、虚函数、Lambda表达式等场景的应用。文章详细列出20种模板语法形式,从基础实现到高级特性如完美转发、静态断言等,为开发者提供完整的C++模板编程参考指南。
2025-05-28 17:27:11
309
原创 C++14改动有哪些
C++14 是 C++11 的一个小版本更新,主要目标是改进和扩展 C++11 的功能,而不是引入大量新特性。C++14 的改动主要集中在以下几个方面:(2)返回类型推导C++14 允许函数的返回类型使用 ,编译器会根据 语句自动推导返回类型。(3)放宽 限制C++14 放宽了对 函数的限制,允许函数内部包含更多类型的语句(如局部变量、循环、条件语句等)。(4)二进制字面量C++14 引入了二进制字面量,使用前缀 或 表示。(5)数字分隔符C++14 允许在
2025-02-19 08:57:11
536
原创 C++11主要改动
C++11 的改动涵盖了核心语言、标准库和工具链的方方面面,使 C++ 更现代化、更高效、更安全。如果你对某个具体的改动或特性感兴趣,可以进一步探讨!
2025-02-10 09:16:25
722
原创 VMWARE linux LVM 扩容磁盘分区
这将使 /dev/sda2 占用所有新增的空间,现在sda2大小为99G了。磁盘sda大小已经是100G,sda2分区还是49G.
2025-01-13 19:18:42
456
原创 学习编程语言
有些语言采用基本数据类型的概念,有些语言采用标量类型的概念。这和编程语言的实现有关系。基本数据类型是编程语言实现层面的概念,标量是个数学概念。按值的性质分类:标量类型(单一、不可分割的值)和非标量类型可以分解的值)。按实现方式分类:基本类型(语言内置的简单类型)和复合类型(由基本类型组合而成)。
2024-12-13 11:35:04
286
原创 gvmd组件简介
gvmd没有使用redis,而是使用pg数据库。就是说,gvmd负责持久化的存储,ospd-openvas负责转发任务,而openvas负责执行扫描任务。gvmd会将扫描配置和扫描结果存储在pg数据库中。gvmd和ospd-openvas的通信是通过ospd unix socket服务, 内容格式是xml。gvmd接收GMP协议的扫描请求,构建xml,转发给ospd-openvas进行扫描。ospd-openvas和openvas的通信是通过redis和命令行。
2024-11-29 09:22:15
334
原创 linux线程资源回收
线程栈:线程的栈空间需要被回收。线程标识符:线程的唯一标识符需要被回收。线程局部存储:线程私有的存储区域需要被清理。线程私有数据:线程分配的动态内存需要被释放。线程资源句柄:线程持有的资源句柄需要被释放。通过调用,可以确保这些资源被正确回收,避免资源泄漏。对于分离的线程,资源会在线程终止时自动释放。
2024-11-28 10:59:16
789
1
原创 线程join和detach
默认状态创建的线程默认是可加入的(joinable)。设置分离状态:可以通过将线程设置为分离状态。回收资源:对于可加入的线程,必须调用来回收资源;对于分离的线程,资源会在线程终止时自动释放。
2024-11-28 10:57:06
330
原创 SIGHUP 信号
SIGHUP 信号主要用于处理终端会话的结束,并且常常被用来通知守护进程重新加载配置文件。在编写守护进程时,正确处理 SIGHUP 信号是非常重要的,这样可以保证守护进程能够在各种情况下稳定运行。
2024-09-10 09:16:47
762
原创 nohup与&
nohup用于忽略 SIGHUP 信号,并且自动重定向输出。用于将命令放入后台执行。结合使用nohup和可以确保你的命令在后台运行,并且即使在终端会话结束后仍能继续执行。
2024-09-10 09:13:11
531
原创 SQL server collation与字符集
排序规则和 Unicode 支持:https://learn.microsoft.com/zh-cn/sql/relational-databases/collations/collation-and-unicode-support?view=sql-server-ver15
2024-08-08 13:59:31
323
原创 C/C++开发必备技能
C/C++开发工程师必备的技能非常广泛,涵盖语言基础、算法和数据结构、系统编程、软件工程实践等多个方面。随着技术发展和市场需求的变化,C/C++开发人员还需要关注新的标准和技术趋势,不断更新自己的知识库,以适应行业的快速发展。
2024-03-26 11:49:45
2171
原创 windows10 编译ptlib
官方参考链接:http://wiki.opalvoip.org/index.php?n=Main.BuildingPTLib
2024-02-25 20:59:34
680
tauri2 windows build组件
2025-08-11
请教shell中@用法
2022-05-18
STL _Alloc初始化
2022-03-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅