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

ORACLE RAC环境使用ASM机制零宕机时间更换存储的实践

ORACLE RAC使用存储,随时系统的发展,磁盘空间以及存储的老化、更换是一个典型的动作;基于ASM数据自动均衡分配到各个磁盘LUN的特性,可以使用此方式进行在线的迁移,ORACLE MOS上有一个文档:中文版: 零宕机时间迁移 ASM 磁盘组到另一个 SAN/磁盘阵列/DAS 的准确步骤 (文档 ID 1946664.1);对此有描述,如下是近期一个真实的客户ORACLE RAC 主机不换、存储更换迁移案例:

1、操作计划步骤

序号

实施项目

实施内容

时间

是否中断业务

1

服务器添加共享存储

  1. 存储上划分LUN,并映射到两台服务

已完成

2

节点2关机

HIS数据库集群2节点关闭数据库,关闭主机轮流重启

21:00-21:10

3

节点1关机

HIS数据库集群1节点关闭数据库,关闭主机轮流重启

21:10-21:20

4

配置ASM磁盘

配更改UDEV配置文件,使得新存储的asm disk对ASM实例可识别

21:20-21:40

5

添加asm磁盘

  1. 往3个磁盘组里添加新创建的ASM磁盘,并指定REBALANCE
  2. 观察同步状态,同步完成后方可进行下一步

21:40-22:40

6

删除旧的ASM磁盘

  1. 删除旧的ASM的磁盘组,并指定REBALANCE
  2. 观察删除状态确认删除完成后方可进行下一步

22:40-00:40

7

验证数据库

1、验证数据库正常

00:40-01:00

2、操作过程:

2.1.系统添加磁盘
新添加:8块1T的data盘 1块500G的arch盘 3块10g的ocr盘
原磁盘路径及权限
[root@hisdb1 ~]# ll /dev/mapper/hw*
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwarch01 -> ../dm-13
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwdata01 -> ../dm-11
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwdata02 -> ../dm-12
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwdata03 -> ../dm-17
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwdata04 -> ../dm-15
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwdata05 -> ../dm-18
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwdata06 -> ../dm-20
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwdata07 -> ../dm-14
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwdata08 -> ../dm-16
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwocr01 -> ../dm-19
lrwxrwxrwx 1 root root 8 Apr 17 21:43 /dev/mapper/hwocr02 -> ../dm-10
lrwxrwxrwx 1 root root 7 Apr 17 21:43 /dev/mapper/hwocr03 -> ../dm-9


在存储上划分LUN,并映射给数据库服务器,关闭HIS数据库集群1节点,并更改磁盘权限,待数据库节点1开机并数据库正常运行后,关闭HIS数据库集群2节点,并更改磁盘权限。
1.his一二节点分别在root下操作:
vi /etc/udev/rules.d/99-oracle-asmdevices.rules
ENV{DM_NAME}=="hwarch01", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwdata01", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwdata02", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwdata03", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwdata04", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwdata05", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwdata06", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwdata07", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwdata08", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwocr01", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwocr02", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
ENV{DM_NAME}=="hwocr03", OWNER:="grid", GROUP:="asmadmin", MODE:="660"

一节点root用户执行:
/u01/11.2.0/grid/bin/crsctl stop crs 

root下执行:
LINUX6.9重新加载UDEV规则
###start_uev
udevadm control -R
udevadm trigger
shutdown -f  
主机启动后检查crs 
/u01/11.2.0/grid/bin/crsctl stat res -t  数据库两个节点均为open后
ll /dev/mapper/hw*
ll /dev/dm-*
multipath -ll
二节点root用户执行
/u01/11.2.0/grid/bin/crsctl stop crs -f 

root下执行:
LINUX6.9重新加载UDEV规则
##start_uev
udevadm control -R
udevadm trigger

shutdown -f 
主机启动后检查crs 
crsctl status res -t 数据库两个节点均为open后
并在两节点检查磁盘挂载情况
ll /dev/mapper/hw*
ll /dev/dm-*
multipath -ll

在数据库服务器上设置磁盘的权限,/etc/udev/rules.d/99-oracle-asmdevices.rules中添加如下内容(注意:其中mpath-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx改为实际新加的lun的uuid)
ENV{DM_NAME}=="hwarch01", OWNER:="grid", GROUP:="asmadmin", MODE:="660"
重新加载UDEV规则
udevadm control -R
udevadm trigger

