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

oracle 等待事件

1.db file scattered read

含义:当一个SQL语句需要从数据文件中读取多块非连续的数据块时,就会发生db file scattered read等待事件。这意味着数据分散在不同的位置,数据库需要进行多次I/O操作来收集所需的信息。场景:这种事件常见于全表扫描或者索引快速扫描(index fast full scan)操作,因为这些操作通常不按照数据块的物理顺序进行访问。
性能影响:由于涉及多个分散的I/O操作,与顺序读相比,散列读可能会有更高的I/O开销,特别是在I/O子系统响应时间较长的情况下。

2.db file sequential read

含义:当数据库以连续的顺序从数据文件中读取数据块时,会发生db file sequential read等待事件。这意味着数据块是按顺序排列的,可以连续读取,减少了磁头移动的时间。场景:这种事件通常发生在通过索引访问表数据(如索引范围扫描)或者直接通过ROWID访问单行数据时,因为这些操作往往能够预测到下一个要读取的数据块位置。性能影响:顺序读相对高效,因为它利用了磁盘I/O的局部性原理,减少了寻道时间和旋转延迟。在I/O子系统性能良好的情况下,顺序读的速度通常比散列读快。

3.enq: TX - row lock contention

ENQ:代表“Enqueue”,是Oracle中用于实现资源锁定和队列管理的一个系统,确保在多用户环境中对共享资源的访问能够有序进行。TX:指代Transaction,说明这个等待事件与数据库事务处理中的锁有关。row lock contention:意味着有多个事务尝试同时修改或锁定同一行数据。在Oracle中,为了维护数据的一致性和完整性,当一个事务正在更新某一行时,会为此行加上排他锁(X锁),阻止其他事务同时修改该行。如果此时有其他事务也尝试修改这行数据,它就必须等待当前持有锁的事务完成并释放锁。这种等待通常表示数据库中存在一定程度的并发冲突,特别是在高并发事务处理的应用场景下更为常见。过多的行锁争用可能导致事务响应时间延长,影响数据库的整体性能。解决和优化方法:
优化SQL查询:减少不必要的数据更新操作,尽量使用批量处理来减少锁的粒度和持续时间。
使用绑定变量:避免因SQL语句的硬解析导致的不必要的锁争用。
分析并调整事务设计:确保事务尽可能短小,减少持有锁的时间。
考虑乐观锁或悲观锁策略:根据业务需求选择合适的锁策略,乐观锁可以在一定程度上减少直接的锁争用。
数据库参数调整:比如调整锁相关参数,如TX_LOCK_TIMEOUT等,来管理锁等待行为。

4.buffer busy waits

表示数据库进程在尝试访问一个数据缓冲区(buffer)时,该缓冲区正被另一个进程占用,因此当前进程必须等待直到该缓冲区变为可用。这个等待事件通常与高度并发的数据库活动相关,特别是在以下几种情况中较为常见:块争用:当多个会话试图同时访问同一个数据库块(例如,表块、索引块)时,如果这些块还没有被加载到内存中的数据缓冲区缓存里,或者已经被加载但正被其他会话锁定,就会产生buffer busy waits。热块争用:在高并发事务处理场景下,某些数据块(如索引叶节点、热门表的特定块)可能被频繁访问,导致这些块成为“热块”。多个会话同时尝试修改这些热块时,就会引起争用。长时间运行的查询或事务:如果某个查询或事务长时间持有对缓冲区的锁定,也会导致其他需要访问相同缓冲区的会话等待。缓冲池大小不足:如果数据缓冲区缓存(Buffer Cache)的大小不足以满足当前的工作负载,频繁的缓冲区替换会导致更多的等待事件。解决和优化策略:增加数据缓冲区缓存大小:根据系统监控和性能分析结果,适当增加DB_CACHE_SIZE参数值,以增大数据缓冲区缓存,减少缓冲区争用。优化SQL查询:减少大表的全表扫描,优化查询逻辑,使用索引来减少需要访问的数据块数量。调整数据库参数:比如调整DB_BLOCK_CHECKSUM(关闭校验和检查以减少CPU开销)、DB_BLOCK_LRU_LATCHES(增加LRU latch的数量以减少闩锁等待)等。使用绑定变量:减少硬解析,以减少缓冲区争用的可能性。分析争用热点:使用Oracle的AWR报告或ASH(Active Session History)数据来定位具体的争用对象,然后针对性地优化访问模式或调整索引策略。考虑分区或分片:对于非常大的表或索引,可以考虑进行分区,以分散访问压力,减少对单一数据块的争用。解决buffer busy waits问题对于提高数据库的并发处理能力和整体性能至关重要。

