Ubuntu20.04 搭建repo + gitlab的代码管理系统

2023-11-17

Ubuntu20.04 搭建repo + gitlab的代码管理系统

1、为什么要用gitlab?

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab是目前被广泛使用的基于git的开源代码管理平台, 基于Ruby on Rails构建, 主要针对软件开发过程中产生的代码和文档进行管理, Gitlab主要针对group和project两个维度进行代码和文档管理, 其中group是群组, project是工程项目, 一个group可以管理多个project, 可以理解为一个群组中有多项软件开发任务, 而一个project中可能包含多个branch, 意为每个项目中有多个分支, 分支间相互独立, 不同分支可以进行归并。

2、为什么要用repo?

repo命令行工具,是一个python脚本,对git部分命令进行封装,简化了对多个git版本库的管理,通过配置manifests配置文件,可以将很多个git仓库有效的进行组织管理。最开始是用在Android源码的管理上,目前被广泛使用。

3、ubuntu 20.04 安装gitlab应用

1、安装相关依赖

sudo apt install ca-certificates curl openssh-server postfix

postfix是一种电子邮件服务器,安装时弹出选择框,选择默认即可。

2、下载gitlab安装包,并安装。

1、执行完命令,当前目录得到 gitlab-ce14.2.0-ce.0_amd64.deb 安装包。

wget -c https://mirrors.tuna.tsinghua.edu.cn/gitlad-ce/ubuntu/pool/focal/main/g/gitlab-ce/gitlab-ce14.2.0-ce.0_amd64.deb	

2、输入命令安装

sudo dpkg -I gitlab-ce_14.2.0-ce.0_amd64.deb 

如下图所示即安装成功
在这里插入图片描述

3、配置gitlab

1、修改gitlab.文件

sudo vi /etc/gitlab/gitlab.rb 

找到external_url关键字,修改web登陆的ip以及端口。
ubuntu 本机地址为192.168.47.97,所以我这里改为
external_url ‘http://192.168.47.97:3001’ ,保存退出。
2、输入命令重新配置gitlab,重启gitlab

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

等待一段时间后,打开浏览器,输入http://http://192.168.47.97:3001/ 即可显示以下画面。
如不能显示,输入下面命令。

sudo ufw allow 3001    #允许外部IP访问本地定义的端口。

3、出现登陆页面后,我们要修改下root用户的密码。
输入以下命令:

1、sudo gitlab-rails console
2、u=User.where(id:1).first
3、u.password=12345678                 					# 密码设置为12345678
4、u.password_confirmation=12345678    					# 确认密码
5、u.save! 												# 保存

4、此时应该可以用 root 跟 12345678 进行登陆了。
在这里插入图片描述

4、gitlab后台服务器相关操作

1、新建分组

点击左上menu->your group -> New Group
我们新建一个Max的分组,
然后点击 New subGroup 新建一个 dev的分组
建好分组 如下图所示
在这里插入图片描述

2、新建工程

1、点击进入dev分组页面,然后点击New Project按钮。选择create blank project。
输入project demo勾选 Initialize repository with a README ,点击create project 即可创建工程。
如图所示。
在这里插入图片描述
在这里插入图片描述

3、本地下载代码 并提交代码

1、从远端下载代码到本地。
ubuntu下输入命令:

git clone ssh://git@192.168.47.97/max/dev/demo.git   

max/dev即我们上面建的分组,demo.git即我们上面新建的工程,但此时需要密码验证。
在这里插入图片描述

2、对于ssh连接, 我们可以生成ssh key,并提交到gitlab的服务器,这样我们就不需要每次输入密码。
ubuntu下执行以下命令:

git config --global  user.name "Max"					    # Max 为你的名字
git config --global user.email "738270732@qq.com"			# 738270732@qq.com 为你的邮箱
ssh-keygen -t rsa -C "738270732@qq.com"                     # 生成ssh key

