自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 C++:#ifndef 头文件保护机制详解

使用#ifndef和#define是防止头文件重复包含的标准做法,保证代码。

2025-03-06 19:54:22 150

原创 Lua C API :使用 lua_tonumber 函数从 Lua 栈中提取数值

是一个强大的工具,能够方便地从 Lua 栈中提取并转换数值。在 C++ 与 Lua 交互时,确保使用正确的索引来提取栈中的数值。掌握这一函数,将帮助你在处理 Lua 脚本时更有效地管理数据和实现功能。

2025-02-21 17:30:09 595

原创 Lua C API:深入理解 lua_pushnumber 函数 — 将数字压入 Lua 栈中

是一个 Lua C API 函数,它的主要作用是将一个数字压入到 Lua 栈的顶部。这使得我们能够在 C++ 中计算或生成的数值传递到 Lua 环境中进行处理。Lua 使用lua_Number作为其数值类型,它通常是double类型,具体取决于平台和 Lua 配置。L:Lua 状态机的指针,表示当前的 Lua 环境。n:需要压入 Lua 栈的数字,类型为lua_Number,通常为double或float。

2025-02-21 17:21:41 527

原创 Lua C API :lua_insert 函数详解

lua_insert是 Lua C API 提供的一个栈操作函数,它将栈顶的元素插入到指定位置,并将该位置后的所有元素向上移动一个位置。lua_insert是一个非常实用的栈操作函数,它允许开发者将栈顶元素插入到指定位置,并调整其他元素的位置。该函数常用于动态改变栈中数据的顺序,帮助处理复杂的栈数据操作。

2025-02-21 15:13:32 482

原创 在C++中嵌入Lua脚本引擎:解析代码实现

Lua是一种轻量级的脚本语言,它被广泛应用于游戏开发、嵌入式系统以及许多需要扩展功能的应用程序中。由于Lua的内存占用小、执行效率高且易于嵌入,许多开发者选择将Lua作为C++应用的嵌入式脚本引擎。在本篇文章中,我们将详细分析一段C++代码,展示如何将Lua脚本嵌入到C++程序中,实现C++和Lua之间的交互。该代码通过调用Lua的C API,加载并执行Lua脚本文件。通过这段代码,我们可以看到C++与Lua之间的集成非常简便。

2025-02-21 09:39:51 700

原创 C++:使用 SFML 创建强化学习迷宫场景

通过使用 SFML 创建一个简单的迷宫环境,我们可以为强化学习提供一个可视化的平台。迷宫作为一个经典的强化学习环境,不仅可以帮助我们测试各种学习算法,还可以进一步优化智能体的路径规划能力。通过不断的学习和调整,智能体能够在迷宫中找到最短路径,实现从起点到终点的最优决策。这个迷宫场景不仅能够用于强化学习的训练,还可以作为其它人工智能任务的基础环境,帮助研究人员探索不同的智能体行为和算法表现。希望本文的示例代码能够为你提供一个很好的开始,祝你在强化学习的研究中取得成功!

2025-02-20 22:46:33 1149

原创 深入理解 lua_KFunction 和 lua_CFunction

和是 Lua C API 中两个非常重要的概念,分别用于在 Lua 环境中注册 C 函数和处理协程的暂停与恢复。通过这两个函数,开发者能够扩展 Lua 的功能,控制 Lua 的执行流程,甚至实现异步编程模型。理解它们的工作原理和使用方法,能帮助开发者更加灵活地与 Lua 脚本进行交互,实现高效的应用开发。

2025-02-19 22:56:44 1342

原创 Python本地运行DeepSeek-R1-Distill-Qwen-1.5B模型

这篇博客中,我将介绍如何使用 HuggingFace 的。

2025-02-18 22:16:47 605

原创 C++ 0基础入门教程