2.2.当前ASM磁盘使用情况
目前的存储分配及 ASM 磁盘组使用情况如下:

2.3.新存储ASM磁盘划分需求


2.4.ASM数据磁盘组中存储盘更换步骤
2.4.1.加盘
图形化操作:
ASMCA 图形中选择相应的磁盘组,选择要加入的 ASM 磁盘,点击 OK 即可:
                                                                

添加ASM磁盘后的状态:
SQL> set line 150
SQL> col ERROR_CODE for a5
SQL> select * from v$asm_operation;
GROUP_NUMBER OPERA STAT      POWER     ACTUAL      SOFAR   EST_WORK   EST_RATE EST_MINUTES ERROR_CODE
------------ ----- ---- ---------- ---------- ---------- ---------- ---------- ----------- --------------------------------------------
           1 REBAL RUN           1          1      16707      28940       4143           2
           2 REBAL WAIT          1
           3 REBAL WAIT          1


因为asm使用图形化添加磁盘,默认power 1,默认的速率可能要很久,查看服务器现在io压力不大,调整power大小:
[root@hisdb1 ~]# iostat -xtm 2 10
调整power
SQL>ALTER DISKGROUP DATA REBALANCE POWER 5;

REBALANCE完成后,查询v$asm_operation记录将消失:
SQL> select * from v$asm_operation;
no rows selected

命令行操作:
命令方式:
SQL> alter diskgroup SYSDG add disk '/dev/mapper/hwocr01','/dev/mapper/hwocr02'……   rebalance power 10;
一次添加多个盘

查询ASM磁盘组状态
注意:REBALANCE过程根据数据量的大小不同完成时间也不一,REBALANCE过程可以通过v$asm_operation视图来查看:
SQL> set line 150
SQL> col ERROR_CODE for a5
SQL> select * from v$asm_operation;

GROUP_NUMBER OPERA STAT      POWER     ACTUAL      SOFAR   EST_WORK   EST_RATE EST_MINUTES ERROR_CODE
------------ ----- ---- ---------- ---------- ---------- ---------- ---------- ----------- --------------------------------------------
           1 REBAL RUN           1          1      16707      28940       4143           2
           2 REBAL WAIT          1
           3 REBAL WAIT          1
           
调整power
ALTER DISKGROUP DATA REBALANCE POWER 5;
REBALANCE完成后,查询v$asm_operation记录将消失:
SQL> select * from v$asm_operation;
no rows selected

