985研一学习日记 - 2024.11.12

一个人内耗,说明他活在过去;一个人焦虑,说明他活在未来。只有当一个人平静时,他才活在现在。

日常

1、起床6:00√

2、健身2h

3、LeetCode刷了4题

  1. 无重叠区间
    1. 对于贪心算法,可以先对数组进行排序,然后再根据排序后的性质对其进行贪心处理
    2. 当有多个维度或者贪心时,可以考虑先进行排序,确定一个维度后再进行判断,此题对左端点进行排序,然后从前向后遍历区间,如果当前区间左端点小于上一个区间的右端点,则说明这两个区间是重叠的,则要去除一个,为了使得去除区间的次数最少,则应该去除右端点更大的区间,因为右端点更大说明可能会再次重叠,故直接对当前区间右端点取最小值,相当于去除右端点最大的区间
    3. 和射爆气球类似,还是从前向后遍历每个数组,然后判断相邻两个区间是否有重叠,即当前区间的左端是否小于上一个区间右端,如果有重叠,则局部最优是移除右端范围更大的区间(使得去除次数最少),因为左部分一定是无重叠,故为了使得移除次数最小则要移除右端范围更大的区间,故此时可以直接对当前区间的右端进行修改,取当前区间右端和上一个区间右端的最小值,代表移除了相邻两个区间右端范围更大的区间
    4. 当前区间左边一定是无重叠的,当没有与上一个区间重叠时,直接继续遍历
    5. 当重叠时,为了减少移除操作的次数,故局部最优是移除右端范围更大的区间
  2. 合并重叠区间
    1. 仍然是先对区间进行排序,然后从前向后遍历所有区间,判断是否重叠,如果重叠(当前区间左端点小于上一个区间右端点),则更新当前遍历到的区间,使其等于合并后的总区间左端点等于上一个元素的左端点(保证区间最大),**右端点等于当前区间和上一个区间右端点的最大值(保证区间最大)****,然后继续遍历,因为要保存合并后的区间,故当重叠时,直接在当前区间的基础上修改为合并后的区间,左端点取最大值,右端点也取最大值,当不重叠时,上一个区间就是要保存的区间
    2. 如果不重叠,则将上一个区间加入到目标数组ArrayList或者Linklist中,然后最后再使用StoArray(new int[][])转换为二维数组
  3. 贪心周总结
    1. 贪心问题如果存在数组等多维情况可以先进行排序使得某一维固定然后再进行贪心,可以先排序使得某一个维度固定,然后再继续
    2. 最少数量的箭射爆气球:按照左边界进行排序后,如果气球重叠了重叠气球中右边边界的最小值(要保证包含重叠的区间) 之前的区间一定需要一个弓箭,不重叠时将前面的重叠射爆,重叠时将右端点更新为最小值,保证不重叠时可以一次射爆前面的所有气球
    3. 无重叠区间:当重叠时,要移除右端范围更大的区间,从而使得移除次数最少
    4. 划分字母区间:找到一个片段内的最大右边界,并在遍历时对其不断更新,使得同一个字母最多出现在一个片段中通过字符出现最远距离取并集的方法,把出现过的字符都圈到一个区间里
    5. 合并重叠区间:仍然是排序后从前向后遍历,此时当相邻两个区间重叠时,则合并,并使得新区间保存到当前区间内,然后继续遍历;每次合并都取最大的右边界,这样就可以合并更多的区间了,整体最优:合并所有重叠的区间。
  4. 缺失的第一个正数
    1. 因为要求空间复杂度为常数,且要求时间复杂度为O(N),故必须在原数组的基础上对其操作从而求出结果
    2. 数组长度为 n ,则此时最大的缺失最小正数是 n+1,故可以考虑遍历整个数组,使得负数全为 n + 1,此时数组中全为正数,且只有在 1 ~ n 范围内的数才是存在的正数,然后再遍历数组,如果元素小于 n+1 ,则对其下标对应元素改为负数表示下标对应正数存在,此时遍历时某个元素可能被改变为负数,故要判断其绝对值是否小于 n+1,遍历结束后此时所有下标位置为负数的都说明对应下标的正数存在,故第一个正数所在的下标就是缺失的最小正数
  5. 划分字母区间
    1. 要尽可能把字符串划分为更多的片段,故局部最优是保证某个片段是最短的,而某一个字母最多出现在一个片段中,故遍历字符串,每遇到一个字母,找到出现的最后一个位置(字符串从后向前查找第一个位置就是最后一个位置),然后更新该片段的右端点取最大值,保证最多出现在一个片段中,然后继续遍历该片段重复操作,直到到达片段末尾,此时将该片段划分,然后继续寻找下一个片段
    2. 把字符串划分为尽可能多的片段,同一字母最多出现在一个片段中
    3. 从前向后遍历,每遍历一个元素求出其在字符串中最后出现的位置(此时从后向前遍历字符串第一个遇到的下标就是该元素最后出现的位置),然后从当前到最后最小的位置必须在同一个片段中继续遍历片段中的字母同时更新片段最右端的长度,使得每个字母最多出现在一个片段中
    4. 如果当前元素下标与当前片段右端相同时,说明当前片段是满足条件的最小片段,此时就可以划分出去,记录当前片段的长度,然后继续寻找下一个片段

