自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 解决RuntimeError: No CUDA GPUs are available问题

因为代码中设置了选择了具体的GPU的型号,但是有可能没有这个GPU,需要找到对应的GPU,但GPU可以修改为0。但是这个对我来说没有效果。然后运行代码就没问题了。希望以上信息能帮助到大家。接着查看是否可以用cuda。查看显卡驱动是否安装成功。查看已安装驱动的版本信息。发现cudn已安装。

2025-01-07 20:08:14 624

原创 MySQL图形化界面工具--DataGrip

之前介绍了在命令行进行操作,但是不够直观,本次介绍图形化界面工具–DataGrip。

2025-01-03 22:08:30 566

原创 MySQL相关概念【MySQL学习】

一个数据库服务器中可以创建多个数据库,一个数据库中也可以包含多张表,而一张表中又可以包含多行记录。-h(host):MySQL服务所在的主机IP主机名,127.0.0.1是本地主机,因为安装在本地。:类似于Excel表格数据,有表头、有列、有行,还可以通过一列关联另外一个表格中的某一列数据。(Structured Query Language,简称SQL):操作关系型数据库的。-P(Port):MySQL服务端口号, 默认3306(安装时可以修改,不推荐修改)(DataBase,简称DB):存储数据的。

2024-12-29 16:52:34 527

原创 numpy的repeat和pytorch的repeat区别

numpy没有repeat_interleave函数。

2024-12-28 21:58:20 269

原创 植物大战僵尸辅助【控制台版本】

下面先使用最简单的控制台程序来实现修改阳光的功能。

2024-12-17 17:31:12 1083 1

原创 基地址和偏移地址的理解

很多时候要查找的代码相隔很远,比如一次偏移就几百个字节,所以经常会遇到干扰信息,需要总结经验才能提高。最稳妥的方式还是使用OD去看汇编代码,通过调试代码才能准确判断。

2024-12-15 18:09:08 1217

原创 MFC简单应用介绍

在菜单栏里的视图里可以找到工具箱:工具箱里面的内容很多:介绍2个最常用的:Button和Check Box.分别拖动默认的窗口上:工具箱其它的对话框控件可以自己尝试。属性窗口和工具箱窗口一样的地方打开,内容如下:每个对话框控件都有属性,最常用的就是描述文字(外观变化)和ID(与函数和变量联系起来)。对于工具箱中其他的控件以及属性可以自行研究,希望以上内容可以提供帮助。

2024-12-10 15:34:11 1312

原创 OllyDbg、CE简单介绍

寻找阳光的地址然后假如要找。

2024-12-09 20:17:41 781

原创 深度学习论文复现【Ubuntu22.04】

论文题目:ShapeFormer: Shapelet Transformer for Multivariate Time Series Classification论文PDF:https://arxiv.org/pdf/2405.14608论文代码:https://github.com/xuanmay2701/shapeformer论文内容:多元时间序列分类这篇论文代码基本可以运行,我更改参数后也有一点问题,这就需要阅读代码了,后面我会出一期代码阅读的文章。

2024-12-06 20:53:14 836

原创 Ubuntu22.04深度学习环境安装【cuda+cudnn】

为了复现一篇深度学习论文,特意安装了Linux系统。前一天已经安装,现在需要安装cuda、cudnn等。根据论文提供的代码。在requirements.txt中发现cuda版本为11.7,cudnn为8.5.0,python没有指定,默认使用3.8版本,pytorch2.0.1。

2024-12-06 17:20:12 2092 1

原创 Ubuntu22.04深度学习环境安装【Anaconda+Pycharm】

anaconda可以提供多个独立的虚拟环境,方便我们学习深度学习(比如复现论文);Pycharm编辑器可以高效的编写python代码,也是一个很不错的工具。

2024-12-06 15:22:55 962

原创 Ubuntu22.04深度学习环境安装【显卡驱动安装】

使用Windows配置环境失败,其中有一个包只有Linux版本,Windows版本的只有python3.10的,所以直接选用Linux来配置环境,显卡安装比较麻烦,单独出一期。

2024-12-05 21:34:30 919

原创 切换gcc和g++的版本

