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

在Ubuntu 16.04上安装和配置GitLab的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

简介

GitLab CE(Community Edition)是一个开源应用程序,主要用于托管 Git 仓库,并提供额外的与开发相关的功能,如问题跟踪。它旨在使用您自己的基础设施进行托管,并提供灵活性,可将其部署为开发团队的内部仓库存储,公开作为与用户交互的方式,甚至作为贡献者托管其自己项目的方式。

GitLab 项目使在自己的硬件上设置 GitLab 实例相对简单,具有简单的安装机制。在本指南中,我们将介绍如何在 Ubuntu 16.04 服务器上安装和配置 GitLab。

先决条件

本教程假定您可以访问一个全新的 Ubuntu 16.04 服务器。发布的 GitLab 硬件要求建议使用具有以下配置的服务器:

  • 2 个核心
  • 4GB 的 RAM

尽管您可能可以通过将一些交换空间替换为 RAM 来满足要求,但不建议这样做。在本指南中,我们将假设您至少具有上述资源。

为了开始,您需要在服务器上配置一个具有 sudo 访问权限的非根用户。另外,设置一个基本的防火墙以提供额外的安全层也是一个好主意。您可以按照我们的 Ubuntu 16.04 初始服务器设置指南中的步骤进行设置。

当您满足上述先决条件后,继续开始安装过程。

安装依赖项

在安装 GitLab 本身之前,重要的是安装一些在安装过程中和持续运行中它所利用的软件。幸运的是,所有必需的软件都可以轻松地从 Ubuntu 的默认软件包存储库中安装。

由于这是我们在本次会话中第一次使用 apt,我们可以通过输入以下命令来刷新本地软件包索引,然后安装依赖项:

sudo apt-get update
sudo apt-get install ca-certificates curl openssh-server postfix

您可能已经安装了其中一些软件。对于 postfix 安装,选择在提示时选择 Internet Site。在下一个屏幕上,输入您的服务器域名或 IP 地址以配置系统发送邮件的方式。

安装 GitLab

现在依赖项已经就位,我们可以安装 GitLab 本身了。这是一个直接的过程,利用安装脚本来配置您的系统与 GitLab 仓库。

进入 /tmp 目录,然后下载安装脚本:

cd /tmp
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh

随时随地检查下载的脚本,以确保您对它将要执行的操作感到满意。您也可以在这里找到托管版本的脚本:

less /tmp/script.deb.sh

一旦您对脚本的安全性感到满意,运行安装程序:

sudo bash /tmp/script.deb.sh

该脚本将设置您的服务器以使用由 GitLab 维护的仓库。这使您可以使用用于其他系统软件包的包管理工具来管理 GitLab。完成后,您可以使用 apt 安装实际的 GitLab 应用程序:

sudo apt-get install gitlab-ce

这将在您的系统上安装必要的组件。

调整防火墙规则

在配置 GitLab 之前,您需要确保您的防火墙规则足够宽松,以允许 Web 流量。如果您按照先决条件中的链接中的指南进行操作,您将启用 ufw 防火墙。

通过输入以下命令查看当前活动防火墙的状态:

sudo ufw status
状态:activeTo                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)

如您所见,当前规则允许 SSH 流量通过,但对其他服务的访问受限。由于 GitLab 是一个 Web 应用程序,我们应该允许 HTTP 访问。如果您的 GitLab 服务器关联有域名,GitLab 还可以请求并启用来自 Let’s Encrypt 项目的免费 TLS/SSL 证书以保护您的安装。在这种情况下,我们还需要允许 HTTPS 访问。

由于 HTTP 和 HTTPS 的协议到端口的映射在 /etc/services 文件中可用,我们可以通过名称允许该流量进入。如果您之前未启用 OpenSSH 流量,现在应该允许该流量:

sudo ufw allow http
sudo ufw allow https
sudo ufw allow OpenSSH

如果再次运行 ufw status 命令,您应该至少看到已配置访问这两个服务:

sudo ufw status
状态:activeTo                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
80                         ALLOW       Anywhere                  
443                        ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
80 (v6)                    ALLOW       Anywhere (v6)             
443 (v6)                   ALLOW       Anywhere (v6)

上述输出表明一旦我们配置应用程序,GitLab Web 界面将是可访问的。

编辑 GitLab 配置文件

在使用该应用程序之前,您需要更新一个配置文件并运行重新配置命令。首先,打开 Gitlab 的配置文件:

sudo nano /etc/gitlab/gitlab.rb

在文件顶部附近是 external_url 配置行。将其更新为与您自己的域名或 IP 地址匹配。如果您有一个域名,请将 http 更改为 https,这样 GitLab 将自动将用户重定向到由我们将要请求的 Let’s Encrypt 证书保护的站点。

