自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (8)
  • 收藏
  • 关注

原创 模板类和非模板类的友元函数

友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。类授予它的友元特别的访问权。本文探讨了模板类中的友元函数的相关问题。

2023-07-07 11:21:44 203

转载 C++ 模板类的声明与实现分离问题

C++ 模板类的声明与实现分离会出现链接问题,出现此问题的原因涉及到程序的编译过程,本文探讨如何实现优雅地分离,并提供几种解决方案。本文转载自其他平台,用于自存。

2023-07-05 17:26:43 768

转载 背包问题详解

背包问题是动态规划非常重要的一类问题,它有很多变种,但题目万变不离其宗。我们需要抓住关键的解题思路,现将解题模板总结如下。

2022-09-23 23:36:07 880 1

原创 编译过程,gcc/g++,make命令

C++ 编译过程,gcc 命令,make 命令

2022-08-23 16:00:28 1072

原创 C++ 类和程序的空间占用

C++ 中类和程序的空间占用

2022-07-07 19:36:12 543

原创 二分搜索算法

二分搜索介绍,以及相关算法题目上的使用

2022-07-07 10:30:25 202

转载 C++ string

c++ string类的常用方法

2022-04-20 14:38:58 97

转载 python开代理后访问网站报ssl.SSLEOFError: EOF occurred in violation of protocol错

https://pythonmana.com/2021/03/20210315220037740p.html如果报了上面所述的错,可以知晓的是用户代理的锅,但如果我们想要获取请求的资源恰好是需要用户代理才能访问的,这个时候要怎么解决呢?具体解决方法也比较简单,起始就是urllib3版本的问题,如果换用 1.25.11或者其他低版本,就不会产生上面所述的错。至于为什么,还需要再探究。在原环境中重装低版本urllib3:pip install urllib3==1.25.11...

2022-04-14 21:00:13 4815 1

原创 C++ 无序关联式容器 unordered_map/unordered_set

无序关联式容器 unordered_maphttp://c.biancheng.net/view/7231.html#include <unordered_map>using namespace std;template < class Key, //键值对中键的类型 class T, //键值对中值的类型 class Hash = hash

2022-04-04 20:24:42 383

原创 C++ 容器适配器 stack/queue/priority_queue

容器适配器 stackhttp://c.biancheng.net/view/6971.htmlstack 栈适配器是一种单端开口的容器(如图 1 所示),实际上该容器模拟的就是栈存储结构,即无论是向里存数据还是从中取数据,都只能从这一个开口实现操作。由于 stack 适配器以模板类 stack<T,Container=deque<T>>(其中 T 为存储元素的类型,Container 表示底层容器的类型)的形式位于<stack>头文件中,并定义在 std 命名空间

2022-04-04 20:23:33 495

原创 C++ STL 关联式容器 set/map

关联式容器,以键值对的方式来保存数据,这样就可以直接通过键来定位到对应的值,并且,存储到关联式容器里的元素(即值)会根据对应的键来排序,默认是按升序排序。关联式容器的底层实现是树结构,具体来说是红黑树。关联式容器有set, multiset, map, multimap。pair数据类型关联式容器存储的是“键值对”形式的数据,其中第一个元素作为键(key),第二个元素作为值(value)。键值对”并不是普通类型数据,C++ STL 标准库提供了 pair 类模板,其专门用来将 2 个普通元素 first

2022-02-26 20:11:49 211

原创 C++ STL 序列式容器 array/vector/deque/list

array 容器是在 C++ 普通数组的基础上,添加了一些成员函数和全局函数。在使用上,它比普通数组更安全,且效率并没有因此变差。array 容器的大小是固定的,无法动态的扩展或收缩,这也就意味着,在使用该容器的过程无法借由增加或移除元素而改变其大小,它只允许访问或者替换存储的元素。array 容器以类模板的形式定义在 <array> 头文件,并位于命名空间 std 中。#include <array>using namespace std;//构造array<int

2022-02-26 20:11:29 945

原创 C++ STL

http://c.biancheng.net/stl/stl_basic/introductionSTL组件主要包括容器,算法,迭代器,函数对象,适配器和内存分配器,其中后面4部分是为前面2部分服务的。STL容器分三类:序列式容器、关联式容器、无序关联式容器和容器适配器。序列式容器,即以线性排列(类似普通数组的存储方式)来存储某一指定类型(例如 int、double 等)的数据,需要特殊说明的是,该类容器并不会自动对存储的元素按照值的大小进行排序。序列式容器有array, vector, deque

2022-02-26 19:40:27 139

原创 C++指针与引用

