等级+时间的优先级算法
简介
本算法为等级与时间结合计算对应优先级逻辑
等级越高者优先级越高
同等级下,时间越小者优先级越高
实现
主方法
calculatePriority
import com.zk.blog.enums.TypeEnum;
import org.apache.commons.lang3.StringUtils;/*** @program: * @description:* @author: zk* @create: 2024-08-09 17:26**/
public class PriorityService {/*** 基线时间* 2024-01-01 00:00:00* 秒值*/private static final Long baseTime = 1704067200L;/*** 前缀*/private static final String prefix = "1";/*** 按照阶梯类型+时间计算优先级* 类型级别越高、时间越前者优先级越高** @param type 类型 类型优先级最大2位* @param time 计算时间* @return 优先级结果 :越大优先级越高*/public String calculatePriority(TypeEnum type, Long time) {//毫秒转秒if (String.valueOf(time).length() == 13) {time = time / 1000;}if (String.valueOf(time).length() != 10) {throw new RuntimeException("时间格式错误");}String typePriority = String.valueOf(type.getLevelPriority());String timePriority = String.valueOf(Integer.MAX_VALUE - (time - baseTime));typePriority = StringUtils.leftPad(typePriority, 2, "0");timePriority = StringUtils.leftPad(timePriority, 12, "0");return new StringBuilder().append(prefix).append(typePriority).append(timePriority).toString();}
}
采用:
Integer.MAX_VALUE- (time-基线时间)计算出时间优先级
等级优先级为2位,不够则左侧补0
时间优先级为12位,不够则左侧补0
最终优先级::1位前缀+2位级别优先级+12位时间优先级=13位字符串
等级类型枚举
TypeEnum
/*** @program: * @description: 类型级别* @author: zk* @create: 2024-08-09 17:30**/
public enum TypeEnum {/*** 级别:描述, 等级优先级*/ONE("一级", 1),TWO("二级", 2),THREE("三级", 3),FOUR("四级", 4),FIVE("五级", 5),SIX("六级", 6),SEVEN("七级", 7),EIGHT("八级", 8),NINE("九级", 9),TEN("十级", 10);private String name;private Integer levelPriority;TypeEnum(String name, Integer levelPriority) {this.name = name;this.levelPriority = levelPriority;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getLevelPriority() {return levelPriority;}public void setLevelPriority(Integer levelPriority) {this.levelPriority = levelPriority;}
}
测试
- 测试代码
@Testpublic void test(){//一级 + 2024-02-01 00:00:00System.out.println(calculatePriority(TypeEnum.ONE, 1706745600L));//一级 + 2024-03-01 00:00:00System.out.println(calculatePriority(TypeEnum.ONE, 1709251200L));//九级 + 2024-02-01 00:00:00System.out.println(calculatePriority(TypeEnum.NINE, 1706745600L));//九级 + 2024-03-01 00:00:00System.out.println(calculatePriority(TypeEnum.NINE, 1709251200L));//十级 + 2024-02-01 00:00:00System.out.println(calculatePriority(TypeEnum.TEN, 1706745600L));//十级 + 2024-03-01 00:00:00System.out.println(calculatePriority(TypeEnum.TEN, 1709251200L));}
- 测试结果
101002144805247
101002142299647
109002144805247
109002142299647
110002144805247
110002142299647
结束
相关文章:
等级+时间的优先级算法
简介 本算法为等级与时间结合计算对应优先级逻辑 等级越高者优先级越高 同等级下,时间越小者优先级越高 实现 主方法 calculatePriority import com.zk.blog.enums.TypeEnum; import org.apache.commons.lang3.StringUtils;/*** program: * description:* autho…...
物流仓库安全视频智能管理方案:构建全方位、高效能的防护体系
一、背景分析 随着物流行业的快速发展和仓储需求的日益增长,仓库安全成为企业运营中不可忽视的重要环节。传统的人工监控方式不仅效率低下,且难以做到全天候、无死角覆盖,给仓库资产和人员安全带来潜在风险。因此,引入仓库安全视…...
jackson反序列化漏洞
jackson反序列化漏洞 反序列化漏洞触发根因jackson介绍jackson反序列化漏洞关键点enableDefaultTypingactivateDefaultTypingJsonTypeInfo 漏洞触发场景漏洞复现环境引入依赖pocactivateDefaultTypingenableDefaultTypingJsonTypeInfo 参考 很久没写blog,最近慢慢开…...
Java | Leetcode Java题解之第328题奇偶链表
题目: 题解: class Solution {public ListNode oddEvenList(ListNode head) {if (head null) {return head;}ListNode evenHead head.next;ListNode odd head, even evenHead;while (even ! null && even.next ! null) {odd.next even.nex…...
100 Exercises To Learn Rust 挑战!准备篇
公司内部的学习会非常活跃!我也参与了Rust学习会,并且一直在研究rustlings。最近,我发现了一个类似于rustlings的新教程网站:Welcome - 100 Exercises To Learn Rust。 rustlings是基于Rust的权威官方文档《The Rust Programming…...
瑞_RabbitMQ_初识MQ
文章目录 1 初识MQ1.1 同步调用1.1.1 同步调用的优势1.1.2 同步调用的缺点 1.2 异步调用1.2.1 异步调用的角色1.2.2 异步调用的优势1.2.3 异步调用的缺点1.2.4 异步调用的场景 1.3 MQ技术选型 2 RabbitMQ2.1 安装2.1.1 资源准备2.1.2 安装步骤 2.2 RabbitMQ架构2.3 RabbitMQ管理…...
系统内存管理:虚拟内存、内存分段与分页、页表缓存TLB以及Linux内存管理
虚拟内存 虚拟内存是一种操作系统提供的机制,用于将每个进程分配的独立的虚拟地址空间映射到实际的物理内存地址空间上。通过使用虚拟内存,操作系统可以有效地解决多个应用程序直接操作物理内存可能引发的冲突问题。 在使用虚拟内存的情况下࿰…...
Java每日一练_模拟面试题5(堆和栈的区别)
在Java中,堆(Heap)和栈(Stack)是两个不同的内存区域,它们在存储内容、管理方式、空间大小、分配方式等多个方面存在显著的区别。以下是Java中堆和栈的主要区别: 1. 存储内容不同 堆࿱…...
传感器校正和测试
是 一。舵机在使用过程中为了防止手动扭动损坏其中的齿轮,一般会使用代码测试并校正到0位。 #include <Servo.h> Servo myservo; // 创建一个Servo对象 // 连接到舵机信号线的Arduino引脚 int servoPin 9; void setup() { myservo.attach(servoPin…...
Eclipse 悬浮提示:提高编程效率的利器
Eclipse 悬浮提示:提高编程效率的利器 引言 在当今的软件开发领域,Eclipse 是一款广受欢迎的集成开发环境(IDE)。它以其强大的功能和灵活性而著称,被全球的开发者用于各种编程语言和项目。Eclipse 的一个显著特点是其…...
Vault系列之:创建令牌
Vault系列之:创建令牌 一、Vault令牌二、令牌认证三、创建一个新的令牌四、使用令牌登陆五、 撤销令牌 一、Vault令牌 Vault令牌是Vault服务器提供的一种身份验证方式,用于授权和访问Vault中存储的资源。Vault令牌可以是客户端令牌或服务令牌。客户端令…...
如何在 Windows 10 环境下安装和配置 MySQL:初学者指南
如何在 Windows 10 环境下安装和配置 MySQL:初学者指南 MySQL 是一个流行的开源数据库管理系统,广泛应用于各种应用程序中。对于初学者来说,了解如何在 Windows 10 环境下安装和配置 MySQL 是一个重要的第一步。本篇博客将详细介绍如何完成这…...
Ubuntu 24.04上报:Error: could not connect to ollama app, is it running?的解决方法
说起来这个问题真实让人无语。按照我之前说过的方法:设置Ollama在局域网中访问的方法(Ubuntu)_ollama 局域网访问-CSDN博客 把Ollama的默认端口修改后,如果再运行: ollama ps 则会报下面的错: Error: c…...
字典树查重(到底要开多大的空间啊)
前言:烦死了,这个题目一看就是用字典树来做,但是空间不知道开多大,烦死了 后来发现其实tree的第一维空间直接开极端的情况就行,就好像这一题,最多有 1e4 个字符串,每个字符串最长为 50ÿ…...
财务会计与管理会计(二)
文章目录 多工作表销售数据汇总1、INDIRECT函数2、HLOOKUP函数 多表筛选分类求和1、SUMIF函数2、INDIRECT函数 两组数据比对详解VLOOKUP函数的应用 多工作表销售数据汇总 1、INDIRECT函数 INDIRECT(""&D$4&"!D4:M24") 1月!D4:M24 HLOOKUP($A$1,I…...
技术周总结 08.05-08.11周日
文章目录 一、08.06 周二1.1) 问题01 mac安装 scala:1. 使用 Homebrew2. 使用 SDKMAN!其他注意事项1. 确认 Scala 安装位置2. 设置 PATH 环境变量对于 zsh (macOS Catalina 及更高版本默认使用 zsh):对于 bash (如果您使用的是 bash shell): 3. 验证安装 二、08.09 周五2.1&…...
B树和B+树的插入、删除
1. B树 1.1 B树的定义 树也称树,它是一颗多路平衡查找树。我们描述一颗树时需要指定它的阶数,阶数表示了一个结点最多有多少个孩子结点,用字母表示阶数。当取时,就是我们常见的二叉搜索树。 一颗阶的树定义如下: 每…...
Axios网络请求总结
在实际项目开发中,前端页面所需要的数据往往需要从服务器端获取,这必然涉及与服务器的通信。Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。Axios 在浏览器端使用XMLHttpRequests发送网络请求,并能自动完成JSON…...
立仪科技光谱共焦应用之金属隔膜静态重复性测量
01|检测需求:金属隔膜重复性测量 02|检测方式 为了保证精度,首先先用千分尺进行测量,得出相应的厚度数据,在选择合适的侧头,根据结果,我们现在立仪科技H4UO控制器搭配D27A20侧头 03&…...
vue3实现video视频+弹幕评论
vue3实现视频加评论 之前写了一篇博客使用了弹幕插件http://t.csdnimg.cn/616mlvue3 使用弹幕插件,今天对这个页面进行了升级 变成了 vue3使用video 这个没有使用插件,昨天看了好多,没发现有用的插件,下载了几个都没办法使用就用…...
GTE-Pro语义检索系统国际化支持:中英混合Query与多语言文档联合检索
GTE-Pro语义检索系统国际化支持:中英混合Query与多语言文档联合检索 1. 引言:当搜索不再受限于语言 想象一下,你在一家跨国公司的技术文档库里查找资料。你的脑海里蹦出一个问题:“How to configure the 负载均衡器 for high av…...
Android 15 音频子系统(八):Audio HAL 与硬件接口——音频数据的最后一公里
引言:最后一公里的旅程 如果把 Android 音频系统比作一条物流网络,那么 AudioFlinger 是"中央分拣中心",AudioPolicy 是"路由规划师",而 Audio HAL(Hardware Abstraction Layer)就是最终把包裹送到用户手里的"快递员"。 前几篇我们聊了 …...
基于Qwen3.5-2B的操作系统概念学习助手
基于Qwen3.5-2B的操作系统概念学习助手 1. 为什么需要操作系统学习助手 计算机专业的学生在学习操作系统时,常常面临抽象概念难以理解、理论实践脱节的问题。传统教材中的进程、线程、死锁等概念,如果仅靠文字描述,往往让初学者感到晦涩难懂…...
开源大模型效果展示:Pixel Language Portal对emoji+文字混合输入的语义解析
开源大模型效果展示:Pixel Language Portal对emoji文字混合输入的语义解析 1. 项目概览 Pixel Language Portal(像素语言跨维传送门)是一款基于Tencent Hunyuan-MT-7B大模型构建的创新翻译工具。与传统翻译软件不同,它将语言转换…...
一、RuoYi-Vue3项目模块化架构与二次开发实战
1. RuoYi-Vue3模块化架构深度解析 第一次接触RuoYi-Vue3时,最让我惊艳的就是它清晰的模块化设计。这个基于Spring BootVue3的前后端分离框架,通过六大核心模块的巧妙组合,既保证了功能完整性,又为二次开发留足了空间。就像搭积木一…...
颠覆式窗口管理:AlwaysOnTop重构多任务处理效率
颠覆式窗口管理:AlwaysOnTop重构多任务处理效率 【免费下载链接】AlwaysOnTop Make a Windows application always run on top 项目地址: https://gitcode.com/gh_mirrors/al/AlwaysOnTop 在数字工作空间日益复杂的今天,窗口管理已成为影响多任务…...
帆软FineDB数据库驱动上传权限配置与实战指南
1. 为什么需要配置数据库驱动上传权限 在企业级报表开发中,经常会遇到需要连接特殊数据库的场景。帆软报表平台默认只内置了常见数据库的驱动,比如MySQL、Oracle这些。但实际项目中,我们可能需要连接达梦、GBase这些国产数据库,或…...
Wan2.1-UMT5与Python入门:零基础学会用AI生成你的第一个视频
Wan2.1-UMT5与Python入门:零基础学会用AI生成你的第一个视频 你是不是也刷到过那些由AI生成的酷炫短视频,心里痒痒的,觉得这技术真神奇?但一想到要学复杂的编程和模型部署,就觉得头大,感觉离自己很远。 别…...
HDRI-Generator: 环境贴图生成AI
在 3D 渲染中,环境光通常比模型本身更难处理。 很多开发者或设计师都有类似经验:即使模型质量很高,如果光照不合理,最终效果仍然会显得不真实。HDRI(High Dynamic Range Image)长期以来是解决这一问题的核…...
nnUNet实战:如何根据你的显卡显存,手动调整batch_size和patch_size(附代码)
nnUNet显存优化实战:精准调整batch_size与patch_size的黄金法则 当你第一次在本地运行nnUNet训练脚本时,看到那个刺眼的CUDA out of memory错误,是不是有种功亏一篑的挫败感?别担心,这不是你的代码问题,而是…...
