《Oracle(一)- 基础》

news2024/11/18 7:45:39

文章目录

  • 一、Oracle简介
    • (一)什么是ORACLE
    • (二)ORACLE 体系结构
      • 1.数据库
      • 2.实例
      • 3.数据文件(dbf)
      • 4.表空间
      • 5.用户
  • 二、ORACLE 安装与配置
    • (一)VMware 挂载 windows server 2003
    • (二)网络配置
    • (三)安装 ORACLE 数据库
    • (四)SQLPlus 远程连接 ORACLE 数据库
    • (五)PLSQL Developer 安装与配置
  • 三、项目案例:《自来水公司收费系统》
    • (一)项目介绍与需求分析
    • (二)表结构设计
    • (三)创建表空间
    • (四)创建用户
    • (五)用户赋权
  • 四、表的创建、修改与删除
    • (一)创建表
    • (二)修改表
    • (三)删除表
  • 五、数据增删改
    • (一)插入数据
    • (二)修改数据
    • (三)删除数据
  • 六、JDBC 连接 ORACLE
    • (一)创建工程,引入驱动包
    • (二)BaseDao
    • (三)业主增删改代码编写
  • 七、数据导出与导入
    • (一)整库导出与导入
    • (二)按用户导出与导入
    • (三)按表导出与导入

一、Oracle简介

(一)什么是ORACLE

ORACLE 数据库系统是美国 ORACLE 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S 体系结构的数据库之一。

ORACLE 通常应用于大型系统的数据库产品。

ORACLE 数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。

ORACLE 数据库具有以下特点:

(1)支持多用户、大事务量的事务处理

(2)数据安全性和完整性控制

(3)支持分布式数据处理

(4)可移植性

(二)ORACLE 体系结构

1.数据库

Oracle 数据库是数据的物理存储。这就包括(数据文件 ORA 或者 DBF、控制文件、联机日志、参数文件)。其实 Oracle 数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。可以看作是 Oracle 就只有一个大数据库。

2.实例

一个Oracle实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)组成。一个数据库可以有 n 个实例。

3.数据文件(dbf)

数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。

4.表空间

表空间是 Oracle 对物理数据库上相关数据文件(ORA 或者 DBF 文件)的逻辑映射。一个数据库在逻辑上被划分成一到若干个表空间,每个表空间包含了在逻辑上相关联的一组结构。每个数据库至少有一个表空间(称之为 system 表空间)。

每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件(datafile)。一个数据文件只能属于一个表空间。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注:表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。

由于 oracle 的数据库不是普通的概念,oracle 是有用户和表空间对数据进行管理和存放的。但是表不是有表空间去查询的,而是由用户去查的。因为不同用户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5.用户

用户是在表空间下建立的。用户登陆后只能看到和操作自己的表, ORACLE的用户与 MYSQL 的数据库类似,每建立一个应用需要创建一个用户。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

二、ORACLE 安装与配置

(一)VMware 挂载 windows server 2003

锁频密码:amani

(二)网络配置

(三)安装 ORACLE 数据库

口令:root

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

cmd输入:sqlplus system/root

SQL:select * from tabs; 查询所有表

(四)SQLPlus 远程连接 ORACLE 数据库

远程连接

远程连接工具:D:\Program Files\Oracle\instantclient\instantclient_21_3

D:\Program Files\Oracle\instantclient\instantclient_21_3>sqlplus system/root@192.168.100.125:1521/orcl

SQL*Plus: Release 12.1.0.1.0 Production on Wed Sep 6 14:58:38 2023

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> select * from tabs;

(五)PLSQL Developer 安装与配置

(1)安装 PLSQL Developer 15

(2)配置客户端路径

D:\Program Files\Oracle\instantclient\instantclient_21_3

D:\Program Files\Oracle\instantclient\instantclient_21_3\oci.dll

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(3) 编辑 ORA 文件

C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora

复制映射下面路径

D:\Program Files\Oracle\tnsnames.ora

ORCL10 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.125)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

(4) 设置环境变量 TNS_ADMIN

为 D:\Program Files\Oracle( tnsnames.ora 所在目录 )

(5)进入系统

输入用户名 system 密码 root即可进入到软件主界面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

问题1:

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

ERROR:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
解决1:

ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法

问题2:

ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Process ID: 0
Session ID: 0 Serial number: 0

解决2:
ORA-01034:ORACLE not available ORA-27101解决方法
解决:ORA-01034: ORACLE not available ORA-27101(推荐,实测有效)

操作步骤:

1 启动监听

lsnrctl start

2 设置实例

set ORACLE_SID=orcl

3 连接

