cpu时间

Spring Boot项目中使用 TrueLicense 生成和验证License(服务器许可)

筅森魡賤 提交于 2020-01-19 04:33:22
icense,即版权许可证,一般用于收费软件给付费用户提供的访问许可证明。根据应用部署位置的不同,一般可以分为以下两种情况讨论: 应用部署在开发者自己的云服务器上。这种情况下用户通过账号登录的形式远程访问,因此只需要在账号登录的时候校验目标账号的有效期、访问权限等信息即可。 应用部署在客户的内网环境。因为这种情况开发者无法控制客户的网络环境,也不能保证应用所在服务器可以访问外网,因此通常的做法是使用服务器许可文件,在应用启动的时候加载证书,然后在登录或者其他关键操作的地方校验证书的有效性。 注:限于文章篇幅,这里只讨论代码层面的许可限制,暂不考虑逆向破解等问题。此外,在下面我只讲解关键代码实现,完整代码可以参考: gitee.com/zifangsky/L… 二 使用 TrueLicense 生成License (1)使用 Spring Boot 构建测试项目ServerDemo,用于为客户生成License许可文件: 注:这个完整的Demo项目可以参考: gitee.com/zifangsky/L… i)在pom.xml中添加关键依赖: de.schlichtherle.truelicense truelicense-core 1.33 provided 复制代码 ii)校验自定义的License参数: TrueLicense的 de.schlichtherle.license

Spring Boot项目中使用 TrueLicense 生成和验证License(服务器许可)

大兔子大兔子 提交于 2020-01-19 04:30:06
一 简介 License,即版权许可证,一般用于收费软件给付费用户提供的访问许可证明。根据应用部署位置的不同,一般可以分为以下两种情况讨论: 应用部署在开发者自己的云服务器上。这种情况下用户通过账号登录的形式远程访问,因此只需要在账号登录的时候校验目标账号的有效期、访问权限等信息即可。 应用部署在客户的内网环境。因为这种情况开发者无法控制客户的网络环境,也不能保证应用所在服务器可以访问外网,因此通常的做法是使用服务器许可文件,在应用启动的时候加载证书,然后在登录或者其他关键操作的地方校验证书的有效性。 注:限于文章篇幅,这里只讨论代码层面的许可限制,暂不考虑逆向破解等问题。此外,在下面我只讲解关键代码实现,完整代码可以参考: gitee.com/zifangsky/L… 二 使用 TrueLicense 生成License (1)使用Spring Boot构建测试项目ServerDemo,用于为客户生成License许可文件: 注:这个完整的Demo项目可以参考: gitee.com/zifangsky/L… i)在pom.xml中添加关键依赖: <dependency> <groupId>de.schlichtherle.truelicense</groupId> <artifactId>truelicense-core</artifactId> <version>1.33<

JVM之GC算法的实现(垃圾回收器)

懵懂的女人 提交于 2020-01-18 08:17:22
上一节: 《JVM之GC算法》 知道GC算法的理论基础,我们来 看看 具体的实现。只有落地的理论,才是真理。 一、JVM垃圾回收器的结构 JVM虚拟机规范对垃圾收集器应该如何实现没有规定,因为没有最好的垃圾收集器,只有最适合的场景。 图中展示了7种作用于不同分代的收集器,如果两个收集器之间存在连线,则说明它们可以搭配使用。虚拟机所处的区域则表示它是属于新生代还是老年代收集器。 7种:serial收集器、parnew收集器、parallel scavenge收集器、serial old 收集器、parallel old收集器、cms收集器、g1收集器(整堆收集器)、 串行收集:单垃圾收集线程,进行收集工作,用户进程需要等待 并行收集:工作原理与串行一样,只是在收集垃圾时是多条线程同时进行,收集的效率在一般情况下自然高于单线程。 并发收集:指用户线程与垃圾收集线程同时工作(并发:同一时间间隔)。用户程序在继续运行,而垃圾收集程序运行在另一个CPU上。 吞吐量:吞吐量就是CPU中用于运行用户代码的时间与CPU总消耗时间的比值(吞吐量 = 运行用户代码时间 / (运行用户代码时间 + 垃圾收集时间)) 1、Serial收集器 Serial(串行)收集器:最基本,最古老的收集器,只有一个线程进行垃圾收集器的工作,并且在进行垃圾收集工作时需要暂停其他工作线程(stop the word)

ps、pstree、top命令