5.cursor: mutex X

游标的互斥(mutex)锁。在Oracle中,游标是用来处理SQL语句执行上下文的内部结构,包括解析、执行计划生成及结果集处理等信息。这个等待事件具体指的是:Mutex锁:Mutex是一种轻量级的锁机制,用于保护共享资源免受并发访问的影响,确保同一时间只有一个会话可以修改该资源。在Oracle中,游标上的Mutex锁(特别是Mutex X,即独占型Mutex锁)用于控制对游标定义和状态的访问,尤其是当存在多个会话试图同时打开、关闭或修改同一个游标的状态时。等待原因:当一个会话尝试获取一个游标的Mutex X锁,而该锁已被其他会话持有时,就会发生cursor: mutex X等待事件。这通常意味着有并发操作正在进行,比如多个会话试图同时执行DDL(数据定义语言)操作,或者在执行动态SQL时创建、修改或销毁相同的游标。潜在场景:
动态SQL执行频繁,尤其是在PL/SQL代码块中,每次执行不同的SQL语句都可能创建新的游标。
应用程序设计不当,导致重复打开和关闭相同的游标。
数据库内部操作,如统计信息的自动收集、优化器的重优化等,也可能涉及游标的Mutex锁。解决策略:
优化SQL和PL/SQL代码:减少动态SQL的使用,尽量使用绑定变量和静态SQL,以复用已存在的游标。
分析和调整应用逻辑:确保不会过度创建和关闭游标,特别是在循环中重复执行相似查询时。
调整数据库参数:虽然直接调整与Mutex相关的参数可能较难直接改善此问题,但合理配置资源管理、调整会话和进程相关参数可能间接帮助减少竞争。
监控和诊断:使用Oracle的等待事件、ASH报告和SQL监控工具来定位具体导致Mutex争用的SQL或PL/SQL代码段,进而针对性地优化。
减少cursor: mutex X等待事件的发生,可以提升数据库的并发处理能力,减少响应时间,从而提高整体性能。

6.direct path read

direct path read 是Oracle数据库中的一个等待事件,它表示数据库进程绕过传统的Buffer Cache(数据缓冲区缓存),直接从数据文件中读取大量数据到PGA(程序全局区)的直接路径操作中。这个等待事件通常与大容量数据加载操作相关,例如使用DIRECT方式的INSERT、CREATE TABLE AS SELECT、MERGE操作,以及数据泵(Data Pump)的导出导入等操作。以下是关于direct path read的几个关键点:目的:为了提高大容量数据操作的效率,避免大量的数据读写操作影响到Buffer Cache的性能,以及减少对其他常规事务处理的干扰。直接路径读取跳过了数据缓存,减少了缓存污染和缓存争用的可能性。适用场景:当需要快速加载大量数据到表中,并且这些数据之后会被频繁查询而不是立即更新时,直接路径读是一个很好的选择。它适用于数据仓库加载、批量数据处理等场景。资源使用:直接路径读会消耗更多的I/O资源,因为它直接从磁盘读取数据。但是,由于省去了将数据先加载到Buffer Cache再从缓存写入磁盘的过程,总体上可以减少内存和CPU的使用,尤其是在数据量非常大时。性能影响:虽然短期内可能因为直接的磁盘I/O操作而导致更高的I/O等待,但从整体数据加载任务的角度看,它可以显著提高数据加载的效率,尤其是在I/O子系统能够高效处理大量连续读取请求的情况下。与直接路径写(Direct Path Write)的关系:直接路径读通常与直接路径写一起出现,构成了一种高效的批量数据处理模式,数据直接从数据文件读取后,再直接写入到目标表或文件中,整个过程尽量减少对Buffer Cache的依赖。总之,direct path read是一个优化大容量数据读取操作的机制,特别适合于数据仓库加载和批量处理作业,旨在通过减少对Buffer Cache的依赖来提高数据处理的吞吐量和效率。

