浅析Centos7安装Oracle12数据库
Linux下的Oracle数据库实在是太难安装了,事贼多,我都怀疑能安装成功是不是运气的成分更高一些。这里虚拟机是VMware Workstation 15.5,操作系统是Centos7,Oracle版本是Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production。
Oracle下载链接: https://pan.baidu.com/s/1koFPbw26lxCcsIdPEsuZXQ?pwd=nwvk 提取码: nwvk
1、在虚拟机上安装Centos7
要求:
a、物理内存:2G【建议啊】
b、硬盘:40G【默认20G是不够的】
c、 swap交换分区:3G【小于3G则Oracle安装检查环境时会提示swap大小不足,当然右上角有相关选项,勾选是可以略过这步的,但没必要,不至于穷到连3G都不能给swap】
d、带GUI的服务器【不能最小安装,因为Oracle12的安装是带有图形界面的】
e、为Centos7设置固定IP【这个想当服务器用的都得有固定IP吧】
开始:
创建新的虚拟机

选择【典型】,点击【下一步】按钮

选择【稍后安装操作系统】,点击【下一步】

选择【Linux】与【CentOS 7 64位】,点击【下一步】

改好Centos7要安放的位置后点击【下一步】

硬盘改为40G,默认的20G不够,点击【下一步】

点击【自定义硬件】

点击【关闭】按钮后再点击【完成】按钮。

点击【编辑虚拟机设置】

将你的Centos7的镜像文件【我的是CentOS-7-x86_64-DVD-1810.iso】挂载到光盘上准备运行。点击【确定】按钮。

点击【开启此虚拟机】,等待安装。

鼠标点击进入安装界面【注:一定要点击进去啊,不会就点击屏幕中央位置,然后鼠标会改变形状】后按向上的方向键,使【Install CentOs 7】选项变白,回车开始安装。这时鼠标是在安装界面里的,要想出来可按【Ctrl+Alt】。

安装界面语言选择【中文】(鼠标要点入安装界面啊),点击【继续】按钮。
进入安装选择界面后要多等待一会,程序要检查软件安装依赖关系,这时不要乱点。

先改日期时间

亚洲+上海,改完日期与时间后点击左上角【完成】按钮。

点击【软件选择】,默认是最小安装,这个不行,得改为带GUI的服务器。

点击【完成】按钮后程序会重新检查软件依赖关系,等会,别乱动,这个看机器性能,我机器慢,等了好几分钟呢。

点击【安装位置】,我们要手工分区。

点击【我要配置分区】,再点击【完成】按钮。

将新挂载点将使用的分区方案改为【标准分区】

再点击【+】按钮

首先是挂载【/boot】引导分区,容量1G就够了。点击【添加挂载点】

将文件系统改为【ext4】格式。再点击左下角的【+】按钮

其次选择【swap】交换分区,容量3G,这个很重要,点击【添加挂载点】

文件系统默认是swap格式的,不用动。再点击【+】按钮

最后挂载【/】根目录,容量不用填。点击【添加挂载点】按钮。

将文件系统改为【ext4】格式。点击左上角的【完成】按钮

点击【接受更改】按钮完成安装位置选项。

点击【KDUMP】按钮

去掉【启用kdump】选项,点击【完成】按钮。

点击【网络和主机名】

修改主机名,再点击【应用】按钮。

再点击右上角【打开/关闭】按钮

打开网络连接。这里要记住路由与DNS的地址,后面配置固定IP要用到。点击【完成】按钮。

点击【SECURITY POLICY】选项。

点击【打开/关闭】按钮,取消密码安全性限制。

点击【完成】按钮。

点击【开始安装】按钮

先设置root密码

我设的密码太简单,需要点2次【完成】按钮才能成功。再点击【创建用户】

密码简单,再点击2次【完成】按钮才创建用户成功。
耐心等待安装就行......

漫长的时间啊,终于等到了,点击【重启】按钮。

这里要接受许可。

点击【完成】按钮。

网络和主机名我们前面配置过,这里就不用再配置了。点击【完成配置】按钮。

