002.Gitlab基础使用

news/2025/3/4 12:01:02/文章来源:https://www.cnblogs.com/itzgr/p/18745999

gitlab基础使用

设置语言

gitlab社区版同样支持直接配置为简体中文,可能适配率暂不支持100% 。
点击头像,Preferences——>Preferences——>Localization 。

Language设置为简体中文,save changes。

使用介绍

gitlab的基础应用主要包括项目创建、组管理、issue等功能。
存放代码是最基本和重要的功能。

创建组及项目

群组——>新建群组 。

016

可选择create group 或者直接 import group 。

017

通常对于企业内部或组织私用,建议采用 Private 权限。
组可以跨多个项目进行管理和协作,一个组的成员可以访问改组下的所有项目,同时还可以创建子组进行嵌套。

018

private:该类型组及其项目只能由成员查看。
internal:除外部用户外,任何登录用户都可以查看组和任何内部项目。
public:任何公共项目都可以在没有任何认证的情况下查看。

继续完成项目创建,新建项目 。

019

通常可以创建一个空白项目,用来存储文件、工作内容、代码等。
也可以从一个模板创建创建一个项目,模板预设了必要文件等。
同时也支持从github、bitbucket或其他gitlaba外部导入项目。

创建空白项目:

020

创建一个名为 myapp 的项目。
必须明确地将项目访问权限授予每个用户,如果此项目是组的一部分,则将访问权限授予该组的成员。

021

提示:项目名称必须以小写或大写字母、数字或下划线开头。

PrivateProject访问必须显式授予每个用户。
如果此项目是组的一部分,则将访问权限授予该组的成员。

如下,创建已完成。

022

gitlab分支管理

gitlab代码分支管理包括分支创建、设置等,通常新建仓库后,默认创建一个master/main分支,按照产品研发的需求,通常不允许代码直接提交到master分支,而是根据业务特点和要求,创建多个分支。
通常根据不同的场景,会创建 dev 分支,即开发分支。

在当前 myapp ——> 当前仓库 ——> 新建分支 。

023

创建一个 dev 分支,新建的 dev 分支来自于 main 。

024

创建完后,打开项目即能看到新创建的 dev 分支。

025

分支删除可在 代码 ——> 分支中进行删除。

026

对于分支的权限管理,在 设置 ——> 仓库 中。

027

028

029

030

默认分支:此配置可以设置项目的默认分支,并配置分支名称模板。通常项目的默认分支是 main ,即打开项目通常直接显示的就是 main 分支。
镜像仓库:将项目设置为自动向另一个仓库推送,或者自动从另一个仓库拉取。其中分支、标签和提交将自动同步。
分支规则:此配置可以定义谁push、merge以及每个分支所需的审批规则。
受保护分支:保持稳定分支的安全性,并强制开发人员使用合并请求。如下设置 main 为保护分支,并且设置只有管理员( maintainer )有权限进行 merge 和 push 。
保护标签:限制创建和更新标签的访问权限。
部署令牌:部署令牌允许访问packages、repository和registry images镜像。
部署秘钥:添加部署密钥以授予此仓库的读/写访问权限。
仓库维护:管理仓库存储和清理。

分支管理模型

036

如下为一个可以参考的实践:

  1. 首先从 main 分支拉出 dev 分支,开发者在 dev 分支上进行开发。且一般不允许开发直接 push 到 dev 分支,而是将代码仓 fork 到自己的私有仓库中,然后通过 mergerequest 的方式向 dev 分支提交代码。部署流水线CI部署在 dev 分支。每次 dev 分支的提交需要做一些静态代码检查、单元测试、编译等。
  2. 待小周期开发结束,将 dev 分支合入到 test 分支,test 分支用于部署到测试环境供测试人员测试,待测试人员经过充分测试后再合入 pre 分支,用于部署到预发布环境,供相关人员体验。
  3. 正式发布一个版本,如 1.0 ,同时将代码合入 main 分支,同时拉出 1.0 分支,此分支用于后续维护。
  4. 此后开发人员继续下一个小周期的开发,代码继续合入 dev 。