生成的key存放在 ~/.ssh文件下
storage@storage-PowerEdge-R740xd:~/demo$ ls -l ~/.ssh
total 8
-rw------- 1 storage storage 2602 7月 26 10:11 id_rsa
-rw-r–r-- 1 storage storage 570 7月 26 10:11 id_rsa.pub
复制id_rsa.pub中的内容
storage@storage-PowerEdge-R740xd:~/demo$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC8qo6pJyhyQEnzlpBlOwdNUD+y/Xh8CpNkF433OKBsNNdiS6/igZWsyogzUInB1Tig3dcPSjq2XDayDPveUzXGWmsbnB0F+Jqwtzi9DIR4OVA26hDWx1JC2U0CwZdpQuuhhB8RfAchGA+vqDfY+A8upLJ5k2BNAZOQFUzYjP/mQPjpPMta5uUGYdHjzSlKgHGgkV1R19rwuW6QpVRwyvY794Nt9g51CLGZbGj5SfcCx4NM7NIeQst1ByLEXO3xxKnLSmojvtIujz7jJJq1diCfoWdvQHDND5nbcV1jqyHzL3y74ekYG+DKCsxJLPKdt9Mo1iWkq8g7RxnJ1wNBKH7t4rNxFXIav2A+tjY8UdOP8Acc1Akzuy1QVE4cQgLrJ10Y4flUL2zO7IpWisk6p1G6xA/lhw6whQlTKflDYzeI/6KkZozrlSuYimE2EY7i2FRv+hnNajo2ANiSVGw4RFJpejhkl4QXu+JbvKGbypXY5yV3/7AMQWniC/R1AfG6ylc= 738270732@qq.com

gitlab 登陆后,点击右上角的图像->Preferences->SSH Keys 将复制内容添加到文本框,点击add key即可。
如图即添加成功
在这里插入图片描述

3、此时我们重新clone代码试下
storage@storage-PowerEdge-R740xd:~/demo$ git clone ssh://git@192.168.47.97/max/dev/demo.git
Cloning into ‘demo’…
The authenticity of host ‘192.168.47.97 (192.168.47.97)’ can’t be established.
ED25519 key fingerprint is SHA256:T1nA+6BrjyMOfAPJpTCuLF7xNpY/vcqWSpLcqdauUpw.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added ‘192.168.47.97’ (ED25519) to the list of known hosts.
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
storage@storage-PowerEdge-R740xd:~/demo$
storage@storage-PowerEdge-R740xd:~/demo$ ls
demo
storage@storage-PowerEdge-R740xd:~/demo$
是不是没输入密码也能下载了?

4、提交代码
storage@storage-PowerEdge-R740xd:~/demo/demo$ touch hello.txt
storage@storage-PowerEdge-R740xd:~/demo/demo$
storage@storage-PowerEdge-R740xd:~/demo/demo$
storage@storage-PowerEdge-R740xd:~/demo/demo$ git add hello.txt
storage@storage-PowerEdge-R740xd:~/demo/demo$ git commit -m “add hello text”
[main 329e2d0] add hello text
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 hello.txt
storage@storage-PowerEdge-R740xd:~/demo/demo$ git push origin HEAD:refs/heads/main
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 40 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 270 bytes | 270.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To ssh://192.168.47.97/max/dev/demo.git
f191303…329e2d0 HEAD -> main
storage@storage-PowerEdge-R740xd:~/demo/demo$
看看后台是不是已经提交上了
在这里插入图片描述

5、repo管理代码仓

1、客户端 安装repo 命令

git clone https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/

storage@storage-PowerEdge-R740xd:~/demo$ git clone https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/
Cloning into ‘git-repo’…
remote: Enumerating objects: 7438, done.
remote: Counting objects: 100% (7438/7438), done.
remote: Compressing objects: 100% (3978/3978), done.
remote: Total 7438 (delta 4804), reused 5617 (delta 3386)
Receiving objects: 100% (7438/7438), 3.30 MiB | 1.14 MiB/s, done.
Resolving deltas: 100% (4804/4804), done.
storage@storage-PowerEdge-R740xd:~/demo$ ls
demo git-repo
storage@storage-PowerEdge-R740xd:~/demo$ 在这里插入图片描述
红圈里的这个文件就是我们需要的。
在用户根目录下,新建一个bin文件夹,将这个repo文件拷贝进去。

