OpenEuler运维实战-系统资源监控与性能优化-CPU·内存·IO
CPU
- 基本概念
- 定界定位思路
- 常用CPU性能分析工具
基本概念
中央处理器(Central Processing Unit,简称CPU)是计算机的主要设备之一,其功能是解释计算机指令以及处理计算机软件中的数据。
- 物理核:可以真实看到的CPU核,有独立的电路元件以及L1、L2缓存,可以独立地执行指令。一个CPU可以有多个物理核。
- 逻辑核:在同一个物理核内,逻辑层面上存在的核。一般一个物理核对应一个线程,但是如果开启了超线程,当超线程数量为n时,一个物理核可以分成n个逻辑核。
可以通过lscpu命令查看服务器中有多少个CPU,每个CPU中有几个物理核,以及每个CPU有几个逻辑核。
定界定位思路
常用CPU性能分析工具
- uptime:可用于打印系统平均负载,最后三个数字表示系统在过去1分钟、5分钟和15分钟内的平均负载情况,可以判断平均负载的变化趋势。
平均负载大于CPU数量时表示CPU不足以服务线程,部分线程在等待;平均负载小于CPU数量,代表当前还有余量。
- vmstat:可以动态地了解系统资源的使用情况,以及查看系统中是哪一个环节最占用系统资源。
通过vmstat -h命令可以查看命令详解参数。
例如:
#使用vmstat进行监测,每隔1秒刷新一次
vmstat 1
在命令的输出信息中,各字段所代表的含义如下:
字段 | 含义 |
---|---|
procs | 进程信息字段。 |
memory | 内存信息字段。 |
swap | 交换分区信息字段。 |
io | 磁盘读/写信息字段。 |
system | 系统信息字段。 |
cpu | CPU信息字段。-us:非内核进程消耗 CPU 运算时间的百分比。-sy:内核进程消耗 CPU 运算时间的百分比。-id:空闲。-wa:等待 I/O 所消耗的 CPU 百分比。-st:被虚拟机所盗用的 CPU 百分比。 |
- sar:可用于分析系统性能,可以用来观察当前的活动以及配置,用以归档和报告历史统计信息。
例如:
# 安装sysstat
yum install -y sysstat# 查看系统CPU的整体负载情况,每3秒统计一次,共统计5次
sar -u 3 5
回显信息如下:
[root@openEuler ~]# sar -u 3 5
Linux 5.10.0-153.12.0.92.oe2203SP4.aarch64 (openEuler) 05/20/2023 _aarch64_ (4 CPU)04:38:27 PM CPU %user %nice %system %iowait %steal %idle
04:38:30 PM all 0.00 0.00 0.00 0.00 0.00 100.00
04:38:33 PM all 0.00 0.00 0.33 0.00 0.00 99.67
04:38:36 PM all 0.00 0.00 0.00 0.00 0.00 100.00
04:38:39 PM all 0.08 0.00 0.00 0.00 0.00 99.92
04:38:42 PM all 0.00 0.00 0.08 0.00 0.00 99.92
Average: all 0.02 0.00 0.08 0.00 0.00 99.90
在命令的输出信息中,各字段所代表的含义如下:
字段 | 含义 |
---|---|
%user | 用户模式下消耗的 CPU 时间的比例。 |
%nice | 通过 nice 改变了进程调度优先级的进程,在用户模式下消耗的 CPU 时间的比例。 |
%system | 系统模式下消耗的 CPU 时间的比例。 |
%iowait | CPU 等待磁盘 I/O 导致空闲状态消耗的时间比例。 |
%steal | 利用操作系统等虚拟化技术,等待其他虚拟CPU计算占用的时间比例。 |
%idle | CPU空闲时间比例。 |
- ps:可用于查看正在运行的进程。
# 查看系统中所有的进程,以及查看进程的父进程的 PID 和进程优先级
ps -le
# 查看当前shell产生的进程
ps -l
- top:可以动态地持续监听进程的运行状态,显示最消耗CPU的进程。
top
内存
- 基本概念
- 定位定界思路
- 常用内存分析工具/方式
基本概念
内存是计算机的重要组成部件,用于暂时存放CPU中的运算数据,以及与硬件等外部存储器交换的数据。特别地,非统一内存访问架构(non-uniform memory access,简称NUMA)是一种为多处理器的电脑设计的内存架构,内存访问时间取决于内存相对于处理器的位置。在NUMA下,处理器访问本地内存的速度比非本地内存速度(内存位于另一个处理器,或者是处理器之间共享的内存)快。
定位定界思路
常用内存分析工具/方式
- free:可用于显示系统内存状态。
例如:
# 显示系统内存状态,以MB单位显示
free -m
在命令的输出信息中,各字段所代表的含义如下:
标识 | 含义 |
---|---|
total | 总内存数。 |
used | 已经使用的内存数。 |
free | 空闲的内存数。 |
shared | 多个进程共享的内存总数。 |
buff/cache | 缓冲和缓存内存总数。 |
available | 估计有多少内存可用于启动新应用程序,而不交换。 |
- vmstat:可以动态地监控系统内存,查看系统内存的使用情况。
例如:
# 监测系统内存,显示活跃和非活跃内存
vmstat -a
在命令的输出信息中,与内存相关的memory字段所代表的含义如下:
字段 | 含义 |
---|---|
memory | 内存信息字段。-swpd:虚拟内存的使用情况,单位为 KB。-free:空闲的内存容量,单位为 KB。-inact:非活跃的内存容量,单位为 KB。-active:活跃的内存容量,单位为 KB。 |
- sar:可用于监控系统的内存使用情况。
例如:
# 系统内存在采样时间内的使用情况,每2秒统计一次,统计 3 次
sar -r 2 3
回显信息如下:
[root@openEuler ~]# sar -r 2 3
Linux 5.10.0-153.12.0.92.oe2203SP4.aarch64 (openEuler) 05/20/2023 _aarch64_ (4 CPU)04:56:08 PM kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commint kbactive kbinact kbdirty
04:56:10 PM 324264 2250588 188320 6.98 143160 1772412 787944 11.52 474668 1588704 0
04:56:12 PM 324264 2250588 188320 6.98 143160 1772412 787944 11.52 474668 1588704 0
04:56:14 PM 324296 2250620 188388 6.98 143160 1772412 787944 11.52 474668 1588772 0
Average: 324275 2250599 188309 6.98 143160 1772412 787944 11.52 474668 1588727 0
在命令的输出信息中,各字段所代表的含义如下:
字段 | 含义 |
---|---|
kbmemfree | 内存的未使用空间。 |
kbmemused | 内存的已使用空间。 |
%memused | 已使用空间的百分比。 |
kbbuffers | 缓冲区的数据存取量。 |
kbcached | 系统全域的数据存取量。 |
- numactl:可用于查看NUMA节点配置和状态。
例如:
# 查看当前的NUMA配置
numactl -H
服务器共划分为1个NUMA节点。每个节点包含4个CPU core,每个节点的内存大小约为6GB。
同时,该命令还给出了不同节点间的距离,距离越远,跨NUMA内存访问的延时越大。应用程序运行时应减少跨NUMA访问内存。
numastat:可用于观察各个NUMA节点的状态
# 观察NUMA节点的状态
numastat
numastat命令输出字段及其含义如下:
标识 | 含义 |
---|---|
numa_hit | 节点内CPU核访问本地内存的次数。 |
numa_miss | 节点内核访问其他节点内存的次数。 |
numa_foreign | 初始分配在本地,最后分配在其他节点的页数量。每个numa_foreign对应numa_miss事件。 |
interleave_hit | interleave策略页成功分配到这个节点。 |
local_node | 该节点的进程成功在这个节点上分配内存访问的大小。 |
other_node | 该节点的进程在其他节点上分配的内存访问大小。 |
I/O
- 基本概念
- 定位定界思路
- 常用I/O性能分析工具
基本概念
I/O表示输入(Input)/输出(Output),输入指系统接收信号或数据的操作,输出指从系统发出信号或数据的操作。对于CPU 和主存储器的组合,任何信息传入或传出 CPU/内存组合,就会被认为是 I/O。
定位定界思路
常用I/O性能分析工具
- iostat:可以汇报所有在线磁盘的统计信息。
例如:
# 详细显示磁盘信息,以KB为单位显示,以100秒为周期统计(命令本身不会主动停止,需要执行Ctrl+C手动停止)
iostat -d -k -x 100# 详细显示磁盘信息,以KB为单位显示,以1秒为周期统计,总共统计100s
iostat -d -k -x 1 100
回显信息如下:
[root@openEuler ~]# iostat -d -k -x 1 100
Linux 5.10.0-153.12.0.92.oe2203SP4.aarch64 (openEuler) 05/20/2023 _aarch64_ (4 CPU)Device r/s rkB/s rrqm/s %rrqm r_await rareq-sz w/s wKB/s wrqm/s %wrqm w_await wareq-sz d/s dKB/s drqm/s %drqm d_await dareq-sz f/s f_await aqu-sz %util
dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
vda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
在命令的输出信息中,各字段所代表的含义如下:
字段 | 含义 |
---|---|
Device | 监测设备名称。 |
r/s | 设备每秒完成的读取请求数(合并后)。 |
rKB/s | 每秒从磁盘读取KB数。 |
rrqm/s | 每秒合并放入请求队列的读操作数。 |
%rrqm | 读取请求在发送到设备之前合并在一起的百分比。 |
r_await | 每个读请求耗费的平均时间。 |
rareq-sz | 向设备发出的读取请求的平均大小(以KB为单位)。 |
w/s | 设备每秒完成的写入请求数(合并后)。 |
wKB/s | 每秒写入磁盘KB数。 |
wrqm/s | 每秒合并放入请求队列的写操作数。 |
%wrqm | 写入请求在发送到设备之前合并在一起的百分比。 |
w_await | 每个写请求耗费的平均时间。 |
wareq-sz | 向设备发出的写入请求的平均大小(以KB为单位)。 |
d/s | 设备每秒完成的丢弃请求数。 |
dKB/s | 每秒为设备丢弃的扇区(KB)数。 |
drqm/s | 每秒合并到设备排队的丢弃请求数。 |
%drqm | 丢弃请求在发送到设备之前合并在一起的百分比。 |
d_await | 向要服务的设备发出丢弃请求的平均时间。 |
dareq-sz | 向设备发出的丢弃请求的平均大小(以KB为单位)。 |
f/s | 设备每秒完成的刷新请求数(合并后)。 |
f_await | 向要服务的设备发出的刷新请求的平均时间。 |
aqu-sz | 向设备发出的请求的平均队列长度。 |
%util | 用于I/O操作时间的百分比,即使用率。 |
- sar:可用于查看系统磁盘的读写性能。
例如:
# 显示系统所有硬盘设备在采样时间内的使用状态,每3秒统计一次,统计5次
sar -d 3 5
回显信息如下:
[root@openEuler ~]# sar -d 3 5
Linux 5.10.0-153.12.0.92.oe2203SP4.aarch64 (openEuler) 05/20/2023 _aarch64_ (4 CPU)04:38:27 PM DVE tps rkB/s wkB/s dkB/s areq-sz aqu-sz await %util
04:38:30 PM vda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:38:33 PM dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:38:36 PM dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
在命令的输出信息中,各字段所代表的含义如下:
标识 | 含义 |
---|---|
tps | 表示每秒完成的磁盘事务数量,其中事务可以是读取或写入操作。 |
rKB/s | 每秒从设备读取的KB数。 |
wKB/s | 每秒写入设备的KB数。 |
dKB/s | 设备每秒丢弃的KB数。 |
areq-sz | 向设备发出的I/O请求的平均大小(KB)。 |
aqu-sz | 向设备发出的请求的平均队列长度。 |
await | 向要服务的设备发出的I/O请求的平均时间。 |
%util | 向设备发出I/O请求的已用时间百分比(设备的带宽利用率)。 |
- vmstat
# 使用vmstat进行监测,报告磁盘相关统计信息
vmstat -d
在命令的输出信息中,各字段所代表的含义如下:
字段 | 含义 |
---|---|
reads | -total:已成功完成的读取总数。-merged:分组读取(导致一次I/O)。-sectors:扇区读取成功。-ms:读取花费的毫秒数。 |
writes | -total:已成功完成的写入总数。-merged:分组写入(导致一次I/O)。-sectors:写入成功的扇区。-ms:写入所花费的毫秒数。 |
IO | -cur:正在进行的 I/O 数。-sec:I/O 所花费的秒数。 |
相关文章:
OpenEuler运维实战-系统资源监控与性能优化-CPU·内存·IO
CPU 基本概念定界定位思路常用CPU性能分析工具 基本概念 中央处理器(Central Processing Unit,简称CPU)是计算机的主要设备之一,其功能是解释计算机指令以及处理计算机软件中的数据。 物理核:可以真实看到的CPU核&…...
react实现SVG地图区域中心点呈现圆柱体,不同区域数据不同,圆柱体高度不同
效果图: 代码: import React, { useState, useEffect } from react;const InnerMongoliaMap () > {// 每个区域的数据(名称、中心坐标、圆柱体高度值)const [regionData, setRegionData] useState([{ id: "呼和浩特市…...
Qwen - 14B 怎么实现本地部署,权重参数大小:21GB
Qwen - 14B 权重参数大小:21GB 参数量与模型占用存储空间(GB)是不同概念。Qwen - 14B参数量约140亿 。其模型大小在不同精度下占用存储空间不同,如在一些资料中提到,Qwen - 14B在特定情况下占用空间约21GB 。实际存储…...
线程实现参考资料
参考 并发编程系列 - Java线程池监控及CompletableFuture详解_taskexecutor.execute没有执行如何监控到-CSDN博客 JAVA异步实现的四种方式_java异步编程的四种方法-CSDN博客 Java线程池深度解析与自定义实战-CSDN博客 Java8 CompletableFuture 异步多线程的实现_java_脚本之…...
python-63-前后端分离之图书管理系统的Flask后端
文章目录 1 flask后端1.1 数据库实例extension.py1.2 数据模型models.py1.3 .flaskenv1.4 app.py1.5 运行1.6 测试链接2 关键函数和文件2.1 请求视图类MethodView2.2 .flaskenv文件3 参考附录基于flask形成了图书管理系统的后端,同时对其中使用到的关键文件.flaskenv和函数类M…...
Qt网络编程之服务端
Qt网络编程之服务端 TCP(传输控制协议)是一种可靠的、面向流的、面向连接的传输协议。它特别适合连续的数据传输。 1. 主要类和函数 1.1 QTcpServer 监听函数: bool QTcpServer::listen(const QHostAddress &address QHostAddress::…...
案例-流量统计
1.建一个data目录,在data下建log.txt文件 输入手机号码 上行流量 下行流量 2.在com.example.flow下建四个Java类3.flowBean flowMapper flowReducer flowDriver...
开源身份和访问管理方案之keycloak(二)管理员引导和恢复
文章目录 开源身份和访问管理方案之keycloak(二)管理员引导和恢复管理员引导和恢复在 Keycloak 启动时引导临时管理员帐户对于恢复丢失的管理员访问权限使用专用命令引导管理员用户或服务帐户创建一个管理员用户创建一个服务账号重新获得对具有更高安全性…...
TCP,UDP协议和域名地址
1.TCP(传输控制协议)是面向连接,UDP(用户数据报协议)是无连接的 2.应用层:FTP,HTTP,SMTP,TELNET,DNS,TFTP 传输层;TCP,UDP 网际层:IP,ICMP,ARP,RARP 3.TCP21:20端口数据传输;21端…...
算法进阶指南 分形
问题描述 分形,具有以非整数维形式充填空间的形态特征。通常被定义为: “一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状”,即具有自相似的性质。 现…...
2025年 npm淘宝镜像最新地址
查看当前镜像 npm config get registry 切换陶宝镜像源 npm config set registry https://registry.npmmirror.com/ 验证npm镜像源是否切换成功 npm config get registry 如果返回的地址是https://registry.npmmirror.com/,那么说明你已经成功切换到淘宝的npm…...
0基础 | 硬件 | LM386芯片
LM386芯片:音频功率放大器芯片 内部集成三极管功能将微弱信号放大20-200倍,并且驱动内阻为8Ω的扬声器注意CD系列芯片,内部集成MOS管 LM386特性 LM386主要由以下三个部分组成 内部电路 差分输入 差分输入 多个三极管左右对称,形…...
Spring Boot集成APK Parser库实现APK文件解析
目录 1. 添加依赖 2. 创建APK解析服务 3. 创建控制器 4. 测试 注意事项 在Spring Boot项目中集成APK Parser库并解析APK文件,可以按照以下步骤进行操作: 1. 添加依赖 在项目的pom.xml文件中添加apk-parser库的依赖: <dependency&…...
java基础 迭代Iterable接口以及迭代器Iterator
Itera迭代 Iterable < T>迭代接口(1) Iterator iterator()(2) forEach(Consumer<? super T> action)forEach结合Consumer常见场景forEach使用注意细节 (3)Spliterator spliterator() Iterator< T>迭代器接口如何“接收” Iterator<T>核心方法迭代器的…...
Linux: network: tcpdump: packets dropped by kernel
文章目录 最近遇到一个问题原因libpcap/tcpdump 接口linux/libpcap 接口内核的处理原因可能有以下几种:解决方法:man pcap_stats最近遇到一个问题 tcpdump命令显示有dropped的包,而且是被内核drop的。 [root@-one-01 ~]# tcpdump -i any udp and port 8080 -v -w /root/udp…...
TCP三次握手和TCP四次挥手
一 TCP三次握手 TCP建立连接的过程叫做握手,握手需要客户端和服务器之间交换三个TCP报文段。如图所示,假设主机A为TCP客户端,主机B为TCP服务端。在最初时间,两端的TCP进程都是处于CLOSED状态 (1)主机A主动…...
博途 TIA Portal之1200做主站与调试助手的TCP通讯
博途支持的通讯非常多,常见的有S7、TCP/IP,UDP等等,本文将演示TCP的通讯,通讯的双方是1200PLC和调试助手之间,编程采用ST语言。 1、硬件准备 1200PLC一台,带调试助手的PC机一台,调试助手是我经…...
第十天 - socket编程基础 - TCP/UDP服务开发 - 练习:简易端口扫描器
Python网络编程入门:从Socket到端口扫描器实战 一、前言:为什么要学网络编程? 在这个万物互联的时代,掌握网络编程技术就像拥有了一把打开互联网世界的钥匙。无论是开发聊天软件、网络游戏,还是构建分布式系统&#…...
欧税通香港分公司办公室正式乔迁至海港城!
3月20日,欧税通香港分公司办公室正式乔迁至香港油尖旺区的核心商业区海港城!左手挽着内地市场,右手牵起国际航道——这波乔迁选址操作堪称“地理课代表”! 乔迁仪式秒变行业大联欢!感谢亚马逊合规团队、亚马逊云、阿里国际站、Wayfair、coupang、美客多…...
Maven的安装配置-项目管理工具
各位看官,大家早安午安晚安呀~~~ 如果您觉得这篇文章对您有帮助的话 欢迎您一键三连,小编尽全力做到更好 欢迎您分享给更多人哦 今天我们来学习:Maven的安装配置-项目管理工具 目录 1.什么是Maven?Maven用来干什么的?…...
【Linux篇】缓冲区的工作原理:如何影响你程序的输入输出速度
从内存到磁盘:缓冲区如何提升文件I/O效率 一. 缓冲区1.1 什么是缓冲区1.2 为什么要引入缓冲区1.3 缓冲区类型1.4 FILE1.4.1 基本概念1.4.2 FILE 结构体的作用1.4.3 FILE 的工作机制 二. 最后 在程序开发中,缓冲区是一个经常被提及却不容易深入理解的概念…...
编写junit测试类 import org.junit.Test;
1. 添加依赖 <!-- Spring Boot Starter Test --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> 2. …...
初识数据结构——深入理解LinkedList与链表:吃透LinkedList与链表的终极指南
📌 深入理解LinkedList与链表:从原理到实战应用 🌟 引言 在Java集合框架中,LinkedList和ArrayList是最常用的两种列表结构。它们各有优劣,适用于不同的场景。本文将带你深入探索LinkedList的底层实现——链表&#x…...
C++版Qt之登录界面设计
在C开发中,使用Qt框架可以快速构建美观且功能强大的GUI应用程序。本文将介绍如何设计一个漂亮的登录界面,包括账号和密码输入框,并确保只有验证成功后才能进入主窗口。 项目结构 文件列表 LoginDialog.h:登录对话框的头文件Logi…...
Java logback框架日志输出中文乱码的解决方案(windows)
在Java开发中,日志记录是一个重要的部分,它可以帮我们定位问题、运行时监控、错误排查与故障恢复。但是,在有些情况下,使用Logback记录的中文日志会出现乱码,这会影响日志的可读性,给维护带来麻烦。本文将探…...
【c++】c/c++内存管理
小编个人主页详情<—请点击 小编个人gitee代码仓库<—请点击 c系列专栏<—请点击 倘若命中无此运,孤身亦可登昆仑,送给屏幕面前的读者朋友们和小编自己! 目录 前言一、c语言内存管理二、一图搞懂c/c中的程序内存区域划分三、c内存管理1. new和d…...
【C++】Stack Queue 仿函数
📝前言: 这篇文章我们来讲讲STL中的stack和queue。因为前面我们已经有了string、vector和list的学习基础,所以这篇文章主要关注一些stack和queue的细节问题,以及了解一下deque(缝合怪)和priority_queue &am…...
Python:基于Flask框架的数据可视化系统
以下是一个基于Flask框架的数据可视化系统代码示例,包含核心功能实现: python 复制 # app.py 后端核心代码 from flask import Flask, render_template, jsonify import sqlite3 from collections import defaultdict import jieba import reapp Fla…...
JVM即时编译(JIT)
JVM基础回顾 Java 作为一门高级程序语言,由于它自身的语言特性,它并非直接在硬件上运行,而是通过编译器(前端编译器)将 Java 程序转换成该虚拟机所能识别的指令序列,也就是字节码,然后运行在虚拟机之上的;…...
JVM高阶架构:并发模型×黑科技×未来趋势解析
🚀前言 “你是否还在为synchronized锁竞争头疼?是否好奇ZGC如何实现亚毫秒停顿?Java的未来将走向何方? 本文将带你深入JVM最硬核的三大领域: 并发模型:揭秘happens-before如何保证多线程安全(…...
Java的JDK、JRE、JVM关系与作用
Java的JDK、JRE、JVM关系与作用 java中的JDK、JRE和JVM是三个核心组件,各自承担不同角色,且存在层级依赖关系 1. JVM(Java Virtual Machine,Java虚拟机) 是什么: JVM是虚拟的计算机,能够执行…...
XMLHttpRequest vs Fetch API:一场跨越时代的“浏览器宫斗剧“
## 序幕:两个API的"身世之谜" 在Web开发的江湖里,XMLHttpRequest(简称XHR)就像一位身经百战的老将,而Fetch API则是手持光剑的绝地武士。让我们先来段"DNA检测": - **XHR(…...
Windows Anaconda使用Sentence-BERT获取句子向量
1、安装Anaconda: Anaconda是一个流行的Python数据科学平台,它包含了许多科学计算和数据分析的库,包括transformers和sentence_transformers。虽然不是必需的,但使用Anaconda可以简化环境管理和依赖安装的过程。 可以从Anaconda官…...
【Java设计模式】第5章 工厂方法模式讲解
5. 工厂方法模式 5.1 工厂方法讲解 定义:定义一个创建对象的接口,由子类决定实例化的类,将对象创建延迟到子类。适用场景: 创建对象需要大量重复代码。客户端不依赖具体产品的创建细节。优点: 符合开闭原则,新增产品只需扩展子类。客户端仅依赖抽象接口,不依赖具体实现…...
结合 Less + CSS 变量实现切换主题
一开始的思路是通过 Less 变量作用范围 来切换 light 和 dark 主题,但 Less 本身不会动态监听类名变化,所以直接这样写是 不可行的,因为 Less 是 预处理语言,它在编译阶段就确定了 color 的值,而不是在运行时动态切换。…...
数据分析之python处理常用复杂转置数据
前段时间根据需求配合ai写了个转置excel代码,挺好用的,而且可以选择excel,不局限于excel存在哪个地方,都可以转置,但是转置后的excel记得要先创建放在转置文件的目录下。 原本的数据长这样 转置后则可以变为这样&…...
未来杭州:科技与诗意的时空交响曲
故事背景 故事发生在中国浙江杭州的未来科技时代,通过六个充满未来感的场景展现传统文明与尖端科技的完美融合。全篇无人物角色,专注于构建兼具东方美学与赛博朋克风格的沉浸式景观。 故事内容 从晨雾中浮现全息诗句的西湖,到吞吐智能包裹的运…...
彩虹表是什么
彩虹表是一种用于破解加密散列函数的预计算表,主要用于破解密码的哈希值。以下是关于加密文件与彩虹表的相关信息: 彩虹表的原理 • 时空折中:彩虹表基于时空折中理论,通过预先计算并存储大量可能的密码及其哈希值,减少…...
[BreachCTF 2025]
周末的这个居然一个密码都不会,作了4个pwn,给原码看着真方便 FSWn3d #define _GNU_SOURCE #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/mman.h> #include <unistd.h>char buffer[152…...
行业案例 | 印度航空借助 Azure AI,提升智能航空体验
自2022年塔塔集团(Tata Group)接管以来,印度航空启动了全面现代化升级,不仅豪掷470架新飞机订单以重塑“以人为本”的品牌形象,更将数字化作为核心战略——将所有工作负载(包括全新官网)从本地数…...
【Java设计模式】第7章 建造者模式讲解
7-1 建造者模式讲解 1. 定义与类型 定义: 将复杂对象的构建与表示分离,使相同构建过程可创建不同表示。类型: 创建型模式。通俗解释: 分步构建含多组件的对象,流程固定但顺序灵活(如做菜时放盐顺序可变)。2. 适用场景 对象内部结构复杂(多属性或多步骤)。需将对象创建与…...
鸿蒙ArkTS实战:从零打造智能表达式计算器(附状态管理+路由传参核心实现)
还在为组件状态混乱、页面跳转丢参数而头疼? 这篇博客将揭秘如何用鸿蒙ArkTS打造一个漂亮美观的智能计算器: ✅ 输入完整表达式,秒出结果——字符串切割简单计算 ✅ 状态管理黑科技——Provide/Consume 实现跨组件实时响应 ✅ 路由传参实战—…...
虚拟机上安装openEuler和openGauss数据库
1.虚拟机版本选择VM 16 PRO 2.openEuler版本选择openEuler-22.03-LTS-SP4-x86_64 下载地址:https://mirrors.aliyun.com/openeuler/openEuler-22.03-LTS-SP4/ISO/x86_64/openEuler-22.03-LTS-SP4-x86_64-dvd.iso 3.虚拟机安装openEuler过程: 4.安装ope…...
深入解析 Jenkins Agent 的 .jnlp 启动文件
🧩 深入解析 Jenkins Agent 的 .jnlp 启动文件 在 Jenkins 中,通过 JNLP(Java Network Launch Protocol)方式连接 Agent 是一种常见且灵活的方式。你可能曾见过类似这样的命令: java -jar agent.jar -jnlpUrl file:/…...
在 macOS 上连接 PostgreSQL 数据库(pgAdmin、DBeaver)
在 macOS 上连接 PostgreSQL 数据库 pgAdmin 官方提供的图形化管理工具,支持 macOS。 下载地址:https://www.pgadmin.org/ pgAdmin 4 是对 pgAdmin 的完全重写,使用 Python、ReactJs 和 Javascript 构建。一个用 Electron 编写的桌面运行时…...
HarmonyOS Next~鸿蒙系统原生流畅性创新解析:预加载技术与全栈优化的革命性突破
鸿蒙系统原生流畅性创新解析:预加载技术与全栈优化的革命性突破 一级类目:鸿蒙创新特性 | 二级类目:原生流畅 鸿蒙系统(HarmonyOS)自诞生以来,始终以“天生流畅”为核心目标,其原生流畅性不仅…...
【图像处理】:opencv实现模糊图像处理和对比度增强
opencv实现模糊图像处理和对比度增强 模糊图像处理**方法 1:Wiener 反卷积(已知模糊核)****方法 2:非锐化掩码(Unsharp Masking)****方法 3:拉普拉斯锐化(Laplacian Sharpening&…...
@SentinelResource注解,sentinel限流,熔断自定义返回 ,配合nacos完成持久化
sentinel熔断和限流自定义返回 如果发生熔断或者限流,会返回500错误页面,希望返回自定义兜底数据,这时候可使用SentinelResource实现 操作 1、添加统一返回结果类 ( 在做自定义处理的时候, 要求方法的声明必须一致) import lombok.Data;…...
AJAX简介
一、AJAX 是什么? AJAX(Asynchronous JavaScript and XML)是一种异步网络请求技术,它的核心是允许网页在不刷新整个页面的情况下,向服务器发送或接收数据,并动态更新页面内容。简单来说,AJAX 让…...
平台算法暗战:ebay欧洲站搜索词长度同比缩短2.3字符的应对策略
随着电商平台算法的快速更迭,卖家迎来了新的挑战。根据最近数据显示,eBay欧洲站搜索关键词的平均长度同比缩短了2.3个字符。这看似细微的变化,实则在搜索曝光、排名权重、流量分发等多方面带来实质性影响。 那么,这次「搜索词缩水…...