格式化容量或速度

枚举 StorageSpeedUnit

enum StorageSpeedUnit{NUMERIC,STORAGE,SPEED;
}

日志 Loggable

public static void logger(String pattern,Object... paramArray) {String cls = MethodHandles.lookup().lookupClass().getName();System.Logger logger = System.getLogger(cls);String msg = String.format(pattern,paramArray);logger.log(System.Logger.Level.INFO,msg);
}

方法 formatStorageUnit

/*** @title formatStorageUnit 存储容量或速度格式化* @param storageByteSize 存储大小或速度,单位字节byte* @param su enum StorageSpeedUnit* NUMERIC:仅显示数字;STORAGE:数字加容量标识;SPEED:数字加速度标识* @return String 格式化后的目标字符串* @create 2024-05-13 21:09:43* @author elf* @since 1.0.0*/
public static String formatStorageUnit(final long storageByteSize,StorageSpeedUnit su) {if (storageByteSize < 0) {return "0";}String[] unitArray = new String[]{};switch (su) {case null -> {break;}case NUMERIC -> {break;}case STORAGE -> unitArray = new String[]{"B","KB","MB","GB","TB"};case SPEED -> unitArray = new String[]{"B/s","KB/s","MB/s","GB/s","TB/s"};default -> {break;}}int digitGroup = (int)(Math.log10(storageByteSize) / Math.log10(1024));double number = storageByteSize / Math.pow(1024,digitGroup);var formatter =  new DecimalFormat("#,##0.##");if (unitArray.length == 0) {return formatter.format(number);} else {return formatter.format(number) + " " + unitArray[digitGroup];}
}

测试

public static void main(String[] sa) {var formatSize = 10737418;var formatEmpty = formatStorageUnit(formatSize,null);var formatNumeric = formatStorageUnit(formatSize,StorageSpeedUnit.NUMERIC);var formatStorage = formatStorageUnit(formatSize,StorageSpeedUnit.STORAGE);var formatSpeed = formatStorageUnit(formatSize,StorageSpeedUnit.SPEED);var pattern = "empty:%s,numeric:%s,storage:%s,speed:%s";Loggable.logger(pattern,formatEmpty,formatNumeric,formatStorage,formatSpeed); 
}
513, 2024 9:16:38 下午 com.elf.core.logger.Loggable logger
信息: empty:10.24,numeric:10.24,storage:10.24 MB,speed:10.24 MB/s

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

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

相关文章

Python实战开发及案例分析(19)—— 推荐算法

推荐系统是一种信息过滤系统&#xff0c;它的目标是预测用户对物品的偏好程度。在Python中&#xff0c;我们可以使用多种技术来实现推荐算法&#xff0c;包括基于内容的推荐、协同过滤推荐以及利用机器学习模型的混合推荐系统。 基本类型的推荐系统 基于内容的推荐系统&#…

输电线路的覆冰

给出一些输电线路的覆冰类型 输电线路的覆冰类型可以根据其形成机理、条件及性质进行不同的分类。以下是一些主要的覆冰类型&#xff1a; 凝华覆冰&#xff1a;这种覆冰是近地表面空气中的水分因气温过低而直接凝结在输电线路表面的一种霜&#xff0c;也被称为晶状雾凇。云中…

下单制造fpc的工艺参数

FPC工艺简介 - 百度文库 (baidu.com) FPC工艺参数 - 豆丁网 (docin.com) FPC柔性线路板的主要参数.ppt (book118.com) 捷多邦&#xff1a; 华秋&#xff1a; 背胶&#xff1a; FPC板背胶是可以粘接在光滑表面的一种薄型胶带&#xff0c;可以在狭小以及光滑的表面上用来提供高…

互联网医院源码|禾高互联网医院系统功能和优势

互联网医院系统是一种建立在互联网基础上的医疗服务平台&#xff0c;其目标是通过数字化手段改善患者和医生之间的医疗互动。这一系统不仅使患者能够更轻松地获取医疗服务&#xff0c;而且也为医生提供了更灵活的工作方式。 1、智能导诊:提供人体模拟图&#xff0c;模拟门诊医生…

【学习笔记】C++每日一记[20240513]

简述静态全局变量的概念 在全局变量前加上static关键字&#xff0c;就定义了一个静态全局变量。通常情况下&#xff0c;静态全局变量的声明和定义放在源文件中&#xff0c;并且不能使用extern关键字将静态全局变量导出&#xff0c;因此静态全局变量的**作用于仅限于定义静态全…

振弦式应变计的与实际测量值不一致怎么办

在进行结构健康监测或其他工程测量时&#xff0c;精确性和可靠性至关重要。振弦式表面应变计是一种广泛使用的测量工具&#xff0c;它通过测量材料表面的应变来评估结构的应力状态。然而&#xff0c;在实际应用中&#xff0c;振弦式应变计的测量值与实际应变值之间的不一致问题…

【JavaScript】---- 使用 Tween 实现转盘抽奖

1. 实现效果 2. 需求分析 它和正常的转盘抽奖不一样&#xff0c;一般实现都是指针形式的&#xff0c;转盘转动&#xff0c;最后指针停留在奖品的随机位置&#xff1b;通过上边图发现奖品必须刚好停留在奖品的位置&#xff0c;因为不是指针&#xff0c;所以不能最后落到随机位置…