这里点击【未列出】,我们要用root登录系统。

输入密码后进入系统界面。

点击右上角【前进】按钮,再点击【前进】按钮

这里关闭隐私,再点击【前进】按钮,再点击下一界面的【跳过】按钮,再点击下一界面的开始使用按钮。

点击右上角的【X】退出。终于进来正常的界面了。

2、为安装Oracle数据库做准备工作
换yum源:
我发现yum原来默认的国外镜像网站不好用了,你说操蛋不,我得换成阿里云的镜像网站,你的yum要是没事就可以略过此步。
鼠标右键点击桌面,右键菜单选择【打开终端】

我执行yum list提示如下

真的不好用了啊,必须为yum换源了。
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

清除本地yum缓存、索引、头文件、插件
yum clean all
把服务器的包信息下载到本地电脑缓存起来
yum makecache

更新已安装软件版本,防止与原来yum源安装的软件依赖发生意外冲突。但不更新linux内核。
yum -y upgrade

这个时间有点长,等待。更新完成后测试了一下yum,发现OK。
yum search ifconfig

设置固定IP:
编辑网络配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33

首先将 BOOTPROTO="dhcp" 改为 BOOTPROTO="static",我这里将其注释了然后重新复制一份再修改。
最后再在最后面补充以下内容
IPADDR="192.168.126.100"
NETMASK="255.255.255.0"
GATEWAY="192.168.126.2"
DNS1="192.168.126.2"

按【esc】键,再按【:wq】保存退出。
IPADDR是本机固定IP,NETMASK是掩码,GATEWAY是网关,DNS1是首选DNS。前面安装网络与主机名时有下面的界面显示了IP相关信息,我们原样拿过来用就行,我就把IP改了一下,100好记。

若前面安装忘记了网络相关信息也不怕,点击虚拟机VMware的菜单【编辑】

下的【虚拟网络编辑器】菜单

点击【NAT】模式,再点击【NAT设置】按钮

在这里也能看到网络IP相关信息。
执行下列代码让网络马上生效
systemctl restart network
再执行下面代码查看网络具体信息。
ifconfig

关闭防火墙:
关闭防火墙为了防止安装过程中的某些操作被防火墙阻止,确保安装程序可以正常访问所需要的端口与服务。安装完成后再重新启动防火墙并开放oracle的1521端口就行。
执行下面3条命令
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
【systemctl stop firewalld.service】是关闭防火墙
【systemctl disable firewalld.service】是禁止防火墙的开机自启
【systemctl status firewalld.service】是查看防火墙状态

安装依赖包:
yum install -y binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33.i686 glibc glibc.i686 glibc-devel glibc-devel.i686 ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libX11 libX11.i686 libXau libXau.i686 libXi libXi.i686 libXtst libXtst.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel libstdc++-devel.i686 libxcb libxcb.i686 make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel gcc gcc-c++ libXext libXext.i686 zlib-devel zlib-devel.i686
这些都是要安装Oracle数据库的软件依赖包,好多啊,有些依赖包前面安装系统时已经安装过了,还有些未安装过的。这些依赖包内容可以在Oracle官网上的文档中查到。

执行下面命令检查依赖包是否全部安装完成
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils compat-libcap1 compat-libstdc++-33 cpp gcc gcc-c++ glibc glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make mpfr sysstat

基本上不会有什么问题。
创建组:
groupadd oinstall
groupadd dba
groupadd oper
groupadd osoper
这里创建了4个组。
创建用户并修改密码:
useradd -g oinstall -G dba,oper oracle
passwd oracle

这里创建oracle用户来管理Oracle数据库的安装及后面的日常操作。该用户隶属于【oinstall】组,附加组是【dba】与【oper】。
修改内核限制参数:
vim /etc/security/limits.conf
在配置文件末尾插入下面内容
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240

按【esc】键,再按【:wq】保存退出。
其中【oracle soft nproc 2047】是单用户可使用进程数量
【oracle soft nofile 1024】是用户可打开文件数量
【oracle soft stack 10240】是堆栈设置
手动配置内核参数:
vim /etc/sysctl.conf
在配置文件末尾插入下面内容
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