storage@storage-PowerEdge-R740xd:~$ cd
storage@storage-PowerEdge-R740xd:~$ mkdir bin
storage@storage-PowerEdge-R740xd:~$ cp demo/git-repo/repo ./bin/
storage@storage-PowerEdge-R740xd:~$ ls -l bin/
total 48
-rwxrwxr-x 1 storage storage 45277  7月 26 11:41 repo

2、gitlab服务器端配置

1、登陆http://http://192.168.47.97:3001/后,选择dev用户组,新建一个manifest工程。
再新建一个文件,名字命名为default.xml,如图所示。
在这里插入图片描述
default.xml内容如下

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
 <remote  name="Max" fetch="ssh://git@192.168.47.97"/>

<default remote="Max" revision="main" sync-j="4" />

<project name="Max/dev/kernel" path="kernel" remote="Max"/>
<project name="Max/dev/framework" path="framework" remote="Max"/>
<project name="Max/dev/device" path="device" remote="Max"/>

解析如下:
remote :远端服务器的名字,name=“Max” 可随便起名,后面提交代码会用到。fetch 为服务区地址
default : 默认服务器配置,remote有多个的时候,这里来指定用哪一个。revision 为分支名字,这里新建的工程在gitlab后台看到的仅有一个分支为main,那这里就写main。
project :name 为Max/dev分组下的工程名称,path为repo下载代码的路径名称。
我们在这里定义了三个project,所以我们要在Max/dev分组下新建三个工程。名字为kernel framework device。
建好如图所示

在这里插入图片描述

3、下载代码

1、使用如下命令init仓库,前提要配置好python环境。

repo init -u ssh://git@192.168.47.97/Max/dev/manifest.git --repo-url=https://gerrit-googlesource.proxy.ustclug.org/git-repo

storage@storage-PowerEdge-R740xd:~/demo$repo init -u ssh://git@192.168.47.97/Max/dev/manifest.git --repo-url=https://gerrit-googlesource.proxy.ustclug.org/git-repo
Downloading Repo source from https://gerrit-googlesource.proxy.ustclug.org/git-repo
remote: Finding sources: 100% (13/13)
remote: Total 13 (delta 1), reused 10 (delta 1)
repo: Updating release signing keys to keyset ver 2.3

Your identity is: Max 738270732@qq.com
If you want to change this, please re-run ‘repo init’ with --config-name

Testing colorized output (for ‘repo diff’, ‘repo status’):
black red green yellow blue magenta cyan white
bold dim ul reverse
Enable color display in this user account (y/N)? y

repo has been initialized in /home/storage/demo/
If this is not the directory in which you want to initialize repo, please run:
rm -r /home/storage/demo//.repo
and try again.
storage@storage-PowerEdge-R740xd:~/demo$
storage@storage-PowerEdge-R740xd:~/demo$
storage@storage-PowerEdge-R740xd:~/demo$
storage@storage-PowerEdge-R740xd:~/demo$ cat .repo/manifest
manifests/ manifests.git/ manifest.xml
2、使用repo sync 同步代码

repo sync -j4

storage@storage-PowerEdge-R740xd:~/demo$ repo sync
Fetching: 100% (3/3), done in 1.608s
Garbage collecting: 100% (3/3), done in 0.013s
repo sync has finished successfully.
storage@storage-PowerEdge-R740xd:~/demo$ ls
device framework kernel
storage@storage-PowerEdge-R740xd:~/demo$
此时,demo目录下是不是已经有了我们在gitlab后台建立的三个工程了呢。

4、提交代码

