常用封装工具类

news2025/1/12 1:36:29

文章目录

  • 前言
  • 一、保留指定小数位
  • 二、获取bean
  • 三、假分页计算
  • 四、星期计算
  • 五、经纬度计算距离


前言

一、保留指定小数位

import org.apache.commons.lang3.StringUtils;
import java.math.BigDecimal;

public class OffSetPointUtil {

    /**
     * 保留指定小数位数
     *
     * @param value 原始double值
     * @param scale 小数位数
     * @return 保留指定小数位数后的字符串形式
     */
    public static String round(double value, int scale) {
        if (scale < 0) {
            throw new IllegalArgumentException("小数位数不能为负数");
        }
        BigDecimal bd = BigDecimal.valueOf(value);
        bd = bd.setScale(scale, BigDecimal.ROUND_HALF_UP);
        if (StringUtils.indexOf(bd.toString(), ".0") != -1) {
            return bd.toString().substring(0, StringUtils.indexOf(bd.toString(), ".0"));
        }
        return bd.toString();
    }
}

二、获取bean

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;


@Component
@Order(98)
public class SpringUtil implements ApplicationContextAware {

    private static Logger logger = LoggerFactory.getLogger(SpringUtil.class);
    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        if (SpringUtil.applicationContext == null) {
            SpringUtil.applicationContext = applicationContext;
        }
        logger.info("ApplicationContext配置成功,applicationContext对象:" + SpringUtil.applicationContext);
    }

    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);
    }

    public static <T> T getBean(Class<T> clazz) {
        return getApplicationContext().getBean(clazz);
    }

    public static <T> T getBean(String name, Class<T> clazz) {
        return getApplicationContext().getBean(name, clazz);
    }
}

三、假分页计算

包含一些自定义类,可根据项目具体封装结构修改

import com.gsafety.bg.gsdss.common.page.PageResult;
import org.springframework.data.domain.Pageable;

import java.util.List;
public class PageStaticUtils<T> {

    /**
     * 后端计算分页
     *
     * @param list list
     * @param page page
     * @return PageResult
     */
    public PageResult<T> pageData(List<T> list, Pageable page) {
        int total = list.size();
        int pages = (total / page.getPageSize()) + (total % page.getPageSize() > 0 ? 1 : 0);
        int start = page.getPageSize() * page.getPageNumber();
        int end = Math.min((start + page.getPageSize()), total);
        PageResult<T> pageResult = new PageResult<T>();
        pageResult.setNowPage(page.getPageNumber() + 1);
        pageResult.setPages(pages);
        pageResult.setPageSize(page.getPageSize());
        pageResult.setTotal(total);
        pageResult.setList(list.subList(start, end));
        return pageResult;
    }
}

四、星期计算

import java.time.LocalDate;

public class DayOfWeekUtil {

    public static String week(LocalDate day) {
        String[][] strArray = {{"MONDAY", "一"}, {"TUESDAY", "二"}, {"WEDNESDAY", "三"}, {"THURSDAY", "四"}, {"FRIDAY", "五"}, {"SATURDAY", "六"}, {"SUNDAY", "日"}};
        String k = String.valueOf(day.getDayOfWeek());
        //获取行数
        for (int i = 0; i < strArray.length; i++) {
            if (k.equals(strArray[i][0])) {
                k = strArray[i][1];
                break;
            }
        }
        return "星期" + k;
    }

}

五、经纬度计算距离

import lombok.experimental.UtilityClass;

@UtilityClass
public class DistanceUtil {

    /**
     * 地球平均半径
     */
    private static final double EARTH_RADIUS = 6378137;


    private static double rad(double d) {
        return d * Math.PI / 180.0;
    }