C++ 是一种由 Bjarne Stroustrup 在 1979 年开发的编程语言。它基于 C 语言,并加入了面向对象编程(OOP)特性。强大的性能支持面向对象、泛型、低级内存操作等被广泛用于游戏开发、系统软件和高性能计算中C++ 是一门功能强大且灵活的编程语言。通过本文的介绍,你已经学会了 C++ 的基本语法,包括变量、函数、条件判断、循环、数组、类等内容。这些知识将帮助你开始编写 C++ 程序,并逐步深入学习更高级的特性。

2025-02-17 23:57:40 244

原创 使用 Python 爬虫库抓取网页内容:请求与解析

requests是一个 Python HTTP 库,用于发送 HTTP 请求并接收响应。它提供了一个简单易用的 API,使得与网站交互变得非常方便。使用可以轻松地发起 GET 请求,获取网页内容。是一个用于解析 HTML 和 XML 文档的 Python 库。它通过层级结构来解析网页,使得抓取网页数据变得更加简洁明了。提供了许多方法来导航和搜索网页内容。其核心功能包括文档遍历、搜索元素、提取数据等。本教程展示了如何使用requests库进行网页请求,结合解析 HTML 内容。这是进行网页数据抓取的基础步骤。

2025-02-17 16:12:25 1096

原创 深入理解爬虫开发:使用 Python 实现网页数据抓取

网页爬虫(Web Crawler),也被称为网络蜘蛛或网络机器人,是一种通过编程自动抓取互联网上的网页信息的工具。爬虫广泛应用于搜索引擎、数据分析、内容推荐等多个场景。它的核心任务是访问网页、解析网页内容并存储有价值的数据。这篇文章详细介绍了如何使用 Python 编写一个简单且专业的爬虫。通过requests获取网页内容,利用解析 HTML,最后将数据保存到 CSV 文件中。我们还通过加入请求头、随机延迟等技术手段,确保爬虫不会过于频繁地访问目标网站,从而避免被封禁。

2025-02-17 15:06:44 1539

原创 C++ 写一个“恶搞”软件:后台写入磁盘、开机自启动并隐藏窗口

磁盘密集型任务:使用多个线程向磁盘写入数据(模拟负载)。自动添加到系统启动项:让程序在每次计算机启动时自动执行。隐藏窗口:让程序在启动时隐藏主窗口,以便不被用户察觉。通过这个项目,我们使用 C++ 实现了一个简单的“恶搞”程序框架,模拟了磁盘密集型操作、开机自启动以及隐藏窗口的功能。该程序为开发者提供了一个可以扩展和修改的基础框架,可以根据自己的需求进行调整。记住,编写和使用这类程序时,一定要遵循道德和法律规范,避免用来进行恶意操作。

2025-02-16 21:45:35 680

原创 Python:使用 Torch 构建一个五子棋游戏的 AI 玩家

在这篇博客中,我们将展示如何使用 PyGame 来构建一个简单的五子棋(Gomoku)游戏,并为 AI(白棋)实现基本的决策能力。这个 AI 玩家使用了 PyTorch 构建的神经网络模型来预测最优的下棋位置。注意:这里的代码只是一个示范,具体的 AI 性能和训练效果还需要根据实际数据进行优化和改进。首先,我们需要初始化一个简单的五子棋游戏,包括棋盘、玩家、以及棋盘状态的管理。棋盘大小默认为 15x15 格子。每个格子可以为空(0),也可以是黑棋(1)或白棋(2)。2. 神经网络模型接下来,我们使

2025-02-16 16:08:52 1012

原创 使用 PyTorch 实现标准卷积神经网络(CNN)

卷积神经网络(CNN)是一种专门用于处理图像数据的深度学习模型,它通过卷积层提取图像的特征。CNN 由多个层次组成,其中包括卷积层(Conv2d)、池化层(MaxPool2d)、全连接层(Linear)、激活函数(ReLU)等。这些层级合作,使得模型能够从原始图像中自动学习到重要特征。在这篇文章中,我们实现了一个标准的卷积神经网络(CNN),并使用 PyTorch 对其进行了定义和训练。通过使用卷积层、池化层和全连接层,模型能够自动学习图像的特征并进行分类。

