JVM 11 调优指南:如何进行JVM调优,JVM调优参数
JVM 11的优化指南:如何进行JVM调优,以及JVM调优参数有哪些”这篇文章将包含JVM 11调优的核心概念、重要性、调优参数,并提供12个实用的代码示例,每个示例都会结合JVM调优参数和Java代码
本文已收录于,我的技术网站 ddkk.com,有大厂完整面经,工作技术,架构师成长之路,等经验分享
JVM 11的优化指南
JVM调优简介
JVM调优是通过调整Java虚拟机的配置参数来提升应用程序的性能和资源利用效率的过程。这包括调整堆内存大小、选择合适的垃圾收集器,以及调整其他性能相关的参数。
JVM调优的重要性
- 提高性能:通过调优,可以提升应用程序的响应速度和处理能力。
- 资源优化:合理的配置可以使应用更高效地利用系统资源。
- 稳定性增强:避免过度的资源消耗和频繁的垃圾回收,从而提高应用的稳定性。
JVM 11调优参数
- 堆内存设置:-Xms 和 -Xmx 设置堆的起始大小和最大大小。
- 垃圾收集器选择:-XX:+UseG1GC 使用G1垃圾收集器,适用于大堆和多核处理器。
- 性能监控:-XX:+PrintGCDetails 和 -XX:+PrintGCDateStamps 打印垃圾收集细节。
企业级 JVM 11 的调优参数,机器配置是8核32G
为配置有8核和32GB内存的机器推荐JVM 11调优参数时,需考虑应用的类型、负载特性等。以下是一套企业级的JVM调优参数推荐,适用于大多数中大型Java应用:
1、堆内存设置
- -Xms16g:设置初始堆内存为16GB。这个设置使得JVM在启动时即分配较大内存,减少运行时动态扩展带来的性能损耗。
- -Xmx16g:设置最大堆内存为16GB。这样做可以防止频繁的垃圾回收,并保证应用程序有足够的内存。
2、垃圾收集器选择
- -XX:+UseG1GC:使用G1垃圾收集器,适用于需要快速响应和大内存管理的应用。
3、G1垃圾收集器的进一步优化
- -XX:MaxGCPauseMillis=200:尽可能将GC暂停时间控制在200毫秒以内,以减少应用停顿。
- -XX:ParallelGCThreads=8:设置并行GC线程数,通常设置为CPU核心数。
- -XX:ConcGCThreads=4:设置G1垃圾回收器的并发线程数,通常为ParallelGCThreads的一半。
4、元空间设置
- -XX:MetaspaceSize=256m:设置初始元空间大小为256MB。
- -XX:MaxMetaspaceSize=512m:设置最大元空间大小为512MB,以防止元空间过度使用内存。
最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。这是大佬写的, 七千页的BAT大佬写的刷题笔记,让我offer拿到手软
5、GC日志记录
- -Xlog:gc:file=gc.log:time,level:filecount=5,filesize=20M*:配置GC日志输出,包括日志文件的位置、大小和轮转。
6、性能调优
- -XX:+UseStringDeduplication:开启字符串去重功能,减少堆内存的占用。
- -XX:+DisableExplicitGC:禁用显式GC调用(如System.gc() ),避免不必要的GC操作。
7、高级调优选项
- -XX:+UnlockExperimentalVMOptions:解锁实验性VM选项,用于开启一些最新的优化功能。
- -XX:+UseLargePages:启用大页面支持,有助于提高大内存机器的性能。
注意事项
- 根据应用的实际性能和资源使用情况调整这些参数。
- 应用性能监控工具可以帮助您更好地理解应用运行情况。
- 在生产环境中逐渐调整参数,并密切关注每次调整后的影响。
合理的JVM调优可以显著提升应用的性能和稳定性。不过,请记得调优是一个持续的过程,需要根据应用的具体表现来不断调整和优化。
实用代码示例
示例1:设置和监控堆内存大小
JVM启动参数:
java -Xms512m -Xmx1g -jar YourApp.jar
- -Xms512m:设置初始堆内存为512MB。
- -Xmx1g:设置最大堆内存为1GB。
Java代码:
public class HeapSizeMonitoring {public static void main(String[] args) {// 获取运行时环境Runtime runtime = Runtime.getRuntime();// 打印JVM的初始内存和最大内存配置System.out.println("JVM初始内存大小:" + runtime.totalMemory() / (1024 * 1024) + " MB");System.out.println("JVM最大内存大小:" + runtime.maxMemory() / (1024 * 1024) + " MB");}
}
此代码示例演示了如何在Java应用程序中监控当前JVM的堆内存使用情况。
示例2:使用G1垃圾收集器并监控GC
JVM启动参数:
java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -jar YourApp.jar
- -XX:+UseG1GC:使用G1垃圾收集器。
- -XX:MaxGCPauseMillis=200:设置期望的最大GC暂停时间为200毫秒。
- -XX:+PrintGCDetails 和 -XX:+PrintGCDateStamps:打印GC的详细信息和时间戳。
Java代码:
import java.util.ArrayList;
import java.util.List;public class G1GCExample {public static void main(String[] args) {List<byte[]> list = new ArrayList<>();while (true) {list.add(new byte[1024 * 1024]); // 每次分配1MB的空间if (list.size() > 100) {list.clear(); // 清空列表以释放内存}}}
}
此代码示例展示了在使用G1垃圾收集器时的内存分配和清理过程。
示例3:线程堆栈大小的设置与监控
JVM启动参数:
java -Xss256k -jar YourApp.jar
- -Xss256k:设置每个线程的堆栈大小为256KB。
Java代码:
javaCopy code
public class ThreadStackSizeExample {public static void main(String[] args) {// 创建并启动一个新线程Thread thread = new Thread(() -> {try {Thread.sleep(10000); // 让线程休眠一段时间} catch (InterruptedException e) {e.printStackTrace();}});thread.start();System.out.println("线程堆栈大小设置为256KB...");}
}
这段代码展示了如何设置线程的堆栈大小,并创建一个简单的线程来展示这一设置的实际应用。
示例4:使用G1垃圾收集器并调优
JVM启动参数:
java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=45 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -jar YourApp.jar
- -XX:+UseG1GC:使用G1垃圾收集器。
- -XX:MaxGCPauseMillis=200:尝试将GC的最大暂停时间控制在200毫秒以内。
- -XX:InitiatingHeapOccupancyPercent=45:当堆占用率达到45%时开始GC。
- -XX:+PrintGCDetails 和 -XX:+PrintGCDateStamps:打印详细的GC信息和时间戳。
Java代码:
import java.util.ArrayList;
import java.util.List;public class G1GCExample {public static void main(String[] args) {System.out.println("G1垃圾收集器已启用,GC的详细信息和时间戳将被打印...");// 创建一个列表,用于存储分配的内存块List<byte[]> list = new ArrayList<>();for (int i = 0; i < 1000; i++) {// 每次循环分配1MB的内存块list.add(new byte[1024 * 1024]);// 每当列表中有100个内存块时,清空列表,释放内存if (list.size() >= 100) {list.clear();// 建议执行一次垃圾收集System.gc();}}}
}
此代码示例展示了如何在使用G1垃圾收集器的情况下进行内存分配和清理。
示例5:监控垃圾收集信息
JVM启动参数:
java -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -jar YourApp.jar
- -XX:+PrintGC:打印基本的GC信息。
- -XX:+PrintGCDetails:打印GC的详细信息。
- -XX:+PrintGCDateStamps:在GC日志中加入时间戳。
Java代码:
import java.util.concurrent.TimeUnit;public class GCMonitoringExample {public static void main(String[] args) throws InterruptedException {System.out.println("垃圾收集信息监控已启用,GC的基本信息、详细信息和时间戳将被打印...");// 分配内存并稍作等待,以便观察GC的行为byte[] allocation1 = new byte[512 * 1024 * 1024]; // 分配约512MB的空间TimeUnit.SECONDS.sleep(10); // 睡眠10秒byte[] allocation2 = new byte[512 * 1024 * 1024]; // 再分配约512MB的空间TimeUnit.SECONDS.sleep(10); // 睡眠10秒// 提示垃圾收集System.gc();}
}
此代码示例演示了如何通过分配大量内存并加入等待时间来观察GC的行为,同时启用了详细的GC信息打印。
示例6:设置线程堆栈大小
JVM启动参数:
java -Xss1024k -jar YourApp.jar
- -Xss1024k:设置每个线程的堆栈大小为1024KB。
Java代码:
public class ThreadStackSizeExample {public static void main(String[] args) {System.out.println("线程堆栈大小已设置为1024KB...");// 创建并启动一个新线程,展示设置的堆栈大小Thread thread = new Thread(() -> {recursiveMethod(0);});thread.start();}// 一个简单的递归方法,用于演示堆栈的深度private static void recursiveMethod(int depth) {if (depth < 1000) {recursiveMethod(depth + 1);} else {System.out.println("达到递归深度:" + depth);}}
}
这段代码设置了线程的堆栈大小,并通过递归调用来测试堆栈深度的限制。
最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。这是大佬写的, 七千页的BAT大佬写的刷题笔记,让我offer拿到手软
示例7:监控类的加载和卸载
JVM启动参数:
java -XX:+TraceClassLoading -XX:+TraceClassUnloading -jar YourApp.jar
- -XX:+TraceClassLoading:启用类加载跟踪。
- -XX:+TraceClassUnloading:启用类卸载跟踪。
Java代码:
public class ClassLoadingMonitoring {public static void main(String[] args) {System.out.println("类加载和卸载监控已启动,相关信息将打印到控制台...");// 这里不需要特定的Java代码来触发类的加载或卸载// 类加载和卸载的信息将通过JVM参数直接打印到控制台// 可以考虑加载一些额外的类或使用ClassLoader来观察输出}
}
此代码示例用于展示如何开启和查看JVM的类加载和卸载信息,对于理解类的生命周期非常有用。
示例8:监控垃圾回收行为
JVM启动参数:
java -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc.log -jar YourApp.jar
- -XX:+PrintGCDetails:打印垃圾回收的详细信息。
- -XX:+PrintGCDateStamps:在垃圾回收日志中加入时间戳。
- -Xloggc:gc.log:将垃圾回收日志记录到指定文件。
Java代码:
import java.util.ArrayList;
import java.util.List;public class GCMonitoringExample {public static void main(String[] args) {System.out.println("垃圾回收监控已启用,详细信息将记录到日志文件...");// 创建一个列表,用于模拟内存占用List<Object> list = new ArrayList<>();for (int i = 0; i < 10000; i++) {list.add(new Object());// 每1000个对象后进行一次清理,模拟内存释放if (i % 1000 == 0) {list.clear();System.gc(); // 手动请求垃圾回收}}}
}
此代码示例展示了如何通过创建对象并在特定时刻清理,以触发和监控垃圾回收过程。
示例9:配置和使用字符串去重功能
JVM启动参数:
java -XX:+UseStringDeduplication -XX:+PrintStringDeduplicationStatistics -jar YourApp.jar
- -XX:+UseStringDeduplication:开启JVM的字符串去重功能。
- -XX:+PrintStringDeduplicationStatistics:打印字符串去重的统计信息。
Java代码:
public class StringDeduplicationExample {public static void main(String[] args) {System.out.println("字符串去重功能已启用,相关统计信息将打印...");// 创建一个字符串列表List<String> stringList = new ArrayList<>();// 添加大量重复字符串,触发字符串去重for (int i = 0; i < 100000; i++) {stringList.add("Hello, JVM!"); // 添加重复的字符串}// 触发垃圾回收,以便观察字符串去重效果System.gc();}
}
此代码示例通过创建大量重复的字符串,并触发垃圾回收,来展示字符串去重功能的效果。
示例10:使用并行垃圾收集器
JVM启动参数:
java -XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:+PrintGCDetails -jar YourApp.jar
- -XX:+UseParallelGC:使用并行垃圾收集器。
- -XX:GCTimeRatio=4:设置吞吐量目标,表示99%的时间用于应用程序,1%的时间用于垃圾收集。
- -XX:+PrintGCDetails:打印垃圾收集的详细信息。
Java代码:
public class ParallelGCMonitoring {public static void main(String[] args) {System.out.println("并行垃圾收集器已启用,GC详细信息正在打印...");// 这里模拟一些内存分配以触发GCList<byte[]> list = new ArrayList<>();for (int i = 0; i < 100; i++) {list.add(new byte[1024 * 1024]); // 每次分配1MB的空间}// 清理引用,触发GClist.clear();System.gc(); // 建议执行垃圾收集}
}
这段代码用于演示并行垃圾收集器的使用,通过分配内存并清理来触发垃圾收集。
示例11:配置和使用String去重功能
JVM启动参数:
java -XX:+UseStringDeduplication -XX:+PrintStringDeduplicationStatistics -jar YourApp.jar
- -XX:+UseStringDeduplication:开启JVM的字符串去重功能。
- -XX:+PrintStringDeduplicationStatistics:打印字符串去重的统计信息。
Java代码:
public class StringDeduplicationExample {public static void main(String[] args) {System.out.println("字符串去重功能已启用,统计信息正在打印...");// 创建重复的字符串String repeatedString = "Hello, World!";List<String> stringList = new ArrayList<>();for (int i = 0; i < 10000; i++) {stringList.add(new String(repeatedString)); // 通过new创建新的字符串实例}// 建议执行垃圾收集来触发字符串去重System.gc();}
}
这段代码通过创建大量重复的字符串实例,演示了字符串去重功能的效果。
示例12:设置和监控ZGC垃圾收集器
JVM启动参数:
java -XX:+UnlockExperimentalVMOptions -XX:+UseZGC -Xlog:gc -jar YourApp.jar
- -XX:+UnlockExperimentalVMOptions:解锁实验性VM选项。
- -XX:+UseZGC:使用ZGC垃圾收集器。
- -Xlog:gc:开启GC日志。
Java代码:
import java.util.concurrent.TimeUnit;public class ZGCMonitoring {public static void main(String[] args) throws InterruptedException {System.out.println("ZGC垃圾收集器已启用,GC日志正在输出...");// 创建对象并模拟短暂的暂停,触发GCfor (int i = 0; i < 100; i++) {byte[] allocation = new byte[10 * 1024 * 1024]; // 分配约10MB的空间TimeUnit.MILLISECONDS.sleep(100); // 暂停100毫秒}}
}
此代码示例演示了如何使用ZGC垃圾收集器,并通过分配内存和短暂暂停来触发垃圾收集。
项目文档&视频:
开源:项目文档 & 视频 Github-Doc
结语
合理的JVM调优可以显著提升应用的性能和稳定性。不过,请记得调优是一个持续的过程,需要根据应用的具体表现来不断调整和优化。
本文已收录于,我的技术网站 ddkk.com,有大厂完整面经,工作技术,架构师成长之路,等经验分享
相关文章:
JVM 11 调优指南:如何进行JVM调优,JVM调优参数
JVM 11的优化指南:如何进行JVM调优,以及JVM调优参数有哪些”这篇文章将包含JVM 11调优的核心概念、重要性、调优参数,并提供12个实用的代码示例,每个示例都会结合JVM调优参数和Java代码 本文已收录于,我的技术网站 dd…...
横版动作闯关游戏:幽灵之歌 GHOST SONG 中文版
在洛里安荒凉的卫星上,一件长期休眠的死亡服从沉睡中醒来。踏上发现自我、古老谜团和宇宙骇物的氛围2D冒险之旅。探索蜿蜒的洞穴,获得新的能力来揭开这个外星世界埋藏已久的秘密。 游戏特点 发现地下之物 探索这个广阔而美丽如画,充满密室和诡…...
【C++】:C++中的STL序列式容器vector源码剖析
⛅️一 vector概述 vector的使用语法可以参考文章: 总的来说:vector是可变大小数组 特点: 支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢 元素保存在连续的内存空间中,因此通过下标取值非常快 在容器中间位置添加…...
final
//用final修饰的成员变量,必须在声明时或代码块中或构造函数中进行赋值 //但是在声明同时赋值或者代码块中赋值,赋值后不能改变,如果想改变 需要在构造方法中赋值...
【AI】ObjectCenteredSensing
1. 物体检测 .1. 流体 D. V. Q. Rodrigues, D. Rodriguez and C. Li, “Liquid Aerosol Detection Based on Sub-THz Portable Doppler Radars,” 2020 IEEE Asia-Pacific Microwave Conference (APMC), 2020, pp. 504-506, doi: 10.1109/APMC47863.2020.9331483. [pdf] Bala …...
一阶低通滤波器
一阶低通滤波器 X为输入,Y为滤波后得到的输出值;本次的输出结果主要取决于上次的滤波输出值,其中a是和滤波效果有关的一个参数,称为滤波系数;它决定新采样值在本次滤波结果中所占的权重; 滤波系数a越小&a…...
【排序算法】插入排序与希尔排序,你不想知道为什么希尔比插入更快吗?
文章目录 🚀前言🚀插入排序(insertsort)✈️原理✈️代码实现(coding) 🚀总结🚀希尔排序(shellsort)✈️代码实现(coding)✈️为啥希尔…...
Unity中向量的点乘、叉乘区别和作用以及经典案例
文章目录 点乘(Dot Product)叉乘(Cross Product)向量归一化(Normalize)其他作用 unity开发中我们要计算角度,判断位置,常用点乘、叉乘、归一化等等,我们看看他们的使用案…...
(26)Linux 进程通信之共享内存(共享储存空间)
共享内存是System V版本的最后一个进程间通信方式。共享内存,顾名思义就是允许两个不相关的进程访问同一个逻辑内存,共享内存是两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常为同一段物理内存。进程可以将同一…...
体感游戏开发体感互动游戏
体感健身游戏是一种利用特定技术来跟踪和响应玩家身体动作的互动式电子游戏。这种游戏类型的目的是通过有趣、动态的方式鼓励用户进行身体活动和健康锻炼。下面是有关体感健身游戏的一些重要信息: 体感游戏技术背景 体感技术:这些游戏通常使用运动传感…...
vulnhub靶场之DC-5
一.环境搭建 1.靶场描述 DC-5 is another purposely built vulnerable lab with the intent of gaining experience in the world of penetration testing. The plan was for DC-5 to kick it up a notch, so this might not be great for beginners, but should be ok for p…...
为什么选择CRM系统时,在线演示很重要?
想要知道一款CRM管理系统是否满足企业的需求,操作是否简单,运行是否流畅,最直观的方式就是远程演示。否则,光凭厂商的销售人员介绍一下产品,企业就盲目下单,最后发现功能不匹配,还要赔钱赔时间重…...
专业实习day3、4(路由器做内网访问公网)
专业实习 代码 display ip interface brief 显示当前设备下所有接口IP undo IP地址支持覆盖,但是正常的命令不能覆盖必须undo(删除)掉 un in en 在做配置的过程中,设备系统一般都会出现一些提示或者告警之类的东西,从…...
H264码流进行RTP包封装
一.H264基本概念 H.264从框架结构上分为视频编码层(VCL)和网络抽象层(NAL),VCL功能是进行视频编解码,包括运动补偿预测,变换编码和熵编码等功能;NAL用于采用适当的格式对VCL视频数据…...
基于多智能体点对点转换的分布式模型预测控制
matlab2020正常运行 基于多智能体点对点转换的分布式模型预测控制资源-CSDN文库...
性能分析与调优: Linux 实现 缺页剖析与火焰图
目录 一、实验 1.环境 2.缺页(RSS增长)剖析与火焰图 一、实验 1.环境 (1)主机 表1-1 主机 主机架构组件IP备注prometheus 监测 系统 prometheus、node_exporter 192.168.204.18grafana监测GUIgrafana192.168.204.19agent 监测 主机 node_exporter…...
代码随想录算法训练营第17天 | 110.平衡二叉树 + 257. 二叉树的所有路径 + 404.左叶子之和
今日内容 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和 110.平衡二叉树 - Easy 题目链接:. - 力扣(LeetCode) 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为࿱…...
ubuntu20.04网络问题以及解决方案
1.网络图标消失,wired消失,ens33消失 参考:https://blog.51cto.com/u_204222/2465609 https://blog.csdn.net/qq_42265170/article/details/123640669 原始是在虚拟机中切换网络连接方式(桥接和NAT), 解决…...
Java面试题(java高级面试题)
线程池的核心线程数设置为多大比较合理? Worker线程在执行的过程中,有一部计算时间需要占用CPU,另一部分等待时间不需要占用CPU,通过量化分析,例如打日志进行统计,可以统计出整个Worker线程执行过程中这两…...
【MIdjourney】关于图像中人物视角的关键词
本篇仅是我个人在使用过程中的一些经验之谈,不代表一定是对的,如有任何问题欢迎在评论区指正,如有补充也欢迎在评论区留言。 1.全景镜头(panorama) 全景镜头是一种广角镜头,可以捕捉到比普通镜头更广阔的视野范围。全景镜头&…...
433. 最小基因变化(Queue使用ArrayList和LinkedList进行声明)
这道题可以看成一个24叉树。 因为基因序列长度固定为8,且每个位置的字母固定是AGCT,可以选择改变的只有3个字母,所以一次最多24种情况。 然后检查变化后的结果是否存在bank中(使用hashSet来存储),同时设置…...
MYSQL双主节点–更换ip
MYSQL双主节点–更换ip 一、更换双主节点ip 1.停止mysql服务 #安装了supervisor supervisorctl stop mysql #未安装 systemctl stop mysqld2.修改网卡配置信息 注:ens33是网卡名称,可能网卡不叫ens33 vi /etc/sysconfig/network-scripts/ifcfg-ens333…...
一文玩转Go语言中的面向对象编程~
温故而知新:什么是面向对象 面向对象(Object-Oriented)是一种计算机编程的方法和思想,它将程序中的数据(对象)和操作(方法)组织成一个个相互关联和交互的对象。对象是现实世界中的事…...
kylin集群反向代理(健康检查)
前面一篇文章提到了使用nginx来对kylin集群进行反向代理, kylin集群使用nginx反向代理-CSDN博客文章浏览阅读349次,点赞8次,收藏9次。由于是同一个集群的,元数据没有变化,所以,直接将原本的kylin使用scp的…...
【docker】centos7安装harbor
目录 零、前提一、下载离线包二、安装三、访问四、开机自启 零、前提 1.前提是已经安装了docker和docker-compose 一、下载离线包 1. csdn资源:harbor-offline-installer-v2.10.0.tgz 2. 百度云盘(提取码:ap3t):harbo…...
2024 年 1 月安全更新修补了 58 个漏洞(Android )
谷歌发布了针对 Android 平台 58 个漏洞的补丁,并修复了 Pixel 设备中的 3 个安全漏洞,拉开了 2024 年的序幕。 Android 2024 年 1 月更新的第一部分以 2024 年 1 月 1 日安全补丁级别发布在设备上,解决了框架和系统组件中的 10 个安全漏洞&…...
数据库系统概念 第七版 中文答案 第3章 SQL介绍
3.1 将以下查询使用SQL语言编写,使用大学数据库模式。 (我们建议您实际在数据库上运行这些查询,使用我们在书籍网站db-book.com上提供的示例数据。有关设置数据库和加载示例数据的说明,请参阅上述网站。) a. 查找计算机…...
什么是数通技术?以太网交换机在数通技术中的精要
什么是数通技术? 数通技术是指数字通信技术,它涵盖了数字信号处理、数据传输、网络通信等领域。通信工程师在数通技术中负责设计、建设和维护数字通信系统,以实现可靠、高效的信息传输。这涉及到数字信号的编解码、调制解调、数据压缩、网络…...
php 的数学常用函数
目录 1.常用列表 2.代码示例 1.常用列表 函数名描述输入输出abs()求绝对值数字绝对值数字ceil()进一法取整浮点数进一取整floor()舍去法求整浮点数直接舍去小数部分fmod()浮点数取余 两个浮点 数,x>y 浮点余数 pow()返回数的n次方基础数n次方乘方值round()浮点数四舍五入…...
Netty-Netty组件了解
EventLoop 和 EventLoopGroup 回想一下我们在 NIO 中是如何处理我们关心的事件的?在一个 while 循环中 select 出事 件,然后依次处理每种事件。我们可以把它称为事件循环,这就是 EventLoop 。 interface io.netty.channel. EventLoo…...
wordpress改页面/最有效的推广方式
【Links】 https://download.qt.io/official_releases/ https://download.qt.io/official_releases/qt/ https://download.qt.io/official_releases/qtcreator/ 备注: Qt Creator是跨平台的Qt IDE,Qt Creator是Qt被Nokia收购后推出的一款新的轻量级集成…...
梧州网站建设定制/交友网站有哪些
翻过高山走不出你ob是output buffering的简称,就是输出缓冲区。如果使用了ob_start函数,那么之后的输出内容(echo等)就不进行实际输出,而是存入缓冲区里面,随后可以使用ob_flush实际输出、ob_clean删除、ob_get_contents获得内容保…...
做期货苯乙烯的网站/东莞头条最新新闻
1.下面有关html的描述,不推荐的是? (B) A.在页面顶部添加doctype声明; B.在 </head> ... <body> 中间插入HTML代码 C.避免使用 <font> 标签 D.使用 <table> 元素展现学生成绩表等数据 2. css…...
郑州个人做网站汉狮/昆明seo案例
业务场景: 点击查看更多进行数据拼接显示 实现思路: 我们先在公共方法里边声明俩个属性,一个是页数page,一个是每次查询条数。 页数默认的是第一页,我们在小程序的data里边设置一个page变量,默认也是1 当发起请求的时…...
js网站源码已到期/无屏蔽搜索引擎
Time limit1000 ms Memory limit32768 kB OS/Windows 三个循环结,矩阵快速幂,注意时间要求,此方法比较省时间 #include<bits/stdc.h> using namespace std; typedef long long ll; typedef double s64; ll n; int m2; const int N3; …...
wordpress二级域名使用七牛/营业推广促销方式有哪些
对于这个问题,我们先要了解一下市场上的那些志强处理器怎么来的,以及志强处理器和普通桌面处理器的区别。首先市面上的很多志强处理器被称为洋垃圾,不严谨的简单的说这些志强处理器是二手回收来,虽然便宜,但是没有什么…...