# 如果您的 GitLab 服务器没有域名,您将需要使用 IP 地址而不是域名,并保持协议为 `http`。
external_url 'https://yourdomain'

接下来,如果您的 GitLab 服务器有一个域名,请搜索文件以查找 letsencrypt['enable'] 设置。取消注释该行并将其设置为 true。这将告诉 GitLab 为您的 GitLab 域请求 Let’s Encrypt 证书并配置应用程序以使用它提供流量。

在下面,查找 letsencrypt['contact_emails'] 设置。此设置定义了 Let’s Encrypt 项目可以使用的电子邮件地址列表,以便在您的域名出现问题时与您联系。取消注释并填写这个设置也是个好主意,这样您就会知道是否有任何问题:

letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['sammy@yourdomain.com']

保存并关闭文件。现在,运行以下命令以重新配置 Gitlab:

sudo gitlab-ctl reconfigure

这将使用它可以找到的关于您的服务器的信息初始化 GitLab。这是一个完全自动化的过程,因此您不必回答任何提示。如果您启用了 Let’s Encrypt 集成,证书应该已经为您的域配置好了。

通过 Web 界面执行初始配置

现在 GitLab 正在运行并且允许访问,我们可以通过 Web 界面对应用程序进行一些初始配置。

首次登录

在 Web 浏览器中访问您的 GitLab 服务器的域名:

http://gitlab_domain_or_IP

如果您启用了 Let’s Encrypt 并在您的 external_url 中使用了 https,您应该会被重定向到一个安全的 HTTPS 连接。

在首次访问时,您应该会看到一个初始提示,要求为管理员帐户设置密码:

!GitLab 初始密码设置提示

在初始密码提示中,提供并确认管理员帐户的安全密码。完成后,单击 Change your password 按钮。

您将被重定向到常规的 GitLab 登录页面:

!GitLab 首次登录提示

在这里,您可以使用刚刚设置的密码登录。凭证为:

  • 用户名:root
  • 密码:[您设置的密码]

将这些值输入到现有用户字段中,然后单击 Sign in 按钮。您将登录到应用程序,并被带到一个提示您开始添加项目的着陆页面:

!GitLab 初始登录着陆页面

现在,您可以进行一些简单的更改,以使 GitLab 以您喜欢的方式设置。

调整您的个人资料设置

在新安装后,您应该做的第一件事之一是将您的个人资料整理好。GitLab 选择了一些合理的默认值,但一旦您开始使用该软件,这些通常是不合适的。

要进行必要的修改,请单击界面右上角的用户图标。在出现的下拉菜单中,选择 Settings

!GitLab 个人资料设置按钮

您将被带到您的设置的 Profile 部分:

!GitLab 个人资料设置页面

NameEmail 地址从 “Administrator” 和 “admin@example.com” 调整为更准确的内容。您选择的名称将显示给其他用户,而电子邮件将用于默认头像检测、通知、通过界面进行的 Git 操作等。

完成后,单击底部的 Update Profile settings 按钮:

!GitLab 更新个人资料设置按钮

确认电子邮件将发送到您提供的地址。按照电子邮件中的说明确认您的帐户,以便您可以开始在 GitLab 中使用它。

更改您的帐户名

接下来,单击左侧菜单栏中的 Account 项目:

!GitLab 帐户菜单项

在这里,您可以找到您的私人 API 令牌或配置双因素身份验证。但是,我们目前感兴趣的功能是 Change username 部分。

默认情况下,第一个管理员帐户被赋予名称 root。由于这是一个已知的帐户名,将其更改为不同的名称更安全。您仍将拥有管理员权限;唯一会改变的是名称:

!GitLab 更改用户名部分

单击 Update username 按钮进行更改:

!GitLab 更新用户名按钮

下次登录到 GitLab 时,请记住使用您的新用户名。

将 SSH 密钥添加到您的账户

在大多数情况下,您会希望使用 SSH 密钥与 Git 交互以访问您的 GitLab 项目。为此,您需要将您的 SSH 公钥添加到您的 GitLab 账户。

如果您已经在本地计算机上创建了 SSH 密钥对,您通常可以通过输入以下命令查看公钥:

cat ~/.ssh/id_rsa.pub

您应该会看到一大段文本,就像这样:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

复制这段文本,然后返回到 GitLab 网页界面的个人资料设置页面。

如果您得到的是以下消息,说明您的计算机上尚未配置 SSH 密钥对:

cat: /home/sammy/.ssh/id_rsa.pub: No such file or directory

如果是这种情况,您可以通过输入以下命令来创建 SSH 密钥对:

ssh-keygen

