![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
课内课程笔记
文章平均质量分 68
你别教我打游戏
直面困难,重视过程,追求结果,淡忘过去。
展开
-
C++ 实现哈夫曼树、哈夫曼编码、支持文本的压缩及解压缩功能
注释写的以及很详细了。以后可以考虑把它和压缩文本串的LZW算法结合起来,然后真的用二进制位去存储0和1,做一个真正有实际用处的压缩解压工具。#include <queue>#include <string>#include <iostream>#include <unordered_map>#include <utility>using namespace std;class HuffmanCode {private:原创 2021-04-22 15:22:59 · 504 阅读 · 0 评论 -
MacOS 安装 pip3的注意点、使用 pip
安装 pip首先安装 pip 和你使用Python的版本有关。但是不论是 pip、pip3 安装命令都是:# easy_install 一般是默认自带的sudo easy_install pip;我的python是python3。安装之后,检查。pip3 --version# jisongyang@SongyangJi-MacBookAir ~ % pip3 --version# pip 21.0.1 from /Library/Python/3.8/site-packages/pip原创 2021-03-27 00:11:44 · 1569 阅读 · 0 评论 -
C++标准模板库(STL)常见容器与算法介绍
文章目录`vector`vector的声明vector的元素访问常用函数`string`定义string的元素访问常用函数vectorvector,向量,是一种变长数组。长度根据需要变化而自动改变的数组。头文件#include <vector>vector的声明vector<typename> name;typename可以是任何基本类型,int ,double char结构体类型,类类型。甚至还可以是STL标准容器,如vector,queue,set,map等等原创 2021-03-04 18:26:32 · 195 阅读 · 0 评论 -
C++ Primer Plus读书笔记—— 8.5 函数模板
用途函数模板允许以泛型(而不是具体的类型)来编写程序,其中的泛型可以用具体的类型来替代。语法创建函数模板template <typename T>……template <class T>void f(T a,T b)void f(T a[],T b[],int n) //模板函数里面的函数参数不一定都是泛型重载的模板简单来说,和常规函数的重载类似。显式具体化为特定类型提供具体化的模板。举书上的例子吧。比如struct Job{string name原创 2021-03-04 18:25:09 · 78 阅读 · 0 评论 -
压缩文本串的LZW算法
#include <iostream>#include <string>#include <unordered_map>#include <vector>using namespace std;string cs[30];string lzw_compress(const string&s){ int id , len = s.size(),i = 0; string buf = "",res = ""; uno原创 2021-03-04 18:20:07 · 173 阅读 · 0 评论 -
JavaSE 期末复习大纲 —— 语法基础
循环PPT chapter 5、6重点:switch-case数组PPT 8多维数组面向对象PPT 7继承PPT 9多态PPT 10重载与覆盖异常PPT 11递归PPT 12链表PPT 13finalstatic原创 2021-01-06 20:02:27 · 181 阅读 · 0 评论 -
计算机组成原理 —— 第八章 CPU的结构和功能
文章目录第八章 CPU的结构和功能8.1 CPU的结构8.2 指令周期指令周期指令周期流程CPU工作周期的标志8.3 指令流水系统的并行性指令流水原理影响指令流水线性能的因素流水线性能评价标准流水线结构8.4 中断系统第八章 CPU的结构和功能8.1 CPU的结构其中,ALU是算法逻辑单元,在第六章介绍;中断系统在第五章和第8章介绍;CU是控制单元,在第9章介绍。8.2 指令周期由于后面会详细讲述这部分内容,所以这里简略一点。指令周期取出并执行一条指令所需的全部时间。指令周期原创 2021-01-02 21:44:31 · 207 阅读 · 0 评论 -
计算机组成原理 —— 第十章 控制单元的设计
文章目录第10章 控制单元的设计10.1 组合逻辑设计CU 外特性微操作的节拍安排组合逻辑设计步骤10.2 微程序设计基本思想及具体做法机器指令对应的微程序微程序控制单元的基本框图组合逻辑控制方式和微程序控制方式的比较第10章 控制单元的设计10.1 组合逻辑设计CU 外特性微操作的节拍安排假设采用 规整的同步控制方式一个 机器周期 内有 3 个节拍(时钟周期)这里和第9章 控制信号序列的分析差不多,只不过多了节拍的安排罢了安排微操作时序的原则原则一 注意微操作的 先后顺序原创 2021-01-02 20:39:50 · 841 阅读 · 0 评论 -
计算机组成原理 —— 第四章 存储器
文章目录第四章 存储器4.1 概述存储器分类存储器的层次结构4.2 主存储器概述半导体存储芯片简介随机存取存储器 ( RAM )只读存储器(ROM)存储器与CPU的连接存储器容量的拓展连接要点(重点)存储器的校验提高访存速度的措施(了解即可)调整主存结构4.2 高速缓冲存储器(Cache)概述Cache的工作原理Cache的基本结构Cache的读写操作Cache 的改进Cache-主存的地址映射(重点)替换算法4.4 辅助存储器第四章 存储器4.1 概述存储器分类按存储介质分类按存取方式分类按原创 2021-01-02 20:37:18 · 930 阅读 · 0 评论 -
计算机组成原理 —— 逻辑代数
文章目录逻辑代数基本逻辑复合逻辑运算规则和基本定律交换律、结合律、分配律、德摩根律吸收规律基本定理(了解)代入定理对偶定理反演定理逻辑函数的表示法逻辑电路逻辑代数式真值表卡诺图(重点)逻辑函数的标准形式概述最小项及“与或”标准形式最小项之和的标准形式将逻辑函数展开为两种标准形式的方法逻辑函数的化简(重点)代数法卡诺图法逻辑代数基本逻辑与或非复合逻辑与或非(最常用)或非与或非异或运算 (A^B = A && !B || !A &am原创 2021-01-02 20:36:31 · 2092 阅读 · 0 评论 -
计算机组成原理 —— 第九章 控制单元的功能
文章目录第九章 控制单元的功能9.1 微操作命令的分析取值周期间址周期执行周期中断周期9.2 控制单元的功能控制单元的外特性控制信号举例9.3 多级时序系统机器周期时钟周期机器速度与机器主频的关系9.4 控制方式同步控制方式异步控制信号联合控制方式人工控制方式第九章 控制单元的功能9.1 微操作命令的分析控制单元(CU)具有发出各种微操作命令(控制信号)序列的功能。假设CPU内部有4个寄存器,PC程序计数器:存放现行指令的地址,并且具有计数功能。MAR存储器地址寄存器 :MDR原创 2020-12-30 23:29:01 · 1119 阅读 · 0 评论 -
计算机组成原理 —— 第七章 指令系统
文章目录第七章 指令系统7.1 机器指令操作码地址码7.2 操作数类型和操作类型操作数类型操作类型7.3 寻址方式(重点)指令寻址数据寻址7.4 指令格式7.5 RISC和CISCRISC特征CISC 特征第七章 指令系统7.1 机器指令格式: 操作码 + 地址码操作码拓展操作码技术注意乘法原理、加法原理的使用。操作码的位数随地址数的减少而增加二地址指令操作码,每减少一种可多构成 2^4 = 16 种一地址指令 (如果一个地址码占4位)。地址码按照最原始的、最暴力的方式,应该是原创 2020-12-29 22:26:20 · 773 阅读 · 0 评论 -
生成函数(常见幂级数、广义二项式定理、生成函数的应用)
文章目录生成函数引言定义有关幂级数的有用事实形式幂级数幂级数的和、积广义二项式定理常见的生成函数使用生成函数解决计数问题使用生成函数求解递推关系使用生成函数证明恒等式生成函数引言定义实数序列a0、a1、a2、……、ana_0、a_1、a_2、……、a_na0、a1、a2、……、an的生成函数,是无穷级数G(x)=∑k=0∞ak∗xk=a0+a1∗x+a2∗x2+……+ak∗xk+……G(x)=\sum_{k=0}^{\infty} a_k*x^{k}=a_0+a_1*x+a_2*x^2+…原创 2020-11-08 23:15:17 · 1863 阅读 · 0 评论 -
二叉树的各种遍历(递归与迭代实现)以及使用中序、(前序 | 后序)还原二叉树
这里就用力扣上面的各种题目要模板了。二叉树的遍历层次遍历102. 二叉树的层序遍历class Solution {public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> ans; if(!root) return ans; queue<TreeNode*> q; q..原创 2020-10-21 21:42:07 · 141 阅读 · 0 评论 -
C++实现队列与循环队列(queue、deque)的循环数组描述
文章目录队列与循环队列ADT实现方案循环数组完整代码对拍测试队列与循环队列ADT队列 bool empty(); int size(); T& front(); void pop(); void push(const T&);循环队列循环队列比队列要多几个功能—— 允许在头部插入,在尾部删除,查看尾部元素。 bool empty(); int size(); T& front()原创 2020-10-09 15:24:22 · 502 阅读 · 0 评论 -
线性表 —— 线性表的数组描述和链表描述
文章目录线性表抽象基类迭代器类的层次设计使用方法变长数组描述关于构造函数、析构函数、赋值、复制关于扩容、减容性能分析完整代码及测试链表描述线性表抽象基类这个抽象基类实际上约定了一个线性表应该具有那些功能。//// Created by MAC on 2020/9/26.//#ifndef DATASTRUCTURE_LINEARLIST_H#define DATASTRUCTURE_LINEARLIST_Htemplate<class T>class LinearList原创 2020-10-09 14:59:53 · 230 阅读 · 0 评论 -
C++生成全排列的库函数 next_permutation
#include <iostream>#include <algorithm>using namespace std;int main(){ int n ; int a[10000]; while(cin>>n && n){ for(int i=0;i<n;i++) cin>>a[i]; sort(a,a+n); do { for(in原创 2020-09-29 14:51:09 · 231 阅读 · 0 评论 -
c++ 模板类继承-成员变量不可访问的问题
在编写代码的时候,发现一个现象:模板类从一个父模板类继承后,不能访问其内部的protected成员变量,提示:not declare;普通类从一个父模板类继承后,可以访问其内部的protected成员变量,可正常编译和使用;对于第1个现象,如果想正常使用需要加上父模板类的域名;模板类继承模板类#include <iostream>namespace test{template <typename T>class Base{public: void Sho转载 2020-09-26 23:11:35 · 2263 阅读 · 2 评论 -
C++ Primer Plus读书笔记 ——13.1.4 派生类和基类的特殊关系 13.3 多态公有继承 13.4 静态联编和动态联编
在公有派生下派生类与基类的关系如果是公有派生,那么派生类一个就是一种特殊的基类,或者说派生类拥有基类的所有方法,所以,派生类对象可以使用基类的方法,除非方法是私有的。基类指针或引用可以在不显式转化为派生类指针或引用的情况下直接指向派生类对象。但注意,上述规则在private派生、protected派生下不适用。多态的实现在Java中,这种多态是默认行为,但是在c++的世界里,必须依赖于虚函数。如何使用virtual关键字class Base{ virtual …… // ..原创 2020-09-24 20:05:10 · 149 阅读 · 0 评论 -
C++ Primer Plus读书笔记 ——13.8 类的设计回顾
默认构造函数复制构造函数原型:Class_Name(const Class_Name &);使用场景:返回类的对象;传对象做函数参数;将新对象初始化为一个同类对象;生成临时对象默认的复制构造函数在有些情况下是不合适的:需要深拷贝;需要更改静态变量。赋值运算符原型:Class_Name& Class_Name::operator=(const Class_Name&);用于处理同类对象的赋值。当然还可以有其他类型然后赋值给另一个类型的对象。同样在需要深拷..原创 2020-09-20 15:07:45 · 78 阅读 · 0 评论 -
C++ 自由存储区是否等价于堆?
文章目录“free store” VS “heap”问题的来源结论“free store” VS “heap”当我问你C++的内存布局时,你大概会回答:“在C++中,内存区分为5个区,分别是堆、栈、自由存储区、全局/静态存储区、常量存储区”。如果我接着问你自由存储区与堆有什么区别,你或许这样回答:“malloc在堆上分配的内存块,使用free释放内存,而new所申请的内存则是在自由存储区上,使用delete来释放。”这样听起来似乎也没错,但如果我接着问:自由存储区与堆是两块不同的内存区域吗?它转载 2020-09-07 15:44:28 · 93 阅读 · 0 评论 -
C++ Primer Plus读书笔记 —— 12.4 返回对象的说明
文章目录返回指向const对象的引用返回指向非const对象的引用返回对象返回const对象返回指向const对象的引用如果返回的对象在调用函数之前就已经存在,那么那么就可以返回引用(无需调用复制狗构造函数),而并不是返回对象。降低了时间和空间开销。但是因为是指向const 对象的引用,所以拿到这个引用的时候,就无法修改这个对象了。所以这种情况常常返回一个常对象的引用(只读不可写)。返回指向非const对象的引用和上面的情况一样的是都是引用,但是不用const修饰。所以可以修改。两个经典的例原创 2020-09-02 11:21:48 · 76 阅读 · 0 评论 -
C++ Primer Plus读书笔记 —— 12 .1.2.3 类和动态内存管理
静态成员变量的声明静态类成员变量是独立于类的对象而存储的。声明时,须指明类型,使用作用域运算符,不使用关键字static。例如:int Class_Name::x = 1;其次,初始化是在实现文件中,而不是在头文件中,否则可能会多次初始化。一种例外情况是,静态数据成员为const类型或枚举类型。...原创 2020-09-01 19:49:36 · 80 阅读 · 0 评论 -
C++ Primer Plus读书笔记—— 11.6 类的自动转换和强制类型转换
其他类型转换为类类型如果类的构造函数只接受唯一一个参数,那么c++允许此参数的类型转换为类类型。举例:// example1class A{ int x;public: A(int x):x(x){}};A a = 1;// example2class A{ int x; double y; public: A(int x,double y = 1.0):x(x),y(y){}};A a = 1;必须只接受一个参数,或者有多个参数同时除原创 2020-08-27 21:41:33 · 147 阅读 · 0 评论 -
C++ Primer Plus读书笔记—— 13.2 继承:is-a关系
这部分内容和c++本身并无太大关系。主要探讨了面向对象设计的几种模式。is-a往往用继承表达这种关系,派生类继承基类的所有特性。这种关系往往表达成is-a-kind-of,也就是子类的对象往往是一种父类的对象。举个例子,苹果是一种水果。has-a如果说一种对象包含了一整个其他的对象,或者说一种对象由其他几种对象组成。这个时候并不适合用继承(派生)来表达这种关系,而是适合使用组合。也就是说,应该将这种对象作为另一种数据成员。比如,午餐由水果、蔬菜、肉构成。use-a有的时候,一个对象.原创 2020-08-26 23:04:19 · 219 阅读 · 0 评论 -
C++ Primer Plus读书笔记 ——— 11.3 友元 15.1 友元
文章目录友元的角色友元的分类友元函数的声明与定义使用友元类友元成员函数互为友元共同的友元友元的角色根据OOP的数据隐藏原则, 一个类的私有数据只有通过给定的公有接口才能去访问。最常用的公有接口就是类的公共成员方法。但是这种访问方式局限性太多,在很多时候不适合解决特定的问题。于是友元提供了另一种共有接口。赋予一个类外的函数和这个类的成员函数相同的访问权限。思考:使用友元是否破坏了OOP的数据隐藏规则?根据前面的分析,发现并没有,友元只是提供了另一种访问类数据的接口罢了,它的地位和公共的成员函数原创 2020-08-21 21:09:34 · 183 阅读 · 0 评论 -
C++ Primer Plus读书笔记—— 10.3 类的构造函数与析构函数
关于C++的构造函数的基本知识就不细讲了,可以看看之前博主发的博客。使用构造函数class A{};A a;A a(1,2);//隐式 1A a = A(1,2);//显式 2 A *pa = new A(2,3); //动态分配内存 ,也是隐式的 3一个注意点隐式调用默认构造函数时,不要使用括号。所谓隐式地调用,就是上面的1 、3 种情况A aa(); //这没有调用A的默认构造函数,实际上它声明了一个返回A对象的函数A *pa = new A(); // 不过.原创 2020-08-19 21:34:43 · 109 阅读 · 0 评论 -
C++ Primer Plus读书笔记—— 7.10 函数指针
获取函数的地址函数名即为函数的地址,在传参的时候注意不要加上括号和参数。原创 2020-08-19 02:12:23 · 100 阅读 · 0 评论 -
CPP指针(2)
文章目录指针(2)函数的指针返回指针的函数指针数组指针的指针`new`和`delete``const`指针`void* `指针引用指针(2)函数的指针函数在编译时被分配给一个入口地址。这个入口地址称为函数的地址,也是函数的指针。函数名代表函数的入口地址int max(int x,int y){ return x>y?x:y;}int min(int x,int y){ return x<y?x:y;}int (*p)(int,int);p = max;p = min原创 2020-08-18 19:57:16 · 380 阅读 · 0 评论 -
c++分割字符串
vector<string> split(const string &s){ vector<string> res; char* p; p = strtok((char*)s.c_str(),"."); while(p){ res.push_back(p); p = strtok(nullptr,"."); } return res;}原创 2020-07-02 22:20:57 · 119 阅读 · 0 评论 -
山东大学JAVA课程设计 —— JAVA开发桌面应用之开发自己的闲鱼交易市场,能聊天,能买卖商品哦!
山东大学 软件 学院高级程序设计语言课程设计(双语) 课程实验报告 学号: 姓名: 吉松阳 班级: 软工1班实验题目:实验学时: 实验日期:实验目的:硬件环境:软件环境:实验步骤与内容:结论分析与体会:附:技术报告一.系统模块架构1.1系统的功能模块组织图1.2 基于C/S模式架构的程序C: ClientS: ServerC/S模式简而言之就是客户端连接到服务端,服务端提供一系列服务。具体地,客户端在界面上所显示的一切东西都原创 2020-05-28 13:07:33 · 3273 阅读 · 14 评论 -
CPP函数
a原创 2020-05-16 07:21:02 · 1817 阅读 · 0 评论 -
CPP多态性与虚函数
文章目录多态性与虚函数面向对象程序设计中的多态性派生类与基类对象之间的赋值虚函数虚析构函数纯虚函数(抽象类)虚函数与虚基类派生类中重定义基类中的重载函数虚函数动态绑定的实现原理多态性与虚函数面向对象程序设计中的多态性多态性(polymorphism)调用同一个函数名,根据需要实现不同的功能。编译时的多态性:静态多态(函数重载、运算符重载)运行时的多态性:动态多态(虚函数)函数重载和运算符重载实现的多态性属于静态多态性,在程序编译时就能决定调用的是哪个函数。静态多态性又称编译时的多态性。静态原创 2020-05-14 01:55:59 · 1159 阅读 · 0 评论 -
CPP继承与派生
文章目录类的继承与派生类的组合类的继承单继承多继承派生类的构造函数和析构函数类的继承与派生类的组合在一个类中以另一个类的对象作为数据成员(子对象),称为类的组合。组合是横向的。类的继承继承是在一个已存在的类的基础上,建立一个新的类。已存在的类称为“基类(base class)”或“父类(father class)”。新建立的类称为“派生类(derived class)”或“子类...原创 2020-05-12 21:15:33 · 880 阅读 · 0 评论 -
CPP数组与字符串
s原创 2020-05-10 21:44:15 · 1314 阅读 · 0 评论 -
CPP自定义类型
自定义类型C++提供了许多基本的数据类型(如int、 float、double、 char等)供用户使用。但是程序需要处理的问题往往比较复杂,已有的数据类型不能满足使用要求。C++允许用户根据需要自己声明一些类型,例如数组就是用户自己声明的数据类型。此外,用户可以自己声明的类型还有结构体(structure)类型、共用体(union)类型、枚举(enumeration)类型、类(class)...原创 2020-05-09 20:05:02 · 879 阅读 · 0 评论 -
离散数学——第四章 代数结构
文章目录第四章 代数结构4.1.前言4.1.1.本章概述4.2.代数系统4.2.1.运算4.2.2.代数系统4.2.3.同态与同构4.2.4.直积4.3.群4.3.1.半群4.3.2.群的概念以及基本性质4.4环与域第四章 代数结构4.1.前言4.1.1.本章概述4.2.代数系统4.2.1.运算运算的定义设A是一个集合,A×AA\times AA×A到AAA上的映射为A上的二元运...原创 2020-05-08 15:18:58 · 2058 阅读 · 0 评论 -
CPP指针(2)
a原创 2020-05-08 05:39:47 · 264 阅读 · 1 评论 -
CPP运算符重载
文章目录函数的重载运算符重载运算符重载的作用运算符重载的方式典型运算符的重载转换构造函数类型转换函数函数的重载1.定义的重载函数必须具有不同的参数个数,或不同的参数类型。编译系统根据不同的参数去调用不同的重载函数,实现不同的功能。2、仅返回值不同时,不能定义为重载函数。运算符重载函数重载是指完成不同功能的函数可以具有相同的函数名。C++编译器根据函数的实参确定应该调用哪一个函数。运算...原创 2020-05-04 01:53:37 · 2453 阅读 · 0 评论 -
CPP类和对象 (2)
文章目录类和对象(2)对象的赋值(=)复制构造函数静态成员(Static)成员Friend函数与类函数模板类和对象(2)对象的赋值(=)类型相同的对象可以相互赋值,相当于类中的数据成员相互赋值(memberwise copy)。这种赋值与对象数据成员的访问权限无关。democlass A{ int x;public: A(int x):x(x){} void ...原创 2020-05-02 19:07:49 · 318 阅读 · 0 评论