SqlServer基础学习笔记

SQL Server 是啥&#xff1f; 想象一下你有一本超级智能的电子记事本&#xff0c;里面可以记录各种信息&#xff0c;比如你的好友名单、他们喜欢的颜色、生日等等。这个记事本不仅能记录&#xff0c;还能帮你查找、修改和删除这些信息。SQL Server就像是这样的一个超级记事本&a…

福建聚鼎:做装饰画到底能不能赚钱

在探讨做装饰画能否成为盈利的行当之前&#xff0c;我们必须认识到任何一门艺术或手工的价值并非仅仅取决于其直接的经济收益。艺术创作本身就是一种文化传承和个人情感表达的方式&#xff0c;它对创作者和社会都有着不可估量的精神价值。然而&#xff0c;将话题限定在经济回报…

MySQL入门学习-数据修改.修改

在MySQL中&#xff0c;数据修改包括对表中的数据进行插入、更新和删除操作。这些操作可以通过SQL语句来完成&#xff0c;常用的语句包括INSERT、UPDATE和DELETE。 一、数据修改常用语句的基本操作。 1. 插入数据&#xff1a; - 插入数据可以使用INSERT INTO语句&#xff0c;…

线性结构(链表结构)

链表结构的定义 1.什么是链表 链表结构是由许多节点构成的&#xff0c;每个节点都包含两部分&#xff1a; 数据部分&#xff1a;保存该节点的实际数据。 地址部分&#xff1a;保存的是上一个或下一个节点的地址。 2.链表分类 单向链表 双向链表 双向循环链表 3.链表的特点 节点…

武汉星起航跨境电商:亚马逊自发货订单处理全流程解析

在亚马逊电商平台上&#xff0c;自发货订单的处理是卖家日常运营中的重要环节。正确的处理流程不仅能确保交易的顺畅进行&#xff0c;还能提升买家满意度&#xff0c;进而促进销售业绩的提升。武汉星起航在这里整理了亚马逊自发货订单的处理流程&#xff0c;帮助卖家更好地管理…

基于ChatGPT 和 OpenAI 模型的现代生成式 AI

书籍&#xff1a;Modern Generative AI with ChatGPT and OpenAI Models: Leverage the capabilities of OpenAIs LLM for productivity and innovation with GPT3 and GPT4 作者&#xff1a;Valentina Alto 出版&#xff1a;Packt Publishing 书籍下载-《基于ChatGPT 和 Op…

4 局域网技术(一):局域网概述

目录 1 局域网概述1.1 局域网的特点1.2 局域网的介质访问控制方法1、具有冲突检测的载波侦听多路访问&#xff08;CSMA/CD&#xff09;对几个概念进行解释CSMA/CD的说明 2、令牌&#xff08;Token&#xff09;技术 1.3 网络适配器1、网络适配器的功能2、网卡的总类3、Ethernet网…

视频太大了?这2招轻松完成在线视频压缩

在当今数字媒体时代&#xff0c;视频文件的大小往往是一个让人头疼的问题。无论是拍摄的素材、编辑的成品还是下载的内容&#xff0c;过大的视频文件不仅占用大量存储空间&#xff0c;还可能影响传输速度和播放流畅度。那么&#xff0c;如何轻松完成在线视频压缩&#xff0c;减…

百度go【面试真题】

前言 这是陈旧已久的草稿2023-02-09 15:00:43 寒假实习面试真题 现在2024-5-12 22:25:09&#xff0c;发布到[面试真题]专栏中。 百度【面试】 go语言为什么快&#xff1f; 进程线程协程的区别 进程切换和线程切换的区别 进程的状态 进程的切换虚拟空间 redis关了&#xf…

【网络安全产品互联互通 告警信息资产信息】相关思维导图

近日&#xff0c;在某客户安全建设项目中&#xff0c;涉及安全告警事件的梳理上报。在整理及学习中发现最近&#xff08;以19年等保2.0为参考分隔“最近”&#xff09;发布的可参考标准&#xff0c;因此做了思维导图的整理。 PS&#xff1a;标准中存在引用的情况&#xff0c;过…

setImmediate不能在浏览器中执行

setImmediate 函数不是浏览器的标准 API&#xff0c;而是 Node.js 环境中的一个函数。然而&#xff0c;你可以使用 setTimeout 函数实现类似的效果。下面是一个代码示例&#xff1a; // 使用 setTimeout 模拟 setImmediate setTimeout(function() {console.log("这个函数…

数字序列比大小 - 贪心思维

系列文章目录 文章目录 系列文章目录前言一、题目描述二、输入描述三、输出描述四、java代码五、测试用例 前言 本人最近再练习算法&#xff0c;所以会发布自己的解题思路&#xff0c;希望大家多指教 一、题目描述 A&#xff0c;B两个人万一个数字的游戏&#xff0c;在游戏前…

强化学习中的重要性采样

强化学习中的重要性采样介绍 在强化学习中&#xff0c;**重要性采样&#xff08;Importance Sampling&#xff09;**是一种非常有用的技术&#xff0c;它主要用于估计和优化策略&#xff08;policy&#xff09;下的期望回报&#xff0c;特别是当我们无法直接从目标策略中采样时…