时间计算

LocalDateTime用法(jdk1.8)

假如想象 提交于 2020-04-06 03:45:38
前言 最近看别人项目源码,发现Java8新的日期时间API很方便强大,所以转载该入门介绍博客,记录一下。 使用新时间日期API的必要性 在java8以前,或许: 当你在做有关时间日期的操作时,你会想到用Date; 当你在做日期、月份、天数相加减时,你会想到用Calendar; 当你需要对时间日期进行格式化时,你会想到使用SimpleDateFormat或DateFormat下的其他子类; …… 但是,你必须知道,以上有关的时间日期操作对象,都是可变的、线程不安全的,同时,如果作为一个经常写过类似代码的人来说,尽管有相关对象提供某些操作,但并不能很快、很简单的就能得到最终想要的结果,如:要计算两个时间点之间相差的年、月、日、周、时、分、秒等,这些计算尽管原有API也能够实现,但原有API除了线程不安全之外,另外一个不足之处就是代码繁琐,性能低! 为何我们总提多线程下,线程不安全?对于初学者来说,可能觉得能够简单实现出功能就已经足够,但是真正的开发项目是不可能仅仅考虑功能的实现的,还要考虑项目的安全性、稳定性、高性能、高可用性等等!因此,作为java开发者,多线程的知识是必不可少的。而也正因为多线程,才会出现一大堆问题(简称线程安全性问题),作为开发者,就应该写出不仅能实现功能的代码,还要是线程安全的代码。那么,学习并熟悉掌握新的线程安全的API就显得非常重要了! 没错

PromQL 内置函数

二次信任 提交于 2020-04-05 17:20:24
PromQL 内置函数 Prometheus 提供了其它大量的内置函数,可以对时序数据进行丰富的处理。某些函数有默认的参数,例如: year(v=vector(time()) instant-vector) 。其中参数 v 是一个瞬时向量,如果不提供该参数,将使用默认值 vector(time()) 。instant-vector 表示参数类型。 abs() abs(v instant-vector) 返回输入向量的所有样本的绝对值。 absent() absent(v instant-vector) ,如果传递给它的向量参数具有样本数据,则返回空向量;如果传递的向量参数没有样本数据,则返回不带度量指标名称且带有标签的时间序列,且样本值为1。 当监控度量指标时,如果获取到的样本数据是空的, 使用 absent 方法对告警是非常有用的。例如: # 这里提供的向量有样本数据 absent ( http_requests_total { method = "get" } ) = > no data absent ( sum ( http_requests_total { method = "get" } )) = > no data ​ # 由于不存在度量指标 nonexistent,所以 返回不带度量指标名称且带有标签的时间序列,且样本值为1 absent ( nonexistent

CPU 使用率低高负载的原因

倖福魔咒の 提交于 2020-03-29 17:44:27
CPU 使用率低高负载的原因 原因总结 产生的原因一句话总结就是:等待磁盘I/O完成的进程过多,导致进程队列长度过大,但是cpu运行的进程却很少,这样就体现到负载过大了,cpu使用率低。 下面内容是具体的原理分析: 在分析负载为什么高之前先介绍下什么是负载、多任务操作系统、进程调度等相关概念。 什么是负载 什么是负载:负载就是cpu在一段时间内正在处理以及等待cpu处理的进程数之和的统计信息,也就是cpu使用队列的长度统计信息,这个数字越小越好(如果超过CPU核心*0.7就是不正常) 负载分为两大部分:CPU负载、IO负载 CPU负载 假设有一个进行大规模科学计算的程序,虽然该程序不会频繁地从磁盘输入输出,但是处理完成需要相当长的时间。因为该程序主要被用来做计算、逻辑判断等处理,所以程序的处理速度主要依赖于cpu的计算速度。此类cpu负载的程序称为“计算密集型程序”。 IO负载 还有一类程序,主要从磁盘保存的大量数据中搜索找出任意文件。这个搜索程序的处理速度并不依赖于cpu,而是依赖于磁盘的读取速度,也就是输入输出(input/output,I/O).磁盘越快,检索花费的时间就越短。此类I/O负载的程序,称为“I/O密集型程序”。 什么是多任务操作系统 Linux操作系统能够同时处理几个不同名称的任务。但是同时运行多个任务的过程中

