Docker部署GitLab服务器
一、GitLab介绍
1.1 GitLab简介
- GitLab 是一款基于 Git 的开源代码托管平台,集成了版本控制、代码审查、问题跟踪、持续集成与持续交付(CI/CD)等多种功能,旨在为团队提供一站式的项目管理解决方案。
- 借助 GitLab,开发团队可以高效协作,轻松管理代码版本,并通过内置的 DevOps 工具加速开发、测试和部署过程。
- GitLab 的独特优势在于其完整的容器化部署方案,官方支持与 Kubernetes 等容器编排平台的无缝集成,使平台更加易于管理、扩展,并支持现代化云原生架构。
1.2 GitLab特点
- 全面的功能支持:
- GitLab 不仅是一个代码仓库管理工具,还提供自动化构建、测试、部署等强大的 DevOps 功能,是现代化软件开发和团队协作的理想选择。
- Web 管理界面:
- 基于 Web 的操作界面,方便用户在浏览器中进行仓库管理、代码审查和 CI/CD 配置。
主要功能特点:
- 代码仓库管理:
- 支持分支管理、合并请求(Merge Requests)和代码审查等功能,为团队提供高效的协作环境。
- 代码托管:
- 无论是私有服务器还是公共云平台,GitLab 都支持全面的代码托管方案,满足不同规模团队的需求。
- 内置 CI/CD 工具:
- GitLab 提供持续集成和持续交付工具,支持自动化构建、测试和部署,并包含强大的可视化管道编辑器和测试报告功能。
- 安全管理:
- 支持多级用户权限、角色管理、双因素身份验证(2FA)、代码扫描和漏洞检测等功能,全面保障代码安全。
- DevOps 平台:
- GitLab 提供完整的 DevOps 生命周期管理,包括计划、创建、验证、发布、配置和监控,助力团队高效协作,加速软件交付。
二、本次实践介绍
2.1 本地环境规划
本次实践为个人测试环境,操作系统版本为centos7.9。
hostname | IP地址 | 操作系统版本 | Docker版本 |
---|---|---|---|
docker | 192.168.1.50 | centos 7.9 | 26.1.4 |
2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎使用;
2.在Docker环境下成功部署GitLab服务器。
三、本地环境检查
3.1 检查Docker服务状态
检查Docker服务是否正常运行,确保Docker正常运行。
[root@localhost /]# systemctl status docker
● docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)Active: active (running) since 六 2024-12-21 23:07:14 CST; 3h 29min agoDocs: https://docs.docker.comMain PID: 34141 (dockerd)Tasks: 67Memory: 151.2MCGroup: /system.slice/docker.service
docker安装教程:https://note.wym123.cn/docker/install/
3.2 检查Docker版本
检查Docker版本
[root@localhost /]# docker version
Client: Docker Engine - CommunityVersion: 26.1.4API version: 1.45Go version: go1.21.11Git commit: 5650f9bBuilt: Wed Jun 5 11:32:04 2024OS/Arch: linux/amd64Context: defaultServer: Docker Engine - CommunityEngine:Version: 26.1.4API version: 1.45 (minimum version 1.24)Go version: go1.21.11Git commit: de5c9cfBuilt: Wed Jun 5 11:31:02 2024OS/Arch: linux/amd64Experimental: falsecontainerd:Version: 1.6.33GitCommit: d2d58213f83a351ca8f528a95fbd145f5654e957runc:Version: 1.1.12GitCommit: v1.1.12-0-g51d5e94docker-init:Version: 0.19.0GitCommit: de40ad0
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
[root@localhost /]# docker compose version
Docker Compose version v2.27.1
三、Docker Compse版本升级(可选)
1. 从 GitHub 下载 Docker Compose
- 打开 GitHub Docker Compose 官方发布页面:
- 地址:https://github.com/docker/compose/releases
- 找到需要的版本,下载适合你的系统架构的二进制文件(如 Linux 的
docker-compose-linux-x86_64
)。
提示: 如果最新版没有提供二进制文件,可以选择较低版本,直到找到对应的文件。
2. 上传到 Linux
-
将下载的文件通过工具(如
scp
或WinSCP
)上传到/usr/local/bin
目录:scp docker-compose-linux-x86_64 root@<your-server-ip>:/usr/local/bin/
-
上传后,将文件重命名为
docker-compose
:mv /usr/local/bin/docker-compose-linux-x86_64 /usr/local/bin/docker-compose
3. 添加执行权限
为二进制文件添加可执行权限:
chmod +x /usr/local/bin/docker-compose
4. 验证安装
-
查看 Docker Compose 版本,验证是否安装成功:
docker-compose version
-
如果提示权限错误(如
Permission denied
),需要重新添加可执行权限:chmod +x /usr/local/bin/docker-compose
四、下载GitLab镜像
从docker hub下载GitLab镜像
[root@docker gitlab]# docker pull gitlab/gitlab-ce:latest
latest: Pulling from gitlab/gitlab-ce
7b1a6ab2e44d: Already exists
6c37b8f20a77: Pull complete
f50912690f18: Pull complete
bb6bfd78fa06: Pull complete
2c03ae575fcd: Pull complete
839c111a7d43: Pull complete
4989fee924bc: Pull complete
666a7fb30a46: Pull complete
Digest: sha256:5a0b03f09ab2f2634ecc6bfeb41521d19329cf4c9bbf330227117c048e7b5163
Status: Downloaded newer image for gitlab/gitlab-ce:latest
docker.io/gitlab/gitlab-ce:latest
五、部署GitLab服务器
5.1 创建目录
-
创建 GitLab 数据目录
为了确保容器内的 GitLab 数据持久化,需要在宿主机上创建专用目录。执行以下命令:mkdir -p /data/gitlab/{data,logs,config} && cd /data/gitlab/
/data/gitlab/data
:存储 GitLab 的数据(如仓库和数据库)。/data/gitlab/logs
:存储 GitLab 的日志文件。/data/gitlab/config
:存储 GitLab 的配置文件。&& cd /data/gitlab/
:进入创建的主目录。
5.2 编辑 docker-compose.yml
文件
-
创建或编辑 Docker Compose 配置文件: 使用文本编辑器创建并编辑
docker-compose.yml
文件:vim /data/gitlab/docker-compose.yml
-
完整的
docker-compose.yml
示例:version: "3" services:gitlab:container_name: gitlab # 容器名称image: gitlab/gitlab-ce:latest # 使用 GitLab 社区版最新镜像hostname: '192.168.0.50' # 配置主机名(本地或虚拟机 IP)restart: always # 容器意外停止时自动重启ports:- 8088:80 # 映射 HTTP 端口- 8443:443 # 映射 HTTPS 端口- 2222:22/tcp # 映射 SSH 端口volumes:- /etc/localtime:/etc/localtime # 同步宿主机时间- /data/gitlab/data:/var/opt/gitlab # 数据存储路径- /data/gitlab/config:/etc/gitlab # 配置文件路径- /data/gitlab/logs:/var/log/gitlab # 日志文件路径environment:GITLAB_OMNIBUS_CONFIG: |external_url 'http://192.168.0.50:80' # 外部访问 URLgitlab_rails['gitlab_shell_ssh_port'] = 2222 # 配置 SSH 端口deploy:resources:limits: # 设置资源限制memory: 4G # 最大内存使用reservations: # 保留资源memory: 1G # 最低内存保留
注意事项:
external_url
中指定的端口号不仅是访问路径的一部分,它还会影响 GitLab 应用本身的监听端口。例如,如果设置为http://192.168.0.50:8088
,GitLab 会在 8088 端口上监听并提供服务(是对于gitlab内部而言的),而不是默认的 80(HTTP)端口, 我们的访问路径是ip+映射后的端口号,不是external_url里面提供的。
5.3 部署 GitLab
-
启动容器: 使用 Docker Compose 命令启动 GitLab 容器:
docker compose up -d
up
:启动容器。-d
:以守护进程模式运行容器(后台运行)。
-
运行结果:
-
执行后,Docker Compose 将下载
gitlab/gitlab-ce:latest
镜像并启动容器。 -
可以通过以下命令查看运行状态:
docker ps
-
输出示例:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 123456789abc gitlab/gitlab-ce:latest "/assets/wrapper" 2 minutes ago Up 1 minute 0.0.0.0:80->80/tcp, 0.0.0.0:8443->443/tcp gitlab
-
六、访问gitlab仓库
6.1 进入 GitLab 登录页
-
访问 GitLab Web 界面
在浏览器中输入以下地址访问 GitLab 登录页:http://192.168.0.50:80
-
注意:将
192.168.0.50
替换为您部署 GitLab 的服务器 IP 地址。 -
如果配置了 HTTPS,则访问地址为:
https://192.168.0.50:8443
-
6.2 获取初始密码
在 GitLab 容器的首次启动过程中,会生成默认的超级管理员账号 root
和随机密码。初始密码可以通过以下命令查看:
-
查看初始密码文件
在容器中查看初始密码:docker exec -it gitlab cat /etc/gitlab/initial_root_password
输出示例:
Password: KfK95J1yFzESkYkNjEkj
说明:
- 密码文件位于
/etc/gitlab/initial_root_password
。 - 该密码仅在首次启动时有效。
- 密码文件位于
-
删除初始密码文件(可选)
为了安全起见,可以在记下初始密码后删除该文件:docker exec -it gitlab rm /etc/gitlab/initial_root_password
6.3 重置登录密码(如有需要)
如果遗忘了超级管理员密码,可以通过以下步骤进行重置:
-
进入 GitLab 容器内部
使用 Docker 命令进入容器:docker exec -it gitlab /bin/bash
docker exec
:在运行中的容器内执行命令。gitlab
:GitLab 容器的名称。
输出示例:
[root@docker gitlab]# docker exec -it gitlab /bin/bash root@192:/#
-
进入 Rails 控制台
启动 GitLab 的 Rails 控制台:gitlab-rails console -e production
-e production
:以生产环境模式启动控制台。
-
查询超级管理员用户
查询超级管理员用户信息(默认用户 ID 为1
):user = User.where(id: 1).first
示例图片:
-
修改密码
设置新的密码(以admin36987
为例):user.password = 'admin36987'
-
保存修改并退出
保存新密码并退出控制台:user.save! # 保存更改 exit # 退出控制台
示例图片:
6.4 访问 GitLab 首页
-
使用初始密码或修改后的账号密码登录 GitLab:
- 用户名:
root
- 密码:初始密码或修改后的密码(如
admin36987
)。
修改密码:
- 用户名:
-
首次登录时提示设置新密码
如果使用初始密码登录,GitLab 会提示您设置新密码。
6.5 设置中文语言
-
进入 Preferences 页面
登录后,点击右上角头像,进入Preferences
页面:Profile > Preferences
-
修改语言设置
在Preferences
页面找到Localization
区域,将Language
选项修改为简体中文
。示例图片:
-
修改前:
-
修改后:
-
-
保存设置
点击保存按钮,刷新界面后语言会立即切换为简体中文。
相关文章:
Docker部署GitLab服务器
一、GitLab介绍 1.1 GitLab简介 GitLab 是一款基于 Git 的开源代码托管平台,集成了版本控制、代码审查、问题跟踪、持续集成与持续交付(CI/CD)等多种功能,旨在为团队提供一站式的项目管理解决方案。借助 GitLab,开发…...
flink实现复杂kafka数据读取
接上文:一文说清flink从编码到部署上线 环境说明:MySQL:5.7;flink:1.14.0;hadoop:3.0.0;操作系统:CentOS 7.6;JDK:1.8.0_401。 常见的文章中&…...
小雅Alist缓存太多怎么清理?教程来了
声明:不喜欢小白在开头唠嗑的小伙伴可以直接滑动到【 正文开始】处阅读。 前言 前段时间讲到在飞牛OS上部署小雅超集AList,后台看到很多小伙伴都部署了。 飞牛NAS上的小雅根本没有资源?只剩下打赏码?那得按照这个重新配置了&…...
Python字符串及正则表达式(十一):正则表达式、使用re模块实现正则表达式操作
前言:在 Python 编程的广阔天地中,字符串处理无疑是一项基础而关键的技能。正则表达式,作为处理字符串的强大工具,以其灵活的模式匹配能力,在文本搜索、数据清洗、格式验证等领域发挥着不可替代的作用。本系列博客已经…...
前端:金额高精度处理
Decimal 是什么 想必大家在用js 处理 数字的 加减乘除的时候,或许都有遇到过 精度不够 的问题,还有那些经典的面试题 0.20.1 ! 0.3, 至于原因,那就是 js 计算底层用的是 IEEE 754 ,精度上有限制, 那么Deci…...
WPF 依赖属性和附加属性
除了普通的 CLR 属性, WPF 还有一套自己的属性系统。这个系统中的属性称为依赖属性。 1. 依赖属性 为啥叫依赖属性?不叫阿猫阿狗属性? 通常我们定义一个普通 CLR 属性,其实就是获取和设置一个私有字段的值。假设声明了 100 个 …...
git merge 冲突 解决 show case
废话不多说,上 case!!! 1. 更新master分支 package org.example;public class Main {public static void main(String[] args) {System.out.println("--------Git冲突测试代码开始---------");System.out.println(&qu…...
小鹏“飞行汽车”上海首飞,如何保障智能出行的安全性?
近日,小鹏汇天的“陆地航母”飞行汽车在上海陆家嘴成功完成首飞,标志着飞行汽车时代在中国正式拉开序幕。作为一项突破性的科技创新,飞行汽车不仅将重塑我们的出行方式,还将深刻改变城市的交通格局。此次飞行不仅证明了飞行汽车的…...
分析excel硕士序列数据提示词——包含对特征的筛选,非0值的过滤
文章目录 1 分析出发点2 围绕出发点的文件分析3 功能模块计算重心相关性计算教学倾向百分比多列相关性计算结果封装证伪——过滤0后的交叉相关系数封装和总控——批量处理特征筛选——筛选提问倾向最大和最小的前五代码总的清洗1 分析出发点 写一个python代码,遍历"D:\Ba…...
sed | 一些关于 sed 的笔记
sed 总结 sed 语法sed [-hnV] [-e<script>] [-f<script文件>] [文本文件]--- 参数:-e<script> 以选项中指定的script 来处理输入的文本文件-f<script文件> 以选项中指定的script 文件来处理输入的文本文件动作说明:a 新增s 取代d 删除i 插入…...
如何重新设置VSCode的密钥环密码?
故障现象: 忘记了Vscode的这个密码: Enter password to unlock An application wants access to the keyring “Default ke... Password: The unlock password was incorrect Cancel Unlock 解决办法: 1.任意terminal下,输入如下…...
数据结构 (字符串:KMP)
KMP算法: 构造ne数组 和 匹配过程 vector<int> build_next(string s) { vector<int> ne(s.size()); ne[0] -1; for (int i 1, j -1; i < s.size(); i) { while (j ! -1 && s[i] ! s[j 1])j ne[j]; if (s[i…...
剑指offer搜索二维矩阵
题目连接 https://leetcode.cn/problems/search-a-2d-matrix-ii/’ 代码 自己想出来的 解法一 初始化两个指针,i0,j列数-1 若此时matrix[i][j]target 则返回true 若此时matrix[i][j]>target,表明在第j列中不可能存在target,因为列是升序的 若此时ma…...
【LIBS】开源库编译之OSQP
目录 编译环境源码下载本地编译交叉编译 编译环境 【LIBS】开源库编译之编译环境 源码下载 git clone --recursive --branch v0.6.3 https://github.com/osqp/osqp.git libosqp-0.6.3本地编译 cd libosqp-0.6.3cmake -B build_amd64 \-D CMAKE_BUILD_TYPERelease \-D CMAKE…...
【系统移植】制作SD卡启动——将uboot烧写到SD卡
在开发板上启动Linux内核,一般有两种方法,一种是从EMMC启动,还有一种就是从SD卡启动,不断哪种启动方法,当开发板上电之后,首先运行的是uboot。 制作SD卡启动,首先要将uboot烧写到SD卡ÿ…...
.NET重点
B/S C/S什么语言 B/S: 浏览器端:JavaScript,HTML,CSS 服务器端:ASP(.NET)PHP/JSP 优势:维护方便,易于升级和扩展 劣势:服务器负担沉重 C/S java/.NET/…...
米思奇图形化编程之ESP32控制LED灯闪烁方案实现
目录 一、项目概述 二、硬件准备 三、硬件连接 四、软件编程 五、验证效果 六、总结 一、项目概述 本项目使用米思奇图形化编程环境,编写micropython软件代码,实现了控制ESP32开发板上LED灯闪烁效果。该项目可为后续更复杂的物联网项目打下基础。…...
SMMU软件指南SMMU编程之全局错误和最小配置
安全之安全(security)博客目录导读 目录 一、全局错误 二、最小配置 一、全局错误 与编程接口相关的全局错误会报告到适当的 SMMU_(*_)GERROR 寄存器,而不是通过基于内存的事件队列。这些错误通常是严重的,例如导致 SMMU 停止向前推进。例如…...
JavaEE 导读与环境配置
JavaEE 介绍 Java EE(Java Platform Enterprise Edition), Java 平台企业版. 是JavaSE的扩展, ⽤于解决企业级的开发需求, 所以也可以称之为是⼀组⽤于企业开发的Java技术标准. 所以, 学习JavaEE主要是学习Java在企业中如何应⽤ 框架学习 Java EE 课程共涉及4个框架的学习: Spr…...
Cesium 实例化潜入潜出
Cesium 实例化潜入潜出 1、WebGL Instance 的原理 狭义的的WebGL 中说使用 Instance, 一般指使用 glDrawArraysInstanced 用于实例化渲染的函数。它允许在一次绘制调用中渲染多个相同的几何体实例,而无需为每个实例发起单独的绘制调用。 Three.js 就是使用这种方…...
设计模式——适配器模式
1. 定义 适配器模式(Adapter Pattern)属于结构型设计模式,它的主要作用是将一个类的接口转换成客户期望的另一个接口,使得原本由于接口不兼容而不能一起工作的类可以协同工作。简单来说,就是充当了不同接口之间的 “转…...
Linux安装Docker
如何在虚拟机中安装linux操作系统,参考文章: VMware下Centos7安装步骤-CSDN博客 使用Xshell链接到linux操作系统 执行命令,安装docker的底层工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 增加阿里云docker下载仓…...
CH430N 插上电脑无反应
电路图,此处我用的是3.3V供电,现象就是插上USB,电脑没有反应。搜索也搜索不到 抄板请看自己是多少V供电 后来看到也有类似的 换了芯片后就好了。md新板子第一个芯片就是坏的,服了。...
Java实现贪吃蛇游戏
目录 一、项目结构 二、实现步骤 1. 创建 Snake 类 2. 创建 Food 类 3. 创建 GameBoard 类 4. 创建 SnakeGame 类 三、总结 贪吃蛇是一个经典的电子游戏,它的玩法非常简单,但又充满了挑战。玩家通过控制蛇的移动,吃到食物并不断成长&a…...
为SSH2协议服务器的用户设置密钥
目录 私钥的创建1. 在服务器上直接生成2. 如果需要配置免密登录3. 查看生成的密钥 导出私钥至SSH用户获取sudo权限 新的一台服务器类型是SSH2:这表示服务器支持SSH(Secure Shell)协议的第二个版本。SSH是一个网络协议,用于加密方式…...
最新版Chrome浏览器加ActiveX控件之多个VLC控件同时加载
背景 VLC Media Player 是一款可播放大多数格式,而无需安装编解码器包的媒体播放器。可以播放 MPEG-1、MPEG-2、MPEG-4、DivX、DVD/VCD、卫星数字电视频道、地面数字电视频道(digital terrestrial television channels)、在许多作业平台底下透过宽带 IPv4、IPv6 网络…...
sql server 查询对象的修改时间
sql server 不能查询索引的最后修改时间,可以查询表,存储过程,函数,pk 的最后修改时间使用以下语句 select * from sys.all_objects ob order by ob.modify_date desc 但可以参考一下统计信息的最后修改时间,因为索…...
均值聚类算法
K-均值聚类算法是一种常用的无监督学习算法,用于将数据集划分成K个不同的簇。该算法的步骤如下: 1. 选择聚类的个数K。 2. 随机初始化K个聚类中心。 3. 对每个数据点计算其与聚类中心的距离,并将其划分到最近的聚类中心所代表的簇。 4. 对每…...
django中cookie与session的使用
一、cookie cookie由服务器生成 ,存储在浏览器中的键值对数据,具有不安全性,对应敏感数据应该加密储存在服务端每个域名的cookie相互独立浏览器访问域名为A的url地址,会把A域名下的cookie一起传递到服务器cookie可以设置过期时间 django中设…...
Python 协程:并发编程的轻量级利器
一、协程是什么? 协程是一种比线程更加轻量级的存在。它可以在特定的点暂停执行,然后在后续某个时刻恢复执行,并且能够在暂停期间保存其执行状态。与传统的多线程模型不同,协程不需要操作系统进行线程上下文切换的开销,…...
理解JVM
JVM简介 JVM 是 Java Virtual Machine 的简称,意为 Java 虚拟机 虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统 常见的虚拟机: JVM 、 VMwave 、 Virtual Box JVM 和其他两个虚拟机的区别: 1…...
GhostRace: Exploiting and Mitigating Speculative Race Conditions-记录
文章目录 论文背景Spectre-PHT(Transient Execution )Concurrency BugsSRC/SCUAF和实验条件 流程Creating an Unbounded UAF WindowCrafting Speculative Race ConditionsExploiting Speculative Race Conditions poc修复flush and reload 论文 https:/…...
【环境搭建】使用IDEA远程调试Dolphinscheduler
以Dolphinscheduler-3.1.8为例,先把容器起了: $ docker pull apache/dolphinscheduler-standalone-server:3.1.8 $ docker run -d -p 12345:12345 -p 25333:25333 -p 5005:5005 -d apache/dolphinscheduler-standalone-server:3.1.8下载Dolphinschedule…...
强基计划之编程:开启科研精英培养新路径
强基计划之编程:开启科研精英培养新路径 一、强基计划概述 1. 出台背景 在 2003 年,教育部开启高校自主招生改革,于探索综合评价学生、破除招生“唯分数论”等方面收获一定成效。相关调查研究显示,自主招生所录取的学生在入校后…...
奇怪问题| Chrome 访问csdn 创作中心的时候报错: 服务超时,请稍后重试
Chrome 访问csdn 创作中心的时候报错: 服务超时,请稍后重试用无痕浏览器可以正常访问 关闭代理无效清缓存和Cookies无效。考虑无痕浏览器模式下插件不生效,尝试把chrome 插件也禁用,发现有效,是该扩展程序的缘故...
Spring Boot 教程之三十六:实现身份验证
如何在 Spring Boot 中实现简单的身份验证? 在本文中,我们将学习如何使用 Spring设置和配置基本身份验证。身份验证是任何类型的安全性中的主要步骤之一。Spring 提供依赖项,即Spring Security,可帮助在 API 上建立身份验证。有很…...
设计模式中单例模式中懒汉模式的问题
设计模式中单例模式中懒汉模式的问题 今天在项目中遇到了要使用懒汉模式的问题。百度之后,发现还有很多细节是自己之前没有见过的。于是记录一下。下面是在AI助手中的说明。 单例模式的懒汉模式(Lazy Singleton)是在需要时才创建实例&#…...
【唐叔学算法】第18天:解密选择排序的双重魅力-直接选择排序与堆排序的Java实现及性能剖析
引言 在数据排序的世界里,选择排序是一类简单而直观的算法,它通过不断选取未排序部分中的最小(或最大)元素来逐步构建有序序列。今天,我们将深入探讨两种基于选择思想的排序方法——直接选择排序和堆排序,…...
力扣48.旋转图像
文章目录 一、前言二、原地旋转 一、前言 力扣48.旋转图像 这道题要求把给定矩阵旋转90度,并且不允许使用额外矩阵来完成旋转图像。 于是这道题只能使用原地旋转的方法来解决 二、原地旋转 对于一个N3的矩阵来说,只需要两次循环就可以完成了 将A1放到…...
jdk1.8新特性、jvm内存结构、垃圾回收
一、JDK 1.8 也被称为 Java 8,有许多重要的新特性: 1、Lambda 表达式: 它允许把函数作为一个方法的参数(函数作为值传递),可以用更紧凑的方式来表示匿名内部类了例如: new Thread(new Runnable() {Overr…...
MFC/C++学习系列之简单记录13
MFC/C学习系列之简单记录13 前言memsetList Control代码注意 总结 前言 今天记录一下memset和List control 的使用吧! memset memset通常在初始化变量或清空内存区域的时候使用,可以对变量设定特定的值。 使用: 头文件: C&#…...
RabbitMQ中的Topic模式
在现代分布式系统中,消息队列(Message Queue)是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个广泛使用的开源消息代理,支持多种消息传递模式,其中 Topic 模式 是一种灵活且强大的模式,允许生产者…...
苹果手机怎么清理空间:拯救你的拥挤手机
在数字生活的海洋中,我们的苹果手机就像一艘小船,载满了照片、应用、视频和各种下载的“宝贝”。随着时间的推移,这艘小船开始变得拥挤,航行速度放缓,甚至有时候直接卡壳。苹果手机怎么清理空间?是时候学会…...
实习冲刺数据库练习-01 基础查询
原题链接:牛客网在线编程_SQL篇_非技术快速入门 数据表示例: 根据数据表示例要求我们完成以下查询: (1)获取用户信息表中所有的数据,请你取出相应结果 (2)获取用户的设备id对应的…...
GAN网络详解及涨点大全总结(源码)
(需要源码请私信或评论) GAN原理 GAN的基本原理建立在 生成模型和判别模型的博弈过程 上。这种独特的机制使得GAN能够在复杂的分布上实现高效的无监督学习。在这个过程中,生成器G和判别器D相互竞争,最终达到一种平衡状态,在此状态下,G能够产生高质量的合成样本,而D则无…...
前端关于pptxgen.js个人使用介绍
官方文档链接:Quick Start Guide | PptxGenJS git地址:https://github.com/gitbrent/PptxGenJS/ 1. 安装命令 npm install pptxgenjs --save yarn add pptxgenjs 2. 示例demo import pptxgen from "pptxgenjs"; // 引入pptxgen // 1. Create a Presenta…...
Webrtc音频模块(四) 音频采集
音频的采集还是封装在AudioDeviceWindowsCore中,相关的Core Audio API接口是下面几个: IAudioClient* _ptrClientIn IAudioCaptureClient* _ptrCaptureClient rtc::scoped_refptr<IMediaObject> _dmo rtc::scoped_refptr<IMediaBuffer> _me…...
乘积小于K的子数组
要解决“乘积小于 k 的子数组”问题,可以使用滑动窗口技术。下面是详细的步骤和思路: 初始化变量: 定义两个指针 left 和 right,都初始化为 0,用于表示窗口的左右边界。一个 product 变量初始化为 1,用于存…...
vue的ElMessage的css样式不生效
我使用elementplus,是使用的用哪个单独引入的,然后表单校验时候警告的css不生效,就是这个效果 反复看视频的引入也没发现问题,后来才知道需要这个引入 import { ElMessage } from "element-plus"; import element-pl…...
视频会议系统如何对接电话会议系统?
视频会议系统如何对接电话会议系统? 作者:开源视频会议系统BigBlueButton&BBBEasy中国区团队,Github地址:https://github.com/lihaiya/bigbluebutton 视频会议系统与电话会议系统的对接,是现代企业通信整合的重要…...