私有云基础架构与运维(二)
二.私有云基础架构
【项目概述】
经过云计算基础知识及核心技术的学习后,希望进一步了解 IT 基础架构的演变过
程,通过学习传统架构、集群架构以及私有云基础架构的相关知识,认识企业从传统 IT 基
础架构到私有云基础架构转型的必要性。
【项目实施】
任务2.1 传统架构下应用的部署
本 任 务 的 目 标 为 在 传 统 架 构 下 搭 建 LAMP
(Linux+Apache+MySQL/MariaDB+PHP,流行的开源软件组合)环境并部署
WordPress 服务,为了方便演示,本书在项目 1 安装好的单台 openEuler 22.09 系
统虚拟机中模拟。节点基础配置见表 2-1。
虚拟机版本 | 主机名 | IP地址 | 安装服务 |
openEuler 22.09 | web01 | 192.168.213.133 | Apache、PHP、MariaDB |
2.1.1基础环境准备
(1)配置静态IP地址
修改网卡配置文件,示例修改内容如下。
[root@web01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=a8c477c5-fdf7-46a2-b8ae-306495bc96dc DEVICE=ens33 ONBOOT=yes IPADDR="192.168.213.133" NETMASK="255.255.255.0" GATEWAY="192.168.213.2" DNS1="192.168.213.2" |
(2)配置yum源
打开/etc/yum.repos.d/openEuler.repo文件
把下面这段放进去
[root@web01 ~]# vi /etc/yum.repos.d/openEuler.repo |
[OS] name=OS baseurl=https://archives.openeuler.openatom.cn/openEuler-22.09/OS/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://archives.openeuler.openatom.cn/openEuler-22.09/OS/$basearch/RPM-GPG-KEY-openEuler [everything] name=everything baseurl=https://archives.openeuler.openatom.cn/openEuler-22.09/everything/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://archives.openeuler.openatom.cn/openEuler-22.09/everything/$basearch/RPM-GPG-KEY-openEuler [EPOL] name=EPOL baseurl=https://archives.openeuler.openatom.cn/openEuler-22.09/EPOL/main/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://archives.openeuler.openatom.cn/openEuler-22.09/OS/$basearch/RPM-GPG-KEY-openEuler [debuginfo] name=debuginfo baseurl=https://archives.openeuler.openatom.cn/openEuler-22.09/debuginfo/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://archives.openeuler.openatom.cn/openEuler-22.09/debuginfo/$basearch/RPM-GPG-KEY-openEuler [source] name=source baseurl=https://archives.openeuler.openatom.cn/openEuler-22.09/source/ enabled=1 gpgcheck=1 gpgkey=https://archives.openeuler.openatom.cn/openEuler-22.09/source/RPM-GPG-KEY-openEuler [update] name=update baseurl=https://archives.openeuler.openatom.cn/openEuler-22.09/update/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://archives.openeuler.openatom.cn/openEuler-22.09/OS/$basearch/RPM-GPG-KEY-openEuler |
清理yum缓存,并出现生成即可
[root@controller ~]# yum clean all [root@controller ~]# yum makecache [root@controller ~]# yum update |
(3)关闭防火墙
[root@web01 ~]# systemctl stop firewalld |
(4)关闭 SELinux
[root@web01 ~]# setenforce 0 |
2.1.2安装Apache服务
具体操作如下。
[root@web01 ~]# dnf install -y httpd [root@web01 ~]# systemctl enable --now httpd [root@web01 ~]# apachectl -v Server version: Apache/2.4.51 (Unix) Server built: Sep 7 2022 00:00:00 |
到浏览器输入虚拟机 IP 地址进行 Apache 访问测试,测试成功界面如图 2-5
所 示
。
2.1.3安装PHP服务
- 安装PHP及其模块
[root@web01 ~]# dnf -y install php php-common php-cli php-gd php-pdo php-devel php-xml php-mysqlnd |
- 编写测试界面文件
[root@web01 ~]# vi /var/www/html/php-test.php <?php phpinfo(); ?> |
重启 Apache 服务,并到浏览器中访问 http://192.168.213.133/php-test.php,PHP
测试成功界面如图 2-6 所示。
[root@web01 ~]# systemctl restart httpd |
2.1.4 安装并配置数据库服务
(1)安装软件包
[root@web01~]# dnf install mysql-config mariadb mariadb-server python3-PyMySQL |
(2)新增配置文件/etc/my.cnf.d/openstack.cnf,内容如下
[root@web01 ~]# cat /etc/my.cnf.d/openstack.cnf [mysqld] bind-address = 192.168.213.133 default-storage-engine = innodb innodb_file_per_table = on max_connections = 4096 collation-server = utf8_general_ci character-set-server = utf8 |
(3)启动服务器
[root@web01 ~]# systemctl start mariadb |
(4)初始化数据库
[root@web01 ~]# mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and haven't set the root password yet, you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password or using the unix_socket ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have your root account protected, so you can safely answer 'n'. Switch to unix_socket authentication [Y/n] n ... skipping. You already have your root account protected, so you can safely answer 'n'. Change the root password? [Y/n] y New password: 000000 Re-enter new password: 000000 Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] y ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] y ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] y ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB! |
(5)验证,根据设置的密码,检查是否能登录mariadb
[root@web01 ~]# mysql -uroot -p |
(6)创建数据库
创建WordPress数据库并开启root用户远程访问的权限。
MariaDB [(none)]> create database wordpress; Query OK, 1 row affected (0.000 sec) #创建用户(如果不存在) MariaDB [(none)]> CREATE USER 'root'@'%' IDENTIFIED BY 'secure_password123'; Query OK, 0 rows affected (0.001 sec) #授予权限 MariaDB [(none)]> GRANT ALL PRIVILEGES ON wordpress.* TO 'root'@'%'; Query OK, 0 rows affected (0.001 sec) #刷新权限 MariaDB [(none)]> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.000 sec) #开启root用户远程访问的权限 MariaDB [(none)]> grant all privileges on wordpress.* to root@'%' identified by '000000'; Query OK, 0 rows affected (0.001 sec) |
2.1.5 安装WordPress
将从官网下载的 wordpress-6.7-zh_CN.zip文件传输到/root 目录下,然后
将压缩包解压到 Apache 网页文件夹中。
#安装unzip(仅限Centos/RHEL) [root@web01 ~]# yum install unzip -y #解压到Apache目录 [root@web01 ~]# unzip /root/wordpress-6.7-zh_CN.zip -d /var/www/html/ #验证解压结果 确保解压后生成wordpress子目录,且路径为/var/www/html/wordpress; [root@web01 ~]# ls -l /var/www/html/wordpress # 应看到 WordPress 的核心文件(如 wp-config-sample.php, wp-admin 等) |
对解压出来的 wordpress 文件夹赋予权限。
# 设置 http 根目录/var/www/的所有组为 apache [root@web01 ~]# chown -R :apache /var/www// # 设置 http 根目录/var/www 的所有者为 apache [root@web01 ~]# chown -R apache /var/www/ # 设置 http 根目录/var/www 的组下的所有用户具有读写权限 [root@web01 ~]# chmod -R 775 /var/www/ #重启服务 [root@web01 html]# systemctl restart httpd |
在浏览器中访问 http://192.168.213.133/wordpress 界面查看,可以访问到如图 2-
7 所示的 WordPress 测试界面。
图 2-7 WordPress 测试界面
接下来,输入数据库相关配置信息即可完成数据库连接,如图 2-8 所示。
图 2-8 连接数据库
数据库主机填这个 localhost
图 2-9 WordPress 数据库连接成功
自定义站点相关的表单,例如登录用户名及密码等,如图 2-10 所示。
图 2-10 WordPress 站点配置
至此,WordPress 部署成功,如图 2-11 所示。
图 2-11 WordPress 部署成功界面
任务2.2 集群架构下应用部署
为了进一步说明集群架构相较于传统架构的优越性,本任务在任务 2.1 的
基础上,安装三台 openEuler22.09 系统的虚拟机,拓展集群架构,完成
WordPress 应用部署。每台虚拟机所安装的服务及节点基础配置情况见表 2-2。
表 2-2 节点基础配置
虚拟机版本 | 主机名 | IP地址 | 安装服务 |
openEuler 22.09 | Web01 | 192.168.213.133 | Apache、PHP |
openEuler 22.09 | database | 192.168.213.134 | MariaDB |
openEuler 22.09 | web02 | 192.168.213.135 | Apache、PHP |
2.2.1基础环境准备
参照任务 2.1.1 中基础环境准备的部分,完成三台虚拟机基础环境配置,此
处不再赘述。
2.2.2服务安装
- 安装Mariadb服务
在 “ database” 节 点 安 装 MariaDB 服 务 并 设 置 root 用 户 密 码 , 创 建
“wordpress”数据库,具体操作参考任务 2.1 中的 2.1.4 小节配置数据库服务的
操作步骤,此处不再赘述。
2.安装WordPress
在 web01 节点、web02 节点安装 Apache、PHP 服务,然后部署 WordPress,
具体操作步骤参考任务 2.1 中的 2.1.5 小节中安装 WordPress 的内容,此处不再赘述。
3.部署 WordPress 时需要注意的一处是,在 web01 节点和 web02 节点数据库
连接信息的设置界面中,数据库主机均填写 database 节点的 IP,完整的填写示
例如图 2-12 所示。
图 2-12 配置数据库信息
上面数据库主机填写的是database节点的IP地址
3. web02 节点验证
在完成 web02 节点 WordPress 的部署后,使用浏览器进入 WordPress 界面, 同样进行数据库连接,会发现网页提示已安装过,如图 2-13 所示,这说明 web02 节点已经连接上了 database 节点的 MariaDB 数据库。
web02 节点验证成功,直接单击“登录”便可以正常访问站点,如图 2-14
所示。
即使把 web01 节点的 Apache 服务关闭,web02 节点的 WordPress 仍然正常
工作,如图 2-15 所示。
图 2-15 关闭 web01 节点后 web02 节点的测试界面
4. database 节点验证
在 database 节点,登录 MariaDB 数据库,查看数据库列表信息,如下所示。
[root@database ~]# mysql -uroot -p000000 MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | wordpress | +--------------------+ 4 rows in set (0.000 sec) |
进入“wordpress”数据库查看表单详情,结果如下所示,发现 web01 和
web02 的用户数据已经录入数据库中,说明在集群架构下部署 WordPress 应用
是有效的。
MariaDB [(none)]> use wordpress; MariaDB [wordpress]> select * from wp_users; +----+------------+------------------------------------+---------------+------------------+----------------------------------+---------------------+---------------------+-------------+--------------+ | ID | user_login | user_pass | user_nicename | user_email | user_url | user_registered | user_activation_key | user_status | display_name | +----+------------+------------------------------------+---------------+------------------+----------------------------------+---------------------+---------------------+-------------+--------------+ | 1 | mys | $P$BC4Kd7fziAPag6BZaevzXvuory4ICl/ | mys | 445517363@qq.com | http://192.168.213.135/wordpress | 2025-02-28 07:34:04 | | 0 | mys | +----+------------+------------------------------------+---------------+------------------+----------------------------------+---------------------+---------------------+-------------+--------------+ 1 row in set (0.000 sec) |
喜欢的话给博主个一键三连呀,有问题可以一起交流学习呀,后续还有
相关文章:
私有云基础架构与运维(二)
二.私有云基础架构 【项目概述】 经过云计算基础知识及核心技术的学习后,希望进一步了解 IT 基础架构的演变过 程,通过学习传统架构、集群架构以及私有云基础架构的相关知识,认识企业从传统 IT 基 础架构到私有云基础架构转型的必要性。…...
Java Maven 项目问题:org.dom4j:dom4j:pom:2.1.3 failed to transfer from...
问题与处理策略 问题描述 IDEA 中打开一个 Java 项目,使用 Maven 构建时,报如下错误 org.dom4j:dom4j:pom:2.1.3 failed to transfer from https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local r…...
DeepSeek group-limited expert routing和负载均衡
Ref https://github.com/deepseek-ai/DeepSeek-V3/blob/main/inference/model.py GitHub - deepseek-ai/EPLB: Expert Parallelism Load Balancer DeepSeek-V3 Technical Report DeepSeek的路由方法 class Gate(nn.Module):def __init__(self, args: ModelArgs):super().__…...
nvidia驱动升级-ubuntu 1804
升级 1.从官网下载*.run驱动文件 2.卸载原始驱动 sudo /usr/bin/nvidia-uninstall sudo apt-get --purge remove nvidia-\* # 可能不需要加-\ sudo apt-get purge nvidia-\* # 可能不需要加-\ sudo apt-get purge libnvidia-\* # 可能不需要…...
金融合规测试:金融系统稳健运行的“定海神针“
一、什么是金融合规测试? 金融行业是受监管最严格的领域之一,各国政府和监管机构(如中国人民银行、银保监会、证监会、美国SEC、欧盟ESMA等)都制定了严格的法律法规,要求金融机构确保系统安全、交易透明、公平竞争&am…...
[Windows] 多系统键鼠共享工具 轻松跨系统控制多台电脑
参考原文:[Windows] 多系统键鼠共享工具 轻松跨系统控制多台电脑 还在为多台电脑需要多套键盘鼠标而烦恼吗?是不是在操控 Windows、macOS、Linux 不同系统电脑时手忙脚乱?现在,这些问题通通能解决!Deskflow 软件闪亮登…...
vue3 组合式API:透传 Attributes(v-bing与:)—setup() 上下文对象ctx.attrs
一、概念及举例说明透传 attribute与模板语法中的Attribute(v-bind) 透传 attribute:传递给一个组件没有通过 props 与 emits 的attribute或者v-on事件监听(常见的:calss、style、id) 举例:当一个组件以单个元素为根元素渲染时,透传 attribute 会自动被添加到根元素上 …...
记录一次利用条件索引优化接口性能的实践
一、业务背景 某表数据量达到4000w,需要每天定时任务处理20w条。前2周内SQL执行无任何问题,非常快,效率比较高。随着处理完的数据量变大,处理完数据状态设置为1,SQL执行效率越来越差,已经达到了惊人的4.6秒…...
Anaconda 部署 DeepSeek
可以通过 Anaconda 环境部署 DeepSeek 模型,但需结合 PyTorch 或 TensorFlow 等深度学习框架,并手动配置依赖项。 一、Anaconda 部署 DeepSeek 1. 创建并激活 Conda 环境 conda create -n deepseek python3.10 # 推荐 Python 3.8-3.10 conda activate…...
MATLAB中lookAheadBoundary函数用法
目录 语法 说明 示例 匹配指定模式之前的位置 匹配指定模式之前的边界以外的边界 lookAheadBoundary函数的功能是匹配指定模式之前的边界。 语法 newpat lookAheadBoundary(pat) 说明 newpat lookAheadBoundary(pat) 创建匹配 pat 的开头的模式。结果中不包含 pat 匹…...
Unity HDR颜色、基础颜色、强度强度、HDR面板Intensity之间的相互转换
目录 前言: 一、UnityHDR面板的规律 二、HDR与基础颜色转换,HDR强度获取,输入设置强度获取 1.基础色->HDR颜色 2.HDR颜色->基础色 3.获取HDR颜色在面板中的强度 4.获取HDR颜色在面板设置输入时的强度 前言: HDR&#…...
nvm 让 Node.js 版本切换更灵活
有很多小伙伴前端开发进程中,我们常常会遇到不同项目依赖不同版本 Node.js 的情况。我们不可能去卸载重新安装适应的版本去安装依赖或者启动项目。为了避免版本冲突带来的一系列麻烦,在这里给大家推荐一款Node.js 版本管理工具——nvm(Node V…...
微机惊魂记
春天午后的阳光懒洋洋地洒在教学楼的走廊上,我跟着同学们排着队往四楼的微机教室走去。楼梯间的窗户开着,飘进来阵阵樱花的香气,让人昏昏欲睡。 微机教室在一栋普通的五层教学楼里,墙壁刷着淡绿色的漆,墙角还有些剥落…...
Windows下安装VMware Workstation 17并设置支持MacOS
VMware Workstation 17 介绍 VMware Workstation 17 是 VMware 公司推出的一款强大的桌面虚拟化软件,适用于 Windows 、 Linux 和FreeBSD等操作系统。它允许用户在单一物理计算机上创建、运行和管理多个虚拟机(VM),每个虚拟机都可…...
[MySQL初阶]MySQL(5)内置函数详解
标题:[MySQL初阶]MySQL(5)内置函数详解 水墨不写bug 文章目录 一、日期函数1. current_date()2. current_time()3. current_timestamp()4. date(datetime)5. date_add(date, interval expr unit)6. date_sub(date, interval expr unit)7. dat…...
Linux下安装elasticsearch(Elasticsearch 7.17.23)
Elasticsearch 是一个分布式的搜索和分析引擎,能够以近乎实时的速度存储、搜索和分析大量数据。它被广泛应用于日志分析、全文搜索、应用程序监控等场景。 本文将带你一步步在 Linux 系统上安装 Elasticsearch 7.17.23 版本,并完成基本的配置࿰…...
华为云 | 快速搭建DeepSeek推理系统
DeepSeek(深度求索)作为一款国产AI大模型,凭借其高性能、低成本和多模态融合能力,在人工智能领域崛起,并在多个行业中展现出广泛的应用潜力。 如上所示,在华为云解决方案实践中,华为云提供的快速…...
宠物医院台账怎么做,兽医电子处方单模板打印样式,佳易王兽医兽药开方宠物病历填写打印操作教程
一、概述 本实例以佳易王兽医宠物电子处方开单系统版本为例说明,其他版本可参考本实例。试用版软件资源可到文章最后了解,下载的文件为压缩包文件,请使用免费版的解压工具解压即可试用。 软件特点: 多场景处方兼容性针对宠物医…...
STM32之DMA
Flash是主闪存,下载程序的地方,系统存储器出厂自动写入,不许修改。系统存储器是存储Bootloader,选项字节存的是flash的读保护,写保护,还有看门狗等。运行内存SRAM存的临时变量,也就是程序中定义…...
用低代码平台集成人工智能:无需专业开发也能实现智能化
引言:人工智能的普及与企业需求 随着人工智能(AI)技术的飞速发展,越来越多的企业开始意识到其在提升运营效率、优化客户体验和推动业务创新方面的巨大潜力。从智能客服到自动化决策支持,从数据分析到个性化推荐&#x…...
UI自动化:利用百度ocr识别解决图形验证码登录问题
相信大家在做自动化测试过程中都遇到过图形验证码的问题,最近我也是遇到了,网上搜了很多方法,最简单的方法无非就是去掉图形验证码或者设置一个万能验证码,但是这个都需要开发来帮忙解决,对于我们这种自学的人来说就不…...
1236 - 二分查找
题目描述 请在一个有序递增数组中(不存在相同元素),采用二分查找,找出值 xx 的位置,如果 xx 在数组中不存在,请输出 -1 ! 输入 第一行,一个整数 nn ,代表数组元素个数…...
MARL零样本协调之Fictitious Co-Play学习笔记
下列引用来自知乎作者Algernon 知乎link FCP作为ZSC领域两阶段训练方法的开创者 论文《Collaborating with Humans without Human Data》来自 NeurIPS 2021。这篇论文提出 Fictitious Co-Play (FCP) 来解决 ZSC 问题。论文认为,ZSC 的第一个重要问题是对称性&#x…...
设计模式 + java8方法引用 实现任意表的过滤器
会用到下面2个依赖,原因是在今天的案例中,我想在我代码中使用上Entity::getFieldName 这种形式 LambdaQueryWrapper<ApplicationDashboard> queryWrapper new LambdaQueryWrapper<>(); queryWrapper.eq(ApplicationDashboard::getAppCode,…...
thingsboard edge 在windows 环境下的配置
按照官方文档:Installing ThingsBoard Edge on Windows | ThingsBoard Edge,配置好java环境和PostgreSQL。 下载对应的windows 环境下的tb-edge安装包。下载附件 接下来操作具体如下 步骤1,需要先在thingsboard 服务上开启edge 权限 步骤2…...
OpenAI Whisper:开启语音转文本的智能时代
在人工智能技术飞速发展的今天,OpenAI推出的Whisper语音识别系统正悄然改变着人类与机器的交互方式。作为一款开源的AI驱动语音转文本工具,Whisper凭借其跨语言能力、高精度识别和灵活的生态系统,成为开发者和普通用户共同追捧的技术标杆。 核心技术与突破 Whisper基于深度…...
OpenHarmony4.0_Linux环境搭建
查看链接:OpenHarmony4.0_Linux环境搭建https://www.yuque.com/xinzaigeek/jishu/fs9msruqhd5nhw4i...
道可云人工智能每日资讯|亚马逊云业务部门成立智能体人工智能团队
道可云元宇宙每日简报(2025年3月6日)讯,今日元宇宙新鲜事有: 《杭州市富阳区未来产业培育行动计划(2025-2026年)》发布 3月3日,杭州市富阳区经信局正式发布了《杭州市富阳区未来产业培育行动计划(2025-2026年)》&…...
Java-servlet(四)详细讲解Servlet类层次结构与生命周期
Java-servlet(四)详细讲解Servlet和生命周期 前言一、Servlet类层次结构1.Servlet包2.Servlet 与 ServletConfig 与 Serializable 的关系1. 三者分别是什么2. 三者之间的关系 3.如何让类具有 Servlet 功能 二、Servlet 生命周期1.初始化阶段2.服务阶段3.…...
python基础课程整理--字典的基础
字典的特点 定义:使用花括号 {} 包裹,存储键值对(key-value pairs)。特点: 无序:字典中的元素没有固定的顺序,但可以通过键来访问。可变:字典中的键值对可以被添加、修改或删除。键…...
doris: MySQL
Doris JDBC Catalog 支持通过标准 JDBC 接口连接 MySQL 数据库。本文档介绍如何配置 MySQL 数据库连接。 使用须知 要连接到 MySQL 数据库,您需要 MySQL 5.7, 8.0 或更高版本 MySQL 数据库的 JDBC 驱动程序,您可以从 Maven 仓库下载最新或指定版本的…...
推荐一个基于Koin, Ktor Paging等组件的KMM Compose Multiplatform项目
Kotlin Multiplatform Mobile(KMM)已经从一个雄心勃勃的想法发展成为一个稳定而强大的框架,为开发人员提供了在多个平台上无缝共享代码的能力。通过最近的稳定版本里程碑,KMM已成为跨平台开发领域的改变者。 环境设置 带有Kotli…...
Tomcat 新手入门指南
Tomcat 新手入门指南 Apache Tomcat 是一个开源的 Java Servlet 容器和 Web 服务器,广泛用于部署和运行 Java Web 应用程序。以下是 Tomcat 的入门指南,帮助你快速上手。 1. 安装 Tomcat 步骤 1: 下载 Tomcat 访问 Apache Tomcat 官网。选择适合的版…...
游戏引擎学习第138天
仓库:https://gitee.com/mrxiao_com/2d_game_3 资产:game_hero_test_assets_003.zip 发布 我们的目标是展示游戏运行时的完整过程,从像素渲染到不使用GPU的方式,我们自己编写了渲染器并完成了所有的工作。今天我们开始了一些新的内容&#…...
c++ 类特殊成员函数的编译器隐式声明规则
c 类特殊成员函数的编译器隐式声明规则 特殊成员函数编译器隐式声明规则关键术语说明:核心规则总结:示例场景: 特殊成员函数 编译器隐式声明规则 用户声明的成员函数默认构造函数析构函数拷贝构造函数拷贝赋值移动构造函数移动赋值无声明默…...
综合使用pandas、numpy、matplotlib、seaborn库做数据分析、挖掘、可视化项目
目录 1.结构化数据挖掘 1.1依赖库导入和数据读取 1.2各品牌机型及售价统计 1.3视频录制规格与价格关联性分析 2.结构化数据预处理 2.1筛选特征 2.2特征标签归一化及编码 1.结构化数据挖掘 1.1依赖库导入和数据读取 导入必要的依赖库,读取 csv 格式数据集转化为 Data…...
day21-API(算法,lambda,练习)
常见的七种查找算法: 数据结构是数据存储的方式,算法是数据计算的方式。所以在开发中,算法和数据结构息息相关。今天的讲义中会涉及部分数据结构的专业名词,如果各位铁粉有疑惑,可以先看一下哥们后面录制的数据结构…...
Linux : 进程地址空间
目录 一 前言 二 进程地址空间是什么 1.现象 2.虚拟地址空间 3. 现象解释 4. 写时拷贝 三 为什么要存在进程地址空间 四 进程地址空间是如何实现的 1 操作系统如何管理进程地址空间 一 前言 进程地址空间图: 在学习C语言的内存管理的时候,我…...
wordpress鼠标特效笔记+npm问题解决
在WordPress网站上添加鼠标点击特效和网页背景特效_wordpress鼠标特效-CSDN博客 学习设置文章浏览量的插件超详细图解:如何使用 WordPress搭建一个个人博客?-CSDN博客 ------------------2025.03.06------------------------------- npm 运行时报错“因…...
大模型——使用 Embedding 模型和向量数据库的 Spring AI RAG
大模型——使用 Embedding 模型和向量数据库的 Spring AI RAG 本文主要介绍以下内容: 嵌入式模型简介。使用 DocumentReader 加载数据。在 VectorStore 中存储 Embedding。实现 RAG(Retrieval-Augmented Generation,检索增强生成),又名 Prompt Stuffing。你可以在 GitHub…...
Spring Boot 缓存最佳实践:从基础到生产的完整指南
Spring Boot 缓存最佳实践:从基础到生产的完整指南 引言 在现代分布式系统中,缓存是提升系统性能的银弹。Spring Boot 通过 spring-boot-starter-cache 模块提供了开箱即用的缓存抽象,但如何根据业务需求实现灵活、可靠的缓存方案…...
vue3,Element Plus中隐藏树el-tree滚动条
el-tree,节点过多,默认会出现垂直滚动条,显得不美观 可以使用隐藏组件 el-scrollbar 将 el-tree 包裹,就可以隐藏垂直滚动条 <el-scrollbar> <el-tree> ... </el-tree> </el-scrollbar> /* 滚动条禁用鼠…...
《机器学习数学基础》补充资料:过渡矩阵和坐标变换推导
尽管《机器学习数学基础》这本书,耗费了比较长的时间和精力,怎奈学识有限,错误难免。因此,除了在专门的网页( 勘误和修订 )中发布勘误和修订内容之外,对于重大错误,我还会以专题的形…...
掌握高效大模型任务流搭建术(二):链式流程如何赋能 AI 处理能力提升
前言: 在上一篇文章中,我们初步探索了 LangChain 的基础链式操作——LLMChain。它巧妙地将大语言模型(LLM)与提示模板(Prompt Template)相结合,为模型交互逻辑的封装提供了一种简洁而高效的方式…...
Linux——Docker容器内MySQL密码忘记了如何查看
目录 查看正在运行的MySQL的容器ID 方法一:查看MySQL容器的日志里的密码 方法二:通过环境变量密码登录 方法三:修改密码 查看正在运行的MySQL的容器ID docker ps 方法一:查看MySQL容器的日志里的密码 docker logs [MySQL的容器…...
深入剖析 Kubernetes 弹性伸缩:HPA 与 Metrics Server
引言 在 Kubernetes (K8s) 集群中,如何根据应用的实际负载自动调整 Pod 数量,实现资源的弹性利用,是保障服务稳定性和成本效益的关键。Horizontal Pod Autoscaler (HPA) 和 Metrics Server 正是实现这一目标的核心组件。本文将深入探讨 HPA …...
Qt5 C++ QMap使用总结
文章目录 功能解释代码使用案例代码解释注意事项代码例子参考 功能解释 QList<T> QMap::values() const Returns a list containing all the values in the map, in ascending order of their keys. If a key is associated with multiple values, all of its values wi…...
如何改变怂怂懦弱的气质(2)
你是否曾经因为害怕失败而逃避选择?是否因为不敢拒绝别人而让自己陷入困境?是否因为过于友善而被人轻视?如果你也曾为这些问题困扰,那么今天的博客就是为你准备的。我们将从行动、拒绝、自我认知、实力提升等多个角度,…...
【CVTE】嵌入式软件开发-Linux方向{一面}
文章目录 数组和链表的区别?特点?使用场景?**1. 数组(Array)****特点:****使用场景:** **2. 链表(Linked List)****特点:****使用场景:** **3. 数…...
自律linux 第 35 天
之前学习了UDP编程,UDP是可以实现多个用户向一个用户发送的,但是TCP一个服务端在同一时刻只能对应一个客户端,因为TCP的通信是使用管道通信的,如果要使用TCP实现一对多的通信,有如下几种办法:多进程&#x…...