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

docker部署Gitlab社区版,步骤以及外网访问出现502的解决方式 - 实践

需求

公司需要自己搭建gitlab服务器,决定使用免费的社区版,最简单的方式是通过docker部署,在服务器找一个文件夹,新建docker-compose.yml

#version: "3.9"
services:
gitlab:
image: gitlab/gitlab-ce
container_name: gitlab
user: root
restart: always
ports:
- "33333:80" # 将容器内部的80端口映射到宿主机的33333端口,同时容器内改用80端口
volumes:
- "./config:/etc/gitlab"
- "./logs:/var/log/gitlab"
- "./data:/var/opt/gitlab"
logging:
driver: journald
shm_size: 256m

我这里是需要将33333端口进行映射,这是个大坑

坑1

首先需要联系运维,看这个33333端口开放有没有限制,我就是因为这个没给开放,导致本地localhost:33333能访问,外网访问ip:33333报502

坑2

gitlab在服务器上下载不下来,这个可能和服务器的网络有关,不能访问国外网络,可以在一台能部署docker的电脑上打包好,把文件传到服务器上,我就是在一台windows电脑上,通过dockerDesktop打包的

docker pull gitlab/gitlab-ce:latest
docker save -o gitlab_gitlab-ce.tar gitlab/gitlab-ce:latest

将 gitlab_gitlab-ce.tar 文件通过 U 盘、SCP 等方式复制到您的 CentOS 服务器上
在您的 CentOS 服务器上:

sudo docker load -i gitlab_gitlab-ce.tar

加载成功后,再次运行 sudo docker compose up。

坑3如果启动后遇到502错误

如果容器启动但访问时出现502错误,通常是资源不足或初始化未完成:

# 查看容器资源使用情况
sudo docker stats gitlab
# 查看详细日志
sudo docker compose logs gitlab
# 进入容器检查状态
sudo docker exec -it gitlab gitlab-ctl status

GitLab 官方建议至少 4GB 内存。
GitLab 首次启动确实需要较长时间(可能几分钟到十几分钟,取决于硬件)进行初始化数据库和配置。如果日志在滚动输出但没有明显的错误信息,并且 gitlab-ctl status 显示服务在陆续启动,建议你耐心等待一段时间再观察。

坑4 Puma 一直重启,导致502

如果打印出的输出是这样的

[ChipletRing_web@centos7_100 gitlab]$ sudo docker exec -it gitlab /bin/bash
root@221:/# gitlab-ctl status | grep -E "(puma|sidekiq|unicorn|nginx)"
run: nginx: (pid 660) 605s; run: log: (pid 712) 602s
run: puma: (pid 1914) 19s; run: log: (pid 572) 622s
run: sidekiq: (pid 577) 617s; run: log: (pid 598) 614s
root@221:/#

Puma 进程 (pid 1914) 的运行时间只有 19 秒,而 Nginx 和 Sidekiq 都已经运行了超过 10 分钟。这表明 Puma(GitLab 的核心应用服务器)在不断崩溃和重启,这就是导致 502 错误的根本原因!

Puma 频繁崩溃通常由以下几个原因导致,请按顺序排查:

  1. 内存不足(最常见!)
    GitLab 对内存要求很高,最少需要 4GB 的可用内存。如果内存不足,Puma 进程会被系统终止。

检查内存情况:

# 在宿主机上执行
free -h
# 在容器内查看最近是否有进程被OOM Killer杀死
grep -i 'killed process' /var/log/syslog | tail -5

解决方案:

如果内存不足,请增加服务器内存。

或者为系统创建 Swap 交换分区(临时解决方案):

# 在宿主机上操作
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  1. 端口冲突
    Puma 可能在使用默认端口并与其它服务冲突。

检查并修改 Puma 端口:

# 编辑 GitLab 配置文件
vi /etc/gitlab/gitlab.rb
# 添加或修改以下行,选择一个未占用的端口
puma['port'] = 8083
# 保存后重新配置 GitLab
gitlab-ctl reconfigure
gitlab-ctl restart puma
  1. 数据库连接或初始化问题
    GitLab 启动时需要连接 PostgreSQL 数据库,如果数据库尚未完成初始化或连接失败,Puma 会启动失败。

检查数据库状态和日志:

# 检查数据库状态
gitlab-ctl status postgresql
# 查看数据库日志
tail -f /var/log/gitlab/postgresql/current
# 尝试初始化数据库(如果尚未完成)
gitlab-ctl reconfigure
  1. 文件权限问题
    确保 GitLab 相关目录的权限正确。

修复权限:

gitlab-ctl reconfigure
gitlab-ctl restart

我这边是端口冲突了,刚开始设置的是8080端口,与nginx冲突,如果日志打出来是这样的

[ChipletRing_web@centos7_100 gitlab]$ sudo docker exec gitlab gitlab-ctl status
run: alertmanager: (pid 1676) 148s; run: log: (pid 1465) 178s
run: gitaly: (pid 298) 241s; run: log: (pid 356) 240s
run: gitlab-exporter: (pid 1607) 150s; run: log: (pid 731) 198s
run: gitlab-kas: (pid 516) 229s; run: log: (pid 564) 228s
run: gitlab-workhorse: (pid 1583) 151s; run: log: (pid 626) 210s
run: logrotate: (pid 267) 254s; run: log: (pid 276) 250s
run: nginx: (pid 664) 205s; run: log: (pid 711) 204s
run: postgres-exporter: (pid 1700) 148s; run: log: (pid 1485) 174s
run: postgresql: (pid 363) 235s; run: log: (pid 373) 234s
run: prometheus: (pid 1617) 149s; run: log: (pid 1251) 186s
run: puma: (pid 568) 223s; run: log: (pid 575) 222s
run: redis: (pid 280) 247s; run: log: (pid 290) 246s
run: redis-exporter: (pid 1609) 150s; run: log: (pid 751) 190s
run: sidekiq: (pid 580) 217s; run: log: (pid 591) 216s
run: sshd: (pid 43) 264s; run: log: (pid 42) 264s
[ChipletRing_web@centos7_100 gitlab]$

就说明启动成功了

常用命令

部署gitlab的时候,常用命令如下

在能连外网的电脑上运行
# 1. 拉取镜像
docker pull gitlab/gitlab-ce:latest
# 2. 查看镜像ID(确认拉取成功)
docker images
# 3. 将镜像保存为tar文件
docker save -o gitlab_gitlab-ce.tar gitlab/gitlab-ce:latest
# 4. 检查文件大小(GitLab镜像很大,约1.5-2GB)
ls -lh gitlab_gitlab-ce.tar
在服务器运行:
# 进入您的gitlab目录
cd /path/to/gitlab
# 加载镜像(这个过程需要一些时间)
sudo docker load -i gitlab_gitlab-ce.tar
# 验证镜像是否加载成功
sudo docker images | grep gitlab-ce
# 2. 启动GitLab(现在应该可以成功了)
sudo docker compose up -d
# 1. 实时跟踪Nginx的错误日志(重点关注错误信息)
sudo docker exec gitlab tail -f /var/log/gitlab/nginx/gitlab_error.log
# 2. 实时跟踪Puma(应用服务器)的日志
sudo docker exec gitlab tail -f /var/log/gitlab/puma/puma_stdout.log
sudo docker exec gitlab tail -f /var/log/gitlab/puma/puma_stderr.log
# 3. 实时跟踪GitLab Rails应用的日志
sudo docker exec gitlab tail -f /var/log/gitlab/gitlab-rails/production.log
# 4. 也可以使用gitlab-ctl tail命令综合查看:cite[3]:cite[6]
sudo docker exec gitlab gitlab-ctl tail
sudo docker exec -it gitlab vi /etc/gitlab/gitlab.rb
# 为 Puma 指定一个不同的端口(例如 8082)
puma['port'] = 8082
# 确保 Nginx 配置正确(保持你之前的设置)
nginx['listen_port'] = 8081
external_url 'http://xxxxxxxx:33333'
# 重新配置 GitLab
sudo docker exec gitlab gitlab-ctl reconfigure
# 重启 GitLab 服务
sudo docker exec gitlab gitlab-ctl restart
# 查看 GitLab 服务状态
sudo docker exec gitlab gitlab-ctl status

这个是我用到的编辑过的部分