4、复盘22:00√

不复盘等于白学!!!


学习和感想

1. RabbitMQ实现延迟消息

1. 介绍

  1. 延迟消息:生产者发送消息时指定一个时间消费者不会立刻收到消息,而是在指定时间之后才收到消息,即定时发送消息
  2. 下单后会立刻扣减库存,且会等待用户在指定时间内支付,如果未支付则恢复库存,此时可以通过定时任务定时扫描数据库,如果未支付则取消订单,但会使得数据库的压力太大,故不可以使用定时任务定时扫描
  3. 此时就可以通过延时消息来实现指定时间后判断是否支付,即下单后设置一个延迟消息该消息在设置的延时后会执行一次查询是否支付的操作,如果没有支付则删除订单恢复库存

2. 死信交换机实现延迟消息

  1. 死信消息:消息处理失败且设置不再回传时消息达到过期时间无人消费、队列堆积在这里插入图片描述
  2. 如果队列通过dead-letter-exchange属性指定了一个交换机,则该队列中的死信消息会投递到该交换机,则该交换机就是死信交换机,此时可以通过死信交换机实现延迟消息,为某个消息设置过期时间,然后投递的队列不设置消费者,则过期后会投递到指定的死信交换机,此时再对该死信交换机的队列进行消费,就可以实现消息先在某个队列中等待指定时间过期后再被消费,从而实现延迟消费

3. 延迟消息插件

  1. 通过设置死信交换机的方式实现延迟消息,此时会很复杂,因为要额外设置一个交换机和队列,且要进行绑定,故RabbitMQ引入了实现延迟消息的插件,先进行下载并加载到RabbitMQ服务容器中,然后直接创建支持消息延迟的交换机即可设置交换机的 delayed 属性为 true),其会根据投递到当前交换机的消息设置的delay时间对其延迟,然后再投递到绑定的队列中,从而实现延迟消息
  2. 延迟消息插件设计了一种支持延迟消息功能的交换机,当消息投递到交换机后可以暂存一段时间,到期后再投递到队列
  3. 下载延迟消息插件并放到rabbitMQ服务容器的插件目录下,然后执行docker exec —实现在容器内执行指定的指令还开启插件![[attachments/Pasted image 20241112125914.png]]
  4. 此时就可以在创建交换机时,通过配置交换机的 delayed 参数 = true 来创建实现延迟消息的交换机![[attachments/Pasted image 20241112130051.png]]
  5. 然后发送消息时通过消息头x-delay设置过期时间发送到实现延迟消息的交换机,必须设置消息的过期时间再发送到指定的交换机中 在这里插入图片描述

4. 取消超时订单

  1. 定时任务是设置一个时钟,当时间到了后会自动执行,此时会占用CPU,如果定时任务很多时,对CPU的压力很大,CPU会一直监控定时任务判断是否到达时间,故CPU压力很大,故此时可以使用将一个定时任务拆分为多个任务
  2. 设置延迟消息是使用定时器,如果并发很高,会导致消息堆积过多,此时定时过多会对MQ压力很大,而且大部分订单都会在定时时间内执行,但在MQ中却要等待很久,浪费资源
  3. 可以将一个长时间的延迟消息拆分为多个短时间的延迟消息,使得多次检查,如果满足则执行业务取消定时在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/470061.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数学建模模型算法-Python实现

一、评价决策类 1、层次分析法(AHP) 层次分析法用来评价或选择一个更好更优的决策或方案 通过找到可以衡量其好坏的指标,进而衡量指标,再形成评价体系 归一化处理 让指标在同一数量级,且保证在同一指标下其差距保持…

洞察鸿蒙生态,把握开发新机遇

随着科技的不断进步,鸿蒙系统以其独特的分布式架构和跨设备协同能力,逐渐在智能手机、智能穿戴、车载、家居等多个领域崭露头角,与安卓、iOS形成三足鼎立之势。作为一名开发者,我对鸿蒙生态的认知和了解如下: 一、鸿蒙…

uniapp打包华为,提示请提供64位版本软件包后再提交审核

HBuilder项目打包需要配置勾选arm64-v8a,默认只会集成armeabi-v7a

信捷 PLC C语言 POU 指示灯交替灭0.5秒亮0.5秒(保持型定时器)

1.在全局变量表中定义2个定时器变量timer_1,timer_2 名称 类型 timer_1 TMR_A_FB False -- False False timer_2 TMR_A_FB False -- False False ot2 BOOL False -- False False ot2表示指示灯 …

Apache ECharts

目录 1. 基本概念 1.1 ECharts的主要特点有: 1.2 ECharts的图形绘制方式: 2. 基本使用 3. 图表容器的大小 4. Option常用配置项 1. 基础配置项 title 标题组件 tooltip提示框组件 legend 图例组件 2.坐标配置项 grid网格组件 xAxis 直角坐标…

NVIDIA NIM 简介