7.control file sequential read

表示数据库进程在顺序读取控制文件中的信息。控制文件是Oracle数据库的核心组成部分之一,存储了数据库的物理和逻辑结构信息,包括但不限于数据文件、重做日志文件的位置和状态、表空间信息、数据库名称和版本等元数据。当以下操作发生时,可能会观察到control file sequential read等待事件:
数据库启动:数据库实例在启动时需要读取控制文件来验证和获取数据库的结构信息。
日志切换:重做日志文件切换时,数据库需要更新控制文件中的相关信息。
数据字典统计信息更新:某些维护操作,如自动段空间管理(ASSM)的位图块更新,可能需要读取控制文件。
备份和恢复操作:执行数据库备份或恢复操作时,需要读取控制文件来确认数据库的状态和需要处理的文件列表。
表空间或数据文件操作:添加、删除、重命名表空间或数据文件时,需要访问控制文件以更新其内容。
由于控制文件通常较小且存储在高速存储设备上,因此这类等待通常不会成为性能瓶颈。然而,如果控制文件频繁地被大量并发请求访问,或者存储设备响应缓慢,也可能导致性能问题。优化建议:
确保控制文件位于快速的存储介质上,以减少I/O等待时间。
监控控制文件的访问模式,如果发现异常的高等待,检查是否有不合理的数据库活动或配置问题。
在一些极端场景下,考虑增加控制文件的副本数量,分布于不同的磁盘,以提供更好的容错能力和I/O平衡,但这通常不是出于性能考虑,而是为了提高可用性和可靠性。
--查询阻塞和被阻塞的session
SELECT a.INST_ID,a.sid,a.SERIAL#,a.USERNAME,a.SQL_ID,a.PROGRAM,a.EVENT,a.BLOCKING_SESSION,a.WAIT_TIME_MICROFROM GV$SESSION AWHERE (A.INST_ID, a.SID) in(select b.BLOCKING_INSTANCE, b.BLOCKING_SESSION from gv$session b)
union all
select a.INST_ID,a.sid,a.SERIAL#,a.USERNAME,a.SQL_ID,a.PROGRAM,a.EVENT,a.BLOCKING_SESSION,a.WAIT_TIME_MICROFROM GV$SESSION Awhere a.BLOCKING_SESSION is not nullorder by BLOCKING_SESSION nulls first;--最近30分钟内ASH采样到的等待事件排名
select *from (select inst_id,rank() over(partition by inst_id order by cnt desc) rk,event,cntfrom (select ash.INST_ID, ash.EVENT, count(*) CNTfrom gv$active_session_history ashwhere ash.SAMPLE_TIME > sysdate - 1 / 24 / 60 * 30and event is not nullgroup by ash.INST_ID, ash.EVENT))where rk <= 10;--某段事件内ASM采样到的等待事件排名
select a.inst_id, a.event, a.sql_id, a.sql_cnt, b.cnt event_cnt, sql_rkfrom (select inst_id,event,sql_id,sql_cnt,rank() over(partition by event order by sql_cnt desc) sql_rkfrom (select ash.INST_ID, ash.EVENT, ash.SQL_ID, count(*) sql_cntfrom gv$active_session_history ashwhere to_char(ash.SAMPLE_TIME, 'YYYY-MM-DD HH24:MI:SS') >'2024-06-20 14:00:00'AND to_char(ash.SAMPLE_TIME, 'YYYY-MM-DD HH24:MI:SS') <'2024-06-20 16:00:00'AND EVENT IS NOT NULLGROUP BY ASH.INST_ID, ASH.EVENT, ASH.SQL_ID)) A,(SELECT INST_ID, EVENT, CNTFROM (SELECT INST_ID,rank() over(partition by INST_ID order by cnt desc) rk,EVENT,CNTFROM (SELECT ASH.INST_ID, ASH.EVENT, COUNT(*) CNTFROM GV$ACTIVE_SESSION_HISTORY ASHwhere to_char(ash.SAMPLE_TIME,'YYYY-MM-DD HH24:MI:SS') >'2024-06-20 14:00:00'AND to_char(ash.SAMPLE_TIME,'YYYY-MM-DD HH24:MI:SS') <'2024-06-20 16:00:00'AND EVENT IS NOT NULLGROUP BY ASH.INST_ID, ASH.EVENT))WHERE RK <= 3) BWHERE A.INST_ID = B.INST_IDAND A.EVENT = B.EVENTAND A.SQL_RK <= 5ORDER BY INST_ID, EVENT_CNT DESC, SQL_CNT DESC, SQL_RK;--查看过去7天sql执行的hash_plan_id和资源消耗统计变化
select sql_id,endtime,plan_hash_value,nvl2(exed, exed, 0) exec_avg_times_ms,nvl2(ems, ems, 0) exec_once_time_ms,nvl2(cms, cms, 0) "avg_CCWAIT(ms)",nvl2(ams, ams, 0) "avg_APWAIT(ms)",nvl2(clms, clms, 0) "avg_CMWAIT(ms)",nvl2(ioms, ioms, 0) "AVG_IOWAIT(ms)",nvl2(ctms, ctms, 0) "AVG_CPU_WAIT(ms)",nvl2(bfgets, bfgets, 0) "AVG_buffer gets",nvl2(drd, drd, 0) "avg_disk reads",nvl2(sd, sd, 0) "avg_sort",nvl2(fet, fet, 0) "avg_fetch",nvl2(rpd, rpd, 0) "avg_rows process",snap_idfrom (select a.sql_Id,to_char(b.end_interval_time, 'yyyymmdd hh24:mi:ss') endtime,a.executions_delta exed,a.plan_hash_value,round(decode(a.executions_delta,0,0,a.elapsed_time_delta / a.executions_delta) / 1000,2) ems,round(decode(a.executions_delta,0,0,a.ccwait_delta / a.executions_delta) / 1000,2) cms,round(decode(a.executions_delta,0,0,a.apwait_delta / a.executions_delta) / 1000,2) ams,round(decode(a.executions_delta,0,0,a.clwait_delta / a.executions_delta) / 1000,2) clms,round(decode(a.executions_delta,0,0,a.iowait_delta / a.executions_delta) / 1000,2) ioms,round(decode(a.executions_delta,0,0,a.cpu_time_delta / a.executions_delta) / 1000,2) ctms,round(decode(a.executions_delta,0,0,a.buffer_gets_delta / a.executions_delta),2) bfgets,round(decode(a.executions_delta,0,0,a.disk_reads_delta / a.executions_delta),2) drd,round(decode(a.executions_delta,0,0,a.sorts_delta / a.executions_delta),2) sd,round(decode(a.executions_delta,0,0,a.fetches_delta / a.executions_delta),2) fet,round(decode(a.executions_delta,0,0,a.rows_processed_delta / a.executions_delta),4) rpd,b.snap_idfrom dba_hist_sqlstat a, dba_hist_snapshot bwhere sql_id = 'xxxxxxxxx'and a.snap_id = b.snap_idand a.instance_number = b.instance_number--and b.instance_number=1and a.executions_delta <> 0and b.end_interval_time > sysdate - 7)order by snap_id