添加ASM磁盘后的状态:
原磁盘组:
SQL> select NAME, ALLOCATION_UNIT_SIZE, STATE, TOTAL_MB, FREE_MB USABLE_FILE_MB from gv$asm_diskgroup;
NAME                           ALLOCATION_UNIT_SIZE STATE         TOTAL_MB USABLE_FILE_MB
------------------------------ -------------------- ----------- ---------- --------------
ARCH                                        1048576 MOUNTED         512000         393405
DATA                                        1048576 MOUNTED        2097152         185327
SYSDG                                       1048576 MOUNTED          30720          29794
ARCH                                        1048576 MOUNTED         512000         393405
DATA                                        1048576 MOUNTED        2097152         185327
SYSDG                                       1048576 MOUNTED          30720          29794
6 rows selected.
新磁盘组:
SQL> select NAME, ALLOCATION_UNIT_SIZE, STATE, TOTAL_MB, FREE_MB USABLE_FILE_MB from gv$asm_diskgroup;
SQL> select NAME, ALLOCATION_UNIT_SIZE, STATE, TOTAL_MB, FREE_MB USABLE_FILE_MB from gv$asm_diskgroup;
NAME                           ALLOCATION_UNIT_SIZE STATE         TOTAL_MB USABLE_FILE_MB
------------------------------ -------------------- ----------- ---------- --------------
ARCH                                        1048576 MOUNTED        1024000         965989
DATA                                        1048576 MOUNTED       10485760        8572567
SYSDG                                       1048576 MOUNTED          61440          60508
ARCH                                        1048576 MOUNTED        1024000         965989
DATA                                        1048576 MOUNTED       10485760        8572564
SYSDG                                       1048576 MOUNTED          61440          60508
6 rows selected.
2.4.2.踢盘
SQL> select a.name diskname,a.path,b.name diskgroupname,a.failgroup from 
v$asm_disk a, v$asm_diskgroup b where a.group_number=b.group_number;
从现有 ASM 磁盘组中移除 ASM 磁盘 
原磁盘组
su - grid
sqlplus / as sysasm
col diskname for a15
col path for a40
set linesize 200
select a.name diskname,a.path,b.name diskgroupname,a.failgroup from 
v$asm_disk a, v$asm_diskgroup b where a.group_number=b.group_number;
DISKNAME        PATH                                     DISKGROUPNAME                  FAILGROUP
--------------- ---------------------------------------- ------------------------------ ------------------------------
DATA_0001       /dev/mapper/data2                        DATA                           DATA_0001
ARCH_0000       /dev/mapper/arch                         ARCH                           ARCH_0000
DATA_0000       /dev/mapper/data1                        DATA                           DATA_0000
SYSDG_0002      /dev/mapper/ocr3                         SYSDG                          SYSDG_0002
SYSDG_0001      /dev/mapper/ocr2                         SYSDG                          SYSDG_0001
SYSDG_0000      /dev/mapper/ocr1                         SYSDG                          SYSDG_0000
6 rows selected.
新磁盘组
su - grid
sqlplus / as sysasm
col diskname for a15
col path for a40
set linesize 200
select a.name diskname,a.path,b.name diskgroupname,a.failgroup from 
v$asm_disk a, v$asm_diskgroup b where a.group_number=b.group_number;
ISKNAME        PATH                                     DISKGROUPNAME                  FAILGROUP
--------------- ---------------------------------------- ------------------------------ ------------------------------
DATA_0007       /dev/mapper/hwdata06                     DATA                           DATA_0007
DATA_0006       /dev/mapper/hwdata05                     DATA                           DATA_0006
SYSDG_0003      /dev/mapper/hwocr01                      SYSDG                          SYSDG_0003
DATA_0004       /dev/mapper/hwdata03                     DATA                           DATA_0004
DATA_0009       /dev/mapper/hwdata08                     DATA                           DATA_0009
DATA_0005       /dev/mapper/hwdata04                     DATA                           DATA_0005
DATA_0008       /dev/mapper/hwdata07                     DATA                           DATA_0008
ARCH_0001       /dev/mapper/hwarch01                     ARCH                           ARCH_0001
ARCH_0000       /dev/mapper/arch                         ARCH                           ARCH_0000
DATA_0003       /dev/mapper/hwdata02                     DATA                           DATA_0003
DATA_0002       /dev/mapper/hwdata01                     DATA                           DATA_0002
SYSDG_0004      /dev/mapper/hwocr02                      SYSDG                          SYSDG_0004
SYSDG_0005      /dev/mapper/hwocr03                      SYSDG                          SYSDG_0005
ARCH_0000       /dev/mapper/arch                         ARCH                           ARCH_0000
SYSDG_0001      /dev/mapper/ocr2                         SYSDG                          SYSDG_0001
DATA_0001       /dev/mapper/data2                        DATA                           DATA_0001
DATA_0000       /dev/mapper/data1                        DATA                           DATA_0000
SYSDG_0002      /dev/mapper/ocr3                         SYSDG                          SYSDG_0002
SYSDG_0000      /dev/mapper/ocr1                         SYSDG                          SYSDG_0000
-------------------------------------------------------------------------------------------------------------------
从现有 ASM 磁盘组中移除 ASM 磁盘 
alter diskgroup TESTDG drop disk DATADG_0010 [rebalance power n];
磁盘组:OCR
SQL>alter diskgroup SYSDG drop disk SYSDG_0000  rebalance power 10; 
SQL>alter diskgroup SYSDG drop disk SYSDG_0001  rebalance power 10;
SQL>alter diskgroup SYSDG drop disk SYSDG_0002  rebalance power 10;
磁盘组:DATA
SQL> alter diskgroup DATA drop disk DATA_0000  rebalance power 10;
SQL> alter diskgroup DATA drop disk DATA_0001  rebalance power 10;
磁盘组:ARCH
SQL> alter diskgroup ARCH drop disk ARCH_0000  rebalance power 10;
查询ASM磁盘状态
首先,完成旧的ASM磁盘删除后,观察rebalance情况:
SQL> select * from v$asm_operation;

SQL> select * from v$asm_operation;

no rows selected

查询没有记录,说明rebalance完成,确认无误。

