自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【万字详解Linux系列】Linux常用指令总结

文章目录一、ls及常用选项(1)选项-l(2)-a选项二、clear三、pwd1.引入库2.读入数据总结一、ls及常用选项语法:ls [选项] [目录或文件]功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。结果如下可以看到,我当前目录下有gdb、install.sh、lesson3、lesson4、lesson5五个文件。这个指令就相当于Windows下双击一个目录进入后展示出所有的文件,只不过在Windows下这一过程时自动的。(1)选项-ll

2021-08-04 00:21:38 22733 100

原创 数据结构(四):二叉树

文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:在介绍堆的过程中可能用到树的知识提示:以下是本篇文章正文内容。一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsim

2021-05-07 20:03:57 27857 8

原创 2023BUAA信息论期末大作业(Python实现信源-编码-信道-译码-信宿通信过程)

以下内容是我和@Rg猿、@murmurto两位大佬共同完成的,所有内容仅是我们对作业要求和课程内容的理解,难免存在纰漏和错误,发布在这里仅供参考,切勿抄袭。

2023-06-10 23:51:47 2021

原创 【零基础学Python】运算符

这里主要需要说明的就是浮点数使用 == 比较时会有一定的风险,因为浮点数在内存中的存储和表示一般是存在误差的,这样的误差看起来很小,但在运算时可能被放大,导致 == 出现误判。下面是浮点数的正确比较方法,由于大多数浮点数在存储时都是有误差的,所以只要给一个能接受的误差限度,如果两个浮点数的差距比这个误差限度小,那么就认为这两个浮点数是相等的。关系运算符不仅可以比较数字之间的关系,还可以比较字符串的“大小”,比较的依据是ASCII码,从前往后对应的字符小则小,若相等则继续向后比较。这样就会输出True。

2022-10-22 19:01:46 1348 2

原创 【零基础学Python】动态类型、注释、输入与输出

动态类型使用起来更方便、更灵活,但这也导致了它可能会出现许多问题,所以动态类型也是有利有弊的。

2022-10-08 15:51:43 1175

原创 【零基础学Python】print、变量和类型

由于大部分读者应该有C语言编程的基础,所以文章中可能会有许多地方与C语言进行类比,以便理解和掌握。

2022-10-07 16:13:34 3660

原创 【C++】多态

文章目录概念一、多态的定义及实现1.多态的构成条件2.virtual关键字和虚函数3.虚函数重写4.虚函数重写的三个例外(1)协变(2)析构函数重写①不需要重写虚构函数②需要重写析构函数(3)子类的虚函数可以不用virtual修饰5.final6.override二、抽象类1.概念2.接口继承和实现继承2.读入数据总结概念通俗来说就是多种形态,具体一些就是对于某个行为,当不同的对象去完成时会产生出不同的状态。再进一步到C++中,就是函数调用的多种形态,这一特性可以让我们在调用函数时更加灵活。多态又

2022-05-21 11:56:46 7181 1

原创 【C++】继承

文章目录一、什么是继承1.概念2.定义(1)格式(2)继承关系和访问限定符(3)继承后基类成员的访问权限二、基类和派生类赋值转换1.对象2.指针和引用三、一、什么是继承1.概念继承(inheritance)机制是面向对象程序设计中使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生的新类,称派生类(或子类),被继承的类称基类(或父类)。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。之前接触的复用都是函数复用,继承是类设计层次的复用。

2022-04-23 17:28:08 11061 4

原创 【C++】输入输出流(IO流)

文章目录一、C语言的输入输出二、什么是流三、C++的IO流1.概览2.标准IO流(1)cin、cout、cerr、clog(2)cin、cout与scanf、printf(3)输入输出重载(4)getline(5)循环输入2.文件流(1)ifstream、ofstream感谢阅读,如有错误请批评指正一、C语言的输入输出C语言中最常用到的输入输出方式就是scanf()与printf()。 scanf()是从标准输入设备(键盘) 读取数据,并将值存放在一个或一些变量中;printf()是将指定的文字/字符

2022-04-21 10:07:32 9089 9

原创 【C++】模板进阶