1、提交代码到服务器端
storage@storage-PowerEdge-R740xd:~/demo/kernel$ touch change.log
storage@storage-PowerEdge-R740xd:~/demo/kernel$ git add change.log
storage@storage-PowerEdge-R740xd:~/demo/kernel$ git commit -m “add chanle.log”
[detached HEAD 6788658] add chanle.log
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 change.log
storage@storage-PowerEdge-R740xd:~/demo/kernel$ git push Max HEAD:main
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 40 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 273 bytes | 273.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To ssh://192.168.47.97/Max/dev/kernel
3186640…6788658 HEAD -> main
storage@storage-PowerEdge-R740xd:~/demo/kernel$
我们新建了一个change.log文件,使用如下命令推到服务器端。

touch change.log
git add change.log 
git commit -m "add chanle.log"
git push Max HEAD:main。    		#Max就是我们在default.xml定义的remode name。main就是default定义的revision

看看gitlab后台是不是又这个文件呢?
在这里插入图片描述

5、新建分支

storage@storage-PowerEdge-R740xd:~/demo$ repo forall -c pwd
/home/storage/demo/device
/home/storage/demo/framework
/home/storage/demo/kernel
storage@storage-PowerEdge-R740xd:~/demo$ repo forall -c git checkout -b new_branch
storage@storage-PowerEdge-R740xd:~/demo$ cd kernel/
storage@storage-PowerEdge-R740xd:~/demo/kernel$ git branch -a

  • new_branch
    remotes/Max/main
    remotes/m/main -> Max/main
    storage@storage-PowerEdge-R740xd:~/demo/kernel$ repo forall -c git push Max HEAD:new_branch

去后台看看是不是多了一个branch呢
在这里插入图片描述
如果想要下载new_branch的代码,那么manifest也得添加个新分支,这里我们直接在gitlab后台操作吧
在这里插入图片描述
在这里插入图片描述
然后修改max_new_branch中default.xml
在这里插入图片描述

我在后台kernel device framework 工程的new_branch分支各增加个一个文件,我们看如何拉new_branch分支的代码。

1、repo init

repo init -u ssh://git@192.168.47.97/Max/dev/manifest.git  -b max_new_branch --repo-url=https://gerrit-googlesource.proxy.ustclug.org/git-repo

2 、repo sync

repo sync

storage@storage-PowerEdge-R740xd:~/branch$repo init -u ssh://git@192.168.47.97/Max/dev/manifest.git -b max_new_branch --repo-url=https://gerrit-googlesource.proxy.ustclug.org/git-repo
Downloading Repo source from https://gerrit-googlesource.proxy.ustclug.org/git-repo
remote: Finding sources: 100% (13/13)
remote: Total 13 (delta 1), reused 10 (delta 1)

Your identity is: Max 738270732@qq.com
If you want to change this, please re-run ‘repo init’ with --config-name

repo has been initialized in /home/storage/branch/
If this is not the directory in which you want to initialize repo, please run:
rm -r /home/storage/branch//.repo
and try again.
storage@storage-PowerEdge-R740xd:~/branch$ repo sync
Fetching: 100% (3/3), done in 1.406s
Garbage collecting: 100% (3/3), done in 0.015s
repo sync has finished successfully.
storage@storage-PowerEdge-R740xd:~/branch$ ls -l kernel/
total 8
-rw-rw-r-- 1 storage storage 0 7月 26 12:40 change.log
-rw-rw-r-- 1 storage storage 1 7月 26 12:40 new_branch.txt
-rw-rw-r-- 1 storage storage 10 7月 26 12:40 README.md
storage@storage-PowerEdge-R740xd:~/branch$ ls -l device/
total 8
-rw-rw-r-- 1 storage storage 1 7月 26 12:40 new_branch.txt
-rw-rw-r-- 1 storage storage 10 7月 26 12:40 README.md
storage@storage-PowerEdge-R740xd:~/branch$ ls -l framework/
total 8
-rw-rw-r-- 1 storage storage 1 7月 26 12:40 new_branch.txt
-rw-rw-r-- 1 storage storage 13 7月 26 12:40 README.md
storage@storage-PowerEdge-R740xd:~/branch$
这样是不是拉取了一份分支代码呢!
如果要提交代码命令如下

