自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 windows下go+vscode

右下角会出现让你安装一下module的弹窗,直接点install all。等待安装完成后,ctrl+s保存文件,然后运行,一定要保存在运行!然后打开Vscode,新建一个hello.go。

2022-10-08 19:20:01 292

转载 Ubuntu环境下安装VSCode以及Golang语言环境

本来想一步步全都写下来的,但是个人比较懒并且写这篇博客的主要目的就是方便自己以后安装,因此如果你哪一步不会可以私信我。需要注意的是Go官方要求要设置代理才能安装 Go Module的包。因此,我们在这一步结束后。

2022-10-08 18:54:49 416

转载 Python星号*的用途总结

看到一篇国外的不错的关于python星号*的总结(全英文,但是词汇很简单)。当然相信基本的像星号解包这种操作各位大神都懂的,所以我只在此放出目录部分以及详述部分比较新颖的部分。

2022-10-07 20:27:33 513

转载 基于范围的for循环

【代码】基于范围的for循环。

2022-10-01 10:27:07 109

原创 二叉搜索树

后面还有一些二叉搜索树的查找、插入删除等操作待更新,以及由二叉搜索树可以引申出后面的红黑树。二叉搜索树的节点包含:左孩子节点、右孩子结点、父节点以及自己的value值。二叉搜索树的左节点的值大于父节点,父节点的值大于右节点。

2022-10-01 09:06:35 137

原创 动态规划算法

【代码】动态规划。

2022-09-25 21:53:58 255

原创 67. 二进制求和

carry在这题是进位符,一般进位符我们都会求和之后再除进制数来得到,低位的求和结果也会单独保存。而这里carry一符两用,既当进位符又当求和变量,实在是妙!本题思路很简单,看看官方解法很快就能看懂,主要是官方解法中的C++解法中不等长字符相加的思路很清奇,代码很优雅。下面也给出python版本的解法,只能说思路很暴力,代码还是那么pythonic(调函数)并且代码使用了三目运算符以及bool与int相加的隐式转换!

2022-09-25 00:33:08 527

原创 int进制转换与.format格式化输出

在刷力扣的时候总结的知识点:int描述:.format描述:

2022-09-24 23:50:08 554

原创 继承和动态内存分配

我们来看看拷贝构造函数,父类的拷贝构造函数没什么好说的,主要是子类,子类先用初始化列表将要传进来进行拷贝的子类对象传给父类,这是因为首先父类引用可以指向子类所以可以传,又因为我们对子类进行拷贝,子类中还有一些继承父类的组件得传给父类才能使得全部拷贝进去吧,否则只拷贝了子类自己特有的部分,因为我们必须传!最后我们看看重载赋值运算符,其实很容易想到重载赋值运算符其实和拷贝构造函数的功能是差不多的,因此基类的重载赋值运算符和拷贝构造函数的实现差不多。这里和上面子类的拷贝构造函数一样,也要先将父类拷贝了。

2022-09-19 09:47:27 422

原创 python两数交换

其实是很easy的一个知识点,只是之前自己从来没有注意到a,b=b,a是同时交换,不是先a=b再b=a像第二张图那样。

2022-09-18 23:36:00 247

原创 类继承与多态

如上代码,我们定义了一个基类Base_Person,其定义了私有的属性以及公有的构造函数以及show函数。我们也定义了一个子类Teacher,其继承了Base_Person类,在基类的基础上新增了自己的私有属性duty和自己的构造函数。并且注意到我们的还定义了一个Teacher的拷贝构造函数。最后我们在派生类中调用了基类的方法。因为派生类不能直接访问基类的私有成员,而必须通过基类方法进行访问。,所以我们的构造函数以列表初始化的方式先初始化了Base_Person基类(否则将使用默认的基类构造函数),

2022-09-17 11:31:25 367

原创 常见排序算法