2025-02-16 15:58:05 1056

原创 Transformer 模型的 PyTorch 实现

多头自注意力机制:通过多个注意力头同时对输入进行加权求和,学习到输入中的不同特征。前馈神经网络:每个层都包含一个简单的前馈神经网络,用于对输入进行非线性变换。位置编码:由于 Transformer 不使用卷积或循环结构,它需要通过位置编码来保留序列中单词的位置信息。

2025-02-16 15:56:22 410

原创 使用PyTorch定义并导出一个简单的单层感知机模型为ONNX格式

我们定义一个继承自nn.Module的类,SimpleMLPclass SimpleMLP(nn.Module): # 创建SimpleMLP类并继承nn.Module# def: 定义一个函数# __init__: 初始化函数(构造函数)# self: 实例本身,指向当前对象# input_size=28*28: 输入大小,默认值为28*28# output_size=10: 输出大小,默认值为10# super: 调用父类的方法。

2025-02-16 05:00:00 272

原创 Python:实现 PyTorch 中训练自定义卷积神经网络模型(CNN)并导出模型为 ONNX 格式,同时使用 ONNX Runtime 进行推理

数据标准化sample = sample.view(1, 28, 28) # 转换为28x28图像格式在类中,__init__方法加载 CSV 文件并进行数据标准化;方法将每个样本转换为一个28x28的图像格式。我们使用两个卷积层和两个全连接层来构建一个简单的 CNN。x = x.view(-1, 64 * 7 * 7) # 展平本文介绍了如何在 PyTorch 中训练一个 CNN 模型,并将其导出为 ONNX 格式。

2025-02-15 12:28:30 1017

原创 Python微调DeepSeek-R1-Distill-Qwen-1.5B模型:使用Transformers和PyTorch进行训练

微调deepseek1.5B模型

2025-02-14 18:50:29 3280 15

原创 C++实现Dijkstra算法简答

在计算机科学中,Dijkstra算法是一种广泛使用的图算法,最早由计算机科学家Edsger Dijkstra在1956年提出。它解决的是单源最短路径问题——即给定一个图和一个起点,如何计算从该起点到所有其他顶点的最短路径。Dijkstra算法被应用于各种实际场景,例如网络路由、GPS导航等领域。本文将详细解释Dijkstra算法的原理、实现步骤,并使用C++实现一个完整的Dijkstra算法。通过这篇文章,你将深入了解Dijkstra算法的工作机制,并掌握如何在C++中应用它来解决最短路径问题。

2025-02-14 14:55:56 269

原创 C++实现单层感知机训练与预测

感知机是最简单的一种神经网络模型,由Frank Rosenblatt在1958年提出。它是一种线性分类器,能够基于输入特征通过简单的线性决策边界来进行分类。在本篇博客中,我们将使用C++实现一个基础的单层感知机(Perceptron),并探讨其训练过程、预测机制以及学习算法的原理。通过这段代码的实现,你将了解感知机的基本结构、训练过程、以及如何应用它来进行简单的二分类问题解决。感知机由输入层和输出层构成。每个输入值都对应一个权重,感知机的目标是学习这些权重值,使得它能够根据输入做出正确的输出。

2025-02-14 14:53:58 378

原创 C++实现Windows开机自启动功能

在许多应用程序中,开机自启动是一个常见且实用的功能。通过将程序添加到系统的启动项中,用户可以确保程序在每次启动Windows时自动运行。本文将介绍如何使用C++实现这一功能,利用Windows注册表来使程序在启动时自动运行。通过使用Windows注册表,C++程序可以很容易地实现开机自启动功能。在本篇文章中,我们演示了如何使用C++代码向注册表添加一项记录,从而让程序在Windows启动时自动运行。虽然这个功能简单且实用,但在实际使用中应注意权限问题和注册表修改的潜在风险。希望这篇博客对你有所帮助!

2025-02-14 14:49:45 457

