【06】【C++】C++继承、虚函数、接口(纯虚函数)
C++继承demo1代码样例
12345678910111213141516171819202122232425262728293031#include <iostream>class Entity {public: float x, y; void Move(float xa, float ya) { x += xa; y += ya; }};class Player : public Entity {public: const char *Name; void PrintName() { std::cout << Name << std::endl; }};int main() { Player player; player.x = 1; player.y = 2; player.Move(5, 5); std::cout << sizeo ...
【05】【C++】C++析构函数
析构函数构造函数是创建一个新的实例对象时运行,析构函数则是在销毁一个对象时运行。析构函数同时适用于栈和堆分配的对象。如果使用new分配一个对象,当你调用delete时,析构函数会被调用。析构函数使用的目的往往是为了释放资源。
代码样例
123456789101112131415161718192021222324252627282930313233#include <iostream>class Entity {public: float x, y; Entity() { x = 0.0f; y = 0.0f; std::cout << "Created Entity" << std::endl; } ~Entity() { std::cout << "Deleted Entity" << std::endl; } void Print() ...
【04】【C++】C++中的枚举
枚举枚举值默认从0开始,类内部的枚举并不是一个命名空间,因为每个实例用的枚举都一样,所以可以不构造实例直接通过类进行访问
12345678910111213141516#include <iostream>class Test {public: enum TestEnum { D, E = 5, F,G,H=1,I,J,K };};int main() { Test test; std::cout << Test::D << Test::E << Test::F << Test::G<< Test::H<< Test::I<< Test::J<< Test::K<< std::endl; return 0;}
1输出为05671234
【03】【C++】C++中的静态
Static关键字static关键字在C++中有两个意思,这取决于上下文,其中之一是在类或结构体外使用static关键字,另一种是在类或结构体内使用static。类外部的static静态变量,意味着你声明为static的符号,链接只是在内部,这意味这它只能对你定义它的翻译单元可见。类内部的static静态变量,将与类的所有实例共享内存,这意味着该静态变量在你类中创建的所有实例中只有一个实例。对于static方法而言,这在告诉编译器这个方法只会在当前翻译单元中被用到,其他翻译单元不会调用,这将会影响链接过程。
静态变量或者函数意味着,当需要将这些函数或变量与实际定义的符号链接时,链接器不会在这个翻译单元的作用域之外寻找那个符号的定义。
类与结构体之外的静态Example 1123456789//main.cpp#include <iostream>int s_val = 10;int main() { std::cout << s_val << std::endl; return 0;}
12//Static.cppst ...
【02】【C++】C++类
C++类C++的类长什么样?12345678910111213141516#include <iostream>class Player{ int x, y; int speed;};int main() { Player player; player.x = 0; player.y = 0; player.speed = 0; return 0;}
以上Class就构成了C++最简单的一个类,但是如果编译就会发现报错,这是因为C++类成员变量不经过任何声明默认就是私有的。
12D:\MyCppProject\untitled\main.cpp:12:12: error: 'int Player::x' is private within this context 12 | player.x = 0;
当定义成如下形式,就可以正常访问
1234567class Player{public: int x, y; int speed;} ...
【Redis】Redis 极简入门课件
Redis 极简入门课件参考视频链接Redis极简入门:纯小白成长为大白,只需4个半小时~_哔哩哔哩_bilibili
教学目标1>了解NoSQL概念
2>了解Redis概念,定位,优点,缺点
3>掌握Redis常用五大类型
4>掌握Redis Key 与Value值设计
5>掌握Redis全局命令
6>掌握Redis 安全与事务操作
7>了解Redis持久化策略
8>了解Redis内存淘汰机制与过期Key清理
9>掌握Java集成Redis操作
10>完成综合案例设计与实现
认识 Redis数据库分类目前数据库分:关系型数据库与非关系型数据库
常用的关系型数据库: Oracle,MySQL,SqlServer,DB2
常用的非关系数据库:Redis,MongoDB,ElasticSearch, Hbase,Neo4j
那啥是非关系数据库呢?此处涉及到新名词:NoSQL
NoSQL最常见的解释是“non-relational”, “Not Only SQL”也被很多人接受。NoSQL仅仅是一个概念,泛指非关系型的数据库,区别 ...
【数据库】数据库杂记(一)之JDBC
数据库杂记(一)之JDBC1. JDBC1.1 JDBC QuickStart使用JDBC操作数据库的步骤
注册驱动
1Class.forName("com.mysql.jdbc.Driver")
获取连接
1Connection conn = DriverManager.getConnection(url,username,password)
定义SQL语句
1String sql = "update...";
获取执行SQL对象
1Statement stmt = conn.createStatement();
执行SQL
1stmt.executeUpdate(sql);
处理返回结果
释放资源
1.2 JDBC API1.2.1 DriverManage(驱动管理类)作用:
注册驱动
1234567//1. 注册驱动//在加载类的时候会调用静态方法 Class.forName("com.mysql.jdbc.Driver")// 向 DriverManager 注册给定驱动程序。新加载的驱动程 ...
【高光谱】如何科学地利用高光谱图像合成对应的RGB图像?
如何科学地利用高光谱图像合成对应的RGB图像?1. 前言参考链接:
色匹配函数是什么? - 知乎 (zhihu.com)
23. 颜色知识1-人类的视觉系统与颜色 - 知乎 (zhihu.com)
色彩空间基础 - 知乎 (zhihu.com)
色彩空间表示与转换 - 知乎 (zhihu.com)
CIE XYZ - freshair_cn - 博客园 (cnblogs.com)
CIE 1931 color space - Wikipedia
CIE 1931色彩空间 - 维基百科,自由的百科全书 (wikipedia.org)
RGB/XYZ Matrices (brucelindbloom.com)
调色名词浅析——Gamma(伽玛)校正 - 知乎 (zhihu.com)
前置条件:
必须有高光谱图像
必须有波段信息,(你需要知道高光谱图像每个通道对应的波长是多少)
对于波段信息,我的波段信息是从软件ENVI中获取的txt文件本文以128波段的高光谱图像为例,txt文件详细内容在文末给出
先上流程图,随后再逐一解释:
2. 计算色匹配函数色匹配函数其实就是如下三条曲线(使用 ...
【算法】Topk问题
TopK问题参考文章:
快速排序的几种常见实现及其性能对比_Sunshine_top的博客-CSDN博客
排序——快速排序(Quick sort)_努力的老周的博客-CSDN博客
面试官最喜爱的TopK问题算法详解 - 知乎 (zhihu.com)
拜托,面试别再问我TopK了!!!架构师之路的博客-CSDN博客
215. 数组中的第K个最大元素 - 力扣(Leetcode)
问题描述:
从arr[1, n]这n个数中,找出最大的k个数,这就是经典的TopK问题。
栗子:
从arr[1, 12]={5,3,7,1,8,2,9,4,7,2,6,6} 这n=12个数中,找出最大的k=5个。
1. 排序
排序是最容易想到的方法,将n个数排序之后,取出最大的k个,即为所得。
伪代码:
12sort(arr, 1, n);return arr[1, k];
时间复杂度:O(n*lg(n))
分析:明明只需要TopK,却将全局都排序了,这也是这个方法复杂度非常高的原因。那能不能不全局排序,而只局部排序呢?这就引出了第二个优化方法。
2. 局部排序不再全局排序,只对最大的k个排序。
冒泡是一个很常 ...
【算法】动态规划
动态规划1. 0-1背包问题通用解题步骤
确定dp数组(dp table)以及下标的含义
确定递推公式
dp数组如何初始化
确定遍历顺序
举例推导dp数组
有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。
背包最大重量为4。
物品为:
重量
价值
物品0
1
15
物品1
3
20
物品2
4
30
问背包能背的物品最大价值是多少?
依然动规五部曲分析一波。
确定dp数组以及下标的含义
对于背包问题,可以使用二维数组,即dp[i][j]表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。
确定递推公式
再回顾一下dp[i][j]的含义:从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。
那么可以有两个方向推出来dp[i][j],
不放物品i:由dp[i - 1][j]推出,即背包容量为j,里面不放物品i的最大价值,此时dp[i][j]就是dp[i - 1][j]。( ...