external_url 'http://221.226.159.58:33333'
nginx['listen_addresses'] = ['0.0.0.0'] # 确保监听所有端口
nginx['listen_port'] = 80 # 明确指定容器内监听接口,通常80
puma['listen'] = '127.0.0.1' # Puma 默认监听 127.0.0.1
puma['port'] = 8081 # puma默认监听接口,防止端口冲突
#明确告知Gitlab nginx如何连接到puma
gitlab_rails['internal_api_url'] = "http://127.0.0.1:8081"
gitlab_workhorse['auth_backend'] = "http://127.0.0.1:8081"
# gitlab_backup_cli['additional_groups'] = %w[git gitlab-psql registry]

docker端口映射

version: '3'
services:
web-app-1:
image: nginx
ports:
- "8080:80" # 服务1使用宿主机8080端口
web-app-2:
image: nginx
ports:
- "8081:80" # 服务2使用宿主机8081端口
web-app-3:
image: nginx
ports:
- "8082:80" # 服务3使用宿主机8082端口

对于这段代码映射的解释:
核心概念:两个不同的“世界”
有两个独立的网络环境:

宿主机 (Host) 世界:你的 Ubuntu 物理机或虚拟机。它有自己的 IP 地址(如 192.168.1.100)和一套端口(80, 8080, 22, 443 等)。

容器 (Container) 世界:每个 Docker 容器都是一个隔离的、迷你版的 Linux 系统。它也有自己独立的内部 IP 地址(由 Docker 分配,如 172.18.0.2)和一套完全独立的端口。

为什么不会冲突?
关键在于:冲突只发生在“宿主机世界”的端口上。

宿主机端口是唯一的:

8080, 8081, 8082 是宿主机上三个完全不同的端口。

Docker 会让宿主机同时监听这三个端口,它们之间不会冲突。

这就好比一家公司有三个不同的总机电话号码。

容器端口是独立的:

每个容器内部的 80 端口都只属于它自己所在的“迷你系统”。

web-app-1 在自己的小世界里监听 80 端口。

web-app-2 也在自己的小世界里监听 80 端口。

它们互相看不见对方,也完全不知道对方的存在,所以根本不会冲突。

这就好比公司里的每个部门都有自己的内部分机号 80,但因为他们处于不同的分机系统,所以号码可以重复。

访问流程
根据上面的配置,访问流程是这样的:

当你在浏览器访问 http://你的宿主机IP:8080时:

流量到达宿主机的 8080 端口。

Docker 接收到流量,说:“哦,8080 端口映射给了 web-app-1”。

Docker 将流量转发到 web-app-1 容器的 80 端口。

Nginx 在容器内接收到流量并处理。

当访问 http://你的宿主机IP:8081时:

同样流程,但 Docker 会将流量转发到 web-app-2 容器的 80 端口。

用一个比喻来理解
想象一栋大楼(宿主机)里有三个独立的套房(容器):

套房A (web-app-1):大楼地址是 大厦8080号,套房内的房间号是 80。

套房B (web-app-2):大楼地址是 大厦8081号,套房内的房间号是 80。

套房C (web-app-3):大楼地址是 大厦8082号,套房内的房间号是 80。

快递员(网络请求)需要先找到正确的大楼地址(宿主机IP:宿主机端口),比如找到“大厦8080号”,然后把包裹送给这个地址下的“80号房间”(容器端口)。

每个套房都有自己的“80号房间”,但因为大楼地址不同,所以快递员永远不会送错。

相关文章:

docker部署Gitlab社区版,步骤以及外网访问出现502的解决方式 - 实践

docker部署Gitlab社区版,步骤以及外网访问出现502的解决方式 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier Ne…...

python_Day21_mysql(2)