接受默认设置,并可选择提供密码以在本地保护密钥:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/sammy/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/sammy/.ssh/id_rsa.
Your public key has been saved in /home/sammy/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:I8v5/M5xOicZRZq/XRcSBNxTQV2BZszjlWaIHi5chc0 sammy@gitlab.docsthat.work
The key's randomart image is:
+---[RSA 2048]----+
|          ..%o==B|
|           *.E =.|
|        . ++= B  |
|         ooo.o . |
|      . S .o  . .|
|     . + .. .   o|
|      +   .o.o ..|
|       o .++o .  |
|        oo=+     |
+----[SHA256]-----+

完成后,您可以通过输入以下命令显示您的公钥,就像之前一样:

cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMuyMtMl6aWwqBCvQx7YXvZd7bCFVDsyln3yh5/8Pu23LW88VXfJgsBvhZZ9W0rPBGYyzE/TDzwwITvVQcKrwQrvQlYxTVbqZQDlmsC41HnwDfGFXg+QouZemQ2YgMeHfBzy+w26/gg480nC2PPNd0OG79+e7gFVrTL79JA/MyePBugvYqOAbl30h7M1a7EHP3IV5DQUQg4YUq49v4d3AvM0aia4EUowJs0P/j83nsZt8yiE2JEYR03kDgT/qziPK7LnVFqpFDSPC3MR3b8B354E9Af4C/JHgvglv2tsxOyvKupyZonbyr68CqSorO2rAwY/jWFEiArIaVuDiR9YM5 sammy@mydesktop

复制显示的文本块,然后返回到 GitLab 网页界面的个人资料设置。

点击左侧菜单中的SSH Keys项:

!GitLab SSH Keys 菜单项

在提供的空间中粘贴您从本地计算机复制的公钥。给它一个描述性的标题,然后点击Add key按钮:

!GitLab 添加 SSH 密钥

现在,您应该能够在本地计算机上管理您的 GitLab 项目和仓库,而无需提供您的 GitLab 账户凭据。

限制或禁用公共注册(可选)

您可能已经注意到,当您访问您的 GitLab 实例的登录页面时,任何人都可以注册帐户。如果您希望托管公共项目,这可能是您想要的。然而,许多时候,更严格的设置是可取的。

首先,点击页面顶部主菜单栏中的扳手图标,进入管理区域:

!GitLab 管理区域按钮

在接下来的页面上,您可以看到整个 GitLab 实例的概述。要调整设置,请点击左侧菜单底部的设置选项。

!GitLab 管理设置按钮

您将进入到 GitLab 实例的全局设置页面。在这里,您可以调整一些影响新用户是否可以注册以及他们的访问级别的设置。

禁用注册

如果您希望完全禁用注册(您仍然可以手动创建新用户的帐户),请滚动到注册限制部分。

取消选择启用注册复选框:

!GitLab 取消选择启用注册

滚动到页面底部,点击保存按钮:

!GitLab 保存设置按钮

注册部分现在应该从 GitLab 登录页面中移除了。

按域限制注册

如果您正在使用 GitLab 作为提供与域相关的电子邮件地址的组织的一部分,您可以通过域来限制注册,而不是完全禁用它们。

注册限制部分,首先选择注册时发送确认电子邮件框,只有在用户确认了他们的电子邮件后才允许登录。

接下来,将您的域或域添加到注册白名单域框中,每行一个。您可以使用星号“*”来指定通配符域:

!GitLab 按域限制注册

滚动到页面底部,点击保存按钮:

!GitLab 保存设置按钮

注册部分现在应该从 GitLab 登录页面中移除了。

限制项目创建

默认情况下,新用户可以创建多达 10 个项目。如果您希望允许外部新用户进行可见性和参与,但希望限制他们创建新项目的访问权限,您可以在帐户和限制设置部分进行设置。

在其中,您可以将默认项目限制更改为 0,以完全禁止新用户创建项目:

!GitLab 将项目设置为零

新用户仍然可以手动添加到项目中,并且可以访问其他用户创建的内部或公共项目。

滚动到页面底部,点击保存按钮:

!GitLab 保存设置按钮

新用户现在可以创建帐户,但无法创建项目。

创建定期任务以自动更新 Let’s Encrypt 证书

根据设计,Let’s Encrypt 证书仅有效期为 90 天。如果您之前为您的 GitLab 域启用了 Let’s Encrypt,您需要确保定期更新您的证书,以避免服务中断。GitLab 提供了gitlab-ctl renew-le-certs命令,在当前资产接近到期时请求新证书。

为了自动化这个过程,我们可以创建一个定期任务,定期运行这个命令。该命令只会在证书接近到期时进行更新,因此我们可以安全地定期运行它。

