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

制作Oracle11g Docker 镜像

  1. 基于Linux系统,宿主主机要设置如下环境变量,oracle为64位版本
    dockerfile中需要的数据库安装包可从csdn下载内找到
#!/bin/bash
# 在宿主机上运行以设置Oracle所需的内核参数
# 这些命令需要root权限cat > /etc/sysctl.d/99-oracle.conf << EOF
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
EOF# 应用设置
sysctl -p /etc/sysctl.d/99-oracle.conf# 设置Docker守护程序启动参数,允许容器使用特定的内核功能
cat > /etc/docker/daemon.json << EOF
{"default-ulimits": {"nofile": {"name": "nofile","hard": 65536,"soft": 1024},"memlock": {"name": "memlock","hard": -1,"soft": -1}}
}
EOF# 重启Docker服务以应用设置
systemctl restart docker
  1. 制作Dockerfile
FROM dockerproxy.net/library/oraclelinux:7-slim# 安装必要的包
RUN yum -y install oracle-rdbms-server-11gR2-preinstall unzip# 设置环境变量
ENV ORACLE_BASE=/u01/app/oracle \ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe \ORACLE_SID=ORCL \ORACLE_DATA=/u01/app/oracle/oradata \PATH=$PATH:/u01/app/oracle/product/11.2.0/xe/bin# 创建必要的目录并设置正确的所有权
# 在创建用户后设置oracle用户密码
RUN set -e \&& mkdir -p $ORACLE_HOME \&& mkdir -p $ORACLE_DATA/ORCL \&& mkdir -p /u01/app/oraInventory \&& groupadd -g 54321 oinstall || true \&& groupadd -g 54322 dba || true \&& useradd -u 54321 -g oinstall -G dba oracle || true \&& echo "oracle:oracle" | chpasswd \&& chown -R oracle:dba /u01 \&& chmod -R 775 /u01 \&& echo "Directory and user setup completed successfully"# 创建响应文件
RUN echo "ORACLE_HTTPS_PORT=8080" > /tmp/xe.rsp && \echo "ORACLE_HTTP_PORT=8090" >> /tmp/xe.rsp && \echo "ORACLE_PASSWORD=oracle" >> /tmp/xe.rsp && \echo "ORACLE_CONFIRM_PASSWORD=oracle" >> /tmp/xe.rsp && \echo "ORACLE_DBENABLE=y" >> /tmp/xe.rsp# 假设您已经下载了Oracle 11g的安装文件并放在当前目录
COPY oracle-xe-11.2.0-1.0.x86_64.rpm.zip /tmp/# 解压安装文件并安装
USER oracle
RUN unzip /tmp/oracle-xe-11.2.0-1.0.x86_64.rpm.zip -d /tmpUSER root
RUN rpm -ivh --nodeps --force /tmp/Disk1/oracle-xe-11.2.0-1.0.x86_64.rpm && \rm -rf /tmp/Disk1 /tmp/oracle-xe-11.2.0-1.0.x86_64.rpm.zip# 配置Oracle
RUN /etc/init.d/oracle-xe configure responseFile=/tmp/xe.rsp || true && \# 确保配置文件存在mkdir -p $ORACLE_HOME/network/admin && \# 强制修改监听器配置sed -i 's/HOST=buildkitsandbox/HOST=0.0.0.0/g' $ORACLE_HOME/network/admin/listener.ora && \# 如果替换失败,直接创建正确的配置echo "LISTENER = \(DESCRIPTION_LIST = \(DESCRIPTION = \(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) \(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) \) \) \" > $ORACLE_HOME/network/admin/listener.ora || true# 修改监听器配置,使用0.0.0.0代替默认主机名
RUN sed -i 's/HOST=buildkitsandbox/HOST=0.0.0.0/g' $ORACLE_HOME/network/admin/listener.ora || true# 创建初始化参数文件
USER oracle
RUN echo "db_name=ORCL" > $ORACLE_HOME/dbs/initORCL.ora && \echo "processes=150" >> $ORACLE_HOME/dbs/initORCL.ora && \echo "db_block_size=8192" >> $ORACLE_HOME/dbs/initORCL.ora && \echo "sga_target=800M" >> $ORACLE_HOME/dbs/initORCL.ora && \echo "pga_aggregate_target=200M" >> $ORACLE_HOME/dbs/initORCL.ora && \echo "remote_login_passwordfile=EXCLUSIVE" >> $ORACLE_HOME/dbs/initORCL.ora && \echo "control_files=('/u01/app/oracle/oradata/ORCL/control01.ctl', '/u01/app/oracle/oradata/ORCL/control02.ctl')" >> $ORACLE_HOME/dbs/initORCL.ora# 创建数据库创建脚本
RUN echo "CREATE DATABASE ORCL" > /tmp/create_db.sql && \echo "USER SYS IDENTIFIED BY oracle" >> /tmp/create_db.sql && \echo "USER SYSTEM IDENTIFIED BY oracle" >> /tmp/create_db.sql && \echo "LOGFILE GROUP 1 ('/u01/app/oracle/oradata/ORCL/redo01.log') SIZE 100M," >> /tmp/create_db.sql && \echo "        GROUP 2 ('/u01/app/oracle/oradata/ORCL/redo02.log') SIZE 100M," >> /tmp/create_db.sql && \echo "        GROUP 3 ('/u01/app/oracle/oradata/ORCL/redo03.log') SIZE 100M" >> /tmp/create_db.sql && \echo "MAXLOGFILES 5" >> /tmp/create_db.sql && \echo "MAXLOGMEMBERS 5" >> /tmp/create_db.sql && \echo "MAXLOGHISTORY 1" >> /tmp/create_db.sql && \echo "MAXDATAFILES 100" >> /tmp/create_db.sql && \echo "CHARACTER SET AL32UTF8" >> /tmp/create_db.sql && \echo "NATIONAL CHARACTER SET AL16UTF16" >> /tmp/create_db.sql && \echo "EXTENT MANAGEMENT LOCAL" >> /tmp/create_db.sql && \echo "DATAFILE '/u01/app/oracle/oradata/ORCL/system01.dbf'" >> /tmp/create_db.sql && \echo "  SIZE 325M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED" >> /tmp/create_db.sql && \echo "SYSAUX DATAFILE '/u01/app/oracle/oradata/ORCL/sysaux01.dbf'" >> /tmp/create_db.sql && \echo "  SIZE 325M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED" >> /tmp/create_db.sql && \echo "DEFAULT TABLESPACE users" >> /tmp/create_db.sql && \echo "  DATAFILE '/u01/app/oracle/oradata/ORCL/users01.dbf'" >> /tmp/create_db.sql && \echo "  SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED" >> /tmp/create_db.sql && \echo "DEFAULT TEMPORARY TABLESPACE temp" >> /tmp/create_db.sql && \echo "  TEMPFILE '/u01/app/oracle/oradata/ORCL/temp01.dbf'" >> /tmp/create_db.sql && \echo "  SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED" >> /tmp/create_db.sql && \echo "UNDO TABLESPACE undotbs1" >> /tmp/create_db.sql && \echo "  DATAFILE '/u01/app/oracle/oradata/ORCL/undotbs01.dbf'" >> /tmp/create_db.sql && \echo "  SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED;" >> /tmp/create_db.sql# 创建启动脚本
RUN echo '#!/bin/bash' > /tmp/start_oracle.sh && \echo 'export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe' >> /tmp/start_oracle.sh && \echo 'export ORACLE_SID=ORCL' >> /tmp/start_oracle.sh && \echo 'export PATH=$PATH:$ORACLE_HOME/bin' >> /tmp/start_oracle.sh && \# 添加这行在启动监听器之前修复配置文件echo '# 修复监听器配置' >> /tmp/start_oracle.sh && \echo 'sed -i "s/HOST=buildkitsandbox/HOST=0.0.0.0/g" $ORACLE_HOME/network/admin/listener.ora' >> /tmp/start_oracle.sh && \echo '' >> /tmp/start_oracle.sh && \echo '# 启动监听器' >> /tmp/start_oracle.sh && \echo '$ORACLE_HOME/bin/lsnrctl start' >> /tmp/start_oracle.sh && \echo '' >> /tmp/start_oracle.sh && \echo '# 确认数据库是否已存在' >> /tmp/start_oracle.sh && \echo 'if [ ! -f /u01/app/oracle/oradata/ORCL/system01.dbf ] || [ ! -f /u01/app/oracle/oradata/ORCL/control01.ctl ]; then' >> /tmp/start_oracle.sh && \echo '  echo "数据库文件不存在,开始创建新数据库..."' >> /tmp/start_oracle.sh && \echo '  $ORACLE_HOME/bin/sqlplus / as sysdba << EOF' >> /tmp/start_oracle.sh && \echo '  STARTUP NOMOUNT PFILE=$ORACLE_HOME/dbs/initORCL.ora;' >> /tmp/start_oracle.sh && \echo '  @/tmp/create_db.sql' >> /tmp/start_oracle.sh && \echo '  @?/rdbms/admin/catalog.sql' >> /tmp/start_oracle.sh && \echo '  @?/rdbms/admin/catproc.sql' >> /tmp/start_oracle.sh && \echo '  @?/rdbms/admin/utlrp.sql' >> /tmp/start_oracle.sh && \echo '  ALTER SYSTEM REGISTER;' >> /tmp/start_oracle.sh && \echo '  EXIT;' >> /tmp/start_oracle.sh && \echo 'EOF' >> /tmp/start_oracle.sh && \echo 'else' >> /tmp/start_oracle.sh && \echo '  echo "数据库文件已存在,启动现有数据库..."' >> /tmp/start_oracle.sh && \echo '  $ORACLE_HOME/bin/sqlplus / as sysdba << EOF' >> /tmp/start_oracle.sh && \echo '  STARTUP PFILE=$ORACLE_HOME/dbs/initORCL.ora;' >> /tmp/start_oracle.sh && \echo '  ALTER SYSTEM REGISTER;' >> /tmp/start_oracle.sh && \echo '  EXIT;' >> /tmp/start_oracle.sh && \echo 'EOF' >> /tmp/start_oracle.sh && \echo 'fi' >> /tmp/start_oracle.sh && \echo '' >> /tmp/start_oracle.sh && \# 替换原来的tail命令为改进版本echo '# 保持容器运行' >> /tmp/start_oracle.sh && \echo 'echo "数据库启动完成,监听中..."' >> /tmp/start_oracle.sh && \echo '# 查找正确的警报日志文件' >> /tmp/start_oracle.sh && \echo 'ALERT_LOG=$(find $ORACLE_HOME/diag -name "alert_*.log" 2>/dev/null | head -1)' >> /tmp/start_oracle.sh && \echo 'if [ -f "$ALERT_LOG" ]; then' >> /tmp/start_oracle.sh && \echo '    # 如果找到警报日志,则跟踪它' >> /tmp/start_oracle.sh && \echo '    echo "找到警报日志: $ALERT_LOG"' >> /tmp/start_oracle.sh && \echo '    tail -f $ALERT_LOG' >> /tmp/start_oracle.sh && \echo 'else' >> /tmp/start_oracle.sh && \echo '    # 如果没有找到警报日志,使用简单的睡眠循环保持容器运行' >> /tmp/start_oracle.sh && \echo '    echo "警报日志文件未找到,使用睡眠循环保持容器运行..."' >> /tmp/start_oracle.sh && \echo '    while true; do' >> /tmp/start_oracle.sh && \echo '        sleep 60' >> /tmp/start_oracle.sh && \echo '    done' >> /tmp/start_oracle.sh && \echo 'fi' >> /tmp/start_oracle.shUSER root
RUN cp /tmp/start_oracle.sh / && \chmod +x /start_oracle.sh# 声明持久化卷
VOLUME ["$ORACLE_DATA"]# 健康检查
HEALTHCHECK --interval=60s --timeout=30s --start-period=5m --retries=3 \CMD su - oracle -c "$ORACLE_HOME/bin/sqlplus -s system/oracle@localhost:1521/ORCL <<< \"select 1 from dual;\"" || exit 1EXPOSE 1521 8080
USER oracle
CMD ["/start_oracle.sh"]

