828华为云征文|华为云Flexus云服务器X实例之openEuler系统下部署Grav内容管理系统

news2024/9/21 22:21:35

828华为云征文|华为云Flexus云服务器X实例之openEuler系统下部署Grav内容管理系统

  • 前言
  • 一、Flexus云服务器X实例介绍
    • 1.1 Flexus云服务器X实例简介
    • 1.2 Flexus云服务器X实例特点
    • 1.3 Flexus云服务器X实例使用场景
  • 二、Grav介绍
    • 2.1 CMS介绍
    • 2.2 Grav简介
    • 2.3 Grav特点
    • 2.4 Grav使用场景
  • 三、本次实践介绍
    • 3.1 本次实践简介
    • 3.2 本次环境规划
  • 四、远程连接华为云Flexus云服务器X实例
    • 4.1 购买Flexus云服务器X实例
    • 4.2 查看Flexus云服务器X实例状态
    • 4.3 使用Xshell远程连接
  • 五、检查Flexus云服务器X实例系统环境
    • 5.1 检查操作系统版本
    • 5.2 检查内核版本
    • 5.3 检查Docker版本
    • 5.4 检查Docker服务状态
    • 5.5 检查Docker compose版本
  • 六、安装Grav应用
    • 6.1 拉取Grav镜像
    • 6.2 创建部署目录
    • 6.3 编辑docker-compose.yaml文件
    • 6.4 创建Grav容器
    • 6.5 查看Grav容器状态
    • 6.6 查看Grav容器日志
  • 七、访问Grav首页
    • 7.1 关闭防火墙与selinux
    • 7.2 Flexus云服务器X实例安全组配置
  • 八、访问Grav服务
    • 8.1 访问Grav初始页
    • 8.2 创建管理员账号
    • 8.3 登录Grav管理后台
  • 九、Grav的基本使用
    • 9.1 设置系统语言
    • 9.2 发布内容
    • 9.3 预览效果
    • 9.4 HTTPS方式访问
  • 十、使用体验与总结

前言


在当今数字化转型的大潮中,选择合适的技术平台至关重要。华为云Flexus云服务器X实例凭借其卓越的性能和灵活的算力,成为了中小企业和开发者的新宠。特别是在openEuler操作系统下,华为云展现了其在技术创新和服务质量方面的深厚积累。通过在Flexus云服务器X实例上部署Grav内容管理系统,用户不仅可以享受到极致的性能体验,还能体验到华为云在技术支持上的专业与细致。无论是快速搭建网站还是优化现有应用,华为云都提供了坚实的后盾。接下来,我们将探讨如何在华为云的这一强大平台上部署Grav,帮助您轻松实现网站管理的现代化。


一、Flexus云服务器X实例介绍

1.1 Flexus云服务器X实例简介

  • 官网地址: 华为云Flexus云服务器X实例

华为云Flexus云服务器X实例是新一代面向中小企业和开发者的柔性算力云服务器。它能够智能感知业务负载的变化,自动调整资源配置。这款服务器特别适用于中低负载的应用场景,例如电商直播、企业网站建设、开发测试环境、游戏服务器以及音视频服务等。X实例的设计理念旨在为用户提供更加灵活和高效的计算资源管理方式。通过智能调整,它可以更好地满足不同业务的需求,提高资源利用率。

在这里插入图片描述

1.2 Flexus云服务器X实例特点

  • 提供丰富的公共镜像:Flexus云服务器X实例提供多种公共镜像供用户选择,方便快速部署各种应用和服务。

  • 可灵活自定义vCPU内存配比:用户可以根据自己的需要灵活调整虚拟CPU和内存的配比,以满足不同场景的需求。

  • 智能感知业务动态升降配:Flexus云服务器X实例能够智能感知业务的负载情况,并根据需要自动升降配,以满足业务的需求,提高系统的稳定性和性能。

  • 负载范围更高:相对于Flexus应用服务器L实例,Flexus云服务器X实例能够处理更高的负载,适用于更复杂和繁忙的场景。