4.3.2.查询删除ASM磁盘后的状态
SQL> select NAME, ALLOCATION_UNIT_SIZE, STATE, TOTAL_MB, FREE_MB USABLE_FILE_MB from gv$asm_diskgroup;
SQL> select failgroup, name from v$asm_disk where group_number=(select group_number from v$asm_diskgroup where name = 'SYSDG');                       
SQL> select failgroup, name from v$asm_disk where group_number=(select group_number from v$asm_diskgroup where name = 'DATA');
SQL> select failgroup, name from v$asm_disk where group_number=(select group_number from v$asm_diskgroup where name = 'ARCH');
至此,完成存储的迁移,新的磁盘已替换旧的磁盘。


SQL> select failgroup, name from v$asm_disk where group_number=(select group_number from v$asm_diskgroup where name = 'SYSDG');

FAILGROUP                      NAME
------------------------------ ------------------------------
SYSDG_0004                     SYSDG_0004
SYSDG_0005                     SYSDG_0005
SYSDG_0003                     SYSDG_0003

SQL> select failgroup, name from v$asm_disk where group_number=(select group_number from v$asm_diskgroup where name = 'DATA');

FAILGROUP                      NAME
------------------------------ ------------------------------
DATA_0007                      DATA_0007
DATA_0005                      DATA_0005
DATA_0004                      DATA_0004
DATA_0009                      DATA_0009
DATA_0008                      DATA_0008
DATA_0006                      DATA_0006
DATA_0002                      DATA_0002
DATA_0003                      DATA_0003

8 rows selected.

SQL> select failgroup, name from v$asm_disk where group_number=(select group_number from v$asm_diskgroup where name = 'ARCH');

FAILGROUP                      NAME
------------------------------ ------------------------------
ARCH_0001                      ARCH_0001

ASMCMD> lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512   4096  1048576    512000   470466                0          470466              0             N  ARCH/
MOUNTED  EXTERN  N         512   4096  1048576   8388608  6475437                0         6475437              0             N  DATA/
MOUNTED  NORMAL  N         512   4096  1048576     30720    29794            10240            9777              0             Y  SYSDG/
ASMCMD> lsdsk
Path
/dev/mapper/hwarch01
/dev/mapper/hwdata01
/dev/mapper/hwdata02
/dev/mapper/hwdata03
/dev/mapper/hwdata04
/dev/mapper/hwdata05
/dev/mapper/hwdata06
/dev/mapper/hwdata07
/dev/mapper/hwdata08
/dev/mapper/hwocr01
/dev/mapper/hwocr02
/dev/mapper/hwocr03

相关文章:

ORACLE RAC环境使用ASM机制零宕机时间更换存储的实践

ORACLE RAC使用存储,随时系统的发展,磁盘空间以及存储的老化、更换是一个典型的动作;基于ASM数据自动均衡分配到各个磁盘LUN的特性,可以使用此方式进行在线的迁移,ORACLE MOS上有一个文档:中文版&#xff1…...

03_JavaScript

文章目录 一、概述1.1、JavaScript简介1.2、JavaScript组成部分1.3、为什么要学习JavaScript1.4、学习的目的1.5、JavaScript与Java的关系 二、使用位置及运行说明2.1、使用位置2.2、如何运行 三、JavaScript基础语法3.1、变量3.2、运算符3.3、控制流程3.3.1、分支结构3.3.2、循…...

Kafka消息可视化工具Offset Explorer

参考文献 Kafka消息可视化工具:Offset Explorer(原名kafka Tool)的使用方法【转】 - paul_hch - 博客园 https://zhuanlan.zhihu.com/p/722232008 正文 官网下载地址为Offset Explorer 双击offsetexplorer_64bit.exe 安装 双击 使用kafka…...

AXP2101入门

目录 核心功能与特性封装与配置安全与可靠性 AXP2101 是一款由全志公司开发的单电池 NVDC 电源管理集成电路(PMIC),专为锂离子/锂聚合物单电池应用设计,适用于需要多通道电源输出的设备。 核心功能与特性 1.输入与充电管理 输入…...

Bytebase 取得 SOC 2 Type 1 认证

我们很高兴地宣布,Bytebase 已成功取得 SOC 2 Type 1 认证,印证了我们在数据库 DevSecOps 平台始终以最高标准保障安全性、可用性和保密性的承诺。 为了实现并维持 SOC 2 合规性,我们与 Vanta 合作进行自动安全监控和合规性验证。审计由独立…...

反爬系列 IP 限制与频率封禁应对指南

在数据采集领域,IP 限制与频率封禁是反爬机制中最常见的防御手段。随着网站安全策略的升级,单靠传统爬虫技术已难以应对高强度的检测。本文将从反爬机制解析、实战应对策略两个维度,系统讲解如何突破 IP 限制与频率封禁。 一、反爬机制解析 …...

