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

Oracle数据库指南

目录

一、前言

二、Oracle数据库基础入门篇

1. Oracle体系结构概述

2. 安装与配置

3. SQL语言入门

三、PL/SQL编程与高级特性

1. PL/SQL基础语法

2. 触发器与任务调度

3. 高级特性

四、日常维护与监控

1. 备份与恢复策略

2. 日志管理与故障排查

3. 自动化运维

五、性能优化深度解析

1. SQL执行计划分析

2. 索引优化实战

3. 系统级调优

六、高可用与容灾方案

1. Data Guard实现数据同步

2. RAC集群搭建

七、常见疑难问题汇总

八、实战案例:电商系统优化

九、学习路径与资源推荐

十、结语


一、前言

随着企业信息化建设的深入,Oracle数据库作为全球领先的关系型数据库管理系统(RDBMS),其重要性不言而喻。无论是金融、电信、电商还是制造业,Oracle凭借其高可用性、安全性和强大的扩展能力,始终占据核心地位。本文将从零基础出发,系统讲解Oracle的学习路径、日常运维、性能优化与疑难问题处理,帮助读者构建完整的知识体系。


二、Oracle数据库基础入门篇
1. Oracle体系结构概述
  • 实例(Instance)与数据库(Database)

    • 实例 = 内存结构(SGA) + 后台进程(PMON, SMON, DBWn等)

    • 数据库 = 数据文件(Data Files) + 控制文件(Control Files) + 日志文件(Redo Logs)

  • 关键组件详解

    -- 查看SGA内存分配
    SHOW PARAMETER sga_target;
    -- 查看后台进程
    SELECT * FROM V$BGPROCESS;
2. 安装与配置
  • Linux环境安装实战

    # 检查内核参数
    grep -E 'semmni|shmmax' /etc/sysctl.conf
    # 安装依赖包
    yum install oracle-database-preinstall-19c
  • 数据库创建工具(DBCA)使用

    • 图形化创建数据库的步骤与参数配置建议(字符集、块大小)

3. SQL语言入门
  • DDL/DML/DCL基础语法

    -- 创建表(DDL)
    CREATE TABLE employees (emp_id NUMBER PRIMARY KEY,name VARCHAR2(50),salary NUMBER(8,2)
    );-- 插入数据(DML)
    INSERT INTO employees VALUES (1001, 'Alice', 15000);-- 权限管理(DCL)
    GRANT SELECT ON employees TO hr_user;
  • 复杂查询与函数

    -- 分析函数示例
    SELECT dept_id, AVG(salary) OVER (PARTITION BY dept_id) AS avg_salary
    FROM employees;

三、PL/SQL编程与高级特性
1. PL/SQL基础语法
  • 存储过程与函数

    CREATE OR REPLACE PROCEDURE raise_salary (p_emp_id IN NUMBER,p_percent IN NUMBER
    ) AS
    BEGINUPDATE employees SET salary = salary * (1 + p_percent/100)WHERE emp_id = p_emp_id;COMMIT;
    END;

2. 触发器与任务调度
  • 行级触发器防止数据篡改

    CREATE TRIGGER audit_salary_change
    BEFORE UPDATE OF salary ON employees
    FOR EACH ROW
    BEGININSERT INTO salary_audit VALUES (:OLD.emp_id, :OLD.salary, :NEW.salary, SYSDATE);
    END;
3. 高级特性
  • 物化视图加速查询

    CREATE MATERIALIZED VIEW sales_summary
    REFRESH FAST ON COMMIT
    AS 
    SELECT product_id, SUM(quantity) 
    FROM sales 
    GROUP BY product_id;

四、日常维护与监控
1. 备份与恢复策略
  • RMAN全量备份与增量备份

    -- 全库备份脚本
    RUN {ALLOCATE CHANNEL ch1 DEVICE TYPE DISK;BACKUP DATABASE PLUS ARCHIVELOG;DELETE OBSOLETE;
    }
2. 日志管理与故障排查
  • 处理ORA-01555快照过旧错误

    -- 增加UNDO表空间
    ALTER TABLESPACE undo_tbs ADD DATAFILE '/u01/undo02.dbf' SIZE 2G;
3. 自动化运维
  • 使用OEM监控数据库健康状态

    • 配置指标阈值(Tablespace Usage > 90%触发告警)


五、性能优化深度解析
1. SQL执行计划分析
  • 解读EXPLAIN PLAN输出

    EXPLAIN PLAN FOR 
    SELECT * FROM orders WHERE customer_id = 100;
    SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