1.3 Flexus云服务器X实例使用场景

Flexus云服务器X实例针对不同的使用场景展现出其独特的优势:

  1. 电商直播:利用X实例搭建电商交易平台,可以有效应对电商市场的瞬息万变,从容处理业务压力波动,确保交易过程顺畅无阻。

  2. 企业建站:面向博客、论坛和企业门户等应用场景,X实例帮助企业高效传播价值信息,促进信息共享与交流,支持构建多功能传播和交互平台。

  3. 个人开发测试:开发者在开发和测试过程中所需的环境资源可以通过X实例便捷获取,不仅提高了搭建效率,而且降低了成本。

  4. 游戏服务器:适用于搭建游戏后台服务器,强大的计算能力可以轻松应对大量玩家同时在线的情况,同时支持平滑扩容,快速应对玩家数量增长的需求,以及提供出色的网络加速能力以提升用户体验。

二、Grav介绍

2.1 CMS介绍

CMS是内容管理系统(Content Management System)的缩写,它是一种用于创建、管理和发布网站内容的软件工具或平台。CMS提供了一个用户友好的界面,让非技术人员也能轻松地创建和编辑网站页面、添加或删除内容,而无需编写任何代码。CMS通常包括内容编辑、页面管理、用户管理、多媒体管理、模板设计和扩展插件等功能,使网站管理变得简单高效。

2.2 Grav简介

Grav 是一款开源的CMS系统,它摒弃了传统的数据库依赖,直接使用文本文件存储数据。这一特性使Grav成为快速搭建网站的理想选择,尤其适合那些希望避免复杂配置的用户。Grav凭借PHP、Markdown、Twig和Symfony的支持,构建了一款现代、极速、极其简单且功能强大的平面文件CMS,既适合开发者也适合非开发者轻松管理和维护网站内容。

2.3 Grav特点

  1. 零安装:如前所述,只需将Grav的文件解压到服务器上就可以开始使用。
  2. 轻量级:因为Grav不依赖于数据库,所以它的运行环境更为简单,占用资源较少。
  3. 灵活性:Grav支持Markdown格式的内容编辑,并且拥有丰富的插件和主题生态系统。
  4. 强大的包管理系统:用户可以方便地安装、更新插件和主题,以及Grav本身的核心组件。
  5. 易于使用:Grav的设计目的是让用户无需了解复杂的后端逻辑也能管理自己的网站。
  6. 响应式设计:Grav支持创建适应不同设备屏幕大小的网站。
  7. SEO友好:Grav生成的静态HTML页面对搜索引擎优化非常有利。

2.4 Grav使用场景

  • 个人博客:对于想要建立个人博客的用户来说,Grav提供了一个简单而强大的工具。
  • 小型企业网站:对于需要一个快速上线的企业站点或宣传页面的小型企业来说,Grav是一个不错的选择。
  • 组合网站:设计师和摄影师可以利用Grav来展示他们的作品集。
  • 文档网站:对于需要创建文档或知识库的项目,Grav的Markdown支持使得编写文档变得非常容易。

三、本次实践介绍

3.1 本次实践简介

1.本次实践为个人测试学习环境,旨在快速部署应用,生产环境请谨慎;
2.本次实践环境为云华为云Flexus云服务器X实例,使用的操作系统为openEuler 22.03 LTS;
3.本次实践在Docker环境下部署CMS内容管理系统Grav。

3.2 本次环境规划

服务器类别公共镜像选择内网IP地址Docker版本操作系统版本
华为云Flexus云服务器X实例openEuler192.168.0.16926.1.3openEuler 22.03 LTS

四、远程连接华为云Flexus云服务器X实例

4.1 购买Flexus云服务器X实例

