在Docker 容器中安装 Oracle 19c
在 Docker 容器中安装 Oracle 19c 是可行的,但它相较于其他数据库(如 MySQL、PostgreSQL 等)会复杂一些,因为 Oracle 数据库有一些特定的要求,如操作系统和库的依赖,以及许可证问题。
不过,Oracle 官方已经提供了 Oracle Database 19c Docker 镜像,你可以使用它来快速启动 Oracle 19c 数据库。
- Oracle 19c Docker 镜像
Oracle 提供了官方的 Docker 镜像,你可以通过以下步骤来使用:
1.1 拉取 Oracle 19c 镜像
Oracle 在 Docker Hub 上并没有直接提供 19c 镜像,而是通过 Oracle 官方的 GitHub 仓库发布了 Dockerfiles,你可以从中构建自己的镜像。Oracle 官方提供的 GitHub 地址:Oracle Docker GitHub
首先,访问 Oracle 的 GitHub 页面,获取 19c 的 Docker 镜像构建方法,或者直接使用以下命令从 Docker Hub 拉取已构建的镜像。
对于 Oracle 19c,通常你需要拉取的是 oracle/database:19.3.0-ee(Enterprise Edition)或者 oracle/database:19.3.0-se2(Standard Edition 2)。
例如:
docker pull oracle/database:19.3.0-ee
1.2 启动 Oracle 19c 容器
拉取完镜像后,可以使用以下命令启动 Oracle 19c 容器:
docker run -d -it --name oracle19c
-p 1521:1521 -p 5500:5500
-e ORACLE_PDB=ORCLPDB1
-e ORACLE_PASSWORD=your_password
oracle/database:19.3.0-ee
解释:
–name oracle19c:为容器指定一个名称(例如 oracle19c)。
-p 1521:1521:将容器的 1521 端口(Oracle 默认端口)映射到宿主机的 1521 端口。
-p 5500:5500:将容器的 5500 端口映射到宿主机的 5500 端口(用于 Oracle Enterprise Manager Express)。
-e ORACLE_PDB=ORCLPDB1:指定 PDB(Pluggable Database)名称。
-e ORACLE_PASSWORD=your_password:设置 Oracle 数据库的密码。替换为你想要设置的密码。
该命令会在后台启动 Oracle 容器,并将 1521 和 5500 端口映射到宿主机。你可以通过宿主机的 localhost:1521 来连接到 Oracle 数据库。
- 使用 Dockerfile 自定义构建
如果你想构建自定义的 Oracle 19c 镜像,Oracle 提供了相应的 Dockerfile,你可以根据以下步骤进行构建:
克隆 Oracle Docker 镜像的 GitHub 仓库:
git clone https://github.com/oracle/docker-images.git
cd docker-images\OracleDatabase\SingleInstance\dockerfiles\19.3.0
copy download/LINUX.X64_193000_db_home.zip .
cd docker-images\OracleDatabase\SingleInstance\dockerfiles
构建镜像: 在构建之前,确保你已经安装了 Docker。然后使用以下命令构建 Oracle 19c 镜像:
./buildContainerImage.sh -v 19.3.0 -t oracle/database:19.3.0-ee -e
这将构建一个名为 oracle/database:19.3.0-ee 的镜像。
Administrator@desktop-02 MINGW64 /e/workspace_docker/docker-images/OracleDatabase/SingleInstance/dockerfiles (main)
$ ./buildContainerImage.sh -v 19.3.0 -t oracle/database:19.3.0-ee -e
WARNING: No blkio throttle.read_bps_device support
WARNING: No blkio throttle.write_bps_device support
WARNING: No blkio throttle.read_iops_device support
WARNING: No blkio throttle.write_iops_device support
WARNING: daemon is not using the default seccomp profile
Checking Docker version.
Dockerfile
Checking if required packages are present and valid...
LINUX.X64_193000_db_home.zip: OK
==========================
Container runtime info:
Client:Version: 27.4.0Context: desktop-linuxDebug Mode: falsePlugins:ai: Ask Gordon - Docker Agent (Docker Inc.)Version: v0.5.1Path: C:\Users\Administrator\.docker\cli-plugins\docker-ai.exebuildx: Docker Buildx (Docker Inc.)Version: v0.19.2-desktop.1Path: C:\Users\Administrator\.docker\cli-plugins\docker-buildx.execompose: Docker Compose (Docker Inc.)