2. 索引优化实战
  • 索引失效场景与解决方案

    -- 避免在WHERE子句中对字段进行函数运算
    -- 错误写法
    SELECT * FROM employees WHERE TO_CHAR(hire_date, 'YYYY') = '2023';
    -- 正确写法
    SELECT * FROM employees WHERE hire_date >= TO_DATE('2023-01-01', 'YYYY-MM-DD');
3. 系统级调优
  • 调整SGA与PGA内存分配

    ALTER SYSTEM SET sga_target=4G SCOPE=SPFILE;
    ALTER SYSTEM SET pga_aggregate_target=2G;

六、高可用与容灾方案
1. Data Guard实现数据同步
  • 最大可用性模式配置

    -- 主库配置
    LOG_ARCHIVE_DEST_2 = 'SERVICE=standby_db LGWR SYNC AFFIRM'
2. RAC集群搭建
  • 负载均衡与故障转移测试

    crsctl status res -t  # 查看集群资源状态


七、常见疑难问题汇总
错误代码问题描述解决方案
ORA-00060死锁检测查询v$lock找到阻塞会话并kill
ORA-00257归档日志满清理过期归档或增加空间
ORA-12514监听程序无法识别服务名检查listener.ora配置

八、实战案例:电商系统优化

场景:订单查询响应时间超过5秒
分析

  • 执行计划显示全表扫描(TABLE ACCESS FULL)

  • 缺少customer_id和order_date的复合索引
    解决方案

CREATE INDEX idx_orders_cust_date ON orders(customer_id, order_date);

九、学习路径与资源推荐
  • 书籍:《Oracle Database 12c性能优化攻略》《深入解析Oracle》

  • 认证:Oracle OCP/OCM认证路径

  • 工具:SQL Developer、AWR报告分析、ASH监控


十、结语

掌握Oracle数据库需要理论结合实践,本文覆盖了从基础到高级的全链路知识体系。建议读者在实验环境中反复演练,并参与实际项目以积累经验。技术之路无止境,持续学习方能在数据库领域成为真正的大神。

相关文章:

Oracle数据库指南

目录 一、前言 二、Oracle数据库基础入门篇 1. Oracle体系结构概述 2. 安装与配置 3. SQL语言入门 三、PL/SQL编程与高级特性 1. PL/SQL基础语法 2. 触发器与任务调度 3. 高级特性 四、日常维护与监控 1. 备份与恢复策略 2. 日志管理与故障排查 3. 自动化运维 五…...

Qt -信号与槽

博客主页:【夜泉_ly】 本文专栏:【暂无】 欢迎点赞👍收藏⭐关注❤️ 目录 前言引入connect调用链模板类型的connectQObject::connectImplQObjectPrivate::connectImpl qobject_p_p.hconnect作用总结ai对信号与槽的模拟实现 前言 面向对象&am…...

macos 魔搭 模型下载 Wan-AI ComfyUI