    /**
     * 根据两点间经纬度坐标(double值),计算两点间距离,单位为米
     *
     * @param centerLng 初始点经度
     * @param centerLat 初始点纬度
     * @param targetLng 目标点经度
     * @param targetLat 目标点纬度
     */
    public static double getDistance(double centerLng, double centerLat, double targetLng, double targetLat) {
        double radLat1 = rad(centerLat);
        double radLat2 = rad(targetLat);
        double a = radLat1 - radLat2;
        double b = rad(centerLng) - rad(targetLng);
        double s = 2 * Math.asin(
                Math.sqrt(
                        Math.pow(Math.sin(a / 2), 2)
                                + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)
                )
        );
        s = s * EARTH_RADIUS;
        s = Math.round(s * 10000) / 10000;
        return s;
    }
}

在这里插入图片描述

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

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

相关文章

【AI视野·今日Sound 声学论文速览 第二十八期】Wed, 18 Oct 2023

AI视野今日CS.Sound 声学论文速览 Wed, 18 Oct 2023 Totally 12 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers Robust Wake-Up Word Detection by Two-stage Multi-resolution Ensembles Authors Fernando L pez, Jordi Luque, Carlos Segura, Pablo…

当数据库遇上深度学习:AI DataLoader 助力因子管理模型训练全流程

深度学习模型有能力自动发现变量之间的关系&#xff0c;而这些关系通常是不可见的&#xff0c;这使得深度学习可以挖掘新的因子和规律&#xff0c;为量化投资策略提供更多可能性。在传统的量化策略开发流程中&#xff0c;通常会使用 Python 或第三方工具生成因子&#xff0c;并…

什么是电源高压测试标准?如何测试?测试时要注意什么?

电源高压测试也叫电源耐压测试&#xff0c;是为了检测电源产品绝缘结构是否能够承受电力系统的内部过电压&#xff0c;进而防止安全事故的发生。不同技术规格的产品&#xff0c;高压测试的标准也不同。对于一般设备来说&#xff0c;以两倍于被测物的工作电压再加1000V作为测试的…

访问控制1

文章目录 主要内容一.ServiceAccount1.示例&#xff1a;在一个名为acctests的namespace中&#xff0c;创建一个名为udbs的serviceAccount代码如下&#xff08;示例&#xff09;: 2.解释 二.Role和ClusterRole1.在名为test的namespace中创建一个名为test-role的角色,以及创建一个…

vue3+ts父子组件以及单页面刷新的方法

父子组件刷新页面&#xff1a; 父组件定义函数reset&#xff0c;子组件props接收 示例一&#xff1a; 父组件 //ts删减部分&#xff1a; import { deleteCompanyById, findAllCompanys } from /api/company import { usePureFetch } from /nexus/useFetch import type Compa…

2023 | 组蛋白乳酸化如何影响免疫、自噬最新发现!

乳 酸 乳酸是人体循环系统最丰富的代谢产物之一。乳酸由糖酵解的终产物丙酮酸盐通过乳酸脱氢酶&#xff08;LDH&#xff09;产生。有氧条件下&#xff0c;丙酮酸盐可以穿梭进入线粒体&#xff0c;以促进生物合成途径和ATP产生。当氧气不足时&#xff0c;丙酮酸转化为乳酸&…