Java的进阶学习

注解 Java注解(Annotation)又称为Java标注,是JDK5.0引入的一种注释机制,可以用在类、方法、变量、参数成员上,在编译期间,会被编译到字节码文件中,运行时通过反射机制获得注解内容进行解析。 内置注解 Java语言已经定…...

从零开始学习SLAM|技术路线

概念 视觉SLAM(Simultaneous Localization and Mapping)系统中,整个过程通常分为 前端 和 后端 两个主要部分。前端处理的是从传感器数据(如相机图像、激光雷达等)中提取和处理信息,用于实时定位和建图&am…...

vue3:十一、主页面布局(修改顶部导航栏样式-右侧:用户信息+退出登录+全屏显示)

一、效果 完成效果,增加顶部导航栏,右侧用户信息(其中个人中心需要后续进行页面开发,这里只写了退出登录功能),以及全屏功能 二、搭建并引入右侧组件 将右侧内容封装到单独的组件,直接引入(像左侧导航条等内容也是可以做成这种形式) 1、新建右侧组件的页面 在layout中…...

车载客流记录仪简介

一、产品概述 车载客流记录仪技术是采用智能视频分析算法,通过人体形态特征(头部和肩部)及上下车的运动规律研判,在设定区域内分析出上下车人数数量,实现相关人数数据的统计和记录。能够为公共交通企业、公共交通管理…...

2025新版懒人精灵零基础及各板块核心系统视频教程-全分辨率免ROOT自动化开发

2025新版懒人精灵零基础安装调试lua基础UI设计交互常用方法封装项目实战项目打包安装板块-视频教程(初学者必修课) 1.懒人精灵核心API基础和lua基础视频教程:https://www.bilibili.com/video/BV1Vm9kYJEfM/ 其它板块教程(包含:对接AI、实战、插件、UI、…...

从 Java 到 Kotlin:在现有项目中迁移的最佳实践!

全文目录: 开篇语 1. 为什么选择 Kotlin?1.1 Kotlin 与 Java 的兼容性1.2 Kotlin 的优势1.3 Kotlin 的挑战 2. Kotlin 迁移最佳实践2.1 渐进式迁移2.1.1 步骤一:将 Kotlin 集成到现有的构建工具中2.1.2 步骤二:逐步迁移2.1.3 步骤…...

矩阵运营的限流问题本质上是平台与创作者之间的流量博弈

矩阵运营的限流问题本质上是平台与创作者之间的流量博弈,要系统性解决这一问题,需从技术规避、内容优化、运营策略三个维度构建防御体系。以下结合平台算法逻辑与实战案例,深度解析限流成因及破解之道: 一、技术层:突…...

一种Spark程序运行指标的采集与任务诊断实现方式

一种Spark程序运行指标的采集与任务诊断实现方式 编写时间:2023年8月2日 第一次校准时间:2023年8月2日 文章目录 一种Spark程序运行指标的采集与任务诊断实现方式数据链路采集器的类图CustomSparkListener采集的指标task相关stage相关Job相关Executors相关诊断诊断分类调度阶…...

Gazebo 仿真环境系列教程(一):环境安装与基础使用

文章目录 一、版本说明与技术背景1.1 Gazebo 版本分支1.2 版本选择建议 二、系统环境准备2.1 硬件要求2.2 软件依赖 三、Gazebo Garden 安装流程3.1 添加官方软件源3.2 执行安装命令3.3 环境验证 四、Gazebo Classic 安装方法4.1 添加软件仓库4.2 安装核心组件4.3 验证安装 五、…...

Nginx 中间件

Nginx(发音为 "engine-x")是一款开源的高性能 HTTP 服务器和反向代理服务器,最初由 Igor Sysoev 开发。 它以其高性能、稳定性、丰富的功能集和低资源消耗而闻名,广泛应用于全球的 Web 服务架构中。 作为中间件&#…...

记录学习的第三十一天

今天只做了一道每日一题。 说实话,根本不会做呀,该怎么办? 以下是我看了题解之后的思路(适合新手): 1.首先肯定是要求出整个数组的不同数字有多少个的使用set来操作 2.右指针开始进入窗口,把元素放进哈希…...

Framework.jar里的类无法通过Class.forName反射某个类的问题排查