当前主流的分支管理模型有:

  • Git flow
  • GitHub flow
  • GitLab flow
  • TBD flow

对于具体模型的更多知识可参考: 团队如何选择合适的Git分支策略 一图看懂各种分支管理模型

gitlab官方给出如下建议遵循的十一条建议:

  • 使用特性(feature)分支而不是直接在主分支(main/master)上进行提交。
  • 测试所有的提交,而不仅仅是主分支上的提交。
  • 对每个提交运行所有测试。
  • 在将代码合并到主分支之前进行Code Review。
  • 部署是基于分支或标签的自动化。
  • 标签由用户手动设置,而不是由持续集成(CI)自动设置。
  • 基于标签进行发布。
  • 已经推送的提交应该从不进行rebase。
  • 始于主分支(main/master),止于主分支。
  • 首先在主分支中修复bug,然后在发布分支中修复。
  • 提交消息应该反映出意图。

本实验更倾向具体的基础使用,对于具体模型不做过多探讨。

需求任务管理

gitlab主要通过 issue 来管理需求任务和缺陷故障,对于gitlab而言,需求、任务、缺陷都是 issue 。
而 gitlab 通过标签来标记 issue 到底属于哪个类型。
因此建议在使用 issue 之前对标签 lable 进行规划设计。

同时gitlab还提供里程碑的概念,即在开发过程中,可以设置若干里程碑作为软件研发过程中的关键节点。

里程碑创建

计划 ——> 里程碑 ,新建里程碑 。

031

如下所示,将 v1.0 版本的发布当做里程碑进行创建。
要求 app 能正常上线,且具备主要功能,时间为一个季度内。

032

针对该里程碑已创建完成。
033

标签设计及新增

  • 标签设计
    issue 最基础的要覆盖需求、任务、缺陷等,此外通常还需要包括协作讨论的内容,以及参考文档等。
    从功能层面,标记可以设计5个,如 feature 、 task 、 bug 、 discussion 、 doc 。
    根据问题缺陷的严重程度,标记可以设计4个,如 blocker 、 critical 、major 、 trivial 。
    根据问题缺陷的优先程度,标记可以设计5个,如 immediate 、 urgent 、 hight 、normal 、 low 。

通常如上设计基本可以覆盖大多数场景,也可以根据实际项目情况,进行其他设计。

  • 标签新增
    管理 ——> 标记 。

034

分别创建不用的标记。

035

查看所创建的标记。

036

issue提交

通过提交issue,进行需求、任务等跟进。

038

设置标题、描述、需求指派,并关联关键里程碑,也可指定多个标签,如 feature 、 hight ,即较高需求。

038

确认创建完成。

039

创建任务和创建缺陷流程可参考创建feature的过程。

gitlab连接管理

git客户端通常用来连接gitlab服务端,支持ssh和https协议。

配置ssh公钥

常见的gitlab、github、gitee等,注册账号后都支持配置sh公钥,通过ssh公钥下载、更新或者上传代码都不再需要输入密码。

  • Windows生成公钥
    Windows的cmd或PS里执行: ssh-keygen.exe -t rsa -C "x120952576@126.com"

公钥位于: C:\Users${USERNAME}.ssh\id_rsa.pub

046

  • Linux生成公钥
