自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 einops笔记

什么是einopseinops(Einstein-Inspired Notation for operations)是一个 进行tensor的各种变换的包。里面又一些api可以完成特定的工作。其特点就是 利用了一种特殊而高效的参数。并且einops为主流的几个学习框架做了适配,numpy , pytorch, tensorflow, keras…优势:比较直观:可以显示出具体变换的效果。y = x.transpose(0, 2, 3, 1)y = rearrange(x, 'b c h..

2021-12-17 21:18:53 1494

原创 Linux网络编程笔记

TCP/IP 协议体系是分层的。在使用的时候需要经过 封装 和 分用 的过程。ARP协议提供任意的 网络地址 到物理地址之间的映射。但是其提供的都是可以直接访问到的,直接连接的网络地址对应的物理地址。那是因为在数据链路层,传输的范围只是仅仅限于直接连接的设备之间。在经过网络层的处理之后,我们在数据链路层需要的ip地址是可以一步访问到的ip,因此ip对应的物理地址可以由arp协议来获得。当需要使用的ip没有对应的物理地址,就启动arp协议来找。arp的协议格式为 2 2 1 1 2(操作,也就是类型,比.

2021-12-06 11:47:52 483

原创 Effective c++ 笔记1

名词解释:size_t 是c++中的一个代表计数的类型。其实际就是一个typedef 。 但是很有用。在容器的下标操作中,下标就会被转换为size_t 类型。接口interface 。不同于java中的接口,这里指可以访问的函数等资源。比如一个函数的signature(签名,也就是返回类型和参数类型,相当于这个函数名的类型),一个类的成员函数等。client。代表客户,也就是使用你所编写的代码的人或者程序。我们写代码要关注的是把client放在心上,让其可以更加便捷地去用我们写地代码使用..

2021-11-24 15:46:57 1859

原创 IO库笔记记录

IO一般指的是 从设备中读取数据或者输出数据到设备中。这里的设备是多种多样的,可以是 文件,控制台窗口等,还可以是一些内存IO。IO类iostream头文件中定义了基本的流,是其他类的基类。cin cout cerr 是这个的对象fstream头文件中定义了文件流,属于是 作为文件的细分领域sstream头文件中定义了字符串流,对应的设备可以认为是string这样的层次设计利用了继承机制。好处是可以像使用基类一样使用子类。我们可以像使用cin cout 那样使用fstream sstre

2021-11-13 09:25:23 149

原创 泛型算法笔记

泛型算法就是为了弥补 顺序容器中的成员函数不多的缺点。定义了一组算法,可以实现多个不同的功能,同时可以适用于多个容器。这些算法都定义在头文件 algorithm 中,numeric 文件中也定义了一组数值泛型算法。泛型算法独立于容器。有的是依赖元素类型的操作的。比如,需要find函数需要有 == 运算符。其他算法可能要求元素类型支持 < 运算符。不过多数也支持通过函数的方式来传入比较规则。泛型算法分类:只读算法:常见的有find,用来返回第一个等于给定元素的迭代器。否则给定最后的迭代器。.

2021-11-11 15:55:29 255

原创 顺序容器笔记

顺序容器包括 vector, string, deque, list, forward_list, array.vector 是应用最广泛的,元素顺序存储。string和vector类似,但是存储字符串deque为双向列表。可以从前后来进行插入和删除list为双向链表。从任何位置插入删除的速度都很快。但是非顺序访问的速度比较慢。(这也是所有链表的特征)forward_list 为单向链表,特征和list差不多array为定长数组,可以替代内置类型的数组。更加安全。应该要替代。顺序容器的.

2021-11-08 09:22:29 79

原创 拷贝控制-笔记

拷贝控制拷贝控制操作定义:拷贝控制操作包括 拷贝构造函数,移动构造函数,拷贝赋值运算符,移动赋值运算符,析构函数。1 2决定了使用同一类型的对象来构造这个对象的时候会发生什么。3 4 决定了使用同一类型的对象来赋值给次对象时候会发生什么。5 决定了次对象销毁时候发生什么。拷贝控制操作的重要之处在于,即使我们不定义这几种操作,编译器也会替我们定义这些操作。但是这有时会导致灾难,因此我们一定要在定义一个类的时候自己定义这些操作。拷贝构造函数如果一个构造函数的第一个参数是自身类型的引用,

2021-11-01 19:38:58 161

原创 项目架构梳理

本项目使用到的重点知识网络库c++11的智能指针命名空间类关系Server类服务器的抽象。其规定了服务器的运行模式,也就是MainLoop函数实现整体的循环,重写_RunLogic()函数,为运行逻辑,Recycle为回收逻辑。Init为初始化逻辑。Init逻辑:TCPBind()完成TCP绑定SocketAddr()中...

2021-11-01 19:38:14 155

原创 命名空间笔记

命名空间的发明是因为:早期,只有一个命名空间,也就是全局命名空间。不同公司开发的库里的成员要共享这个全局命名空间。为了不造成冲突,函数的名字往往写的很长,这很不便捷。因此,使用命名空间这个概念。一个命名空间相当于一个作用域,不会造成同名冲突,同名也无妨。只要在使用的时候写清楚使用的是哪个命名空间的函数即可。同一命名空间中使用成员,可以不加命名空间限定。如果要使用命名空间之外的成员,那么使用命名空间限定。声明一个命名空间,使用 namespace name {} 。命名空间里面可以定义任何全局命名空间中.

2021-10-30 10:17:31 150

原创 多重继承和虚继承

继承中的类作用域类会创建一个命名空间,当继承的时候,子类的命名空间嵌套在父类的命名空间之中。这样,子类对象或者子类对象的指针或者引用 去查找一个元素的时候,可以在子类和父类的命名空间中去寻找。当然,优先找子类的命名空间。当子类的命名空间中找不到的时候,就去父类的命名空间中找。如果一个指针或者引用是一个父类对象的,那么寻找的顺序就是从父类的命名空间开始找。即使实际的对象包含子类的命名空间,因为命名空间的特性,是找不到子类命名空间中的内容的。也是因为这样的机制,子类可以使用和父类命名空间中相同名字的.

2021-10-29 13:08:24 255

原创 动态内存笔记

动态内存相对的是静态内存。指的其实就是申请堆空间。进程的内存空间从上到下为程序代码区:用来存储可执行的代码文字常量区:用来存储常量静态区:用来存储 全局变量(不在任何函数里面的变量,又包括了全局静态变量和非静态变量。),局部静态变量,类的static成员。相同点是这些都有全局的生存周期。这只是粗略的说法。静态区实际包括 两部分,一部分是初始化了的全局变量和局部静态变量,static成员。可以叫做data段。另外一部分是没有初始化的全局变量和局部静态变量,static成员。叫做bss段。堆栈..

2021-10-28 10:31:26 115

原创 关联容器复习

关联容器和顺序容器的不同点关联容器是基于关键字的。关键字决定了值存储的位置,也决定了访问的时候到哪里去找到。关键字起到的是索引的作用。似乎是废话。关联容器包括有- 按照关键字有序保存 set,map,multiset, multimap,- 无序集合,通过哈希表来实现 unordered_map, unordered_set, unnordered_multiset, unordered_multimap.set和map的作用:set的值只有一个关键字,常常用来知道一个元素是否在se.

2021-10-26 16:30:53 56

原创 redis学习记录

redit安装使用方法需要在官网下载安装包,然后使用tar来进行解压缩。进入解压之后的目录之后,执行make指令。然后即可安装成功。可以将最重要的文件redis-cli redis-server 放在path目录中去,这样可以直接作为命令来执行,来开启reids服务器和客户端。可以执行按装测试。使用的时候,需要先开启客户端,使用 sudo service redis-server start 来进行开启。可以使用ps和netstat命令来查看工作状态执行redis-cli命令来开启客户

2021-10-25 20:28:43 2147 1

原创 C++ primer读书笔记

容器顺序容器组成: vector(可变长数组),array(不可变长数组),list(双向链表),forward_list(单向链表),deque(双向队列),string(字符串)共同点:可以 快速顺序 访问(相比于关联容器)。不同点:list和vector之间的区别,也就是 链表和数组之间的区别,在增删改查方面都有区别。但是两者都属于线性表顺序容器和关联容器之间的区别。关联容器一般不提供push_back,push_front这样的位置相关的操作。此外的区别在概述中有讨论。关

2021-10-12 10:44:26 151

原创 2021-9-22-PIL.Image 和 pyplot

PIL.Image 和 pyplotPIL.ImagePIL表示python image lib 表示python图形库。主要功能是对一个图像进行操作。pillow是一个致敬PIL的作品,功能有所相同。PIL.Image是PIL中一个重要的模块。其实现的方式 是依赖比较强大的Image类.也就是PIL.Image.Image类。这个类代表一个图像对象,有一些属性和很多的操作方法。使用这些方法可以方便对图像进行 转换 剪切 旋转 显示(show方法)保存(save方法)等。其思路就是1 使用 工

2021-09-22 22:42:24 305

原创 2021-09-04-Linux磁盘管理认识

Linux文件系统学习磁盘的物理层面的认识磁盘的组成就像是一个烤串,由多个 磁片组成,每一个磁片上有若干圆形的叫磁柱cylinder(或者是叫磁道track),没一个磁柱又由 若干的扇区sector组成。磁盘需要进行分区。分区是文件系统的单位。也就是说一个分区一个文件系统,不同的分区文件系统可以不同。在分区的整体规则方面,也就是分区怎么分,分为MBR和GPT分区。MBR分区:典型特征是<1> 磁盘的第一个sector最重要。里面存有系统启动信息MBR(448B),和分区表(64B)

2021-09-08 10:22:00 90

原创 2021-08-30-tcpdump 命令详解

tcpdump 命令详解综述:在学习TCP网络相关的时候,学习到了tcpdump这个工具。其核心功能可以分为两个部分:对数据包进行过滤,将我们不需要的包抛弃掉。通过filter expression以及一些 选项 实现对我们需要的包进行各种处理。比如将之怎么显示出来,将之下载到一个文件中分述:过滤规则过滤规则主要是filter expression 。其由一个或多个单元构成。每一个单元包括有4个域。分别是proto 表示协议,如tcp ip ether等。默认是和后面的type保

2021-08-30 18:39:48 1774

原创 2021-08-29-第一个bash脚本遇到的问题以及解决方案

写第一个bash脚本遇到的问题以及解决方案1 变量的定义和使用变量的定义很简单,不需要类型声明。但是注意给变量赋值的时候 等号两端 不应该有空格。否则出错。变量的赋值如果使用另外变量的话,应该使用$()将其括起来变量的赋值还可以是 一个命令的输出,前提也是必须用$()括起来。来说明不是一个简单的字符串变量的使用也很简单,需要注意必须加$,可以使用${},时候后者可以使用一些其他的功能,包括我将会讲到的字符串的截取2 变量为字符串的时候,怎样进行截取使用${variable:A:

2021-08-29 21:40:15 333

原创 2021-08-28-grep命令

grep命令综述grep是一个查找指令。查找的模式为 grep 显示选项 '正则表达式' 数据源查找的来源可以是 文件,也可以是标准输出(通过管道来进行使用)。两者使用都很普遍。查找条件可以使用正则表达式,需要加引号。查找结果的显示当然也可以有不同的形式。分述查找来源如果使用文件的话,那么模式为 数据源就是文件名,可以使用 通配符来进行多项的匹配如果使用标准输出的话,可以使用管道查找条件使用正则表达式不用多说。如果需要用到条件逻辑判断,则需要使用egrep命令。显示设置

2021-08-28 22:44:24 111

原创 2021-08-28-export命令

export命令综述:export命令是一个环境变量的 展示(可以展示全部的环境变量),创建, 删除(不再将该环境变量向下传递),修改 的命令展示使用-p选项或者不加选项即可展示当前的所有环境变量创建这里创建 相比于 直接在bash里面创建的优势在于 可以使变量向下传递.也就是向下面创建的环境传递。修改这里的修改一样相当于使变量可以向下传递。注意:export相当于是将一个环境变量导出,使其可以向下传递。直接export 变量也是一样的。也就意味者,普通定义的

2021-08-28 22:22:03 148

原创 windows环境下配置vscode的c++运行环境

主题本文章主要介绍在windows下配置vscode的c++运行环境。配置有多种方法,可以时简单的采用插件,也可以使用配置文件进行配置。1 采用插件这个我看了好几个文章,都是没有采用这种简单粗暴的方法。而是一步步去设置配置文件的参数,比较麻烦。如果你没有那么多闲工夫的话,直接下载个插件就可以进行单个文件的编译运行了。如果你只需要简单地实现快捷键编译运行,那么直接下载一个即可按照指定地快捷键,进行compile and run2 如果你想要进行调试或者想要把这些内容搞得更清楚一些,那么你可能需

2021-07-17 23:08:15 442

原创 20210601学习记录zip/unzip命令-二叉树右视图

主题:日常学习记录,内容包括zip/gzip/unzip–打包压缩相关命令算法题:输出二叉树的右视图内容:1 zip/gzip/unzip–打包压缩相关命令zip的basic command format为zip options archive inpath inpath …archive可以是已经存在的,可以是不存在的。已经存在的一般是进行archive的更新。更新可以使用的模式包括:替换或者添加,只替换,只添加,满足条件进行替换或添加-r 可以完成将inpath的内容或者替换,或

2021-06-01 20:45:00 209

原创 2021-5-27合并区间

主题:学习记录,内容算法题:合并区间内容:1 合并区间问题描述:给出一组区间,请合并所有重叠的区间。请保证合并后的区间按区间起点升序排列。思路:要先进行排序,是对于Interval的排序。按照地一个元素升序进行排序。实现排序最简单的办法就是使用sort这个函数,重写compare函数。注意应该怎么写。返回值最好是bool类型的。当a>b返回true时,那么就会是降序的排列。如果是false,那么就是降序的排列。1可以替代true,0可以替代false。(非零即为true)

2021-05-28 11:45:08 197

原创 2021-5-26学习记录

1 尝试来写一个程序,来进行二分查找的模仿。但是返回的是相同元素的最左边或最右边的元素如果是一般的查找。也就是,当mid的对应元素等于target的时候,直接return。必须要用while(left<=right)。不然会导致错误。如果想要查找相同元素中最左边的那个的话,一个重要的点就是当mid对应元素等于target的时候,不要直接返回,而是将right只想mid。int find2_left(int a[], int start, int end,int target) //在star

2021-05-26 23:28:22 47

原创 2021-5-24数字反转/最小编辑代价/岛屿数量/两个链表地一个公共节点

主题:日常学习记录,包括:算法题:数字反转算法题:最小编辑代价算法题:岛屿数量算法题:两个链表的第一个公共节点内容:1 数字反转题目描述将给出的32位整数x翻转。例1:x=123,返回321例2:x=-123,返回-321你有注意到翻转后的整数可能溢出吗?因为给出的是32位整数,则其数值范围为[−2^{31}, 2^{31} − 1]翻转可能会导致溢出,如果反转后的结果会溢出就返回 0。思路:首先,这个不必进行一个数据结构来存储每一位数字,直接计算就行采用的是,取出每一个

2021-05-24 20:20:02 160

原创 2021-5-22字符串char和string

-------------------char数组的初始化相关问题和用char来构建string------------有时候char数组进行构建的方法是直接默认在后面加上了\0了,也就是c字符串的模式。没有\0的时候,cout可能会异常,string构建也可能异常想要构建string不出错,最好char数组最后有一个\0.char a[] = "asdf"; //实际上a[4]已经存在表示为\0,可以转换成功cout<<sizeof(a)<<endl; //输出5if

2021-05-22 23:30:27 112

原创 2021-5-21最长公共子序列

主题:日常学习记录,包括:算法题:最长公共序列参考详细讲解最长公共序列内容:由于认为这个问题十分典型,并且比较难,所以进行单独列出来>问题描述:给定两个字符串str1和str2,输出两个字符串的最长公共子序列。如果最长公共子序列为空,则返回"-1"。目前给出的数据,仅仅会存在一个最长的公共子序列最长公共序列,首先要知道什么叫序列。一个数组的序列表示从中抽出一些元素,这列元素在原来的数组中是按照从前到后排列的,但是不必是连续的。和子序列是有区别的。子序列要求必须是连续的。解决

2021-05-22 23:28:50 70

原创 2021-5-10linux-find命令

------------find命令--------------------命令格式:find [-H] [-L] [-P] [-D debugopts] [-Olevel][starting-point…] [expression]starting-point为一个起点列表,可以多个起点expression:This is a kind of query specification describinghow we match files and what we do with the fil

2021-05-20 23:37:46 232

原创 2021-5-20mysql

记录学习mysql,后续可能有更新1 安装,使用apt install mysql-server 这样安装的有server,也有client,是一个完整的系统2 安装之后,运行server start mysql;就会运行起来(但是后来会发现出现没办法找到服务的问题)3 登录:远程的话,mysql -h hostname -P 端口号 -u username -p password(换行之后填密码)本地的话,省去-h 和 -P ,因为默认是localhost和0,表示本地。-u和-p参数要挨着op

2021-05-20 22:31:46 53

原创 2021-5-19删除链表倒数第k个节点/大数加法/最长公共字串

主题:学习记录,包括:算法题:删除链表倒数第k个节点算法题:大数加法算法题:最长公共子串内容:1 删除链表倒数第k个节点问题描述:给定一个链表,删除链表的倒数第 nn 个节点并返回链表的头指针例如,给出的链表为: 1→2→3→4→5, n=2.删除了链表的倒数第 nn 个节点之后,链表变为1→2→3→5.注意事项:删除一个链表元素的要求是找到这个元素的前一个元素,因此,需要使用两个指针,一前一后,这样,前面指针到达位置时,后面的指针就在其前一个元素。如果是双向链表的话,就不需要这

2021-05-20 22:29:29 49

原创 网络编程记录

主题:学习计算机网络相关,应该会更新的。---------------并发服务器和迭代服务器-------------------并发服务器指的是对于多个客户的请求,可以采用并发的方式来处理迭代服务器指的是对于多个客户的请求,会进行排队,然后逐个处理。一个完全处理完之后,去处理下一个,这种方式会使得客户的体验非常差。并发服务器的实现可以采用多种方式来实现。----------------------osi模型和网际协议族-----------------在网际协议族中,设备驱动程序 完成了物

2021-05-18 22:34:44 54

原创 2021-5-18main函数参数/输入输出总结/errno

主题:日常学习记录,包括:main函数的参数介绍输入输出总结errno机制内容:1 main函数参数对于有形参int argc, char** argv的main函数,实际上表示的是命令行参数,地一个表示参数的个数,第一个传进去的参数总是 可执行的文件名,所以没有命令行参数的话,就是值为1如果加上一些命令行参数(不需要加双引号,但是会当作字符串数组来处理),相应的参数会传到argv参数里,argv[0]总是表示 可执行文件名int main(int argc, char** arg

2021-05-18 22:30:42 492

原创 2021-5-17学习记录寻找第k大/跳台阶/子数组的最大累加和

主题:学习记录,包括:算法题:寻找第K大的数字算法题:跳台阶算法题:子数组的最大累加和内容:1 寻找第K大的数字题目描述:有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。思路:不可以直接在这个函数里进行递归,因为没有函数的递归的条件,因此可以再写一个函数来进行递归。完全是快速排序的思路,只是由于必定有解,再加上有二分查找的性质,因此可以不必使用最外层的条件。不同于快速

2021-05-17 20:44:49 90

原创 2021-5-16git的使用(后续可能还会有更新油)

主题:git的使用。本篇主要是学习git时一些粗浅的学习笔记,可能后面会有更新。因为不够全面。如果想要详细学的话,可以移步廖雪峰的git教程内容:1 git是一个版本控制系统,简单理解就是可以记录一个空间内被追踪文件的每次的修改。git的下载安装很简单。直接用apt install git即可。git需要建立一个respository,这个respository就是版本库,是git的监管区域,可以监管里面的文件,respository建立需要 1 建立一个空文件夹,这是这个respositor

2021-05-17 20:37:21 78

原创 2021-5-14二叉树之字型遍历/寻找和为0的三个元素/ifconfig命令/tcpdump

主题:日常学习记录,包括:算法题:二叉树之字形遍历算法题:寻找和为0的三个元素命令:ifconfig命令:tcpdump内容:1 二叉树之字形遍历问题描述:给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)例如:给定的二叉树是{3,9,20,#,#,15,7},该二叉树之字形层序遍历的结果是[[3],[20,9],[15,7]]思路:仍然是之前的层序遍历的思路,只是分当前为单数层还是双数层,当为双数层的时候,需要从右到左

2021-05-14 23:00:15 92

原创 2021-5-13学习记录

主题:昨天鸽了,实际上是因为昨天写的题有点少,没好意思发,嘿嘿嘿。今日涉及算法题:合并两个有序数组算法题:链表中的节点每k个一组进行反转算法题:合并有序链表算法题:二叉树的层序遍历内容:1 合并两个有序数组问题描述:合并两个有序数组,其中一个数组A有足够大的空间,可以容纳合并后的数组解决思路:比较法:如果可以使用一个额外的数组的话,可以首先创建一个数组空间作为整合后的数组的容器。双指针,分别指向两个数组的末尾元素,进行比较,如果A的末尾元素>B的末尾元素的话,就把A的末尾元素

2021-05-13 23:03:52 63

原创 2021-5-10矩阵最小路径/判环/用栈实现队列/虚表实际存储方式和内容规则

主题:日常刷算法题,今天涉及到的有:虚表的实际存储方式和内容规则算法题:矩阵的最小路径问题(动态规划实现)算法题:判断有没有环算法题:用栈来实现队列操作,以及优化内容:1 矩阵的最小路径问题(动态规划问题)问题:给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和。基本思路:思路1:动态规划的状态转换:假设现在处于一个矩阵的元素上,这个元素对应位置上的到右下角的最小路径应该是

2021-05-10 22:47:11 87

原创 2021-5-9学习记录-最长回文子串/找出数组中出现次数超过长度一半的数

主题:日常学习系列,包括算法题:最长回文子串,采用动态规划思想实现算法题:找出数组中出现超过长度一半的数代码:#include <stdio.h>#include <iostream>using namespace std;int main(){ //----------------最长回文子串(使用动态规划思想来实现)-------------//思路:一次遍历所有子串,通过设置left和right两个指针。//判断每一个子串是不是一个回文子串,当是

2021-05-09 23:27:39 101

原创 2021-5-8学习记录

主题:日常学习记录,包括算法题:斐波那契数列算法题:带重复值的二叉查找结构体的内存对齐代码:#include <stdio.h>#include <iostream>#include <string>using namespace std;struct A { char c = 'r'; short s = 12; int i = 100; //int a = 12; void* v = NULL;}; int main(){

2021-05-08 23:41:35 40

原创 2020-5-1学习记录

主题:日常学习记录系列。包括:消息队列通信(接收部分)以及消息队列的管理缺页中断步骤和与一般中断的不同之处fork函数和exec函数配合使用。exit和wait函数的配合使用页表寻址机制(二级三级四级)缺页置换算法线程之间通信方式代码:#include <stdio.h>#include <iostream>#include <sys/types.h>#include <unistd.h> //fork函数#include &lt

2021-05-01 22:49:38 59

空空如也

空空如也

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

TA关注的人

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