1,背景 我们想要在system_server进程里扩展一些我们自己的功能。 考虑到解耦和编译依赖的问题,我们用PRODUCT_SYSTEM_SERVER_JARS预置我们的类,然后用反射jar里面的类的方式来实现代码引用。 2,遇到的问题 在SystemServer.jav…...

架构-信息安全技术基础知识

一、信息安全基础 1. 信息安全的5个基本要素(重点) 机密性:确保信息不泄露给未授权的人或程序。 ▶ 举例:银行用户的账户密码必须保密,防止黑客窃取。完整性:保证信息不被非法修改,保持准确和…...

项目班——0419——chrono时间库

1、写日志需要时间库 C11时间库chrono源自于boost 1.时间间隔 duration 2.时间点 timepoint 3.时钟 clock 系统时钟system_clock,稳定时钟steady_clock,高精度时钟high_resolution_clock 例子 1、休眠100毫秒 2、输出当前时间 获取当前时间戳 s…...

Unity后处理全解析:从入门到优化

在游戏开发的世界里,Unity作为一款强大的游戏引擎,为开发者们提供了丰富的功能和工具。其中,后处理(Post-Processing)技术是提升游戏画面质量和视觉效果的重要手段之一。今天,我们就来深入探讨一下Unity后处理的相关内容,包括基本概念、使用说明、常见效果、优化技巧以及…...

得物业务参数配置中心架构综述

一、背景 现状与痛点 在目前互联网飞速发展的今天,企业对用人的要求越来越高,尤其是后端的开发同学大部分精力都要投入在对复杂需求的处理,以及代码架构,稳定性的工作中,在对比下,简单且重复的CRUD就显得…...

针对密码学的 EM 侧信道攻击

基于电磁的侧信道攻击是非侵入式的,这意味着攻击者无需物理接触设备即可窃取信息。我们将了解这些电磁侧信道攻击的工作原理。 我们之前介绍了侧信道攻击的概念:它们是什么,以及为什么它们会成为重大的硬件安全威胁。在众多形式的侧信道攻击中,最强大的一种是电磁 (EM) 攻…...

el-setup- 修改样式(vue3)

一 第一步 <template><el-steps :active"activeStep" align-center><el-stepv-for"item in stepData":key"item.value":class"{ currentStep: activeStep item.value }"><template #icon><div class"…...

CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.8 排序算法

文章目录 1. 排序算法1.1 冒泡排序&#xff08;Bubble sort&#xff09;1.2 归并排序&#xff08;Merge Sort&#xff09;1.3 快速排序&#xff08;Quick Sort&#xff09;1.4 堆排序&#xff08;Heap Sort&#xff09; 2. 在面向对象编程中终身学习2.1 记录和反思学习过程2.2 …...

【低配置电脑预训练minimind的实践】

低配置电脑预训练minimind的实践 概要 minimind是一个轻量级的LLM大语言模型&#xff0c;项目的初衷是拉低LLM的学习门槛&#xff0c;让每个人都能从理解每一行代码开始&#xff0c; 从零开始亲手训练一个极小的语言模型。对于很多初学者而言&#xff0c;电脑配置仅能够满足日…...

flutter 小知识

FractionallySizedBox组件 ‌FractionallySizedBox‌是Flutter中的一个特殊布局小部件&#xff0c;它允许子组件的尺寸基于父组件的尺寸来计算。这意味着子组件的尺寸是父组件尺寸的一个比例&#xff0c;这使得布局在不同屏幕尺寸下保持一致性‌1。 ListWheelScrollView ‌Lis…...

高性能服务器配置经验指南3——安装服务器可能遇到的问题及解决方法

文章目录 1、重装系统后VScode远程连接失败问题2、XRDP连接黑屏问题1. 打开文件2. 添加配置3. 重启xrdp服务 在完成 服务器基本配置和 深度学习环境准备后&#xff0c;大家应该就可以正常使用服务器了&#xff0c;推荐使用VScode远程连接使用&#xff0c;比较稳定方便&#x…...

Vue实战(08)解决 Vue 项目中路径别名 `@` 在 IDE 中报错无法识别的问题

一、引言 ​ 在 Vue 项目开发过程中&#xff0c;路径别名是一个非常实用的特性&#xff0c;它能够帮助开发者简化文件引用路径&#xff0c;提高代码的可读性和可维护性。其中&#xff0c; 作为一个常见的路径别名&#xff0c;通常被用来指向项目的 src 目录。然而&#xff0c;…...