[root@gitclient ~]# ssh-keygen -f ~/.ssh/id_rsa -N '' -b 4096 -C "x120952576@126.com"[root@gitclient ~]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCzR7OdAO6GUa6jOg4dDAKApoHfwyJLOApdH9UeRbgUlm2WsW+cbdXCHpMHf7zTD122zcnThnvt6eayc8mmHSSgDm5XhWLFoD25kGedpPvmz0ZmEF32Inx2Ysh0+wqO1Z/Zvl4COwYrtexiLhpaCdWjpvDWP/B6g9zh+yDT9B2c6fl0EeFsXzfz2I1Axw/QBiarWP81FeYCQxdNsELd3qbeIOpu/KHgi71N7k61Ogw4W2v5Sl7KwQoJSsLg+WxJ2USURqyEvVOZrETXbFUHAlEQ7PxdKGc2tctv83Z5/e5xAGSdef6exPQ8bRCa8lYgvuKWqpt8noMM22C6EGYYzLsaB1mcqwgEqgrbHbjC/O7CMzBoCJvR1LaV4iFyUFDMAa/HMJBSxqrYJcEydTfAtUtbfYoi1KEjrAlXovjGR9WABdFTbuOf4+WO1rjtW7iuoqWS1uaPrItf1kQcTQl/mybW0XJJemCZDBYEIiHJYLill7LpPeFWbRw0Xt9ob0Y3ts8ghNcTYScKxBgl3HoM5Jr69pDYrV1uAjVSAasU/5u+r9TJlGkri3wqfrkMKu0kfdA+eAY4znhzM+Alx4ZTymvCLwVIzu4qlDU5q+gJBBbk+Jn98o1F6yw/HM3RdkoYgNm7TJGgCVKbK7+4azMXLnA89/2ZK5ahggMf3/fO0h+6zQ== x120952576@126.com

公钥位于: /root/.ssh/id_rsa.pub

  • 配置公钥

点击头像,偏好设置 。

040

SSH 秘钥,然后 添加新秘钥。

041

将生成的公钥内容复制到Key中。

042

确认添加完成。

043

SSH公钥测试

配置好SSH key后,可以通过ssh协议的git地址进行代码管理。
首页进入 myapp 项目后,代码下拉,复制ssh地址。

044

  • ssh非标准端口配置
    由于服务端采用的helm 在Kubernetes中部署的gitlab,ssh协议是和mygitlab-gitlab-shell Pod通信,该Pod使用nodeport暴露出来的。

所有节点的默认22端口被节点自身的ssh服务占用,因此采用 32222 进行暴露。
所以客户端使用git clone的时候建议在ssh config里将非标准端口提前配置。

[root@gitclient ~]# ssh -Tv git@gitlab.linuxsb.com -p 32222         #连接测试[root@gitclient ~]# cat  >> .ssh/config << EOF
Host gitlab.linuxsb.comHostName gitlab.linuxsb.comPort 32222User gitIdentityFile ~/.ssh/id_rsaIdentitiesOnly yes
EOF

ssh协议git测试:

[root@gitclient ~]# git clone git@gitlab.linuxsb.com:mygroup/myapp.git
Cloning into 'myapp'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (3/3), done.

HTTPS协议配置

对应https协议的方式,通常每次连接(clone、pull、push等)都需要输入用户名和密码。
通常可以使用如下几种方式配置,省去每次都需要输入用户名和密码。

  • 启用匿名clone

通常对于企业内部或者私有环境,不建议启用匿名clone 。
若需要开放可如下操作:

修改 values.yaml,然后更新upgrade。

global:gitlab:projectFeatures:publicProjects: true  # 允许公开项目匿名访问

或者进入 GitLab 网页端:
项目 设置 ——> 通用 ——> 可见性 ——> 项目可见性 ,调整为 Public 。

045

  • 缓存令牌
    缓存令牌是指在客户端将输入的用户名和密码临时缓存一段时间,从而克隆时只需输入一次凭证。
git config --global credential.helper 'cache --timeout 3600'
  • 个人Token(推荐)
    代替密码,生成一个具有适当权限的访问令牌,并将其存储在Git配置中。
    头像 ——> 偏好设置 ——> 访问令牌,个人访问令牌,添加新令牌。

047

