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

Git常用操作之GitLab

Git常用操作之GitLab

小薛博客官网:小薛博客Git常用操作之GitLab官方地址

1、GitLab安装

https://gitlab.cn/install/

1、Docker安装GitLab

https://docs.gitlab.cn/jh/install/docker.html

1、设置卷位置

在设置其他所有内容之前,请配置一个新的环境变量 $GITLAB_HOME,指向配置、日志和数据文件所在的目录。 确保该目录存在并且已授予适当的权限。

对于 Linux 用户,将路径设置为 /usr/local/gitlab

export GITLAB_HOME=/srv/gitlab

对于 macOS 用户,使用用户的 $HOME/gitlab 目录:

export GITLAB_HOME=$HOME/gitlab

极狐GitLab 容器使用主机装载的卷来存储持久数据:

本地位置容器位置使用
$GITLAB_HOME/data/var/opt/gitlab用于存储应用程序数据。
$GITLAB_HOME/logs/var/log/gitlab用于存储日志。
$GITLAB_HOME/config/etc/gitlab用于存储极狐GitLab 配置文件。
2、使用 Docker Engine 安装极狐GitLab

您可以微调这些目录以满足您的要求。 一旦设置了 GITLAB_HOME 变量,您就可以运行镜像:

sudo docker run --detach \--hostname gitlab.example.com \--publish 443:443 --publish 80:80 --publish 23:22 \--name gitlab \--restart always \--volume $GITLAB_HOME/config:/etc/gitlab \--volume $GITLAB_HOME/logs:/var/log/gitlab \--volume $GITLAB_HOME/data:/var/opt/gitlab \--shm-size 256m \registry.gitlab.cn/omnibus/gitlab-jh:latest

这将下载并启动极狐GitLab 容器,并发布访问 SSH、HTTP 和 HTTPS 所需的端口。所有极狐GitLab 数据将存储在 $GITLAB_HOME 的子目录中。系统重启后,容器将自动 restart

如果您使用的是 SELinux,请改为运行以下命令:

sudo docker run --detach \--hostname gitlab.example.com \--publish 443:443 --publish 80:80 --publish 22:22 \--name gitlab \--restart always \--volume $GITLAB_HOME/config:/etc/gitlab:Z \--volume $GITLAB_HOME/logs:/var/log/gitlab:Z \--volume $GITLAB_HOME/data:/var/opt/gitlab:Z \--shm-size 256m \registry.gitlab.cn/omnibus/gitlab-jh:latest

这将确保 Docker 进程有足够的权限在挂载的卷中创建配置文件。

如果您使用 Kerberos 集成 ,您还必须发布您的 Kerberos 端口(例如,--publish 8443:8443)。否则会阻止使用 Kerberos 进行 Git 操作。

初始化过程可能需要很长时间。 您可以通过以下方式跟踪此过程:

sudo docker logs -f gitlab