java中日期的换算处理

烂漫一生 提交于 2020-03-27 18:13:51
JAVA8中的日期API是JSR-310的实现,并且是工作在ISO-8601日历系统基础上的,但我们也可以在非ISO的日历上。 JDK8的日期API大致分为以下几个包: 1 java.time包:JDK8中的基础包,所有常用的基础类都是这个包的一部分,如LocalDate,LocalTime,LocalDateTime等等,所有这些类都是不可变且线程安全的; 2 java.time.chrono包:这个包为非ISO的日历系统定义了一些API,我们可以在借助这个包中的一些类扩展我们自己的日历系统; 3 java.time.format包:这个包很明显了,格式化和解析日期时间对象,一般java.time包中的类都差不多能满足我们的需求了,如果有需要,可以调用这个包下的类自定义解析方式; 4 java.time.temporal包:这个包很有意思,封装了一些获取某个特定日期和时间的接口,比如某月的第一天或最后一天,并且这些方法都是属于特别好认的方法。 5 java.time.zone包:这个包就是时区相关的类了。 在JDK1.8中,我们经常使用的大约有如下几个类: LocalDate , LocalTime , LocalDateTime , DateTimeFormatter 等,所以我们主要看一下这几个类的相关方法。 1. 日期API 1.1 LocalDate java.time

C# TimeSpan 时间计算

不问归期 提交于 2020-03-23 08:41:47
原文: C# TimeSpan 时间计算 本文告诉大家简单的方法进行时间计算。 实际上使用 TimeSpan 可以做到让代码比较好懂,而代码很简单。 例如我使用下面的代码表示 5 秒 const int needCount = 5 * 1000; 因为后面使用的是延迟,延迟的代码很简单 Task.Delay(needCount) 这时传入的是一个毫秒,但是很多小伙伴问,为什么是 5*1000 表示 5秒,他不知道我使用的是毫秒。 所以建议使用 TimeSpan 来写时间,下面的需求是在判断在开机 20 秒内的延迟,如果在开机 20 秒内启动应用,那么就需要延迟时间 var needTime = TimeSpan.FromSeconds(20); //开机20秒左右 USB 已经加载完成 计算时间的减法或加法可以使用重载 + 和 - ,请看下面代码,就是把两个 TimeSpan 相减,返回的值也是一个 TimeSpan ,下面的代码是编译不通过的。 var chikesereHearpawwirboo = needTime - maxDelay; Console.WriteLine(chikesereHearpawwirboo); 如果需要从毫秒转 TimeSpan ,请看下面代码 // 毫秒转 TimeSpan var milliseconds = 5 * 1000; var

《网络安全态势感知》读书笔记

蓝咒 提交于 2020-03-19 18:06:28
本书涉及面较广,但是白话较多,没有太多的干货。寸之深,亩只阔,适合作为科普读物快速阅读。 文章目录 Ⅰ 基础知识 1 开启网络安全态势感知的旅程 2 大数据平台和技术 2.1 大数据基础 2.1.1 大数据关键技术 2.1.2 大数据计算模式 2.2 大数据主流平台框架 2.2.1 Hadoop 2.2.2 Spark 2.2.3 Storm 2.3 网络安全态势感知架构 2.4 大数据采集与预处理技术 2.5 大数据存储与管理技术 2.6 大数据处理与分析技术 2.7 大数据可视化技术 Ⅱ 态势提取 3 网络安全数据范围 3.1 完整内容数据 3.2 提取内容数据 3.3 会话数据 3.4 统计数据 3.5 元数据 3.6 日志数据 3.7 告警数据 4 网络安全数据采集 4.1 制定数据采集计划 4.2 主动式采集 4.3 被动式采集 4.4 数据采集工具 4.5 采集点部署 5 网络安全数据预处理 5.1 数据清洗 5.2 数据集成 5.3 数据归约 5.4 数据变换 5.5 数据融合 Ⅲ 态势提取 6 网络安全检测与分析 6.1 入侵检测 6.1.1 IDS分类 6.1.2 入侵检测的分析方法 6.2 入侵防御 6.2.1 IPS分类 6.3 入侵容忍 6.4 安全分析 6.4.1 安全分析流程 6.4.2 数据包分析 6.4.3 计算机/网络取证 6.4.4 恶意软件分析