可以发现/usr/bin/gcc软连接到/etc/alternatives/gcc了,并且/etc/alternatives/gcc软连接到/usr/bin/gcc-11。这个方法同样也适用其他需要多版本共存的问题,比如cuda,后面将会用到。很多时候不同的项目需要不同版本的编译器,如果每次卸载再重装的话太麻烦,因此需要寻找简单一点的方法。从上图可以看出,gcc有两个软连接,优先级不同,最高的是默认的。可以看到gcc软连接到gcc-11,g++软连接到g+±11。可以看到已经修改gcc和g++的版本了。

2024-12-05 20:57:05 811

原创 【论文复现】【多元时间序列分类】

最后几行是以前的cuda11.3版本,前两行是自动添加的环境变量,推荐删除新增的,自己添加环境变量,方便管理。版本不同,为了保持一致,再安装这个版本的,多个cuda版本可以共存(环境变量靠前的就是正在使用的版本)。可以发现torch版本是2.0.1,cuda是11.7,cudnn8.5.0,大致相同即可。cudnn会复制到cuda文件夹下,所以安装了新的cuda,就需要安装对应的cudnn。定位到sktime,由于我们安装sktime的时候是使用了其他版本,尝试安装一样的版本。

2024-12-05 15:32:23 913

原创 Windows 和 Ubuntu 双系统安装

Windows和Linux使用的时间机制不同:Windows使用的是LocalTime机制,把BIOS时间(掉电保存)当作本地时间;Linux采用UTC(格林尼治时间)时间机制,本地时间会在UTC时间+当前时区数(中国东8区,所以+8小时)。复现论文的时候,个别包只有Linux版本,并且源码编译比较麻烦,所以干脆直接安装一个双系统(Win+Ubuntu),方便复现论文。然后选择U盘启动,就可以进入操作系统安装界面。因此当从一个系统切换到另一个系统(这个系统会修改BIOS时间),时间就会快或者满8小时。

2024-12-05 15:18:26 1685

原创 Ubuntu22.04安装Steam++(Watt toolkit)

Watt toolkit这个软件可以Github加速,非常方便。但是在Linux系统不好安装和正常使用。下面就以Ubuntu22.04来安装Watt toolkit软件。

2024-12-05 14:30:29 1798

原创 标准C库IO和Linux系统IO关系

可以跨平台标准C库IO通过调用系统API来实现的跨平台,比如在Linux下的C标准库函数调用Linux的API,而Windows下的C标准库函数调用Windows下的API,当然不能把编译好的程序直接在另一个操作系统中运行,需要重新编译。JAVA跨平台原理效率高标准C库IO有一个缓冲器(Linux系统IO没有),它可以先将部分数据放入缓冲区中,然后再调用系统AIPI,一次性将缓冲区内的数据全部处理完。下面这张图可以很好描述标准C库IO函数,以fopen举例:man fopen。

2024-11-28 17:08:35 308

原创 gcc和g++关系

GCC(GNU Compiler Collection, GNU编译器套件)是由 GNU 开发的编程语言译器。GNU 编译器套件包括 C、 C++、 Objective-C、 Java、 Ada 和 Go 语言前端,也包括了这些语言的库(如 libstdc++, libgcj等),既可以编译多种语言了。build-essential:在Ubuntu软件源中包含了 GNU 编辑器集合,GNU 调试器,和其他编译软件所必需的开发库和工具。GCC 和 G++都是GNU(组织)的一个编译器。

2024-11-28 16:07:54 291

原创 VM+Ubuntu18.04+XSHELL+VSCode环境配置

为什么要用虚拟机?想学习Linux操作系统,一般有3种方法可以实现:将自己的操作系统换成Linux操作系统(Linux操作系统使用日常办公、游戏等不方便,不推荐);安装双系统(Windows+Linux),开机的时候选择进入其中一个;使用虚拟机软件,在虚拟机软件中安装Linux操作系统(推荐)。什么是虚拟机?虚拟机软件(如Vmware)通过虚拟化技术可以模拟出虚拟的硬件,我们在虚拟出的硬件上安装真实的操作系统(我们安装Linux操作系统)。这样就在电脑中虚拟出了一个完整的新的电脑,方便学习。