启动容器后,您可以访问 域名(如果您在 macOS 上使用 boot2docker,则可以访问 http://ip:端口)。Docker 容器开始响应查询可能需要一段时间。

访问极狐GitLab URL,并使用用户名 root 和来自以下命令的密码登录:

sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

密码文件将在 24小时后的第一次重新配置运行中自动删除。

3、使用 Docker Compose 安装极狐GitLab
version: '3.6'
services:web:image: 'registry.gitlab.cn/omnibus/gitlab-jh:latest'restart: alwayshostname: 'gitlab.example.com'environment:GITLAB_OMNIBUS_CONFIG: |external_url 'https://gitlab.example.com'# Add any other gitlab.rb configuration here, each on its own lineports:- '80:80'- '443:443'- '22:22'volumes:- '$GITLAB_HOME/config:/etc/gitlab'- '$GITLAB_HOME/logs:/var/log/gitlab'- '$GITLAB_HOME/data:/var/opt/gitlab'shm_size: '256m'

确保您在与 docker-compose.yml 相同的目录下并启动极狐GitLab:

docker compose up -d

下面是另一个 docker-compose.yml 示例,其中极狐GitLab 在自定义 HTTP 和 SSH 端口上运行。注意 GITLAB_OMNIBUS_CONFIG 变量如何匹配 ports 部分:

version: '3.6'
services:web:image: 'registry.gitlab.cn/omnibus/gitlab-jh:latest'restart: alwayshostname: 'gitlab.example.com'environment:GITLAB_OMNIBUS_CONFIG: |external_url 'http://gitlab.example.com:8929'gitlab_rails['gitlab_shell_ssh_port'] = 2224ports:- '8929:8929'- '2224:22'volumes:- '$GITLAB_HOME/config:/etc/gitlab'- '$GITLAB_HOME/logs:/var/log/gitlab'- '$GITLAB_HOME/data:/var/opt/gitlab'shm_size: '256m'

这与使用 --publish 8929:8929 --publish 2224:22 相同。

image-20240104090056966

2、Linux Centos安装GitLab

https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

image-20240104102419587

安装依赖项

yum install policycoreutils-python

安装GitLab

rpm -i gitlab-ce-16.7.0-ce.0.el7.x86_64.rpm

image-20240104102507647

# 修改配置
vim /etc/gitlab/gitlab.rb# 修改为ip或者域名
external_url 'http://43.139.157.112:6688'# 重新加载配置文件
gitlab-ctl reconfigure# 重启
gitlab-ctl restart

image-20240104103920095

# 查看默认密码
cat /etc/gitlab/initial_root_password

2、GitLab设置中文

image-20240104090128274

image-20240104090211569

3、GitLab新建用户

image-20240104104217492

4、Git安装

1、windows安装

https://git-scm.com/download/win

image-20240104105645650

下载下来后傻瓜式安装即可,一直下一步就好。

2、Mac安装

简易安装法 打开Mac输入终端 输入git 会弹出安装

3、Git修改用户名邮箱

git config user.name "xueqimiao"
git config user.email "161616@qq.com"git config user.name
git config user.email

5、新建仓库

image-20240104110011597

image-20240104110135597

6、拉取、提交、撤销与推送代码

1、拉取代码

image-20240104110250392

可以看到有两种方式拉取代码,我们先用http的方式,后面再使用SSH方式

1、命令拉取
# 拉取代码
git clone http://43.139.157.112:6688/root/xx-test.git
# 根据提示输入用户名和密码

image-20240104110837226

2、IDEA拉取

image-20240104111026391

image-20240104111138924

image-20240104111153157

image-20240104111215469

2、提交代码

新建一个文件Test01

image-20240104111424204

我们先不点击add,可以看到文件颜色为红色,说明文件还没有添加到版本控制中

1、命令提交
# 添加到暂存区
git add Test01.java
# add之后文件颜色为绿色

image-20240104111521501

可以看到文件变成了正常颜色

# 添加指定文件到暂存区
git add [file1] [file2] ...# 添加指定目录到暂存区,包括子目录
git add [dir]# 添加当前目录的所有文件到暂存区
git add .# 添加每个变化前,都会要求确认
# 对于同一个文件的多处变化,可以实现分次提交
git add -p
# 提交
git commit -m '第一次提交'

image-20240104112422542

注意: 此时远程仓库中还没有,因为我们还没有推送

# 提交暂存区到仓库区
$ git commit -m [message]# 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message]# 提交工作区自上次commit之后的变化,直接到仓库区
$ git commit -a# 提交时显示所有diff信息
$ git commit -v# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]# 重做上一次commit,并包括指定文件的新变化
$ git commit --amend [file1] [file2] ...

红色:表示文件还没有被 Git 跟踪,尚未添加到版本控制中

红色:表示在合并过程中遇到冲突的文件

红色:已删除的文件

绿色:表示文件在上次提交后已被修改

绿色:表示文件已被添加到暂存区,准备提交到版本库

绿色:表示文件被重命名,并且这个重命名操作已被暂存

正常颜色:表示文件没有变化

工作区(Working Directory):

  • 工作区是你当前正在操作的目录,包含项目的实际文件。

暂存区(Staging Area / Index):

  • 暂存区是一个中间区域,用于存储你已经做出的更改,但还没有提交到版本库。在工作区修改文件后,你可以将这些修改暂时存储在暂存区,然后一次性提交到版本库。

版本库(Repository):

  • 版本库是一个包含项目历史记录的地方。它包括了所有提交的信息、文件的状态、以及指向每个提交的指针。版本库通常分为两部分:本地版本库(Local Repository)和远程版本库(Remote Repository)。

本地版本库(Local Repository):

  • 本地版本库是你计算机上的一个存储库,包含完整的项目历史记录。你可以在本地进行提交、查看历史记录等操作。

远程版本库(Remote Repository):

  • 远程版本库是位于网络上的一个共享版本库,通常托管在像 GitHub、GitLab 或 Bitbucket 等平台上。它允许多个开发者协作,通过推送(push)和拉取(pull)操作同步本地和远程版本库的变更。
2、IDEA提交

新建一个文件Test02

image-20240104112644679

此时点击add

image-20240104112812639

此时已经提交完成

3、撤销

1、撤销add
1、命令操作

新建一个文件Test03

image-20240104113542006

git reset Test03.java

image-20240104113645243

2、IDEA操作

新建一个文件Test04

image-20240104113805216

image-20240104113823717

HEAD 是一个特殊的指针,它指向当前所在的本地分支的最新提交(最新的提交记录)。HEAD 可以理解为你当前工作目录所处的位置,即当前所在分支的最新提交。

Reset Type三种常用的模式:

git reset 命令有三个常用的模式:--soft--mixed(默认模式)和 --hard。这些模式控制了命令的行为,特别是在重置提交时涉及到的暂存区和工作区的处理。

–soft:

  • --soft 模式表示“软重置”,它会将 HEAD 移动到目标提交,但不会修改暂存区和工作区。所有更改都保留在暂存区,你可以使用 git commit 来创建一个新的提交。

    git reset --soft HEAD^
    

–mixed(默认模式):

  • --mixed 模式是默认的重置模式,它会将 HEAD 移动到目标提交,并且会重置暂存区,但不会修改工作区。这意味着你的更改会被保留在工作区,但不会被包含在新的提交中。

    git reset --mixed HEAD^
    

–hard:

  • --hard 模式是最彻底的重置,它会将 HEAD 移动到目标提交,并且会重置暂存区和工作区,即丢弃所有未提交的更改。慎用这个选项,因为它会永久性地删除你在工作区中的所有更改。

    git reset --hard HEAD^
    

同样的idea也可以直接add

image-20240104113934006

2、撤销提交
1、命令操作

撤销最后一次提交(commit),可以使用 git resetgit revert,具体取决于你想要的效果以及是否已经将更改推送到远程仓库。

  1. 使用 git reset 撤销提交并保留更改:
git reset --soft HEAD^

这将把 HEAD 移动到前一个提交,保留工作区和暂存区的更改。你可以随后选择性地将需要的更改添加到暂存区,并提交。

  1. 使用 git reset 撤销提交并清除所有更改:
git reset --hard HEAD^

这会将 HEAD 移动到前一个提交,并丢弃工作区和暂存区的所有更改。小心使用这个选项,因为它会永久删除未提交的更改。

2、IDEA操作

image-20240104132907487

image-20240104133004333

如果已经推送需要撤回

# 查看提交记录
git log git revert 记录hash值

your local changes would be overwritten by revert. hint: commit your changes or stash them to proceed. revert failed

这个错误提示表明在进行 git revert 操作时,存在未提交的本地更改,而 git revert 操作要求工作目录是干净的,没有未提交的更改。

解决这个问题的方法有两种:

1. 提交或存储本地更改:

提交更改:

如果你希望将这些未提交的更改包含在新的撤销提交中,可以先提交这些更改:

git add .
git commit -m "Committing local changes before revert"

然后再执行 git revert

git revert <commit-to-revert>

存储更改

如果你不想将这些未提交的更改包含在新的撤销提交中,可以使用 git stash 将它们存储起来:

git stash

然后再执行 git revert

git revert <commit-to-revert>

最后,如果需要,可以使用 git stash pop 恢复之前存储的更改:

git stash pop

强制 git revert

如果你确定不需要保存本地更改,也可以使用 --no-commit 选项强制 git revert

git revert --no-commit <commit-to-revert>

这将允许你在撤销提交之前进行其他更改。完成所有需要的更改后,手动提交:

git commit -m "Revert commit <commit-to-revert>"

git stashgit stash pop 是用于暂存和恢复未提交的工作目录和暂存区更改的命令。它们的作用如下:

git stash

git stash 用于将当前工作目录和暂存区的未提交更改保存起来,使你的工作目录变得干净,以便进行其他操作。

git stash

这个命令会将未提交的更改保存为一个栈中的堆栈帧(stash),并将你的工作目录和暂存区恢复到干净的状态。

git stash pop

git stash pop 用于从栈中恢复最近的 stash,并将其从 stash 栈中删除。它会自动应用 stash,并尝试将你的本地更改合并到 stash 之前的提交上。

git stash pop

这个命令相当于同时运行 git stash applygit stash drop

  • git stash apply 用于将 stash 中的更改应用到当前工作目录和暂存区,但并不删除 stash。
  • git stash drop 用于删除最近的 stash。

通过 git stash pop,你可以一次性完成这两个步骤。

示例:

  1. 使用 git stash

    # 将未提交的更改保存到 stash
    git stash
    
  2. 进行其他操作:

    在这一步,你可以切换分支、拉取最新的代码、合并分支等。

  3. 使用 git stash pop

    # 恢复最近的 stash,并应用到当前分支
    git stash pop
    

    或者,你也可以使用 git stash applygit stash drop 来分别应用 stash 和删除 stash:

    # 恢复最近的 stash
    git stash apply# 删除最近的 stash
    git stash drop
    

4、推送代码

1、命令推送
# 全部推送
git push
git push origin
# 提交了多次 指定推送
## 查看提交记录 拿出hash值
git log# 推送
git push origin 008949bb2e3cdb560e709d175832e31e8edd65da:main(分支名)

git push

  • git push 会将当前分支的本地更改推送到与之关联的远程分支。
  • 如果当前分支与远程分支有关联(例如,使用 git branch --set-upstream-togit push -u),那么 git push 将推送到关联的远程分支。例如,如果当前分支是 main,而与之关联的远程分支是 origin/main,则 git push 将推送到 origin/main
  • 如果当前分支没有明确与远程分支关联,git push 将会失败并给出相应的错误信息。

示例:

git push

git push origin

  • git push origin 是显式指定要推送到的远程仓库。你可以提供一个远程仓库的名称(例如 origin)以及一个分支名称,以明确要推送到的远程分支。
  • 这种方式允许你推送到非关联的远程分支,或者推送到远程仓库的不同分支。

示例:

git push origin main

git branch --set-upstream-to 命令用于设置当前本地分支与远程分支的关联。在 Git 中,一个本地分支可以与远程分支建立关联,以便更方便地进行推送和拉取操作。

下面是该命令的基本用法:

git branch --set-upstream-to=remote-branch local-branch

其中:

  • remote-branch 是远程分支的名称。
  • local-branch 是本地分支的名称。

这个命令的目的是告诉 Git,将本地分支 local-branch 与远程分支 remote-branch 关联起来。一旦关联建立,你就可以使用 git pushgit pull,而不需要每次都指定远程分支的名称。

示例:

# 假设当前分支是 main,想要将其关联到远程分支 origin/main
git branch --set-upstream-to=origin/main main

之后,你可以直接使用 git pushgit pull,Git 将根据关联的远程分支进行操作。

# 推送本地更改到关联的远程分支
git push# 从关联的远程分支拉取更新
git pull

注意:在较新的 Git 版本中,--set-upstream-to 也可以用 -u 替代,如下所示:

git branch -u origin/main main
2、IDEA推送

一次推送

image-20240104135213320

提交了多次选择性推送

image-20240104135144986

7、SSH拉取代码

# 在终端中执行 一直回车就行
ssh-keygen

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

将公钥复制到GitLab中

image-20240104143114055

image-20240104143151550

再使用SSH地址拉取代码即可

image-20240104144340168

8、创建分支

1、命令操作

# 新建分支
git branch dev# 新建一个分支,并切换到该分支
git checkout -b dev1# 推送分支git push --set-upstream origin dev1
# 列出所有本地分支
$ git branch# 列出所有远程分支
$ git branch -r# 列出所有本地分支和远程分支
$ git branch -a# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]# 新建一个分支,并切换到该分支
$ git checkout -b [branch]# 新建一个分支,指向指定commit
$ git branch [branch] [commit]# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]# 切换到指定分支,并更新工作区
$ git checkout [branch-name]# 切换到上一个分支
$ git checkout -# 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]# 合并指定分支到当前分支
$ git merge [branch]# 选择一个commit,合并进当前分支
$ git cherry-pick [commit]# 删除分支
$ git branch -d [branch-name]# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

2、IDEA操作

image-20240104145016553

image-20240104145046266

9、合并分支

1、命令操作

# 修改dev2分支内容并推送到远程

image-20240104145313456

# 切换为dev1分支
git checkout dev1
# 也可以
git switch dev1# 合并dev2代码
git merge dev2

2、IDEA操作

我们将dev2的代码合并到dev分支,所以要先切换为dev分支

image-20240104145748890

再选择dev2分支并点击merge

image-20240104145901354

10、冲突解决

1、命令操作

同时修改dev1dev2的同一个文件

image-20240104150859936

切换到dev2,修改后再合并dev1

image-20240104150942933

git merge dev1Updating 0a3ec3a..024f51d
error: Your local changes to the following files would be overwritten by merge:Test02.java
Please commit your changes or stash them before you merge.
Aborting# 我们可以先暂存
git stash
git merge dev1# 再恢复本地
git stash pop

再同时修改dev1dev2的同一个文件

image-20240104151653307

修改了dev1分支的代码并推送

image-20240104151741128

切换为dev2分支修改了并推送

git commit . -m '修改dev2'# 推送
git push

再合并dev1分支代码

git merge dev1

image-20240104152042384

# 此时需要手动编辑文件git add Test02.java
git commit -m '解决冲突'
git push 

2、IDEA操作

idea在操作合并的时候会出现merge弹窗

image-20240104153321178

11、回滚代码

1、命令操作

使用 git resetgit revert 命令。这两个命令的主要区别在于它们的影响范围和对历史记录的处理方式。

  1. 使用 git reset 回滚:
# 回滚到指定版本(commit-hash 为目标版本的 commit 哈希值)
git reset --hard commit-hash

这将移动你的 HEAD 和当前分支指针到指定版本,并将工作目录和暂存区都恢复到目标版本的状态。请注意,--hard 参数表示丢弃工作目录和暂存区的所有更改,慎用。

  1. 使用 git revert 回滚:
# 创建一个新的撤销提交以回滚到指定版本
git revert commit-hash

这将创建一个新的提交,该提交的变更是将目标版本的更改撤销掉。相比于 git resetgit revert 是一种更安全的方式,因为它不会修改历史记录,而是创建一个新的提交来撤销之前的提交。

2、IDEA操作

image-20240104153730917

image-20240104154005544

image-20240104154327494

12、.gitignore文件

如果我们有不想提交的文件可以配置到这个文件当中,放到根目录下即可

# Compiled class file
*.class# Log file
*.log# BlueJ files
*.ctxt# Mobile Tools for Java (J2ME)
.mtj.tmp/# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
*.iml
*.ipr
*.iws# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*#.idea
.idea/
target/
.gitlab-ci.yml
.mvn/

13、仓库备份与还原

# 旧GitLab服务器备份
sudo gitlab-rake gitlab:backup:create
默认日志保存路径 /var/opt/gitlab/backups
# 新GitLab服务器还原
gitlab-rake gitlab:backup:restore BACKUP= 文件名
# 注意等于号后面有一个空格

相关文章:

Git常用操作之GitLab

Git常用操作之GitLab 小薛博客官网&#xff1a;小薛博客Git常用操作之GitLab官方地址 1、GitLab安装 https://gitlab.cn/install/ 1、Docker安装GitLab https://docs.gitlab.cn/jh/install/docker.html 1、设置卷位置 在设置其他所有内容之前&#xff0c;请配置一个新的…...

2025探索短剧行业新可能报告40+份汇总解读|附PDF下载

原文链接&#xff1a;https://tecdat.cn/?p41043 近年来&#xff0c;短剧以其紧凑的剧情、碎片化的观看体验&#xff0c;迅速吸引了大量用户。百度作为互联网巨头&#xff0c;在短剧领域积极布局。从早期建立行业专属模型冷启动&#xff0c;到如今构建完整的商业生态&#xf…...

各省水资源平台 水资源遥测终端机都用什么协议

各个省水资源平台 水资源遥测终端机 的建设大部分从2012年开始启动&#xff0c;经过多年建设&#xff0c;基本都已经形成了稳定的通讯要求&#xff1b;河北瑾航科技 遥测终端机&#xff0c;兼容了大部分省市的通讯协议&#xff0c;如果需要&#xff0c;可以咨询和互相学习&…...

C#+EF+SqlServer性能优化笔记

文章目录 前言一、C#EF 代码优化1.接口代码改异步2.查询异步&#xff0c;只查询需要的数据3.查询数据判断时4.直接使用sql查询 二、数据库优化1.减少关联表&#xff0c;一些基础数据&#xff0c;字典表可以考虑放到redis中&#xff0c;在代码中映射2.增加索引&#xff0c;删除无…...

列表动态列处理

1、在initialize()方法里&#xff0c;获取列表控件&#xff0c;添加CreateListColumnsListener监听 public void initialize(){ BillList billlist(BillList)this.getControl("billlistap"); billlist.addCreateListColumnsListener(this::beforeCreateListColumns)…...

电机控制常见面试问题(十二)

文章目录 一.电机锁相环1.理解锁相环2.电机控制中的锁相环应用3.数字锁相环&#xff08;DPLL&#xff09; vs 模拟锁相环&#xff08;APLL&#xff09;4.锁相环设计的关键技术挑战5.总结 二、磁链观测1.什么是磁链&#xff1f;2.为什么要观测磁链&#xff1f;3.怎么观测磁链&am…...

芯驿电子 ALINX 亮相德国纽伦堡,Embedded World 2025 精彩回顾

2025年3月13日&#xff0c;全球规模最大的嵌入式行业盛会——德国纽伦堡国际嵌入式展&#xff08;embedded world 2025&#xff09;圆满落幕。 在这场汇聚全球 950 家展商、3 万余专业观众的科技盛宴中&#xff0c;芯驿电子 ALINX 展位人头攒动&#xff0c;多款尖端产品吸引客户…...

西门子S7-1200 PLC远程上下载程序方案

西门子S7-1200 PLC远程上下载程序方案&#xff08;巨控GRM552YW-C模块&#xff09; 三步完成配置 | 全球适用 | 稳定高效 三步快速完成远程配置 硬件部署 准备巨控GRM552YW-CHE模块1台&#xff0c;通过网口连接西门子S7-1200 PLC以太网口。 模块支持4G/5G/Wi-Fi/网线接入外网…...

MFC窗口的创建/消息映射机制

mfc.h #include<afxwin.h>//mfc头文件//应用程序类 class MyApp:public CWinApp //继承于应用程序类 { public://程序入口virtual BOOL InitInstance(); };//框架类 class MyFrame:public CFrameWnd { public:MyFrame();//声明宏 提供消息映射机制DECLARE_MESSAGE_MAP()…...

【每日学点HarmonyOS Next知识】tab对齐、相对布局、自定义弹窗全屏、动画集合、回到桌面

1、HarmonyOS Tabs 是否能支持 tabbar 居左对齐&#xff1f; 当前方案为自定义tabbar实现&#xff0c;示例demo&#xff1a; Entry Component struct TabsExample {State tabArray: Array<number> [0, 1,2]State focusIndex: number 0State pre: number 0State inde…...

如何在TikTok网页版切换地区设置

今天我们来聊聊如何在TikTok网页版上更改地区设置。TikTok作为全球知名的短视频社交应用&#xff0c;不仅仅局限于某个国家或地区。修改地区设置可以让你探索来自不同地方的内容&#xff0c;享受更为丰富的社交互动体验。那么&#xff0c;具体该如何操作呢&#xff1f;让我一步…...

redis工具类

前言 Redis 是一个高性能的键值存储系统&#xff0c;广泛应用于缓存、消息队列、实时分析等场景。为了更高效地操作 Redis&#xff0c;许多开发者会选择使用 Redisson 客户端库。 依赖配置 首先确保您的项目中已经包含了 Redisson 的最新版本&#xff08;如 3.44.0&#xff…...

【Python办公】Excel通用匹配工具(双表互匹)

目录 专栏导读1、背景介绍2、库的安装3、核心代码4、完整代码总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系列文章专栏:请点击——>Python办公自动化专…...

安徽省青少年信息学奥林匹克竞赛初中组第1题LuoguP762

先放题目: 【题目背景】.你 .可 .以 .选 .择 .跳 .过 .背 .景 .部 .分。初春的一天&#xff0c;正是乍暖还寒时候&#xff0c;狂风乍起。小可可裹紧了单薄的外衣&#xff0c;往小雪家中赶去。“今天真不是个出门的时候啊&#xff01;”小可可感叹道。“但是我还有东西要买………...

AVL树的平衡算法的简化问题

AVL树是一种紧凑的二叉查找树。它的每个结点&#xff0c;都有左右子树高度相等&#xff0c;或者只相差1这样的特性。文章https://blog.csdn.net/aaasssdddd96/article/details/106291144给出了一个例子。 为了便于讨论&#xff0c;这里对AVL树的结点平衡情况定义2个名称&#…...

NFS实验配置笔记

NFS NFS服务 nfs&#xff0c;最早是Sun这家公司所发展出来的&#xff0c;它最大的功能就是可以透过网络&#xff0c;让不同的机器&#xff0c;不同的操作系统&#xff0c;进行实现文档的共享。所以你可以简单的将他看做是文件服务器。 实验准备 ①先准备一个服务器端的操作…...

C盘清理技巧分享:释放空间,提升电脑性能

目录 1. 引言 2. C盘空间不足的影响 3. C盘清理的必要性 4. C盘清理的具体技巧 4.1 删除临时文件 4.2 清理系统还原点 4.3 卸载不必要的程序 4.4 清理下载文件夹 4.5 移动大文件到其他盘 4.6 清理系统缓存 4.7 使用磁盘清理工具 4.8 清理Windows更新文件 4.9 禁用…...

【云馨AI-大模型】RAGFlow功能预览:Dify接入外部知识库RAGFlow指南

介绍 Dify介绍 开源的 LLM 应用开发平台。提供从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等能力&#xff0c;轻松构建和运营生成式 AI 原生应用。比 LangChain 更易用。官网&#xff1a;https://dify.ai/zh RAGFlow介绍 RAGFlow 是一款基于深度文档理解构建的…...

大模型学习笔记------Llama 3模型架构之旋转编码(RoPE)

大模型学习笔记------Llama 3模型架构之旋转编码&#xff08;RoPE&#xff09; 1、位置编码简介1.1 绝对位置编码1.2 相对位置编码 2、旋转编码&#xff08;RoPE&#xff09;2.1 基本概念---旋转矩阵2.2 RoPE计算原理2.2.1 绝对位置编码2.2.2 相对位置编码 3、旋转编码&#xf…...

Anthropic 的模型

Anthropic 的模型&#xff08;特别是 Claude 系列&#xff09;之所以在性能和推理能力上表现强劲&#xff0c;可以从技术设计、研究理念、训练方法以及应用优化等多个方面进行详细分析。以下是基于当前信息&#xff08;截至 2025 年 3 月 13 日&#xff09;和行业趋势的深入剖析…...

初探大模型开发:使用 LangChain 和 DeepSeek 构建简单 Demo

最近&#xff0c;我开始接触大模型开发&#xff0c;并尝试使用 LangChain 和 DeepSeek 构建了一个简单的 Demo。通过这个 Demo&#xff0c;我不仅加深了对大模型的理解&#xff0c;还体验到了 LangChain 和 DeepSeek 的强大功能。下面&#xff0c;我将分享我的开发过程以及一些…...

FPGA初级项目10——基于SPI的DAC芯片进行数模转换

FPGA初级项目10——基于SPI的DAC芯片进行数模转换 DAC芯片介绍 DAC 芯片&#xff08;数字模拟转换器&#xff09;是一种将数字信号转换为连续模拟信号&#xff08;如电压或电流&#xff09;的集成电路&#xff0c;广泛应用于电子系统中&#xff0c;连接数字世界与模拟世界。 …...

【论文解读】Contrastive Learning for Compact Single Image Dehazing(AECR-Net)

文章目录 问题创新网络主要贡献Autoencoder-like Dehazing NetworkAdaptive Mixup for Feature PreservingDynamic Feature Enhancement1. 可变形卷积的使用2. 扩展感受野3. 减少网格伪影4. 融合空间结构信息 Contrastive Regularization1. 核心思想2. 正样本对和负样本对的构建…...

unity基础——线段与拖尾

1、LineRenderer&#xff08;线段渲染器&#xff09; 为空物体加上组件添加材质 选择默认线段的材质 Default—Line Color&#xff1a;可以修改颜色Corner Vertices&#xff1a;角顶点 圆滑度 End Cap Vertices&#xff1a;边缘顶点 线段编辑 1、可以移动线段点的位置&#xf…...

【服务器知识】Nginx路由匹配规则说明

Nginx路由匹配规则说明 **一、Nginx路由匹配核心机制****二、匹配规则语法详解**1. **精确匹配 ()**2. **前缀匹配 (^~ 或 /)**3. **正则匹配 (~ 或 ~*)**4. **通配符匹配 (*)** **三、路由匹配优先级顺序****四、高级路由技巧**1. **条件判断 (if语句)**2. **路径重写 (rewrit…...

Python----数据可视化(Pyecharts三:绘图二:涟漪散点图,K线图,漏斗图,雷达图,词云图,地图,柱状图折线图组合,时间线轮廓图)

1、涟漪特效散点图 from pyecharts.globals import SymbolType from pyecharts.charts import EffectScatter from pyecharts.faker import Faker from pyecharts import options as opts from pyecharts.globals import ThemeType # 绘制图表 es (EffectScatter(init_optsop…...

机器学习中的梯度下降是什么意思?

梯度下降&#xff08;Gradient Descent&#xff09;是机器学习中一种常用的优化算法&#xff0c;用于最小化损失函数&#xff08;Loss Function&#xff09;。通过迭代调整模型参数&#xff0c;梯度下降帮助模型逐步逼近最优解&#xff0c;从而提升模型的性能。 1.核心思想 梯…...

C语言中的字符串与数组的关系

在C语言中,字符串和数组之间有着紧密的关系。理解它们的区别和联系对于编写高效且可靠的代码至关重要。在本篇博文中,我们将详细分析字符串和数组在C语言中的概念、它们的关系以及如何在编程中应用它们。 一、字符串与数组的基础知识 1.1 数组概念 在C语言中,数组是一组相…...

Ubuntu 18,04 LTS 通过APT安装mips64el的交叉编译器。

安装 g-5v的版本&#xff1a; sudo apt update sudo apt install g-5-mips64el-linux-gnuabi64 How to Install g-5-mips64el-linux-gnuabi64 in Ubuntu 18.04 安装 gcc/g-7v的版本&#xff1a; sudo apt-get install gcc-mips64el-linux-gnu* g-mips64el-linux-gnu* -y 安装…...

MySQL 衍生表(Derived Tables)

在SQL的查询语句select …. from …中&#xff0c;跟在from子句后面的通常是一张拥有定义的实体表&#xff0c;而有的时候我们会用子查询来扮演实体表的角色&#xff0c;这个在from子句中的子查询会返回一个结果集&#xff0c;这个结果集可以像普通的实体表一样查询、连接&…...

C++ vector 核心知识:常用操作与示例详解

在C编程中&#xff0c;vector 是标准模板库&#xff08;STL&#xff09;中最常用的容器之一。它以其动态数组的特性、高效的尾部操作和便捷的随机访问能力&#xff0c;成为处理动态数据的首选工具。无论是初学者还是经验丰富的开发者&#xff0c;掌握 vector 的使用方法和性能优…...

不同开发语言对字符串的操作

一、字符串的访问 Objective-C: 使用 characterAtIndex: 方法访问字符。 NSString *str "Hello, World!"; unichar character [str characterAtIndex:0]; // 访问第一个字符 H NSLog("%C", character); // 输出: H NSString 内部存储的是 UTF-16 编…...

Qt从入门到入土(十) -数据库操作--SQLITE

认识 数据库是用于存储、管理和检索数据的系统化集合。它是一种按照特定结构组织数据的存储方式&#xff0c;通过软件&#xff08;数据库管理系统&#xff0c;DBMS&#xff09;来实现数据的高效存储、查询、更新和管理。通过文件存储数据适用于少量的数据&#xff0c;而当拥有…...

硬件驱动——51单片机:独立按键、中断、定时器/计数器

目录 一、独立按键 1.原理 2.封装函数 3.按键控制点灯 数码管 二、中断 1.原理 2.步骤 3.中断寄存器IE 4.控制寄存器TCON 5.打开外部中断0和1 三、定时器/计数器 1.原理 2.控制寄存器TCON 3.工作模式寄存器TMOD 4.按键控制频率的动态闪烁 一、独立按键 1…...

pgsql创建新用户并赋只读权限

在 PostgreSQL 中&#xff0c;为新用户赋予只读权限的步骤如下&#xff1a; —### 1. 创建新用户首先&#xff0c;创建一个新用户&#xff08;角色&#xff09;&#xff0c;并设置密码&#xff1a;sqlCREATE ROLE 用户名 WITH LOGIN PASSWORD 密码;例如&#xff1a;sqlCREATE R…...

【量化策略】动量突破策略

【量化策略】动量突破策略 &#x1f680;量化软件开通 &#x1f680;量化实战教程 技术背景与应用场景 动量突破策略是一种基于市场趋势的量化交易策略&#xff0c;它通过识别和利用资产价格的持续上升或下降趋势来获取利润。这种策略特别适用于那些价格波动较大、趋势明显…...

QT编程之QGIS

一、QGIS介绍 Quantum GIS&#xff08;QGIS&#xff09;是开源地理信息系统桌面软件&#xff0c;使用GNU&#xff08;General Public License&#xff09;授权&#xff0c; 属于 Open Source eospatial Foundation&#xff08; OSGeo &#xff09;的官方计划。在 GNU 授权下&am…...

LangChain-chatchat 0.3.x入门级教程

前言 一种利用 langchain 思想实现的基于本地知识库的问答应用&#xff0c;目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。该项目支持市面上主流的开源 LLM、 Embedding 模型与向量数据库&#xff0c;可实现全部使用开源模型离线私有部署。…...

Vi/Vim命令详解:高效文本编辑的利器

Vi/Vim命令详解&#xff1a;高效文本编辑的利器 Vi和Vim是Unix/Linux系统中极为流行的文本编辑器&#xff0c;它们以其强大的功能和高效的操作方式赢得了广大用户的喜爱。无论是对于程序员、系统管理员还是普通用户&#xff0c;掌握Vi/Vim的基本命令和高级技巧都是非常有必要的…...

【前端三剑客】万字总结JavaScript

一、初识JavaScript 1.1 JavaScript 的作用 表单动态校验&#xff08;密码强度检测&#xff09; &#xff08; JS 产生最初的目的 &#xff09;网页特效服务端开发(Node.js)桌面程序(Electron)App(Cordova)控制硬件-物联网(Ruff)游戏开发(cocos2d-js) 1.2 HTML/CSS/JS 的关系…...

MySQL | MySQL表的增删改查(CRUD)

目录 前言&#xff1a;什么是 CRUD ?一、Creat 新增1.1 语法1.2 示例1.2.1 单行数据全列插入1.2.2 单行数据指定列插入1.2.3 多行数据指定列插入 二、Retrieve 检索2.1 语法2.2 示例2.2.1 全列查询2.2.2 指定列查询2.2.3 查询字段为表达式2.2.4 结果去重查询2.2.5 where条件查…...

【愚公系列】《高效使用DeepSeek》003-DeepSeek文档处理和其他顶级 AI模型的区别

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...

OSC32IN与OSC32OUT对于无源晶振而言有区别吗?

OSC32IN与OSC32OUT对于无源晶振而言有区别吗&#xff1f; 答&#xff1a;没有区别。对晶振本身而言&#xff0c;两个频率管脚反接也是一样的。 如下图所示&#xff1a; 使用示波器连接晶振的两个引脚&#xff0c;并观察波形可以帮助确定输入和输出端口。 当晶振工作正常时&…...

究竟什么是虚拟同步机???虚拟同步机巨简单理解

1同步发电机 1.1同步发电机工作原理 同步发电机定子铁芯的内圆均匀分布着定子槽,槽内按一定规律嵌放着对称的三相绕组U1-U2、V1-V2、W1-W2,如图1所示。 图1 同步发电机的结构原理图 工作原理: 转子铁芯上装有制成一定形状的成对磁极,磁极上绕有励磁绕组。励磁绕组上通直流…...

ZVA-Z90,罗德与施瓦茨毫米波变换器

罗德与施瓦茨 ZVA-Z90毫米波变换器​ 商品品牌&#xff1a;R&S/罗德与施瓦茨 商品型号&#xff1a;ZVA-Z90 商品名称&#xff1a;毫米波变换器 产品简介: ZVA-Z 毫米波变换器 简介 R&SZVA-Zxx 毫米波变换器支持在 V、E、W、F、D、G、J 以及 Y 频段内的毫米波测量…...

TCP/IP 协议精讲-精华总结版本

序言 本文旨在介绍一下TCP/IP涉及得所有基础知识&#xff0c;为大家从宏观上俯瞰TCP/IP提供一个基石&#xff0c;文档属于《TCP/IP图解&#xff08;第五版&#xff09;》的精简版本。 专业术语 缩写 全称 WAN Wide area network广域网 LAN Local area network局域网 TC…...

电脑内存不足怎么办?

常规解决方法盘点 关闭后台程序&#xff1a;按下【Ctrl Shift Esc】组合键打开任务管理器&#xff0c;在 “进程” 选项卡里&#xff0c;把当前不用的程序统统 “结束任务” &#xff0c;像那些自动更新的软件、常驻后台的播放器&#xff0c;关了能释放不少内存。比如音乐软…...

PTP协议赋能高精度时间同步网络

什么是PTP&#xff1f; PTP&#xff08;精确时间协议&#xff0c;Precision Time Protocol&#xff09; 是一种基于IEEE 1588标准的网络时间同步协议&#xff0c;旨在为分布式系统中的设备提供亚微秒级&#xff08;甚至纳秒级&#xff09;的高精度时钟同步。其核心目标是通过消…...

【redis】string应用场景:缓存功能和计数功能

文章目录 缓存功能实现思路存在的问题伪代码实现 记数功能实现思路统计伪代码实现 缓存功能 实现思路 整体的思路&#xff1a; 应用服务器访问数据的时候&#xff0c;先查询 Redis 如果 Redis 上数据存在了&#xff0c;就直接从 Redis 读取数据交给应用服务器&#xff0c;不继…...

oracle中OS BLOCK的含义

在Oracle数据库中&#xff0c;OS BLOCK&#xff08;操作系统数据块&#xff09;是指操作系统层面上的数据块&#xff0c;它与Oracle数据库内部的逻辑存储单元BLOCK&#xff08;数据块&#xff09;有所区别但密切相关。以下是对OS BLOCK的详细解释&#xff1a; 定义与概念 OS BL…...