计算两个时间相差多少年月日的sql算法

烈酒焚心 提交于 2020-03-16 08:38:22
今天在CSDN上看到一个算法问题,描述如下: 如:起始时间 2011-1-1 截止日期 2011-2-1 两个时间比较相差 0年1个月 如:起始时间 2010-11-1 截止日期 2011-12-1 两个时间比较相差 1年1个月 怎么比较才能得出~ 相差多少年 多少个月 这个当然很简单, 一句SQL就可以了: select ltrim(datediff(yy,@dt1,@dt2))+'年'+ltrim(datediff(mm,@dt1,@dt2)%12)+'月' 但是如果连几天也要计算呢?闲着没事自己随便在SQL Server下写了写,store procedures代码如下,应该没可以了: CREATE PROCEDURE GetDateDiff @fromDate nvarchar(10), @toDate nvarchar(10) AS DECLARE @YearDiff INTEGER DECLARE @MonthDiff INTEGER DECLARE @DayDiff INTEGER DECLARE @ToMonth INTEGER DECLARE @FromDay INTEGER DECLARE @ToDay INTEGER SET @YearDiff = LTRIM(DATEDIFF(yy, @fromDate, @toDate)) SET @MonthDiff =

sql datepart ,dateadd,datediff,DateName函数

荒凉一梦 提交于 2020-03-08 16:14:06
[转载]sql datepart ,dateadd,datediff,DateName函数 (2011-09-13 15:16:56) 转载 ▼ 标签: 转载 分类: SQL语句(oracle,sql) 详细!! 原文地址: sql datepart ,dateadd,datediff,DateName函数 作者: 蓝天碧海 1. 当前系统日期、时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 例如:向日期加上2天 select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000 3. datediff 返回跨两个指定日期的日期和时间边界数。 select datediff(day,'2004-09-01','2004-09-18') --返回:17 4. datepart 返回代表指定日期的指定日期部分的整数。 SELECT DATEPART(month, '2004-10-15') --返回 10 5. datename 返回代表指定日期的指定日期部分的字符串 SELECT datename(weekday, '2004-10-15') --返回:星期五 6. day(), month(),year() --可以与datepart对照一下

1、算法初识

痴心易碎 提交于 2020-03-05 12:42:10
1.什么是 算法 ? 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。 也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。 如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。 不同的算法可能用不同的时间、空间或效率来完成同样的任务。 一个算法的优劣可以用空间复杂度与时间复杂度来衡量。 算法中的指令描述的是一个计算,当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。 一个状态到另一个状态的转移不一定是确定的。随机化算法在内的一些算法,包含了一些随机输入。 1.1特征 一个算法应该具有以下五个重要的特征: 有穷性 (Finiteness) 算法的有穷性是指算法必须能在执行有限个步骤之后终止; 确切性 (Definiteness) 算法的每一步骤必须有确切的定义; 输入项 (Input) 一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件; 输出项 (Output) 一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的; 可行性 (Effectiveness) 算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步

Sql 中常用日期转换Convert(Datetime)

我们两清 提交于 2020-03-02 11:22:47
CONVERT(data_type,expression[,style]) convert(varchar(10),字段名,转换格式) 说明: 此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar) 相互转换的时候才用到. 语句 结果 SELECT CONVERT(varchar(100), GETDATE(), 0) 07 15 2009 4:06PM SELECT CONVERT(varchar(100), GETDATE(), 1) 07/15/09 SELECT CONVERT(varchar(100), GETDATE(), 2) 09.07.15 SELECT CONVERT(varchar(100), GETDATE(), 3) 15/07/09 SELECT CONVERT(varchar(100), GETDATE(), 4) 15.07.09 SELECT CONVERT(varchar(100), GETDATE(), 5) 15-07-09 SELECT CONVERT(varchar(100), GETDATE(), 6) 15 07 09 SELECT CONVERT(varchar(100), GETDATE(), 7) 07 15, 09 SELECT CONVERT