半腔热情 提交于 2020-01-18 06:48:36
ps -l [ root@i-ka ~ ] #ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 17236 17233 0 80 0 - 28946 wait pts/0 00:00:00 bash 0 R 0 17274 17236 0 80 0 - 37233 - pts/0 00:00:00 ps 每个项目的意义简单说明如下: F (flag):代表程序的总结旗标,常见为4 代表root S (stat):状态列,主要的分类项目有: R (Running):该程式正在运作中; S (Sleep):该程式目前正在睡眠状态(idle),但可以被唤醒(signal)。 D :不可被唤醒的睡眠状态,通常这支程式可能在等待I/O 的情况(ex>列印) T :停止状态(stop),可能是在工作控制(背景暂停)或除错(traced) 状态; Z (Zombie):僵尸状态,程序已经终止但却无法被移除至记忆体外。 UID/PID/PPID:代表『此程序被该UID 所拥有/程序的PID 号码/此程序的父程序PID 号码』 C:代表CPU 使用率,单位为百分比; PRI/NI:Priority/Nice 的缩写,代表此程序被CPU 所执行的优先顺序,数值越小代表该程序越快被CPU 执行。 ADDR/SZ/WCHAN

一文让你明白CPU上下文切换

我与影子孤独终老i 提交于 2020-01-18 04:29:39
转载自: https://segmentfault.com/a/1190000017457234 我们都知道,Linux 是一个多任务操作系统,它支持远大于 CPU 数量的任务同时运行。当然,这些任务实际上并不是真的在同时运行,而是因为系统在很短的时间内,将 CPU 轮流分配给它们,造成多任务同时运行的错觉。 而在每个任务运行前,CPU 都需要知道任务从哪里加载、又从哪里开始运行,也就是说,需要系统事先帮它设置好 CPU 寄存器和程序计数器 什么是 CPU 上下文 CPU 寄存器和程序计数器就是 CPU 上下文,因为它们都是 CPU 在运行任何任务前,必须的依赖环境。 CPU 寄存器是 CPU 内置的容量小、但速度极快的内存。 程序计数器则是用来存储 CPU 正在执行的指令位置、或者即将执行的下一条指令位置。 什么是 CPU 上下文切换 就是先把前一个任务的 CPU 上下文(也就是 CPU 寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器所指的新位置,运行新任务。 而这些保存下来的上下文,会存储在系统内核中,并在任务重新调度执行时再次加载进来。这样就能保证任务原来的状态不受影响,让任务看起来还是连续运行。 CPU 上下文切换的类型 根据任务的不同,可以分为以下三种类型 进程上下文切换 线程上下文切换 中断上下文切换 进程上下文切换

[转帖]KVM性能测试报告

坚强是说给别人听的谎言 提交于 2020-01-17 22:52:10
KVM性能测试报告 http://openskill.cn/article/88 本测试试图找出以下问题的答案: 1. 虚拟机相对于物理机性能损失有多严重(CPU/MEM/NET/DISK) 2. 对于多个虚拟机,KVM 对资源的分配是否公正 3. 找出性能最好的物理机磁盘类型和虚拟机磁盘类型及参数 A) 物理机使用 ext4 的最优化设置 ➔ 使用 raw 磁盘的最优性能设置 ➢ cache类型 • none • writeback • writethrough ➢ 驱动类型 • ide • virtio ➔ 使用 qcow2 磁盘的最优性能设置 ➢ cache类型 • none • writeback • writethrough ➢ 驱动类型 • ide • virtio ➢ 是否preallocation ➔ 比较得出使用 ext4 的虚拟机磁盘类型最优化设置 B) 物理机使用xfs磁盘的最优化设置 ➔ 使用 raw 磁盘的最优性能设置 ➢ cache类型 1. none 2. writeback 3. writethrough ➢ 驱动类型 1. ide 2. virtio ➔ 使用 qcow2 磁盘的最优性能设置 ➢ cache类型 1. none 2. writeback 3. writethrough ➢ 驱动类型 1. ide 2. virtio ➢

JVM垃圾回收

独自空忆成欢 提交于 2020-01-17 18:16:33
上文回顾: 《 深入理解Java内存模型(JMM)》 写在前面 本节常见面试题: 问题答案在文中都有提到 如何判断对象是否死亡(两种方法)。 简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用的区别、使用软引用能带来的好处)。 如何判断一个常量是废弃常量 如何判断一个类是无用的类 垃圾收集有哪些算法,各自的特点? HotSpot为什么要分为新生代和老年代? 常见的垃圾回收器有那些? 介绍一下CMS,G1收集器。 Minor Gc和Full GC 有什么不同呢? 本文导火索 当需要排查各种 内存溢出问题、当垃圾收集成为系统达到更高并发的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。 1 揭开JVM内存分配与回收的神秘面纱 Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配。同时,Java 自动内存管理最核心的功能是 堆 内存中对象的分配与回收。 JDK1.8之前的堆内存示意图: 从上图可以看出堆内存分为新生代、老年代和永久代。新生代又被进一步分为:Eden 区+Survivor1 区+Survivor2 区。值得注意的是,在 JDK 1.8中移除整个永久代,取而代之的是一个叫元空间(Metaspace)的区域(永久代使用的是JVM的堆内存空间,而元空间使用的是物理内存,直接受到本机的物理内存限制)。 1.1 对象优先在eden区分配

