- 博客(42)
- 收藏
- 关注
原创 深度学习之环境安装(PyTorch)
本文提供了2026年最新版PyTorch的安装指南,详细介绍了使用Anaconda创建深度学习环境(d2l)的步骤。重点讲解了如何检查CUDA版本并选择合适的PyTorch版本安装,强调不建议使用镜像源以避免安装CPU版本的问题。文章还包含安装d2l工具包的方法,并通过Python代码示例验证安装是否成功,包括检测GPU可用性、显存大小和CUDA版本等信息。整个安装过程从环境配置到最终验证都有完整说明,为深度学习初学者提供了清晰的安装指引。
2026-01-06 17:30:00
280
原创 深度学习框架:PyTorch与MXNet性能解析与实战对比
本文对比分析了PyTorch和MXNet两大深度学习框架的性能特点与应用场景。PyTorch以动态计算图和易用性著称,适合研究阶段的快速原型开发;MXNet凭借静态计算图和跨平台能力,在工业级推理任务中表现优异。通过环境搭建、模型构建和训练测试的实战对比,展示了二者在API设计、训练流程和性能表现上的差异。建议根据项目需求选择框架:PyTorch更适合科研探索,MXNet更适用于生产部署。文末推荐《动手学深度学习》作为入门教材。
2026-01-05 20:12:12
582
原创 一篇文章快速学会JavaScript
JavaScript快速入门指南 本文介绍了JavaScript的基础知识,适合有编程基础的学习者。主要内容包括: JS运行环境:在浏览器中运行,由渲染引擎和JS引擎组成 JS代码书写方式:行内式、内嵌式、外部式三种形式 核心语法: 变量类型:弱类型、动态类型 基本数据类型:number、boolean、string、undefined、null 运算符:包括==和===的区别 流程控制:条件语句和循环语句 数据结构: 数组创建和操作(增删元素) 函数定义和调用 作用域和作用域链规则 对象系统: 四种创建对
2025-06-26 15:40:08
887
原创 一篇文章快速学会HTML
本文简要介绍了HTML的基础知识,适合有编程基础的读者快速入门。主要内容包括:HTML基本结构:根标签<html>、头部<head>、标题<title>和主体<body>常用标签:标题标签<h1>-<h6>、段落<p>、换行<br>、格式化标签(加粗<strong>、倾斜<em>等)图片标签<img>的属性使用(src、alt、title等)超链接<a>和表格<table>的制作方法三种列表标签(无序<ul>、有序<ol>、自定义<dl>)表单<form>元素和<input>输入控件的使用文
2025-06-18 13:41:11
904
原创 一篇文章快速学会CSS
本文快速介绍了CSS基础知识,包括语法规范(选择器+样式声明)、三种引入方式(内部样式表、行内样式表、外部样式表)以及核心选择器类型(基础选择器如标签、类、ID选择器,复合选择器如后代选择和伪类选择)。还讲解了字体/背景属性、圆角矩形、元素显示模式(块级/行内元素)、盒模型(边框/内外边距)、弹性布局等实用功能,最后推荐使用谷歌调试工具进行CSS调试。内容涵盖CSS常用知识点,适合初学者快速入门。
2025-06-18 13:27:53
403
原创 《大数据分析理论与方法:关联分析》
本文基于电商用户行为数据,实现了Apriori与FP-Growth两种关联分析算法,并通过对比实验挖掘高置信度关联规则。研究核心创新点包括双算法对比、动态剪枝策略和规则质量评估。实验结果显示,当支持度为0.7时,FP-Growth算法效率比Apriori提升47%,且生成的规则提升度均大于1.3,验证了其在实际应用中的高效性和实用性。研究为电商场景下的商品推荐和货架布局优化提供了有效的数据支持。
2025-05-15 10:57:06
956
原创 算法专题一:双指针算法(下)
在做这道题前我们先讲一个数学知识:已知 a <= b <= c ,此时 a+b>c 可以得出 有效三角形。所以,我们做这道题时,可以不使用暴力算法。可以优化为先排序,再用双指针来解决这个问题。
2025-03-27 15:19:31
358
1
原创 算法专题一:双指针算法(上)
首先,开始我们的双指针算法.双指针算法的题型大部分都是和数组相关的题目,所以我们大部分都是用数组下标充当指针来解决我们的问题。接下来,我们就来借助几个题目来帮我们深入了解双指针算法吧!
2025-03-20 13:01:22
745
3
原创 简单代码实现视频转图片_py
博主最近在研究深度学习,需要收集数据集进行处理,但一张张拍照真是太麻烦了就想着,哎,能不能写一个程序,把视频转成图片不就行了?正好,博主知道Python中就有一个库可以做到哎。import cv2是的,就是咱们强大的cv2库了这是一个处理视频很好用的库,既然如此,我们就来看看我们需要的用法吧。
2024-09-13 20:20:44
2259
原创 类和对象(下)_cpp
1.再探构造函数1.再探构造函数•之前我们实现构造函数时,初始化成员变量主要使⽤函数体内赋值,构造函数初始化还有⼀种⽅式,就是初始化列表,初始化列表的使⽤⽅式是以⼀个冒号开始,接着是⼀个以逗号分隔的数据成员列表,每个"成员变量"后⾯跟⼀个放在括号中的初始值或表达式。•每个成员变量在初始化列表中只能出现⼀次,语法理解上初始化列表可以认为是每个成员变量定义初始化的地⽅。•引⽤成员变量,const成员变量,没有默认构造的类类型变量,必须放在初始化列表位置进⾏初始化,否则会编译报错。•。
2024-08-15 16:59:21
873
原创 类和对象(中)_cpp
1.类的默认成员函数1.类的默认成员函数默认成员函数就是⽤⼾没有显式实现,编译器会⾃动⽣成的成员函数称为默认成员函数。⼀个类,我 们不写的情况下编译器会默认⽣成以下6个默认成员函数,需要注意的是这6个中最重要的是前4个,最后两个取地址重载不重要,我们稍微了解⼀下即可。其次就是C++11以后还会增加两个默认成员函数,移动构造和移动赋值,这个我们后⾯再讲解。默认成员函数很重要,也⽐较复杂,我们要从两个方面去学习:•第⼀:我们不写时,编译器默认⽣成的函数⾏为是什么,是否满⾜我们的需求。•。
2024-08-15 16:17:38
1083
原创 类和对象(上)_cpp
1.类的定义1.类的定义1.1类定义格式•class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或者成员函数。•为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_ 或者 m开头,注意C++中这个并不是强制的,只是⼀些惯例,具体看公司的要求。•。
2024-07-11 12:21:43
740
原创 C++入门基础_cpp
1.C++发展历史C++的起源可以追溯到1979年,当时Bjarne Stroustrup(本贾尼·斯特劳斯特卢普,这个翻译的名字不同的地⽅可能有差异)在⻉尔实验室从事计算机科学和软件⼯程的研究⼯作。⾯对项⽬中复杂的软件开发任务,特别是模拟和操作系统的开发⼯作,他感受到了现有语⾔(如C语⾔)在表达能⼒、可维护性和可扩展性⽅⾯的不⾜。
2024-07-08 15:44:58
1187
原创 数据结构--单链表(基于单链表实现通讯录)
1.链表的概念及结构1.链表的概念及结构概念:链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表的结构跟⽕⻋⻋厢相似,淡季时⻋次的⻋厢会相应减少,旺季时⻋次的⻋厢会额外增加⼏节。只需要将⽕⻋⾥的某节⻋厢去掉/加上,不会影响其他⻋厢,每节⻋厢都是独⽴存在的。⻋厢是独⽴存在的,且每节⻋厢都有⻋⻔。想象⼀下这样的场景,假设每节⻋厢的⻋⻔都是锁上的状态,需要不同的钥匙才能解锁,每次只能携带⼀把钥匙的情况下如何从⻋头⾛到⻋尾?
2024-05-26 14:34:01
1127
原创 数据结构——顺序表(用顺序表实现通讯录)
1.顺序表概念及结构1.顺序表概念及结构1.1 线性表线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是⼀种在实际中⼴泛使⽤的数据结构,常⻅的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的⼀条直线。但是在物理结构上并不⼀定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。1.2顺序表分类•顺序表和数组的区别◦顺序表的底层结构是数组,对数组的封装,实现了常⽤的增删改查等接⼝。•顺序表分类◦静态顺序表。
2024-05-26 13:56:55
635
原创 使用Python实现二维码生成工具
二维码本质上,就是一段字符串。我们可以把任意的字符串,制作成一个二维码图片。生活中使用的二维码,更多的是一个 URL 网址。
2024-05-04 11:00:00
710
1
原创 Python中无法pip的解决办法和pip的介绍
PIP是通用的Python包管理工具,提供了对 Python 包的查找、下载、安装、卸载、更新等功能。安装诸如Pygame、Pymysql、requests、Django等Python包时,都要用到pip。注意:在Python3.4(一说是3.6)及更新的版本中,PIP已经捆绑安装了,不需要再单独安装(应该需要更新)。
2024-05-03 15:45:35
4510
原创 用Pyhton实现一个简单的文件搜索工具
每个人的电脑中都有许多的文件,想要快速查找到这些文件,就要使用到文件查找工具。比如非常好用的everything。现在我们就来用Pyhthon实现我们的文件查找工具。
2024-05-03 14:18:13
462
原创 0基础深入理解指针(4) 回调函数 qsort函数使用
时,被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅直接调⽤,⽽是在特定的事件或条件发⽣时由另外的⼀⽅调⽤的,⽤于对该事件或条件进⾏响应。如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数。此函数使用的排序算法通过调用指定的函数来比较元素对,并将指向它们的指针作为参数。大家可以看见我们这里使用了void*指针,可以在我的之前的帖子里看见。对数组的元素进行排序,每个元素的字节长度为 ,使用函数确定顺序。我们学了上面的知识,接下来,我们就玩一个难一点的。
2024-04-22 17:30:00
378
原创 动态内存管理
有时会我们发现过去申请的空间太⼩了,有时候我们⼜会觉得申请的空间过⼤了,那为了合理的适合内存,我们⼀定会对内存的⼤⼩做灵活的调整。当是情况2 的时候,原有空间之后没有⾜够多的空间时,扩展的⽅法是:在堆空间上另找⼀个合适⼤⼩的连续空间来使⽤。当是情况1 的时候,要扩展内存就直接原有内存之后直接追加空间,原来空间的数据不发⽣变化。但是对于空间的需求,不仅仅是上述的情况。这个函数调整原内存空间⼤⼩的基础上,还会将原来内存中的数据移动到 新 的空间。指向的空间不是动态开辟的,那free函数的⾏为是未定义的。
2024-04-22 17:30:00
778
原创 从0开始用C写贪吃蛇(基于链表)
1.游戏背景贪吃蛇是久负盛名的游戏,它也和俄罗斯⽅块,扫雷等游戏位列经典游戏的⾏列。2.游戏效果演示3.实现目标使⽤C语⾔在Windows环境的控制台中模拟实现经典⼩游戏贪吃蛇。4.技术要点C语⾔函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32 API等。5.控制台程序平常我们运⾏起来的⿊框程序其实就是控制台程序。5.1。
2024-04-21 19:52:34
3447
4
原创 0基础深入理解指针(3)
⾸先我们再次理解⼀下⼆维数组,⼆维数组起始可以看做是每个元素是⼀维数组的数组,也就是⼆维数组的每个元素是⼀个⼀维数组。所以,根据数组名是数组⾸元素的地址这个规则,⼆维数组的数组名表⽰的就是第⼀⾏的地址,是⼀维数组的地址。那就意味着⼆维数组传参本质上也是传递了地址,传递的是第⼀⾏这个⼀维数组的地址,那么形参也是可以写成指针形式的。那要把函数的地址存到⼀个数组中,那这个数组就叫函数指针数组,那函数指针的数组如何定义呢?那数组指针变量应该是:存放的应该是数组的地址,能够指向数组的指针变量。
2024-04-21 17:30:00
357
1
原创 0基础深入理解指针(2)
这个代码搞明⽩后,我们再试⼀下,如果我们再分析⼀下,数组名arr是数组⾸元素的地址,可以赋值给p,其实数组名arr和p在这⾥是等价的。那么在数组传参的时候,传递的是数组名,也就是说本质上数组传参本质上传递的是数组⾸元素的地址。同理arr[i] 应该等价于 *(arr+i),数组元素的访问在编译器处理的时候,也是转换成⾸元素的地址+偏移量求出元素的地址,然后解引⽤来访问的。&数组名,这⾥的数组名表⽰整个数组,取出的是整个数组的地址(整个数组的地址和数组⾸元素的地址是有区别的)那么在函数内部我们写。
2024-04-19 20:13:25
371
1
原创 void * 指针的作用_C
4.作为数据结构的一部分:在某些情况下,你可能想在一个数据结构中存储一个指针,但不确定这个指针将指向什么类型的数据。当你解引用一个void*指针时,你必须确保你知道它实际上指向的是什么类型的数据,并将其正确地转换为该类型的指针。它可以被赋值为任何类型数据的地址,但是在解引用它之前,通常需要将其强制转换为特定的类型指针。2.作为回调函数的参数:当回调函数需要接受不确定类型的参数时,可以使用void*。需要注意的是,虽然void*提供了很大的灵活性,但它也带来了类型安全的问题。
2024-04-19 19:37:33
356
3
原创 数组详解_C 下:二维数组
前⾯学习的数组被称为⼀维数组,数组的元素都是内置类型的,如果我们把⼀维数组做为数组的元素,这时候就是⼆维数组,⼆维数组作为数组元素的数组被称为三维数组,⼆维数组以上的数组统称为多维数组。
2024-03-28 20:00:53
530
原创 数组详解_C 上:一维数组
我们⼜知道数组中所有元素的类型都是相同的,那只要计算出⼀个元素所占字节的个数,数组的元素个数就能算出来。有了下标访问操作符,我们就可以轻松的访问到数组的元素了,⽐如我们访问下标为7的元素,我们就 可以使⽤ arr[7]有了前⾯的知识,我们其实使⽤数组基本没有什么障碍了,如果我们要深⼊了解数组,我们最好能了 解⼀下数组在内存中的存储。以后在代码中需要数组元素个数的地⽅就不⽤固定写死了,使⽤上⾯的计算,不管数组怎么变化,计算出的⼤⼩也就随着变化了。中C语⾔是⼀个关键字,是可以计算类型或者变量⼤⼩的,其实。
2024-03-28 19:18:04
563
原创 函数递归_C (详解)
递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰。上述就是⼀个简单的递归程序,只不过上⾯的递归只是为了演⽰递归的基本形式,不是为了解决问题,代码最终也会陷⼊死递归,导致栈溢出(Stack overflow)。递归的限制条件是什么?递归在书写的时候,有2个必要条件:递归存在限制条件,当满⾜这个限制条件的时候,递归便不再继续。每次递归调⽤之后越来越接近这个限制条件。下面看个列子:求n的阶乘。仔细看代码可以看出我们的思路如下。
2024-03-28 18:50:39
366
原创 位运算符详解_C
位运算分为两大类:逻辑运算符:& //位与| //位或^ //异或 ~ //按位取反位移运算符:> //右移进行位运算都要将其转换为二进制后进行运算。
2024-02-21 13:12:02
556
原创 Python实现人生重开模拟器游戏.py--小白也能学会,简单易懂。
这个文字游戏是博主一个个代码敲出来的,游戏逻辑可能不大充分。仅供参考!更多内容还需要大家来扩展啦!至于为什么博主的随机事件这么少?我只想说,那是游戏策划的事,跟我有什么关系。(狗头保命qwq)
2024-02-06 12:00:00
1073
1
原创 扫雷小游戏_详解(带菜单)
为了更加便捷,我们干脆生成11*11的二维数组,外面一圈蓝色的全部存放 ‘0’ 这样就便捷许多。很简单,我们只需要以时间戳为种子生成随机的坐标,将这个坐标的 ‘0’ 替换成 ‘1’ 就可以了。接下来为了使我们写代码过程中便于调试,我们先自定义一个函数展示我们的棋盘。但是如上图黄色位置,当排查的位置处于9*9的边界时,难以计算周围的雷。同时在头文件中声明一下,而函数的内容,我们存放在game.c中。为了直观的观察我们的棋盘的坐标,我们还需要打印除行列号。接下来在代码中实现,就需要我们创建两个9*9二维数组。
2024-01-30 19:06:47
1749
1
原创 时间戳为种子随机数,猜数字_详解(带简易菜单)
下面,我们用 do....while() 写一个简易菜单,人机交互是 do....while 的一个重要功能。接下来,要给用户进行一个选择,所以,我们要嵌套一个 switch 语句。接下来,我们要以时间戳为种子。需要用到 srand()函数。最后,我们定义一个 game()函数,来存放我们的游戏本体。给大家带来一个以时间戳为种子的随机数猜数字程序。一个简单的带菜单猜数字游戏就完成了。这样我们以时间戳为种子就完成了。首先,我们要用到以下头文件。
2024-01-24 15:15:00
671
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