2024-11-27 22:13:27 1087

原创 C++程序编译流程

在VS等编译器中点击那个绿色的按钮就完成了以上的4个步骤,我们需要懂其中的原理,才能学得更好。

2024-11-27 00:29:51 416

原创 CSGO逆向学习教程【1.实现单机无线子弹】

本人对逆向比较感兴趣,同时也喜欢玩CS2,因此想学习一下CSGO的逆向,同时记录一下学习过程中的心得。

2024-11-23 10:52:57 994

原创 198. 打家劫舍【C++】【动态规划】

读题后可知,当前盗取的总金额 = max(上一家盗取的总金额(这一家不盗取),上上一家盗取的总金额+盗取当前这一家金额),由此可见满足当前状态由以前状态影响有关,选择使用动态规划。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4。

2024-11-17 16:56:37 321

原创 C++中sizeof运算符的案例分析

它是一个运算符,在编译时由编译器计算(常量),不是一个函数return 0;反汇编代码如下:可以看出在这两行代码在转为汇编代码时是一样的,因此可以判断出在编译时sizeof(int)被编译器替换为4。sizeof括号里的表达式不会被执行,编译器会计算括号中的数据类型sizeof对于数组名和指针返回结果不一样。

2024-11-08 17:42:35 463

原创 148. 排序链表【归并排序】【C++】

合并两个有序链表,其次就是考虑好,找到要合并的两个链表的位置。

2024-11-07 00:50:54 460

原创 88. 合并两个有序数组【双指针】【C++】

实现部分(双指针):使用三个指针,即i指向nums1有数据的尾部(m-1),j指向nums2的尾部(n-1),k指向nums1尾部(m+n-1),比较i和j指向数字大小,将大的赋值给小标k处,然后同时向前移动。输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3。合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。输入:nums1 = [0], m = 0, nums2 = [1], n = 1。

2024-11-05 17:18:28 925

原创 【C/C++语言系列】实现单例模式

单例模式是一种常见的设计模式,我们需要掌握它,一个补充,单例对象在main函数调用之前生成了(静态变量在编译阶段就分配了内存)

2024-09-21 01:13:35 529

原创 【C/C++语言系列】C语言的malloc、free和C++的new、delete异同

这里简单说下:malloc、calloc、realloc函数申请的内存。可以看出C++的new操作符包含了malloc的。

2024-09-21 00:29:42 439

原创 【C/C++语言系列】浅拷贝和深拷贝

重新在堆区创建一块内存,它们的指向不同,单指向的内容相同,这样在析构时分别释放自己的堆区数据。:如果有数据创建在堆区,那么在析构时会出现重复析构的问题。,它们各自都调用析构函数就会造成堆区数据重复释放。浅拷贝和深拷贝在面试中经常被问,十分重要。:使用深拷贝去解决堆区数据重复释放的问题。:这样两个m_height指针。

2024-09-20 23:57:39 469

原创 101. 对称二叉树【同时遍历两棵树】【C++】

后序遍历:一般是从叶子节点返回信息,所以有这个特性就可以考虑后序遍历。

2024-09-19 08:50:16 310

原创 二叉树的遍历【C++】

对于二叉树系列的题,必须要会二叉树。什么序是指处理根节点在哪个位置,比如前序是指处理节点顺序:根左右。接下来要说明的是:选用实现还是实现,一般来说递归法和迭代法可以相互转化。常常使用栈或者队列来实现。

2024-09-19 00:41:25 553

原创 【C/C++语言系列】malloc、calloc和realloc区别和用法

以前的size,那么就会缩减,如果继续访问不在缩减后的地址,会报错。分配,那么会重新找一块内存,把原来的值复制过来,返回新地址。空间分配newsize个地址,返回原地址;以前的size,分两种情况:原地址后面有。num_nytes:要开辟的内存字节数。功能:修改以前在堆区分配过的内存大小。newsize:修改后的字节数。返回值:修改内存大小后的地址。功能:堆区开辟一段内存空间。返回值:新开辟内存的首地址。功能:堆区开辟一段内存空间。返回值:新开辟内存的首地址。size:每个数的字节数。

2024-09-18 23:37:23 462