构建情况:
Administrator@desktop-02 MINGW64 /e/workspace_docker/docker-images/OracleDatabase/SingleInstance/dockerfiles (main)
$ ./buildContainerImage.sh -v 19.3.0 -t oracle/database:19.3.0-ee -e
WARNING: No blkio throttle.read_bps_device support
WARNING: No blkio throttle.write_bps_device support
WARNING: No blkio throttle.read_iops_device support
WARNING: No blkio throttle.write_iops_device support
WARNING: daemon is not using the default seccomp profile
Checking Docker version.
Dockerfile
Checking if required packages are present and valid...
LINUX.X64_193000_db_home.zip: OK
==========================
Container runtime info:
Client:Version: 27.4.0Context: desktop-linuxDebug Mode: falsePlugins:ai: Ask Gordon - Docker Agent (Docker Inc.)Version: v0.5.1Path: C:\Users\Administrator\.docker\cli-plugins\docker-ai.exebuildx: Docker Buildx (Docker Inc.)Version: v0.19.2-desktop.1Path: C:\Users\Administrator\.docker\cli-plugins\docker-buildx.execompose: Docker Compose (Docker Inc.)Version: v2.31.0-desktop.2Path: C:\Users\Administrator\.docker\cli-plugins\docker-compose.exedebug: Get a shell into any image or container (Docker Inc.)Version: 0.0.37Path: C:\Users\Administrator\.docker\cli-plugins\docker-debug.exedesktop: Docker Desktop commands (Beta) (Docker Inc.)Version: v0.1.0Path: C:\Users\Administrator\.docker\cli-plugins\docker-desktop.exedev: Docker Dev Environments (Docker Inc.)Version: v0.1.2Path: C:\Users\Administrator\.docker\cli-plugins\docker-dev.exeextension: Manages Docker extensions (Docker Inc.)Version: v0.2.27Path: C:\Users\Administrator\.docker\cli-plugins\docker-extension.exefeedback: Provide feedback, right in your terminal! (Docker Inc.)Version: v1.0.5Path: C:\Users\Administrator\.docker\cli-plugins\docker-feedback.exeinit: Creates Docker-related starter files for your project (Docker Inc.)Version: v1.4.0Path: C:\Users\Administrator\.docker\cli-plugins\docker-init.exesbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)Version: 0.6.0Path: C:\Users\Administrator\.docker\cli-plugins\docker-sbom.exescout: Docker Scout (Docker Inc.)Version: v1.15.1Path: C:\Users\Administrator\.docker\cli-plugins\docker-scout.exeServer:Containers: 4Running: 0Paused: 0Stopped: 4Images: 3Server Version: 27.4.0Storage Driver: overlayfsdriver-type: io.containerd.snapshotter.v1Logging Driver: json-fileCgroup Driver: cgroupfsCgroup Version: 1Plugins:Volume: localNetwork: bridge host ipvlan macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file local splunk syslogCDI spec directories:/etc/cdi/var/run/cdiSwarm: inactiveRuntimes: io.containerd.runc.v2 nvidia runcDefault Runtime: runcInit Binary: docker-initcontainerd version: 472731909fa34bd7bc9c087e4c27943f9835f111runc version: v1.1.13-0-g58aa920init version: de40ad0Security Options:seccompProfile: unconfinedKernel Version: 5.15.167.4-microsoft-standard-WSL2Operating System: Docker DesktopOSType: linuxArchitecture: x86_64CPUs: 16Total Memory: 7.688GiBName: docker-desktopID: b354966b-6f88-4b9c-a5e4-5a8422fbc482Docker Root Dir: /var/lib/dockerDebug Mode: falseHTTP Proxy: http.docker.internal:3128HTTPS Proxy: http.docker.internal:3128No Proxy: hubproxy.docker.internalLabels:com.docker.desktop.address=npipe://\\.\pipe\docker_cliExperimental: falseInsecure Registries:hubproxy.docker.internal:5555127.0.0.0/8Live Restore Enabled: falseWARNING: No blkio throttle.read_bps_device support
WARNING: No blkio throttle.write_bps_device support
WARNING: No blkio throttle.read_iops_device support
WARNING: No blkio throttle.write_iops_device support
WARNING: daemon is not using the default seccomp profile
==========================
Building image 'oracle/database:19.3.0-ee' ...
[+] Building 789.4s (16/16) FINISHED docker:desktop-linux=> [internal] load build definition from Dockerfile 0.0s=> => transferring dockerfile: 5.21kB 0.0s=> WARN: FromAsCasing: 'as' and 'FROM' keywords' casing do not match (line 25) 0.0s=> [internal] load metadata for docker.io/library/oraclelinux:7-slim 2.8s=> [auth] library/oraclelinux:pull token for registry-1.docker.io 0.0s=> [internal] load .dockerignore 0.0s=> => transferring context: 2B 0.0s=> CACHED [base 1/4] FROM docker.io/library/oraclelinux:7-slim@sha256:1add6ed8602ea996528110fe75f4b03c2ca7ffdbe9497148dbb46c3cc9ce6acd 0.0s=> => resolve docker.io/library/oraclelinux:7-slim@sha256:1add6ed8602ea996528110fe75f4b03c2ca7ffdbe9497148dbb46c3cc9ce6acd 0.0s=> [internal] load build context 0.0s=> => transferring context: 537B 0.0s=> [base 2/4] COPY setupLinuxEnv.sh checkSpace.sh /opt/install/ 0.0s=> [base 3/4] COPY runOracle.sh startDB.sh createDB.sh createObserver.sh dbca.rsp.tmpl setPassword.sh checkDBStatus.sh runUserScripts.sh relinkOracleBinary.sh configTcps.sh /opt/oracle/ 0.1s=> [base 4/4] RUN chmod ug+x /opt/install/*.sh && sync && /opt/install/checkSpace.sh && /opt/install/setupLinuxEnv.sh && rm -rf /opt/install 44.3s=> [builder 1/2] COPY --chown=oracle:dba LINUX.X64_193000_db_home.zip db_inst.rsp installDBBinaries.sh /opt/install/ 97.2s=> [builder 2/2] RUN chmod ug+x "/opt/install"/*.sh && sync && "/opt/install"/"installDBBinaries.sh" ee 291.3s=> [stage-2 1/4] COPY --chown=oracle:dba --from=builder /opt/oracle /opt/oracle 86.2s=> [stage-2 2/4] RUN "/opt/oracle"/oraInventory/orainstRoot.sh && "/opt/oracle/product/19c/dbhome_1"/root.sh 2.7s=> [stage-2 3/4] WORKDIR /home/oracle 0.1s=> [stage-2 4/4] RUN echo 'ORACLE_SID=${ORACLE_SID:-ORCLCDB}; export ORACLE_SID=${ORACLE_SID^^}' > .bashrc 0.7s=> exporting to image 235.6s=> => exporting layers 178.8s=> => exporting manifest sha256:89a64ba178832bf56c89b4086023281875c1881cee742d49d3a735893fa94ab1 0.0s=> => exporting config sha256:17e13d7dbb70cffae764691fb1207c1947e21e425595c1cf01be09d76d340fd2 0.0s=> => exporting attestation manifest sha256:d7992dc6df324c174a6c2cbe8292c1379aa01a0c99b74742d93425e120734dcd 0.0s=> => exporting manifest list sha256:9b96b9c8d56fad3b211a564d23b42e599aa52613688108febc029dc34f497ca5 0.0s=> => naming to docker.io/oracle/database:19.3.0-ee 0.0s=> => unpacking to docker.io/oracle/database:19.3.0-ee 56.7s1 warning found (use docker --debug to expand):- FromAsCasing: 'as' and 'FROM' keywords' casing do not match (line 25)Oracle Database container image for 'ee' version 19.3.0 is ready to be extended:--> oracle/database:19.3.0-eeBuild completed in 792 seconds.Administrator@desktop-02 MINGW64 /e/workspace_docker/docker-images/OracleDatabase/SingleInstance/dockerfiles (main)
通过docker desktop可以看到该image已经创建:

构建完成后,使用 docker run 命令启动容器:
docker run -d -it --name oracle19c -p 1521:1521 -p 5500:5500 -e ORACLE_PDB=ORCLPDB1 -e ORACLE_PASSWORD=password oracle/database:19.3.0-ee
- 注意事项
资源要求:Oracle 19c 数据库有比较高的资源需求,特别是内存和 CPU。确保你的机器有足够的资源来运行 Oracle 容器。一般来说,至少需要 2 GB 的内存和 2 核的 CPU。
许可证问题:Oracle 数据库是商用软件,使用时需要遵循 Oracle 的许可证。Oracle 提供的 Docker 镜像是商用版本,你需要确保有合法的许可证来使用它。如果你只是进行开发和测试,可以使用 Oracle 提供的免费开发许可证。
Oracle 实例初始化:在第一次启动 Oracle 容器时,它会初始化数据库,这可能需要一些时间。你可以查看容器的日志,确认初始化是否完成:
docker logs -f oracle19c
| 日志情况 |
|---|
| C:\Users\Administrator>docker logs -f oracle19c |
ORACLE EDITION: ENTERPRISE
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 24-JAN-2025 01:50:13
Copyright © 1991, 2019, Oracle. All rights reserved.
Starting /opt/oracle/product/19c/dbhome_1/bin/tnslsnr: please wait…
TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/867211d171c1/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 24-JAN-2025 01:50:14
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Listener Log File /opt/oracle/diag/tnslsnr/867211d171c1/listener/alert/log.xml
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
The listener supports no services
The command completed successfully
Prepare for db operation
8% complete
Copying database files
31% complete
Creating and starting Oracle instance
32% complete
36% complete
40% complete
43% complete
46% complete
Completing Database Creation
51% complete
54% complete
Creating Pluggable Databases
58% complete
77% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
/opt/oracle/cfgtoollogs/dbca/ORCLCDB.
Database Information:
Global Database Name:ORCLCDB
System Identifier(SID):ORCLCDB
Look at the log file “/opt/oracle/cfgtoollogs/dbca/ORCLCDB/ORCLCDB.log” for further details.
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jan 24 02:03:36 2025
Version 19.3.0.0.0
Copyright © 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL>
System altered.
SQL>
System altered.
SQL>
Pluggable database altered.
SQL>
PL/SQL procedure successfully completed.
SQL> SQL>
Session altered.
SQL>
User created.
SQL>
Grant succeeded.
SQL>
Grant succeeded.
SQL>
Grant succeeded.
SQL>
User altered.
SQL> SQL> Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
The Oracle base remains unchanged with value /opt/oracle
The Oracle base remains unchanged with value /opt/oracle
#########################
DATABASE IS READY TO USE!
#########################
The following output is now a tail of the alert.log:
ORCLPDB1(3):Completed: ALTER DATABASE DEFAULT TABLESPACE “USERS”
2025-01-24T02:03:36.547120+00:00
ALTER SYSTEM SET control_files=‘/opt/oracle/oradata/ORCLCDB/control01.ctl’ SCOPE=SPFILE;
2025-01-24T02:03:36.553039+00:00
ALTER SYSTEM SET local_listener=‘’ SCOPE=BOTH;
ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE
Completed: ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE
2025-01-24T02:03:36.940030+00:00
XDB initialized.
2025-01-24T02:13:25.058000+00:00
ORCLPDB1(3):Resize operation completed for file# 10, old size 327680K, new size 337920K
- 连接到 Oracle 数据库
一旦容器启动并运行,你可以使用任何支持 Oracle 数据库连接的客户端(如 SQL*Plus、Oracle SQL Developer 等)连接到数据库。
一些19c的简单查询语句:
col account_status format a12;
col username format a20;
select account_status,username from dba_users order by 1;
set linesize 99;
col guid format a32;
col name format a32;
select con_id,dbid,guid,name,open_mode from v$pdbs;
show con_name
show pdbs
例如,通过 SQL*Plus 连接到 Oracle 19c 容器:
sqlplus sys/your_password@localhost:1521/ORCLPDB1 as sysdba
通过登录docker进行数据库操作:
docker exec -it oracle19c bash
bash-4.2$ lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 24-JAN-2025 02:35:30
Copyright © 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 24-JAN-2025 01:50:14
Uptime 0 days 0 hr. 45 min. 16 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Listener Log File /opt/oracle/diag/tnslsnr/867211d171c1/listener/alert/log.xml
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=867211d171c1)(PORT=5500))(Security=(my_wallet_directory=/opt/oracle/admin/ORCLCDB/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary…
Service “2c6b220cd5711311e063020011ace476” has 1 instance(s).
Instance “ORCLCDB”, status READY, has 1 handler(s) for this service…
Service “ORCLCDB” has 1 instance(s).
Instance “ORCLCDB”, status READY, has 1 handler(s) for this service…
Service “ORCLCDBXDB” has 1 instance(s).
Instance “ORCLCDB”, status READY, has 1 handler(s) for this service…
Service “orclpdb1” has 1 instance(s).
Instance “ORCLCDB”, status READY, has 1 handler(s) for this service…
The command completed successfully
bash-4.2$ sqlplus sys/password as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jan 24 03:21:28 2025
Version 19.3.0.0.0
Copyright © 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> alter session set container=ORCLPDB1;
Session altered.
SQL>
SQL>
SQL> create user test01 identified by test01 default tablespace users;
User created.
SQL> grant connect,resource,select any table,select any dictionary ,create view to test01;
Grant succeeded.
SQL> alter session set container=orclpdb1;
Session altered.
SQL> alter user test01 quota unlimited on users;
User altered.
对在orclpdb1数据库容器上创建的test01用户进行测试
bash-4.2$ sqlplus test01/test01@localhost:1521/orclpdb1
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jan 24 03:33:25 2025
Version 19.3.0.0.0
Copyright © 1982, 2019, Oracle. All rights reserved.
Last Successful login time: Fri Jan 24 2025 03:26:21 +00:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL>
SQL> create table tmp1 (a varchar(100));
Table created.
SQL> insert into tmp1 values(‘11111’);
1 row created.
SQL> commit;
Commit complete.
SQL> quit
通过图形界面的数据库工具查看:

- 停止和删除容器
如果你不再需要 Oracle 容器,可以停止并删除容器:
停止容器:
docker stop oracle19c
删除容器:
docker rm oracle19c
总结
在 Docker 容器中安装 Oracle 19c 是可行的,Oracle 提供了官方的 Docker 镜像和构建方法。
你可以从 Docker Hub 拉取 Oracle 19c 镜像,或使用 Oracle 提供的 Dockerfile 自定义构建镜像。
启动容器时,使用适当的端口映射和环境变量来设置数据库密码和 PDB 名称。
需要考虑资源要求和许可证问题,确保在合法和合适的环境中使用。
相关文章:
在Docker 容器中安装 Oracle 19c
在 Docker 容器中安装 Oracle 19c 是可行的,但它相较于其他数据库(如 MySQL、PostgreSQL 等)会复杂一些,因为 Oracle 数据库有一些特定的要求,如操作系统和库的依赖,以及许可证问题。 不过,Ora…...
使用Avalonia UI实现DataGrid
1.Avalonia中的DataGrid的使用 DataGrid 是客户端 UI 中一个非常重要的控件。在 Avalonia 中,DataGrid 是一个独立的包 Avalonia.Controls.DataGrid,因此需要单独通过 NuGet 安装。接下来,将介绍如何安装和使用 DataGrid 控件。 2.安装 Dat…...
MySQL中的读锁与写锁:概念与作用深度剖析
MySQL中的读锁与写锁:概念与作用深度剖析 在MySQL数据库的并发控制机制中,读锁和写锁起着至关重要的作用。它们是确保数据在多用户环境下能够正确、安全地被访问和修改的关键工具。 一、读锁(共享锁)概念 读锁,也称为…...
Dest1ny漏洞库:用友 U8 Cloud ReleaseRepMngAction SQL 注入漏洞(CNVD-2024-33023)
大家好,今天是Dest1ny漏洞库的专题!! 会时不时发送新的漏洞资讯!! 大家多多关注,多多点赞!!! 0x01 产品简介 用友U8 Cloud是用友推出的新一代云ERP,主要聚…...
python学opencv|读取图像(四十九)原理探究:使用cv2.bitwise()系列函数实现图像按位运算
【0】基础定义 按位与运算:两个等长度二进制数上下对齐,全1取1,其余取0。 按位或运算:两个等长度二进制数上下对齐,有1取1,其余取0。 按位异或运算: 两个等长度二进制数上下对齐,相…...
【面试】【编程范式总结】面向对象编程(OOP)、函数式编程(FP)和响应式编程(RP)
一、编程范式总结 编程范式是指开发软件时采用的一种方法论或思维方式,主要包括面向对象编程(OOP)、**函数式编程(FP)和响应式编程(RP)**等。这些范式的不同特性和适用场景,帮助开发…...
创建要素图层和表视图
操作方法: 下面按照步骤学习如何使用Make Feature Layer和Make Table View工具 1.在arcmap中打开活动地图文档 2.导入arcpy模块 3.设置工作空间 arcpy.env.workspace "<>" 4.使用try语句,使用Make Feature Layer工具创建内存副本 try:flayer arcpy.Ma…...
51单片机入门_01_单片机(MCU)概述(使用STC89C52芯片;使用到的硬件及课程安排)
文章目录 1. 什么是单片机1.1 微型计算机的组成1.2 微型计算机的应用形态1.3 单板微型计算机1.4 单片机(MCU)1.4.1 单片机内部结构1.4.2 单片机应用系统的组成 1.5 80C51单片机系列1.5.1 STC公司的51单片机1.5.1 STC公司单片机的命名规则 2. 单片机的特点及应用领域2.1 单片机的…...
万物皆有联系:驼鸟和布什
布什?一块布十块钱吗?不是,大家都知道,美国有两个总统,叫老布什和小布什,因为两个布什总统(父子俩),大家就这么叫来着,目的是为了好区分。 布什总统的布什&a…...
【最后203篇系列】007 使用APS搭建本地定时任务
说明 最大的好处是方便。 其实所有任务的源头,应该都是通过定时的方式,在每个时隙发起轮询。当然在任务的后续传递中,可以通过CallBack或者WebHook的方式,以事件的形态进行。这样可以避免长任务执行的过程中进行等待和轮询。 总结…...
go gin配置air
一、依赖下载 安装最新,且在你工作区下进行安装,我的是D:/GO是我的工作区,所有项目都在目录下的src, go install github.com/air-verse/airlatest 如果出现类似报错: 将图中第三行 github.com/air-verse/air 替换最…...
Java定时任务实现方案(五)——时间轮
时间轮 这篇笔记,我们要来介绍实现Java定时任务的第五个方案,使用时间轮,以及该方案的优点和缺点。 时间轮是一种高效的定时任务调度算法,特别适用于大量定时任务的场景。时间轮的定时任务实现,可以使用DelayQueue…...
【事务管理】
目录 一. 介绍与操作二. Spring事务管理三. 事务四大特性 \quad 一. 介绍与操作 \quad \quad 二. Spring事务管理 \quad 推荐加在经常进行增删改的方法上 \quad 三. 事务四大特性 \quad ctrlaltt...
Highcharts 柱形图:深入解析与最佳实践
Highcharts 柱形图:深入解析与最佳实践 引言 Highcharts 是一个功能强大的图表库,它允许用户轻松地在网页上创建各种类型的图表。其中,柱形图因其直观的展示方式,在数据分析、业务报告等领域得到了广泛应用。本文将深入解析 Highcharts 柱形图,包括其基本用法、高级特性…...
js笔记(黑马程序员)
js(day2) 一、运算符 1.赋值运算符 运算符作用加法赋值-减法赋值*乘法复制/除法赋值%取余赋值 2.一元运算符 符号作用说明自增变量自身的值加1,如X--自减变量自身的值减1,如X-- 3.比较运算符 运算符作用>左边是否大于右…...
Mac m1,m2,m3芯片使用nvm安装node14报错
使用nvm安装了node 12/16/18都没有问题,到14就报错了。第一次看到这个报错有点懵,查询资料发现是Mac芯片的问题。 Issue上提供了两个方案: 1、为了在arm64的Mac上安装node 14,需要使用Rosseta,可以通过以下命令安装 …...
LeetCode:63. 不同路径 II
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:63. 不同路径 II 给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角(即 grid[0][0]…...
安装zsh并美化
0 Zsh 是一种功能强大的 shell,通常用于替代默认的 Bash shell。它为命令行提供了更多的功能,例如自动补全、强大的模式匹配和主题支持等。 Oh My Zsh 是用于管理 Zsh 配置的框架。 powerlevel10k是样式,通过p10k configure脚本可以调节自己…...
读量子霸权18读后总结与感想兼导读
1. 基本信息 量子霸权 【美】加来道雄 著 中信出版集团股份有限公司,2024年4月出版 1.1. 读薄率 书籍总字数281千字,笔记总字数65977字。 读薄率65977281000≈23.48% 1.2. 读厚方向 量子宇宙 从掷骰子到阿尔法狗:趣谈概率 上帝掷骰子吗…...
统计学中的样本概率论中的样本
不知道当初谁想的把概率论和数理统计合并,作为一门课。这本身是可以合并,完整的一条线,看这里。但是,作为任课老师应该从整体上交代清楚,毕竟是两个学科,不同的学科合并必然会有各种不协调的问题。 举个最…...
低成本工业机器人:开源六轴机械臂从技术原理到生态落地全指南
低成本工业机器人:开源六轴机械臂从技术原理到生态落地全指南 【免费下载链接】Faze4-Robotic-arm All files for 6 axis robot arm with cycloidal gearboxes . 项目地址: https://gitcode.com/gh_mirrors/fa/Faze4-Robotic-arm 技术原理:打破工…...
DeepSeek-R1-Distill-Qwen-1.5B响应慢?函数调用优化实战解决方案
DeepSeek-R1-Distill-Qwen-1.5B响应慢?函数调用优化实战解决方案 你是不是也遇到过这种情况:好不容易在本地部署了DeepSeek-R1-Distill-Qwen-1.5B这个“小钢炮”模型,结果发现函数调用时响应特别慢?明明官方说RTX 3060能跑200 to…...
ECG-Emotion Recognition(情绪识别)实战指南:WESAD与DREAMER数据集深度解析与应用
1. 情绪识别与ECG技术入门指南 第一次接触ECG情绪识别时,我和大多数人一样充满疑惑:心跳数据真能反映人的情绪?经过三个月的项目实践,我可以肯定地说,ECG信号就像情绪的"心电图",愤怒时心跳加速、…...
Easy-Scraper:革新性HTML数据提取库的技术突破与实战应用
Easy-Scraper:革新性HTML数据提取库的技术突破与实战应用 【免费下载链接】easy-scraper Easy scraping library 项目地址: https://gitcode.com/gh_mirrors/ea/easy-scraper 在数据驱动决策的时代,网页数据采集已成为企业获取市场情报、科研机构…...
LangChain4j vs Spring AI:Java AI 框架技术选型深度对比与生产落地指南
LangChain4j vs Spring AI:Java AI 框架技术选型深度对比与生产落地指南 摘要:当 Java 团队建设 AI 应用时,真正困难的通常不是“能否调通模型”,而是“如何把 Prompt、RAG、工具调用、可观测性、限流熔断、灰度发布、权限隔离与业务系统稳定地耦合起来”。本文不再停留在 …...
蓄电池与超级电容混合储能微电网的未讲解部分总结
蓄电池 超级电容混合储能微电网 没有讲解搞离网微电网的都懂,储能这块一直是卡脖子的事儿——单独堆蓄电池吧,遇到村里突然开个打米机、抽水泵这种大负载,瞬间电流顶上去,电瓶寿命唰唰掉;全上超级电容呢,确…...
SQLite.Interop.DLL加载失败的3种修复方案 - 从运行库到项目配置全搞定
SQLite.Interop.DLL加载失败的终极解决方案:从运行环境到项目配置深度解析 当你正在开发一个依赖SQLite数据库的C#项目时,突然遇到"无法加载DLLSQLite.Interop.DLL"的错误提示,这绝对是一个令人头疼的问题。作为一名有多年.NET开发…...
Vue3项目救星:我是如何用Cursor的‘项目规则’功能,让团队新人一天上手的
Vue3团队协作革命:用Cursor项目规则实现代码规范的自动化治理 当新成员加入你的Vue3项目时,是否经历过这样的场景?新人提交的代码里混杂着选项式API和组合式API,路由命名忽而短横线忽而大驼峰,样式文件里散落着各种魔…...
SpringBoot整合MQTT实战:手把手教你实现设备动态连接与主题订阅管理(附完整源码)
SpringBoot整合MQTT实战:动态连接与主题订阅管理的工程化实现 在物联网项目开发中,设备连接管理和消息路由的灵活性往往是系统设计的难点。想象这样一个场景:你的智慧农业系统需要随时接入新部署的土壤传感器,气象站设备可能因网…...
水库调度员必看:动态规划在月度发电计划中的5个避坑指南
水库调度员实战指南:动态规划在月度发电计划中的5个关键避坑策略 在水利工程领域,水库调度是一项集科学性、技术性和艺术性于一体的复杂工作。作为水库调度员,我们每天都在与时间、水量和电力需求进行着精妙的博弈。而动态规划作为一种强大的…...