相关文章:

oracle 等待事件

1.db file scattered read 含义&#xff1a;当一个SQL语句需要从数据文件中读取多块非连续的数据块时&#xff0c;就会发生db file scattered read等待事件。这意味着数据分散在不同的位置&#xff0c;数据库需要进行多次I/O操作来收集所需的信息。场景&#xff1a;这种事件常…...

Vue 的 axios二次封装

&#xff08;以下的接口地址链接换成自己的写&#xff01;&#xff01;&#xff01;&#xff09; 首先在项目中src的目录下创建一个api的文件夹&#xff0c;在api的文件下在穿件两个文件用于二次封装 别忘了先安装axios&#xff1a;&#xff08;在根目录下安装axios&#xff0…...

实验操作步骤:使用Tripwire进行文件完整性监控

摘要 在网络安全领域&#xff0c;文件完整性监控是确保系统安全的关键措施之一。Tripwire作为一个业界领先的文件完整性监控工具&#xff0c;能够帮助系统管理员检测未授权的文件更改。本文将详细介绍如何安装、配置并使用Tripwire进行文件完整性监控的实验操作步骤。 1. Tri…...

使用达梦DMHS平滑迁移Oracle数据到DM8

一、迁移前准备 1.环境描述 服务 IP 架构 Oracle 192.168.10.91/92 RAC、主库 Oracle 192.168.10.98 DG备库 达梦 192.168.10.192/192.168.10.193 主备 DMHS 192.168.10.193&#xff08;DM端&#xff09; 192.168.10.98&#xff08;Oracle端&#xff09; DTS …...