文章目录前言一、非类型模板参数1.引出2.概念3.注意(1)非类型模板参数必须是整型(2)非类型模板参数是常量(3)缺省模板参数二、模板的特化1.概念2.函数模板的特化3.类模板的特化4.偏特化三、模板分离编译1.什么是分离编译2.模板的分离编译四、模板的优缺点1.优点2.缺点感谢阅读,如有错误请批评指正前言这篇文章是【C++】模板初阶 的进阶部分。一、非类型模板参数1.引出现在需要一个定长100的数组类,很容易设计出如下的类。#define N 100template<class

2022-04-18 20:25:14 995 7

原创 【网络】网络编程

文章目录一、预备知识1.源IP地址、目的IP地址2.端口号(port)PID vs PORT3.TCP、UDP(1)TCP(2)UDP4.网络字节序函数5.IP地址的表示二、socket编程函数1.socket(1)domain(2)type(3)protocol(4)返回值2.bind(1)sockfd(2)addr(3)addrlen3.recvfrom4.不同类型IP地址之间的转换函数三、简单的UDP网络程序1.服务器实现2.服务器的主函数总结一、预备知识1.源IP地址、目的IP地址源IP地址

2022-04-04 15:06:01 5443 8

原创 【网络】网络基础(一)

文章目录前言一、计算机网络背景1.网络发展(1)独立(2)网络互联(3)局域网LAN(4)广域网WAN二、网络协议1.OSI七层模型(1)介绍(2)结构2.TCP/IP模型(1)介绍(2)结构三、网络传输基本流程1.数据包封装和分用(1)介绍(2)过程2.TCP/IP通信过程四、网络中的地址管理1.IP地址2.认识MAC地址感谢阅读,如有错误请批评指正前言本篇内容只是对网络的一个简单介绍,并不涉及太多深层次的知识。

2022-04-02 11:34:44 2558 2

原创 【万字详解Linux系列】多线程(下)