输入 Token 名称:mytoken01
勾选权限:api、read_repository、write_repository等。
有效期:根据需求设置。
点击 创建个人令牌,保存生成的 Token。

048

复制生成的令牌,如 glpat--Hzu91s1N3PymHS3H2WK 。

049

客户端添加该令牌:

如下进行全局配置,即所有仓库生效。

[root@gitclient ~]# git config --global credential.helper store                                                 #长期保存凭证
git clone https://oauth2:glpat--Hzu91s1N3PymHS3H2WK@gitlab.linuxsb.com/mygroup/myapp.git
[root@gitclient ~]# git clone https://oauth2:glpat--Hzu91s1N3PymHS3H2WK@gitlab.linuxsb.com/mygroup/myapp.git    #针对特定仓库
Cloning into 'myapp'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Unpacking objects: 100% (3/3), 2.77 KiB | 2.77 MiB/s, done.

git客户端配置

git客户端还需要配置邮箱和用户名。
Git允许在全局或单个仓库中配置用户名和邮箱。全局配置适用于所有仓库,而本地配置仅对当前仓库有效。

[root@gitclient myapp]# git config --global user.email "x120952576@126.com"
[root@gitclient myapp]# git config --global user.name "xhy"
[root@gitclient myapp]# git config --list | grep -E 'user.name|user.email'
user.email=x120952576@126.com
user.name=xhy

提示:若不同仓库身份不同,则可以如下单独仓库里设置邮箱和用户名。

cd /root/myapp
git config user.email "x120952576@126.com"
git config user.name "xhy"

git基础使用

git客户端安装

git简介与安装参考: Git简介与安装 。

Windows与Linux安装包可在官方进行下载: https://git-scm.com/downloads 。
Windows安装略,Linux安装参考如下:

  • 编译安装