首先,在您的文本编辑器中创建并打开/etc/cron.daily/gitlab-le文件:

sudo nano /etc/cron.daily/gitlab-le

在其中,粘贴以下脚本:


#!/bin/bashset -e/usr/bin/gitlab-ctl renew-le-certs > /dev/null

完成后保存并关闭文件。

通过输入以下命令将文件标记为可执行:

sudo chmod +x /etc/cron.daily/gitlab-le

现在,GitLab 应该每天自动检查其 Let’s Encrypt 证书是否需要更新。如果需要,命令将自动更新证书。

结论

您现在应该在自己的服务器上拥有一个正常运行的 GitLab 实例。您可以开始导入或创建新项目,并为您的团队配置适当的访问级别。GitLab 定期添加功能并对其平台进行更新,因此请务必查看项目的主页,以了解任何改进或重要通知的最新信息。

相关文章:

在Ubuntu 16.04上安装和配置GitLab的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 GitLab CE(Community Edition)是一个开源应用程序,主要用于托管 Git 仓库,并提供额…...

STM32的SPI通信

1 SPI协议简介 SPI(Serial Peripheral Interface)协议是由摩托罗拉公司提出的通信协议,即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在ADC、LCD等设备与MCU间,使用于对通信速率要求较高的场合。 …...

机器学习引领教育革命:智能教育的新时代

📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀目录 📒1. 引言📙2. 机器学习在教育中的应用🌞个性化学习🌙评估与反馈的智能化⭐教学资源的优…...

6月29日,每日信息差

第一、位于四川省绵阳市的中广核质子治疗装备制造基地正式通过竣工验收,为全球装机数量和治疗患者数量最多的国际领先质子治疗系统全面国产化奠定了坚实基础。质子治疗作为目前全球最尖端的肿瘤放射治疗技术之一,与传统放疗技术相比,质子治疗…...

SpringCloud中复制模块然后粘贴,文件图标缺少蓝色方块

再maven中点击+号,把当前pom文件交给maven管理即可...

JS乌龟吃鸡游戏