说明:

  • 系统oracle账户密码为:oracle
  • 创建默认数据库普通账户
    • 账户名system
    • 密码 oracle
  1. 生成镜像及发布容器流程:
# 新建镜像重新发布流程
# 停止正在运行的容器, 如果之前存在失败安装可运行此步骤
docker stop oracle11g# 删除容器, 如果之前存在失败安装可运行此步骤
docker rm oracle11g# 列出所有镜像,找到镜像ID, 如果之前存在失败安装可运行此步骤
docker images# 删除镜像(使用镜像名称或ID), 如果之前存在失败安装可运行此步骤
docker rmi oracle11g-xe# 在包含Dockerfile的目录中执行
docker build -t oracle11g-xe .# 启动容器
docker run -d \--name oracle11g \--privileged \--shm-size=1g \-p 1521:1521 \-p 8080:8080 \-v oracle_data:/u01/app/oracle/oradata \oracle11g-xe# 查看容器日志
docker logs -f oracle11g  # 在容器内连接
docker exec -it oracle11g sqlplus system/oracle@localhost:1521/ORCL# 从宿主机连接
sqlplus system/oracle@localhost:1521/ORCL# 导出oracle镜像
docker save -o oracle11g.tar oracle11g-xe

相关文章:

制作Oracle11g Docker 镜像