NVIDIA NIM 简介 NVIDIA NIM 是一组易于使用的微服务,旨在加速在云、数据中心和工作站中部署生成式 AI 模型。NIM 按模型系列和每个模型分类。例如,用于大型语言模型 (LLM) 的 NVIDIA NIM 将最先进的 LLM 的强大功能带入企业应用程序,提供无…

常用中间件介绍

1. RabbitMQ RabbitMQ是一个基于AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的开源消息代理软件,实现了面向消息的中间件。它支持消息持久化、队列、交换机(Exchange)和绑定(Bin…

AI写作(四)预训练语言模型:开启 AI 写作新时代(4/10)

一、预训练语言模型概述 ​ 预训练语言模型在自然语言处理领域占据着至关重要的地位。它以其卓越的语言理解和生成能力,成为众多自然语言处理任务的关键工具。 预训练语言模型的发展历程丰富而曲折。从早期的神经网络语言模型开始,逐渐发展到如今的大规…

《云原生安全攻防》-- K8s安全防护思路

从本节课程开始,我们将正式进入防护篇。通过深入理解K8s提供的多种安全机制,从防守者的角度,运用K8s的安全最佳实践来保障K8s集群的安全。 在这个课程中,我们将学习以下内容: K8s安全防护思路:掌握K8s自身提…

LLM之模型评估:情感评估/EQ评估/幻觉评估等

如果您想知道如何确保 LLM 在您的特定任务上表现出色,本指南适合您!它涵盖了评估模型的不同方法、设计您自己的评估的指南以及来自实践经验的技巧和窍门。 Human-like Affective Cognition in Foundation Models:情感认知评估 研究者们提出了…

【JavaEE进阶】导读

本节⽬标 了解什么是JavaEE 在JavaEE中, 我们学习什么, 如何学, 难点是什么 一、Java EE 发展历程 Java EE(Java Platform Enterprise Edition), Java 平台企业版. 是JavaSE的扩展, ⽤于解决企业级的开发需求, 所以也可以称之为是⼀组⽤于企业开发的Java技术标准. 所以, 学习…

【韩老师零基础30天学会Java 】07章 面向对象编程(基础)

第七章 面向对象编程(基础) 1. 类与成员方法 类与对象关系示意图 示例:代码 import java.util.Scanner;public class IntDetail{public static void main(String[] args){Cat cat1new Cat();cat1.name"小花";cat1.age12;cat1.co…

超子物联网HAL库笔记:定时器[外部模式]篇

超子物联网 HAL库学习 汇总入口: 超子物联网HAL库笔记:[汇总] 写作不易,如果您觉得写的不错,欢迎给博主来一波点赞、收藏~让博主更有动力吧! 一、资源介绍:STM32F103C8T6定时器资源介绍 高级定时器&#x…

谷歌浏览器的自动翻译功能如何开启

在当今全球化的网络环境中,能够流畅地浏览不同语言的网页是至关重要的。谷歌浏览器(Google Chrome)提供了一项强大的自动翻译功能,可以帮助用户轻松跨越语言障碍。本文将详细介绍如何开启和使用谷歌浏览器的自动翻译功能&#xff…

【大数据技术基础 | 实验十】Hive实验:部署Hive

文章目录 一、实验目的二、实验要求三、实验原理四、实验环境五、实验内容和步骤(一)安装部署(二)配置HDFS(三)启动Hive 六、实验结果(一)启动结果(二)Hive基…

使用 Vue 配合豆包MarsCode 实现“小恐龙酷跑“小游戏

作者:BLACK595 “小恐龙酷跑”,它是一款有趣的离线游戏,是Google给Chrome浏览器加的一个有趣的彩蛋。当我们浏览器断网时一只像素小恐龙便会出来提示断网。许多人认为这只是一个可爱的小图标, 但当我们按下空格后,小恐…

案例精选 | 河北省某检察院安全运营中异构日志数据融合的实践探索

河北省某检察院是当地重要的法律监督机构,肩负着维护法律尊严和社会公平正义的重要职责。该机构依法独立行使检察权,负责对犯罪行为提起公诉,并监督整个诉讼过程,同时积极参与社会治理,保护公民权益,推动法…

7天用Go从零实现分布式缓存GeeCache(学习)(3)

目录结构 ├── geecache │ ├── byteview.go │ ├── cache.go │ ├── consistenthash │ │ ├── consistenthash.go │ │ └── consistenthash_test.go │ ├── geecache.go │ ├── go.mod │ ├── http.go │ ├── lru │ …

力扣 LeetCode 142. 环形链表II(Day2:链表)

解题思路&#xff1a; 使用set判断是否重复添加&#xff0c;如果set加入不进去证明之前到达过该节点&#xff0c;有环 public class Solution {public ListNode detectCycle(ListNode head) {Set<ListNode> set new HashSet<>();ListNode cur head;while (cur …

CLion配置QT开发环境

一、将qmake工程转为cmake工程&#xff08;方法一&#xff1a;用工具转换并做适当修改&#xff09; 1、工具链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1grW2QY3sW8X2JaHWM_ePPw 提取码&#xff1a;7at4 工具源码:https://github.com/milahu/qmake2cmake 2、执行…