asp.net文档管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net文档管理系统是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言开发 asp.net文档管理系统 二、功能介绍 (1…

如何系列 如何玩转远程调用之OpenFegin+SpringBoot(非Cloud)

文章目录 简介原生Fegin示例基础契约日志重试编码器/解码器自定义解码器 请求拦截器响应拦截器表单文件上传支持错误解码器断路器指标metrics客户端 配合SpringBoot&#xff08;阶段一&#xff09;配合SpringBoot&#xff08;阶段二&#xff09;1.EnableLakerFeignClients2.Lak…

spring cloud Eureka集群模式搭建(IDEA中运行)《一》

spring cloud Eureka集群模式搭建&#xff08;IDEA中运行&#xff09; 新建springboot 工程工程整体目录配置文件IDEA中部署以jar包形式启动总结 新建springboot 工程 新建一个springboot 工程&#xff0c;命名为&#xff1a;eureka_server。 其中pom.xml文件为&#xff1a; …

Mask Free VIS笔记(CVPR2023 不需要mask标注的实例分割)

paper: Mask-Free Video Instance Segmentation github 一般模型学instance segmentation都是要有mask标注的&#xff0c; 不过mask标注既耗时又枯燥&#xff0c;所以paper中仅用目标框的标注来实现实例分割。 主要针对视频的实例分割。 之前也有box-supervised实例分割&…

去除QPushButton边框上的白点

使用border:3px solid #35FFFAF0; 出现上面一行border上白点。 使用border:3px solid rgb(89,87,84); 没有白点。

1.java环境搭建与eclipse安装和配置

JDK&#xff08;JAVA开发工具包&#xff09;&#xff1a;提供给java开发人员使用的&#xff0c;其中包含了java的开发工具&#xff0c;也包括了JRE所以安装了JDK,就不用单独安装JTE了&#xff0c;其中的开发工具&#xff1a;编译工具(javac.exe) 打包工具(jar.exe)等JRE(JAVA运…

什么年代了还在手工写接口测试文档吗?

01 前言 接口文档&#xff0c;顾名思义就是对接口说明的文档。好的接口文档包含了对接口URL&#xff0c;参数以及输出内容的说明&#xff0c;我们参照接口文档就能编写出一个个的测试用例。而且接口文档详细的话&#xff0c;测试用例编写起来就会比较简单&#xff0c;不容易…

MES 漫谈123

我们从Know-How出发 Know&#xff1a;什么是 MES 制造执行系统MES是一套工具&#xff0c;旨在支持产品达到预期的质量、安全和合规水平&#xff0c;以及生产的预期性能水平。MES是支持工厂质量标准和企业卓越运营计划的关键要素。在工厂层面&#xff0c;MES不是通过“最后一天…

Telegram 引入了国产小程序容器技术

Telegram 宣布为其开发者提供了一项“能够在 App 中运行迷你应用”的新功能&#xff08; 迷你应用即 Mini App&#xff0c;下文中以“小程序”代替&#xff09;。 在一篇博客文章中&#xff0c;Telegram 的开发者写到“小程序提供了可替代互联网网站的灵活界面&#xff08;cre…

DataX 数据迁移

1、前期准备 Linux系统 Python&#xff08;最好是2&#xff09; Jdk 1.8以上 2、安装Python2 --更新软件包 sudo apt update --安装python2 sudo apt install python2 --查看python版本 python2 --version 3、下载DataX Linux下载DataX wget http://datax-opensource.o…

攻防世界-Ph0en1x-100

第一次独立使用frida解安卓题&#xff0c;没分析代码 Steps 使用jadx打开apk分析主要代码 最主要的就是这个if判断了&#xff0c;安装apk后&#xff0c;有一个输入框和一个check按钮&#xff0c;会根据输入的结果Toast&#xff1a;Success or Failed。 getSecret(getFlag()).eq…

深入了解JavaScript中的AJAX和HTTP请求

在现代Web开发中&#xff0c;AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;和HTTP请求被广泛应用于实现动态交互式网页。本文将深入探讨AJAX的概念、工作原理以及使用方法。 什么是AJAX&#xff1f; AJAX是一种利用JavaScript和HTTP请求与服务器进行异步通信的…

基于公开数据集,5 分钟生成个性可视化数据报告

云布道师 简介&#xff1a; 本次活动将基于内置电商、广告、出行、汽车、国内生产总值等公开数据集&#xff0c;通过DataWorks 与 MaxCompute 搭建可视化数据报告。 活动时间 2023 年 10 月 8 日-2023 年 11 月 10 日 参赛者首先前往参赛页面领取产品免费资源&#xff0c;依…

Redis基于布隆过滤器解决缓存穿透问题(15)

Redis基于布隆过滤器解决缓存穿透问题 1.布隆过滤器基本介绍2.布隆过滤器的优缺点3.布隆过滤器的原理4.缓存穿透问题5.解决Redis缓存穿透问题 1.布隆过滤器基本介绍 布隆过滤器适用于判断某个数据是否在集合中存在&#xff0c;可能存在一定的误判&#xff0c; Bloom Filter基本…