按【esc】键,再按【:wq】保存退出。
刷新内核参数,使其马上生效。
sysctl -p

修改login配置文件:
vim /etc/pam.d/login
在配置文件末尾插入下面内容
session required /lib64/security/pam_limits.so
session required pam_limits.so

按【esc】键,再按【:wq】保存退出。
修改profile文件:
vim /etc/profile
在配置文件末尾插入下面内容
if [ $USER = "oracle" ] ; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi

按【esc】键,再按【:wq】保存退出。
配置环境变量:
创建Oracle安装软件的存放目录,后面我们会把该文件拷贝到此目录下。
mkdir -p /setup/oracle
创建Oracle数据库软件安装目录,后面安装时会将Oracle数据库安装到此目录下。
mkdir -p /app/oracle/product/12.1.0/dbhome_1
配置oracle用户的环境变量,后面我们要用前面创建的oracle用户来专门安装管理Oracle12数据库,因此这里要特意为该用户配置一下环境变量,别的用户是不能管理Oracle数据库的。
vim /home/oracle/.bash_profile
在配置文件末尾插入下面内容
export ORACLE_BASE=/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH

按【esc】键,再按【:wq】保存退出。
刷新配置,使其马上生效。
source /home/oracle/.bash_profile
进入到Oracle软件存放目录
cd /setup/oracle
将oracle安装软件拷贝到该目录,我用的是MobaXterm软件,用啥软件都行,能把文件拷贝过来就行。

拷贝完毕后回到Centos的终端窗口,查看文件
ls

2个文件都已经拷贝过来了,下面解压这2个文件。
【注】:若无unzip软件可先安装【yum -y install unzip】
unzip V46095-01_1of2.zip
unzip V46095-01_2of2.zip
重新查看一下该目录下文件
ls

2个压缩文件已经解压到 /setup/oracle/database目录下了。
文件授权:
后面我们要用oracle用户登录来安装Oracle数据库,而前面的所有操作都是用root用户来完成的,所以必须把Oracle数据库的安装软件授权给oracle用户,否则无权管理这些文件。
chown -R oracle:oinstall /setup/oracle/database/
查看一下授权后内容
ll

可以看到 /setup/oracle/databae/ 目录及其下属所有文件都已经改为oracle用户所有了。
同理我们再把Oracle数据库软件要安装到的目录也更改一下权限,因为该目录也是用root用户建立的,不改不行啊!
chown -R oracle:oinstall /app/
建议现在重启,然后在虚拟机上以oracle用户登录
reboot
因为改了很多东西,也不知道有没有问题,改没改错,重启看一下。

这里我们用oracle用户登录

没问题,进来了,由于头一次使用oracle用户登录,需要一些配置,与前面的相同,这里略。
在桌面上按右键选择【打开终端】,这回真的要开始安装Oracle了。
若不想重启系统的话也没毛病,切换用户即可。
su - oracle
【
设置DISPLAY变量:
我是在虚拟机上直接安装Oracle数据库,因此不用设置DISPLAY变量。但若你是在客户端连接软件上的话那就麻烦了,需安装支持图形界面的软件,还得设置DISPLAY变量
export DISPLAY=192.168.126.100:0.0
xclock
】
临时将系统换成英文
因为Oracle安装包提供的jdk内缺少中文字体,安装时显示的都是乱码,因此最简单的方法就是临时将系统的中文改为英文。
export LANG=en_us
进入Oracle软件存放目录
cd /setup/oracle/database
显示目录内容
ll

运行该文件
./runInstaller

检测通过,可以启动Oralce安装界面了。

我服了,分辨率不够,看不到安装界面全景啊。继续改!
选择Centos左上角菜单【应用程序】->【系统工具】->【设置】

点击【设备】

修改高分辨率

点击【应用】按钮,再点击【保留更改】按钮。拉动底下向右滚动条,点击右上角的【X】退出即可。这回就能看全了。


