当前位置: 首页 > news >正文

Linux系统启动jar包--Java8

启动命令及参数

1. 启动命令模板

nohup java \
-Xms512m \
-Xmx1024m \
-Xmn256m \
-XX:MetaspaceSize=128m \
-XX:MaxMetaspaceSize=256m \
-XX:+UseG1GC \
-XX:InitiatingHeapOccupancyPercent=45 \
-XX:+PrintGCDetails \
-XX:+PrintGCDateStamps \
-XX:+PrintGCApplicationStoppedTime \
-XX:+PrintGCApplicationConcurrentTime \
-Xloggc:logs/gc.log \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=logs/dump.hprof \
-Dfile.encoding=UTF-8 \
-Dspring.profiles.active=prod \
-jar mdy_lcpd-0.0.1-SNAPSHOT.jar > logs/app.log 2>&1 &

2. 参数详解

堆内存参数
  1. -Xms512m:设置 JVM 堆的初始内存为 512 MB。
  2. -Xmx1024m:设置 JVM 堆的最大内存为 1024 MB。
  3. -Xmn256m:设置新生代大小为 256 MB,用于存储短生命周期的对象(例如临时变量)。
  4. 调整建议:
    • 堆大小(-Xms-Xmx)应设置为相同值,避免堆的动态调整导致性能抖动。
    • 新生代(-Xmn)通常为堆大小的 1/4 到 1/3。

元空间参数
  1. -XX:MetaspaceSize=128m:设置元空间的初始大小为 128 MB。元空间主要用于存储类的元信息。
  2. -XX:MaxMetaspaceSize=256m:设置元空间的最大大小为 256 MB。
  3. 说明:
    • 元空间的大小默认与物理内存相关,如果类加载较多,建议增加 MaxMetaspaceSize
    • 元空间使用本地内存(而非堆内存),因此不会对堆大小造成直接影响。

垃圾回收参数
  1. -XX:+UseG1GC:启用 G1 垃圾回收器(默认推荐垃圾回收器,适合低延迟应用)。
  2. -XX:InitiatingHeapOccupancyPercent=45:设置堆使用率达到 45% 时触发垃圾回收。
  3. 可选 GC 调优参数:
    • -XX:MaxGCPauseMillis=200:设置期望的最大 GC 停顿时间为 200 毫秒。
    • -XX:+UseParallelGC:启用并行 GC(适合吞吐量优先的场景)。
    • -XX:+UseConcMarkSweepGC:启用 CMS GC(适合低延迟场景,但已被 G1 替代)。

GC 日志参数
  1. -XX:+PrintGCDetails:打印详细的垃圾回收日志。
  2. -XX:+PrintGCDateStamps:为 GC 日志添加时间戳。
  3. -XX:+PrintGCApplicationStoppedTime:记录因 GC 导致的程序暂停时间。
  4. -XX:+PrintGCApplicationConcurrentTime:记录应用执行的并发时间。
  5. -Xloggc:logs/gc.log:将 GC 日志保存到 logs/gc.log 文件中。

内存溢出调试
  1. -XX:+HeapDumpOnOutOfMemoryError:当发生内存溢出(OOM)时生成堆转储文件。
  2. -XX:HeapDumpPath=logs/dump.hprof:指定堆转储文件的保存路径。

编码参数
  • -Dfile.encoding=UTF-8:设置默认的文件编码为 UTF-8,防止中文乱码。

Spring 环境参数
  • -Dspring.profiles.active=prod:指定 Spring 的激活环境为 prod(生产环境)。

3. 日志与目录结构建议

日志目录
  1. logs/app.log:保存应用运行日志。
  2. logs/gc.log:保存垃圾回收日志。
  3. logs/dump.hprof:当发生内存溢出时保存的堆转储文件。
创建日志目录

启动命令之前,确保创建 logs 文件夹:

mkdir logs

4. JVM 参数调优参考表

参数描述建议值
-Xms / -Xmx设置堆的初始大小和最大大小512m~2g
-Xmn新生代大小堆大小的 1/4~1/3
-XX:MetaspaceSize元空间的初始大小128m
-XX:MaxMetaspaceSize元空间的最大大小256m 或更大
-XX:+UseG1GC启用 G1 垃圾回收器低延迟或吞吐量场景推荐
-XX:MaxGCPauseMillis设置期望的最大 GC 停顿时间100~500 毫秒
-XX:+PrintGCDetails打印 GC 详细信息调试时推荐
-XX:+HeapDumpOnOutOfMemoryError内存溢出时生成堆转储文件必须启用
-Dspring.profiles.active激活 Spring 配置环境prodtest

