- 博客(73)
- 收藏
- 关注
原创 LeetCode Hot100实战之双指针
这篇文章终于来了哈哈,为大家带来LeetCode Hot100中双指针内容我的总结。我会为大家带来著名的接雨水问题,采用两种做法,并为大家详细解释为什么(官方题解中只阐述了做法,而没有说明原因)
2024-08-03 17:15:51
795
原创 LeetCode Hot100实战之哈希表
那么从今天开始到未来的几个月的时间里,我将会为大家带来LeetCode中算法题的总结和思考。也算是对于自身算法学习的一种记录,同时分享给大家。我们先从LeetCode Hot100开始。本次分享,主要带来的是LeetCode Hot100中的哈希表。由于哈希的内容比较简单,我们可以一次性就说完。
2024-05-23 00:32:31
864
1
原创 Swin Transformer实战图像分类(Windows下,无需用到Conda,亲测有效)
先说一下我们最后画出来的图是什么样子的。就是横坐标是迭代次数,纵坐标左边是每次Train的avg_loss(平均的loss)大小,右边是Test时每次的avg_acc@1(平均准确率)。修改五个地方。在util.py文件中修改一处:也就是添加以下代码,就是新添加一个函数。# 创建折线图# 绘制第一条折线(范围在[0,1])plt.show()可以在一开始的地方加上两个list用于存储每个epoch的avg_loss和avg_acc@1.在就是说每次训练完都把avg_loss存储进去。同理,在。
2023-12-02 22:32:24
2237
18
原创 Anaconda超简单安装教程,超简洁!!!(Windows环境下,亲测有效)
写下这篇文章的动机,是今天在装Anaconda的时候,本来想搜点教程按照教程一步一步安装的,但没想到,所谓“保姆级”教程呀,“最详细”之类的,好复杂。然后一些本应该详细说的反而一笔带过了。所以今天我想把我想在安装Anaconda时想说的话记录下来。首先,要安装Anaconda,要明确你自己安装的应该是什么版本。如果你想和你的Python版本对应,就要搞好Anaconda的版本。别到时候搞下来了不管用。
2023-11-30 20:08:09
320
原创 【LeetCode】128. 最长连续序列——哈希的应用(3)
我会用一种做题者的思路来去看待这道题。我们在乍一看到这道题的时候,看到它的时间复杂度要求为O(N),然后又要求去找序列(就是让你判断这个数的前面一个数在不在这个数组里,这个数的后面一个数在不在数组里)。按照我们平时暴力的做法(也是最先想到的做法),遍历一个O(N),然后判断每个元素在不在又是O(N),然后有可能会有N个元素,这样N* N *N最坏的情况就都有可能是O(N^3)了。要我们找序列,又要我们O(N),这不扯淡么。因为所谓O(N)的复杂度,就是要让你一遍过,或者你能说出来几遍过(也即常数个O(N),
2023-11-28 21:18:31
296
原创 [含泪解决]OSError: [Errno 99] Cannot assign requested address__踩坑记录——app.py绑定IP失败
(问题解决了,图当时没保存,是后来从网上找的,我的是Errno99,不是98,下图显示的是98,不过这些小细节不重要了hhh)然后不是要部署到服务器上么,所以我的这个IP地址理所应当就肯定要是我的服务器的IP地址了。这行代码中,xxx.xxx.xxx.xxx代表我的IP地址,port代表我的端口号。经过很多很多尝试之后(具体经过了怎样一个坎坷的过程就不赘述了),最后的结论就是,是这个样子的,前几天帮别人部署Python的Flask项目到云服务器上,然后在。如果你不知道你的内网IP的多少,
2023-11-28 21:02:58
5804
4
原创 Pytorch项目的文件结构一般都是怎么组织的?
先说在optim_factory.py,真的是代码的功能如其名,这里面定义了许许多多的optimizer的方式,什么sgd呀,lr呀等等都在里面有定义,就是它的意思就是它为提供了很多种optimizer,然后根据你传进来的参数进行选择。也正是因为最近要整这一块的内容,所以把我的想法记录了下,也不一定对hhh,而且上面举的那两个模型我现在也还没有研究过(论文也还没看2333),也就是只看了眼代码的结构,所以有什么不对的地方欢迎批评指正(轻点喷....就是说,在这部分代码里,它保存的是你的数据是如何处理的。
2023-11-26 17:12:35
284
原创 【通俗易懂】CNN详细讲解
这一种方式也是常见的介绍CNN的方式,但和刚刚我们上面所说到的意思是一样的(就是同一个东西用不同的方法介绍而已):我们说,什么是Convolutional Layer呢?这个Layer它有数个的Filter,每一个Filter都是3* 3 * channel大小的tensor那channel数如果为3,就代表着这个图片是彩色的,如果channel数为1,就代表这个图片是黑白的。每一个filter,就代表了它要识别的Pattern,或者说要守备的范围。
2023-09-04 10:19:05
1304
2
原创 MarkDown 语法大总结【全网汇总,从0到深大全版】
MarkDown 语法大总结【全网汇总,快速上手】(含Latex用法)【看完本文,你将从0入门到熟练掌握Markdown语法,同时也总结了不少其他文章和官网的内容】
2023-03-14 10:25:27
48614
7
原创 工具的使用——git
看完本文,你将收获:1、了解什么是Git;2、如何下载Git;3、如何使用Git(基本操作clone、add、commit、push以及它们有什么样的作用);4、简单了解Git的原理
2023-03-12 20:42:04
808
6
原创 如何用TortoiseGit小乌龟来进行代码提交(亲测版)
自学编程不迷路。欢迎关注我,可以一起交流~~~关注方式见主页或文章底部。想要加群可从公众号中加我wx我们本次主要来介绍如何使用TortoiseGit的GUI图形化界面的方式来完成代码的提交和拉取。主要是在Windows操作系统下完成。因为在Linux操作系统下,直接用命令行就可以了,根本不需要这么费事。
2023-03-12 16:15:36
15723
原创 SQL数据库—事务(ACID特性、数据库恢复技术)
事务,是数据库中的一个重要的组成。那什么叫做事务?事务字面上理解即是指要做的事情,在SQL当中,事务可以理解为一组控制语句序列的集合。它是一个不可分割的工作单位,也是恢复和并发控制的基本单位。比如银行转账,分为你先转给银行、银行再转到指定的用户的账户上这样两个过程。它不可以出现:你给银行转过了,但是由于某些原因(比如网断了),你的目标账户没有收到来自银行的转账,那你的钱被银行私吞了?银行说我给你转了啊,可事实是目标账户并没有收到。这就引发了问题。所以,我们就希望你转给银行、以及银行再转到指定账户上。
2023-01-03 10:04:31
597
原创 Coding基本功——栈和队列
各位好,我们本节主要来训练一下我们的代码基本功,我们需要实现以下三个功能。如果你都会的话,那证明栈和队列这部分的基本功不错。
2022-12-11 11:34:00
446
原创 问题解决(1)——VS中scanf报错怎么解决
各位好,博主新建了个公众号《自学编程村》,拉到底部即可看到,有情趣可以关注看看哈哈,关注后还可以加博主wx呦~~~(公众号拉到底部就能看到呦~~)我们在用VS的时候,用库函数scanf可能会出现如下图这样的报错。这是为什么呢?实际上,这并不是你的语法错误。它报错的原因是说怀疑这个scanf函数不安全。因为VS是一款功能强大的IDE,它的语法检查、控制台环境检查机制太严格了,你从键盘中输入这个事情在它看来是一种不安全的操作。所以它才会报错。
2022-12-11 11:05:06
1486
1
原创 Linux系统网络编程——第二十节 多路复用之epoll 模型
epoll相关系统调用1、epoll_create:(自从linux2.6.8之后, size参数是被忽略的,用完之后, 必须调用close()关闭其返回值是一个文件描述符。调用这个函数的时候,底层(内核层)会帮我们构建出一个epoll模型。epoll模型是什么?先不用管,就先理解它是一个模型就好了,它是有一个整体的、抽象的概念。2、epoll_ctl()
2022-12-11 10:36:07
634
1
原创 Linux网络原理及编程(8)——第十八节 数据链路层
各位好,博主新建了个公众号《自学编程村》,拉到底部即可看到,有情趣可以关注看看哈哈,关注后还可以加博主wx呦~~~(公众号拉到底部就能看到呦~~)思考一个问题:真正在网络中跑的是一个一个IP报文吗?实际也不是。真正在网路中传输的是一个一个的以太网帧。当然,从IP往下,不同的网络就有不同的标准了。我们接下来介绍的以太网帧,主要以以太网为标准。也是比较有代表性的。1、MAC地址用来识别数据链路层中相连的节点;
2022-12-10 20:55:08
527
原创 Linux网络原理及编程(7)——第十七节 网络层
各位好,我们根据前面的学习,知道:1、HTTP:是用来构建与解析 request && response -》调用recv和send来解决自己的问题。注意,这里的recv和send是tcp提供的接口。2、TCP :可靠性、效率、什么时候发送、怎么发、发多少3、IP:解决端到端、点到点的问题。将数据经过路径选择、送达对方主机的过程——IP负责。
2022-12-10 10:58:10
677
原创 Leetcode番外篇——滑动窗口的应用
像本题的其他条件(串p)是用来将滑动窗口中的数据抵消掉的(所以抵消掉和元素不在都是减)。不论是用优先级队列,还是用双向队列,都用到了这一点思想:即如果是最大的值被删掉了而它却仍然在我们所创建的数据结构里,不需要慌,只要在出来的时候(top的时候)判断一下它是不是在我们滑动窗口的范围之内就可以了。1、滑动窗口需要注意的是:充分利用其特性——在滑动的时候,中间的大部分元素都是不变的,变化的仅仅是滑动窗口的两端。本题的难度实际一般,关键就是需要想到取最大的数的时候,不要着急去删除就可以了。
2022-12-10 10:32:41
727
原创 Linux网络原理及编程(6)——第十六节 TCP可靠性保证的原理
TCP中采用了许许多多的机制,来保证网络传输过程当中数据的可靠性的问题。这里的可靠可以广义一点来理解。它几乎涉及到了方方面面。我们现在就挑选一些最最重要的机制来进行讲解。
2022-12-10 10:21:51
671
原创 Linux网络原理及编程(5)——第十五节 TCP的连接(三次握手、四次挥手)
(等待的时间是通信一个来回最多花费的时间:2MSL)如果服务器重传了若干次都没有响应,那其也就强行关闭了。(但是这种情况是比较小的)在server的TCP连接没有完全断开之前不允许重新监听,
2022-12-09 17:48:37
964
原创 Linux网络原理与编程(4)——第十四节 传输层协议
传输层是在应用层的下面一层,我们在讲解传输层协议之前,先来说一说一些前置知识即命令函数等;然后,我们本节主要来介绍UDP、TCP的报文。
2022-12-09 16:57:04
602
原创 Linux网络原理及编程(3)——第十三节 HTTPS
我们本文主要来介绍https,主要来介绍https的加密原理。大家应该都知道http和https的区别,区别很简单,主要就是在https是采用了加密协议的,而http完全是在网络上裸奔的。而我们现在几乎所有的连接都用的是https我们首先需要明白的是,我们现阶段的加密,本质上,是在应用层和传输层之间进行加密的。加密的算法有很多,比如SSL/TLS等。
2022-12-09 11:57:38
858
4
原创 Linux网络原理与编程(2)——第十二节 应用层协议(以HTTP为例)
我们从本节开始,就来正式地详细介绍网络各个层次的内容。我们先从最顶端的应用层协议说起。在说应用层协议之前,我们来思考一下什么叫协议?
2022-12-09 00:29:54
684
3
原创 Linux系统编程第六节——进程的替换(execl、exelp、execle、execv、execvp、execve)
我们输入ls,就是运行这样一个可执行文件,它在/bin/ls目录下,因为在环境变量里,我们可以直接运行而不用加路径。所以我们用execlp的时候,就不需要加前面的"/bin/ls" 了,因为它是在环境变量里的,execlp函数会自动从环境变量里搜索。然后如果带上了字母e,意思就是在最后,会再加上一个指针数组,这个指针数组里存储的是环境变量。第一个参数,看到了path也应该能猜个大概了,它的意思是路径,谁的路径?
2022-12-08 20:02:38
728
1
原创 Linux系统编程第五节——进程创建、终止、等待(通俗易懂快速上手版本)
我们本节内容,主要来讲述进程控制有关的内容。同样,我们会用通俗易懂、不同于教科书的讲授思路,来为大家讲解。同时,本节内容板块清晰简明,在最终同学们的思维导图可以做起来呦~~~(同时需要说明一下,我们本节注重的是系统编程方面,而不是完完全全地侧重于系统理论知识呦,如果想要深入学习进程的知识,可以参考以后的《操作系统》篇章,敬请期待哈~)
2022-12-08 16:57:29
828
原创 算法精品讲解(2)——DP问题入门(适合零基础者,一看就会)
目录前言DP问题它是什么(了解)从中学的例题谈起再来说一下,DP问题的核心思想(理解)DP问题的解决方法先说方法论:再说具体的例子例一:例二:例三:DP和搜索的关系结语DP入门介绍:先画个饼吧哈哈。看完之后,你也可以。如下,是我们本节将要讲述的内容。我们将结合着LeetCode、洛谷和CodeForce上面的一些习题来作为我们的参考。难度循序渐进,直到大于等于LeetCode Hard。文章首发于wx公众h【自学编程村】 我们下面就进入正文。大名鼎鼎的DP问题,实际上就是Dynamic programmin
2022-12-07 19:14:29
16608
9
原创 重新更新VScode配置(C/C++)——负责任、手把手教学,亲测有效
对于C/C++的编程环境来说,目前我们所接触到的、所用到的,除了vim以外,大众用的、尤其是学生群体用的主要是有三种。一种是devc++;一种是Microsoft Visual Studio,也就是我们俗称的VS;还有一种是Microsoft Visual Studio Code,也就是我们俗称的vscode。对于这样三种编译器,第一种我不想多说什么,因为我不推荐大家用devc++。唯一的好处可能就是装上去就能用。但是devc++是一种很老的编译器了。这个大家如果还有疑问,可以去网上搜搜,应
2022-10-13 19:37:46
6859
3
原创 LeetCode精讲(1)—— 单调栈有关习题及其变式
看完本节内容,你将收获:一种思想,四个习题(其中三个为LeetCode上Hard难度)同时,我们将会在文末放上七道LeetCode上有关单调栈的习题,供大家思考提升(并会附上我们推荐的题解)。我们将采用图片、视频、文字描述的方式来帮助大家理解。我们的定位是:让没有接触过这块知识的同学也能够轻松看懂。(如需转载,请注明原文出处和作者呦)...
2022-08-11 17:08:16
2391
8
原创 Linux——文件操作和inode
C语言标准库的接口stdin/stdout/stderr重定向系统文件接口文件描述符:我们上面说的open 等系统调用接口,其返回值为一个int,注意这里的int指的是内核中用于管理文件系统的数组的下标。如上图,再一个进程task_struct中,会有一个files* 类型的指针,其指向的正是以恶搞file_struct的结构体。而在这么一个结构体里面,又存在着一个存储着file*的指针数组,数组的下标从0开始,一直到n(n实际上也是有上限的)。每打开一个新的文件之后,其就会为
2022-04-11 09:05:33
377
3
原创 进程间通信
进程之间,进行相互通信,是要有一定目的的。而通常,我们所说的进程之间是相互独立的。而一旦进程之间相互进行了通信之后呢,它们之间也就会有一定的联系了。数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变
2022-04-11 09:04:47
3848
1
原创 Linux多线程详解
线程的概念和理解理解线程之前,我们需要重新对进程进行理解我们前面说一个task_struct有着一个进程地址空间,然后有页表,搭建其和物理内存的映射。我们现在需要重新对进程进行定位理解:对于CPU来说,其看到的PCB可以是多个,然后共享一份地址空间。注意,这里你没有看错,就是多个PCB共享同一块地址空间。允许这样的情况存在。那如果这样的话,进程到底是啥呢?我们之前说进程是一系列的代码和数据以及组织它的数据结构,并且这主要的数据结构就是PCB。那现在呢?实际上,
2022-04-11 09:03:44
374
原创 Linux网络原理与编程——第十一节 网络基础及套接字
一、网络的层状划分结构我们网络的层级,与OS之间的关系,可以看成是这个样子的:我们来解释一下:从system call(系统调用结构)开始往下,都是属于OS和硬件的范畴,我们一般的程序员所进行的开发,通常都是在用户层。(这个我们后面还会具体说到)其中,TCP/IP协议属于传输层,准确点来说,其是由操作系统来完成,就是说由OS来帮助我们收发报文。而其他的MAC协议和以太网等协议,就是属于驱动、网卡等硬件设施层面的事情了。我们后面再来谈。他们属于数据链路层和物理层。(注:这里只是
2022-04-06 15:24:32
7272
20
原创 Linux第十节——信号
实际上,信号我们用的并不少,我们本节就来重点地、系统地探讨一下信号的有关内容。为了便于理解,我们先来说ctrl c由ctrl + c发出的信号我们来举一个简单的例子:先该创建文件创建文件:来看这样一个简单的代码:它是一个死循环。我们用这个死循环来演示ctrl c的功能。结合上面的运行,来说两个点:1、在前台运行的程序只能有一个。我们的程序在前台运行起来之后,我们再去输入一些指令等等,就无法执行了。在前台没有另外的可执行程序运行的时候,实际上是ba...
2022-03-18 21:39:44
3877
15
原创 C++第十一节——单例模式 C++11 智能指针 异常 有关讲述
本节内容,我们要介绍四个模块的内容。按照顺序来,分别是单例模式、C++11、异常和智能指针。目录单例模式要求设计一个类,只能让其创建在堆上。你实现一个类,要求该类只能在栈上去创建设计一个函数,要求防止拷贝构造单例模式:饿汉模式懒汉模式懒汉模式和饿汉模式的对比C++11C++11简介统一的列表初始化声明类型auto类型decltypenullptr范围for循环STL的新内容右值引用和移动语义左值引用和右值引用比较.
2022-03-14 12:45:35
3589
27
原创 C++ 第十节 ——哈希 unordered_map/unordered_set的封装 位图 布隆过滤器 海量数据处理
我们本节继续讲解STL里的内容。哈希表又叫做散列表,它可以用来封装unordered_map和unordered_set。我们还是按照老规矩来,先介绍其用法,再介绍其原理,并引到哈希上来。目录unordered_map/unordered_set的用法unordered_map/unordered_set的底层原理1、直接定址法:2、除留余数法闭散列:二次探测开散列Unordered_map和Unordered_set的封装哈希的应用位图:位图的应用:
2022-03-09 20:08:28
1710
40
原创 C++ 第九节——map/set(用法+底层原理+模拟实现)
有了前面红黑树的底子,我们这一节的任务就比较轻松了。关于Map和Set是什么东西,我们来借助网络文献进行解释。首先,我们需要知道的是,Map和Set的底层都是红黑树。即是一种平衡的二叉搜索树,也就是二叉平衡搜索树。而set就是我们前面说到的Key模型,而map就是<K,V>模型。我们接下来将一边对比,一边介绍。set和map的介绍先来看set:通过查阅文档有关set的声明,我们可以发现:这里的T就是我们所说的Key,就是key_type或者说是value_
2022-03-05 21:19:05
7189
13
原创 C++ 第八节&数据结构 第七节 ——二叉搜索树 AVL树 红黑树(底层原理图+模拟实现)
我们将着重来探讨 二叉树 中特殊的两种树——搜索二叉树 和 平衡二叉树。而平衡二叉树我们可以有AVL树,红黑树等。我们今天就重点来说说这三种结构。1、二叉搜索树我们之所以将其放在这里来讲,最主要的原因就是之前我们所有模拟实现都是用C去实现的,而这些东西用C语言很难实现,所以,我们将其放在C++当中。1-1、概念二叉搜索树又称二叉排序树,它要么是一个空树,要么是满足以下性质的一个二叉树。若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树
2022-03-02 21:47:23
2728
51
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人