const指针int a = 6, b = 8;const int* p = &a; // 指向常量的指针变量,不能通过该指针改变所指对象的值*p = 8; // 试图通过p改变它指向的对象a的值,非法a = 8; // 合法p = &b; // 合法int a = 6, b = 8;int* const p = &a; // 常指针,指针的值不能改变,即指向不可改变p = &b; // 试图改变p的值,即改变p的指向,非法*p = 8; /

2022-02-05 20:45:56 245

原创 C++ 类的静态成员和常成员

static成员static成员变量静态成员变量不属于某个类对象,而是被类的所有对象共享的,其在编译时就为其分配了空间;类内的静态成员函数或非静态成员函数都可以使用静态变量;公有属性的静态成员变量,在类之外,可以通过类名来调用,也可通过对象来调用。不能在类声明中初始化静态成员变量,而要在类声明之外进行初始化。这是因为声明中描述了如何分配内存,但并不分配内存。而静态成员变量是单独存储的,不是对象的组成部分,其在编译时就需要分配好空间。初始化是在方法文件中,而不是在类声明文件中进行的。如果类声明

2022-02-05 20:44:35 791

原创 C++ 多态性和虚函数

多态性是指当类之间存在层次结构,并且类之间是通过继承关联时,此时调用成员函数,会根据调用函数的对象的类型来执行不同的函数。多态性可分为静态多态性和动态多态性:静态多态性,通过函数重载实现,在编译时系统就能直到要调用哪个函数,故而称之为静态多态性,又称之为编译时多态性。动态多态性,通过虚函数实现,在编译时系统不确定调用哪个函数,而是在运行时才动态地确定,又称之为运行时多态性。虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。这样,就突破

2022-02-02 10:28:15 1170

原创 C++继承

