<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_46049113的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_46049113</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_46049113]]></copyright><item><title><![CDATA[Claude Code常用命令]]></title><link>https://blog.youkuaiyun.com/qq_46049113/article/details/156979888</link><guid>https://blog.youkuaiyun.com/qq_46049113/article/details/156979888</guid><author>qq_46049113</author><pubDate>Thu, 15 Jan 2026 16:45:58 +0800</pubDate><description><![CDATA[本文整理了Claude交互式对话中的常用命令和完整命令列表。常用命令包括/clear（清空对话）、/compact（压缩对话）、/model（切换模型）等核心功能，以及/export（导出对话）、/cost（费用监控）等实用工具。完整命令列表则涵盖了系统配置、账户管理、GitHub集成、安全审查等高级功能，如/login（登录）、/mcp（管理服务器）、/security-review（安全检查）等。这些命令帮助用户高效管理对话上下文、控制token消耗、扩展外部能力，并支持从移动应用到IDE的全面集成。]]></description><category></category></item><item><title><![CDATA[飞书开发平台发送消息方式和区别]]></title><link>https://blog.youkuaiyun.com/qq_46049113/article/details/156893261</link><guid>https://blog.youkuaiyun.com/qq_46049113/article/details/156893261</guid><author>qq_46049113</author><pubDate>Tue, 13 Jan 2026 11:07:41 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[python 创建虚拟环境到底在干啥？]]></title><link>https://blog.youkuaiyun.com/qq_46049113/article/details/156272705</link><guid>https://blog.youkuaiyun.com/qq_46049113/article/details/156272705</guid><author>qq_46049113</author><pubDate>Thu, 25 Dec 2025 15:54:20 +0800</pubDate><description><![CDATA[摘要：python3 -m venv venv命令用于创建Python虚拟环境，它会在当前目录生成一个包含独立Python解释器和包管理工具的venv文件夹。虚拟环境通过隔离依赖包和Python路径，确保项目间的独立性。主要功能包括：1）创建隔离的包安装目录；2）提供独立Python解释器；3）通过activate脚本切换环境。常用操作包括激活（source venv/bin/activate）、安装依赖包和导出配置（pip freeze）。这种机制有效解决了不同项目间的依赖冲突问题。]]></description><category></category></item><item><title><![CDATA[WSL 中的 Ubuntu 系统中使用 Docker]]></title><link>https://blog.youkuaiyun.com/qq_46049113/article/details/156001010</link><guid>https://blog.youkuaiyun.com/qq_46049113/article/details/156001010</guid><author>qq_46049113</author><pubDate>Wed, 17 Dec 2025 11:29:06 +0800</pubDate><description><![CDATA[本文介绍了在Ubuntu系统上安装Docker的两种方式：使用Ubuntu官方源或Docker官方源。主要步骤包括修改镜像源、安装docker.io软件包、启动服务以及用户组配置。重点对比了两种安装方式的区别：Ubuntu源中的docker.io版本较旧但更稳定，包含基础组件；而Docker官方源的docker-ce更新更快，提供更多新功能和插件支持。注意事项包括两种软件包不能共存，切换时需要先卸载原有版本，并建议备份数据。文章提供了两种安装方式的适用场景建议，帮助用户根据需求选择合适的安装方法。]]></description><category></category></item><item><title><![CDATA[sudo概念及设置其为免密码]]></title><link>https://blog.youkuaiyun.com/qq_46049113/article/details/155807304</link><guid>https://blog.youkuaiyun.com/qq_46049113/article/details/155807304</guid><author>qq_46049113</author><pubDate>Thu, 11 Dec 2025 10:42:37 +0800</pubDate><description><![CDATA[sudo 是用来“临时以更高权限（默认 root）执行某条命令”的工具。它让你在保持普通账号登录的同时，按需提升权限做管理员操作，并把权限控制、审计和安全都做得更细致。]]></description><category></category></item><item><title><![CDATA[WPF 、WebView2 、WebView2 、CoreWebView2 、HostObject 是什么？它们之间有什么关系？]]></title><link>https://blog.youkuaiyun.com/qq_46049113/article/details/154744099</link><guid>https://blog.youkuaiyun.com/qq_46049113/article/details/154744099</guid><author>qq_46049113</author><pubDate>Wed, 12 Nov 2025 17:15:37 +0800</pubDate><description><![CDATA[本文介绍了WPF中WebView2控件及其相关组件的结构与关系。WPF窗口作为顶层容器，用于承载WebView2控件；WebView2作为UI层显示网页，需要通过EnsureCoreWebView2Async连接到CoreWebView2浏览器内核实例。CoreWebView2负责实际浏览器功能，包括导航、脚本执行等。通过HostObject可将.NET对象映射到JS环境。]]></description><category></category></item><item><title><![CDATA[【React】useMemo 和 useEffect 的用法]]></title><link>https://blog.youkuaiyun.com/qq_46049113/article/details/152897487</link><guid>https://blog.youkuaiyun.com/qq_46049113/article/details/152897487</guid><author>qq_46049113</author><pubDate>Fri, 10 Oct 2025 10:10:14 +0800</pubDate><description><![CDATA[React中useMemo和useEffect的核心区别在于执行时机和作用：useMemo在渲染过程中同步计算并缓存值，用于优化重计算或保持引用稳定；useEffect在渲染后异步执行副作用，如网络请求或DOM操作。useMemo返回计算结果，而useEffect不返回值但可返回清理函数。关键区别在于useMemo用于纯计算，避免额外渲染；useEffect用于与外部系统交互。合理选择：纯派生计算用useMemo，外部交互用useEffect。误用useEffect进行纯计算会导致不必要的重新渲染。]]></description><category></category></item><item><title><![CDATA[Ollama 的庐山真面目]]></title><link>https://blog.youkuaiyun.com/qq_46049113/article/details/145972746</link><guid>https://blog.youkuaiyun.com/qq_46049113/article/details/145972746</guid><author>qq_46049113</author><pubDate>Sun, 02 Mar 2025 23:32:33 +0800</pubDate><description><![CDATA[因此，Ollama 会对支持的模型格式和引擎版本进行同步管理，尽量保证每次下载的模型都能在当前 Ollama 使用的引擎上正常运行。，Ollama 会自动处理模型加载、推理等细节。当我们用 Ollama 指定某个模型时，底层的推理引擎会打开对应的模型权重文件（通常是经过特殊格式存储的大矩阵）、解析相关配置（如模型层数、隐藏单元维度、分词器词表等信息），为推理做好准备工作。因此，从安全和管理的角度来看，模型文件只是静态的数据资源，我们可以在不同机器间转移或备份这些大文件，而无需担心执行层面的代码混杂其中。]]></description><category></category></item><item><title><![CDATA[ananconda 和 pip傻傻分不清？？？]]></title><link>https://blog.youkuaiyun.com/qq_46049113/article/details/140138843</link><guid>https://blog.youkuaiyun.com/qq_46049113/article/details/140138843</guid><author>qq_46049113</author><pubDate>Tue, 02 Jul 2024 23:44:07 +0800</pubDate><description><![CDATA[Anaconda 和 pip 都是 Python 编程语言中用于管理包（libraries）和环境的工具，但它们在功能和设计理念上有所不同。]]></description><category></category></item><item><title><![CDATA[预编译符与环境变量]]></title><link>https://blog.youkuaiyun.com/qq_46049113/article/details/138959019</link><guid>https://blog.youkuaiyun.com/qq_46049113/article/details/138959019</guid><author>qq_46049113</author><pubDate>Tue, 21 May 2024 08:59:28 +0800</pubDate><description><![CDATA[设置预编译符号（DefineConstants）和使用环境变量（如 BUILD_ENV）都是配置和控制.NET应用行为的有效方法，但它们服务于不同的目的和场景。选择使用哪种方法取决于你的特定需求，包括你希望在什么阶段控制应用的行为，以及你的配置管理策略。]]></description><category></category></item><item><title><![CDATA[【C++】智能指针 std::shared_ptr 的创建方法]]></title><link>https://blog.youkuaiyun.com/qq_46049113/article/details/138712752</link><guid>https://blog.youkuaiyun.com/qq_46049113/article/details/138712752</guid><author>qq_46049113</author><pubDate>Mon, 20 May 2024 08:54:14 +0800</pubDate><description><![CDATA[两种创建方法：第一种：std::make_shared 创建；第二种：new 方法创建。
当使用 std::make_shared 创建一个 std::shared_ptr 时，C++ 的实现会在单个内存分配中同时为对象本身和与之相关的控制块（包括引用计数）分配内存。这种内存分配策略与直接使用 std::shared_ptr 的构造函数配合 new 操作符有显著的不同，后者通常涉及两个独立的内存分配：一个用于对象本身，另一个用于控制块。下面详细解释这两种方法的不同：
使用 std::make_shared
]]></description><category></category></item><item><title><![CDATA[【C++】const]]></title><link>https://blog.youkuaiyun.com/qq_46049113/article/details/138708706</link><guid>https://blog.youkuaiyun.com/qq_46049113/article/details/138708706</guid><author>qq_46049113</author><pubDate>Mon, 20 May 2024 08:20:02 +0800</pubDate><description><![CDATA[在 C++ 中，const关键字用于定义常量值，这意味着一旦一个变量被声明为const，它的值就不能被改变。const的用途多样，它可以用来修饰变量、指针、类的成员函数等，以增强程序的安全性和可读性。const。]]></description><category></category></item><item><title><![CDATA[【C++】初始化列表]]></title><link>https://blog.youkuaiyun.com/qq_46049113/article/details/138708987</link><guid>https://blog.youkuaiyun.com/qq_46049113/article/details/138708987</guid><author>qq_46049113</author><pubDate>Sun, 19 May 2024 22:20:48 +0800</pubDate><description><![CDATA[当创建一个类的实例时，类的构造函数会被调用来初始化该实例。构造函数可以通过其体（即大括号内的代码部分）或通过初始化列表来初始化成员变量。：使用初始化列表可以直接初始化成员变量，而不是先默认构造成员然后再赋值。：对于常量成员变量和引用成员，初始化列表是必需的，因为这些类型的成员一旦创建后就不能再被赋值。：如果一个类继承自基类，或者它包含其他类的对象作为成员，这些基类和成员对象只能通过初始化列表进行初始化。这种初始化方式确保了代码的效率和成员变量的正确设置，特别是在涉及复杂类型或类的资源管理时尤为重要。]]></description><category></category></item><item><title><![CDATA[【C++】智能指针 & 裸指针 & 悬挂指针]]></title><link>https://blog.youkuaiyun.com/qq_46049113/article/details/138708678</link><guid>https://blog.youkuaiyun.com/qq_46049113/article/details/138708678</guid><author>qq_46049113</author><pubDate>Sun, 19 May 2024 22:05:46 +0800</pubDate><description><![CDATA[是创建的一个有效且安全的方法，它通过优化内存使用和增强异常安全性，为现代 C++ 应用提供了重要的工具。使用不仅可以简化代码，还可以提高程序的性能和可靠性。]]></description><category></category></item><item><title><![CDATA[【C++】DLL 的加载方式]]></title><link>https://blog.youkuaiyun.com/qq_46049113/article/details/138854265</link><guid>https://blog.youkuaiyun.com/qq_46049113/article/details/138854265</guid><author>qq_46049113</author><pubDate>Wed, 15 May 2024 09:06:07 +0800</pubDate><description><![CDATA[DLL 的使用提供了模块化和资源共享的强大能力，使得软件开发更加灵活和内存效率更高。通过隐式或显式链接，开发者可以选择最适合他们需求的加载方式，利用操作系统的能力来优化应用程序的性能和资源使用。同时，共享代码和资源的能力意味着应用程序可以在运行时共享和协调它们的行为，而不是冗余地加载相同的功能。隐式链接的优势在于简单和自动化，适用于依赖关系固定且稳定的场景。显式链接的优势在于灵活性和控制力，适用于需要运行时决策、减少初始化负担或处理可选功能的场景。]]></description><category></category></item><item><title><![CDATA[【C++】引用传递 & 常量引用]]></title><link>https://blog.youkuaiyun.com/qq_46049113/article/details/138706798</link><guid>https://blog.youkuaiyun.com/qq_46049113/article/details/138706798</guid><author>qq_46049113</author><pubDate>Sat, 11 May 2024 11:38:37 +0800</pubDate><description><![CDATA[通过使用引用传递，你可以高效地传递对象，同时允许函数修改传入的参数。通过使用常量引用，你可以保护传入的参数不被修改，同时避免复制对象的成本，这对于处理大型对象或复杂类实例尤其重要。这两种方法在 API 设计和性能优化中都非常重要。]]></description><category></category></item><item><title><![CDATA[【C++】内联函数]]></title><link>https://blog.youkuaiyun.com/qq_46049113/article/details/138704405</link><guid>https://blog.youkuaiyun.com/qq_46049113/article/details/138704405</guid><author>qq_46049113</author><pubDate>Sat, 11 May 2024 11:03:11 +0800</pubDate><description><![CDATA[下面是一个简单的示例，演示了如何在 C++ 中使用内联获取器和设置器。这种方式确保了数据的封装性和安全性，同时通过内联函数提供了快速的访问和更新能力。这在实现数据访问时既保持了效率，也保持了类的设计的整洁性和可维护性。通过这个例子，你可以看到内联函数如何减少运行时的开销，以及何时适合使用内联函数。内联函数的主要目的是减少函数调用的开销，特别是在函数体较小且频繁调用的情况下。在这种情况下，如果编译器决定内联这个函数，它将直接将 add(5, 3) 替换为 5 + 3，从而消除了函数调用的额外开销。]]></description><category></category></item><item><title><![CDATA[【C++】使用 virtual 和 = 0 来实现多态和抽象行为]]></title><link>https://blog.youkuaiyun.com/qq_46049113/article/details/138665505</link><guid>https://blog.youkuaiyun.com/qq_46049113/article/details/138665505</guid><author>qq_46049113</author><pubDate>Fri, 10 May 2024 14:48:29 +0800</pubDate><description><![CDATA[这个语法实质上是在告诉编译器和其他开发者，任何派生自该类的类都必须实现这个函数，否则它们也会成为抽象类，不能实例化对象。当基类声明一个函数为虚函数时，C++ 运行时使用一种称为虚函数表（vtable）的机制来动态决定应调用哪个类的函数。这使得程序在运行时能够根据对象的实际类型来选择正确的函数版本，而不是编译时绑定的类型。的目的是允许通过基类指针或引用调用派生类的函数，这是多态的基础——即同一个函数调用可以表现出多种不同的行为。的函数将无法编译，迫使开发者检查并更新派生类以匹配新的基类接口。]]></description><category></category></item><item><title><![CDATA[【C++】防止头文件被重复包含]]></title><link>https://blog.youkuaiyun.com/qq_46049113/article/details/138607081</link><guid>https://blog.youkuaiyun.com/qq_46049113/article/details/138607081</guid><author>qq_46049113</author><pubDate>Thu, 09 May 2024 13:52:16 +0800</pubDate><description><![CDATA[一旦头文件被包含，编译器会记住这个头文件，确保不会再次包含它，即使在复杂的包含和项目结构中也能有效工作。有时在非常大和复杂的项目中，开发者需要清楚哪些宏已经被定义过，以避免宏名称冲突。没有被定义过，这条指令就会定义它。这样做的目的是在文件的其余部分之前标记这个文件已经被包含，防止将来的重复包含。这样的头文件保护结构可以防止因头文件重复包含而导致的定义冲突或编译错误，是C++项目中常用的一个编程规范。因其简洁性和避免宏命名冲突的优点而越来越受到青睐，但在跨多个编译器或需要确保最大兼容性的环境中，传统的。]]></description><category></category></item><item><title><![CDATA[Cmake中 makefiles 的作用]]></title><link>https://blog.youkuaiyun.com/qq_46049113/article/details/138579463</link><guid>https://blog.youkuaiyun.com/qq_46049113/article/details/138579463</guid><author>qq_46049113</author><pubDate>Wed, 08 May 2024 17:53:44 +0800</pubDate><description><![CDATA[Makefiles 定义了如何编译和链接程序，包括编译指令、源文件、目标文件、依赖关系和最终的可执行文件。Makefiles 是由 make 工具使用的，make 是一个构建自动化工具，用来控制和自动化编译过程。当你在命令行中输入 make 并按回车时，make 程序会查找名为 “Makefile” 的文件，并尝试执行它定义的第一个目标（在这个例子中是 program）。make 会检查所有的依赖项（如 .o 文件和 .cpp 文件），只重新编译那些自上次编译后已经被修改的文件，这样可以节省时间。]]></description><category></category></item></channel></rss>