环境安装 ➜ ~ sw_vers ProductName: macOS ProductVersion: 15.3.2 ➜ ~ pip --version pip 24.3.1 from /opt/homebrew/lib/python3.11/site-packages/pip (python 3.11)安装ModelScope SDK pip install modelscope➜ ~ modelscope download --help Traceback (most r…...

Xshell Plus 6下载与安装

文章目录 Xshell Plus 6 简介(一)网络连接与协议支持(二)会话管理(三)安全特性(四)文件传输功能(因集成Xftp 6 )(五)个性化与便捷功能…...

Kubernetes 集群搭建(一):从环境准备到 Calico 网络插件部署

(一)虚拟环境准备 名称ip备注m1192.168.101.131mastern1192.168.101.132workern2192.168.101.133worker (二)集群统一配置 2.1 关闭防火墙和selinux systemctl stop firewalld systemctl disable firewalld sed -i s/enforcin…...

【国产突围!致远电子ZXDoc如何打破Vector垄断,成为新能源车研发“神器”?】

摘要:在汽车“新四化”浪潮下,国产汽车总线工具链软件正迎来高光时刻!广州致远电子推出的ZXDoc以全栈自主化技术硬核国产芯片生态,斩获2024金辑奖“最佳技术实践应用奖”,成为新能源车企研发工程师的“效率倍增器”。本…...

3-Visual Studio 2022打包NET开发项目为安装包

引言 本文将上一期博文>>>门店管理系统开发<<<开发的项目打包为Windows安装包 一&#xff0c;安装扩展 安装此扩展&#xff1a;installer Projects 二&#xff0c;创建安装程序项目 创建项目 右键解决方案-添加-新建项目 选择setup Project项目 填写项目名…...

Cookie、Session、Token、JWT的区别和使用场景

Cookie、Session和Token的区别 存储位置数据容量安全性生命周期性能Cookie客户端&#xff08;通常是浏览器&#xff09;4KB、Cookie数量也有限制不安全、XSS&#xff08;跨站脚本攻击&#xff09;、CSRF&#xff08;跨站请求伪造&#xff09;可以设置过期时间&#xff0c;过期后…...

P1883 【模板】三分 | 函数

题目描述 给定 n 个二次函数 f1​(x),f2​(x),…,fn​(x)&#xff08;均形如 ax2bxc&#xff09;&#xff0c;设 F(x)max{f1​(x),f2​(x),...,fn​(x)}&#xff0c;求 F(x) 在区间 [0,1000] 上的最小值。 输入格式 输入第一行为正整数 T&#xff0c;表示有 T 组数据。 每组…...

Ruoyi-vue plus 5.2.2 flowble设计流程点击开始流程图错误

网关设置条件或者是事件删除后出现&#xff0c;点击网关节点无法找到下面的事件节点。 配置页面事件错误&#xff0c;点背景配置进去了事件&#xff0c;发现再次加载&#xff0c;或者删除的时候VUE页面无法加载。 解决方式&#xff1a;查看XML文件&#xff0c;这个节点是否存在…...

MySQL学习笔记(三)——图形化界面工具DataGrip

目录 1. 图形化界面工具 2.下载 3. 安装 3.1 安装步骤 3.2 激活说明 4. 使用 4.1 汉化教程 4.2 使用 1. 图形化界面工具 上述&#xff0c;我们已经讲解了通过 DDL 语句&#xff0c;如何操作数据库、操作表、操作表中的字段&#xff0c;而通过 DDL 语句执行在命令进行操…...

keil软件仿真

设置 选择软件仿真。 修改参数。 获取参数 找到自己的芯片信号。这里用的是F103ZET6 复制下来&#xff0c;并对其进行修改。 接下来进入仿真即可...

每日一题(小白)模拟娱乐篇14

直接理解题意&#xff0c;一分钟扩散一次&#xff0c;那么2020分钟也就是需要循环2020次&#xff0c;然后加入扩散后的条件&#xff0c;每一个次扩散使方格子的总量1&#xff08;只要有一个点扩散就无需看其他的点&#xff09;&#xff0c;若干次循环过后总数之和即所有黑色格子…...

(二)使用Android Studio开发基于Java+xml的安卓app之环境搭建

以下是使用Android Studio搭建基于Java和XML的Android应用开发环境的详细步骤&#xff1a; 一、系统要求 操作系统&#xff1a;Windows 7/8/10/11&#xff08;64位&#xff09;内存&#xff1a;建议8GB及以上磁盘空间&#xff1a;至少5GB空闲&#xff08;建议预留10GB以上&…...

STM32定时器通道1-4(CH1-CH4)的引脚映射关系

以下是 STM32定时器通道1-4(CH1-CH4)的引脚映射关系的详细说明,以常见型号为例。由于不同系列/型号差异较大,请务必结合具体芯片的参考手册确认。 一、STM32F1系列(如STM32F103C8T6) 1. TIM1(高级定时器) 通道默认引脚重映射引脚(部分/完全)备注CH1PA8无互补输出CH1…...

看爬山虎学本领 软爬机器人来创新 各种场景能适应

*本文只做阅读笔记分享* 一、灵感来源&#xff1a;向植物取经 大家好&#xff01;今天来聊一款超酷的软爬机器人&#xff0c;它的灵感来自会攀爬的植物——爬山虎。 大家都知道&#xff0c;爬墙高手爬山虎能在各种复杂墙面轻松生长攀爬&#xff0c;可现有的攀爬机器人在复杂…...

Spring AI Alibaba示例项目深度解析:dashscope-audio子模块详解

Spring AI Alibaba示例项目深度解析:dashscope-audio子模块详解 一、模块定位与核心价值 1.1 功能定位 • 音频处理核心组件:基于阿里云DashScope平台实现STT(语音识别)和TTS(文生语音)双模态能力 • 企业级解决方案:提供同步/异步/流式三种调用范式,适配不同业务场景…...

Linux 下 日志系统搭建全攻略

目录 一、引言 二、日志系统基础 日志级别 日志输出格式 三、创建日志所需函数 认识可变参数 ​编辑 获取时间的函数 小结 四、创建日志 一、引言 在 Linux 环境中开发 C/C 程序时&#xff0c;日志系统是不可或缺的一部分。它不仅有助于调试程序、排查问题&#xff…...

前端布局难题:父元素padding导致子元素无法全屏?3种解决方案

大家好&#xff0c;我是一诺。今天要跟大家分享一个我在实际项目中经常用到的CSS技巧——如何让子元素突破父元素的padding限制&#xff0c;实现真正的全屏宽度效果。 为什么会有这个需求&#xff1f; 记得我刚入行的时候&#xff0c;接到一个需求&#xff1a;要在内容区插入…...

写.NET可以指定运行SUB MAIN吗?调用任意一个里面的类时,如何先执行某段初始化代码?

VB.NET 写.NET可以指定运行SUB MAIN吗?调用任意一个里面的类时,如何先执行某段初始化代码? 分享 1. 在 VB.NET 中指定运行 Sub Main 在 VB.NET 里&#xff0c;你能够指定 Sub Main 作为程序的入口点。下面为你介绍两种实现方式&#xff1a; 方式一&#xff1a;在项目属性…...

蓝桥杯单片机频率

long int Freq; unsigned int Timer_1000Ms; 加上 TMOD | 0x05; void Timer0Init(void) //0毫秒12.000MHz {AUXR & 0x7F; //定时器时钟12T模式TMOD & 0xF0; //设置定时器模式TMOD | 0x05;TL0 0x00; //设置定时初值TH0 0x00; //设置定时初值TF0 0; //清除TF0标…...

word导出PDF老是目录格式变化的问题

这里是写给和我一样的笨蛋的经验帖&#xff0c;适合试了很多网上的经验&#xff0c;结果都用不成的傻瓜蛋&#xff0c;先说好&#xff0c;我是傻瓜蛋&#xff0c;我不是在攻击谁&#xff0c;我们只是客观的&#xff0c;缺根弦罢了。 这些帖子里讲的最多的应该是&#xff1a;“…...

P1577 切绳子(二分)

题目描述 有 N 条绳子&#xff0c;它们的长度分别为 Li​。如果从它们中切割出 K 条长度相同的绳子&#xff0c;这 K 条绳子每条最长能有多长&#xff1f;答案保留到小数点后 2 位(直接舍掉 2 位后的小数)。 输入格式 第一行两个整数 N 和 K&#xff0c;接下来 N 行&#xf…...

高级:分布式系统面试题精讲

一、引言 分布式系统在现代软件开发中占据重要地位&#xff0c;其设计和实现需要考虑多个关键因素。面试官通过相关问题&#xff0c;考察候选人对分布式系统核心概念的理解、实际应用能力以及在复杂场景下的问题解决能力。本文将深入分析分布式系统的CAP定理、一致性协议、分布…...

【速写】SFT案例实操(以Qwen2.5-instruct-0.5B)

参考资料&#xff1a; https://openbayes.com/console/bbruceyuan/containers/OPg9Oo99ET6https://www.bilibili.com/video/BV1NM1tY3Eu5 LoRA微调案例 首先还是要安装&#xff1a; !pip install -q accelerate peft bitsandbytes transformers sentencepiece !pip install…...

springboot457-库存管理系统(源码+数据库+纯前后端分离+部署讲解等)

&#x1f495;&#x1f495;作者&#xff1a; 爱笑学姐 &#x1f495;&#x1f495;个人简介&#xff1a;十年Java&#xff0c;Python美女程序员一枚&#xff0c;精通计算机专业前后端各类框架。 &#x1f495;&#x1f495;各类成品Java毕设 。javaweb&#xff0c;ssm&#xf…...

Node.js中间件的分类

目录 Node.js 中间件的分类与详细介绍 1. 目录结构 2. Express 中间件的主要分类 3. 代码实现 1. 应用级中间件&#xff08;作用于整个应用&#xff09; 示例&#xff1a;日志记录中间件 2. 路由级中间件&#xff08;仅作用于特定路由&#xff09; 示例&#xff1a;身份…...

棒球规则快速入门·棒球1号位

棒球规则快速入门&#xff1a; 得分方式 进攻方击球后&#xff0c;依次跑过一、二、三垒并返回本垒得1分。若击球直接飞出外场围栏&#xff08;全垒打&#xff09;&#xff0c;击球员和已上垒的跑垒员均可得分。 比赛结构 共9局&#xff0c;每局分上下半场&#xff0c;双方各…...

【深度学习】通过colab将本地的数据集上传到drive

本地数据集上传到colab很慢&#xff0c;而且断开后就没了&#xff0c;因此通过colab将本地的数据集上传到drive&#xff0c;即使断开连接&#xff0c;第二次连接后挂载drive后即可直接使用数据集。 步骤一、将本地数据集上传到colab的临时文件夹中&#xff0c;由于将文件夹上传…...

MYSQL 存储引擎 和 日志

存储引擎 InnoDB 支持行级别的锁粒度&#xff0c;MyISAM 不支持&#xff0c;只支持表级别的锁粒度。MyISAM 不提供事务支持。InnoDB 提供事务支持&#xff0c;实现了 SQL 标准定义了四个隔离级别。MyISAM 不支持外键&#xff0c;而 InnoDB 支持。MyISAM 不支持 MVCC&#xff0c…...

【2022】【论文笔记】太赫兹量子阱——

前言 类型 太赫兹 + 量子阱 太赫兹 + 量子阱 太赫兹+量子阱 期刊 红外与毫米波学报 红外与毫米波学报 红外与毫米波学报 作者 张真真 ,...

【NLP 面经 7、常见transformer面试题】

目录 1. 为何使用多头注意力机制&#xff1f; 2. Q和K使用不同权重矩阵的原因 3. 选择点乘而非加法的原因 4. Attention进行scaled的原因 5. 对padding做mask操作 6. 多头注意力降维原因 7. Transformer Encoder模块简介 8. 乘以embedding size的开方的意义 9. 位置编码 10. 其…...

在js中数组相关用法讲解

数组 uniqueArray 简单数组去重 /*** 简单数组去重* param arr* returns*/ export const uniqueArray <T>(arr: T[]) > [...new Set(arr)];const arr1 [1,1,1,1 2, 3];uniqueArray(arr); // [1,2,3]uniqueArrayByKey 根据 key 数组去重 /*** 根据key数组去重* …...

第四章 react-redux,@reduxjs/toolkit依赖,学习

redux系列文章目录 第一章 简单学习redux,单个reducer 第二章 简单学习redux,多个reducer 第三章 redux和react-redux&#xff0c;reduxjs/toolkit依赖结合使用 第五章 两张图告诉你redux常使用的api有哪些 前言 本章将使用react-redux&#xff0c;reduxjs/toolkit依赖创…...

雅思7分听说读写专项书籍推荐

对于目标 7分以上的雅思考生&#xff08;中高级水平&#xff09;&#xff0c;选对资料真的事半功倍。 下面按照 听力、阅读、写作、口语、综合书籍 五大类来分别列举高分推荐书籍&#xff0c;每本书包括&#xff1a;适合人群、核心内容、推荐理由&#xff0c;并贴合7分目标。 …...

C++容器使用说明

C标准库提供了多种容器&#xff0c;分为序列容器、关联容器、无序关联容器、容器适配器及其他相关类型。以下是所有标准容器的分类及简要说明&#xff1a; 1. 序列容器&#xff08;Sequence Containers&#xff09; 按线性顺序存储元素&#xff0c;支持随机或顺序访问。 vecto…...

Python-函数

1. 函数基础 1.1 定义函数 在Python中&#xff0c;使用def关键字来定义函数&#xff1a; def greet():"""简单的问候函数"""print("Hello, World!")1.2 调用函数 定义函数后&#xff0c;可以通过函数名加括号来调用&#xff1a; …...

【Redis】数据的淘汰策略

目录 淘汰策略方案&#xff08;8种&#xff09; LRU和LFU策略的区别 使用建议 手搓LRU算法 方式一 方式二 大家好&#xff0c;我是jstart千语。今天和大家回来聊一下redis&#xff0c;这次要讲的是它的淘汰策略。为什么需要淘汰策略呢&#xff0c;就是当redis里面的内存占…...

第七章:从类库到服务的分布式基石_《凤凰架构:构建可靠的大型分布式系统》

第七章&#xff1a;从类库到服务的分布式基石 一、服务发现&#xff08;Service Discovery&#xff09; 核心目标&#xff1a;解决分布式系统中服务实例动态变化时如何定位可用服务的问题。 1. 服务发现的意义 动态环境挑战&#xff1a; 微服务架构中&#xff0c;服务实例的…...

spring-ai-alibaba第九章使用Milvus构建大模型RAG应用

1、pom文件 <dependencies><dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter</artifactId><version>${spring-ai-alibaba.version}</version></dependency><dependency&g…...

手撕LLM(一):从源码出发,探索LLM推理全流程

2025年&#xff0c;大模型爆发元年&#xff0c;各种各样的大模型、框架、工具层出不穷&#xff0c;不断刷新人们应用大模型的门槛&#xff0c;短短10行代码&#xff0c;就能完成“加载模型加载数据集推理强化学习”的全流程训练&#xff0c;但其底层的运行机制也被高度抽象的接…...

讯飞语音听写(流式版)开发指南

语音交互大模型的功能越来越受到重视。讯飞语音听写&#xff08;流式版&#xff09;为开发者提供了一种高效、准确的语音识别解决方案。本文将基于 Home.vue、iat_xfyun.js 和 sparkChat.js 这三个文档&#xff0c;详细阐述讯飞语音听写&#xff08;流式版&#xff09;的开发逻…...

P3654 First Step (ファーストステップ)

题目描述 可是……这个篮球场&#xff0c;好像很久没有使用过的样子啊…… 里面堆满了学校的各种杂物呢…… 我们 Aqours 的成员要怎么在里面列队站下呢&#xff1f; 我们浦之星女子学院的篮球场是一个 R 行 C 列的矩阵&#xff0c;其中堆满了各种学校的杂物 (用 # 表示)&a…...

MySQL篇(六)MySQL 分库分表:应对数据增长挑战的有效策略

MySQL篇&#xff08;六&#xff09;MySQL 分库分表&#xff1a;应对数据增长挑战的有效策略 MySQL篇&#xff08;六&#xff09;MySQL 分库分表&#xff1a;应对数据增长挑战的有效策略一、引言二、为什么需要分库分表2.1 性能瓶颈2.2 存储瓶颈2.3 高并发压力 三、分库分表的方…...

SonarQube 配置SQL Server 数据库遇到的问题

之前本机跑了一套SonarQube的社区版&#xff0c;默认使用的是H2数据库&#xff0c;那么我把它练到我机器上的SQL Server数据库了&#xff0c;期间遇到以下两个问题&#xff0c;并在配置过程中解决掉&#xff0c;特将这个过程记录下来。 一、JDBC连接SQL Server问题 1. 问题出…...

23种设计模式-行为型模式-备忘录

文章目录 简介问题解决代码关键实现要点功能扩展方向 总结 简介 备忘录是一种行为设计模式&#xff0c; 允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。 问题 假如你正在开发一款文字编辑器应用。你想加入撤销功能。你可以采用直接的方式来实现: 程序在执行任…...

IDEA/WebStrom操作之commit前批量清除console.log()与debugger

前言&#xff1a; 在前端开发过程中&#xff0c;往往需要频繁用到console.log()与debugger&#xff0c;来观察数据具体情况以及断点调试。在经历了水生火热的开发动作后&#xff0c;往往会残留一地console.log()和debugger&#xff0c;若开发者还得手动在多个文件中一个个去除…...

每日算法-250405

34. 在排序数组中查找元素的第一个和最后一个位置 题目 思路 本题的核心思路是二分查找。 解题过程 问题分析&#xff1a;在一个升序排列的数组中查找一个目标值 target 的起始和结束位置。这是一个典型的二分查找应用场景。核心转换&#xff1a;题目要求找到 target 的第一个…...

设计模式简述(四)模板方法模式

模板方法模式 描述基本定义使用 描述 当一系列业务的基本流程是相同的&#xff0c;对于不同的业务可以在各自子类实现 所谓模板方法指的就是父类中固定的那部分代码 其实这里的思想和前面设计原则中开闭原则的描述是一致的&#xff0c;父类中的模板代码就是稳定的部分&#x…...

论文修改时有哪些需要注意的问题?

论文修改是学术写作中不可或缺的环节&#xff0c;直接影响成果的专业性和说服力。许多作者因忽略细节或急于定稿&#xff0c;导致论文质量大打折扣。那么&#xff0c;如何修改才能提升论文的严谨性与可读性呢&#xff1f; 一、逻辑结构 论文修改时&#xff0c;先从头到尾通读…...