继承可以分为单继承和多重继承:单继承,一个派生类只能从一个基类派生。多重继承:一个派生类有两个或多个基类的称为多重继承。C++执行多继承策略。继承可分为公有继承、私有继承、受保护的继承。默认是私有继承:公有继承,基类的公有成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。私有继承,基类的公有成员和保护成员在派生类中成为私有成员,其私有成员仍为基类私有。受保护的继承,基类的公有成员和保护成员在派生类中成为保护成员,其私有成员仍为基类私有。保护成员在当前类的类外不可被引用(即在

2022-02-02 10:18:47 733

原创 C++ 特殊成员函数

C++自动提供了下面这些成员函数:默认构造函数,如果没有定义类对象被创建时,编译系统为对象分配内存空间,并自动调用构造函数,由构造函数完成成员的初始化工作。调用方式可分为显式调用和隐式调用。//声明class Vector {public: Vector(double x=0, double y=0); //带默认参数的构造函数 //...private: double x; double y;}//mainVector v1 = Vector(1.4,

2022-01-31 17:02:43 917

原创 C++命名空间

声明区域(declaration region),是可以在其中进行声明的区域。例如函数内声明的变量其声明区域是其声明所在的代码块;函数外声明的全局变量,其声明区域为其声明所在的文件。潜在作用域(potential scope),变量的潜在作用域从声明点开始,到其声明区域的结尾。因此潜在作用域比声明区域小,这是由于变量必须定义后才能使用。然而变量并非在其潜在作用与内的任何位置都是可见,因为它可能被另一个嵌套声明区域中声明的同盟变量隐藏。名称空间可以是全局的也可以位于另一个名称空间中,但不能位于代码块中。

2022-01-30 22:05:16 504

原创 C++ 内存模型

程序的内存分配https://blog.csdn.net/u013007900/article/details/79338653一个由C/C++编译的程序占用的内存分为以下几个部分:栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。堆区(heap) — 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS(操作系统)回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。全局区(静态区)(static)—,全局变量和静态变量

2022-01-30 22:03:17 1551

原创 维基语料处理 and 多语言维基文档title的对齐

wikidumpswikipedia-parallel-titles使用wikiextractor提取wikidumps语料基于维基百科语料生成平行句对基于维基百科构建平行语料库wikidumps语料下载wikidumps网址为en-wikidumpswikidumps语料的处理处理wikidumps语料可以用wikiextractor工具来提取。实现需要安装pip install wikiextractor然后可以有两种方法使用,一种是将库中的python模块用作脚本去运行pyth

2022-01-30 22:02:32 932

原创 python中的路径与package的调取

https://www.cnblogs.com/xiaohuboke/p/13611234.htmlos.getcwd()返回「当前工作路径」工作路径是脚本运行/调用/执行的地方,而「不是脚本本身的地方」「当前文件路径」跟「当前工作路径」没关系即获取文件绝对路径时,此方式不可用os.path.abspath(__file__)返回当前文件的绝对路径存在软连接时,返回软连接文件路径os.path.realpath(__path__)返回当前文件的标准路径,而非软链接

2022-01-11 22:31:17 1132

原创 Wikipedia API使用指南

Wikipedia APIhttps://pypi.org/project/Wikipedia-API/https://github.com/martin-majlis/Wikipedia-API/安装pip install Wikipedia-APIWikipedia-API是基本使用import wikipediaapititle = "china"wiki = wikipediaapi.Wikipedia( language='en', extract_forma

2021-12-26 20:02:15 4471

原创 wikipedia使用指南

https://www.codenong.com/s-getting-started-with-pythons-wikipedia-api/安装pip install wikipedia 根据title搜索维基百科文章search()方法在Wikipedia中搜索作为其参数提供的查询,返回包含该查询的所有文章标题的列表。import wikipedia print(wikipedia.search("Bill"))# ['Bill', 'The Bill', 'Bill Nye', 'Bil

2021-12-26 20:01:26 2197

转载 argparse 命令行传 list 类型参数

错误示范(不建议使用, 不方便动态传参):import argparseparser = argparse.ArgumentParser()parser.add_argument('--alpha', type=list, default=[0.35, 0.25, 0.40])args = parser.parse_args()if __name__ == '__main__': print(args.alpha)正确样例一:import argparseparser = ar

2021-10-26 20:56:10 3622

原创 pytorch之detach()函数理解

https://blog.csdn.net/qq_27825451/article/details/95498211https://blog.csdn.net/weixin_33913332/article/details/93300411?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-4.no_search_link&depth_1-utm_source=distribute.pc

2021-10-11 22:52:16 19820

原创 pytorch中的loss计算

NLLLoss & CrossEntropyLosscrossentropyloss = softmax + log + nlllossL=−1N∑ipilg⁡qiL=-\frac{1}{N}\sum_i{p_i\lg q_i}L=−N1​i∑​pi​lgqi​pip_ipi​​ 真实labelqiq_iqi​ 预测lable概率def test_NLLLoss(): m = nn.LogSoftmax(dim=-1) loss = nn.NLLLoss() #

2021-10-10 19:14:17 1280

原创 pytorch的leafnode理解

https://blog.csdn.net/Azahaxia/article/details/117234505https://blog.csdn.net/byron123456sfsfsfa/article/details/92210253设置requires_grad=True的tensor会计算梯度,但是并不会为所有requires_grad=True的tensor保存梯度。因为为了减少显存/内存占用,我们不会保存中间计算过程中产生的tensor的梯度。所以,有了叶子节点的概念。当且仅当tenso

2021-10-07 18:41:21 393

原创 C&C++动态创建数组

一维#include <iostream>using namespace std;int main(){ int *pi1 = new int; //创建int指针 int *pi2 = new int(2); //创建int指针并初始化为2 int *pi3 = new int[3]; //创建3个int指针 delete pi1; delete pi2; delete [] pi3; return 0;}#

2021-10-04 09:28:26 488

原创 使用BERT和GPT-2计算句子困惑度PPL

定义BERThttps://github.com/xu-song/bert-as-language-modelhttps://stackoverflow.com/questions/63030692/how-do-i-use-bertformaskedlm-or-bertmodel-to-calculate-perplexity-of-a-sentencehttps://github.com/ymcui/Chinese-BERT-wwm对于给定的sentence,按顺序依次mask掉一个token

2021-09-29 00:10:14 9757 13

原创 pytorch DDP加速之gradient accumulation设置

pytorch DDPhttps://zhuanlan.zhihu.com/p/250471767gradient accumulation在梯度累加的情况下,假设一次梯度累加循环有accumulation_steps个step,每次梯度累加循环会进行K次 all_reduce,但事实上,每次梯度累加循环只会有一次 optimizer.step(),即只应用一次参数更新,这意味着在每一次梯度累加循环中,我们其实只要进行一次gradient all_reduce即可满足要求,有accumulation_

2021-09-27 23:42:13 2604

原创 pytorch with Automatic Mixed Precision(AMP)

PyTorch 源码解读之 torch.cuda.amp: 自动混合精度详解 - 知乎Automatic Mixed Precision examples — PyTorch 1.9.1 documentationtorch.cuda.amp 提供了较为方便的混合精度训练机制: 用户不需要手动对模型参数 dtype 转换,amp 会自动为算子选择合适的数值精度 对于反向传播的时候,FP16 的梯度数值溢出的问题,amp 提供了梯度 scaling 操作,而且在优化器更新参数前,会自动

2021-09-27 20:24:47 516

原创 “Ran out of input” while use WikiExtractor

当使用Wikipedia Extractor(GitHub - attardi/wikiextractor: A tool for extracting plain text from Wikipedia dumps)工具处理所下载的wiki dump文件(​​​​​​​https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2)时,当我执行python命令:python Wikiextractor.py

2021-09-27 19:42:12 266

转载 python中jieba库使用教程

jieba是python的一个中文分词库,下面介绍它的使用方法。安装方式1:pip install jieba方式2:先下载 http://pypi.python.org/pypi/jieba/然后解压,运行 python setup.py install功能下面介绍下jieba的主要功能,具体信息可参考github文档:https://github.com/fxsjy/jieba分词jieba常用的三种模式:精确模式,试图将句子最精确地切开,适合文本分析; 全模式

2021-09-23 16:24:24 22492

转载 python中stanfordCorenlp使用教程

1 安装前言Stanford CoreNLP的源代码是使用Java写的,提供了Server方式进行交互。stanfordcorenlp是一个对Stanford CoreNLP进行了封装的Python工具包,GitHub地址,使用非常方便。安装依赖1:下载安装JDK 1.8及以上版本。2:下载Stanford CoreNLP文件,解压。3:处理中文还需要下载中文的模型jar文件,然后放到stanford-corenlp-full-2018-02-27根目录下即可(注意一定要下载这个文件,否

2021-09-22 16:12:46 7583 12

原创 Lucene构建索引与执行搜索小记

构建索引 1.创建Directory对象,指定索引库存放位置 2.创建Analyzer对象,指定分析器类型 3.基于1和2创建IndexWriter对象 4.创建Document对象 5.创建Field对象,并将Field对象添加到Document对象中 6.使用IndexWriter对象将Document对象写入到索引库 7.关闭IndexWriter对象Directory对象Lucene中,Directory抽象类有两个子类,分别是RAMDirectory和FSDire

2021-05-20 19:51:06 253 1

原创 C++进制转换的两种方法

进制的转换stoi函数(<string>)与itoa函数(<stdlib.h>)/*原型:int stoi(string str, size_t* idx = 0, int base = 10);str:欲转换的数据;idx:目标字符串的起始转换地址;base:待转换数据的进制。功能:把一个字符串按照base进制转换成数字,至str的第一个非法字符结束*///...

2020-02-23 23:32:25 2393

原创 C++数字与字符串的转换

文章目录数字与字符串的转换C++的stringstream类(来源:\)C标准库sprintf、sscanf函数(来源:数字与字符串的转换C++的stringstream类(来源:<sstream>)1.字符串到数字string str = "854";stringstream sstr(str);int x;sstr >> x;//即从sstr中提取数据2...

2020-02-23 23:30:13 11947 2

原创 关于istream输入流对象cin的输入函数

文章目录I/Ocin>>get()与cin.get()cin.getline()getline()gets()I/O输出流:ostream输入流:istream输入输出流:iostreamiostream中定义了输入流对象cin与输出流对象cout。cin是一个istream类的对象,它从标准输入设备(键盘)获取数据,程序中的变量通过流提取运算符>>从流中提取数...

2020-02-23 23:28:02 2687

原创 WAMP环境搭建(apache+mysql+php)

WAMP环境搭建1.下载apache2.下载mysql3.下载php3.1关联apache3.2关联mysql4.一些问题4.1Apache启动失败4.2关联mysql成功但连接数据库有错重装电脑之后,就会开启漫长的配环境之路了,写下来留做以后查看。版本如下:mysql-installer-community-8.0.17.0.msiphp-7.3.8-Win32-VC15-x64.zip...

2019-08-31 11:03:23 545

PL0编译器vs2017

实现了PL0文法的编译器,包括词法分析,语法语义分析、解释执行,环境是vs2017.

2018-12-29

debug.exe、link.exe、masm.exe

压缩文件中有debug.exe、link.exe、masm.exe,运行需要用到dosbox。用来探究汇编语言的运行。

2018-11-10

多人聊天小程序

包含客户端与服务端,实现了登录,注册,用户上线或离线提示,选择好友进行聊天等功能。VS2017下开发。

2018-11-03

数值方法第四版maltab版源代码

这是数值方法maltab版第四版的源代码,给有需要的小伙伴下载。

2018-09-29

抽烟者问题

本代码是运行在linux系统下的,运用信号灯来实现进程的互斥,一个供应者,3个抽烟者。

2018-05-27

后缀树的c++实现

本压缩文件是关于后缀树的,包括后缀树的构建(采用Ukkonen算法),利用构建的后缀树进行字符串的查找。

2018-05-27

稀疏矩阵c++实现

本代码是系数矩阵的c++实现,在数据结构中,有很多的数据结构,比如树,栈,队列,图,数组,链表等,而矩阵就是其中的一个简单应用。

2018-03-14

空空如也

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

TA关注的人

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