今日内容大纲介绍约束详解单表约束 多表约束DQL语句详解简单查询 条件查询 聚合查询 分组查询 排序查询 模糊查询 分页查询多表查询交叉连接 连接查询 子查询 自关联(自连接)查询扩展: 多表建表一对多 多对多 一对一1.主键约束详解 /* 约束详解:概述:SQL中的约束分为: 单表约束…...

.zip用法

.zip() 函数在 Python 中是一个非常实用的内置函数,它用于将多个可迭代对象(比如列表、元组等)中的元素打包成一个元组的迭代器。 简单来说,它的作用就是把不同序列中对应位置的元素配对,就像拉链一样把两排牙齿咬合在一起。 zip() 的基本用法 zip(iterable1, iterable2, …...

vue2使用pnpm编译打包时的错误处理

1. 错误信息 error in ./src/views/forest/forestGateway.vue?vue&type=script&lang=js Module parse failed: Unexpected token (203:39) File was processed with these loaders: * ./node_modules/.pnpm/**cache-loader**@4.1.0_webpack@4.47.0/node_modules/cach…...

中南上课第一天

一周三天早八,体验衡中生活:( 早上起来就发现食堂的人巨多,一看原来是崩铁和瑞幸联名了,看来学校崩p还是挺多的,我看到有卖油条和豆浆的,于是浅尝了一下——还是避雷吧,油条油的要死,吃了一根第二根实在是咽不下去了,于是扔了去教室,如图,不愧是知名的电动车帝国,这…...

二十四、深入理解CPU控制信号的最终使命

目录指挥官与士兵:深入理解CPU控制信号的最终使命一、舞台与演员:认识数据通路中的角色二、核心命题:为什么说控制信号“仅”作用在功能部件上?三、澄清误区:那流水线寄存器呢?四、更深层的意义:理解计算机架构的哲学结论指挥官与士兵:深入理解CPU控制信号的最终使命 在…...

20250915 - 状压dp 总结

比赛链接:https://vjudge.net/contest/748191。 A - 互不侵犯 最最最最最最最板子的状压 DP。 大概就是一行一行去弄。然后的话,DP 维护三个量,当前遍历到第 \(i\) 行,目前总共放了 \(j\) 个国王,以及这一行的放置国王情况为 \(st\)(用二进制状压表示)。判断的时候,有一…...

PS2025安装包永久免费版下载安装教程Photoshop 2025 v26.0安装包永久免费版下载

身边很多朋友问我怎么装 PS 2025,其实步骤不难,先跟大家说下这软件到底好用在哪,再一步步教安装,最后给几个常用的实操案例,新手跟着做就能上手,不管是想做摄影后期、商业设计,还是社交账号配图,看完这篇 Photoshop 2025 v26.0 下载安装教程都能搞定。目录一、先搞懂 P…...

学校真是太棒了

我的学校是全世界最好的学校,不接受反驳!学校太好了 作为学生评判学校自然要说点实际的。 就比如说住宿环境,那是我见过的最优秀的宿舍了。 你们学校会把宿舍改装成水帘洞吗 今天中午回到宿舍就发现学校为了让我们更加凉爽,同时赏心悦目,将宿舍改装成水帘洞,一进宿舍楼就…...

如果远程玩家过早结束异步任务,并且具有该集的任务仍在运行,则该任务被杀死-SetWaitingOnRemotePlayerData()

SetWaitingOnRemotePlayerData主要用于控制游戏模式是否等待远程玩家(通常是网络多人游戏中的客户端)的数据加载完成。调用时,可以直接杀死该使用数据的任务...

9.15日总结

完成hbase的部署,需要准备虚拟机并部署hadoop与java环境。途中虚拟机磁盘满了还要重新分配一下,但奈何磁盘满了进不去桌面,把之前的docker删了总算顺利进去了。...

二十二、流水线CPU的神经脉络:详解控制信号的产生、保存与传递

目录一、核心挑战:多指令的并行交响曲二、解决方案:提前生成与“随指令流动”1. 产生:在译码阶段(ID)一次性生成所有“说明书”2. 保存与传递:流水段寄存器——控制信号的“护航舰队”三、这种机制的优势与意义总结你是否曾好奇,现代CPU的流水线如同一条高效运转的装配线…...

python_Day20_mysql(1)

今日内容大纲介绍数据库的相关概述 环境搭建 SQL语句分类DDL DML DCL DQLDDL语句之操作数据库 DDL语句之操作数据表 DML语句之操作表数据(增删改) DQL语句之操作表数据(查)1.数据库的相关概述问1: 你知道的存储数据的方式有哪些? -- 方式1: 变量, 列表, 字典... 只能对数据临时…...

确定调用 TargetData是否已发送-CallReplicatedTargetDataDelegatesIfSet()

example:const bool bCalledDelegate = AbilitySystemComponent.Get()->CallReplicatedTargetDataDelegatesIfSet(SpecHandle, ActivationPredictionKey);if (!bCalledDelegate){ SetWaitingOnRemotePlayerData();}...

二十三、流水线的起点为何无需指挥?深入理解IF与ID这两个“公共流水段”

目录一、时钟:流水线的同步心跳二、公共流水段:为何IF和ID无需“特殊关照”1. 取指阶段(IF):无差别的读取2. 译码阶段(ID):标准化的解析三、控制信号的诞生:时机决定一切四、控制信号为谁而生?总结:标准化与个性化的分工在我们深入探索CPU流水线的精妙世界时,一个看…...

来解剖 来平息你的颤抖 叫嚷着还不足够 还需要更多疼痛 才值得温柔

test4 不要在意这个诡异的标题。排序sort 快排的过程相当于以 \(a_r\) 为界限,更小的放到左边,更大的放在右边,我们还关心新的 \(a_r\) 是谁,左边是按顺序的填入,右边新的顺序只跟原本的顺序有关系素排列双射下去啦,所以就是唯一特定位置的值成为新的。 那么考虑 dp 一下…...

从客户端拿到缓存数据-ConsumeClientReplicatedTargetData()

1...

减少KVCache

减少KVCache:从MHA,MQA,GQA到MLA 参考链接 科学空间,苏神的blog 大模型推理加速:看图学KVCache 前言 也是终于到了稍微有一点时间的时候,也需要对看过的东西进行简单的总结了。这里就总结一下论文中最喜欢的attention,以及与KVCache之间的关系。 基础:什么是attention?…...

考研复习-操作系统-第三章-内存管理 - 详解

考研复习-操作系统-第三章-内存管理 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !impo…...

python_Day18_linux(1)

今日内容大纲介绍计算机简介 Linux系统介绍 Linux环境搭建 Linux基础命令1.计算机简介概述 全称叫电子计算机, 英文名叫Computer, 俗称叫: 电脑, 简称叫: PC, 就是有硬件和软件组成的电子设备.组成计算机硬件CPU, 中央处理器, 由 运算器 + 控制器 组成 存储器内存: 内存条, DDR…...

机器人动力学-上交桂凯-睿慕课

1.1 绪论 1.2 数学基础已知系统的初始状态+速度->未来的变化状态均可知质量弹簧阻尼二阶系统也可以写成微分方程的形式,状态变量为位置,速度2 动力学系统建模2.1 理论力学回顾...

2 linux系统基础命令+文件操作命令

2.1 常见命令 2.1.1 查看当前登录用户信息的基础命令 last # 显示上次登录的用户列表信息 who # 显示当前所有登录到系统的用户信息 whoami # 查看当前登录的用户 who am i # 仅显示当前终端登录系统的用户名+终端+登录时间+来源主机,‘i’可以是任意字符,等同于who -m […...

支持国产cpu架构的nacos-2.4.3

nacos无法启动主要问题是依赖于RocksDBjni没有对应架构的动态链接库 RocksDB JNI 的多平台 native 动态库集合系统 (OS) 架构 (Arch) libc 类型 对应文件名Linux x86 (32位) glibc librocksdbjni-linux32.somusl librocksdbjni-linux32-musl.sox86_64 (64位) glibc librocksdbj…...

nc工具使用 - 谷粒

https://www.cnblogs.com/zhipeng-wang/p/14070431.html 测试端口 nc -nvz 127.0.0.1 8000 监听 nc -l 80 连接client nc 127.0.0.1 8000想要连接到某处: nc [-options] hostname port[s] [ports] …绑定端口等待连接: nc -l port [-options] [hostname] [port]-g<网关>…...

完整教程:【C++】22. 封装哈希表实现unordered_set和unordered_map

完整教程:【C++】22. 封装哈希表实现unordered_set和unordered_mappre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New…...

Azure App Service连接Azure SQL MI

前言最近,在研究云迁移,做了个测试如何使用App Service连接SQL MI。正文1.测试项目是Net Framework v4.8,核心代码如下图:1 StringBuilder message = new StringBuilder();2 try3 {4 string sqlstr = "Server=smi-test.c5c92fb776c2.database.windows.net;Databas…...

将目标数据复制到服务器-ServerSetReplicatedTargetData()

ServerSetReplicatedTargetData 通常是一个自定义的服务器端 RPC(远程过程调用)函数,用于将目标数据(如瞄准目标、交互目标等)从客户端发送到服务器,并让服务器更新相应的复制变量,以便在多台客户端之间同步该数据。...

不是说 PHP 不行了吗?为什么 Swoole 还在更新?

PHP不行了,或许只是大家的一个简单的调侃,但这个调侃也代表了PHP语言从巅峰到下滑一个变迁。然而,现如今还是有很多的程序员依靠它在吃饭,语言只是一门工具,赚钱才是王道大家好,我是码农先森。 在微信的水群里,经常有兄弟说:"PHP不行了,PHP是上古时代的语言,PHP…...

qoj1831 Bruteforce

SOLUTION FROM WUMIN4 题意 若长度为 \(n\) 的数组 \(a\) 排序后为 \(b\),定义 \(a\) 的权值为 \(\sum_{i=1}^n \lfloor\frac{b_i\cdot i^k}{w}\rfloor \bmod 998244353\)。 有 \(q\) 次操作,每次操作修改一个 \(a_i\),随后输出 \(a\) 的权值。 \(n,a_i\le 10^5,1\le k,w\le…...

C++数据结构和算法:链表

Q. 有序表和无序表(Hash表)区别?Key有无序的区别。 Q. map 和 set 区别:有无伴随数据的区别。 有序表:红黑树、AVL树、size-banlance-tree、跳表都是有序表哈希表:基础类型,值传递;非基础类,必须提供比较器,引用传递。【经典题目】反转链表。要求实现单链表、双链表结…...

CAI:开源网络安全AI框架,打造自主安全测试智能体

CAI是一个开源的网络安全AI框架,能够自主执行从侦察到权限提升的完整网络安全攻击链。它集成了多种专业AI智能体,支持红蓝对抗、漏洞评估、数字取证等安全任务,并提供了丰富的基准测试工具和评估体系。项目概述 CAI(Cybersecurity AI)是一个开源的网络安全AI框架,旨在构建…...

GAS中,负责封装技能所影响的目标数据(如 Actor、位置、碰撞结果等)-FGameplayAbilityTargetData

example://FGameplayAbilityTargetData_SingleTargetHit 继承自FGameplayAbilityTargetData FGameplayAbilityTargetData_SingleTargetHit 是用于表示单一目标命中信息的目标数据结构,常用于游戏技能系统(Gameplay Ability System, GAS)中传递目标信息。 它主要包含以下核心…...

详细介绍:Maven入门_简介、安装与配置

详细介绍:Maven入门_简介、安装与配置pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !importan…...

实用指南:立体校正原理

实用指南:立体校正原理pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: …...

train-labels.idx1-ubyte里是什么

train-labels.idx1-ubyte 是 MNIST 数据集中的一个文件。它不是一个普通的文本文件,而是一个经过特定格式编码的二进制文件。 简单来说,这个文件里只包含一个东西:MNIST 训练集图像的标签。 文件内容 这个文件的内容是一个字节序列,其中每个字节都代表一个手写数字的标签。…...

滑动窗口最大值-leetcode

题目描述 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入:nums = [1,3,-1,-3,5,3,6,7], k = 3 输出:[3,3,5,5,6,7] 解释…...

创建预测窗口-ScopedPredictionWindow();

ScopedPredictionWindow 是一个与网络预测(Network Prediction)相关的工具类,主要用于在多人游戏中管理预测窗口的生命周期,确保客户端预测和服务器验证的一致性。 网络预测上下文管理:在客户端预测期间,ScopedPredictionWindow 会创建一个临时的 "预测窗口",…...

95. 不同的二叉搜索树 II

题目链接:https://leetcode.cn/problems/unique-binary-search-trees-ii/description/?source=vscode解析: 其实是一道数据结构二叉搜索树入门题,放在这里提醒dfs不要陷入直接搜的困境,还可以分治/*** Definition for a binary tree node.* struct TreeNode {* int va…...

lc1028-从先序遍历还原二叉树

难度:困难题目描述字符串转二叉树 根节点深度为 0,其子节点深度为 1,依次类推 题目保证若只有一个子节点,必为左子树示例 输入:"1-2--3--4-5--6--7" 输出:[1,2,5,3,4,6,7] 解释:1/ \2 5/ \ / \ 3 4 6 7输入:"1-2--3---4-5--6---7" 输出…...

P12558 [UOI 2024] Heroes and Monsters 题解

Description 有 \(n\) 个英雄和 \(n\) 个怪物。英雄和怪物分别编号为 \(1\) 到 \(n\) 的整数。第 \(i\) 个英雄的战斗力为 \(a_i\),第 \(i\) 个怪物的战斗力为 \(b_i\)。保证所有 \(a_1, a_2, \ldots, a_n, b_1, b_2, \ldots, b_n\) 的值都是两两不同的。 将进行总共 \(n\) 场…...

AbilitySystemComponent和AbilityTask

AbilityTask 是 Gameplay Ability System(GAS)框架的核心组件之一,用于处理能力(Ability)执行过程中的异步操作。它允许开发者在能力激活后创建可中断、可暂停的任务,处理如动画播放、特效生成、输入响应等耗时或需要等待的操作。 example:比如下方的两个不同时态的接口…...

AT_arc171_c [ARC171C] Swap on Tree

有一个很强的性质是,当两个结束序列相等,当且仅当:割掉的边集相等。 对于每个点,割掉的边的相对顺序一样。设 \(f_{x, i, 0/1}\) 为 \(x\) 相连的边割掉了 \(i\) 条,父亲那条边有没有被割掉(要计算子树里的方案数)。 然后输出显然是 \(\sum_i f_{1, i, 0}\)。...

202509_QQ_冷门的Base家族

Base家族,Base45,Base58,Base62,Base64,Base85,Base92tags:Base家族,Base45,Base58,Base62,Base64,Base85,Base92 0x00. 题目 flag.txt 6L;y>cYh?)m->!yBH;/\>Yx9lA8liLp:cjYpb.2E;J8j_B7BjPig.[sV}ojTN!yB01.#bc5@0J}?eix70R+>T,g??Fh={+JJSFWeT]_9lA7&X3…...

SpawnActorDeferred()和SpawnActorOfClass()

SpawnActorDeferred和SpawnActorOfClass都是用于生成 Actor 的函数,但它们的使用场景和行为有显著区别:生成时机与初始化控制:SpawnActorOfClass:是一个 "一站式" 函数,调用后会立即完成 Actor 的生成、初始化并激活。所有构造函数、BeginPlay等生命周期函数会被…...

学习日报|线程池专题学习总结 - 详解

学习日报|线程池专题学习总结 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important…...

如何设计业务架构 - 智慧园区

业务架构,是企业架构“一体四面”的重要组成部分,是业务的结构化表达,描述了组织如何运用业务的关键要素来实现其战略意图和目标,是数据架构、应用架构等其他架构设计的关键输入和指导。因此,要想设计好“企业架构”,首先必须设计好“业务架构”。业务架构的设计原则前面…...

snmp协议

Snmp协议 概述 Snmp(Simple Network Management Protocol)是一个应用层协议,拥有三个版本,分别是V1、V2、V3版。 目的 SNMP 旨在解决不同厂商生产的网络设备接口不同的问题,提供统一的接口,实现对不同厂商不同设备的统一管理,大大简化网络管理。 组件网络管理系统(NMS) …...

刷题复习(四)二分搜索

代码框架 int binarySearch(int[] nums, int target) {int left = 0, right = ...;while(...) {int mid = left + (right - left) / 2;if (nums[mid] == target) {...} else if (nums[mid] < target) {left = ...} else if (nums[mid] > target) {right = ...}}return ..…...

aardio | 通过点击checkbox复选框本身判断是否勾选

import win.ui;/* 创建窗体 */ var winformsetting = win.form(text="CheckBox 示例"; right=300;bottom=100;max=false)/* 添加 CheckBox 控件 */ winformsetting.add(cbox_startauto={text="开机自启"; left=10; top=10; width=100; height=30;cls="…...

项目介绍

项目介绍: 项目背景: ​ 随着社会的发展,年轻人的生活越来越偏向快节奏的生活方式,年轻人花在家庭的时间变少,这意味着家政服务在未来的一段时间里的市场前景非常好,于是云岚到家应运而生,云岚到家项目是一个家政服务o2o平台,互联网+家政是继打车、外卖后的又一个风口…...