基于Linux系统&#xff0c;宿主主机要设置如下环境变量&#xff0c;oracle为64位版本 dockerfile中需要的数据库安装包可从csdn下载内找到 #!/bin/bash # 在宿主机上运行以设置Oracle所需的内核参数 # 这些命令需要root权限cat > /etc/sysctl.d/99-oracle.conf << EO…...

Excel处理控件Spire.XLS系列教程:C# 在 Excel 中添加或删除单元格边框

单元格边框是指在单元格或单元格区域周围添加的线条。它们可用于不同的目的&#xff0c;如分隔工作表中的部分、吸引读者注意重要的单元格或使工作表看起来更美观。本文将介绍如何使用 Spire.XLS for .NET 在 C# 中添加或删除 Excel 单元格边框。 安装 Spire.XLS for .NET E-…...

MAC-在使用@Async注解的方法时,分布式锁管理和释放

在使用 @Async 注解的异步方法中管理分布式锁时,需要特别注意 ​锁的获取、释放与异步执行的生命周期匹配。以下是结合 Spring Boot 和 Redis 分布式锁的实践方案: 1. 为什么需要分布式锁? 异步方法可能被多个线程/服务实例并发执行,若访问共享资源(如数据库、缓存),需…...

Flink启动任务

Flink 以本地运行作为解读&#xff0c;版本1.16.0 文章目录 Flink前言StreamExecutionEnvironmentLocalExecutorMiniCluster启动MiniCluster TaskManagerTaskExecutor提交Task(submitTask) StreamGraph二、使用步骤1.引入库2.读入数据 总结 前言 提示&#xff1a;这里可以添加…...

