【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]。( ...
【Java】Java多线程
Java多线程1. 创建线程1.1 创建线程类Java使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流即一段顺序执行的代码。Java使用线程执行体来代表这段程序流。
创建新执行线程有两种方法。一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run 方法。接下来可以分配并启动该子类的实例。创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。
Java中通过继承Thread类来创建并启动多线程的步骤如下:
定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务,因此把run()方法称为线程执行体。
创建Thread子类的实例,即创建了线程对象
调用线程对象的start()方法来启动该线程
代码如下:
测试类:123456789101112public class Demo01 { ...
【PID控制算法】 python模拟PID控制算法
PID控制Python模拟1. PID控制器123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112import timeclass PID: """PID Controller """ def __init__(self, P=0.2, I=0.0, D=0.0, current_time=None): self.Kp = P self.Ki = I self.Kd = D self.sample_interval = 0 self.curren ...
【注意力机制】 通道注意力机制以及3D卷积
通道注意力机制以及3D卷积1. SEnet
SENet的Block单元,图中的Ftr是传统的卷积结构,X和U是Ftr的输入(C’xH’xW’)和输出(CxHxW)。
SENet增加的部分是U后的结构:对U先做一个Global Average Pooling(图中的Fsq(.),作者称为Squeeze过程),输出的1x1xC数据再经过两级全连接(图中的Fex(.),作者称为Excitation过程),最后用sigmoid(论文中的self-gating mechanism)限制到[0,1]的范围,把这个值作为scale乘到U的C个通道上, 作为下一级的输入数据。这种结构的原理是想通过控制scale的大小,把重要的特征增强,不重要的特征减弱,从而让提取的特征指向性更强。
Excitation部分是用2个全连接来实现 ,第一个全连接把C个通道压缩成了C/r个通道来降低计算量(后面跟了RELU),第二个全连接再恢复回C个通道(后面跟了Sigmoid),r是指压缩的比例。作者尝试了r在各种取值下的性能 ,最后得出结论r=16时整体性能和计算量最平衡。为什么要加全连接层呢?这是为了利用通道间的相关 ...
【标签分配】OTA阅读笔记
OTA阅读笔记OTA: Optimal Transport Assignment for Object Detection
1. 什么是标签分配为了训练目标检测器,需要为每个anchor 分配 cls 和 reg 目标,这个过程称为标签分配或者正采样。
cls指分类置信度,reg指检测框的偏移量。
通常基于Anchor的目标检测器会生成大量的预先定义好的Anchor,这些Anchor的数量是要远多于ground truth box的数量的。
以YOLOv3为例,每一个gt box最终都会有一个对应的Anchor,找到自己对应的gt box的Anchor算作正样本,没有找到的,比如Anchor坐标处在背景当中的算作负样本,另外有一部分会被直接忽略。
标签分配:三个特征图一共 8 × 8 × 3 + 16 × 16 × 3 + 32 × 32 × 3 = 4032 个anchor。
正例:任取一个ground truth,与4032个anchor全部计算IOU,IOU最大的anchor,即为正例。并且一个anchor,只能分配给一个ground truth。例如第一个ground trut ...