git push Max HEAD:new_branch

6、tag使用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu20.04 搭建repo + gitlab的代码管理系统 的相关文章

  • Gitlab CI - 不支持:外部构建目录

    我在保存工件时遇到问题 该项目分为3个模块 其中一个已保存 另外两个不保存 克隆项目 克隆到 home gitlab runner builds Gso uWvA 0 www project infoserwis project root
  • Sourcetree 2.1.2.5 - 显示“未提交的更改”,但没有任何待处理的内容

    我有一个以前没有遇到过的问题 即使我没有什么可提交的 并尝试将我的分支重置为 Sourcetree 显示的最新提交Uncommitted changes 根据 Atlassian 论坛的说法 通常有两个原因 您的工作目录中有很多很多未暂存的
  • 如何列出 Git 1.7+ 中的所有远程分支?

    我试过了git branch r 但这仅列出我在本地跟踪的远程分支 如何找到我没有的列表 命令是否列出对我来说并不重要all远程分支或仅那些未跟踪的分支 For the vast majority 1 of visitors here th
  • 使用 GIT 自动增加 AssemblyFileVersion

    好吧 我知道这可能不是传统的 但除此之外 我使用 AssemblyFileVersion 作为我的 构建名称 字符串 它的格式如下 File Version information for an assembly consists of t
  • 是否存在比 SVN 更快的集中版本控制?

    我已经使用 SVN 很长时间了 现在我们正在尝试使用 Git 我在这里谈论的不是中心化 去中心化的争论 我唯一关心的是速度 后一个工具要快得多 但有时 我需要使用一种集中式方法 这种方法比分散式方法更简单 更简单 学习曲线非常快 这节省了大
  • 如何预览 Git 中的隐藏内容?

    我想检查一个存储 并找出如果我将其应用于当前状态的工作树 它会发生什么变化 我知道我可以对存储进行 git diff 但这向我展示了工作树和存储之间的所有差异 而我只是想知道存储应用将改变什么 git stash show将向您显示最近存储
  • 在两个单独的分支或存储库中管理项目后端和前端?

    我启动了一个移动应用程序项目 该项目将具有服务器端和应用程序本身 所以 在master分支我创建了2个项目myapp server and myapp然后我创建了另外 2 个分支backend and frontend我只想将与它们相对应的
  • 如何重命名 GitHub 网站上的目录/文件夹?

    我在 GitHub 网站上找到了一种方法rename https github com blog 1436 moving and renaming files on github一个文件并成功完成 我也找到了一种方法rename https
  • Git 子模块:[电子邮件受保护]:权限被拒绝(公钥)。致命:无法从远程存储库读取

    我有一个问题git submodule update init remote 我收到错误 权限被拒绝和克隆失败 但我将 SSH 密钥添加到了我的 github 存储库中 我可以拉 推 git 克隆 我拥有所有需要的访问权限 我使用操作系统
  • 警告:您的 git 版本是 1.9.3。存在严重的安全漏洞

    我在部署到 Heroku 期间收到有关 git 1 9 3 严重安全漏洞的警告 我尝试通过 homebrew 更新 git 但发现 git 最初并不是通过 homebrew 安装的 然后我通过自制程序安装了它 brew update bre
  • Gerrit 安装后无法克隆所有项目存储库

    我有一个新设置的 Gerrit 实例 目前只有两个存储库 所有项目 binutils 测试 尝试克隆所有项目时 我收到以下错误 git clone ssh user hostname 29418 All Projects Initializ
  • Git 命令显示我对给定远程的权限

    同事可以从远程存储库获取数据 但不能推送到远程存储库 我怀疑他对遥控器只有读权限而没有写权限 我可以通过多种方法来检查这一点 但我想不出他可以在 git 中使用的方法 是否有 git 命令可以显示给定远程存储库的权限 No Git 本身不处
  • 交互式变基后,本地 Git 分支已偏离原始分支

    我有一个本地分行 CRM ayrshireminis 其中有一些我已推送到原点的提交 origin CRM ayrshireminis 这个分支是从创建的develop大约一周前的一个分支 其他合作者已经在该分支上完成了一周的工作 我想做的
  • 如何在 Windows 上向 git 存储库添加符号链接?

    我使用 GitHub 的电子环境编译 OS X 的二进制文件 并希望将输出添加到 git 存储库 我试过 git add error readlink sulu app Contents Frameworks Electron Framew
  • 在 git repo 中查找超过 x MB 且 HEAD 中不存在的文件

    我有一个 Git 存储库 用于存储随机的内容 主要是随机脚本 文本文件 我设计的网站等 随着时间的推移 我删除了一些大型二进制文件 通常为 1 5MB 这些文件会增加存储库的大小 而我在修订历史记录中不需要这些文件 基本上我希望能够做到 m
  • 如何使用 .gitattributes 避免在 git root 中包含文件夹,但在 zip 的 dist 文件夹中包含同名文件夹

    我有一个名为lib在存储库的根目录和另一个名为lib在 dist 文件夹中 我正在尝试使用 gitattributes文件排除除 dist 之外的所有文件夹和文件 以便任何下载为 zip 或 tarball 的人都只会 git 分发文件 我
  • 相当于“svn update -r”的 git 是什么?

    我是最近的 git 转换者 能够使用 git svn 将我的分支保留在本地而不干扰 svn 服务器真是太棒了 最新版本的代码中存在一个错误 我想确定一个它起作用的时间 以便我可以使用 git bisect 我找不到正确的命令来及时返回 谢谢
  • gitlab 中的自动发行说明[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 任何人都可以帮助我在 git lab 中自动生成发行说明 有什么方法可以执行此操作 请告诉我 谢谢 您可以使用 API 列出里程碑中的
  • git diff 在尖括号中显示 unicode 符号

    我有一个带有 unicode 符号 俄语文本 的文件 当我修复一些拼写错误时 我使用git diff color words 看看我所做的改变 如果是 unicode 西里尔文 符号 尖括号会造成一些混乱 如下所示 cat p1 cat p
  • 推送时发生 Git 错误 - update_ref 失败

    当我尝试推送本地提交时遇到问题 这可能是在 Android Studio 崩溃时发生的 这是错误 update ref 引用 refs remotes origin master 失败 无法锁定 ref refs remotes origi

随机推荐

  • QT 串口发送接收(带发送缓冲区)

    QT 串口发送接收 带发送缓冲区 串口代码更改 这里记录一下 接收因为是类似于中断的方式 接收一次处理一次 就没做接收缓冲区 与主板通讯模式为主从模式 串口发送函数用时钟轮询该函数 文章目录 QT 串口发送接收 带发送缓冲区 变量定义 串口
  • cuda编译错误

    error LNK2019 无法解析的外部符号 cudaDeviceSynchronize error LNK2019 无法解析的外部符号 cudaConfigureCall error LNK2019 无法解析的外部符号 cudaSetu
  • Qt5中.ui图形界面添加背景图片实操

    为了图形界面能看得下去 还是要添加一些图片之类的 基于之前的文章基于pyqt5简单搭建 ui图形界面 的界面框架来给界面简单添加一个背景图 1 电脑开始中找到 Qt Designer打开 2 弹出窗口点击 打开 有基础框架的 ui文件 所以
  • openstack镜像的管理与使用

    1 创建项目和用户 1 1 创建项目和用户 用SSH工具连接控制节点 这里是10 10 83 3 使用admin用户权限 执行如下命令 root admin openrc 1 2创建一个test项目 openstack project cr
  • python真的很骚可惜你不会

    python基本语法 博客主页 微笑的段嘉许博客主页 欢迎关注 点赞 收藏 留言 本文由微笑的段嘉许原创 51CTO首发时间 2023年1月日30 坚持和努力一定能换来诗与远方 作者水平很有限 如果发现错误 一定要及时告知作者哦 感谢感谢
  • asp.net core abp 视频教程1

    B站视频教程 abp视频教程1 本次视频主要讲解abp模板工程的下载及运行 践行费曼学习法
  • 数字IC手撕代码-兆易创新笔试真题

    前言 本专栏旨在记录高频笔面试手撕代码题 以备数字前端秋招 本专栏所有文章提供原理分析 代码及波形 所有代码均经过本人验证 目录如下 1 数字IC手撕代码 分频器 任意偶数分频 2 数字IC手撕代码 分频器 任意奇数分频 3 数字IC手撕代
  • elementUI table宽度自适应fit

    fit true 或者直接为 fit 转载于 https www cnblogs com panax p 11239664 html
  • 零基础入门语义分割-Task3 语义分割模型发展

    零基础入门语义分割 Task3 语义分割模型发展 3 语义分割模型发展 3 1 学习目标 3 2 FCN 3 3 SegNet 3 4 Unet 3 5 DeepLab 3 6 RefineNet 3 7 PSPNet 3 8 基于全卷积的
  • Transformer--Attention is All You Need (推荐--非常详细)

    文章目录 前言 对Transformer的直观认识 论文地址 模型提出的背景 或者动机 本论文模型 Tranformer Model Architecture Encoder residual connection 残差连接 Layer N
  • 机器人操作系统ROS

    锋影 email 174176320 qq com 如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 ROS已经发布八周年了 在国外科研机构中非常受欢迎 目前 以美国西南研究院为首的几位大佬
  • 全连接层(Fully Connected Layer)

    一 概述 全连接层的每一个结点都与上一层的所有结点相连 用来把前边提取到的特征综合起来 由于其全相连的特性 一般全连接层的参数也是最多的 在卷积神经网络的最后 往往会出现一两层全连接层 全连接一般会把卷积输出的二维特征图转化成一维的一个向量
  • 金山WPS笔试题总结

    第一题 分别输出什么 var arr arr a 1 console log arr length 0 arr 2 2 console log arr length 3 arr length 0 console log arr a 1 这题
  • Mac安装protobuf 流程

    1 brew安装protobuf 1 安装brew ruby e curl fsSL https raw githubusercontent com Homebrew install master install 2 使用brew安装pro
  • 【超详细】记录从零开始学mmdetection(一)

    一 环境配置 本专题是为了记录学习mmdetection的过程 包括mmdetection的配置 代码的讲解 如何使用mmdetection训练自己的数据集 本节只记录第一部分 环境配置过程 本专题主要是在Linux下配置的 因为mmdet
  • Vue3.0开发之整合vue-admin-template模板

    起源 vue admin template模板算是一个比较好的前端开发模板 不过作者好像没有出vue3 0版本的 所以刚好自己在学习vue3 0 就想到开发一个vue3 0的模板 当然大部分代码都是参照vue admin template模
  • Threejs入门教程

    一 本地搭建Threejs官方文档网站 1 官网地址 Github https github com mrdoob three js 我们可以直接下载压缩包并解压或使用 git clone
  • python批量提取视频帧

    python批量提取视频帧 python批量提取视频帧 两种提取方式 按帧数提取 每个视频提取固定帧数 若所取帧数超过视频总帧数 则截取视频所有帧 按时间间隔提取 每个time提取一帧 1 使用示例 python video set py
  • 平衡小车设计_4_PID实现

    平衡小车设计 4 PID实现 参考平衡之家的算法实现 首先明确三个环的PID都是位置式PID 1 角度环 PD g tPidA actual roll g tPidA err g tPidA actual g tPidA set g tPi
  • Ubuntu20.04 搭建repo + gitlab的代码管理系统

    Ubuntu20 04 搭建repo gitlab的代码管理系统 1 为什么要用gitlab GitLab 是一个用于仓库管理系统的开源项目 使用Git作为代码管理工具 并在此基础上搭建起来的Web服务 安装方法是参考GitLab在GitH