Java面试题:讨论事务的ACID属性,并解释在Java中如何管理事务

事务是数据库管理系统中的一组操作&#xff0c;这些操作要么全部成功&#xff0c;要么全部失败&#xff0c;事务的ACID属性确保了数据库系统的可靠性和一致性。ACID是指&#xff1a; Atomicity&#xff08;原子性&#xff09;&#xff1a;事务中的所有操作要么全部完成&#xf…...

第 5 章理解 ScrollView 并构建 Carousel UI

通过上一章的学习,我相信你现在应该明白如何使用堆栈构建复杂的 UI。当然,在你掌握 SwiftUI 之前,你还需要大量的练习。因此,在深入研究 ScrollView 以使视图可滚动之前,让我们先以一个挑战开始本章。你的任务是创建一个类似于图 1 所示的卡片视图。 …...

MySQL锁、加锁机制(超详细)—— 锁分类、全局锁、共享锁、排他锁;表锁、元数据锁、意向锁;行锁、间隙锁、临键锁;乐观锁、悲观锁

文章目录 一、概述1.1 MySQL锁的由来1.2 锁定义1.3 锁分类 二、共享锁与排他锁2.1 共享锁&#xff08;S锁&#xff09;2.2 排他锁&#xff08;X锁&#xff09;2.3 MySQL锁的释放 三、全局锁3.1 介绍3.2 语法3.3 特点 四、表级锁4.1 介绍4.2 表锁4.3 元数据锁&#xff08;Meta D…...

如何在Java中实现文件上传和下载?

如何在Java中实现文件上传和下载&#xff1f; 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代Web应用程序中&#xff0c;文件上传和下载是常见的功能需求…...

SpringBoot使用滑动窗口限流防止用户重复提交(自定义注解实现)

在你的项目中&#xff0c;有没有遇到用户重复提交的场景&#xff0c;即当用户因为网络延迟等情况把已经提交过一次的东西再次进行了提价&#xff0c;本篇文章将向各位介绍使用滑动窗口限流的方式来防止用户重复提交&#xff0c;并通过我们的自定义注解来进行封装功能。 首先&a…...

ravynOS 0.5.0 发布 - 基于 FreeBSD 的 macOS 兼容开源操作系统

ravynOS 0.5.0 发布 - 基于 FreeBSD 的 macOS 兼容开源操作系统 ravynOS - 一个旨在提供 macOS 的精致性和 FreeBSD 的自由度的操作系统 请访问原文链接&#xff1a;https://sysin.org/blog/ravynos/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页…...

韩国面临的本地化挑战