sqlplus  /nolog
conn / as sysdba

4 启动

startup
shutdown immediate
startup

5 测试

select * from user_tables;

总结:

sqlplus /nolog
conn / as sysdba
startup

(6)中文编码设置

select userenv(‘language’) from dual

我实际查到的结果为:AMERICAN_AMERICA.ZHS16GBK

计算机->属性->高级系统设置->环境变量->新建

设置变量名:NLS_LANG,变量值:第 1 步查到的值,

我的是

AMERICAN_AMERICA.ZHS16GBK

三、项目案例:《自来水公司收费系统》

(一)项目介绍与需求分析

(二)表结构设计

(三)创建表空间

-- 创建表空间
create tablespace waterboss
datafile 'C:\oracle\dbf\waterboss.dbf'
size 100m
autoextend on
next 10m;

解释:
waterboss 为表空间名称
datafile 用于设置物理文件名称
size 用于设置表空间的初始大小
autoextend on 用于设置自动增长,如果存储量超过初始大小,则开始自动扩容
next 用于设置扩容的空间大小

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(四)创建用户

-- 创建用户 
create user wateruser
identified by amani
default tablespace waterboss;

解释:
wateruser 为创建的用户名
identified by 用于设置用户的密码
default tablesapce 用于指定默认表空间名称

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(五)用户赋权

-- 用户赋权
grant dba to wateruser;

给用户 wateruser 赋予 DBA 权限后即可会话登陆

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

四、表的创建、修改与删除

(一)创建表

语法

CREATE TABLE 表名称(
字段名 类型(长度) primary key,
字段名 类型(长度),
.......
);

数据类型

  1. 字符型
    (1)CHAR : 固定长度的字符类型,最多存储 2000 个字节
    (2)VARCHAR2 :可变长度的字符类型,最多存储 4000 个字节
    (3)LONG : 大文本类型。最大可以存储 2 个 G
  2. 数值型
    NUMBER : 数值类型
    例如:NUMBER(5) 最大可以存的数为 99999
    NUMBER(5,2) 最大可以存的数为 999.99
  3. 日期型
    (1)DATE:日期时间型,精确到秒
    (2)TIMESTAMP:精确到秒的小数点后 9 位
  4. 二进制型(大数据类型)
    (1)CLOB : 存储字符,最大可以存 4 个 G
    (2)BLOB:存储图像、声音、视频等二进制数据,最多可以存 4 个 G

实例
创建业主表

-- 创建业主表
create table t_owners
(
id number primary key,
name varchar2(30),
addressid number,
housenumber varchar2(30),
watermeter varchar2(30),
adddate date,
ownertypeid number
);

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(二)修改表

  1. 增加字段语法:
ALTER TABLE 表名称 ADD(列名 1 类型 [DEFAULT 默认值],列名 1 类型
[DEFAULT 默认值]...)
为业主表增加两个字段,语句:
--追加字段
ALTER TABLE T_OWNERS ADD
(
REMARK VARCHAR2(20),
OUTDATE DATE
)
  1. 修改字段语法:
ALTER TABLE 表名称 MODIFY(列名 1 类型 [DEFAULT 默认值],列名 1 类型
[DEFAULT 默认值]...)
修改两个字段的类型,语句:
--修改字段
ALTER TABLE T_OWNERS MODIFY
(
REMARK CHAR(20),
OUTDATE TIMESTAMP
)
  1. 修改字段名语法:
ALTER TABLE 表名称 RENAME COLUMN 原列名 TO 新列名
语句:
ALTER TABLE T_OWNERS RENAME COLUMN OUTDATE TO EXITDATE
  1. 删除字段名
--删除一个字段
ALTER TABLE 表名称 DROP COLUMN 列名
--删除多个字段
ALTER TABLE 表名称 DROP (列名 1,列名 2...)

语句:

--删除字段
ALTER TABLE T_OWNERS DROP COLUMN REMARK

(三)删除表

语法:

DROP TABLE 表名称

五、数据增删改

(一)插入数据

语法

INSERT INTO 表名[(列名 1,列名 2...)] VALUES(1,值 2...)

执行 INSERT 后一定要再执行 commit 提交事务

向业主表插入数据:

INSERT INTO T_OWNERS VALUES (1,' 张三丰',1,'2-2','5678',sysdate,1);

语句中的 sysdate 是系统变量用于获取当前日期,点击齿轮的图标后,再点击下
图的绿色图标,此图标为 commit

我们再次录入一条数据,语句如下:

INSERT INTO T_OWNERS VALUES (2,'赵大侃',1,'2-3','9876',sysdate,1);
commit;

(二)修改数据