「低延迟+快速集成:Amazon IVS如何重塑实时互动视频体验?」

引言&#xff1a;实时视频的爆发与开发痛点 随着直播电商、在线教育、云游戏的兴起&#xff0c;实时视频互动成为用户体验的核心。但自建视频服务面临高成本、高延迟、运维复杂等挑战。Amazon IVS&#xff08;Interactive Video Service&#xff09;作为亚马逊云科技推出的全托…...

Web开发-JS应用NodeJS原型链污染文件系统Express模块数据库通讯

知识点&#xff1a; 1、安全开发-NodeJS-开发环境&功能实现 2、安全开发-NodeJS-安全漏洞&案例分析 3、安全开发-NodeJS-特有漏洞 node.js就是专门运行javascript的一个应用程序&#xff0c;区别于以往用浏览器解析原生js代码&#xff0c;node.js本身就可以解析执行js代…...

描述@keyframes规则在 CSS 动画中的原理及作用,如何创建一个简单的动画

大白话描述keyframes规则在 CSS 动画中的原理及作用&#xff0c;如何创建一个简单的动画&#xff1f; 嘿&#xff0c;朋友&#xff01;咱来聊聊 CSS 里超酷的 keyframes 规则。这玩意儿就像是动画的剧本&#xff0c;能让网页元素动起来&#xff0c;就像给它们施了魔法一样&…...

国产达梦(DM)数据库的安装(Linux系统)

目录 一、安装前的准备工作 1.1 导包 1.2 创建用户和组 1.3 修改文件打开最大数 1.4 目录规划 1.5 修改目录权限 二、安装DM8 2.1 挂载镜像 2.2 命令行安装 2.3 配置环境变量 2.4 启动图形化界面 三、配置实例 四、注册服务 五、启动 停止 查看状态 六、数据库客…...

AI日报 - 2025年3月24日