进入华为云官网:https://activity.huaweicloud.com/,登录自己的华为云账号,进入华为云首页。

在这里插入图片描述
在这里插入图片描述

  • 镜像选择:本次实践使用openEuler作为公共镜像,请根据实际需求自定义选择合适的操作系统镜像。
  • 镜像切换说明:参考的公共镜像原为Huawei Cloud EulerOS,但本次实践中已切换至openEuler。
  • 基础配置参考:购买时可参考以下基础配置进行选择。

1.计费模式:包年/包月,这里选择此模式;
2.区域:华北—北京四,可用区:随机即可;
3.实例规格:关闭性能模式,选择自定义,4vCPUs | 12GiB;
4.镜像:公共镜像,Huawei Cloud EulerOS,版本,Huawei Cloud EulerOS 2.0 Standard 64 bit(10GiB);
5.应用加速:这里选择不加速;
6.存储:系统盘,通用型SSD100G;
7.网络:选择默认即可;
8.安全组:选择默认即可;
9.弹性公网IP:选择“现在购买”,全动态BGP,带宽3Mbit/s;
10.云服务器名称:可自定义设置,这里选择默认的名称;
11.登录凭证:自定义设置密码;
12.云备份:暂不购买;
其余配置默认即可。

  • 确认配置及购买:在确认配置页面仔细检查Flexus云服务器X实例的各项设置,确保无误后点击“立即购买”,完成付款流程即可成功购买。

在这里插入图片描述

4.2 查看Flexus云服务器X实例状态

进入华为云Flexus云服务的控制台,选择Flexus云服务器X实例,可以看到已经正在运行的Flexus云服务器X实例。

在这里插入图片描述

4.3 使用Xshell远程连接

  • 复制Flexus云服务器X实例的弹性公网IP地址

在这里插入图片描述

  • 主要填写Flexus云服务器X实例的弹性公网IP地址,输入其登录用户和密码,连接即可。

在这里插入图片描述

在这里插入图片描述

五、检查Flexus云服务器X实例系统环境

5.1 检查操作系统版本

检查Flexus云服务器X实例的操作系统版本,本次实践选择的版本为openEuler 22.03 LTS

[root@flexusx-51a1 ~]# cat /etc/os-release
NAME="openEuler"
VERSION="22.03 LTS"
ID="openEuler"
VERSION_ID="22.03"
PRETTY_NAME="openEuler 22.03 LTS"
ANSI_COLOR="0;31"

5.2 检查内核版本

检查当前操作系统的内核版本,当前内核版本为5.10.0-60.109.0.136.oe2203.x86_64

[root@flexusx-51a1 ~]# uname -r
5.10.0-60.109.0.136.oe2203.x86_64

5.3 检查Docker版本

部署该项目需要提前安装Docker环境,检查Docker版本,当前安装的Docker版本为 26.1.3

[root@flexusx-51a1 ~]# docker -v
Docker version 26.1.3, build b72abbb

5.4 检查Docker服务状态

检查Docker服务状态,确保Docker服务正常。

[root@flexusx-51a1 ~]#  systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
     Active: active (running) since Wed 2024-09-04 21:23:44 CST; 15min ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 10018 (dockerd)
      Tasks: 10
     Memory: 196.3M
     CGroup: /system.slice/docker.service
             └─ 10018 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

5.5 检查Docker compose版本