去掉勾选,点击【next】按钮。【上面2图中的下图是从网上找的中文对照,省得看得不习惯】


选择【yes】按钮


点击【next】按钮。


选择【Server class】,点击【next】按钮。


选择【Single instance database installation】,点击【next】按钮。

选择【Typical install】典型安装,点击【next】按钮。


翻译不完全一样,大致对照理解一下就行。输入新数据库登录密码,去掉【Create Container databae】勾选,点击【next】按钮。

密码太简单,提示安全问题,不管它,选【Yes】继续。

点击【next】按钮。

上面是检测安装环境,若是前面swap未设置3G这里就会有提示。我们继续

没问题,点击【install】按钮

安装中。。。

这是2个shell文件,需要以root用户权限来执行
回到终端窗口,先按一下回车显示正常状态,然后切换用户
su
输入密码后执行第一条命令
/app/oraInventory/orainstRoot.sh
再执行第二条命令
/app/oracle/product/12.1.0/dbhome_1/root.sh
这里会有个提示,停顿一下,回车即可。

回到Oralce安装窗口点击刚才那个弹出窗口中的【ok】按钮,继续安装中。。。

Oracle安装程序开始创建数据库了

点击【ok】按钮。

数据库安装成功,点击【close】按钮结束。
收尾工作:
【确保我们现在是以root用户登录,刚才前面执行2个shell命令时已经改过了。】
数据库自启动
重启linux后oracle数据库是不会自动启动的,得我们手工配置一下才行。
a、修改Oracle的配置文件
vim /etc/oratab
将 【orcl:/app/oracle/product/12.1.0/dbhome_1:N】
改为【orcl:/app/oracle/product/12.1.0/dbhome_1:Y】
就是将最后一个字母N改为Y就ok了。

按【esc】键,再按【:wq】保存退出。
b、修改Centos的自启动配置文件
vim /etc/rc.d/rc.local
rc.local是开机启动文件,通过编辑该文件,用户可以自定义开机启动程序。
将需要开机启动的程序命令或脚本路径添加到该文件中,系统启动时该文件将被自动执行。
将下面的内容添加到该配置文件中。
su oracle -lc "/app/oracle/product/12.1.0/dbhome_1/bin/dbstart"
su oracle -lc "/app/oracle/product/12.1.0/dbhome_1/bin/lsnrctl start"

按【esc】键,再按【:wq】保存退出。
为该启动文件设置可执行权限【默认该文件是没有可执行权限的,不改重启时它不执行啊】
chmod u+x /etc/rc.d/rc.local
启动防火墙
systemctl start firewalld.service
防火墙很重要,不可能因为Oralce数据库就永远关闭吧,前面安装需要关闭一下,现在安装完事了,只要开放Oracle的1521端口就行了。
systemctl enable firewalld.service
查看一下防火墙现在的状态
systemctl status firewalld.service

开放Oracle数据库的1521端口
firewall-cmd --permanent --add-port=1521/tcp
让设置马上生效
firewall-cmd --reload
查看防火墙是否成功开放了1521端口
firewall-cmd --query-port=1521/tcp

OK,到此我们的收尾工作已经全部完成,马上重启,看看是否成功!
reboot
我们还是用oracle用户登录,桌面上点击右键,选择【打开终端】。
查看Oracle数据库是否启动,这里我们只要查看是否有Oracle的进程就可以了。
ps -ef | grep pmon

查看Oracle的监听是否启动
lsnrctl status

完全没问题,都正常启动了。
【
若Oracle数据库未启动,则需输入下列命令启动。
sqlplus / as sysdba
#启动命令
startup
#查看启动状态
select status from v$instance;
#关闭
shutdown immediate
若监听未启动,则需输入下列命令启动。
lsnrctl start
】
测试连接:
用datagrip测试一下连接,成功!