&#x1f31f; 今日概览&#xff08;60秒速览&#xff09; ▎&#x1f916; AGI突破 | Lyra生物序列建模架构效率惊人 在100生物任务中达最优&#xff0c;推理速度提升高达12万倍 ▎&#x1f4bc; 商业动向 | OpenAI用户破4亿&#xff0c;Meta与Reliance探讨AI合作 生态扩展与全…...

git的底层原理

git的底层原理 三段话总结git&#xff0c; 1. 工作原理&#xff1a;git管理是一个DAG有向无环图&#xff0c;HEAD指针指向branch或直接指向commit&#xff0c;branch指向commit&#xff0c;commit指向tree&#xff0c;tree指向别的tree或直接指向blob。 2. git所管理的一个目录…...

【Spring】Spring框架介绍

在 Java 企业级应用开发领域&#xff0c;Spring 框架凭借强大功能、高度灵活性与卓越扩展性&#xff0c;成为众多开发者构建大型应用系统的首选。接下来为大家深入剖析 Spring 框架的核心特性、架构设计及实际项目应用。​ 一、Spring 框架简介​ Spring 框架由 Rod Johnson …...

MATLAB+Arduino利用板上的按键控制板上Led灯

几年不使用&#xff0c;之前的知识都忘掉了。需要逐步捡起来。 1 熟悉按键的使用 2熟悉灯的控制 1 电路 我们将通过 MATLAB 的 Arduino 支持包与 Arduino 板通信&#xff0c;读取按键状态并控制 LED 灯的亮灭。 按键&#xff1a;连接到 Arduino 的数字引脚&#xff08;例如…...

AI比人脑更强,因为被植入思维模型【21】冯诺依曼思维模型

定义 冯诺依曼思维模型是一种基于数理逻辑和系统分析的思维方式&#xff0c;它将复杂的问题或系统分解为若干个基本的组成部分&#xff0c;通过建立数学模型和逻辑规则来描述和分析这些部分之间的关系&#xff0c;进而实现对整个系统的理解和优化。该模型强调从整体到局部、再…...

【QA】Qt中有哪些命令模式的运用?

在 C/Qt 中&#xff0c;命令模式&#xff08;Command Pattern&#xff09;的实现通常用于封装操作请求、支持撤销/重做&#xff08;Undo/Redo&#xff09;或解耦调用者与接收者。以下是几种常见的实现方式及示例&#xff1a; 1. Qt 的 QUndoCommand 和 QUndoStack&#xff08;内…...

【连续自然数的和,双指针找区间】

对一个给定的正整数 MM&#xff0c;求出所有的连续的正整数段&#xff08;每一段至少有两个数&#xff09;&#xff0c;这些连续的自然数段中的全部数之和为 MM。 例子&#xff1a;19981999200020012002100001998199920002001200210000&#xff0c;所以从 19981998 到 2002200…...

Cocos Creator Shader入门实战(五):材质的了解、使用和动态构建

引擎&#xff1a;3.8.5 您好&#xff0c;我是鹤九日&#xff01; 回顾 前面的几篇文章&#xff0c;讲述的主要是Cocos引擎对Shader使用的一些固定规则&#xff0c;这里汇总下&#xff1a; 一、Shader实现基础是OpenGL ES可编程渲染管线&#xff0c;开发者只需关注顶点着色器和…...

vue设置自定义logo跟标题

准备 Logo 图片 将自定义的 Logo 图片&#xff08;如 logo.png&#xff09;放置在项目的 public文件夹下。 使用环境变量设置 Logo 和标题&#xff08;可选&#xff09; 创建或修改 .env 文件 在项目根目录下创建或修改 .env 文件&#xff0c;添加以下内容&#xff1a; VITE_A…...

Linux 账号和权限管理命令选项解释

用户账号文件 配置文件 /etc/passwd&#xff1a;用于保存用户 输出如下&#xff1a; root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin 每一行代表一个用户&…...

尝试在软考65天前开始成为软件设计师-计算机网络

OSI/RM 七层模型 层次名功能主要协议7应用层实现具体应用功能 FTP(文件传输)、HTTP、Telnet、 POP3(邮件)SMTP(邮件) ------- DHCP、TFTP(小文件)、 SNMP、 DNS(域名) 6表示层数据格式,加密,压缩.....5会话层建立,管理&终止对话4传输层端到端连接TCP,UDP3网络层分组传输&a…...

VMware主机换到高配电脑,高版本系统的问题