处理任务“无需等待”:集成RabbitMQ实现异步通信与系统解耦

在前几篇文章中&#xff0c;我们构建的Web应用遵循了一个常见的同步处理模式&#xff1a;用户发出HTTP请求 -> Controller接收 -> Service处理&#xff08;可能涉及数据库操作、调用其他内部方法&#xff09;-> Controller返回HTTP响应。这个流程简单直接&#xff0c;…...

ASP.NET Core 主机模型详解:Host、WebHost与WebApplication的对比与实践【代码之美】

&#x1f380;&#x1f380;&#x1f380;代码之美系列目录&#x1f380;&#x1f380;&#x1f380; 一、C# 命名规则规范 二、C# 代码约定规范 三、C# 参数类型约束 四、浅析 B/S 应用程序体系结构原则 五、浅析 C# Async 和 Await 六、浅析 ASP.NET Core SignalR 双工通信 …...

编译型语言、解释型语言与混合型语言:原理、区别与应用场景详解

编译型语言、解释型语言与混合型语言&#xff1a;原理、区别与应用场景详解 文章目录 编译型语言、解释型语言与混合型语言&#xff1a;原理、区别与应用场景详解引言一、编译型语言1.1 工作原理1.2 典型的编译型语言1.3 优点1.4 缺点 二、解释型语言2.1 工作原理2.2 典型的解释…...

AI工程pytorch小白TorchServe部署模型服务

注意&#xff1a;该博客仅是介绍整体流程和环境部署&#xff0c;不能直接拿来即用(避免公司代码外泄)请理解。并且当前流程是公司notebook运行&本机windows&#xff0c;后面可以使用docker 部署镜像到k8s&#xff0c;敬请期待~ 前提提要&#xff1a;工程要放弃采购的AI平台…...

Ubuntu 一站式部署 RabbitMQ 4 并“彻底”迁移数据目录的终极实践

1 安装前准备 sudo apt update -y sudo apt install -y curl gnupg apt-transport-https lsb-release jq若计划将数据放到新磁盘&#xff08;如 /dev/nvme0n1p1&#xff09;&#xff1a; sudo mkfs.xfs /dev/nvme0n1p1 sudo mkdir /data echo /dev/nvme0n1p1 /data xfs defau…...

华为手机怎么进行音频降噪?音频降噪技巧分享:提升听觉体验

在当今数字化时代&#xff0c;音频质量对于提升用户体验至关重要&#xff0c;无论是在通话、视频录制还是音频文件播放中&#xff0c;清晰的音频都能带来更佳的听觉享受。 而华为手机凭借其强大的音频处理技术&#xff0c;为用户提供了多种音频降噪功能&#xff0c;帮助用户在…...

拥抱健康生活,解锁养生之道

在生活节奏日益加快的当下&#xff0c;健康养生已成为人们关注的焦点。科学的养生方法&#xff0c;能帮助我们增强体质、预防疾病&#xff0c;以更饱满的精神状态拥抱生活。 合理饮食是养生的基石。《黄帝内经》中提到 “五谷为养&#xff0c;五果为助&#xff0c;五畜为益&…...

深入理解Java阻塞队列:原理、使用场景及代码实战

&#x1f680; 文章提示 你将在这篇文章中收获&#xff1a; 阻塞队列的核心特性&#xff1a;队列空/满时的阻塞机制 四种操作方式对比&#xff1a;抛异常、返回特殊值、永久阻塞、超时阻塞 SynchronousQueue的独特设计&#xff1a;同步队列的生产者-消费者强耦合 代码实战&a…...

vue3--手写手机屏组件

<!--* 手机预览* Author: Hanyang* Date: 2022-12-09 09:13:00* LastEditors: Hanyang* LastEditTime: 2023-01-12 15:37:00 --> <template><divclass"public-preview-mobile"ref"previewMobileRef":class"showMobile ? animation-sh…...

【Elasticsearch】入门篇

Elasticsearch 入门 前言 官方地址&#xff1a;Elastic — 搜索 AI 公司 | Elastic ES 下载地址&#xff1a;Past Releases of Elastic Stack Software | Elastic 文档&#xff1a;什么是 Elasticsearch&#xff1f;|Elasticsearch 指南 简介 Elasticsearch 是一个分布式、…...

Unity 使用 ADB 实时查看手机运行性能