代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>乌龟游戏</title><script type"text/javascript">function move(obj){//乌龟图片高度var wuGui_height 67;…...

第十节:学习ConfigurationProperties类来配置pojo实体类参数(自学Spring boot 3.x的第二天)

大家好&#xff0c;我是网创有方 。这节记录下如何使用ConfigurationProperties来实现自动注入配置值。。实现将配置文件里的application.properties的参数赋值给实体类并且打印出来。 第一步&#xff1a;新建一个实体类WechatConfig package cn.wcyf.wcai.config;import org…...

如何学习Node.js

Node.js是一个开源、跨平台的JavaScript运行环境&#xff0c;它允许你在服务器端使用JavaScript。以下是一些步骤和资源&#xff0c;可以帮助你开始学习Node.js&#xff1a; ### 1. 基础知识 首先&#xff0c;确保你熟悉JavaScript语言的基础。Node.js是基于JavaScript的&…...

云计算基础知识

前言&#xff1a; 随着ICT技术的高速发展&#xff0c;企业架构对计算、存储、网络资源的需求更高&#xff0c;急需一种新的架构来承载业务&#xff0c;以获得持续&#xff0c;高速&#xff0c;高效的发展&#xff0c;云计算应运而生。 云计算背景 信息大爆炸时代&#xff1a…...

基于单片机光纤测距系统的设计与实现

摘要 &#xff1a; 光纤由于其频带宽 、 损耗低及抗干扰能力强等优点已被广泛地应用在通信 、 电子及电力方面 &#xff0c; 是我们生产生活中必不可少的媒介。 在实际的光纤实验 、 安装 、 运营和维护工作中 &#xff0c; 一种精准 、 轻便和易操作的光纤测距系统显得尤为重…...

python项目实战——人生重开模拟器

文章目录 1.菜单栏的编写2.玩家确定颜值、体质、智力、家境3.生成性别4.设定角色出生点5.各个年龄段的变化5.1 幼年阶段5.2 青年阶段5.3中年阶段5.4 晚年阶段 6.整体代码 人生重开模拟器是一款文字类小游戏. 玩家可根据提示输入角色的初始属性之后, 就可以开启不同的人生经历. …...

小时候的子弹击中了现在的我-hive进阶:案例解析(第18天)

系列文章目录 一、Hive表操作 二、数据导入和导出 三、分区表 四、官方文档&#xff08;了解&#xff09; 五、分桶表&#xff08;熟悉&#xff09; 六、复杂类型&#xff08;熟悉&#xff09; 七、Hive乱码解决&#xff08;操作。可以不做&#xff0c;不影响&#xff09; 八、…...

电影票房预测管理系统设计

电影票房预测管理系统的开发涉及多个层面的设计&#xff0c;包括但不限于数据收集、数据分析、预测模型构建、用户界面设计和系统集成。以下是一个基本的系统设计框架&#xff1a; 1. 数据收集模块&#xff1a;这是整个系统的基础。需要收集的数据可能包括历史票房数据、上映电…...

正则表达式与Pyhton

一、正则表达式的规则 1、支持普通字符匹配 2、元字符&#xff0c;一个符号匹配一堆字符 \d 匹配数字 \w 匹配数字、字母、下划线 \D \d的取反&#xff0c;除了数字全部匹配 \W \w的取反 [abc] 匹配字母a、b、c [^abc] [abc]的取反&#xf…...

Transformer常见面试题

目录 1.Transformer为何使用多头注意力机制&#xff1f;&#xff08;为什么不使用一个头&#xff09; 2.Transformer为什么Q和K使用不同的权重矩阵生成&#xff0c;为何不能使用同一个值进行自身的点乘&#xff1f; &#xff08;注意和第一个问题的区别&#xff09; 3.Transf…...

Linux——vim的配置文件+异常处理

vim的配置文件&#xff1a; [rootserver ~]# vim /etc/vimrc # 输入以下内容 set nu # 永久设置行号 shell [rootserver ~]# vim /etc/vimrc 或者 vim ~/.vimrc set hlsearch "高亮度反白 set backspace2 "可随时用退格键删除 set autoindent…...

node mySql 实现数据的导入导出,以及导入批量插入的sql语句

node 实现导出, 在导出excel中包含图片&#xff08;附件&#xff09; node 实现导出, 在导出excel中包含图片&#xff08;附件&#xff09;-CSDN博客https://blog.csdn.net/snows_l/article/details/139999392?spm1001.2014.3001.5502 一、效果 如图&#xff1a; 二、导入 …...

Webpack: 底层配置逻辑

概述 Webpack 5 提供了非常强大、灵活的模块打包功能&#xff0c;配合其成熟生态下数量庞大的插件、Loader 资源&#xff0c;已经能够满足大多数前端项目的工程化需求&#xff0c;但代价则是日益复杂、晦涩的使用方法&#xff0c;开发者通常需要根据项目环境、资源类型、编译目…...

数字图像处理期末复习题1

个人名片&#xff1a; &#x1f393;作者简介&#xff1a;嵌入式领域优质创作者&#x1f310;个人主页&#xff1a;妄北y &#x1f4de;个人QQ&#xff1a;2061314755 &#x1f48c;个人邮箱&#xff1a;[mailto:2061314755qq.com] &#x1f4f1;个人微信&#xff1a;Vir2025WB…...

poi-tl 生成 word 文件(插入文字、图片、表格、图表)

文章说明 本篇文章主要通过代码案例的方式&#xff0c;展示 poi-tl 生成 docx 文件的一些常用操作&#xff0c;主要涵盖以下内容 &#xff1a; 插入文本字符&#xff08;含样式、超链接&#xff09;插入图片插入表格引入标签&#xff08;通过可选文字的方式&#xff0c;这种方…...

centos上部署Ollama平台,实现语言大模型本地部署

网上有很多大模型&#xff0c;很多都是远程在线调用ChatGPT的api来实现的&#xff0c;自己本地是没有大模型的&#xff0c;这里和大家分享一个大模型平台&#xff0c;可以实现本地快速部署大模型。 Ollama是一个开源项目&#xff0c;它提供了一个平台和工具集&#xff0c;用于部…...

Java学习 - Redis Redigo简单介绍

Redigo 驱动下载 go get github.com/garyburd/redigo/redis获取redis服务器连接 c, err : redis.Dial("tcp", "127.0.0.1:6379")if err ! nil {panic(err) }defer c.Close()命令使用 v, err : c.Do("SET","hello","world&quo…...

【鸿蒙学习笔记】ArkTS组件 Blank

官方文档&#xff1a;Blank 目录标题...

如何使用Spring Boot进行单元测试

如何使用Spring Boot进行单元测试 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨如何在Spring Boot项目中进行单元测试&#xff0c;确保代码质量…...

2024steam夏促商店打不开、steam活动加载不了解决方法一览

今年的夏促终于开始了!目前可以看到很多精品小游戏在促销列表内&#xff0c;活动正式开启后还不知道又会是怎样的一幅场景。因为每年夏促都会有不少刚高考完的新手加入&#xff0c;遇到常见的steam商店打不开、活动页面不加载等问题不知道怎么解决。所以这里给大家准备了几种常…...

IPC进程通信:QNX

引言 在现代操作系统中&#xff0c;进程间通信&#xff08;IPC&#xff09;机制是实现进程间数据交换和同步的关键技术。IPC允许多个进程共享信息和资源&#xff0c;从而协同工作完成复杂任务。在QNX Neutrino系统中&#xff0c;IPC尤为重要&#xff0c;因为QNX主要面向实时系…...

OpenCV学习之cv2.imshow()函数

OpenCV学习之cv2.imshow()函数 一、简介 cv2.imshow 是 OpenCV 库中用于显示图像的基本函数之一。在图像处理和计算机视觉的过程中&#xff0c;使用该函数可以快速预览处理后的图像&#xff0c;便于调试和结果展示。 二、基本语法 cv2.imshow(WindowName, Imgmat)三、参数说…...

Oracle、MySQL、PostGreSQL、SQL Server-空值

Oracle、MySQL、PostGreSQL、SQL Server-null value 最近几年数据库市场百花齐放&#xff0c;在做跨数据库迁移的数据库选型时&#xff0c;除了性能、稳定、安全、运维、功能、可扩展外&#xff0c;像开发中对于值的处理往往容易被人忽视&#xff0c; 之前写过一篇关于PG区别O…...

python pip详解1

一、简介 pip是python的一个软件包管理工具&#xff0c;同yum&#xff0c;apt作用一致&#xff0c;pip有两种使用方式&#xff1a;pip模块和pip命令&#xff0c;示例如下&#xff1a; python -m pip install package pip install package二、命令行详解 python -m pip --hel…...

Linux常用命令大全(超详细!!!)

文章目录 1.Linux是什么1.1 关于Linux我们主要学习什么1.1 学习Linux常见命令的前置知识 2. Linux常见命令2.1 ls命令2.2 cd命令2.3 pwd命令2.4 touch命令2.5 cat命令2.6 echo命令2.7 vim命令2.8 mkdir 命令2.9 rm命令2.10 cp命令2.11 mv命令2.12 grep命令2.13 ps命令2.14 nets…...

TDD测试驱动开发

为什么需要TDD&#xff1f; 传统开发方式&#xff0c;带来大量的低质量代码&#xff0c;而代码质量带来的问题&#xff1a; 1.在缺陷的泥潭中挣扎 开发长时间投入在缺陷的修复中&#xff0c;修复完依赖测试做长时间的回归测试 2.维护困难&#xff0c;开发缓慢 比如重复代码&am…...

huggingface镜像站

huggingface下载太慢&#xff0c;大模型文件太大。用huggingface_hub镜像。 pip install -U huggingface_hub pip install huggingface-cli export HF_ENDPOINThttps://hf-mirror.com huggingface-cli download --resume-download shenzhi-wang/Llama3-8B-Chinese-Chat --loc…...

Java中如何实现数据库连接池优化?

Java中如何实现数据库连接池优化&#xff1f; 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨在Java应用程序中如何实现数据库连接池优化&am…...

002 SpringMVC入门项目搭建

文章目录 HelloController.javaspringmvc.xmlweb.xmlpom.xmlhello.jsp http://localhost:8080/showView http://localhost:8080/showData HelloController.java package com.springmvc.controller;import org.springframework.stereotype.Controller; import org.springframewo…...

为什么要使用多线程(并发编程)

目录 1.上下文的切换 1.1 什么是上下文切换 2. 并发编程的死锁问题 2.1 死锁产生的原因 2.2 避免死锁的方法 3.资源限制的挑战3.1 什么是资源限制 并发编程的目的是为了让程序更快&#xff0c;大家都知道并不是开启的线程越多越快&#xff0c;因为开启的线程越多随即面临…...

Unity编辑器工具---版本控制与自动化打包工具

Unity - 特殊文件夹【作用与是否会被打包到build中】 Unity编辑器工具—版本控制与自动化打包工具&#xff1a; 面板显示&#xff1a;工具包含一个面板&#xff0c;用于展示软件的不同版本信息。版本信息&#xff1a;面板上显示主版本号、当前版本号和子版本号。版本控制功能…...

amis-editor 注册自定义组件

建议先将amis文档从头到尾&#xff0c;仔细看一遍。 参考&#xff1a;amis - 低代码前端框架 amis 的渲染过程是将 json 转成对应的 React 组件。先通过 json 的 type 找到对应的 Component&#xff0c;然后把其他属性作为 props 传递过去完成渲染。 import * as React from …...

(上位机APP开发)调用华为云命令API接口给设备下发命令

一、功能说明 通过调用华为云IOT提供的命令下发API接口,实现下面界面上相同的功能。调用API接口给设备下发命令。 二、JavaScript代码 function sendUnlockCommand() {var requestUrl = "https://9bcf4cfd30.st1.iotda-app.cn-north-4.myhuaweicloud.com:443/v5/iot/60…...

排序算法系列一:选择排序、插入排序 与 希尔排序

目录 零、说在前面 一、理论部分 1.1&#xff1a;选择排序 1.1.1&#xff1a;算法解读&#xff1a; 1.1.2&#xff1a;时间复杂度 1.1.3&#xff1a;优缺点&#xff1a; 1.1.4&#xff1a;代码&#xff1a; 1.2&#xff1a;插入排序 1.2.1&#xff1a;算法解读&#x…...

【快速排序】| 详解快速排序 力扣912

&#x1f397;️ 主页&#xff1a;小夜时雨 &#x1f397;️专栏&#xff1a;快速排序 &#x1f397;️如何活着&#xff0c;是我找寻的方向 目录 1. 题目解析2. 代码 1. 题目解析 题目链接: https://leetcode.cn/problems/sort-an-array/ 我们上道题讲过快速排序的核心代码&a…...

游戏推荐: 植物大战僵尸杂交版

下载地址网上一搜就有. 安装就能玩. 2是显血. 4显示植物血, 5是加速. 都是左手主键盘的按钮, 再按是取消. 比较刺激: ps: 设置里面还能打开自动收集阳光和金币....

微调和rag的区别?

微调和RAG&#xff08;Retrieval-Augmented Generation&#xff09;在多个维度上存在显著的区别。以下是它们之间的主要差异&#xff1a; 1. **知识维度**&#xff1a; - RAG对知识的更新时间和经济成本更低。它不需要训练&#xff0c;只需要更新数据库即可。 - RAG对知识的掌控…...

CVPR讲座总结(二)-探索图像生成基础模型的最新进展探索多模态代理的最新进展:从视频理解到可操作代理

引言 在CVPR24上的教程中&#xff0c;微软高级研究员Linjie Li为我们带来了多模态代理的深入探索。这些代理通过整合多模态专家和大语言模型&#xff08;LLM&#xff09;来增强感知、理解和生成能力。本文总结了Linjie Li的讲座内容&#xff0c;重点介绍了多模态记忆、可操作代…...

为什么要禁用透明大页面

在安装CDH&#xff08;Clouderas Distribution Including Apache Hadoop&#xff09;环境时&#xff0c;禁用透明大页面&#xff08;Transparent HugePages&#xff0c;THP&#xff09;是一个推荐的系统优化步骤。以下是禁用透明大页面的一些原因&#xff1a; 1. **性能影响**…...

Element 页面滚动表头置顶

在开发后台管理系统时&#xff0c;表格是最常用的一个组件&#xff0c;为了看数据方便&#xff0c;时常需要固定表头。 如果页面基本只有一个表格区域&#xff0c;我们可以根据屏幕的高度动态的计算出一个值&#xff0c;给表格设定一个固定高度&#xff0c;这样表头就可以固定…...

对于CDA一级考试该咋准备??!

一、了解考试内容和结构 CDA一级考试主要涉及的内容包括&#xff1a;数据分析概述与职业操守、数据结构、数据库基础与数据模型、数据可视化分析与报表制作、Power BI应用、业务数据分析与报告编写等。 CDA Level Ⅰ 认证考试大纲:https://edu.cda.cn/group/4/thread/174335 …...

如何使用PHP和Selenium快速构建自己的网络爬虫系统

近年来&#xff0c;随着互联网的普及&#xff0c;网络爬虫逐渐成为了信息采集的主要手段之一&#xff0c;然而&#xff0c;常规的爬虫技术不稳定、难以维护&#xff0c;市面上的纯web网页爬虫也只能在静态页面上进行操作。而php结合selenium可达到动态爬虫的效果&#xff0c;具…...

intellij idea安装R包ggplot2报错问题求解

1、intellij idea安装R包ggplot2问题 在我上次解决图形显示问题后&#xff0c;发现安装ggplot2包时出现了问题&#xff0c;这在之前高版本中并没有出现问题&#xff0c; install.packages(ggplot2) ERROR: lazy loading failed for package lifecycle * removing C:/Users/V…...

【C++】初识C++(一)

一.什么是C C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&#xff0c;规模较大的程序&#xff0c;需要高度 的抽象和建模时&#xff0c;C语言则不合适。为了解决软件危机&#xff0c; 20世纪80年代&#xff0c; 计算机界提出了OOP(object o…...

【智能算法】目标检测算法

目录 一、目标检测算法分类 二、 常见目标检测算法及matlab代码实现 2.1 R-CNN 2.1.1 定义 2.1.2 matlab代码实现 2.2 Fast R-CNN 2.2.1 定义 2.2.2 matlab代码实现 2.3 Faster R-CNN 2.3.1 定义 2.3.2 matlab代码实现 2.4 YOLO 2.4.1 定义 2.4.2 matlab代码实现…...

PHP基础教程——总结W3school

1、<?php ?> 2、$ 声明变量 3、变量大小写敏感 关键字&#xff08;if、else、echo&#xff09;和用户定义的类、函数大小写不敏感 4、三种注释 // # /* */ 5、echo "<br>"; 换行 6、global(关键字) 函数内访问全局变量 $GLOBALS[index] …...

VBA提取word表格内容到excel

这是一段提取word表格中部分内容的vb代码。 Sub 提取word表格() mypath ThisWorkbook.Path & "\"myname Dir(mypath & "*.doc*")n 4 index of rowsRange("A1:F1") Array("课程代码", "课程名称", "专业&…...

Apache Flink架构介绍

目录 一、Apache Flink架构组件栈 1.1 概述 1.2 架构图 1.3 架构分层组件说明 1.3.1 物理部署层 1.3.2 Runtime 核心层 1.3.3 API & Libraries层 二、Flink运行时架构 2.1 概述 2.2 架构图 2.3 架构角色和组件 2.3.1 Flink Clients客户端 2.3.2 JobManager 2.…...

搜维尔科技:使用Manus VR手套和ART光学追踪功能实现虚拟场景工业仿真操作

&#xff1a;使用Manus VR手套和ART光学追踪功能实现虚拟场景工业仿真操作 搜维尔科技&#xff1a;使用Manus VR手套和ART光学追踪功能实现虚拟场景工业仿真操作...

windows USB设备驱动开发-开发USB 设备端驱动

USB 设备是通过单个端口连接到计算机的外设&#xff0c;例如鼠标设备和键盘。 USB 客户端驱动程序是计算机上安装的软件&#xff0c;该软件与硬件通信以使设备正常运行。 如果设备属于 Microsoft 支持的设备类&#xff0c;Windows 会为该设备加载 Microsoft 提供的 USB 驱动程序…...

步进电机改伺服电机

步进电机&#xff1a; 42&#xff1a;轴径5mm 57&#xff1a;轴径8mm 86&#xff1a;轴径14mm 【86CME120闭环】// 12牛米 伺服电机&#xff1a; 40&#xff1a; 60&#xff1a; 80&#xff1a; 86&#xff1a; ECMA——C 1 0910 R S 4.25A 轴径…...

方程豹发力了,豹3的官方谍照曝光,竞争对手锁定哈弗猛龙

方程豹官方,近日发布了豹3的谍照,定位为中型SUV,预计豹3将于2024年底前上市。根据发布的谍照,可以看到共有三款车型,代表了不同的版本。前大灯和中网与之前的概念车相似,中网很可能采用封闭式设计,并带有粗犷的装饰条。车身侧面采用了平直的线条,整体造型紧凑而干练。细…...

魏牌咖啡系列车型OTA升级智能体验再跃升领跑高阶新势力

5月28日,魏牌新能源咖啡系列车型迎来OTA重磅升级。其中,魏牌蓝山迎来极具颠覆性的第6次OTA升级,备受用户关注的语音大模型、卡片式桌面、露营模式等功能全部上车;魏牌高山迎来第2次OTA升级,语音大模型、卡片式桌面、插枪远控等功能全部就位;摩卡、拿铁、玛奇朵则开启第8次…...

未来三年雷军和他的小米汽车首先不得不为生存而战

小米SU7正式上市,可谓红透了汽车界。雷军及小米汽车多个话题登上热搜,而大定的数据也映衬出小米SU7的热度。然而,在一片喧嚣声中,我倒觉得,未来三年雷军和他的小米汽车首先不得不为生存而战。未来三年小米汽车大概率将是亏损运营。从这次小米SU7的定价就可以看出端倪。小米…...

浅谈网络安全态势感知

前言 网络空间环境日趋复杂&#xff0c;随着网络攻击种类和频次的增加&#xff0c;自建强有力的网络安全防御系统成为一个国家发展战略的一部分&#xff0c;而网络态势感知是实现网络安全主动防御的重要基础和前提。 什么是网络安全态势感知&#xff1f; 态势感知一词来源于对…...

什么是React?

01 Why React? What is React? I think the one-line description of React on its home page (https://react.dev/) is concise and accurate: “A JavaScript library for building user interfaces.” 我认为React主页(https://react.dev/)上的一行描述既简洁又准确: …...

自定义注解+AOP切面实现日志记录

自定义注解&#xff1a; Target(ElementType.METHOD)// 作用在方法上 Retention(RetentionPolicy.RUNTIME) Documented Inherited // 子类可以继承此注解 public interface OperationLog { } aop切面&#xff1a; Slf4j Aspect Component public class OperationAspect {Au…...