时间轮转法的JAVA实现

自古美人都是妖i 提交于 2020-01-17 14:03:07
操作系统作业需要,续写一段C语言版的时间轮转法的进程调度模拟,我表示我不想、我不要、我不会。 所以我就重构了Java版的(但愿最终给过) 代码说明 StreamUtils是工具类,用于序列化IO操作 ProcStruct是进程类,这里大多是复制作业要求中的字段定义 ProcessScheduling是运行类,包括主函数,各种方法,全局定义等 至于具体内容,个人认为注释写的还算比较详细~ 如何运行?运行主函数即可。 package processScheduling; import java.io.*; import java.util.Arrays; import java.util.List; /** * Created by CHEN on 2019/11/6. */ public class StreamUtils implements Serializable { private static final long serialVersionUID = 1L; /** * 序列化,List * * @param list * @param file * @param <T> * @return */ public static <T> boolean writeObject(List<T> list, File file) { T[] array = (T[]) list

DMA、TCM与Cache介绍

末鹿安然 提交于 2020-01-17 12:46:10
【转】https://blog.csdn.net/qq_20880415/article/details/89036066 DMA DMA=Direct Memory Access。这是一种通过硬件实现的数据传输机制。简单的说,就是不在CPU的参与下完成数据的传输。 DMA是一种硬件设备。这种设备的工作原理是这样的: ——首先CPU告诉DMA设备,要有一堆数据需要传输,为了效率而请它出马。(DMA请求) ——DMA收到CPU的消息,开始准备。此时CPU把数据源地址、数据目标地址、传输数据量、传输模式等等参数告诉它。(DMA初始化) ——DMA初始化完,向CPU发送消息“借你的总线用一用,我要开始传输数据了!”(总线出借,DMA启动) ——CPU收到消息后,暂时切断自己与总线的联系。DMA开始传输数据。(DMA数据) ——DMA传输完数据之后,向CPU发送消息“搞定了!总线还给你。”(总线归还) ——CPU说:“干得好!老将出马一个顶俩!辛苦了,你先歇着吧。”DMA设备停止。CPU该干啥干啥。 由于是硬件实现的,所以DMA的速度非常快。快到什么程度呢?在DS上,尤其是数据量非常大的时候,相比于CPU当中介,效率能够提高一百万倍以上。 由于DMA的速度是如此之快,所以大量的数据传输,一般都要求使用DMA。 TCM TCM=Tightly Coupled Memory,是一种高速缓存

白话Elasticsearch67-不随意调节jvm和thread pool的原因&jvm和服务器内存分配的最佳实践

♀尐吖头ヾ 提交于 2020-01-17 09:36:52
文章目录 不随意调节jvm和thread pool的原因 jvm gc threadpool jvm和服务器内存分配的最佳实践 jvm heap分配 将机器上少于一半的内存分配给es 不要给jvm分配超过32G内存 在32G以内的话具体应该设置heap为多大? 对于有1TB内存的超大内存机器该如何分配? swapping 不随意调节jvm和thread pool的原因 es中有很多的配置都让大家忍不住去调优,因为也许大家都太过于迷恋性能优化了,都认为优化一些配置可以大幅度提升性能,就感觉性能调优像个魔法一样,是个万能的东西。但是其实99.99%的情况下,对于es来说,大部分的参数都保留为默认的就可以了。因为这些参数经常被滥用和错误的调节,继而导致严重的稳定性问题以及性能的急剧下降。 jvm gc jvm使用垃圾回收器来释放掉不用的内存,千万不要去调节默认的垃圾回收行为。es默认用的垃圾回收器是CMS。CMS回收器是并发式的回收器,能够跟应用程序工作线程并发工作,最大程度减少垃圾回收时的服务停顿时间。但是CMS还是会有两个停顿阶段,同时在回收特别大的heap时也会有一些问题。尽管有一些缺点,但是CMS对于要求低延时请求响应的软件来说,还是最佳的垃圾回收器,因此官方的推荐就是使用CMS垃圾回收器。 有一种最新的垃圾回收器叫做G1。G1回收器可以比CMS提供更少的回收停顿时间