JVM调优,参数在哪里设置的?
JVM调优,参数在哪里设置的?
在Java应用程序中,JVM(Java Virtual Machine)的调优通常通过设置JVM启动参数来实现。这些参数可以控制JVM的内存分配、垃圾回收策略、线程管理、性能优化等方面。
1. JVM参数的位置
JVM参数通常在启动Java应用时通过命令行传递。设置JVM参数的常见方式有以下几种:
-
命令行启动:使用
java命令启动 Java 程序时,JVM参数通过-X或-XX前缀传递。例如:
bash
java -Xmx2g -Xms1g -XX:+UseG1GC -jar myapp.jar上述命令设置了:
- 最大堆内存为2GB:
-Xmx2g - 初始堆内存为1GB:
-Xms1g - 使用G1垃圾回收器:
-XX:+UseG1GC
- 最大堆内存为2GB:
-
配置文件:对于生产环境,通常会在启动脚本(如
.sh或.bat文件)中配置这些JVM参数。例如:
bash
export JAVA_OPTS="-Xmx2g -Xms1g -XX:+UseG1GC" java $JAVA_OPTS -jar myapp.jar -
容器化环境(如 Docker):在 Dockerfile 或 Docker Compose 中设置
JAVA_OPTS环境变量,或直接通过CMD或ENTRYPOINT传递参数。例如:
ENV JAVA_OPTS="-Xmx2g -Xms1g -XX:+UseG1GC" CMD java $JAVA_OPTS -jar /app/myapp.jar
2. 常见JVM调优参数
内存设置相关参数
-
-Xms:设置JVM初始堆内存大小。bash
-Xms1g # 初始堆内存为1GB -
-Xmx:设置JVM最大堆内存大小。bash
-Xmx2g # 最大堆内存为2GB -
-Xmn:设置年轻代(Young Generation)内存大小,通常年轻代内存占堆内存的一部分。bash
-Xmn512m # 年轻代内存大小为512MB -
-XX:NewSize和-XX:MaxNewSize:分别设置年轻代的初始大小和最大大小。bash
-XX:NewSize=512m # 初始年轻代大小为512MB -XX:MaxNewSize=1g # 最大年轻代大小为1GB
垃圾回收相关参数
-
-XX:+UseG1GC:启用G1垃圾回收器,G1是目前推荐的垃圾回收器,特别适用于大内存应用。bash
-XX:+UseG1GC -
-XX:+UseParallelGC:启用并行垃圾回收器,适合多核CPU环境。bash
-XX:+UseParallelGC -
-XX:+UseConcMarkSweepGC:启用CMS垃圾回收器(适用于低延迟需求)。bash
-XX:+UseConcMarkSweepGC -
-XX:MaxGCPauseMillis:设置垃圾回收的目标最大暂停时间(单位:毫秒)。bash
-XX:MaxGCPauseMillis=200 # 设置垃圾回收的目标最大暂停时间为200ms
性能调优相关参数
-
-XX:+PrintGCDetails:打印GC日志,详细输出每次GC的过程。bash
-XX:+PrintGCDetails -
-XX:+PrintGCDateStamps:在GC日志中加入时间戳。bash
-XX:+PrintGCDateStamps -
-XX:+HeapDumpOnOutOfMemoryError:在内存溢出时生成堆转储文件(heap dump)。bash
-XX:+HeapDumpOnOutOfMemoryError -
-XX:HeapDumpPath:指定堆转储文件的存放路径。bash
-XX:HeapDumpPath=/path/to/heapdump.hprof
线程管理相关参数
-
-XX:ThreadStackSize:设置每个线程的堆栈大小。bash
-XX:ThreadStackSize=256k # 设置线程栈大小为256KB -
-XX:CICompilerCount:设置JIT(Just-In-Time)编译器的线程数量。bash
-XX:CICompilerCount=4 # 使用4个JIT编译器线程
调试和日志相关参数
-
-Xlog:gc*:输出垃圾回收日志。bash
-Xlog:gc* # 输出GC的相关日志 -
-XX:+PrintCompilation:打印JIT编译的详细信息。bash
-XX:+PrintCompilation
3. JVM调优的常见工具
除了直接设置JVM参数外,以下工具也可以帮助你进行JVM性能调优和监控:
- JConsole:一个基于JMX的监控工具,可以监控JVM的堆内存、线程、类加载、GC等信息。
- VisualVM:一个图形化工具,可以用来监控JVM性能、堆转储分析、线程分析等。
- JProfiler:一个商业化的Java性能分析工具,提供详细的堆内存分析、CPU分析等功能。
总结
JVM调优主要通过启动时的参数配置来实现,常见的调优方向包括内存管理(如堆大小、年轻代大小等)、垃圾回收策略、性能优化和日志记录。JVM启动参数的设置通常通过命令行、启动脚本或容器配置来实现,并且这些参数可以根据实际的应用需求和运行环境进行调整。
JVM调优,只设置了最大堆内存和初始堆大小,在哪里具体分配年轻代老年代大小
在 Java 中,JVM 的堆内存分为 年轻代(Young Generation)和 老年代(Old Generation)。它们的大小通常由以下两个方面控制:
-
-Xms和-Xmx:设置堆内存的初始大小(-Xms)和最大大小(-Xmx),但是这两个参数并没有直接控制年轻代和老年代的具体大小,而是控制整个堆的大小。 -
-XX:NewRatio:用于控制年轻代和老年代的比例。默认情况下,JVM 会根据堆的大小分配一定比例的内存给年轻代和老年代。如果没有指定-XX:NewRatio,JVM 会根据默认值来决定。 -
-XX:NewSize和-XX:MaxNewSize:这些参数可以显式地控制年轻代的大小。-XX:NewSize用于设置年轻代的初始大小,-XX:MaxNewSize用于设置年轻代的最大大小。 -
-XX:SurvivorRatio:用于控制年轻代中 Eden 区 和 两个 Survivor 区 之间的内存比例。默认值通常是 8:1,即 Eden 区的大小是每个 Survivor 区的 8 倍。 -
-XX:InitialTenuringThreshold:控制对象在年轻代中经历多少次 GC 后会被晋升到老年代。
JVM 内存分配的细节:
-
-Xms和-Xmx:这些参数定义了堆的总内存大小,但并没有指定年轻代和老年代的具体分配。堆内存分为三个区域:- 年轻代(Young Generation)包括 Eden 区和两个 Survivor 区。
- 老年代(Old Generation)用于存储经过多次垃圾回收后仍然存活的对象。
- 元空间(Metaspace)用于存储类元数据(对于 JDK 8 及以上版本)。
-
年轻代和老年代的默认比例:
- 默认情况下,JVM 会将堆内存的 1/3 分配给年轻代,其余的分配给老年代。这种比例可以通过
-XX:NewRatio参数进行调整。
- 默认情况下,JVM 会将堆内存的 1/3 分配给年轻代,其余的分配给老年代。这种比例可以通过
控制年轻代和老年代大小的参数:
1. -XX:NewRatio
这个参数控制年轻代和老年代的比例。默认值通常是 2,意味着年轻代的内存大小是老年代的 1/2。例如,若堆内存大小为 6 GB,则默认情况下年轻代占 2 GB,老年代占 4 GB。
bash
-XX:NewRatio=2
2. -XX:NewSize 和 -XX:MaxNewSize
这两个参数用于控制年轻代的初始大小和最大大小。-XX:NewSize 设置年轻代的初始大小,-XX:MaxNewSize 设置年轻代的最大大小。如果你想显式地控制年轻代的大小,可以使用这两个参数。
bash
-XX:NewSize=1G -XX:MaxNewSize=2G
3. -XX:SurvivorRatio
这个参数控制年轻代中的 Eden 区和 Survivor 区的内存比例。默认值是 8,即 Eden 区的内存大小是每个 Survivor 区的 8 倍。
bash
-XX:SurvivorRatio=8
4. -XX:InitialTenuringThreshold
这个参数控制一个对象在年轻代中存活多少次 GC 后才会晋升到老年代。默认值通常是 7,表示对象在经历 7 次 GC 后会被晋升到老年代。
bash
-XX:InitialTenuringThreshold=7
总结:
- 最大堆内存和初始堆内存(
-Xms和-Xmx)控制整个堆的大小。 - 年轻代和老年代的比例:通过
-XX:NewRatio控制。 - 年轻代的大小:可以通过
-XX:NewSize和-XX:MaxNewSize明确指定。 - 年轻代内部区域的比例:通过
-XX:SurvivorRatio控制 Eden 区和 Survivor 区的大小比例。
通过这些参数,您可以根据应用程序的需求调整内存分配,以便更好地满足性能和垃圾回收的需求。
-XX:NewRatio:用于控制年轻代和老年代的比例 ,这个比例在哪里配置的
目前我无法直接提供截图,但我可以通过文字说明帮助你理解在哪里配置 -XX:NewRatio 参数。
配置方法
-
JVM 启动命令行中配置:
-XX:NewRatio是通过在 JVM 启动命令中设置的。如果你正在运行 Java 程序,可以在启动时通过命令行指定此参数。
-
示例: 假设你通过命令行启动 Java 应用程序,可以在启动命令中添加
-XX:NewRatio来控制年轻代和老年代的比例。以下是一个常见的例子:bash
java -XX:NewRatio=2 -jar your-application.jar这条命令中,
-XX:NewRatio=2将设置年轻代和老年代的内存比例为 1:2。
在常见的环境中的配置方式
-
Eclipse:如果你在 Eclipse 中运行应用程序,可以通过以下步骤配置:
- 右键点击你的 Java 项目。
- 选择 Run As → Run Configurations。
- 选择你要运行的配置。
- 在 Arguments 标签下,在 VM arguments 中添加
-XX:NewRatio=2。
-
IntelliJ IDEA:如果你在 IntelliJ IDEA 中运行 Java 应用程序,可以通过以下步骤配置:
- 打开你的项目。
- 点击 Run → Edit Configurations。
- 在 VM options 中添加
-XX:NewRatio=2。
-
Tomcat 或其他应用服务器:如果你使用的是 Tomcat 或其他应用服务器,可以在服务器启动配置文件中(如
catalina.sh或setenv.sh)添加此参数。
总结
-XX:NewRatio参数通过 JVM 启动时的命令行配置来控制年轻代和老年代的内存比例。- 配置示例:
java -XX:NewRatio=2 -jar your-application.jar。 - 你可以在 IDE 或应用服务器的启动配置中设置这个参数。
以Dokcer为例 -XX:NewRatio:用于控制年轻代和老年代的比例 ,这个比例在哪里配置的,请给出截图
虽然我无法直接提供截图,但我可以详细解释如何在 Docker 容器中配置 JVM 参数(如 -XX:NewRatio)来控制年轻代和老年代的比例。
1. 通过 Dockerfile 配置
在 Dockerfile 中,你可以通过设置 CMD 或 ENTRYPOINT 来指定 JVM 参数。在 Docker 镜像构建过程中,可以将 -XX:NewRatio 参数添加到 Java 启动命令中。
示例 Dockerfile 配置:
# 使用 Java 官方镜像 FROM openjdk:17-jdk # 将应用程序 JAR 文件添加到容器中 COPY your-application.jar /app/your-application.jar # 配置 JVM 参数来控制年轻代和老年代的比例 CMD ["java", "-XX:NewRatio=2", "-jar", "/app/your-application.jar"]
2. 通过 docker run 命令配置
如果你已经有一个 Docker 镜像,并且想要在运行时动态添加 JVM 参数(例如 -XX:NewRatio),可以在使用 docker run 命令时指定这些参数。
示例 docker run 命令:
bash
docker run -d -e JAVA_OPTS="-XX:NewRatio=2" your-docker-image
然后,确保在容器内部的启动命令中使用了 JAVA_OPTS 环境变量,例如:
CMD ["sh", "-c", "java $JAVA_OPTS -jar /app/your-application.jar"]
这样,JAVA_OPTS 环境变量中的 -XX:NewRatio=2 就会被传递给 JVM。
3. 使用 Docker Compose 配置
如果你使用 Docker Compose 来管理容器,可以在 docker-compose.yml 文件中配置 JVM 参数。
示例 docker-compose.yml 配置:
version: '3.8' services: java-app: image: openjdk:17-jdk build: context: . environment: - JAVA_OPTS=-XX:NewRatio=2 command: ["sh", "-c", "java $JAVA_OPTS -jar /app/your-application.jar"] volumes: - ./your-application.jar:/app/your-application.jar
总结
- 在 Docker 中,你可以通过 Dockerfile、docker run 命令或 Docker Compose 来配置
-XX:NewRatio参数,控制年轻代和老年代的比例。 - 通过
CMD或ENTRYPOINT指定 JVM 启动参数,将其传递给 Java 应用程序。
虽然我无法直接给出截图,但以上步骤应能帮助你在 Docker 容器中配置 Java 参数。如果你需要更详细的操作说明或遇到其他问题,欢迎随时提问!
项目中如何配置的?
DokckerFile
FROM x.com/saicmotorcv/java:8
MAINTAINER wanghuapeng <wanghuapeng@saicmotor.com>ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezoneCOPY /x-service/target/yl-tasks-jghc-service-0.0.1.jar /app/app.jar
COPY /x-service/start.sh /app
COPY /x-service/start2.sh /app
COPY /x-service/skywalking-agent /app/agent
EXPOSE 9600
ENTRYPOINT ["/bin/bash","/app/start.sh"]
start.sh
#!/bin/bashSERVICEIP=` ip a|grep /32| awk '{print $2}'|cut -d / -f1`if [ "$ZH_APP_MEM" == "" ]; thenvmMemory=" -Xms2G -Xmx2G "
elsevmMemory=" -Xms$ZH_APP_MEM -Xmx$ZH_APP_MEM "
fiflag=0
inst_name=${LOGFORMAT##*/}
ret=`curl -s http://ip.sxc.sh/service/${inst_name}/text`
ip_str=${ret%%]*}
wan_ip=${ip_str#*[}
port_str=${ret##*[}
wan_port=${port_str%%:*}if [ -n "$(echo $wan_port| sed -n "/^[0-9]\+$/p")" ];thenflag=1
fi
check=`echo $wan_ip|grep "^[0-9]\{1,3\}\.\([0-9]\{1,3\}\.\)\{2\}[0-9]\{1,3\}$"`
if [[ ${#check} -eq ${#wan_ip} && $flag -eq 1 ]]; thenflag=2
fiif [ $flag -ne 2 ]; thenwan_ip=""wan_port=""
fi
echo $wan_ip
echo $wan_portif [ -n "$shost" ] ;thenecho "wan ip and port is define $shost:$sport"SERVICE_HOST=$shostSERVICE_PORT=$sport
elif [ -n "$wan_port" ] ;thenecho "wan ip and port is define $wan_ip:$wan_port"SERVICE_HOST=$wan_ipSERVICE_PORT=$wan_port
fijavaagent="-javaagent:/app/agent/skywalking-agent.jar=agent.service_name=$SKYWALKING_NAME,collector.backend_service=${SKYWALKING_SERVICE}"echo "serviceip:$SERVICEIP"
echo "SKYWALKING_NAME:$SKYWALKING_NAME"
echo "SKYWALKING_SERVICE:$SKYWALKING_SERVICE"
java $javaagent \-server -jar $vmMemory \-Duser.timezone=GMT+08 \-XX:+UseConcMarkSweepGC \/app/app.jar \--spring.cloud.consul.discovery.hostname=$SERVICE_HOST \--spring.cloud.consul.discovery.port=$SERVICE_PORT \--spring.cloud.consul.discovery.healthCheckUrl=http://$SERVICE_HOST:$SERVICE_PORT/base/health \--spring.profiles.active=\${env} \--xxl.job.executor.register.port=\${xxl-job-port} \--xxl.job.executor.register.ip=$SERVICE_HOST
相关文章:
JVM调优,参数在哪里设置的?
JVM调优,参数在哪里设置的? 在Java应用程序中,JVM(Java Virtual Machine)的调优通常通过设置JVM启动参数来实现。这些参数可以控制JVM的内存分配、垃圾回收策略、线程管理、性能优化等方面。 1. JVM参数的位置 JVM参…...
2024年最新Stable Diffusion 新手入门教程,安装使用及模型下载
一、安装要求: ① 操作系统:Windows10以后的系统 ② CPU:不做强制性要求 ③ 内存:推荐8G以上 ④ 显卡:必须是Nvidia的独立显卡,显存最低4G,推荐20系以后;A卡、核显只能用CPU跑 …...
Ubuntu 20.04安装gcc
一、安装GCC 1.更新包列表 user596785154:~$ sudo apt update2.安装gcc user596785154:~$ sudo apt install gcc3.验证安装 user596785154:~$ gcc --version二 编译C文件 1.新建workspace文件夹 user596785154:~$ mkdir workspace2.进入workspace文件夹 user596785154:~…...
IT运维的365天--024 闲置路由器关闭了dhcp,如何知道它的IP是啥
有时候各种原因,我们关闭了路由器的Dhcp,比如需要获取的无线IP和有线同一个网段的情况。时间久了,如果没做标记,大部分时候就会忘了路由器原来设置的是什么IP,没有路由器的对应IP,自然也无法进路由器后台去…...
kaggle竞赛:纽约出租车行程时间NYC Taxi Trip Duration
1.引言 作为一名(坦白说有点懒的)图像处理方向的研究生,说实话最近新开一个坑,可能是因为要寒假了比较无聊,这次带来的系列是kaggle数据处理竞赛的经典例题:纽约出租车行程时间问题。希望大家多多支持&…...
Freemarker模板进行判空
文章目录 freemarker判断对象是否为null使用 ?? 操作符使用 ?has_content 内建函数直接使用 ! 操作符取反 freemarker判断列表是否为空 freemarker判断对象是否为null 在 FreeMarker 模板引擎中,你可以使用内建的指令和条件判断来检测一个对象是否为 null。Free…...
C++ const关键字(八股总结)
作用 const修饰符用来定义常量,具有不可变性。 修饰变量,说明该变量不可以被改变;修饰指针,分为指向常量的指针(pointer to const)和自身是常量的指针(常量指针,const pointer&…...
Linux 清楚历史命令
在 Linux 中,执行完命令后,如果你想清除终端屏幕上的内容,可以使用以下几种方法: 1. 使用 clear 命令 clear 是 Linux 中最常用的清除屏幕命令。它会将终端屏幕清空,并将光标移动到屏幕左上角。 bash clear 2. 使用快…...
服务器双网卡NCCL通过交换机通信
1、NCCL变量设置 export CUDA_DEVICE_MAX_CONNECTIONS1 export NCCL_SOCKET_IFNAMEeno2 export NCCL_IB_DISABLE0 #export NCCL_NETIB export NCCL_IB_HCAmlx5_0,mlx5_1 export NCCL_IB_GID_INDEX3 export NCCL_DEBUGINFOGPUS_PER_NODE4MASTER_ADDR192.168.1.2 MASTER_PORT600…...
Redis哨兵(sentinel)
是什么 吹哨人巡查监控后台master主机是否故障,如果故障了根据投票数自动将某一个从库转换为新主库,继续对外服务 哨兵的作用 1、监控redis运行状态,包括master和slave 2、当master down机,能自动将slave切换成新master 能干嘛…...
小白学Pytorch
小白学Pytorch 发现一个比较好的教程,对于自己来说比较合适,适合从零开始的教程。 1、搭建一个简单的网络 https://www.cnblogs.com/PythonLearner/p/13587092.html 搭建网络这步说的比较清楚: 我们使用nn包中的Sequential搭建网络&#…...
ros2笔记-2.5.3 多线程与回调函数
本节体验下多线程。 python示例 在src/demo_python_pkg/demo_python_pkg/下新建文件,learn_thread.py import threading import requestsclass Download:def download(self,url,callback):print(f线程:{threading.get_ident()} 开始下载:{…...
第5章:Go语言错误处理和异常
第5章:Go语言错误处理和异常 5.1 错误类型基础 5.1.1 error接口 // error接口定义 type error interface {Error() string }// 自定义错误 type CustomError struct {Message stringCode int }func (e *CustomError) Error() string {return fmt.Sprintf(&quo…...
题库刷题知识点总结
算法与机器学习相关 支持向量机:是一种有监督的机器学习算法,用于分类和回归任务。它通过寻找一个最优超平面来将不同类别的数据点分开,最大化两类数据点到超平面的间隔,具有良好的泛化能力和抗噪声能力。机器学习:是…...
GraphRAG:LLM之Graphrag接入milvus
前言 微软目前的graphrag更像个demo,数据量大的时候不是很友好的啊,所以将milvus接入了graphrag,看完这篇文章,其他数据库接入应该也没问题 注:这篇文章只是在search的时候接入进来,index过程或者说整个流…...
adb使用及常用命令
目录 介绍 组成 启用adb调试 常用命令 连接设备 版本信息 安装应用 卸载应用 文件操作 日志查看 屏幕截图和录制 设备重启 端口转发 调试相关 设置属性 设备信息查询 获取帮助 模拟输入 介绍 adb全称为 Android Debug Bridge(Android调试桥),是 A…...
omnipeek分析beacon帧
omnipeek查询设备发送beacon时同一信道两个beacon发送间隔 目录 用例要求分析抓包数据 1.用例要求 Beacon帧发送频率符合规范要求。参数-【同一个信道两个beacon发送间隔不能超过100ms】 2.分析抓包数据 打开becon.pkt文件(用omnipeek工具提前抓取包)…...
Java数组问题
题目2: 定义一个数组,存储1,2,3,4,5,6,7,8,9,10 遍历数组得到的每一个元素,统计数组里面一共多少个能被3整除的数字 package com.s…...
salesforce 可以为同一个简档的同一个 recordtype 的对象设置多种页面布局吗
在 Salesforce 中,对于同一个 Record Type(记录类型),默认情况下,每个 Profile(用户简档) 只能分配一个 Page Layout(页面布局)。也就是说,页面布局的分配规则…...
使用vue项目中,使用webpack模板和直接用vue.config来配置相关插件 区别是什么,具体有哪些提现呢
在 Vue 项目中,使用 Webpack 模板 和 vue.config.js 来配置相关插件的主要区别在于配置的复杂度、灵活性和易用性。以下是两者的详细对比: 1. Webpack 模板 Webpack 模板是 Vue CLI 早期版本(如 Vue CLI 2.x)中提供的项目初始化模…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