[root@gitclient ~]# yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc xmlto docbook2x[root@gitclient ~]# wget https://www.kernel.org/pub/software/scm/git/git-2.48.1.tar.xz
[root@gitclient ~]# tar -zxf git-2.48.1.tar.gz
[root@gitclient ~]# cd git-2.48.1
[root@gitclient git-2.48.1]# make configure
[root@gitclient git-2.48.1# ./configure --prefix=/usr/local/git
[root@gitclient git-2.48.1]# make all doc info
[root@gitclient git-2.48.1]# sudo make install install-doc install-html install-info
[root@gitclient git-2.48.1]# echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/profile.d/custom_path.sh[root@gitclient ~]# git version             #确认版本
  • yum安装
    对于yum安装,可直接执行如下命令:
[root@gitclient ~]# yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc xmlto docbook2x
[root@gitclient ~]# yum -y install git[root@gitclient ~]# git version             #确认版本

git配置

git客户的配置文件主要有如下几类:

  • /etc/gitconfig :针对全局的通用配置,可使用git config --system配置;

  • ~/.gitconfig 或 ~/.config/git/config :针对当前用户生效的配置,可使用git config --global配置;

  • 当前仓库目录 .git/config :针对该仓库。

  • 配置示例
    配置用户信息:

[root@gitclient ~]# git config --global user.name "zhangsan"
[root@gitclient ~]# git config --global user.email "xhy@itzgr.com"
  • 查看配置信息
[root@gitclient ~]# git config --list
http.sslcainfo=/etc/pki/ca-trust/source/anchors/myCA.crt
http.sslverify=true
credential.helper=store[root@gitclient ~]# git config http.sslcainfo		        #查看具体某一项配置信息
/etc/pki/ca-trust/source/anchors/myCA.crt

git基础使用

  1. 克隆代码
    git clone可以克隆远程仓库代码,支持SSH协议和HTTPS协议。

git支持如下四种方式的URL,以 gitlab.linuxsb.com 举例,该gitlab部署在Kubernetes中,其中gitlab-shell通过nodeport 32222端口暴露,gitlab-webservice通过ingress 443端口暴露。

git clone默认使用SSH协议,即在不指定特定协议的时候,默认采用ssh协议。

示例一:隐式使用了SSH协议,且通过~/.ssh/config下的32222端口连接,该URL为gitlab图形界面中提供的地址。
也可以显式的指定ssh协议及端口。

[root@gitclient ~]# git clone git@gitlab.linuxsb.com:mygroup/myapp.git
[root@gitclient ~]# git clone ssh://git@gitlab.linuxsb.com:32222/mygroup/myapp.git
[root@gitclient ~]# git clone ssh://git@gitlab.linuxsb.com/mygroup/myapp.git

示例二:显式的使用https协议。

[root@gitclient ~]# git clone https://gitlab.linuxsb.com/mygroup/myapp.git
Cloning into 'myapp'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Unpacking objects: 100% (3/3), 2.77 KiB | 1.39 MiB/s, done.
  1. 查看状态
    进入代码仓根目录,可以通过git status查看当前代码仓的状态。
    本地追加一个文件后,再次查看状态。

050

[root@gitclient ~]# cd myapp/
[root@gitclient myapp]# git status
On branch main
Your branch is up to date with 'origin/main'.nothing to commit, working tree clean

如上表明当前在 main 分支,没有任何修改。

  1. 添加新文件
    新增文件默认都是untrack,即没有任何记录、没有任何跟踪,也不参与版本控制。
[root@gitclient myapp]# echo "Hello World!" > test.txt
[root@gitclient myapp]# git status 
On branch main
Your branch is up to date with 'origin/main'.Untracked files:(use "git add <file>..." to include in what will be committed)test.txtnothing added to commit but untracked files present (use "git add" to track)

提示:Untracked files:未跟踪文件列表,即之前快照(提交)中没有此文件,git默认不会自动纳入跟踪范围。

  1. 跟踪新文件
    staged可以理解成暂存。也就是说我们把所有的改动都记录下来了,进行跟踪,如下表示在git系统当中记录的已经是这个文件最新的状态了。

当我们添加了新的文件,或者是有了新的改动,执行git add之后,得到的状态就是staged。

再次执行git status,能获取当前创建和更新了哪些文件。

[root@gitclient myapp]# git add .           #当前所有修改进行跟踪
[root@gitclient myapp]# git add test.txt    #跟踪特定文件[root@gitclient myapp]# git status 
On branch main
Your branch is up to date with 'origin/main'.Changes to be committed:(use "git restore --staged <file>..." to unstage)new file:   test.txt

提示:Changes to be committed:已暂存状态的文件。staged只是暂存,还没有真正提交进git系统当中。

  1. 修改文件
    针对已经记录/跟踪的文件又进行了修改,也就是改动了某个之前已经记录的文件,那么再次查看状态的时候就是modified,表示改动了,之前的记录已经不是最新的了,可以进行更新或者撤销修改。
[root@gitclient myapp]# echo -e "\nThis is my first git file!" >> test.txt        #修改文件内容[root@gitclient myapp]# git status              #再次查看状态 
On branch main
Your branch is up to date with 'origin/main'.Changes to be committed:(use "git restore --staged <file>..." to unstage)new file:   test.txtChanges not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   test.txt[root@gitclient myapp]# git diff test.txt
diff --git a/test.txt b/test.txt
index 980a0d5..ab46dd7 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1,3 @@Hello World!
+
+This is my first git file!
  1. 提交内容
    使用git commit进行提交文件,本质是将文件的修改提交到本地仓库。
    -m 参数用于描述本次提交的备注,便于后期排查。

对于再次修改的文件,可使用add,再次添加,然后进行提交。

[root@gitclient myapp]# git add test.txt 
[root@gitclient myapp]# git status 
On branch main
Your branch is up to date with 'origin/main'.Changes to be committed:(use "git restore --staged <file>..." to unstage)new file:   test.txt[root@gitclient myapp]# git commit -m "commit my test.txt"
[main 284a2d9] commit my test.txt1 file changed, 3 insertions(+)create mode 100644 test.txt[root@gitclient myapp]# git status 
On branch main
Your branch is ahead of 'origin/main' by 1 commit.(use "git push" to publish your local commits)nothing to commit, working tree clean

提示:committed表示已将暂存的staged状态的文件已提交,经过git commit命令之后,所有被提交的文件的状态就是committed。

默认git只会将所有暂存区的文件进行提交,但可通过git commit -a选项,git会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤。

  1. push内容
    将已commit的内容通过push提交到远程仓库。
[root@gitclient myapp]# git push origin main
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 2 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 308 bytes | 308.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To ssh://gitlab.linuxsb.com:32222/mygroup/myapp.git57df420..284a2d9  main -> main

在图形界面gitlab中查看文件提交结果。

051

  1. 总结常用命令

git init:在当前目录新建一个Git代码库,即初始化为git代码库。
git clone:克隆一个项目和它的整个代码历史。
git status [filename]:查看指定文件状态。
git status:查看所有文件状态。
git add [file1] [file2] ... :添加指定文件到暂存区
git add [dir]:添加指定目录到暂存区,包括子目录。
git add . :添加当前目录的所有文件到暂存区。
git reset:如果已经用add 命令把文件加入stage了,則表示从stage中撤销。
git clean:移除所有未跟踪文件,参数-df表示包括目录和强制清除。
git rm --cached:从stage中删除,保留物理文件。
git rm:从stage中删除,同时删除物理文件。
git diff:查看文件修改后的差异。
git diff --cached:比较暂存区的文件与之前已经提交过的文件。

git分支管理

  • 查看分支
    查看当前所处的分支。
[root@gitclient myapp]# git branch 
* main

查看本地和远端的所有分支。

[root@gitclient myapp]# git branch -a
* mainremotes/origin/HEAD -> origin/mainremotes/origin/devremotes/origin/main
  • 新建分支
    可以在图形界面,也可以通过git命令创建分支。
    如下创建同时切换至新分支。
[root@gitclient myapp]# git checkout -b test
Switched to a new branch 'test'
[root@gitclient myapp]# git branchmain
* test[root@gitclient myapp]# ls
README.md  test.txt[root@gitclient myapp]# git checkout main 
Switched to branch 'main'
Your branch is up to date with 'origin/main'.
[root@gitclient myapp]# git branch 
* maintest

提示:git checkout表示切换到当前已存在的分支;git checkout -b表示如果需要切换的分支不存在则以当前所处分支为根基新建对应分支。

  • 推送分支
    可以将本地创建的分支,push到远端仓库。
[root@gitclient myapp]# git checkout test 
Switched to branch 'test'
[root@gitclient myapp]# git branch main
* test[root@gitclient myapp]# git push origin test 
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: 
remote: To create a merge request for test, visit:
remote:   https://gitlab.linuxsb.com/mygroup/myapp/-/merge_requests/new?merge_request%5Bsource_branch%5D=test
remote: 
To ssh://gitlab.linuxsb.com:32222/mygroup/myapp.git* [new branch]      test -> test

052

本地分支和远端分支相关流程如参考:

053

提示:更多的git日常基础参考: 002.Git日常基础使用 。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【PHP安全】无参数命令执行学习

免责声明: 由于传播、利用本公众号所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!文章作者:先知社区(Atkx) 文章来源:https://xz.aliyun.com/ne…

分享4款.NET开源、免费、实用的商城系统

前言 今天大姚给大家分享4款.NET开源、免费、实用的商城系统,希望可以帮助到有商城系统开发需求的同学。 nopCommerce nopCommerce是一个.NET开源功能丰富、免费、灵活且可定制的开源电子商务解决方案(大家假如有商城需求可以直接使用该项目进行二次开发,省时省力) ,具备商城…

总结:单调栈

\(\texttt{单调栈}\) \(\texttt{单调栈学习笔记}\) 今天学习的是 数据结构:单调栈。 (n 久之前了……) \(\texttt{数据结构讲解}\) \(\texttt{单调栈的类型}\)单调递增栈单调递减栈单调递增栈:指的是一个栈中的元素都是单调递增的。 单调递减栈:指的是一个栈中的元素都是单…

基于ThreeJs的大屏3D地图(二)——气泡图、渐变柱体与热力图

前提 上一篇文章中我们完成了地图区块模型的渲染,在此基础之上本篇来讲解气泡图、3D柱形图以及3D热力图的实现方式。 首先,为了更好的关注点分离及与地图渲染模块的解耦,我们可以把所有类型的可视化元素抽象出一个图层基类BaseLayer: /*** 图层基类*/ abstract class BaseL…

揭露GPT幻觉只需一个提示

把像GPT这样的超大语言模型投入真实世界应用时,最大挑战之一就是经常说的幻觉。这就是说这些模型会开始编造一些根本不对的事实。最麻烦的地方是你可能根本不会发现,因为这些文字放在上下文里听起来很自然。 这对那些需要事实核查,或者某种形式的事后验证才能信任LLM回答的关…

如何使用ChatGPT画流程图

如何使用ChatGPT画流程图 MermaidMermaid 是一款基于 JavaScript 的图表绘制工具,使用 Markdown 风格的文本定义和渲染器来创建和修改复杂图表。Mermaid 的主要目的是帮助文档跟上开发的步伐。使用示例将ChatGPT回复的代码粘贴到下面的网站上 https://mermaid.live/

成都控制板定制:常见的MAX485芯片型号和后缀的含义

我处承接提供优质的单片机系统开发、电路板PCB设计、控制器研发控制箱定制、电子产品、硬件开发、工控测控传感自动化PLC系统设计、仪器定制仪表订做、信号采集器研发、物联网、软件EXE编程、安卓APP等开发定制加工优质服务(www点yonko-tech点com),在项目时会经常用到485通信…

震撼揭秘:LLM幻觉如何颠覆你的认知!

LLM幻觉 把幻觉理解为训练流水线中的一种涌现认知效应 Prashal RuchirangaRobina Weermeijer 在 Unsplash 上的照片介绍 在一个名为《深入剖析像ChatGPT这样的LLM》的YouTube视频里,特斯拉前AI资深总监Andrej Karpathy探讨了大型语言模型(LLM)的心理现象,把它看作是训练流水…

Windows 10 Hyper-V 安装不了 统信UOS Server 解决方案

如果一直停留在上面的页面,删除虚拟机,记得创建虚拟机,不要选择2代CPU。

Windows下DeepSeek R1简单搭建

目录安装 Ollama简介安装运行模型选择嵌入模型(Embedding)安装和使用Cherry Studio配置Cherry Studio配置使用本地模型知识库配置 安装 Ollama 简介 Ollama 是一个开源的大型语言模型(LLM)平台,旨在让用户能够轻松地在本地运行、管理和与大型语言模型进行交互。 提供了一个简…

学习进度记录贴

本文主要记录作者的各个学习记录🐫学习进度记录帖本贴开立初衷是为了督促作者好好学习,用记录的方式收获一点正反馈。作者目前大三下半学期,由于对考研上不了岸z的担忧,所以想边实习边考研。虽然这是很多人都不建议走的一条路,但是只有这样才能够缓解我的焦虑,让我不必在…

SSL/TLS握手阶段解析

众所周知SSL/TLS是HTTPS的基石,我觉得对经常都在使用的网络需要有进一步的了解。 HTTPS协议全称(Hypertext Transfer Protocol Secure),它与HTTP协议最大的不同就在于更安全。 HTTP是明文协议,所有内容默认都没有经过加密,当然也可以由开发人员将客户端和服务端要发送的内…