原创 C++递归2:(间接递归)

在程序设计中,递归是一种常见的技术,用于解决许多复杂的问题。在递归中,函数直接或间接地调用自身,逐步缩小问题的规模,直到达到基本情况。本文将介绍一个。

2025-02-14 03:15:00 242

原创 C++ 递归讲解(内容少,简单易懂)

递归的调用需要建立大量的函数的副本,由其是函数的参数,每一层递归调用时参数都是单独的占据内存空间,他们的地址是不同的。递归函数通过自我调用解决问题,示例中通过递归计算一个递增序列,展示了递归的基本原理和执行流程。递归函数分为调用和回退阶段,递归的回退顺序是它调用顺序的逆序。递归函数即自调用函数,在函数内部直接的或者间接地调用自己。以此类推,返回1,4,7,10..这样的递增序列。也就是说,每次递归时,都会将前一个结果加3。否则,返回 f(n - 1) + 3。当 n == 1 时,返回 1。

2025-02-14 03:00:00 131

原创 C语言:冒泡排序详解

冒泡排序是最简单的排序算法之一,广泛用于教学和学习排序的基本概念。它通过反复比较相邻的元素,并在每次比较时交换位置,将大的元素逐渐“冒泡”到数组的末尾。本文通过一个冒泡排序的示例,详细解释了算法的执行过程,并逐步展示了排序过程中每个元素的变化。本文示例代码i < n - 1;这段代码通过冒泡排序算法对数组进行排序,并打印出每次内外层循环的i和j值,帮助我们更清楚地理解排序过程中元素的交换过程。

2025-02-13 22:45:24 263

原创 Python实现本地部署DeepSeek-R1-Distill-Qwen-1.5B模型教程

在现代 NLP(自然语言处理)应用中,生成式预训练模型(如 GPT 系列)已经成为非常重要的工具。今天,我们将介绍如何使用 Hugging Face 的 库在本地加载 DeepSeek 模型,并通过用户输入生成响应。首先,确保你已经安装了以下依赖:本篇文章以 DeepSeek 的模型为例,展示如何使用该模型来处理用户的输入并生成文本响应。假设你已经下载了本地的 DeepSeek 模型文件(如 )。下面是完整的代码示例,它演示了如何加载模型并进行生成。 通过这个简单的例子,我们演示了如何使用

2025-02-13 13:29:00 818

原创 C++智能指针:深入理解std::shared_ptr的使用与管理(超详细)

主要面对小白,内容讲的特别细

2025-02-13 13:19:47 564

原创 C++ 智能指针:理解 std::shared_ptr 的引用计数与内存管理

共享同一块内存时,它们的引用计数会增加,并在没有指针再指向该内存时自动释放。被复制或赋值给另一个时,它们会共享对同一内存的所有权,并且引用计数会增加。时,引用计数会减少。直到最后一个指针离开作用域,引用计数为 0 时,对应的内存才会被释放。它通过引用计数的方式来自动管理内存,确保内存的正确释放。的引用计数机制,并通过代码示例来演示如何使用它来共享内存,确保内存的安全管理。通过引用计数的方式自动管理内存,避免了手动内存管理可能带来的错误。所管理的对象,引用计数增加到 2,因为现在有两个指针指向相同的内存。

2025-02-13 12:04:53 372

原创 C++智能指针:深入理解 std::shared_ptr 和引用计数

详解std::thread_ptr引用计数

2025-02-13 11:47:01 642

原创 C++ 中的 std::unique_ptr 使用详解

是 C++ 中管理动态内存的强大工具,能够有效避免内存泄漏和悬空指针等问题。通过创建、使用std::move转移所有权、以及自定义删除器来处理内存清理,unique_ptr提供了简洁且安全的内存管理方式。

2025-02-12 14:33:50 678

原创 在C++中实现高效多线程编程(1):线程创建基础

简单创建C++多线程

2025-02-12 10:24:46 291

空空如也

空空如也

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

TA关注的人

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