搞定,收工!
【
如果,我是说如果连接不成功,总是提示:
ORA-12505: 无法连接到数据库。SID orcl 未注册到 host 192.168.126.100 port 1521 中的监听程序。
也就是说监听程序不认你给出的SID,拒绝连接。
问题是给出的SID是正确的,啥毛病也没有啊,但监听就是不认,咋办啊!
那就硬改一下试试,把SID写死!
监听程序是listener.ora文件,编辑该文件。
vim /app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora
在后面加上如下内容
SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = orcl)(ORACLE_HOME = /app/oracle/product/12.1.0/dbhome_1/)))

SID_LIST_LISTENER是Oracle数据库监听器配置文件listener.ora中的一个条目,用于定义静态注册的服务信息。静态注册是指将数据库实例的信息硬编码在监听器配置文件中,以便在数据库实例关闭时也能通过监听器连接到数据库。
这也是实在没招了啊!
按【esc】键,再按【:wq】保存退出。
先停止监听程序
lsnrctl stop
再重新启动监听程序
lsnrctl start

有UNKNOWN提示,不管他。这回再尝试连接数据库,你会发现可能就好用了。写死了当然好用了啊!
】
相关文章:
浅析Centos7安装Oracle12数据库
Linux下的Oracle数据库实在是太难安装了,事贼多,我都怀疑能安装成功是不是运气的成分更高一些。这里虚拟机是VMware Workstation 15.5,操作系统是Centos7,Oracle版本是Oracle Database 12c Enterprise Edition Release 12.1.0.2.0…...
代码随想录算法训练营Day27 | Leetcode 56. 合并区间、738.单调递增的数字、968.监控二叉树
代码随想录算法训练营Day27 | Leetcode 56.合并区间、738.单调递增的数字、968.监控二叉树 一、合并区间 相关题目:Leetcode56 文档讲解:Leetcode56 视频讲解:Leetcode56 1. Leetcode56. 合并区间 以数组 intervals 表示若干个区间的集合&am…...
三大开源大模型应用框架深度对比:AnythingLLM、Dify 与 Open-WebUI
三大开源大模型应用框架深度对比:AnythingLLM、Dify 与 Open-WebUI 本文将全面解析三大主流开源大模型应用框架与Ollama的集成方案,帮助开发者根据实际需求选择最适合的工具。 一、框架概览与定位差异 1. AnythingLLM:企业级知识管理专家 …...
freertos低功耗模式简要概述
简介 FreeRTOS 的 Tickless 模式是一种特殊的运行模式,用于最小化系统的时钟中断频率,以降低功耗。在 Tickless 模式下,系统只在有需要时才会启动时钟中断,而在无任务要运行时则完全进入休眠状态,从而降低功耗。在滴答…...
ESP32S3 链接到 WiFi
以下是关于如何让 ESP32S3 连接到 WiFi 的完整流程和代码示例: ESP32S3 链接到 WiFi 1. 设置工作模式 ESP32 可以工作在两种模式下: Station (STA) 模式:作为无线终端连接到无线接入点(AP),类似于手机或…...
2024年博客之星的省域空间分布展示-以全网Top300为例
目录 前言 一、2024博客之星 1、所有排名数据 2、空间属性管理 二、数据抓取与处理 1、相关业务表的设计 2、数据抓取处理 3、空间查询分析实践 三、数据成果挖掘 1、省域分布解读 2、技术开发活跃 四、总结 前言 2024年博客之星的评选活动已经过去了一个月…...
vue项目引入tailwindcss
vue3项目引入tailwindcss vue3 vite tailwindcss3 版本 初始化项目 npm create vitelatest --template vue cd vue npm install npm run dev安装tailwindcss3 和 postcss 引入 npm install -D tailwindcss3 postcss autoprefixer // 初始化引用 npx tailwindcss init -p…...
蓝桥赛前复习2:一维差分二维差分
一维差分 问题描述 给定一个长度为 nn 的序列 aa。 再给定 mm 组操作,每次操作给定 33 个正整数 l,r,dl,r,d,表示对 al∼ral∼r 中的所有数增加 dd。 最终输出操作结束后的序列 aa。 Update:由于评测机过快,n,mn,m 于 2024…...
算法---子序列[动态规划解决](最长递增子序列)
最长递增子序列 子序列包含子数组! 说白了,要用到双层循环! 用双层循环中的dp[i]和dp[j]把所有子序列情况考虑到位 class Solution { public:int lengthOfLIS(vector<int>& nums) {vector<int> dp(nums.size(),1);for(int i …...
100道C#高频经典面试题带解析答案——全面C#知识点总结
100道C#高频经典面试题带解析答案 以下是100道C#高频经典面试题及其详细解析,涵盖基础语法、面向对象编程、集合、异步编程、LINQ等多个方面,旨在帮助初学者和有经验的开发者全面准备C#相关面试。 🧑 博主简介:CSDN博客专家、CSD…...
jar包安全加密工具
目录 1. 代码混淆工具(Obfuscation) 推荐工具 (1) ProGuard (2) Allatori (3) DashO 2. JAR 加密工具(Class 文件加密) 推荐工具 (1) JxCore (2) ClassFinal (3) Zelix KlassMaster 3. 自定义类加载器加密 实现思路 4. 打包成 Native 可执行文件 推荐工具 (…...
MQTT的构成、使用场景、工作原理介绍
一、MQTT内容简介 MQTT(Message Queuing Telemetry Transport)是一种轻量级、基于发布-订阅模式的消息传输协议【适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境】它在物联网应用中广受欢迎,能够实现传感器、执行器和其它设备之间的…...
RESTful API以及使用它构建 web 应用程序的方法
RESTful API是一种基于REST(Representational State Transfer)架构风格的应用程序接口,通过HTTP协议传输数据并使用标准的HTTP方法(GET、POST、PUT、DELETE)来对资源进行操作。 RESTful API 遵循一系列约定和规范&…...
Vanna + qwq32b 实现 text2SQL
Vanna 是一个开源的 Text-2-SQL 框架,主要用于通过自然语言生成 SQL 查询,它基于 RAG(Retrieval-Augmented Generation,检索增强生成)技术。Vanna 的核心功能是通过训练一个模型(基于数据库的元数据和用户提…...
电脑知识 | TCP通俗易懂详解 <一>
目录 一、👋🏻前言 二、🚍什么是TCP/TCP协议 三、🧍♂为什么TCP可靠 1.🥰关于可靠 2.🤠哪里可靠 3.🎓️图片的三次握手,四次挥手 4.📚️知识点总结 四、&…...
精品推荐-最新大模型MCP核心架构及最佳实践资料合集(18份).zip
精品推荐-最新大模型MCP核心架构及最佳实践资料合集,共18份。 1、2025年程序员必学技能:大模型MCP核心技术.pdf 2、MCP 架构设计剖析:从 Service Mesh 演进到 Agentic Mesh.pdf 3、MCP 架构设计深度剖析:使用 Spring AI MCP 四步…...
Linux 线程:从零构建多线程应用:系统化解析线程API与底层设计逻辑
线程 线程的概述 在之前,我们常把进程定义为 程序执行的实例,实际不然,进程实际上只是维护应用程序的各种资源,并不执行什么。真正执行具体任务的是线程。 那为什么之前直接执行a.out的时候,没有这种感受呢…...
VMware虚拟机Ubuntu磁盘扩容
VMware中操作: 选择要扩容的虚拟机,点击编辑虚拟机设置 打开后点击磁盘——>点击扩展(注意:如果想要扩容的话需要删除快照) 调整到你想要的容量 点击上图的扩展——>确定 然后我们进到虚拟机里面 首先&#…...
游戏引擎学习第217天
运行游戏并在 FreeVariableGroup 中遇到我们的断言 其实在美国,某些特定的小糖果(例如小糖蛋)只在圣诞节和复活节期间出售,导致有些人像我一样在这段时间吃得过多,进而增加体重。虽然这种情况每年都会发生,…...
Day 8 上篇:深入理解 Linux 驱动模型中的平台驱动与总线驱动
B站相应的视屏教程: 📌 内核:博文视频 - 总线驱动模型实战全解析 —— 以 PCA9450 PMIC 为例 敬请关注,记得标为原始粉丝。 在 Linux 内核驱动模型中,设备与驱动的组织方式不是随意堆砌,而是基于清晰的分类…...
freertos内存管理简要概述
概述 内存管理的重要性 在嵌入式系统中,内存资源通常是有限的。合理的内存管理可以确保系统高效、稳定地运行,避免因内存泄漏、碎片化等问题导致系统崩溃或性能下降。FreeRTOS 的内存管理机制有助于开发者灵活地分配和释放内存,提高内存利用…...
Dify问题记录 (一)
问题背景 Dify智能体将含有中文的JSON参数传递到Java后端时出现乱码。 解决办法 在HTTP节点前添加代码执行节点,将参数强制编码为UTF-8格式。在Java后端代码中进行解码操作,以确保参数的正确性。 代码如下: 代码执行节点中代码 function main({arg…...
全新突破 | 更全面 · 更安全 · 更灵活
xFile 高可用存储网关 2.0 重磅推出,新增多空间隔离功能从根源上防止数据冲突,保障各业务数据的安全性与独立性。同时支持 NFS、CIFS、FTP 等多种主流文件协议,无需繁琐的数据拷贝转换,即可与现有系统无缝对接,降低集成…...
使用Python建立双缝干涉模型
引言 双缝干涉实验是物理学中经典的实验之一,它展示了光的波动性以及量子力学的奇异性。实验结果表明,当光或粒子通过两条狭缝时,它们会产生干涉现象,形成明暗相间的条纹图案。这种现象不仅说明了光的波动性,还揭示了量子力学的核心思想——粒子具有波动性。今天,我们将…...
T-Box车载系统介绍及其应用
定义 T-Box汽车系统,全称为Telematics - BOX,也常简称为车载T - BOX,是汽车智能系统及车联网系统中的核心组成部分,是安装在车辆上的一种高科技远程信息处理器。 工作原理 T-Box的核心功能主要通过MPU和MCU实现。MPU负责应用程序功…...
SQLyog使用教程
准备工作 链接本地数据库 准备 1:安装mySQL数据库 2:安装SQLyong 连接本地数据库 打开SQLyong应用,将会出现下面的页面 点击新建,输入链接名 输入密码,点击 连接 按钮 如果出现连接错误,且错误号为2058…...
for循环的优化方式、循环的种类、使用及平替方案。
本篇文章主要围绕for循环,来讲解循环处理数据中常见的六种方式及其特点,性能。通过本篇文章你可以快速了解循环的概念,以及循环在实际使用过程中的调优方案。 作者:任聪聪 日期:2025年4月11日 一、循环的种类 1.1 默认有以下类型 原始 for 循环 for(i = 0;i<10;i++){…...
使用 Python 扫描 Windows 下的 Wi-Fi 网络实例演示
使用 Python 扫描 Windows 下的 Wi-Fi 网络 代码实现代码解析 1. 导入库2. 解码混合编码3. 扫描 Wi-Fi 网络4. 运行函数 这是我当前电脑的 wifi 连接界面。 这个是运行的效果图: 代码实现 我们使用了 Python 的 subprocess 模块来调用 Windows 的内置命令 netsh…...
python manimgl数学动画演示_微积分_线性代数原理_ubuntu安装问题[已解决]
1.背景 最近调研python opencv, cuda加速矩阵/向量运算, 对于矩阵的线性变换, 秩, 转秩, 行列式变化等概概念模糊不清. 大概课本依旧是天书, 于是上B站搜索线性代数, 看到 3Blue1Brown 线性变换本质 视频, 点击观看. 惊为天人 --> 豁然开朗 --> 突然顿悟 --> 开心不已…...
【vue3】@click函数传动态变量参数
根据java的学习,摸索了一下vue3 函数传参的方式。以此作为记录。有更好的其它方式,可以评论区补充。 <script> const tmpref(); </script><button click"tmpFunction(传递参数:tmp)">按钮</button> // 直接【字符串…...