文章目录前言一、线程同步1.概念2.条件变量3.代码实现二、使用步骤1.引入库2.读入数据总结前言由于多线程部分内容过多,所以本文接着【万字详解Linux系列】多线程(上)向后介绍多线程相关的内容。一、线程同步1.概念在保证数据安全的前提下,让线程按照某种特定的顺序访问临界资源,从而高效使用临界资源。2.条件变量条件变量就相当于实现进程互斥中的互斥量,是Linux下实现进程同步的一种机制。可以理解为描述临界资源是否就绪的一个数据化变量。注意条件变量不保护临界资源,所以条件变量常和互斥量(

2022-03-28 10:08:22 1642 8

原创 【万字详解Linux系列】多线程(上)

文章目录一、线程1.概念2.优点3.缺点4.线程异常二、进程 VS 线程1.进程和线程2.进程的多个线程共享总结一、线程1.概念在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。一切进程至少都有一个执行线程。线程在进程内部运行,本质是在进程地址空间内运行,也就是说,进程和线程共享进程地址空间。运行如下代码,之前讲到用fork创建子进程时,由于写时拷贝,子进程对数据的修改不会影响父进程,但这里vfork使子进程和父进程共享进程地址空间,所以

2022-03-23 16:56:38 4624 2

原创 【万字详解Linux系列】进程信号

一、信号简介1.查看信号2.信号的本质3.信号的记录和发送4.从键盘输入的信号5.signal自定义信号6.处理信号的一般方式二、信号产生1.通过终端按键(键盘)产生信号Core Dump(核心转储)2.程序异常事后调试3.调用函数(1)kill函数(2)raise函数(3)abort4.由于软件条件产生信号(1)SIGPIPE(2)SIGALRM5.硬件异常产生信号三、信号阻塞1.相关概念2.内核中的表示3.sigset_t4.信号集操作函数(1)对信号集

2022-03-16 14:23:17 4283 4

原创 【万字详解Linux系列】进程间通信(IPC)

文章目录一、进程间通信1.目的2.如何通信3.分类二、管道1.概念2.匿名管道(1)实现父子进程间通信(2)fork角度的理解(3)文件描述符角度的理解(4)匿名管道特点(5)四种情况(6)管道的大小3.命名管道(1)命令行使用命名管道(2)代码使用命名管道4.命令行中的管道|三、System V1.介绍2.基本原理3.shmget函数①key②SIZE③shmflg4.创建共享内存5.删除共享内存6.关联、去关联共享内存7.用共享内存实现进程间通信

2022-03-08 20:32:31 3234 7

原创 【Linux小练习】打包并使用动静态库

文章目录前言一、打包静态库1.函数声明和函数实现2.makefile二、使用静态库三、动态库感谢阅读,如有错误请批评指正前言在【万字详解Linux系列】文件系统、动静态库 中提到了文件系统和动静态库,本文分别打包一个动、静态库并使用它们来加深对动静态库的理解。一、打包静态库1.函数声明和函数实现先生成两个.h的函数声明和两个同名.o的函数实现文件,然后打包加法、减法静态库(这里重点是打包静态库的过程,所以代码部分使用简单的加减法)

2022-03-07 11:54:00 889 3

原创 【万字详解Linux系列】文件系统、动静态库

文章目录一、inode二、文件系统1.磁盘二、使用步骤1.引入库2.读入数据总结一、inode通过ls的-i选项可以看到显示的文件属性最前面多了一列数字(两两不重复),它们就是文件的inode编号。磁盘文件是由文件内容和文件属性(也叫元信息)构成的,例如ls -l显示的就是文件的属性,cat命令显示的就是文件的内容。Linux下将文件内容和文件属性进行分离存储,保存文件属性的结构就是inode,也就是说inode是一个文件的属性

2022-03-05 16:05:46 1621 5

原创 【万字详解Linux系列】基础IO

前言(1)当前目录(2)stdin、stdout、stderr一、open(1) 标志位(2) O_WRONLY(3) O_CREAT二、close,read,write三、文件描述符1.概念2.原理3.分配规则四、重定向1.输出重定向2.再谈缓冲区(1)缓冲方式(2)缓冲区3.输入重定向4.追加重定向5.stdout和stderr五、dup2感谢阅读,如有错误请批评指正

2022-03-03 11:38:05 1616 6

原创 【Linux小练习】模拟简易的shell

文章目录一、进程程序替换一、pandas是什么?二、使用步骤1.引入库2.读入数据总结一、进程程序替换一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.f.

2022-02-26 18:20:46 3901 9

原创 【万字详解Linux系列】进程控制

文章目录一、环境变量1.基本概念2.常见的环境变量(1)PATH(2)HOME(3)SHELL(4)HISTSIZE(5)SSH_TTY3.与环境变量相关的指令4.在代码中获取环境变量(1)argc和argv2.envp一、pandas是什么?二、使用步骤1.引入库2.读入数据总结一、环境变量Windows下的环境变量Linux下的环境变量(用env命令查看)1.基本概念环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数。例如:我.

2022-02-24 11:06:35 3441 3

原创 【Linux小练习】进度条程序

简单的进度条程序,多动图展示效果。

2022-02-21 08:19:38 12988 34

原创 【万字详解Linux系列】进程概念

文章目录一、冯·诺依曼体系结构1.冯·诺依曼体系结构2.从冯·诺依曼体系结构理解软件行为二、操作系统(OS)三、进程1.概念2.进程控制块PCB(process control block)四、task_struct1.标示符2.状态3.优先级4.程序计数器2.读入数据总结一、冯·诺依曼体系结构1.冯·诺依曼体系结构常见的计算机(如笔记本)、不常见的计算机(如服务器),大都遵守冯·诺依曼体系结构。那么什么是冯·诺依曼体系结构呢?以C语言为例,当遇到加减乘除模运算时,运算器进行运算,当遇到逻辑判.

2022-02-19 17:04:11 2432 8

原创 北航2022计算机软件基础期末C++复(预)习

文章目录写在前面一、C++最基础的知识二、关于继承1.定义格式2.继承关系和访问限定符3.同名函数的隐藏4.切片三、往年题1. 2012年2. 2013年3. 2014年写在最后写在前面这篇文章只是为了帮助大家应付考试中C++的内容,学不到什么真正的知识,内容也只是根据12-14三年的期末试题来写。数据结构的内容可以看我其他的博客。提示:以下是本篇文章正文内容一、C++最基础的知识C++是C语言的提升,C的内容在C++内规则完全不变。#include <iostream> //包

2022-01-06 23:39:50 3825 8

原创 【C++】STL:list的使用及模拟实现

文章目录一、list的介绍二、list的使用1.构造函数2.遍历3.数据的插入与删除(1)尾部的插入与删除(2)头部的插入与删除(3)任意位置插入与删除三、总结一、list的介绍list是可以在常数范围内在任意位置进行效率为O(1)的插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素,关于双向链表的细节可以移步数据结构(二):链表。二、list的使用1.构造函数常用的构.

2021-09-25 22:13:10 982 15

原创 【C++】STL:vector的使用及模拟实现

文章目录一、vector的介绍二、vector的使用1.构造函数2.遍历3.数据的插入与删除3.resize和reserve三、迭代器失效问题四、vector的模拟实现总结一、vector的介绍vector是表示可变大小数组的序列容器,采用连续的存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。包含在< vector >头文件下。二、vector的使用STL之所以好用,不.

2021-09-20 13:24:19 2567 26

原创 【万字详解Linux系列】Linux开发工具(yum,vim,gcc/g++,gdb,make/makefile)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、软件包管理器yum1.什么是软件包:2.ping3.查看所有软件包4.安装软件包5.卸载软件包二、编辑器vim1.模式2.模式间的转变2.命令模式(Normal mode)二、使用步骤1.引入库2.读入数据总结一、软件包管理器yum1.什么是软件包:在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序。但是这样麻烦、不便于操作,于是一些人把常用的软件提前编译好, 做成软件包(可以理

2021-08-09 17:31:00 6786 52

原创 【万字详解Linux系列】权限管理

文章目录用户一、pandas是什么?二、使用步骤1.引入库2.读入数据总结用户Linux下有两种用户:超级用户(root)和普通用户。超级用户(root):可以在自己的Linux系统下做任何事情,几乎没有限制。普通用户:在自己的主工作目录(home)下做自己的工作以及在系统上做有限的工作,并且在进行一些操作时会受到权限的限制。Linux是多用户操作系统,指的是多普通用户,超级用户(root)一般只有一个。Linux中的权限是用来限制普通用户的,超级用户(root)几乎没有限制。超级用户(roo

2021-08-06 10:48:07 1381 8

原创 【C++】STL:string的模拟实现

前言在【C++】STL(一)string类的使用一文中已经对string类进行了简单的介绍,一般来说只要会正常使用即可,下面来模拟实现string类,最主要是实现string类的构造、拷贝构造、赋值运算符重载以及析构函数。一、四个默认成员函数1.构造函数构造函数的实现思路就是给_str新开一片空间,并把参数中的字符串拷贝到新开的空间内。class String{public: String(const char* str = "") :_str(new char[strlen(str)

2021-07-26 14:48:21 1813 14

原创 【C++】STL:string的使用

文章目录前言一、 标准库中的string类1.string类2. string类的常用函数接口二、使用步骤1.引入库2.读入数据总结前言C语言中没有字符串这一类型,只能通过char数组来间接实现,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,而且底层空间需要用户自己管理,可能还会非法访问。一、 标准库中的string类1.string类string是表示字符串的字符串类,该类的接口与常规容器的接口基本相同,再添加了

2021-07-23 22:49:42 2058 22

原创 【C++】模板初阶

文章目录一、泛型编程二、函数模板1.函数模板概念2.函数模板格式3.函数模板的实例化三、类模板1.类模板的定义2.类模板的实例化感谢阅读,如有错误请批评指正一、泛型编程以交换两个变量的值为例:代码如下:void Swap(int& a, int& b) { int temp = a; a = b; b = temp;}void Swap(double& a, double& b) { double temp = a; a = b; b = tem

2021-07-22 21:11:29 360 22

原创 【C++】友元+内存管理

文章目录一、友元1.友元函数2.友元类二、C语言动态内存管理的方式三、 C++内存管理方式1.new/delete操作内置类型2.new和delete操作自定义类型四、 malloc/free和new/delete1.共同点2.不同点感谢阅读,如有错误请批评指正一、友元友元分为友元函数和友元类。友元提供了一种突破封装的方式,有时提供了便利。但是友元会增加耦合度,破坏了封装,所以友元不宜多用。1.友元函数如果想要用cout直接输出日期而不是用成员函数来间接输出,就需要重载>>来实现。

2021-07-21 22:39:03 1088 15

原创 【C++】类和对象4(初始化列表、静态成员、内部类)

文章目录一、再谈构造函数1.构造函数体内赋值2.初始化列表(1)格式(2)用处3.静态成员二、类成员默认值(C++11)三、内部类感谢阅读,如有错误请批评指正一、再谈构造函数1.构造函数体内赋值在创建对象时,编译器自动调用构造函数,给对象中各个成员变量一个合适的初始值。代码如下(示例):class Date{public: Date(int year, int month, int day) { _year = year; _month = month; _day = day

2021-07-10 14:50:30 633 7

原创 【C++】类和对象3(析构、拷贝构造、赋值运算符重载、const成员函数)

文章目录一、析构函数1.概念2.特性(1)函数名(2)无参数无返回值(3)一个类有且只有一个析构函数,编译器自动调用(4)编译器生成的默认的析构函数二、拷贝构造函数1.概念2.特性(1) 拷贝构造函数是构造函数的一个重载(2) 拷贝构造函数的参数(3)系统生成的默认的拷贝构造函数三、赋值运算符重载1.运算符重载总结一、析构函数1.概念上一篇文章中讲到构造函数来初始化一个对象,那么析构函数的作用是什么呢?已创建的对象在销毁(也即生命周期结束)时会自动调用析构函数,完成类的一些资源清理工作。注意:构

2021-07-09 21:27:45 1537 8

原创 【C++】类和对象2(this指针、默认成员函数、构造函数)

文章目录一、this指针1.this指针的引入2.this指针的特性3.两个小问题二、使用步骤1.引入库2.读入数据总结一、this指针1.this指针的引入这里实现一个日期的类,之后的内容以这个类为例。代码如下(示例):class Date{public:private: int _year;//年 int _month;//月 int _day;//日};但是想要修改或使用的成员变量都是private的,在类外无法访问,所以需要在public中定义成员函数对成员变量进行操

2021-07-08 16:39:25 1121 11

原创 【C++】类和对象1(访问限定符、作用域、类对象)

文章目录前言一、类的引入二、类的定义三、类的访问限定符及封装1.访问限定符2.封装四、类的作用域五、类对象模型1.如何计算类对象的大小2.类对象的存储方式猜测(1)类实例化出的对象中包含所有成员(2)类实例化出的对象中只保存成员变量,成员函数存放在公共的区域(代码段)感谢阅读,如有错误请批评指正前言C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。一、类的引入C语言中,结构体

2021-07-07 16:49:48 1134 7

原创 【C++】基础语法2(引用,内联,auto,范围for,nullptr)

文章目录一、引用1.概念2. 引用特性3.常引用3.引用的使用场景(1)做参数(2)做返回值(4)引用和指针的区别二、使用步骤1.引入库2.读入数据总结一、引用1.概念引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。用法:类型& 引用变量名(对象名) = 引用实体如下面的代码int main(){ int a = 0; int& b = a;//b是a的引用 int& c = a;//c

2021-07-06 13:25:27 933 24

原创 【C++】基础语法1(关键字、命名空间、缺省参数、函数重载)

文章目录前言一、C++关键字(C++98)二、C++的第一个程序二、命名空间1.命名冲突问题2.命名空间的定义3.命名空间的使用(1)加命名空间名称及作用域限定符::(2)使用using将命名空间中成员引入(3)使用using namespace 命名空间名称引入三、C++输入输出四、缺省参数1.概念2.缺省参数分类(1)全缺省:所有的参数都给出了默认值(2)半缺省:部分参数给出默认值五、函数重载感谢阅读,如有错误请批评指正前言前面写了C语言和数据结构的部分内容,从本篇文章开始正视进入C++相关的内容

2021-07-05 17:59:32 537 5

原创 数据结构(六):排序(二)

文章目录前言一、快速排序1.单趟排序(1)左右哨兵法(2)挖坑法2.非递归实现快速排序3.优化:三数取中法二、归并排序1.递归2.非递归实现三、计数排序排序算法的比较感谢阅读,如有错误请批评指正前言在数据结构(六):排序(一)中介绍了直接插入排序、希尔排序、选择排序、堆排序和冒泡排序,本文继续介绍剩下的快速排序、归并排序和计数排序一、快速排序快速排序的基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均.

2021-05-30 16:47:28 713 22

原创 数据结构(六):排序(一)

文章目录一、排序二、使用步骤1.引入库2.读入数据总结一、排序示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('ignore')import ssl

2021-05-27 18:35:38 2290 20

空空如也

空空如也

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

TA关注的人

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