5. 监控和排查

查看运行状态
ps -ef | grep mdy_lcpd-0.0.1-SNAPSHOT.jar
查看应用日志
tail -f logs/app.log
检查 GC 日志
cat logs/gc.log

6. 总结

  • Java 8 的永久代被元空间(Metaspace)取代,内存管理更高效。
  • 使用 G1 垃圾回收器 是生产环境的推荐配置,适用于低延迟和高吞吐量场景。
  • 合理设置堆大小(-Xms-Xmx)和元空间大小(MetaspaceSizeMaxMetaspaceSize),确保性能稳定。
  • 通过 GC 日志和堆转储文件,可以快速排查内存泄漏和性能问题。

参数默认值

Java 8 中,如果不设置上述 JVM 参数,JVM 会根据默认配置和运行环境自动分配内存和垃圾回收策略。以下是每个参数的默认值和行为:


1. 堆内存参数

默认值
  • -Xms(初始堆大小)
    • 默认值为物理内存的 1/64,但最大不超过 1GB
    • 示例:如果服务器有 8GB 内存,默认初始堆大小为 128MB
  • -Xmx(最大堆大小)
    • 默认值为物理内存的 1/4,但最大不超过 1GB
    • 示例:如果服务器有 8GB 内存,默认最大堆大小为 2GB
  • -Xmn(新生代大小)
    • 默认值由 JVM 根据堆的总大小自动计算,通常占堆大小的 1/4 到 1/3
不设置的影响
  • JVM 会动态调整内存大小,可能导致频繁的垃圾回收,影响性能。
  • 初始堆较小可能导致频繁扩容,增加系统开销。
  • 最大堆较小时,容易出现 OutOfMemoryError

2. 元空间参数

默认值
  • -XX:MetaspaceSize(元空间初始大小):
    • 默认值为 21MB
  • -XX:MaxMetaspaceSize(元空间最大大小):
    • 默认值没有限制,会根据操作系统的可用内存动态扩展。
不设置的影响
  • 元空间扩展是动态的,但如果类加载过多且未限制最大值,可能导致过多的内存分配,消耗系统资源。
  • 在高并发或大量类加载的场景下,容易发生 OutOfMemoryError: Metaspace

3. 垃圾回收参数

默认值
  • 垃圾回收器:
    • Java 8 默认使用 Parallel GC(并行垃圾回收器,吞吐量优先)。
    • 并行 GC 默认行为:
      • 新生代使用多线程进行垃圾回收。
      • 老年代使用单线程回收。
不设置的影响
  • 如果吞吐量优先,默认的 Parallel GC 适合大多数场景,但会有较高的 GC 停顿时间。
  • 如果低延迟是主要需求,建议手动切换到 G1 GC

4. GC 日志参数

默认值
  • 默认不会打印 GC 日志
  • 没有启用日志参数(如 -XX:+PrintGCDetails-Xloggc),你无法看到垃圾回收的详细信息。
不设置的影响
  • 如果应用程序出现性能问题或内存问题,难以调试和定位问题。

5. 内存溢出调试

默认值
  • -XX:+HeapDumpOnOutOfMemoryError:默认关闭。
  • -XX:HeapDumpPath:如果未指定路径,会将堆转储文件保存在当前工作目录。
不设置的影响
  • 当发生内存溢出时,无法生成堆转储文件,增加问题排查的难度。

6. 文件编码参数

默认值
  • -Dfile.encoding
    • 默认编码与操作系统相关:
      • WindowsGBK
      • Linux/UnixUTF-8
不设置的影响
  • 默认编码可能导致字符集不一致,尤其在不同操作系统之间运行时容易出现中文乱码问题。

7. Spring 环境参数

默认值
  • 如果不指定 -Dspring.profiles.active,Spring 不会激活任何特定的配置环境。
不设置的影响
  • Spring 应用会使用默认配置文件(application.propertiesapplication.yml),可能导致在生产环境中使用了开发环境配置。