原创 【C/C++语言系列】指针数组、数组指针、函数声明和函数指针区别

结合还是[]结合 ,在C语言中,运算符的优先级为() == [] > *,结合性都是从左到右。p[10]是一个数组,因为p先于[]结合,而int(*p) [10]是一个指针。指向一个大小为10的int数组,该数组名未知。函数名p,返回值类型int*,参数类型int*该函数返回值类型int,参数类型int*数组中存的10个数都是int*类型的。p是一个指针,指向一个匿名函数,同上面一样,依然看优先级。

2024-09-18 19:59:31 498

原创 集群聊天服务器项目【C++】(六)MySql数据库

本章比较简单,编写了数据模块代码,并更新了相关的CMakeLists.txt文件。

2024-09-17 00:39:46 632

原创 集群聊天服务器项目【C++】(五)网络模块和业务模块

这是本项目的关键一章,网络模块怎么使用回调函数完成新链接和消息的回调,以及怎么解耦网络模块和业务模块等,在后面章节,大部分只是在此基础上增加业务功能,网络模块就不需要改了。

2024-09-16 17:38:19 1089

原创 集群聊天服务器项目【C++】(四)cmake介绍和简单使用

本章介绍了为什么使用cmake:比手写Makefile简单,cmake安装、vscode配置,以及用cmake编译上一章的代码。但是对于一个复杂的项目,使用cmake还需要其他额外的配置,后面会再详细介绍。

2024-09-15 10:11:59 589

原创 集群聊天服务器项目【C++】(三)muduo库的简单介绍

muduo库顶层就是epoll(IO复用技术) + Linux的pthread多线程,所以只能安装在Linux系统中。此外它依赖Boost库,相关的安装已经在我的博客中写出环境配置。muduo 的线程模型为「one loop per thread + threadPool」模型。一个线程对应一个事件循环(EventLoop),也对应着一个 Reactor 模型。EventLoop 负责 IO 和定时器事件的分派。其中有 mainReactor 和 subReactor。

2024-09-14 19:47:40 1386

原创 集群聊天服务器项目【C++】(二)Json的简单使用

Json是一种轻量级的数据交换格式(也叫数据序列化方式)。Json采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 Json 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。在网络传输中,一般有3中常见的序列化格式:XML,Json、ProtoBufProtoBuf:数据压缩编码传输,占用带宽小,复杂Json:相比与ProtoBuf更简单,但性能差一点XML:性能差本项目使用Json完成网络数据的序列化与反序列化。

2024-09-14 16:21:49 789

原创 集群聊天服务器项目【C++】项目介绍和环境搭建

在 Linux 环境下基于 muduo 开发的集群聊天服务器。实现新用户注册、用户登录、添加好友、添加群组、好友通信、群组聊天、保持离线消息等功能。本文简单介绍了该项目的内容、技术栈、需求和目标,然后着重介绍了环境的安装配置,有个别目前用不上,到后面再安装。希望本次环境安装能给大家一点帮主。

2024-09-14 11:52:52 1571

原创 41缺失的第一个正数【力扣】【C++】

第二部:每个正数放好位置后,再次遍历,如果小标i对应的值不是i + 1就找到结果i+1。第一步:将数组变成排好序的数组,我们可以将每个正数i放在下标i - 1上面。其中nums[i]!= nums[nums[i] - 1]是为了防止死循环。给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。由于不能建立哈希表,所以只能在原数组上操作,以保证空间复杂度O(1)。输入:nums = [7,8,9,11,12]输入:nums = [3,4,-1,1]输入:nums = [1,2,0]

2024-08-04 11:19:17 509 1

原创 125. 验证回文串【C++】【双指针】

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。给你一个字符串 s,如果它是 回文串 ,返回 true;输入: s = “A man, a plan, a canal: Panama”解释:“amanaplanacanalpanama” 是回文串。解释:在移除非字母数字字符之后,s 是一个空字符串 “”。由于空字符串正着反着读都一样,所以是回文串。解释:“raceacar” 不是回文串。输入:s = “race a car”输入:s = " "

2024-08-03 23:26:52 325

空空如也

空空如也

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

TA关注的人

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