西方文化&#xff0c;尤其是美国电影、音乐和游戏&#xff0c;对韩国也产生了同样大的影响。众所周知&#xff0c;这个国家与外国产品的关系更加开放。然而&#xff0c;游戏在这里仍然受到审查&#xff0c;所以最好避免与朝鲜、日本等有关的分裂性政治主题。否则&#xff0c;你…...

Linux内存从0到1学习笔记(8.17 SMMU Fault调试方法)

写在前面 通过前面的介绍,我们知道了SMMU实际上是一个针对外设的MMU。它作为一个硬件IP被设备执行DMA操作时使用。 再来简单回顾下SMMU的工作流程: 外设 ---> DMA操作 ---> SMMU ---> Memory 也就是说,通常情况下驱动程序会先分配DMA Buffer ---> 然后执行S…...

讲座学习截图——《CAD/CAE/CAM几何引擎-软件概述》(一)

目录 引出CAD/CAE/CAM几何引擎-软件概述 郝建兵CADCAECAM 几何模型内核ACIS 两个老大之一Open CascadeParasolid 两个老大之一Autodesk的内核 总结其他自定义信号和槽1.自定义信号2.自定义槽3.建立连接4.进行触发 自定义信号重载带参数的按钮触发信号触发信号拓展 lambda表达式…...

鸿蒙开发系统基础能力:【@ohos.hichecker (检测模式)】

检测模式 HiChecker可以作为应用开发阶段使用的检测工具&#xff0c;用于检测代码运行过程中部分易忽略的问题&#xff0c;如应用线程出现耗时调用、应用进程中Ability资源泄露等问题。开发者可以通过日志记录或进程crash等形式查看具体问题并进行修改&#xff0c;提升应用的使…...

WordPress CDN是什么?CDN有什么作用?

您想让您的网站加载速度更快吗&#xff1f; 网站所有者希望网站加载速度快&#xff0c;内容丰富&#xff0c;功能强大&#xff0c;吸引用户。然而&#xff0c;添加这些功能可能会降低网站速度&#xff0c;难以快速向全球用户提供内容。 这就是为什么许多WordPress网站使用 CDN…...

【containerd】Containerd高阶命令行工具nerdctl

前言 对于习惯了使用docker cli的用户来说&#xff0c;containerd的命令行工具ctr使用起来不是很顺手&#xff0c;此时别慌&#xff0c;还有另外一个命令行工具项目nerdctl可供我们选择。 nerdctl是一个与docker cli风格兼容的containerd的cli工具。 nerdctl已经作为子项目加入…...

Spring+SpringMVC+MyBatis整合

目录 1.SSM介绍1.1 什么是SSM&#xff1f;1.2 SSM框架1.2.1 Spring1.2.2 SpringMVC1.2.3 MyBatis 2.SSM框架整合2.1 建库建表2.2 创建工程2.3 pom.xml2.4 log4j.properties2.5 db.properties2.6 applicationContext-dao.xml2.7.applicationContext-tx.xml2.8 applicationContex…...

springboot+vue+mybatis穷游管理系统+PPT+论文+讲解+售后

随着现在网络的快速发展&#xff0c;网上管理系统也逐渐快速发展起来&#xff0c;网上管理模式很快融入到了许多企业的之中&#xff0c;随之就产生了“基于vue的穷游管理系统”&#xff0c;这样就让基于vue的穷游管理系统更加方便简单。 对于本基于vue的穷游管理系统的设计来说…...

ClickHouse备份方案

ClickHouse备份方案主要包括以下几种方法&#xff1a; 一、使用clickhouse-backup工具&#xff1a; &#xff08;参考地址&#xff1a;https://blog.csdn.net/qq_43510111/article/details/136570850&#xff09; **安装与配置&#xff1a;**首先从GitHub获取clickhouse-bac…...

windows启用和禁用内存压缩

windows内存压缩 Windows操作系统的内存压缩是一种通过压缩和解压缩内存页面来减少内存使用量的技术。当系统的内存使用达到一定阈值时&#xff0c;Windows会将不常用的内存页面压缩为一个稳定的压缩文件&#xff0c;以释放更多的内存空间。 内存压缩的主要目的是减少页面交换…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...