专业网站制作哪便宜网站个性化设计

张小明 2025/12/28 6:48:52
专业网站制作哪便宜,网站个性化设计,商品展示介绍网站源码,网站设计风格及特点Oracle数据库联机重做日志详解一、什么是联机重做日志#xff1f;1.1 基本概念联机重做日志#xff08;Online Redo Log#xff09;是Oracle数据库中用于记录所有数据变化的物理文件。它记录了数据库的所有修改操作#xff0c;确保数据的一致性和可恢复性。1.2 核心作用数据…Oracle数据库联机重做日志详解一、什么是联机重做日志1.1 基本概念联机重做日志Online Redo Log是Oracle数据库中用于记录所有数据变化的物理文件。它记录了数据库的所有修改操作确保数据的一致性和可恢复性。1.2 核心作用数据恢复在实例故障或介质故障时恢复数据数据一致性确保事务的ACID特性归档备份为数据库备份提供基础二、重做日志的结构组成2.1 日志组Redo Log Groups基本要求每个数据库至少需要2个重做日志组以支持循环写入默认配置创建数据库时默认创建3个日志组编号分别为1、2、3循环写入当当前组写满后LGWR进程自动切换到下一组形成循环覆盖机制-- 查看日志组信息 SELECT group#, sequence#, bytes, members, status, archived FROM v$log; -- 示例输出 -- GROUP# | SEQUENCE# | BYTES | MEMBERS | STATUS | ARCHIVED -- -------|-----------|---------|---------|---------|--------- -- 1 | 125 | 524288000 | 2 | CURRENT | NO -- 2 | 123 | 524288000 | 2 | INACTIVE| YES -- 3 | 124 | 524288000 | 2 | ACTIVE | NO 日志组操作下面也会讲放在一起方便查找 -- 添加新日志组每组2个成员各500MB ALTER DATABASE ADD LOGFILE GROUP 4 (/u01/oradata/redo04a.log, /u02/oradata/redo04b.log) SIZE 500M; -- 删除日志组 ALTER DATABASE DROP LOGFILE GROUP 4; -- 手动触发日志切换 ALTER SYSTEM SWITCH LOGFILE; -- 查看日志切换历史 SELECT sequence#, first_time, next_time, blocks FROM v$log_history ORDER BY sequence# DESC;2.2 日志成员Redo Log Members每个日志组包含一个或多个日志成员镜像提供冗余保护多路复用每组建议包含至少2个成员多路复用存储在不同磁盘上提高可靠性并行写入LGWR进程同时将相同内容写入组内所有成员确保成员间内容完全一致默认限制maxlogfiles默认16组maxlogmembers默认每组成员数不超过3个-- 查看日志成员信息 SELECT group#, member, status FROM v$logfile; -- 示例路径 -- /u01/app/oracle/oradata/ORCL/redo01.log -- /u02/app/oracle/oradata/ORCL/redo01_mirror.log 日志成员操作下面也会讲放在一起方便查找 -- 为组1添加新成员 ALTER DATABASE ADD LOGFILE MEMBER /u03/oradata/redo01c.log TO GROUP 1; -- 删除日志成员文件未删除 ALTER DATABASE DROP LOGFILE MEMBER /u03/oradata/redo01c.log; rm -f redo01c.log删除文件三、重做日志的工作流程3.1 循环写入机制日志组1 (CURRENT) → 日志组2 (NEXT) → 日志组3 → 回到日志组1 ↓ ↓ ↓ 写满 写满 写满 ↓ ↓ ↓ 归档(如启用) 归档(如启用) 归档(如启用)3.2 日志切换Log Switch-- 手动触发日志切换 ALTER SYSTEM SWITCH LOGFILE; -- 查看日志切换历史 SELECT sequence#, first_time, next_time, blocks FROM v$log_history ORDER BY sequence# DESC;四、重做日志的内容解析4.1 重做记录Redo Record组成┌─────────────────────────────────────────┐ │ 重做记录头 (Header) │ │ - 事务ID (XID) │ │ - SCN (系统变更号) │ │ - 时间戳 │ ├─────────────────────────────────────────┤ │ 变化向量1 (Change Vector 1) │ │ - 数据块地址 (DBA) │ │ - 修改前值 (Before Image) │ │ - 修改后值 (After Image) │ ├─────────────────────────────────────────┤ │ 变化向量2 (Change Vector 2) │ │ - 数据块地址 (DBA) │ │ - 修改前值 (Before Image) │ │ - 修改后值 (After Image) │ ├─────────────────────────────────────────┤ │ ... │ └─────────────────────────────────────────┘4.2 重做日志记录的内容类型数据变更INSERT、UPDATE、DELETE操作DDL操作CREATE、ALTER、DROP等数据字典变更表结构修改回滚段变更事务回滚信息检查点信息数据库一致性标记五、关键视图和诊断工具5.1 重要数据字典视图-- 1. V$LOG - 日志组状态 desc v$log; v$logfile SELECT group#, sequence#, bytes/1024/1024 MB, members, status, archived, first_change# FROM v$log; -- 2. V$LOGFILE - 日志文件信息 SELECT group#, member, type, status FROM v$logfile ORDER BY group#; -- 3. V$LOG_HISTORY - 日志历史 SELECT sequence#, first_time, first_change#, next_time, next_change#, blocks FROM v$log_history WHERE sequence# (SELECT max(sequence#)-10 FROM v$log_history); -- 4. V$ARCHIVED_LOG - 归档日志信息归档模式下 SELECT sequence#, name, first_time, completion_time FROM v$archived_log ORDER BY sequence# DESC;5.2 日志挖掘工具LogMiner-- 配置LogMiner EXECUTE DBMS_LOGMNR.ADD_LOGFILE( - LOGFILENAME /u01/oradata/redo01.log, - OPTIONS DBMS_LOGMNR.NEW); -- 开始分析 EXECUTE DBMS_LOGMNR.START_LOGMNR( - OPTIONS DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG); -- 查询分析结果 SELECT scn, timestamp, sql_redo, sql_undo FROM v$logmnr_contents WHERE seg_owner HR AND seg_name EMPLOYEES; -- 结束分析 EXECUTE DBMS_LOGMNR.END_LOGMNR();六、管理操作指南6.1 添加/删除日志组-- 添加新日志组每组2个成员各500MB ALTER DATABASE ADD LOGFILE GROUP 4 (/u01/oradata/redo04a.log, /u02/oradata/redo04b.log) SIZE 500M; -- 删除日志组 ALTER DATABASE DROP LOGFILE GROUP 4;6.2 添加/删除日志成员-- 为组1添加新成员 ALTER DATABASE ADD LOGFILE MEMBER /u03/oradata/redo01c.log TO GROUP 1; -- 删除日志成员 ALTER DATABASE DROP LOGFILE MEMBER /u03/oradata/redo01c.log;6.3 重设日志大小-- 步骤1: 添加新大小的日志组 ALTER DATABASE ADD LOGFILE GROUP 4 (/u01/oradata/redo04a.log, /u02/oradata/redo04b.log) SIZE 1G; -- 步骤2: 切换日志直到旧组变为INACTIVE ALTER SYSTEM SWITCH LOGFILE; -- 重复多次直到要删除的组状态为INACTIVE -- 步骤3: 删除旧日志组 ALTER DATABASE DROP LOGFILE GROUP 1;七、监控和维护脚本7.1 监控日志切换频率-- 检查频繁日志切换 SELECT to_char(first_time, YYYY-MM-DD HH24) hour, count(*) switches_per_hour FROM v$log_history WHERE first_time sysdate - 1 GROUP BY to_char(first_time, YYYY-MM-DD HH24) ORDER BY hour;7.2 检查日志状态和空间-- 综合监控脚本 SELECT l.group#, l.thread#, l.sequence#, l.bytes/1024/1024 MB, l.members, l.status, l.archived, round((sysdate - f.first_time)*24,2) hours_ago, f.switches FROM v$log l JOIN ( SELECT group#, min(first_time) first_time, count(*) switches FROM v$log_history GROUP BY group# ) f ON l.group# f.group#;八、最佳实践建议8.1 配置建议日志组数量至少3组建议4-5组日志大小每20-30分钟切换一次为宜成员数量每组至少2个成员分布在不同的物理磁盘归档模式生产环境必须启用归档模式-- 1. 检查日志文件损坏 ALTER SYSTEM CHECK LOGICAL DATAFILE /path/to/redo.log; -- 2. 清除损坏的日志组 ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 2; -- 3. 强制日志切换和检查点 ALTER SYSTEM CHECKPOINT GLOBAL; ALTER SYSTEM ARCHIVE LOG ALL;九、性能优化9.1 减少日志生成-- 1. 使用NOLOGGING操作谨慎使用 ALTER TABLE big_table NOLOGGING; INSERT /* APPEND */ INTO big_table SELECT * FROM source_table; ALTER TABLE big_table LOGGING; -- 2. 批量提交减少日志开销 BEGIN FOR i IN 1..10000 LOOP INSERT INTO test_table VALUES (i, data); IF MOD(i, 1000) 0 THEN COMMIT; END IF; END LOOP; COMMIT; END;十、常见问题排查10.1 日志相关等待事件-- 检查日志相关等待 SELECT event, total_waits, time_waited FROM v$system_event WHERE event LIKE %log% ORDER BY time_waited DESC;10.2 空间不足处理-- 1. 检查归档目标空间 SELECT destination, status, error FROM v$archive_dest WHERE status ! INACTIVE; -- 2. 清理旧归档日志 RMAN DELETE ARCHIVELOG ALL COMPLETED BEFORE SYSDATE-7;十一、日志序列号Log Sequence Number11.1 概念与作用日志序列号是唯一标识每个重做日志文件的递增数字是数据库恢复的关键线索。-- 查看当前日志序列号 SELECT group#, sequence#, first_change#, next_change# FROM v$log; -- 示例输出 -- GROUP# SEQUENCE# FIRST_CHANGE# NEXT_CHANGE# -- 1 125 12345678 12346789 -- 2 124 12344567 12345678 -- 3 123 12343456 1234456711.2 序列号的工作机制时间线 序列号121 → 122 → 123 → 124 → 125 → ... 对应日志 组3(CURRENT) → 组1 → 组2 → 组3 → 组1 → ...重要特性每个日志切换都会产生新的序列号序列号在数据库生命周期内持续递增RAC环境中每个实例有独立的序列号范围归档日志文件名通常包含序列号redo_125_1_987654321.arc十二、Thread线程机制12.1 线程的概念线程在Oracle中代表一个数据库实例的写入路径主要用于RAC环境。-- 查看线程信息 SELECT thread#, instance_name, status, enabled FROM v$thread; -- RAC环境示例 -- THREAD# INSTANCE_NAME STATUS ENABLED -- 1 ORCL1 OPEN PUBLIC -- 2 ORCL2 OPEN PUBLIC12.2 单实例 vs RAC单实例数据库 ┌─────────────┐ │ Thread 1 │ ← 只有一个线程 │ 日志组1,2,3 │ └─────────────┘ RAC数据库 ┌─────────────┐ ┌─────────────┐ │ Thread 1 │ │ Thread 2 │ │ Instance 1 │ │ Instance 2 │ │ 日志组1,3,5 │ │ 日志组2,4,6 │ └─────────────┘ └─────────────┘ ↓ ↓ ┌─────────────────────────────┐ │ 共享重做日志文件 │ └─────────────────────────────┘十三、LGWR进程详解13.1 LGWR的角色与职责LGWRLog Writer是负责将重做日志缓冲区内容写入磁盘的关键后台进程。按组编号1→2→3→1的顺序循环写入已写满的组可被覆盖非归档模式下或归档后覆盖归档模式下-- 查看LGWR进程状态 SELECT pid, program, background, pga_used_mem FROM v$process WHERE program LIKE %LGWR%;13.2 LGWR写入触发条件13.2.1 主要触发条件触发条件描述频率/阈值事务提交用户执行COMMIT时每次提交3秒超时后台定时写入每3秒一次缓冲区1/3满重做日志缓冲区使用量达到1/3容量1MB阈值缓冲区累积数据量超过1MBDBWn需要数据块写入前确保重做日志持久化按需13.2.2 事务提交的详细流程-- 用户执行 UPDATE employees SET salary 10000 WHERE employee_id 100; COMMIT; -- ← 触发LGWR写入 -- 内部流程 1. 用户提交事务 2. LGWR获取提交SCN 3. 将重做日志缓冲区中该事务的所有重做记录写入磁盘 4. 在重做日志文件中写入提交记录 5. 向用户返回提交成功13.3 LGWR的I/O特性-- 监控LGWR性能 SELECT event, total_waits, time_waited_micro, average_wait_micro FROM v$system_event WHERE event LIKE %log file%; -- 关键等待事件 -- log file parallel write: LGWR写入等待 -- log file sync: 用户提交等待LGWR完成LGWR特点并行写入同时写入同一组的所有成员顺序写入按事务发生顺序写入异步I/O尽可能使用异步I/O提高性能零散收集批量写入收集多个事务后批量写入十四、日志切换Log Switch14.1 触发条件-- 手动触发日志切换 ALTER SYSTEM SWITCH LOGFILE; -- 查看切换频率 SELECT to_char(first_time, YYYY-MM-DD HH24) hour, count(*) switches, round(count(*)/60, 2) per_minute FROM v$log_history WHERE first_time sysdate - 1/24 -- 最近1小时 GROUP BY to_char(first_time, YYYY-MM-DD HH24) ORDER BY hour;自动触发条件当前日志组写满ALTER SYSTEM SWITCH LOGFILE命令日志组状态异常某些维护操作如开启归档14.2 日志切换的详细过程切换前状态 ┌─────────────────┐ │ GROUP 1: CURRENT│ ← LGWR正在写入 │ GROUP 2: ACTIVE │ │ GROUP 3: INACTIVE│ └─────────────────┘ 触发切换 1. LGWR停止写入GROUP 1 2. 分配新的序列号给GROUP 2 3. 更新控制文件 4. LGWR开始写入GROUP 2 切换后状态 ┌─────────────────┐ │ GROUP 1: ACTIVE │ ← 可能还有未写入数据文件的重做记录 │ GROUP 2: CURRENT│ ← LGWR正在写入 │ GROUP 3: INACTIVE│ └─────────────────┘14.3 切换问题诊断-- 检查日志切换阻塞 SELECT event, state, seconds_in_wait, block FROM v$session WHERE event LIKE %log%switch% OR event LIKE %archive%; -- 查看归档延迟 SELECT dest_id, destination, status, error FROM v$archive_dest WHERE status ! INACTIVE;十五、检查点Checkpoint15.1 检查点的作用与类型15.1.1 检查点类型类型触发条件作用完全检查点SHUTDOWN, ALTER SYSTEM CHECKPOINT所有脏块写入磁盘增量检查点每3秒由CKPT进程定期推进检查点位置线程检查点日志切换时确保切换前的脏块写入磁盘表空间检查点表空间离线/只读/备份开始表空间级脏块写入15.1.2 检查点相关参数-- 查看检查点参数 SELECT name, value, description FROM v$parameter WHERE name LIKE %checkpoint% OR name LIKE %fast_start%; -- 关键参数 -- fast_start_mttr_target: 实例恢复时间目标(秒) -- log_checkpoint_timeout: 检查点超时时间(秒) -- log_checkpoint_interval: 检查点触发间隔(OS块数)15.2 检查点触发条件详解15.2.1 常规触发-- 手动触发完全检查点 ALTER SYSTEM CHECKPOINT GLOBAL; -- 查看检查点进度 SELECT target_rba, -- 目标恢复字节地址 on_disk_rba, -- 已写入磁盘的RBA recovery_estimated_ios, -- 估计恢复需要的I/O数 estimated_mttr -- 估计平均恢复时间(秒) FROM v$instance_recovery;15.2.2 触发条件汇总日志切换时自动达到fast_start_mttr_target阈值表空间操作BEGIN BACKUP, OFFLINE, READ ONLY实例关闭SHUTDOWN [NORMAL|IMMEDIATE|TRANSACTIONAL]手动命令ALTER SYSTEM CHECKPOINT15.3 检查点与日志的协同工作15.3.1 增量检查点机制重做日志文件 ┌─────────────────────────────────────────┐ │ 已写入磁盘 ← CKPT位置增量检查点 │ │ ............│............................│ │ 已生成重做 ← RBA恢复字节地址 │ └─────────────────────────────────────────┘ ↑ ↑ │ │ 检查点队列 重做记录队列 脏块列表 待写入15.3.2 监控检查点队列-- 检查点队列统计 SELECT cpdrt, -- 检查点队列中的脏块数量 cpnxt, -- 下一个检查点RBA cpba, -- 当前检查点RBA cprls -- 检查点释放的块数 FROM x$kcccp WHERE indx 0;15.4 实例恢复与检查点关系15.4.1 恢复过程-- 查看恢复需要的日志 SELECT thread#, sequence#, first_change#, next_change# FROM v$log WHERE status IN (ACTIVE, CURRENT); -- 实例恢复步骤 -- 1. 前滚(Roll Forward): 从检查点开始应用重做日志 -- 2. 回滚(Roll Back): 回滚未提交事务15.4.2 快速启动故障恢复(FSFR)-- 启用快速启动故障恢复 ALTER SYSTEM SET fast_start_mttr_target 300; -- 5分钟恢复目标 -- 监控FSFR状态 SELECT mttr_target, -- 目标恢复时间 estimated_mttr, -- 估计恢复时间 writes_mttr, -- 为满足MTTR需要写入的块数 ckpt_block_writes -- 检查点写入的块数 FROM v$instance_recovery;十六、综合监控脚本16.1 完整状态监控SELECT -- 日志组信息 l.group#, l.thread#, l.sequence#, l.bytes/1024/1024 as size_mb, l.members, l.status, l.archived, -- 检查点信息 to_char(l.first_change#, 999999999999999) as first_change, to_char(l.next_change#, 999999999999999) as next_change, -- 时间信息 to_char(h.first_time, HH24:MI:SS) as first_time, round((sysdate - h.first_time)*24*60, 2) as minutes_old, -- 恢复信息 ir.estimated_mttr, ir.target_mttr, ir.writes_mttr FROM v$log l LEFT JOIN ( SELECT group#, max(first_time) first_time FROM v$log_history GROUP BY group# ) h ON l.group# h.group# CROSS JOIN v$instance_recovery ir ORDER BY l.thread#, l.group#;16.2 性能与问题诊断-- 检查日志相关等待 SELECT event, total_waits, time_waited_micro/1000000 as time_waited_sec, average_wait_micro/1000 as avg_wait_ms, total_timeouts FROM v$system_event WHERE event IN ( log file sync, -- 提交等待 log file parallel write, -- LGWR写入等待 log file sequential read, -- 读取归档日志 log file single write, -- 日志头写入 switch logfile command -- 日志切换命令 ) ORDER BY time_waited_micro DESC;十七、最佳实践配置17.1 关键参数设置-- 日志相关参数优化 ALTER SYSTEM SET log_buffer 67108864 SCOPESPFILE; -- 64MB 日志缓冲区 ALTER SYSTEM SET fast_start_mttr_target 300 SCOPESPFILE; -- 5分钟恢复目标 ALTER SYSTEM SET log_checkpoint_timeout 1800 SCOPESPFILE; -- 30分钟检查点超时17.2 高可用配置-- RAC环境日志配置 -- 每个实例至少3个日志组每组2个成员 -- 确保成员分布在不同的存储路径 -- 添加线程RAC实例2 ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 4 (DATA/redo04a.log, FRA/redo04b.log) SIZE 2G, GROUP 5 (DATA/redo05a.log, FRA/redo05b.log) SIZE 2G, GROUP 6 (DATA/redo06a.log, FRA/redo06b.log) SIZE 2G;17.3 日常维护脚本-- 检查日志系统健康状态 SET LINESIZE 200 COLUMN Status Summary FORMAT A50 SELECT CASE WHEN EXISTS ( SELECT 1 FROM v$log WHERE status CURRENT AND (next_change# - first_change#) / bytes 0.9 ) THEN WARNING: Current log almost full WHEN EXISTS ( SELECT 1 FROM v$log l, v$logfile lf WHERE l.group# lf.group# AND lf.status ! VALID ) THEN ERROR: Invalid log file member WHEN (SELECT count(*) FROM v$archive_dest WHERE error IS NOT NULL) 0 THEN ERROR: Archive destination error ELSE OK: Log system healthy END AS Status Summary, (SELECT count(*) FROM v$log WHERE status ACTIVE) as active_logs, (SELECT round(avg((next_change# - first_change#) / bytes * 100), 2) FROM v$log WHERE status CURRENT) as current_log_usage_percent FROM dual;十八、故障处理场景18.1 日志切换频繁-- 原因日志文件太小或事务量过大 -- 解决方案增大日志文件 ALTER DATABASE ADD LOGFILE GROUP 4 (/u01/oradata/redo04a.log, /u02/oradata/redo04b.log) SIZE 2G REUSE; ALTER SYSTEM SWITCH LOGFILE; -- 多次切换直到可以删除旧组 ALTER DATABASE DROP LOGFILE GROUP 1;18.2 检查点未推进-- 现象实例恢复时间过长 -- 诊断 SELECT * FROM v$instance_recovery; SELECT event, p1, p2, p3 FROM v$session_wait WHERE event LIKE %checkpoint%; -- 解决触发检查点并调整参数 ALTER SYSTEM CHECKPOINT; ALTER SYSTEM SET fast_start_mttr_target 600;十九、总结要点概念关键点监控指标序列号唯一标识持续递增v$log.sequence#线程RAC实例写入路径v$thread.thread#LGWR重做日志写入进程log file sync等待时间日志切换组间轮换写入v$log_history切换频率检查点脏块写入减少恢复时间v$instance_recovery.estimated_mttr还有一个参数FAST_START_MTTR_TARGET600是Oracle 数据库中控制实例恢复时间的关键参数它间接影响检查点行为。1. 查看当前设置show parameter fast_start_mttr2. 监控实际恢复时间估算SELECT target_mttr, estimated_mttr FROM v$instance_recovery;3.调整命令ALTER SYSTEM SET FAST_START_MTTR_TARGET180 SCOPEBOTH;相关参数对比参数作用使用建议FAST_START_MTTR_TARGET设置恢复时间目标秒推荐10g自动调优LOG_CHECKPOINT_INTERVAL按日志块数触发检查点已废弃不建议使用LOG_CHECKPOINT_TIMEOUT按时间间隔触发检查点已废弃不建议使用移动和换名redo log :alter database rename file 路径1 to路径2具体操作就是mount状态文件移动指令位置在v$logfile中查找
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做网站的怎么赚钱计算机类哪个专业前景好