语法

UPDATE 表名 SET 列名 1=1,列名 2=2....WHERE 修改条件;

执行 UPDATE 后一定要再执行 commit 提交事务

需求:将 ID 为 1 的业主的登记日期更改为三天前的日期

update T_OWNERS set adddate=adddate-3 where id=1;
commit;

(三)删除数据

语法 1

DELETE FROM 表名 WHERE 删除条件;

执行 DELETE 后一定要再执行 commit 提交事务

需求:删除业主 ID 为 2 的业主信息

delete from T_OWNERS where id=2;
commit;

语法 2

TRUNCATE TABLE 表名称

比较 truncat 与 delete 实现数据删除?

  1. delete 删除的数据可以 rollback
  2. delete 删除可能产生碎片,并且不释放空间
  3. truncate 是先摧毁表结构,再重构表结构

六、JDBC 连接 ORACLE

(一)创建工程,引入驱动包

在下图目录中可以找到驱动包 ORACLE 的 JDBC 驱动包,拷贝到工程即可使用

C:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar

(二)BaseDao


public class BaseDao {

    //加载驱动
    static {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取数据库连接
     */
    public static java.sql.Connection getConnection() throws SQLException {
        return java.sql.DriverManager.getConnection("jdbc:oracle:thin:@192.168.100.125:1521:orcl",
                "wateruser", "amani");
    }

    /**
     * 关闭资源
     */
    public static void closeAll(java.sql.ResultSet rs, java.sql.Statement stmt, java.sql.Connection conn) {
        //关闭结果集
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        //关闭执行对象
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        //关闭执行对象
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

}

JDBC 驱动为:
oracle.jdbc.OracleDriver
连接字符串( 瘦连接 ):
jdbc:oracle:thin:@虚拟机的 IP:1521:orcl

(三)业主增删改代码编写

1.创建实体类

/**
 * 业主实体类
 */
public class Owners {
	private Long id;//编号
	private String name;//业主名称
	private Long addressid;//地址编号
	private String housenumber;//门牌号
	private String watermeter;//水表编号
	private Date adddate;//登记日期
	private Long ownertypeid;//业主类型ID

	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Long getAddressid() {
		return addressid;
	}
	public void setAddressid(Long addressid) {
		this.addressid = addressid;
	}
	public String getHousenumber() {
		return housenumber;
	}
	public void setHousenumber(String housenumber) {
		this.housenumber = housenumber;
	}
	public String getWatermeter() {
		return watermeter;
	}
	public void setWatermeter(String watermeter) {
		this.watermeter = watermeter;
	}
	public Date getAdddate() {
		return adddate;
	}
	public void setAdddate(Date adddate) {
		this.adddate = adddate;
	}
	public Long getOwnertypeid() {
		return ownertypeid;
	}
	public void setOwnertypeid(Long ownertypeid) {
		this.ownertypeid = ownertypeid;
	}
}

2.创建 Dao 类实现增删改

/**
 * 业主数据访问类
 */
public class OwnerDao {

        /**
         * 新增业主
         */
        public static void add(Owners owners) {

            java.sql.Connection conn = null;
            java.sql.PreparedStatement stmt = null;

            try {
                conn = BaseDao.getConnection();
                stmt = conn.prepareStatement("insert into T_OWNERS values(?,?,?,?,?,?,?)");
                stmt.setLong(1, owners.getId());
                stmt.setString(2, owners.getName());
                stmt.setLong(3, owners.getAddressid());
                stmt.setString(4, owners.getHousenumber());
                stmt.setString(5, owners.getWatermeter());
                stmt.setDate(6, new java.sql.Date(owners.getAdddate().getTime()));
                stmt.setLong(7, owners.getOwnertypeid());
                stmt.execute();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                BaseDao.closeAll(null, stmt, conn);
            }
        }

        /**
         * 更新业主信息
         */
        public static void update(Owners owners) {

            java.sql.Connection conn = null;
            java.sql.PreparedStatement stmt = null;

            try {
                conn = BaseDao.getConnection();
                stmt = conn.prepareStatement("update T_OWNERS set name=?,addressid=?,housenumber=?,"
                        + "watermeter=?,adddate=?, ownertypeid=? where id=?");

                stmt.setString(1, owners.getName());
                stmt.setLong(2, owners.getAddressid());
                stmt.setString(3, owners.getHousenumber());
                stmt.setString(4, owners.getWatermeter());
                stmt.setDate(5, new java.sql.Date(owners.getAdddate().getTime()));
                stmt.setLong(6, owners.getOwnertypeid());
                stmt.setLong(7, owners.getId());
                stmt.execute();
            } catch (SQLException e) {

                e.printStackTrace();
            } finally {
                BaseDao.closeAll(null, stmt, conn);
            }
        }

        /**
         * 删除业主信息
         */
        public static void delete(Long id) {

            java.sql.Connection conn = null;
            java.sql.PreparedStatement stmt = null;

            try {
                conn = BaseDao.getConnection();
                stmt = conn.prepareStatement("delete from T_OWNERS where id=?");
                stmt.setLong(1, id);
                stmt.execute();
            } catch (SQLException e) {

                e.printStackTrace();
            } finally {
                BaseDao.closeAll(null, stmt, conn);
            }
        }
}

七、数据导出与导入

当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(硬件故障、软件故障、网络故障、进程故障和系统故障)影响数据库系统的操作,影响数据库中数据的正确性,甚至破坏数据库,使数据库中全部或部分数据丢失。因此当发生上述故障后,希望能重构这个完整的数据库该处理称为数据库恢复,而要进行数据库的恢复必须要有数据库的备份工作。

(一)整库导出与导入

整库导出命令

exp system/root full=y

添加参数 full=y 就是整库导出

执行命令后会在当前目录下生成一个叫 EXPDAT.DMP,此文件为备份文件。
如果想指定备份文件的名称,则添加 file 参数即可,命令如下

exp system/root file=文件名 full=y

整库导入命令

imp system/root full=y

此命令如果不指定 file 参数,则默认用备份文件 EXPDAT.DMP 进行导入
如果指定 file 参数,则按照 file 指定的备份文件进行恢复

imp system/root full=y file=water.dmp

(二)按用户导出与导入

按用户导出

exp system/root owner=wateruser file=wateruser.dmp

按用户导入

imp system/root file=wateruser.dmp fromuser=wateruser

(三)按表导出与导入

按表导出

exp wateruser/amani file=a.dmp tables=T_OWNERS,T_OWNERSTYPE

用 tables 参数指定需要导出的表,如果有多个表用逗号分割即可
按表导入

imp wateruser/amani file=a.dmp tables=T_OWNERS,T_OWNERSTYPE

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2136616.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

海外短剧系统一站式开发+h5,app双端

前言: 海外短剧是指那些制作时间短、剧情紧凑、内容丰富的剧集,主要在海外市场(如北美、欧洲、东南亚等)播放并受到欢迎。 而海外短剧系统是指一种用于制作和播放海外短剧的系统。该系统通常由电视台、制片公司或在线视频平台使…

C++:STL详解(一)string类的基本介绍与使用方式

✨ Blog’s 主页: 白乐天_ξ( ✿>◡❛) 🌈 个人Motto:实践是检验真理的唯一标准!!!敲代码需要勤快点!!!! 💫 欢迎来到我的学习笔记&#xff0…

十二,Spring Boot 异常处理(自定义异常页面,全局异常,自定义异常)

十二,Spring Boot 异常处理(自定义异常页面,全局异常,自定义异常) 文章目录 十二,Spring Boot 异常处理(自定义异常页面,全局异常,自定义异常)1. 基本介绍2. 自定义异常页面3. 全局异常4. 自定义异常5. 补充…

LineageOS刷机教程

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ LineageOS 是一个基于 Android 开源项目(AOSP)的开源操作系统,主要由社区开发者维护。它起源于 CyanogenMod 项目&#xff…

数据库索引底层数据结构之B+树MySQL中的页索引分类【纯理论知识,干货分享,面试必备】

目录 1、索引简介 1.1 什么是索引 1.2 使用索引的原因 2、索引中数据结构的设计 —— B树 2.1 哈希 2.2 二叉搜索树 2.3 B树 2.4 最终选择之——B树 2.4.1 B树与B树的对比(面向索引)【面试题】 3、MySQL中的页 3.1 页的使用原因 3.2 页的结构 3.2.1 页文件头和页文件…

解锁定位服务:Flutter应用中的高德地图定位

前言 在现代移动应用开发中,定位服务已成为一项基本功能,它使得应用能够获取用户的地理位置信息,为用户提供更加个性化的服务。 Flutter 作为跨平台的移动应用开发框架,支持集成多种服务,包括定位服务。 本文将介绍如…

HR8870:可PWM控制,4.5A直流有刷电机驱动数据手册

HR8870芯片描述 HR8870是一款直流有刷电机驱动器,适用于打印机、电器、工业设备以及其他小型机器。两个逻辑输入控制H桥驱动器,该驱动器由四个N-MOS组成,能够以高达4.5A的峰值电流双向控制电机。利用电流衰减模式,可通过对输入进行…

故障码格式解析

中,诊断故障码(DTC, Diagnostic Trouble Code)是由一个字母前缀和三个后续字符组成的。这些字母前缀根据故障所属的系统类别来区分,具体如下: B0 -- B3:表示车身系统(Body)的故障码…

Linux CTF逆向入门

1.ELF格式 我们先来看看 ELF 文件头,如果想详细了解,可以查看ELF的man page文档。 关于ELF更详细的说明: e_shoff:节头表的文件偏移量(字节)。如果文件没有节头表,则此成员值为零。 sh_offset&…

Qt 菜单、工具栏 的基本使用

效果 代码 #include "mainwindow.h" #include "ui_mainwindow.h" #include<QToolBar> #include<QDebug> #include<QPushButton>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupU…

【JAVA入门】Day45 - 压缩流 / 解压缩流

【JAVA入门】Day45 - 压缩流 / 解压缩流 文章目录 【JAVA入门】Day45 - 压缩流 / 解压缩流一、解压缩流二、压缩流 在文件传输过程中&#xff0c;文件体积比较大&#xff0c;传输较慢&#xff0c;因此我们发明了一种方法&#xff0c;把文件里的数据压缩到一种压缩文件中&#x…

【LLMs对抗性提示:提示泄漏、非法行为、DAN、Waluigi效应、 游戏模拟器、防御策略————】

对抗性提示 目录 对抗性提示 提示注入 提示泄漏 非法行为 DAN Waluigi效应 GPT-4模拟器 游戏模拟器 防御策略 在指令中添加防御 参数化提示组件 引用和其他格式 对抗提示检测器 模型类型 参考文献 Adversarial prompting是提示工程中的一个重要主题&#xff0c…

每日OJ_牛客_NC313 两个数组的交集

目录 牛客_NC313 两个数组的交集 解析代码 牛客_NC313 两个数组的交集 两个数组的交集_牛客题霸_牛客网 class Solution { public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** * param nums1 int整型vector * pa…

统计/nginx/access.log中每个ip的访问次数,按高到低排列

/nginx/access.log具体内容长这样&#xff1a; 第一个元素就是ip。 awk {print $1} /nginx/access.log | sort | uniq -c | sort -r首先&#xff0c;awk {print $1} /nginx/access.log 从 /nginx/access.log文件的每行中提取出第一个字段。然后&#xff0c;sort 对提取出的第…

【有哪些坑】Apollo配置中心FAQ常见问题列表

使用某个框架之前&#xff0c;得先看看前辈们踩过的坑。 他人的间接经验 -> 自己的直接经验 前车之鉴&#xff0c;后事之师。比喻前人失败了&#xff0c;后人应该从中吸取教训&#xff0c;避免再犯同样的错误。 常见问题回答 1. Apollo是什么&#xff1f; Apollo&#xff…

关于STM32项目面试题01:电源

博客的风格是&#xff1a;答案一定不能在问题的后面&#xff0c;要自己想、自己背&#xff1b;回答都是最精简、最精简、最精简&#xff0c;可能就几个字&#xff0c;你要自己自信的展开。 面试官01&#xff1a;说说你知道的开关电源的拓扑结构&#xff1f; 面试官02&#xff1…

Nacos下载和启动

Nacos是什么&#xff1f; 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台 下载 https://github.com/alibaba/nacos/releases/tag/2.1.1启动 将下载好的Nacos解压缩&#xff0c;然后到bin目录下打开cmd 输入指令&#xff1a;startup.cmd -m standalone 出…

Apache DolphinScheduler 跨工作流复杂依赖功能详解

大家好&#xff0c;我叫高楚枫&#xff0c;来自阿里云 EMR 团队的开发工程师&#xff0c;同时也是 Apache DolphinScheduler 的 PMC 成员之一。 今天非常高兴能在这里和大家分享关于跨工作流复杂依赖的功能详解。 引言 在现代的数据处理和调度过程中&#xff0c;工作流的依赖…

STL_string 常用的用法

string里常用的函数与讲解使用 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ &#xff08;点击进入c关于string 的各个函数的全面讲解使用/英文版&#xff09; Iterators&#xff08;迭代器&#xff09;: begin与end&#xff1a; …

门磁模块详解(防盗感应开关 STM32)

目录 一、介绍 二、程序设计 main.c文件 gate_guard.h文件 gate_guard.c文件 三、实验效果 四、资料获取 项目分享 一、介绍 MC-38常闭式门磁开关是作为IO开关输入数字信号的&#xff0c;原理是合在一起信号是导通的 , 配合有线主机使用 不能单独使用。适用于非铁质&a…