把数组分为有序区和无序区(初始时,仅第一个元素为有序区),将无序区的第一个元素插入到有序区的适当位置,使之变为新的有序区,插入方法有点类似冒泡排序(只不过将每次的两两交换变成覆盖):代码实现(升序):算法性能分析: 总之就是将直接插入排序在有序区的顺序查找换成二分查找代码实现: 算法性能分析: 直接看定义比较晦涩,我们直接看例子:如下图所示,假如我们的初始数组为9876543210,我们要进行升序排序变成0123456789。我们先选定d=5,即将10个数等间隔分为5组(9和4一组、8和3一

2022-09-15 23:21:18 221

原创 定位new运算符

本文主要讲解定位new运算符的析构函数的显式调用问题。在上面那篇文章中已经提到用将定位new运算符来创建新的类对象后,当该对象消亡是时,程序并不会自动地调用其析构函数,所以必须显示地调用析构函数并且对于使用定位new运算符创建的对象,应以与创建顺序相反的顺序进行删除。原因在于,晚创建的对象可能依赖于早创建的对象。另外,仅当所有对象都被销毁后,才能释放用于储存这些对象的缓冲区。

2022-09-12 11:05:32 569

原创 重载与友元

于是我们可以重载

2022-09-09 10:34:57 731

原创 使用Flask-Moment本地化日期和时间

有一个使用 JavaScript开发的优秀客户端开源代码库,名为moment.js(http://momentjs. com/),它可以在浏览器中渲染日期和时间。是一个Flask程序扩展,能把moment.js集成到Jinja2模板中。先展示效果吧:可以看到确实同步了时间,与右下角时间一致。

2022-09-07 10:35:51 479

原创 使用VScode将c++代码反汇编

我们在学习C++语言的时候有时需要把C++代码反汇编成汇编代码,通过汇编代码查看代码是怎么运行的,函数形参、局部变量是怎么压栈,函数是怎么调用的,栈指针是怎么跳转工作等等,这样能更好地帮助我们理解代码的底层逻辑。2、在终端使用“gcc -S test.cpp -o test.s”命令进行反汇编(其中test.cpp为你当前的cpp文件名, test.s为输出的反汇编文件名)1、先在VScode中写好c++代码,并保证能编译通过(自己运行或者编译一下)发现左侧文件栏新出现一个test.s。

2022-09-07 09:44:10 6363 2

原创 查找的三种常用算法

给定一个值k,在含有n个元素的表中找出关键字等于k的元素。若找到,则查找成功,返回该元素的信息或该元素在表中的位置;否则查找失败,返回相关的指示信息。我们最常见的查找莫过于对数组进行查找,比如:但是接下来我们知道其实还有很多别的数据结构比如二叉树能够有效的进行查找。若在查找的时候同时对表进行操作(如插入和删除),则称为动态查找表,我们知道对数组进行动态查找效率是比较低的。一些定义:若在查找的时候不涉及对表进行操作(如插入和删除),则称为静态查找表。

2022-09-07 00:03:51 1602

原创 自定义错误页面

现在这个错误页面太简陋、平庸,而且样式和使用了 Bootstrap。,有未处理的异常时显示。如果你在浏览器的地址栏中输入了不可用的路由,那么会显示一个状态码为。允许程序使用基于模板的自定义错误页面。最常见的错误代码有两个:404。其中的404.html和500.html可以自己定义。,客户端请求未知页面或路由时显示;

2022-09-06 13:59:52 977

原创 static静态成员变量

对象的内存中包含了成员变量,不同的对象占用不同的内存,这使得不同对象的成员变量相互独立,它们的值不受其他对象的影响。例如有两个相同类型的对象 a、b,它们都有一个成员变量 m_name,那么修改 a.m_name 的值不会影响 b.m_name 的值。共享数据的典型使用场景是计数,以前面的 Student 类为例,如果我们想知道班级中共有多少名学生,就可以设置一份共享的变量,每次创建对象时让该变量加 1。static 成员变量的内存既不是在声明类时分配,也不是在创建对象时分配,而是在(类外)初始化时分配。

2022-09-05 10:23:35 315

原创 K-近邻算法分类和回归

KNN模型分类:K近邻算法的主要思想是用离测试集数据点最近的训练集点(称为其邻居)的输出来估计测试集数据点的输出,参数K代表用多少个邻居来估计。超参数K通常设置为奇数来防止平局现象。其中对邻居的判定:我们可以用欧几里得距离来衡量距离来确定其K个邻居。K近邻算法是一种惰性学习和非参数模型。当训练数据数量庞大,同时你对响应变量和解释变量之间的关系所知甚少时,非参数模型会非常有用。KNN模型只基于一个假设:互相接近的实例拥有类似的响应变量值。

2022-09-04 22:46:02 2703

原创 sklearn实现线性回归

主要使用到的函数为 linear_model.LinearRegression()调用模型和model.fit()来训练模型,需要注意的是model.fit传入的必须是二维矩阵!三、对训练好的模型进行预测。线性回归的原理就不讲了,主要就是拟合w和b来找直线尽可能多的与数据接近。下面我们是基于 sklearn 实现线性回归算法,大概可以分为三步。二、训练线性回归模型。我们拟合一个简单的y = 3 *x^2 +22。

2022-09-04 00:26:50 4729

原创 一对多关系实现

其中author_id = db.Column(db.Integer, db.ForeignKey("user.id"))这一句通过外键的方式使得Article表可以访问user表中的id项。在视图函数中,我们创建好articles和user实例后,通过articles.author=user进行绑定。比如我们要创建一张用户表和文章表,因为用户与文章是一对多的关系(一个用户可以有多篇文章,一篇文章往往是一个用户所写)。可以看见成功创建了两个表,并且author_id和user表的id是一致的。

2022-09-03 17:43:28 1447

转载 Ubuntu连接不上网络问题的解决方法

个人在某一次用ssh配置网络服务后,当时也是新手,跟着网上瞎弄了一通。结果弄完发现Linux不能联网了,将之前做的操作全都还原也不行。我使用上面那篇博文的方法一并没有生效,使用方法二后立马生效,右上角出现下面这个标识!

2022-09-03 10:12:24 301

原创 flask-sqlalchemy连接数据库

第三行设置id项,将其设置为整数项,并且设置为主键以及自动增长。第四行设置title项,将其设置为含200个字符的字符串,并设置不能非空。使用Flask-SQLAlchemy扩展操作数据库,首先需要通过URL建立数据库连接,必须保存到Flask配置对象的SQLALCHEMY_DATABASE_URI中。当然,如果想观察每一步的结果,在执行添加数据前最好最好先将其他三步加上注释,对于其他三步也是一样。PORT为端口号,我在创建数据库时没有更改,所以用的默认的3306端口号。3、创建SQLALchemy实例。

2022-09-02 14:32:26 1641

原创 蓝图的使用

官方解释:蓝图的基本概念是:在蓝图被注册到应用之后,所要执行的操作的集合。当分配请求 时, Flask 会把蓝图和视图函数关联起来,并生成两个端点之前的 URL。蓝图 (Blueprint) 是 Flask 程序的模块化处理机制,它是一个存储视图方法的集合,Flask 程序通过 Blueprint 来组织 URL 以及处理请求。如果还不清楚蓝图是什么的话没关系,先往下看,看完就知道为什么需要蓝图及其用法。...

2022-08-31 22:39:49 1345

原创 函数指针(函数作为参数传递给其他函数)

函数也有地址,函数的地址是存储其机器码的内存的开始的地址,并且。因此我们可以将函数作为参数传递给其他函数。正如python中可以将函数轻易的传递给其他函数一样,但是C++中形式上会复杂一些。...

2022-08-31 21:05:05 3704 1

原创 函数和二维数组

如果将二维数组作为参数传递给函数,那么在函数的参数声明中必须指明数组的列数,数组的行数没有太大关系,可以指定也可以不指定。因为函数调用时传递的是一个指针,它指向由行向量够成的一维数组。这里与一维数组一样,虽然我们传入的是数组的指针,但是我们同样可以用正常数组的方式访问其元素,而不需要解引用。data是一个数组名,该数组有三个元素,每一个元素为一个数组。二维数组作为参数时,其数组名被视为其地址,因此和一维数组一样,其相应的形参是一个指针。其中参数size指定二维数组的行数。假如我们有一个二维数组data。..

2022-08-31 11:35:02 2534

原创 const与指针

定义指针有一个巧妙的理解方法:从右往左读!

2022-08-29 21:23:22 365

原创 模板继承、模板中加载静态文件

我们的网站的多个网页中是有很多重复的元素的,比如bilibili的顶部这一栏基本上都是一样的,包括有些网站的每个网页底部下面还会有个关于我们之类的。因此,如果对每个网页都重新写一遍这些相同的代码是不明智的。因此我们可以选择继承的方式,写一个父类的html文件,然后在中间这些不一样的地方放一些接口,不同的网页自己去实现自己不同的接口即可。比如我要写三个网页about.html和control.html以及index.html,于是我们可以写一个父类的base.html,让其余网页继承它。

2022-08-24 17:16:16 276

原创 模板过滤器、Jinja2中的控制和循环语句

过滤器是通过管道符号(|,将返回name的长度。过滤器相当于是一个Jinjia2自己的函数,把当前的变量传入到过滤器中,然后过滤器根据自己的功能,再返回相应的值,之后再将结果渲染到页面中,方便你在HTML中也能使用函数。常用模板过滤器:这里使用了传入的参数username,然后用了过滤器length返回字符串长度。效果;

2022-08-24 11:30:47 678

原创 页面跳转和重定向

比如用户访问了一个需要权限的页面,但是该用户当前并没有登录,因此我们应该给他重定向到登录页面,这种就是暂时性重定向。而像京东之前的网站时360buy.com(现在已经不用了),你之前访问这个网站他会给你自动跳转到现在的京东首页,这个叫永久性重定向。注意,这里name = request.args.get('name')是访问字符串的方式获得参数,前面我们讲的获取参数的方式是在url加上,其中var表示我们的参数。代码表示,如果我们获得了参数,我们就在页面上返回这个参数。参数=值,比如这里的?

2022-08-24 10:24:57 2711

原创 文本文件操作

C++中文本文件操作主要是通过fstream头文件以及其中的ifstream对象以及ofstream对象首先,我们在使用ifstream对象以及ofstream对象时必须将其与文件关联起来来实例化对象比如这样实例化一个outFile对象,这个对象代表这你对文本文件要进行的一系列操作。其次,ifstream对象、ofstream对象与我们的cin对象和cout对象基本上用法一致,cout、cin的一些操作他们 也有。

2022-08-23 22:37:21 905

原创 cin处理用户异常输入

在13行的while的判断语句中 i>fish[i],因为我们fish数组是定义为double型的,所以如果你的输入是字符型等不符合的输入cin>>fish[i]就会返回false,于是这个判断式确保我们的输入是符合要求的!我的猜测是第13行cin>>fish[i]时因为第一个为数字4,所以跳出while循环,然后打印fish#2,然后再次到13行时我们的cin读取的是队列中的@此时执行while循环。

2022-08-22 21:58:01 734

原创 Flask练手

打开Pycharm专业版,点击坐上角File,再点击New Project新建项目。左边栏选择flask,编译器选择python解释器或者其他虚拟环境。完成之后会自动生成这样一个模板:app.py中是最简单的一个示例。可以看到左侧还有一个static文件夹和template文件夹,template文件夹我目前所知是用来存放前端的html文件。下面进行运行这个最简单的示例:在终端terminal中输入flask run命令运行:点击蓝色链接即可进入我们的页面。

2022-08-22 17:39:28 936

原创 基于范围的for循环

C++11新增了一种循环,基于范围的for循环。这简化了一种常见的循环任务:对数组(或容器类,如vector和array)的每个元素执行相同的操作。个人将其类比python中的 for i in [1, 2, 3]:来记忆。关键格式在第七行:for (double x : prices)此时若再对prices数组进行打印会发现数组元素已经改变!这种循环主要用于各种模板容器类。

2022-08-20 18:47:18 220

原创 递增/递减运算符和指针

第12行同样的从右往左,先解引用再++,对pt解引用后得到arr[2]的值,再++即将arr[2]的值加一,即arr[2]变成8,因此输出*pt结果应该为8。依然是从右往左看,先执行pt++将指针递增,然后解引用,那么应该是pt指向arr[3],那么x的值应该为arr[3]=10,*pt也应该为10是吧?第9行*++pt,对于这种我们应该从右往左看,即先++pt再解引用!第15行先对pt解引用再++,解引用得到arr[2]的值,再加1,即arr[2]变成9了,因此输出*pt应该为arr[2] = 9!...

2022-08-18 23:01:59 209

原创 C++中cin输入空格

cin.gteline函数有两个参数,第一个是用来存储输入行的数组的名称,第二个参数是要读取的字符数,如果这个参数为20,则函数最多可以读取19个字符,余下的空间用来存储自动在结尾处添加的空字符。cin.get函数与cin.getline函数接受的参数相同,但是由于cin.get不丢弃换行符的原因,我们往往在两个cin.get函数间插入一个空的cin.get表示读取下一个字符!我们还没有输入甜点名称,便跳过cin>>essert直接输出了,并且输出的desert为我们不连续name的空格的后面的字符串!..

2022-08-17 21:32:26 20914 8

原创 第三章、栈和队列

在大二懵懵懂懂上数据结构的时候,当时学完了栈、队列、树我都不知道学这些数据结构有什么用,直到我大四在力扣上刷到这道题,这道题的算法用栈是最简单的,从此我才知道这些数据结构原来这么有用,于是我赶紧回过头来重新刷一遍数据结构!我主要是用的这本教材并且由于我在自学C++,因此教材中用C实现的部分我全部换成C++进行实现(也不用改太多东西的一说..)...

2022-08-16 23:07:55 318

原创 数组的地址

从输出结果上看,地址加了1*16+4=20!而这正好是我们整个数组的长度(short两个字节*10个元素)!因此这证明了数组名tell与对数组名取地址数值是一样,但是意义是完全不一样的!我们知道,数组名可以看作是数组首个元素的地址。但是,如果我们对数组名取地址呢?对数组名取地址时,数组名不会解释为数组首个元素的地址,而是整个数组的地址!所以在第三行我们输出地址,第5行我们将pas指针加1。在下面代码中,我们得到的结果是一样的。但是这并不意味着他们是一样的!...

2022-08-16 21:35:53 1007

原创 C++用new创建动态数组

如果通过像下面这样一般的方法来声明数组,则在程序编译的时候为其分配内存,不管程序最终是否用到这个数组,数组都在那里并占用内存,即静态联编。但是如果使用new,则在运行阶段需要它才进行创建,不需要则不创建,这叫动态联编,这种创建的数组叫做动态数组。并且静态联编必须在写程序时就声明数组长度,而动态联编在运行时才确定数组的长度。我们创建了一个动态数组指针p3后,我们可以通过p3[i]来直接访问数组中的第i个元素。上述代码使得声明一个长为3,类型为double的动态数组。并且动态分配一个空数组是合法的!...

2022-08-16 20:57:22 9337

空空如也

空空如也

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

TA关注的人

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