Solaris 和 LDAP 命名服务:容量规划与性能调优 1. 实验内容及配置 在进行性能测试时,涉及了几种不同类型的操作,包括属性更新、条目添加/删除和认证操作: - 属性更新 :客户端与目录建立持久的认证连接,对目录中均匀选择的条目中的单个属性进行更新,该属性使用相等索…

张小明 2025/12/28 5:38:12 网站建设

制作公司网站在公账汇款时用途备注什么荣耀商城app

「我改了這裡,那裡會不會壞?」— 類型註解如何終結我每天的焦慮時刻一場無止境的恐懼循環時針指向凌晨兩點,螢幕的冷光映照在我疲憊的臉上。我剛修改了一個看似無害的函數參數——只是將字串改為可選的,因為新增的功能中&#xff…

张小明 2025/12/26 3:20:31 网站建设

河北网站备案流程北京做手机网站设计

系统配置、管理与故障排除全解析 1. 系统更新与配置 1.1 Windows Update Windows Update 是系统保持安全和功能更新的重要途径,包含自动和手动更新方式。 - 自动更新 :可确保系统及时获取最新补丁,路径为 123 - 124 相关设置。 - 手动更新 :用户可按需操作,具体步…

张小明 2025/12/26 3:19:57 网站建设

新网站推广直播互动

AutoGPT退休生活规划助手:自主智能体的技术实现与应用分析 在老龄化趋势加剧的今天,越来越多的人开始关注“如何优雅地退休”。然而,制定一份真正可行的退休计划远非易事——它不仅涉及复杂的财务计算,还需综合考虑医疗资源、居住…

张小明 2025/12/26 3:19:24 网站建设

网站免费搭建桥头镇仿做网站

一、敏捷四大价值观(源自《敏捷软件开发宣言》) 敏捷宣言开宗明义地提出了四大价值主张,它们共同构成了敏捷思想的“北极星”: 1. 个体和互动 高于 流程和工具 核心:人的因素是第一位的。优秀的团队成员之间的直接、…

张小明 2025/12/26 3:18:51 网站建设

网站建设基础考试江门网站排名优化

GetQzonehistory终极指南:5步快速备份QQ空间所有历史说说 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还在担心珍贵的QQ空间回忆会丢失吗?GetQzonehistory是一…

张小明 2025/12/26 3:18:18 网站建设