检查docker compose版本,当前默认安装版本为v2.27.0`。

[root@flexusx-51a1 ~]# docker compose version
Docker Compose version v2.27.0

六、安装Grav应用

6.1 拉取Grav镜像

执行以下命令,拉取Grav镜像linuxserver/grav:latest

[root@flexusx-51a1 ~]# docker pull linuxserver/grav:latest
latest: Pulling from linuxserver/grav
b8bf3a1e40e4: Pull complete
df25a931801a: Pull complete
64e4110ec965: Pull complete
d89d3efe7507: Pull complete
27266ca8aab2: Pull complete
8cdd3f30db6b: Pull complete
19d31589f9e6: Pull complete
3db03f1fb3f7: Pull complete
4cd67fe53447: Pull complete
667c5f45d24b: Pull complete
Digest: sha256:254ad083d5f601fb3b526db61e4bb2aec26963b081e6fcb1a0d8f03db9360248
Status: Downloaded newer image for linuxserver/grav:latest
docker.io/linuxserver/grav:latest

6.2 创建部署目录

创建部署目录/data/grav,作为存放docker-compose.yaml文件目录。

mkdir -p /data/grav/conf && cd /data/grav

6.3 编辑docker-compose.yaml文件

本次使用docker compose方式部署,需要新建及编辑docker-compose.yaml文件。在部署文件中,可以自定义修改宿主机映射端口等信息,注意防止端口冲突。

vim docker-compose.yaml

version: '3.9'
services:
    grav:
        image: 'linuxserver/grav:latest'
        environment:
            - PGID=1000
            - PUID=1000
            - TZ=Asia/Shanghai
        restart: always
        volumes:
            - '/data/grav/conf:/config'
        ports:
            - '5443:443'
            - '5220:80'



  • 相关解释:
内容解释
services这是一个开始定义服务的关键字,下面会定义多个服务,这里只定义了一个名为grav的服务。
grav服务名称
image: 'linuxserver/grav:latest'这是指定了grav服务要使用的镜像为linuxserver/grav的最新版本。
environment用于设置容器内的环境变量。
- PGID = 1000:设置容器内运行进程的组ID为1000。
- PUID = 1000:设置容器内运行进程的用户ID为1000。
- TZ = Asia/Shanghai:设置容器内的时区为上海时区。
restart: always表示容器如果异常退出或者宿主机重启,容器总是会被重新启动。
volumes用于挂载宿主机的目录到容器内的目录。
- '/data/grav/conf:/config':将宿主机的/data/grav/conf目录挂载到容器内的/config目录。
ports用于将容器内的端口映射到宿主机的端口。
- '5443:443':将容器内的443端口映射到宿主机的5443端口。
- '5220:80':将容器内的80端口映射到宿主机的5220端口。

6.4 创建Grav容器

执行以下命令,快速创建Grav容器。

[root@flexusx-51a1 grav]# docker compose up -d
WARN[0000] /data/grav/docker-compose.yaml: `version` is obsolete
[+] Running 2/2
 ✔ Network grav_default   Created                                                                                                                      0.0s
 ✔ Container grav-grav-1  Started                                                                                                                      0.2s

6.5 查看Grav容器状态

检查Grav容器状态,确保Grav容器正常启动。

[root@flexusx-51a1 grav]# docker compose ps
WARN[0000] /data/grav/docker-compose.yaml: `version` is obsolete
NAME          IMAGE                     COMMAND   SERVICE   CREATED         STATUS         PORTS
grav-grav-1   linuxserver/grav:latest   "/init"   grav      2 minutes ago   Up 2 minutes   0.0.0.0:5220->80/tcp, :::5220->80/tcp, 0.0.0.0:5443->443/tcp, :::5443->443/tcp

在这里插入图片描述

6.6 查看Grav容器日志

检查Grav容器日志,确保Grav服务正常运行。

docker compose logs

在这里插入图片描述

七、访问Grav首页

7.1 关闭防火墙与selinux

  • 关闭防火墙
 systemctl stop firewalld && systemctl disable firewalld
  • 关闭selinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

7.2 Flexus云服务器X实例安全组配置

进入Flexus云服务器X实例控制台,进行安全组规则配置。在安全组入方向规则上,放行5220和5443端口。

在这里插入图片描述

八、访问Grav服务

8.1 访问Grav初始页

浏览器访问地址:http://弹性公网IP地址:5220,将IP替换为自己服务器IP地址,进入Grav初始页。

在这里插入图片描述

8.2 创建管理员账号

根据Grav初始页提示,自定义创建管理员账号信息。

在这里插入图片描述

8.3 登录Grav管理后台

注册登录账号完毕后,会自动跳转到后台管理页面。由于默认自动跳转是没有加端口号,会出现以下404错误:

在这里插入图片描述

此时,我们加上端口号,重新输入访问地址:http://IP地址:5220/admin/,将IP替换为自己云服务器的弹性公网IP地址,则可正常访问到Grav后台管理页面。

在这里插入图片描述

九、Grav的基本使用

9.1 设置系统语言

在Grav后台管理页面,点击“Configuration”(配置)–> “Languages”(语言),在“Supported”(已支持)后面的文本框中输入“zh”,然后点击弹出的“Add”(添加)按钮来添加中文支持。

在这里插入图片描述

语言设置完毕后,点击“save”来保存配置。

在这里插入图片描述

经过以上设置,可以看到系统语言已经成功设置为中文!

在这里插入图片描述

9.2 发布内容

在页面管理模块,点击“+增加”选项。在弹出的页面信息编辑窗口,自定义填写相关信息,其中页面模块这里选择Blog。

在这里插入图片描述

在这里插入图片描述

在文章编辑器中,使用Markdown语法编辑文章内容,完成后点击保存即可。

在这里插入图片描述

9.3 预览效果

通过浏览器访问 http://你的云服务器IP:5220/zh,可以看到Grav的前台页面已成功添加了Linux页面。

在这里插入图片描述

可以看到刚添加的文章页面,已经成功显示!

在这里插入图片描述

9.4 HTTPS方式访问

我们可以使用HTTPS安全地访问Grav服务,通过访问地址 https://你的云服务器IP:5443/zh,即可进入加密的Grav前台页面,享受安全可靠的浏览体验。

在这里插入图片描述

十、使用体验与总结

华为云Flexus云服务器X实例上部署Grav内容管理系统,不仅展示了华为云在技术支持和服务稳定性方面的卓越实力,同时也彰显了其在满足中小企业和开发者需求方面的强大优势。通过在openEuler系统下的顺利部署,Grav得以充分发挥其性能优势,为用户提供流畅且稳定的使用体验。华为云的高性能计算资源与全方位的服务支持,极大地简化了部署流程,并保障了系统的可靠运行。无论是从技术角度还是从实际应用效果来看,华为云Flexus云服务器X实例都展现出了其作为领先云服务提供商的专业水准。总而言之,选择华为云不仅意味着选择了稳定与高效,更是为业务发展奠定了坚实的基础。


把握华为云828 B2B企业节的契机,探索Flexus X实例带来的超值优惠,体验技术与创新的完美结合。无论是在高性能计算领域还是智能监控方面,华为云均以其卓越的品质和周到的服务展现了其领先地位。选择华为云,不仅意味着获得强大的技术支持,更是迈向数字化未来的关键一步。让我们携手共进,在华为云平台上开启新的成功篇章!


在这里插入图片描述

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

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

相关文章

TinyML-On-The-Fly: 实时、低功耗、低成本的微控制器嵌入式设备内计算机视觉技术用于无人机图像分类

这篇论文的标题是《TinyML-On-The-Fly: Real-Time Low-Power and Low-Cost MCU-Embedded On-Device Computer Vision for Aerial Image Classification》,作者是 Riya Samanta, Bidyut Saha, Soumya K. Ghosh,来自印度理工学院克勒格布尔分校。论文主要研…

电子元器件之MOS管,附上几个常用MOS管电路和仿真。

MOS管是一种常用的电子元器件。 1.MOS管的类别 MOSFET简称MOS,是一种绝缘栅型场效应管。按照类别可以分为增强型mos管和耗尽型mos管。 导电沟道的形成方式‌ 增强型MOS管:在没有外加电压时,源极和漏极之间没有导电沟道存在。只有当栅极电…

【玉米田】

题目 代码 #include <bits/stdc.h> using namespace std; typedef long long LL;const int mod 1e8; const int M 1 << 12; LL f[13][M]; int g[13]; vector<int> state; vector<int> p[M]; int n, m; bool check(int x) {return !(x & x <&…

攻防世界---->Windows_Reverse1(补)

做题笔记。 做题回顾。 假设&#xff0c;我们不知道地址随机怎么办&#xff1f;不能动调&#xff0c;只能静态分析。 下载 查壳 upx脱壳。 32ida打开。 动调报错。 重新打开&#xff0c;静态分析。 跟进关键函数。 不明白可以反汇编和汇编一起看。 溯源。 *decode 取值等于 by…

分布式锁之 防误删(优化之UUID防误删)

文章目录 1、AlbumInfoApiController --》testLock()2、AlbumInfoServiceImpl --》testLock()3、问题&#xff1a;删除操作缺乏原子性。 实现如下&#xff1a; 1、AlbumInfoApiController --》testLock() Tag(name "专辑管理") RestController RequestMapping(&quo…

【计网】从零开始掌握序列化与反序列化 --- 基础知识储备与程序重构

从零开始掌握序列化与反序列化 1 初识序列化与反序列化2 再谈Tcp协议3 程序重构3.1 Socket类3.2 回调函数设计3.3 最终的Tcp服务器类 1 初识序列化与反序列化 在刚学习计算机网络时&#xff0c;我们谈到过网络协议栈&#xff0c;其中最上层的就是应用层&#xff0c;那么这个应…

Qt圆角窗口

Qt圆角窗口 问题&#xff1a;自己重写了一个窗口&#xff0c;发现用qss设置圆角了&#xff0c;但是都不生效&#xff0c;不过子窗口圆角都生效了。 无边框移动窗口 bool eventFilter(QObject *watched, QEvent *evt) {static QPoint mousePoint;static bool mousePressed f…

开源、极简的B站第三方,建议所有人收藏

很多人说B站落寞了&#xff0c;但我觉得不是B站落寞&#xff0c;而是长视频落寞了。现代人已经没有充足的耐心&#xff0c;刷完一个十分钟的视频。毕竟&#xff0c;短视频可以把这十分钟切成50份&#xff0c;让我们开心50次。 可怕的是&#xff0c;B站即使落寞&#xff0c;在长…

继承的例题

答案&#xff1a;D 解析&#xff1a;C允许一个子类继承多个父类 知识点&#xff1a; 子类是父类的特殊化&#xff0c;父类是子类的泛化 解析&#xff1a;子类可以共享父类的属性和方法&#xff0c;选项A正确 面向对象关系中&#xff0c;类与类的关系包含继承&#xff0c;包…

IntelliJ IDEA 2024.1.4 (Ultimate Edition)找不到Add Framework Support解决方法

目录 背景: 解决方法&#xff1a; 步骤1: 步骤2&#xff1a; 步骤3&#xff1a; 创建Web项目的完整流程&#xff1a; 步骤1: 步骤2: 步骤3&#xff1a; 步骤4&#xff1a; Web优点: 背景: 我的IDE版本是IntelliJ IDEA 2024.1.4 (Ultimate Edition)&#xff0c;当我…

【优选算法之双指针】No.2--- 经典双指针算法(下)

文章目录 前言一、双指针示例&#xff1a;1.1 ⽔果成篮1.2 和为s的两个数字1.3 三数之和1.4 四数之和 二、双指针总结&#xff1a; 前言 &#x1f467;个人主页&#xff1a;小沈YO. &#x1f61a;小编介绍&#xff1a;欢迎来到我的乱七八糟小星球&#x1f31d; &#x1f4cb;专…

前后端分离,使用MOCK进行数据模拟开发,让前端攻城师独立于后端进行开发

mock是什么 Mock生成随机数据,拦截Ajax 请求&#xff0c;前后端分离&#xff0c;让前端攻城师独立于后端进行开发。 增加单元测试的真实性 通过随机数据,模拟各种场景。 在实际开发过程中&#xff0c;前端是通过axios来请求数据的&#xff0c;很多时候前端开发者就是通过写固定…

【Git必看系列】—— Git巨好用的神器之git stash篇

应用场景 当我们开发一个新功能时会先从master拉出一个分支dev&#xff0c;然后在这个dev分支下吭哧吭哧的开始写代码开发新功能&#xff0c;就如下代码所示&#xff0c;我们在dev分支下开发Person类的新功能getId() public class Person {private int id;private String nam…

Vue3:v-model实现组件通信

目录 一.性质 1.双向绑定 2.语法糖 3.响应式系统 4.灵活性 5.可配置性 6.多属性绑定 7.修饰符支持 8.defineModel使用 二.使用 1.父组件 2.子组件 三.代码 1.父组件代码 2.子组件代码 四.效果 一.性质 在Vue3中&#xff0c;v-model指令的性质和作用主要体现在…

vue3 快速入门系列 —— 基础

基础 前面我们已经用 vue2 和 react 做过开发了。 AIAutoPrediction 从 vue2 升级到 vue3 成本较大&#xff0c;特别是较大的项目。所以许多公司对旧项目继续使用vue2&#xff0c;新项目则使用 vue3。 有些UI框架&#xff0c;比如ant design vue1.x 使用的 vue2。但现在 an…

5.C++面向对象2(类对象大小计算,结构体内存对齐,大小端存储方式,this指针)

⭐本篇文章为C学习第4章&#xff0c;主要了解类对象大小和this指针 ⭐本人C代码仓库&#xff1a;yzc的c学习: 小川c的学习记录 - Gitee.com 目录 一. 类对象模型 1.1 类成员函数和成员变量的分布 1.2 如何计算类的大小&#xff1f;&#xff08;结构体内存对齐&#xff09…

卸载node,安装nvm的详细使用方法

一、nvm是什么&#xff1f; nvm是一个node的版本管理工具&#xff0c;可以简单切换的node版本、安装、查看。。。等等&#xff0c;与npm不同的是&#xff0c;npm是依赖包的管理工具。 二、nvm下载安装 安装之前需要先把 自己电脑上边的node给卸载了&#xff0c;不然安装不好…

【数据结构初阶】链式二叉树接口实现超详解

文章目录 1. 节点定义2. 前中后序遍历2. 1 遍历规则2. 2 遍历实现2. 3 结点个数2. 3. 1 二叉树节点个数2. 3. 2 二叉树叶子节点个数2. 3. 3 二叉树第k层节点个数 2. 4 二叉树查找值为x的节点2. 5 二叉树层序遍历2. 6 判断二叉树是否是完全二叉树 3. 二叉树性质 1. 节点定义 用…

日志系统第三弹:日志消息和格式化模块的实现

日志系统第三弹&#xff1a;日志消息和格式化模块的实现 一、日志消息模块的实现二、日志格式化模块的设计1.格式化占位符的约定2.如何打印1.各种零件类1.抽象类2.简单的零件类3.日期零件类4.非格式化数据零件类 2.Formatter 3.如何解析 三、日志格式化模块的实现1.解析函数2.c…

一文详解Unity下RTMP推送|轻量级RTSP服务|RTSP|RTMP播放模块说明

技术背景 好多开发者&#xff0c;对Unity下的模块&#xff0c;不甚了解&#xff0c;实际上&#xff0c;除了Windows/Linux/Android/iOS Native SDK&#xff0c;大牛直播SDK发布了Unity环境下的RTMP推流|轻量级RTSP服务&#xff08;Windows平台Linux平台Android平台&#xff09…