算法3--二分查找
二分查找
- 原理
- 经典例题
- [704. 二分查找](https://leetcode.cn/problems/binary-search/)
- [34. 在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/)
- [35. 搜索插入位置](https://leetcode.cn/problems/search-insert-position/)
- [69. x 的平方根 ](https://leetcode.cn/problems/sqrtx/)
- [852. 山脉数组的峰顶索引](https://leetcode.cn/problems/peak-index-in-a-mountain-array/)
- [162. 寻找峰值](https://leetcode.cn/problems/find-peak-element/)
- [153. 寻找旋转排序数组中的最小值](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/)
- [LCR 173. 点名](https://leetcode.cn/problems/que-shi-de-shu-zi-lcof/)
原理
二分查找一般用于数组有序的情况,但不仅仅限于这种情形,更加普遍地来说,它适用于可以将一个整体切分为两个具有不一样特征的部分的情况,即问题具有二段性。它的思路很简单,就是将数组分为两部分,一部分是不存在目标的部分,另一部分是目标可能存在的部分,按照这个思路,其实遍历查找也是二分查找,只不过它每次只能排除一个数据,如果是这样的话,那么我们为什么不进行类似于1/4切分或者2/3这种切分,而是以1/2进行切分呢?可以这样想,数据是不确定的,如果进行1/4切分的话,有1/2的概率一次就排除3/4的数据,但也有1/2的概率一次只排除1/4的数据,从整体概率考虑,进行1/2切分是最优的。
二分问题可以细分为:一般的二分切分、寻找左边界的二分切分、寻找右边界的二分切分
在实现时需要特别注意:
- 循环结束条件
- 中间值mid的求取方式
- 左右指针每一次的步长
一、一般的二分切分
即在有序数组中寻找目标值
int BinarySearch(vector<int>& num, int target){int left = 0;int right = num.size() - 1;while (left <= right) {int mid = left + (right - left) / 2;//也可以是int mid = left + (right - left) / 2;if (num[mid] == target) {return mid;}else if (num[mid] < target) {left = mid + 1;}else {right = mid - 1;}}return -1;
}
二、寻找左边界的二分切分
int BinarySearch(vector<int>& num, int target){int left = 0;int right = num.size() - 1;while (left < right) {int mid = left + (right - left) / 2;if (num[mid] >= target) {right = mid;}else {left = mid +1;}}if (num[left] == target) {return left;}return -1;
}
- 步长:在num[mid] == target时,不能让right = mid-1,因为我们现在在寻找左边界,如果mid位置已经是左边界了,此时就会错过该位置,为了简便,直接在num[mid] >= target时设置—right = mid;
- 循环条件:如果循环结束条件为left <= right,最后ledt==right时如果走了right=mid就会导致死循环,因此循环条件为----:left <= right
- mid取值方式: 当只剩两个元素时,由于mid取较左边的值,无论走哪个条件都能出循环
三、寻找右边界的二分切分
int BinarySearch(vector<int>& num, int target){int left = 0;int right = num.size() - 1;while (left < right) {int mid = left + (right - left + 1) / 2;if (num[mid] <= target) {left = mid;}else {right = mid - 1;}}if (num[left] == target) {return left;}return -1;
}
求解二分问题的一般思路为:
- 根据问题分析出二段性
- 选择合适的切分模板
- 根据问题分析处理细节
经典例题
704. 二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
class Solution {
public:int search(vector<int>& nums, int target) {int left = 0;int right = nums.size() - 1;while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] == target) {return mid;} else if (nums[mid] < target) {left = mid + 1;} else {right = mid - 1;}}return -1;}
};
34. 在排序数组中查找元素的第一个和最后一个位置
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target,返回 [-1, -1]。
你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。
class Solution {
public:vector<int> searchRange(vector<int>& nums, int target) {vector<int> ans(2,-1);if(0==nums.size()){return ans;}int left=0;int right=nums.size()-1;//寻找左端点while(left<right){int mid=left+(right-left)/2;if(nums[mid]<target){left=mid+1;}else{right=mid;}}if(target!=nums[left]){return ans;}ans[0]=left;//寻找右端点left=0;right=nums.size()-1;while(left<right){int mid=left+(right-left+1)/2;if(nums[mid]>target){right=mid-1;}else{left=mid;}}ans[1]=right;return ans;}
};
35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。
class Solution {
public:int searchInsert(vector<int>& nums, int target) {int left=0;int right=nums.size()-1;int mid=0;while(left<=right){mid=left+(right-left)/2;if(nums[mid]==target){return mid;}else if(nums[mid]>target){right=mid-1;}else{left=mid+1;}}if(nums[mid]<target){return mid+1;}return mid;}
};
69. x 的平方根
给你一个非负整数 x ,计算并返回 x 的 算术平方根 。
由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。
注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。
class Solution {
public:int mySqrt(int x) {//确定量级int i=1;long long int j=10;while(x/j){j*=10;i+=1;}int left=0;int right=1;i=(i+1)/2;while(i--){right*=10;}while(left<=right){unsigned long long mid=left+(right-left)/2;unsigned long long tmp=mid*mid;if(tmp==x||(tmp<x&&(mid+1)*(mid+1)>x)){return mid;}else if(tmp<x){left=mid+1;}else{right=mid-1;}}return 0;}
};
852. 山脉数组的峰顶索引
给定一个长度为 n 的整数 山脉 数组 arr ,其中的值递增到一个 峰值元素 然后递减。
返回峰值元素的下标。
你必须设计并实现时间复杂度为 O(log(n)) 的解决方案。
class Solution {
public:int peakIndexInMountainArray(vector<int>& arr) {int left = 0;int right = arr.size() - 1;int mid = 0;while (left < right) {if (left + 1 == right) {return arr[left] > arr[right] ? left : right;}mid = left + (right - left) / 2;int lmid = left + (mid - left + 1) / 2;if (arr[left] < arr[lmid]) {if (arr[lmid] <= arr[mid]) {left = lmid;} else {right = mid;}} else {right = lmid;}}return mid;}
};
162. 寻找峰值
峰值元素是指其值严格大于左右相邻值的元素。
给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。
你可以假设 nums[-1] = nums[n] = -∞ 。
你必须实现时间复杂度为 O(log n) 的算法来解决此问题。
class Solution {
public:int findPeakElement(vector<int>& nums) {int left = 0;int right = nums.size() - 1;while (left <= right) {int mid = left + (right - left + 1) / 2;if ((0 == mid || nums[mid - 1] < nums[mid]) &&(mid + 1 == nums.size() || nums[mid] > nums[mid + 1])) {return mid;}if (nums[mid - 1] > nums[mid]) {right = mid - 1;} else {left = mid + 1;}}return -1;}
};
153. 寻找旋转排序数组中的最小值
已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:
若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]
若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]
注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …, a[n-2]] 。
给你一个元素值 互不相同 的数组 nums ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素 。
你必须设计一个时间复杂度为 O(log n) 的算法解决此问题。
class Solution {
public:int findMin(vector<int>& nums) {int left = 0;int right = nums.size() - 1;while (left < right) {int mid = left + (right - left) / 2;if (nums[left] <= nums[mid]) {if (nums[mid] < nums[right]) {return nums[left];}left = mid + 1;} else {right = mid;}}return nums[left];}
};
LCR 173. 点名
某班级 n 位同学的学号为 0 ~ n-1。点名结果记录于升序数组 records。假定仅有一位同学缺席,请返回他的学号。
- 根据问题分析出二段性
取中间点mid,如果records[mid]==mid,说明[left,mid]区间内的学生一定没有缺席,可以让left=mid+1;如果records[mid]!=mid,让right=mid,此时不能让right=mid-1,因为rnid的位置可能就是缺席学生的位置,让right=mid-1会直接错过该位置
- 选择合适的切分模板
根据前面的分析可以得知应该选用寻找左边界的切分模板
- 根据问题分析处理细节
有可能是最后一名学生缺席,在最后需要特别处理这种情况
class Solution {
public:int takeAttendance(vector<int>& records) {int left=0;int right=records.size()-1;while(left<right){int mid=left+(right-left)/2;if(records[mid]!=mid){right=mid;}else{left=mid+1;}}if(left+1==records.size()&&left==records[left]){return left+1;}return left;}
};
相关文章:
算法3--二分查找
二分查找 原理经典例题[704. 二分查找](https://leetcode.cn/problems/binary-search/)[34. 在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/)[35. 搜索插入位置](https://leetcode.cn/p…...
【信息系统项目管理师】第7章:项目立项管理 考点梳理
文章目录 7.1 项目建议与立项申请7.2 项目可行性研究7.2.1 可行性研究的内容7.2.2 初步可行性研究7.2.3 详细可行性研究(重点) 7.3 项目评估与决策 【学习建议】本章大概考选择题2分左右,有可能考案例题。论文早年考过。本章知识点比较集中&a…...
帝可得-策略管理
策略管理 需求说明 策略管理主要涉及到二个功能模块,业务流程如下: 新增策略: 允许管理员定义新的策略,包括策略的具体内容和参数(如折扣率)策略分配: 将策略分配给一个或多个售货机。 #mermaid-svg-PSQOJMLJqVGn3W…...
opencv-android编译遇到的相关问题处理
1、opencv-android sdk下载 下载地址:https://opencv.org/releases/ 下载安卓SDK即可 2、解压下载好的SDK 3、导入opencv的SDK到安卓项目中 导入步骤在/OpenCV-android-sdk/sdk/build.gradle文件的注释中写的非常详细,大家可安装官方给出的步骤导入。…...
汽车IVI中控开发入门及进阶(三十六):QML调用蓝牙sdk的架构
Qt/QML本身在做GUI界面工程时,除了各种界面上的按钮、图片、工具条等元素之外,最方便的就是可以通过C++实现界面各种复杂逻辑,而实现上不可避免就需要一些外部库的支持,不管是静态库.a还是动态库.so,比如蓝牙模块。 而QML/C++启动一个蓝牙协议栈SDK作为一个进程,然后启动…...
C++设计模式之外观模式
动机 下图中左边方案的问题在于组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合面临很多变化的挑战。 如何简化外部客户程序和系统间的交互接口?如何将外部客户程序的演化和内部子系统…...
前缀和篇——繁星斗斗数字交织中,觅得效率明月辉光(1)
前言 在这片无边无际的数字海洋中,如何从中提取出有价值的讯息,成为了计算机科学中的一项重要课题。前缀和算法,作为一种巧妙的技术,恰如其名——通过计算序列中各个元素的前缀和,能够为我们提供一种高效的查询方式&a…...
【论文复现】隐式神经网络实现低光照图像增强
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ 隐式神经网络实现低光照图像增强 引言那么目前低光照图像增强还面临哪些挑战呢? 挑战1. 不可预测的亮度降低和噪声挑战2.度量友好…...
Secured Finance 推出 TVL 激励计划以及基于 FIL 的稳定币
Secured Finance 是新一代 DeFi 2.0 协议,其正在推出基于 FIL 的稳定币、固定收益市场以及具有吸引力的 TVL 激励计划,以助力 Filecoin 构建更强大的去中心化金融生态体系,并为 2025 年初 Secured Finance 协议代币的推出铺平道路。Secure Fi…...
2024前端框架年度总结报告(二):新生qwik+solid和次新生svelte+Astro对比 -各自盯着前端的哪些个痛点 - 前端的区域发展差异
引言 2024年,前端开发依然是技术领域的热点之一。随着 Web 应用的日益复杂,前端框架的更新换代也加速了。尽管 React、Vue 和 Angular 老牌框架年度总结 等“老牌”框架仍然占据着主流市场,但一些新兴的框架在不断挑战这些“巨头”的地位&am…...
MySQL大小写敏感、MySQL设置字段大小写敏感
文章目录 一、MySQL大小写敏感规则二、设置数据库及表名大小写敏感 2.1、查询库名及表名是否大小写敏感2.2、修改库名及表名大小写敏感 三、MySQL列名大小写不敏感四、lower_case_table_name与校对规则 4.1、验证校对规则影响大小写敏感4.1、验证校对规则影响排序 五、设置字段…...
每日速记10道java面试题13-MySQL篇
其他资料 每日速记10道java面试题01-CSDN博客 每日速记10道java面试题02-CSDN博客 每日速记10道java面试题03-CSDN博客 每日速记10道java面试题04-CSDN博客 每日速记10道java面试题05-CSDN博客 每日速记10道java面试题06-CSDN博客 每日速记10道java面试题07-CSDN博客 每…...
关于Chrome自动同步书签的解决办法
前言 并不一定适用所有用户, 目前我在网上搜集了一些资料,也做了一些尝试。 就我个人总结的经验来讲,分享大家以下几种办法: 1.书签同步插件 点击如下🔗: Chrome书签同步https://bm.famend.cn/ …...
江南大学《2024年807自动控制原理真题》 (完整版)
本文内容,全部选自自动化考研联盟的:《江南大学807自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2024年真题 Part1:2024年完整版真题 2024年真题...
在VSCode中搭建Python开发环境
在VSCode中搭建Python开发环境 1、安装 首先确保电脑已经安装好Python和VSCode。 2、安装VSCode的Python插件 3、选择python解释器 ctrlshiftP打开VSCode的命令行,输入python: select Interpreter选择合适的python版本。 4、运行代码 在windows下你可以直接使用…...
mac 安装python3和配置环境变量
mac 安装python3和配置环境变量 前言怎样选择python3的版本python3的安装1、去官网下载安装包2、下载完成后直接解压,检查安装是否成功 前言 在学习python的第一步就是安装它和配置他的环境变量,那么选择哪个版本的python你可曾知道,下面就讲解怎样选择…...
微信小程序版小米商城的搭建流程详解!
很多初学微信小程序语法的同学,可能不知道如何布局和搭建一个项目,下面我将讲解初学者如何搭建项目和注意事项。 一、 app.json的配置 {"pages": ["pages/index/index","pages/classification/classification","pag…...
Redis等Spring Cache 框架 实现基于注解的缓存功能
Spring Cache 框架 实现基于注解的缓存功能 底层 基于代理技术 一旦进入方法就进入代理对象 如果redis里有就直接返回 不会走方法 如果缓存没有数据 则通过反射走方法。 概念 缓存 相当于之前的事务处理 同步更改 只是提供了一层抽象 底层可以切换不同的缓存实现 EHCach…...
tcpreplay/tcpdump-重放网络流量/捕获、过滤和分析数据包
tcpdump 是一个网络数据包分析工具,通过捕获并显示网络接口上传输的数据包,帮助用户分析网络流量。 原理:用户态通过 libpcap 库控制数据包捕获,内核态通过网卡驱动获取数据包。 核心功能包括:捕获、过滤和分析数据包…...
【Linux】基础IO_文件系统IO_“一切皆文件”_缓冲区
目录 1. 理解"⽂件" 1-1 狭义理解 1-2 ⼴义理解 1-3 ⽂件操作的归类认知 1-4 系统⻆度 访问文件,需要先打开文件!那么是由谁打开文件??? 操作系统要不要把被打开的文件管理起来? 2. 回顾…...
基于ZYNQ-7000系列的FPGA学习笔记7——按键控制蜂鸣器(模块化编写)
基于ZYNQ-7000系列的FPGA学习笔记7——按键控制蜂鸣器(模块化编写) 1. 实验要求2. 功能分析3. 模块设计4. 波形图4.1 按键消抖模块4.2 按键控制蜂鸣器模块 5.代码编写5.1 rtl代码5.2 测试代码 6. 代码仿真7. 添加约束文件并分析综合 在上期的内容中&…...
Mnesia(三)
在表中保存复杂数据 Mnesia是被设计用来保存Erlang数据结构的。可以把任意类型的Erlang数据结构保存到Mnesia表中。 -export([init_mnesia_schema/0, start/0]). -export([add_plans/0, get_plan/1]). -include_lib("stdlib/include/qlc.hrl"). -record(shop, {ite…...
ELK的Filebeat
目录 传送门前言一、概念1. 主要功能2. 架构3. 使用场景4. 模块5. 监控与管理 二、下载地址三、Linux下7.6.2版本安装filebeat.yml配置文件参考(不要直接拷贝用)多行匹配配置过滤配置最终配置(一、多行匹配、直接读取日志文件、EFK方案&#…...
【WPF中ControlTemplate 与 DataTemplate之间的区别?】
前言 WPF中ControlTemplate 与 DataTemplate之间的区别? 1. 定义: ControlTemplate 是用于定义 WPF 控件的外观和结构的模板。它允许您重新定义控件的视觉表现,而不改变控件的行为。 DataTemplate 是用于定义如何呈现数据对象的模板。它通…...
FFmpeg源码中,计算CRC校验的实现
一、CRC简介 CRC(Cyclic Redundancy Check),即循环冗余校验,是一种根据网络数据包或电脑文件等数据产生简短固定位数校核码的快速算法,主要用来检测或校核数据传输或者保存后可能出现的错误。CRC利用除法及余数的原理,实现错误侦…...
js面试题
面试题:说一下call、apply、bind区别 共同点:功能一致 可以改变this指向 语法:函数.call() 函数.apply() 函数.bind() 区别:1.call、apply可以立即执行。bind不会立即执行,因为bind返回的是一个函数需要加入ÿ…...
Python酷库之旅-第三方库Pandas(255)
目录 一、用法精讲 1206、pandas.tseries.offsets.SemiMonthEnd.is_on_offset方法 1206-1、语法 1206-2、参数 1206-3、功能 1206-4、返回值 1206-5、说明 1206-6、用法 1206-6-1、数据准备 1206-6-2、代码示例 1206-6-3、结果输出 1207、pandas.tseries.offsets.S…...
STM32 进阶 定时器3 通用定时器 案例2:测量PWM的频率/周期
需求分析 上一个案例我们输出了PWM波,这个案例我们使用输入捕获功能,来测试PWM波的频率/周期。 把测到的结果通过串口发送到电脑,检查测试的结果。 如何测量 1、输入捕获功能主要是:测量输入通道的上升沿和下降沿 2、让第一个…...
【计算机网络】实验10:开放最短路径优先OSPF
实验10 开放最短路径优先OSPF 一、实验目的 本实验的主要目的是验证OSPF(开放最短路径优先)协议的作用,深入理解其在动态路由中的重要性。通过实验,我们将观察OSPF如何在网络中高效地传播路由信息,从而实现不同网络之…...
线程信号量 Linux环境 C语言实现
既可以解决多个同类共享资源的互斥问题,也可以解决简易的同步问题 头文件:#include <semaphore.h> 类型:sem_t 初始化:int sem_init(sem_t *sem, int pshared, unsigned int value); //程序中第一次对指定信号量调用p、v操…...
Tree搜索二叉树、map和set_数据结构
数据结构专栏 如烟花般绚烂却又稍纵即逝的个人主页 本章讲述数据结构中搜索二叉树与HashMap的学习,感谢大家的支持!欢迎大家踊跃评论,感谢大佬们的支持! 目录 搜索二叉树的概念二叉树搜索模拟实现搜索二叉树查找搜索二叉树插入搜索二叉树删除…...
Linux-GPIO应用编程
本章介绍应用层如何控制 GPIO,譬如控制 GPIO 输出高电平、或输出低电平。 只要是用到GPIO的外设,都有可能用得到这些操作方法。 照理说,GPIO的操作应该是由驱动层去做的,使用寄存器操作或者GPIO子系统之类的框架。 但是࿰…...
【模板】排序(py)/ 【深基9.例4】求第 k 小的数
题目描述 将读入的 NN 个数从小到大排序后输出。 输入格式 第一行为一个正整数 NN。 第二行包含 NN 个空格隔开的正整数 aiai,为你需要进行排序的数。 输出格式 将给定的 NN 个数从小到大输出,数之间空格隔开,行末换行且无空格。 输…...
Linux获取文件属性
目录 stat函数 获取文件属性 获取文件权限 实现“head -n 文件名”命令的功能 编程实现“ls -l 文件名”功能 stat/fstat/lstat的区别? stat函数 int stat(const char *path, struct stat *buf); 功能:获取文件属性 参数: path&…...
一文说清:Git创建仓库的方法
0 引言 本文介绍如何创建一个 Git 本地仓库,以及与远程仓库的关联。 1 初始化仓库(git init) 1.1 概述 Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使…...
ASP.NET Core 负载/压力测试
文章目录 一、第三方工具二、使用发布版本进行负载测试和压力测试 负载测试和压力测试对于确保 web 应用的性能和可缩放性非常重要。 尽管负载测试和压力测试的某些测试相似,但它们的目标不同。 负载测试:测试应用是否可以在特定情况下处理指定的用户负…...
红日靶场vulnstack (五)
前言 好久没打靶机了,今天有空搞了个玩一下,红日5比前面的都简单。 靶机环境 win7:192.168.80.150(外)、192.168.138.136(内) winserver28(DC):192.168.138.138 环境搭建就不说了,和之前写…...
k8s,声明式API对象理解
命令式API 比如: 先kubectl create,再replace的操作,我们称为命令式配置文件操作 kubectl replace的执行过程,是使用新的YAML文件中的API对象,替换原有的API对象;而kubectl apply,则是执行了一…...
【人工智能】用Python和Scikit-learn构建集成学习模型:提升分类性能
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 集成学习(Ensemble Learning)是通过组合多个弱学习器提升模型性能的机器学习方法,广泛应用于分类、回归及其他复杂任务中。随机森林(Random Forest)和梯度提升(Gradient Boosting)是集成学习的两种…...
MSBUILD : error MSB1009: 项目文件不存在。
环境:win10 vscode1.95.3 clang15.0.4 问题:最近用vscodecmakeclang在windows上编译c项目,用mingw32不报错,用clang报错,错误如下, MSBUILD : error MSB1009: 项目文件不存在。 原因:与其他生成器(如Mak…...
洛谷P1827 [USACO3.4] 美国血统 American Heritage(c嘎嘎)
题目链接:P1827 [USACO3.4] 美国血统 American Heritage - 洛谷 | 计算机科学教育新生态 题目难度:普及 首先介绍下二叉树的遍历: 学过数据结构都知道二叉树有三种遍历: 1.前序遍历:根左右 2.中序遍历:左根…...
YOLOv8模型pytorch格式转为onnx格式
一、YOLOv8的Pytorch网络结构 model DetectionModel((model): Sequential((0): Conv((conv): Conv2d(3, 64, kernel_size(3, 3), stride(2, 2), padding(1, 1))(act): SiLU(inplaceTrue))(1): Conv((conv): Conv2d(64, 128, kernel_size(3, 3), stride(2, 2), padding(1, 1))(a…...
工业—使用Flink处理Kafka中的数据_ProduceRecord1
1 、 使用 Flink 消费 Kafka 中 ProduceRecord 主题的数据,统计在已经检验的产品中,各设备每 5 分钟 生产产品总数,将结果存入Redis 中, key 值为 “totalproduce” , value 值为 “ 设备 id ,最近五分钟生…...
RNACOS:用Rust实现的Nacos服务
RNACOS是一个使用Rust语言开发的Nacos服务实现,它继承了Nacos的所有核心功能,并在此基础上进行了优化和改进。作为一个轻量级、快速、稳定且高性能的服务,RNACOS不仅包含了注册中心、配置中心和Web管理控制台的功能,还支持单机和集…...
响应式编程一、Reactor核心
目录 一、前置知识1、Lambda表达式2、函数式接口 Function3、StreamAPI4、Reactive-Stream1)几个实际的问题2)Reactive-Stream是什么?3)核心接口4)处理器 Processor5)总结 二、Reactor核心1、Reactor1&…...
聚簇索引与非聚簇索引
目录 一、聚簇索引(Clustered Index) 二、非聚簇索引(Non-Clustered Index) 三、示例说明 一、聚簇索引(Clustered Index) 定义: 聚簇索引是一种将数据存储和索引合为一体的索引方式。 表中…...
鸿蒙 Next 可兼容运行 Android App,还支持出海 GMS?
最近 「出境易」和 「卓易通」 应该算是鸿蒙和 Android 开发圈“突如其来”的热门话题,而 「出境易」可能更高频一些,主要也是 Next 5.0 被大家发现刚上架了一个名为「出境易」的应用,通过这个 App 用户可以直接运行不兼容 Next 的 Android A…...
opencv常用图像处理操作
OpenCV 处理图像的通用流程通常包括以下几个步骤,根据具体需求可以调整或跳过某些步骤。以下是一个通用的框架: 读取图像 加载图像文件到内存中以进行后续处理。 import cv2 读取图像 image cv2.imread(‘image.jpg’) # 彩色图像 gray_image cv2…...
<三>51单片机PWM开发SG90和超声测距
目录 1,PWM开发SG90 1.1简介 1.2控制舵机 1.3编程实现 2,超声测距 2.1简介 2.2,超声波测距代码实现 1,PWM开发SG90 1.1简介 PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进 行调制,等…...
如何加强游戏安全,防止定制外挂影响游戏公平性
在现如今的游戏环境中,外挂始终是一个困扰玩家和开发者的问题。尤其是定制挂(Customized Cheats),它不仅复杂且隐蔽,更能针对性地绕过传统的反作弊系统,对游戏安全带来极大威胁。定制挂通常是根据玩家的需求…...