Unity 使用 ADB 实时查看手机运行性能 前言操作步骤ADB工具下载ADB工具配置手机进入开发者模式并开启USB调试使用ADB连接手机Unity打包设置使用Profiler实时查看性能情况优化建议 常见问题 前言 通过 ADB&#xff08;Android Debug Bridge&#xff09;连接安卓设备&#xff0c…...

蓝桥杯 1. 四平方和

四平方和 原题目链接 题目描述 四平方和定理&#xff08;又称拉格朗日定理&#xff09;指出&#xff1a; 每个正整数都可以表示为 至多 4 个正整数的平方和。 如果将 0 包括进去&#xff0c;则每个正整数都可以恰好表示为 4 个非负整数的平方和。 例如&#xff1a; 5 0 …...

Nginx 配置参数全解版:Nginx 反向代理与负载均衡;Nginx 配置规范与 Header 透传实践指南;Nginx 配置参数详解

Nginx 配置参数全解版&#xff1a;Nginx 反向代理与负载均衡&#xff1b;Nginx 配置规范与 Header 透传实践指南&#xff1b;Nginx 配置参数详解 Nginx 反向代理与负载均衡配置&#xff0c;Header 透传到后端应用&#xff08;参数全解版&#xff09;一、Nginx 反向代理与负载均…...

数据分析之技术干货业务价值​​ powerquery 分组排序后取TOP

在电商中&#xff0c;我们要对货品进行分析&#xff0c;由于所有的销售数据都在一起&#xff0c;货品信息也在一起&#xff0c;两个表建立了关系之后&#xff0c;要看每个品类的TOP款有哪些&#xff0c;每个品类的TOP款是什么要怎么做呢&#xff1f; 下面是我做数据的思路&…...

windows中kafka4.0集群搭建

参考文献 Apache Kafka windows启动kafka4.0&#xff08;不再需要zookeeper&#xff09;_kafka压缩包-CSDN博客 Kafka 4.0 KRaft集群部署_kafka4.0集群部署-CSDN博客 正文 注意jdk需要17版本以上的 修改D:\software\kafka_2.13-4.0.0\node1\config\server.properties配置文…...

数据分析案例:医疗健康数据分析

目录 数据分析案例:医疗健康数据分析1. 项目背景2. 数据加载与预处理2.1 加载数据2.2 数据清洗3. 探索性数据分析(EDA)3.1 再入院率概览3.2 按年龄分组的再入院率3.3 住院时长与再入院4. 特征工程与可视化5. 模型构建与评估5.1 数据划分5.2 训练逻辑回归5.3 模型评估6. 业务…...

数据分析之 商品价格分层之添加价格带

在分析货品数据的时候&#xff0c;我们会对商品的价格进行分层汇总&#xff0c;也叫价格带&#xff0c;​​ 一、价格带的定义​​ ​​价格带&#xff08;Price Band&#xff09;​​&#xff1a;将商品按价格区间划分&#xff08;如0-50元、50-100元、100-200元等&#xff…...

跨浏览器音频录制:实现兼容的音频捕获与WAV格式生成

在现代Web开发中&#xff0c;音频录制功能越来越受到开发者的关注。无论是在线会议、语音识别还是简单的语音留言&#xff0c;音频录制都是一个重要的功能。然而&#xff0c;实现一个跨浏览器的音频录制功能并非易事&#xff0c;因为不同浏览器对音频录制API的支持存在差异。本…...

JavaScript 的“世界模型”:深入理解对象 (Objects)

引言&#xff1a;超越简单值&#xff0c;构建复杂实体 到目前为止&#xff0c;我们学习的变量大多存储的是单一的值&#xff0c;比如一个数字 (let age 30;​)、一个字符串 (let name "Alice";​) 或一个布尔值 (let isActive true;​)。这对于简单场景足够了&am…...

【国产化之路】VPX-3U :基于D2000 /FT2000的硬件架构到操作系统兼容

在国产化和高性能计算、嵌入式系统领域日益受到重视的今天&#xff0c;VPX3U架构以其标准化和模块化的特性广受关注。本文将从硬件架构、系统软件、接口拓展及典型应用等方面&#xff0c;深入剖析整体设计思路与工程实现&#xff0c;供友友们参考和讨论。 一、总体架构与设计目…...

深入探索RAG(检索增强生成)模型的优化技巧

&#x1f4cc; 友情提示&#xff1a; 本文内容由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;创作平台的gpt-4o-mini模型生成&#xff0c;旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证&#xff0c;建议读者通过官方文档或实践进一步确认其准…...