总结:默认值对比表

参数默认值不设置的影响
-Xms物理内存的 1/64,最大 1GB启动时堆较小,扩容频繁,性能抖动
-Xmx物理内存的 1/4,最大 1GB最大堆较小,容易出现 OutOfMemoryError
-Xmn堆大小的 1/4~1/3新生代较小时,频繁触发 Minor GC
-XX:MetaspaceSize21MB元空间扩容频繁,可能影响性能
-XX:MaxMetaspaceSize无限制(操作系统内存限制)元空间过大可能耗尽系统内存
-XX:+UseG1GC默认使用 Parallel GC延迟较高的场景性能不佳
GC 日志参数未启用无法调试垃圾回收相关问题
-XX:+HeapDumpOnOutOfMemoryError默认关闭内存溢出时无法生成堆转储文件,增加排查难度
-Dfile.encoding与操作系统相关不同环境可能导致中文乱码
-Dspring.profiles.active默认未激活配置环境默认使用开发环境配置,可能导致问题

优化建议

  • 内存设置:
    • 生产环境应显式设置 -Xms-Xmx,避免动态扩展引发的性能抖动。
  • 元空间:
    • 限制 MaxMetaspaceSize,防止元空间耗尽系统内存。
  • 垃圾回收:
    • 吞吐量优先使用 Parallel GC,低延迟场景切换到 G1 GC。
  • 日志:
    • 打开 GC 日志和堆转储功能,便于排查问题。
  • 编码:
    • 显式设置 -Dfile.encoding=UTF-8,确保字符集一致性。
  • Spring 环境:
    • 在生产环境中激活 prod 配置,避免配置混淆。

JVM大小限制与不限制

1. 不限制 JVM 大小

优点

  • 更灵活:JVM 会根据需要动态调整内存使用,初始分配较少,当需要更多内存时会向操作系统申请。
  • 配置简单:不需要手动设置 -Xms-Xmx 等参数。

缺点

  • 可能过度占用系统内存:如果程序中存在内存泄漏或高内存需求场景(如大数据处理、大量对象实例化),JVM 会一直向操作系统申请更多内存,最终可能导致系统内存耗尽,甚至引发系统性能下降。
  • GC 不够高效:堆空间过大会导致垃圾回收(GC)所需的时间增加,尤其是 Full GC。
  • 无法预测资源使用:在生产环境中,无法确定应用程序的内存占用,可能影响同一台服务器上其他服务的稳定性。

2. 限制 JVM 大小

优点

  • 更可控:设置了 -Xms-Xmx 后,JVM 会在固定范围内分配内存,防止程序无限制占用系统资源。
  • 提升 GC 效率:限制堆大小可以更好地控制 GC 的行为,避免堆空间过大导致的 GC 时间增加。
  • 更适合生产环境:在多服务部署的环境中,限制 JVM 内存可以让每个服务有明确的资源界限,保证系统的整体稳定性。
  • 优化性能:通过合理设置堆大小,避免频繁的垃圾回收,同时减少 Full GC 的时间。

缺点

  • 需要调优:如果限制的内存过小,可能导致 OutOfMemoryError 异常(OOM),需要根据实际应用需求调整参数。
  • 初始内存分配较大:设置较大的 -Xms 会让 JVM 启动时就分配较多内存,即使实际不需要,也可能浪费资源。

实际影响对比

影响点不限制 JVM 大小限制 JVM 大小
内存分配动态调整,可能占用系统全部可用内存固定在指定范围内,系统资源分配更可控
GC 行为堆空间可能过大,GC 耗时较长合理的堆大小提升 GC 效率,避免内存过小或过大
系统稳定性可能对其他服务造成影响,甚至引发系统崩溃稳定性更高,避免单一服务消耗过多内存
应用启动速度初始堆较小时启动较快,但动态调整堆内存可能耗时初始堆较大时启动稍慢,但内存调整行为更可预测
调试和监控难以预测和复现内存问题更容易发现和定位内存不足或内存泄漏问题

总结

在开发和测试环境中,如果资源充足,可以不限制 JVM 大小,以便观察应用程序的实际内存使用需求。但在生产环境中,必须限制 JVM 内存大小,尤其是高并发或多服务部署的场景。合理设置 -Xms-Xmx 等参数,可以保证性能和稳定性,同时避免资源竞争。