原来主机是i3 ,windows7系统&#xff0c;vmware 14.0,虚机系统是ubuntu 14.04。目标新机是i7 14700KF,windows11系统。原以为安装虚拟机&#xff0c;将磁盘文件&#xff0c;虚拟机配置文件拷贝过去可以直接用。 新目标主机先安装了vmware 15&#xff0c;运行原理虚机&#xff0…...

2025年3月 CCF GESP C++ 二级 真题解析

1. 单选题(每题2分&#xff0c;共30分) 第1题 试题&#xff1a;2025年春节有两件轰动全球的事件&#xff0c;一个是DeepSeek横空出世&#xff0c;另一个是贺岁片《哪吒2》票房惊人&#xff0c;入了全球票房榜。下面关于DeepSeek与《哪吒2》的描述成立的是( )。 A. 《哪吒2》是一…...

Nginx请求头Hos头攻击

HTTP请求头中的Host字段用于指定客户端请求的目标主机名&#xff08;域名/IP&#xff09;。当Nginx作为反向代理时&#xff0c;可利用该字段进行访问控制&#xff0c;防止非法域名或IP直接访问服务。 解决方法&#xff1a;添加判断请求头&#xff0c;如果不是指定请求头&#…...

2025年03月10日人慧前端面试(外包滴滴)

目录 普通函数和箭头函数的区别loader 和 plugin 的区别webpack 怎么实现分包&#xff0c;为什么要分包webpack 的构建流程变量提升react 开发中遇到过什么问题什么是闭包vue 开发中遇到过什么问题vue中的 dep 和 watcher 的依赖收集是什么阶段什么是原型链react setState 是同…...

【Linux内核系列】:动静态库详解

&#x1f525; 本文专栏&#xff1a;Linux &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; 有些鸟儿是注定是关不住的&#xff0c;因为它们的每一片羽翼都沾满了自由的光辉 ★★★ 本文前置知识&#xff1a; 编译与链接的过程…...

maptalks图层交互 - 模拟 Tooltip

maptalks图层交互 - 模拟 Tooltip 图层交互-模拟tooltip官方文档 <!DOCTYPE html> <html><meta charsetUTF-8 /><meta nameviewport contentwidthdevice-width, initial-scale1 /><title>图层交互 - 模拟 Tooltip</title><style typet…...

windows环境下NER Python项目环境配置(内含真的从头安的perl配置)

注意 本文是基于完整项目的环境配置&#xff0c;即本身可运行项目你拿来用 其中有一些其他问题&#xff0c;知道的忽略即可 导入pycharm基本包怎么下就不说了&#xff08;这个都问&#xff1f;给你一拳o(&#xff40;ω*)o&#xff09; 看perl跳转第5条 1.predict报错多个设备…...

IDEA批量替换项目下所有文件中的特定内容

文章目录 1. 问题引入2. 批量替换项目下所有文件中的特定内容2.1 右键项目的根目录&#xff0c;点击在文件中替换2.2 输入要替换的内容 3. 解决替换一整行文本后出现空行的问题4. 增加筛选条件提高匹配的精确度 更多 IDEA 的使用技巧可以查看 IDEA 专栏&#xff1a; IDEA 1. 问…...

【计算机网络】网络编程

文章目录 1. 客户端/服务器2. TCP/UDP协议3. 网络编程套接字-socket3.1 API的使用3.1 DatagramScoket类3.1 DatagramScoket类 4. 通过UDP实现回显服务器程序4.1 服务器代码4.2 客户端代码4.3 代码执行过程4.4 通过UDP实现翻译客户端 5. 通过TCP实现回显服务器5.1 服务器代码5.2…...

Django 中@login_required 配置详解

在 Django 中对 login_required 进行配置&#xff0c;主要涉及全局配置和视图函数局部配置两方面&#xff0c;下面为你详细介绍配置方法。 全局配置 全局配置主要是设定默认的登录 URL&#xff0c;也就是当未登录用户尝试访问被 login_required 装饰的视图时&#xff0c;会被…...

【408--复习笔记】数据结构

【408--复习笔记】数据结构 1.绪论2.线性表3.栈、队列、数组4.串5.树与二叉树6.图7.查找8.排序 1.绪论 2.线性表 3.栈、队列、数组 4.串 5.树与二叉树 6.图 7.查找 8.排序...