相关文章:

Linux系统启动jar包--Java8

启动命令及参数 1. 启动命令模板 nohup java \ -Xms512m \ -Xmx1024m \ -Xmn256m \ -XX:MetaspaceSize128m \ -XX:MaxMetaspaceSize256m \ -XX:UseG1GC \ -XX:InitiatingHeapOccupancyPercent45 \ -XX:PrintGCDetails \ -XX:PrintGCDateStamps \ -XX:PrintGCApplicationStopp…...

linux-定制化rpm(rpmbuild)

一. 引文: 为实现我们的快速安装,特定服务需求的服务部署需求, 我们选择了通过source编译后定制成rpm,存放至自定义yum仓库,通过yum工具规范化管理及部署服务。目前比较常用的rpm打包方式分别为rpmbuild和fpm(在rpmbui…...

面向对象分析与设计Python版 分析与设计概述

文章目录 一、软件工程概述二、分析与设计概述 一、软件工程概述 高质量软件系统的基本要求 架构性内聚可重用性可维护性可扩展性灵活性 软件开发过程模型:是指根据软件开发项目从开始到结束的一系列步骤和方法,建模为不同的模型。常见的有&#xff1…...

npm发布流程说明

一、进入要发布的项目根目录,初始化为npm包 npm initname:最重要的字段之一,项目名称(少于214个字节)。没有name和version不能进行安装; version:最重要的字段之一,项目版本。没有n…...

Nginx反向代理请求头有下划线_导致丢失问题处理

后端发来消息说前端已经发了但是后端没收到请求。 发现是下划线的都没收到,搜索之后发现nginx默认request的header中包含’_’时,会自动忽略掉。 解决方法是:在nginx里的nginx.conf配置文件中的http部分中添加如下配置: unders…...

计网C1C2C3答案自用

Chapter 1 Computer Network and the Internet Review Questions Solution R1. What is the difference between a host and end system? List several different types of end system. Is a Web server an end system? There is no difference between a host and an end …...

为什么要分为大端和小端

1.大端序 0x12345678 地址: 0x00 0x01 0x02 0x03 数据: 0x12 0x34 0x56 0x78 高位字节存储在低地址,常用语网络协议,便于人阅读、书写类似。 2.小端序 0x12345678 地址: 0x00 0x01 0x02 0x03 …...

通过可穿戴外骨骼,以更灵活的方式操作你的机器人。

今天,我们将介绍一款专为控制 Mercury X1 和 Mercury B1 机械臂而设计的创新外骨骼。这种外骨骼以人类手臂的结构为蓝本,可实现直观和精确的控制。 开发这种外骨骼的动机源于人们对深度学习和机器学习等领域日益增长的兴趣。这些技术使机器人能够自主学习…...

【大数据基础】大数据概述

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈大数据技术原理与应用 ⌋ ⌋ ⌋专栏系统介绍大数据的相关知识,分为大数据基础篇、大数据存储与管理篇、大数据处理与分析篇、大数据应用篇。内容包含大数据概述、大数据处理架构Hadoop、分布式文件系统HDFS、分布式数…...

使用双向链表优化数组操作的性能

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 背景 双向链表的优势 实现方案 性能优化 …...

Lua语言的语法

Lua语言的探索与应用 引言 Lua是一种轻量级、高性能的脚本语言,广泛应用于游戏开发、嵌入式系统和很多应用程序中。它的灵活性和高效性使得Lua成为软件开发中不可或缺的一部分。本文将从Lua的历史、语法、特色、使用案例及其在实际开发中的应用进行深入探讨。 Lu…...

Linux随记(十四)

一、处理vsftpd漏洞 【vsftpd安全漏洞(CVE-2021-30047)】 #操作系统1:bclinux euler 21.10#操作系统2:kylin v10二、处理ntp漏洞 【NTPMode6检测漏洞【原理扫描】】 #操作系统1:bclinux euler 21.10 cp /etc/ntp.conf /etc/ntp.conf.bak202…...

【Linux网络编程】第二十二弹---深入理解 I/O 多路转接之 epoll:系统调用、工作原理、代码演示及应用场景

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【Linux网络编程】 目录 1、I/O 多路转接之 epoll 1.1、epoll 初识 1.2、epoll 的相关系统调用 1.2.1、epoll_create 1.2.2、epol…...

AI赋能服装零售:商品计划智能化,化危机为转机

在服装零售这片竞争激烈的战场上,每一个细微的决策都可能成为品牌兴衰的关键。当市场波动、消费者口味变化、供应链挑战接踵而至时,许多品牌往往将危机归咎于外部环境。然而,真相往往更为深刻——“危机不是外部的,而是你的商品计…...

课程预告|卓翼飞思多旋翼无人机集群实验课程即将上线,互动赢好礼

《多旋翼无人飞行器控制系统开发》实验课程自推出以来,吸引了众多高校的关注。目前,该课程已在多所学校成功实施,并广受好评。 点击链接查看飞控课程详情:课程上新| 卓翼飞思《多旋翼无人飞行器控制系统开发》实验课程正式发布 …...

AWS Glue从GCP的bigquery导入数据到AWS Redshift数据仓库

准备工作 创建账号与服务账号:拥有Google Cloud账号,创建有BigQuery权限的服务账号;拥有AWS账号,创建有相关权限的IAM用户。创建资源:创建Amazon Redshift集群或Redshift Serverless工作区,创建用于存储数…...

zookeeper shell操作和zookeeper 典型应用(配置中心、集群选举服务、分布式锁)

文章目录 引言I zookeeper客户端命令查看子节点 ls创建子节点 create获取节点信息 get更新节点数据 set删除节点 delete\ rmrII 监听机制node1:设置监听node3:修改监听节点node1:得到监听反馈III zookeeper 典型应用分布式锁集群选举服务数据发布/订阅(配置中心)引言 zk 的…...

如何解决HTML和CSS相关的问题,什么情况下会导致元素被遮挡?

在开发过程中,HTML 和 CSS 中的元素遮挡问题通常是由于布局、定位、层级等因素导致的。在使用 Vue.js 时,这些问题依然常见,尤其是涉及到动态渲染、条件渲染和组件嵌套的场景。以下是一些常见的导致元素被遮挡的原因,并通过 Vue.j…...

Java(3)封装、继承、多态

1.封装 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。 要访问该类的代码和数据,必须通过严格的接口控制。 封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。 pu…...

【深度学习】多目标融合算法(二):底部共享多任务模型(Shared-Bottom Multi-task Model)

目录 一、引言 1.1 往期回顾 1.2 本期概要 二、Shared-Bottom Multi-task Model(SBMM) 2.1 技术原理 2.2 技术优缺点 2.3 业务代码实践 三、总结 一、引言 在朴素的深度学习ctr预估模型中(如DNN),通常以一个行…...

后端:Spring(IOC、AOP)

文章目录 1. Spring2. IOC 控制反转2-1. 通过配置文件定义Bean2-1-1. 通过set方法来注入Bean2-1-2. 通过构造方法来注入Bean2-1-3. 自动装配2-1-4. 集合注入2-1-5. 数据源对象管理(第三方Bean)2-1-6. 在xml配置文件中加载properties文件的数据(context命名空间)2-1-7. 加载容器…...

基于SpringBoot的诊所管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...

基于GA遗传优化的最优阈值计算认知异构网络(CHN)能量检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频&#xff09…...

【技术分享】如何利用rdesktop实现Linux远程Windows桌面高效办公

文章目录 前言1. Windows 开启远程桌面2. Linux安装rdesktop工具3. Win安装Cpolar工具4. 配置远程桌面地址5. 远程桌面连接测试6. 设置固定远程地址7. 固定地址连接测试 前言 随着技术的飞速发展,我们有了越来越多的方法来实现远程办公。今天我要给大家介绍一个特别…...

PDFelement 特别版

Wondershare PDFelement Pro 是一款非常强大的PDF编辑软件,它允许用户轻松地编辑、转换、创建和管理PDF文件。这个中文特别版的软件具有许多令人印象深刻的功能,PDFelement Pro 提供了丰富的编辑功能,可以帮助用户直接在PDF文件中添加、删除、…...

【江协STM32】10-2/3 MPU6050简介、软件I2C读写MPU6050

1. MPU6050简介 MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景3轴加速度计(Accelerometer&#xff…...

【首发 1day】WordPress Crypto 插件存在前台任意用户登录漏洞(CVE-2024-9989)

漏洞描述 WordPress 的 Crypto 插件在 2.15 及以下版本(包括 2.15)中容易受到身份验证绕过攻击。这是由于对 ‘crypto_connect_ajax_process’ 函数中 ‘crypto_connect_ajax_process::log_in’ 函数的任意方法调用有限。这使得未经身份验证的攻击者可以以站点上的任何现有…...

c语言-----常识问题

1.VS的C4996错误 由于微软在VS2013中不建议再使用C的传统库函数scanf,strcpy,sprintf等,所以直接使用这些库函数会提示C4996错误: VS建议采用带_s的函数,如scanf_s、strcpy_s,但这些并不是标准C函数。 要想继续使用此函数&…...

MIUI显示/隐藏5G开关的方法,信号弱时开启手机Wifi通话方法

5G网速虽快,手机功耗也大。 1.取消MIUI强制的5G,手动设置4G的方法! 【小米澎湃OS, Xiaomi HyperOS显示/隐藏5G开关的方法】 1.1.小米MIUI系统升级后,被强制连5G,手动设置开关被隐藏,如下图: 1…...

超简单,使用Kube-Vip实现K8s高可用VIP详细教程

具体步骤如下: 以下步骤在其中一个 master 上操作即可, 1、参数配置 export VIP192.168.0.110 export INTERFACEens33 export KVVERSIONv0.8.7VIP 是虚拟IP地址,和主机同一个网段,且未被占用。INTERFACE 是你当前主机的网络接口…...

中国数字化发展的问题与机会

橙蜂智能公司致力于提供先进的人工智能和物联网解决方案,帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、埃域知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。 橙蜂智农的智慧农业产品涵盖了多方面的功能,如智能化推荐、…...

为什么ip属地一会河南一会江苏

在使用互联网的过程中,许多用户可能会遇到这样一个问题:自己的IP属地一会儿显示为河南,一会儿又变成了江苏。这种现象可能会让人感到困惑,甚至产生疑虑,担心自己的网络活动是否受到了某种影响。为了解答这一疑问&#…...

【机器学习】神经网络(BP算法)含具体计算过程

目录 神经元的“激活函数” 多层前馈网络结构​编辑 BP(BackPropagation:误差逆传播算法) BP算法推导 手动计算BP神经网络的权值来实现学习 前向传播(正向运算)的过程 隐藏层输入: 隐藏层输出: 输出层输入: 输出层输出: …...

【HarmonyOS NEXT】鸿蒙应用点9图的处理(draw9patch)

【HarmonyOS NEXT】鸿蒙应用点9图的处理(draw9patch) 一、前言: 首先在鸿蒙中是不支持安卓 .9图的图片直接使用。只有类似拉伸的处理方案,鸿蒙提供的Image组件有与点九图相同功能的API设置。 可以通过设置resizable属性来设置R…...

Swift语言的网络编程

Swift语言的网络编程探秘 随着移动互联网的迅猛发展,网络编程已经成为开发者必备的核心技能之一。尤其在iOS开发领域,Swift语言作为Apple官方推荐的编程语言,以其简洁的语法和强大的功能受到了广泛的关注。本文将深入探讨Swift语言的网络编程…...

江科大STM32入门——UART通信笔记总结

wx:嵌入式工程师成长日记 1、简介 简单双向串口通信有两根通信线(发送端TX和接收端RX)TX与RX要交叉连接当只需单向的数据传输时,可以只接一根通信线当电平标准不一致时,需要加电平转换芯片 传输模式:全双工;时钟&…...

2. 使用springboot做一个音乐播放器软件项目【框架搭建与配置文件】

上一章文章 我们做了 音乐播放器这个项目的 前期规划 项目需求, 环境安装 和 springboot框架的 搭建与配置。如果有小伙伴没看过 第一章文章 可以去看一下 https://blog.csdn.net/Drug_/article/details/144994317 今天这篇文章 我们来 主要分享一些 我们在开发中…...

历代iPhone运行内存大小和电池容量信息

系列设备名称充电端口标配充电线PD快充无线充电 (W)标配充电器电池容量 (mAh)发布时间RAM运存iPhone 16iPhone 16 Pro MaxUSB Type-CUSB-C to USB-C支持25无47472024/9/108GB LPDDR5XiPhone 16 ProUSB Type-CUSB-C to USB-C支持25无35772024/9/108GB LPDDR5XiPhone 16 PlusUSB …...

(STM32笔记)十二、DMA的基础知识与用法 第三部分

我用的是正点的STM32F103来进行学习,板子和教程是野火的指南者。 之后的这个系列笔记开头未标明的话,用的也是这个板子和教程。 DMA的基础知识与用法 三、DMA程序验证1、DMA 存储器到存储器模式实验(1)DMA结构体解释(2…...

ThinkPHP 8高效构建Web应用-获取请求对象

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客 《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书 使用VS Code开发ThinkPHP项目-CSDN博客 编程与应用开…...

深入解析 Python 2 与 Python 3 的差异与演进

Python 2 和 Python 3 是 Python 编程语言的两个主要版本。Python 3 于 2008 年发布,旨在解决 Python 2 中的一些设计缺陷,并引入了许多新特性。虽然 Python 2 在很长一段时间内仍然被广泛使用,但自 2020 年 1 月 1 日起,Python 2…...

57. Three.js案例-创建一个带有聚光灯和旋转立方体的3D场景

57. Three.js案例-创建一个带有聚光灯和旋转立方体的3D场景 实现效果 该案例实现了使用Three.js创建一个带有聚光灯和旋转立方体的3D场景。 知识点 WebGLRenderer(WebGL渲染器) THREE.WebGLRenderer 是 Three.js 中用于将场景渲染为 WebGL 内容的核…...

移动端可互动轮播图

首先通过事件监听获得到初始滑动位置,并关闭掉轮播图的自动轮播定时器 //设置事件代理 $(".slider").on("touchstart", function (e) {// 当滑动触发的时候关闭定时器clearInterval(time);// 开始时的pxstartX e.touches[0].clientX; }); 然…...

深入讲解 Docker 及实践

Docker 是现代化应用开发、测试和生产环境部署中不可或缺的工具。它能够为开发人员提供与生产环境一致的开发环境,同时支持高效的容器化部署、资源隔离、容器编排等高级功能。尤其在微服务架构和云原生应用中,Docker 更是提供了简化的流程和高效的可扩展…...

科大讯飞前端面试题及参考答案( 上)

前端有用到哪些数据结构? 在前端开发中,会运用到多种数据结构,以下是一些常见的类型及其应用场景。 数组(Array) 数组是一种有序的元素集合,可以存放不同类型的数据(在 JavaScript 等前端常用语言中)。比如在构建一个网页的列表展示时,像新闻列表、商品列表等,我们可…...

本地导入封装的模块 在docker内报错ImportError

本地封装了一个login方法 在写testcase的时候去复用这个方法 但是进入docker运行的时候一直报上面的错误 目录 出现的原因: 解决方法: 1. 根据docker的路径写绝对路径 2. 用sys 加入path到code 作用: 好处: 出现的原因…...

Java-日志技术大全

一:目录 1.jul的使用 2.log4j的使用 3.logback的使用 4.log4j2的使用 二:jul使用 jul是JDK自带的日志技术,不需要导入其他依赖,默认的级别为info 1.关键组件: (1).Logger:记录器 (2).Handler&…...

ARP-Batch-Retargeting 部署实战

git 地址: https://github.com/Shimingyi/ARP-Batch-Retargeting bpy安装: pypi上搜索 bpy bpy 4.3.0,4.2.0版本报错: Traceback (most recent call last):File "E:\project\jijia_4d\retarget\ARP-Batch-Retargeting-…...

二分查找题目:寻找峰值 II

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法证明代码复杂度分析 题目 标题和出处 标题:寻找峰值 II 出处:1901. 寻找峰值 II 难度 7 级 题目描述 要求 一个二维网格中的峰值元素是指其值严格大于相邻值(左、…...

调和级数不为整数的证明

文章目录 1. 问题引入2. 证明2.1 引理12.2 引理22.3 引理3:2.4 核心证明: 3. 参考 1. 问题引入 s ( n ) 1 1 2 1 3 ⋯ 1 n , n ∈ N ∗ , n ≥ 2 s(n) 1\frac{1}{2}\frac{1}{3}\cdots\frac{1}{n}, \quad \\n \in N^*, n \ge2 s(n)121​31​⋯n1​,…...