GitLab的安装和使用

news2024/12/22 22:39:08

1.GitLab

环境说明

系统版本 CentOS 7.2 x86_64

软件版本 gitlab-ce-10.8.4

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用。

1.1 Gitlab安装

Gitlab的rpm包集成了它需要的软件,简化了安装步骤,所以直接安装rpm包即可,rpm包的获取从官方网站或者国内镜像源(如:清华Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror)获取,gitlab又分为社区版和企业版(收费),这里部署的是社区版本10.8.4

[root@gitlab ~]# mkdir -p /service/tools   #在父目录新建路径

[root@gitlab ~]# cd /service/tools/

[root@gitlab tools]# yum localinstall -y gitlab-ce-10.8.4-ce.0.el7.x86_64.rpm            #安装下载好的rpm包
或者
[root@gitlab ~]# rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.8.4-ce.0.el7.x86_64.rpm        #执行rpm -ivh 在线安装

这里使用本地安装

安装成功,但是需要配置,安装完成后出现上面的提示,按照提示修改配置文件中的url地址为本地服务器的地址

[root@gitlab tools]# vim /etc/gitlab/gitlab.rb
external_url 'http://云服务器IP'

[root@gitlab tools]# gitlab-ctl reconfigure        #重新加载配置
可能会稍微慢一些

 

----------------------不汉化的话,Gitlab的配置到此为止--------------------------------------------------------------------------

1.2 汉化

默认的全英文界面对于英文水平低的来讲当然用着很不舒服,于是便需要来一波操作进行汉化,英文好的请自觉忽略 可以不进行该部分操作

[root@gitlab tools]# gitlab-ctl stop        #停止gitlab,进行后面的汉化

[root@gitlab tools]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

10.8.4        #查看版本
或
[root@gitlab tools]# rpm -qa gitlab-ce

gitlab-ce-10.8.4-ce.0.el7.x86_64        #查看版本

[root@gitlab tools]# ll /opt/gitlab/                #相关目录

[root@gitlab tools]# ll /var/opt/gitlab                #相关目录

GitLab中文社区的项目,v7-v8.8是由Larry Li发起的"GitLab中文社区版项目"(Larry Li / GitLab 中文社区版 · GitLab),从v8.9之后由@xhang开始继续汉化项目(xhang / GitLab 中文社区版 · GitLab)

 

[root@gitlab tools]# pwd

/service/tools

[root@gitlab tools]# mkdir /backup

[root@gitlab tools]# cp /opt/gitlab/embedded/service/gitlab-rails/* /backup    #防止汉化失败,备份原文件

[root@gitlab tools]# git clone https://gitlab.com/xhang/gitlab.git        #下载最新的汉化包

 汉化包的版本更新速度不得而知,所以尽量不要安装最新版本的gitlab。如果是要下载老版本的汉化包,需要加上老版本的分支,如果想下载10.0.2,可以运行如下语句

[root@gitlab tools]# git clone https://gitlab.com/xhang/gitlab.git -b v10.0.2-zh

[root@gitlab tools]# ls        #git下来的文件为gitlab

gitlab gitlab-ce-10.8.4-ce.0.el7.x86_64.rpm

[root@gitlab tools]# \cp -rf gitlab/* /opt/gitlab/embedded/service/gitlab-rails/    #拷贝文件

检验汉化

[root@gitlab tools]# gitlab-ctl reconfigure            #加载配置(第一次执行此命令会启动,若只启动执行start)

启动时查看控制台输出,需要等待一段时间,无输出后启动完成,执行free -m命令查看到当前的内存使用情况为

[root@gitlab tools]# free -m

total used free shared buff/cache available

Mem: 2993 2123 156 62 713 597

Swap: 2047 0 2047

[root@gitlab tools]# netstat -lntup

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 127.0.0.1:9100 0.0.0.0:* LISTEN 4319/node_exporter

tcp 0 0 127.0.0.1:9229 0.0.0.0:* LISTEN 4628/gitlab-workhor

tcp 0 0 127.0.0.1:9168 0.0.0.0:* LISTEN 4659/ruby

tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 4191/unicorn master

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4223/nginx: master

tcp 0 0 127.0.0.1:8082 0.0.0.0:* LISTEN 4196/sidekiq 5.0.5

tcp 0 0 127.0.0.1:9236 0.0.0.0:* LISTEN 4642/gitaly

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1439/sshd

tcp 0 0 0.0.0.0:8060 0.0.0.0:* LISTEN 4223/nginx: master

tcp 0 0 0.0.0.0:6783 0.0.0.0:* LISTEN 4696/alertmanager

tcp 0 0 127.0.0.1:9121 0.0.0.0:* LISTEN 4425/redis_exporter

tcp 0 0 127.0.0.1:9090 0.0.0.0:* LISTEN 4681/prometheus

tcp 0 0 127.0.0.1:9187 0.0.0.0:* LISTEN 4710/postgres_expor

tcp 0 0 127.0.0.1:9093 0.0.0.0:* LISTEN 4696/alertmanager

tcp6 0 0 ::1:9168 :::* LISTEN 4659/ruby

tcp6 0 0 :::22 :::* LISTEN 1439/sshd

2 GitLab的使用

2.1 登录的基本操作

GitLab终端常用命令

gitlab-ctl start #启动所有 gitlab 组件;

gitlab-ctl stop #停止所有 gitlab 组件;

gitlab-ctl restart #重启所有 gitlab 组件;

gitlab-ctl status #查看服务状态;

gitlab-ctl reconfigure #启动服务;

vim /etc/gitlab/gitlab.rb #修改默认的配置文件;

gitlab-rake gitlab:check SANITIZE=true --trace #检查gitlab;

gitlab-ctl tail #查看日志;

修改密码后进行登录,登录的用户名为root

首先查看云服务的安全组当中,8080端口是否开放

然后查看防火墙是否已经关闭

firewall-cmd --state 检查防火墙状态

systemctl stop firewalld.service 停止防火墙

查看端口占用情况

修改web端口(如果端口占用)

如果80和8080端口被占用可以修改

[root@gitlab tools]# vim /var/opt/gitlab/gitlab-rails/etc/unicorn.rb

listen "127.0.0.1:8080", :tcp_nopush => true

修改nginx端口

[root@gitlab tools]# vim /var/opt/gitlab/nginx/conf/gitlab-http.conf

server {

listen *:80;

修改Prometheus端口

[root@gitlab tools]# vim /etc/gitlab/gitlab.rb

external_url 'http://10.0.0.5:port' #根据需要修改端口

修改后需要重新加载配置并启动

2.2 使用方法

重置密码

登录:默认用户名是root,密码使用刚刚重置过的。

创建空白项目

选择项目路径,输入项目名称,项目描述,选择项目等级(私人的,内部的,公开的),

我们能看到Gitlab给我们的使用当前项目的教程。学过git和GitHub,想必我这些已经都会了。

我们发现上面有一行黄色的提示,要求我们配置ssh

首先生成公钥:

[root@gitlab-client ~]# ssh-keygen

[root@gitlab-client ~]# cat .ssh/id_rsa.pub         #查看公钥

 

将上面的公钥文件复制到gitlab中

我们在远程机器生成私钥

生成新的SSH密钥: ssh-keygen -t rsa -C "your_email@address"

此命令将提示您用于存储密钥对和密码的位置和文件名。当提示输入位置和文件名时,只需按Enter键即可使用默认值。如果使用其他名称,则不会自动使用该密钥。

在C盘下 .ssh 文件夹中会生成 id_rsa 和 id_rsa.pub 两个文件,其中 id_rsa.pub 里面是以ssh-rsa开头并以您的用户名和主机结尾的完整密钥。将密钥复制粘贴到 profile settings中 SSH keys 选项卡下,add an ssh key ,保存。

步骤:

在window系统打开命令行输入

ssh-keygen -t rsa -C "your_email@address"

Enter file in which to save the key (/root/.ssh/id_rsa):

在使用ssh-keygen命令生成 RSA 密钥对时,提示你输入保存密钥的文件路径和文件名。

默认的路径是/root/.ssh/id_rsa,如果你想使用默认路径,直接按回车键即可。

如果你想指定其他路径和文件名,可以输入你想要的完整路径和文件名,例如/home/user/.ssh/my_rsa_key。需要注意的是,确保你指定的路径存在且你有写入权限,否则可能会导致生成密钥失败。

另外,如果你输入的文件名已经存在,ssh-keygen会提示你是否覆盖该文件,根据你的需求进行选择即可

Enter passphrase

提示你输入一个密码短语(也叫口令、密码)来保护你的私钥。

打开id_rsa.pub,把所有内容复制

到Gitlab中将密钥复制粘贴到 profile settings中 SSH keys 选项卡下,add an ssh key ,保存。跟添加公钥的步骤完全一致

随机我们配置本地用户信息和本地库创建本地git库

rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit3
$ git init
Initialized empty Git repository in D:/testGit3/.git/

rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit3 (master)
$ git config --local user.name 'zhangsan'

rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit3 (master)
$ git config --local user.mail 'zhangsan@126.com'

rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit3 (master)
$ git remote add origin git@192.168.0.108:root/spring_src.git
rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit3 (master)
$ echo 'test' > test.txt
rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit3 (master)
$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        test.txt

nothing added to commit but untracked files present (use "git add" to track)

rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit3 (master)
$ git add .
warning: LF will be replaced by CRLF in test.txt.
The file will have its original line endings in your working directory.

rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit3 (master)
$ git commit -m 'add a test file'
[master (root-commit) 666da41] add a test file
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt
rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit3 (master)
$ git push -u origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 216 bytes | 216.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To 192.168.0.108:root/spring_src.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

 

 

此刻我们可以看到远程仓库里面文件以及推送。

随机我们将Spring源代码上传Gitlab

此时我可以通过另一个git本地库克隆

rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit4
$ git clone git@192.168.0.108:root/spring_src.git
Cloning into 'spring_src'...
remote: Counting objects: 9622, done.
remote: Compressing objects: 100% (6230/6230), done.
remote: Total 9622 (delta 2851), reused 9619 (delta 2851)
Receiving objects: 100% (9622/9622), 13.57 MiB | 14.34 MiB/s, done.
Resolving deltas: 100% (2851/2851), done.
Checking out files: 100% (7948/7948), done.

rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit4
$ ll
total 12
drwxr-xr-x 1 rlsl180506 197121 0 2月  19 11:26 spring_src/

rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit4
$ cd spring_src/

rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit4/spring_src (master)
$ git config --local user.name 'lisi'

rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit4/spring_src (master)
$ git config --local user.mail 'lisi@126.com'

rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit4/spring_src (master)
$ git config --local -l
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
remote.origin.url=git@192.168.0.108:root/spring_src.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
user.name=lisi
user.mail=lisi@126.com

rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit4/spring_src (master)
$ ll
total 70
-rw-r--r-- 1 rlsl180506 197121 11118 2月  19 11:26 build.gradle
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 buildSrc/
-rw-r--r-- 1 rlsl180506 197121  2395 2月  19 11:26 CODE_OF_CONDUCT.adoc
-rw-r--r-- 1 rlsl180506 197121  6308 2月  19 11:26 CONTRIBUTING.md
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 gradle/
-rw-r--r-- 1 rlsl180506 197121    23 2月  19 11:26 gradle.properties
-rwxr-xr-x 1 rlsl180506 197121  5533 2月  19 11:26 gradlew*
-rw-r--r-- 1 rlsl180506 197121  2349 2月  19 11:26 gradlew.bat
-rw-r--r-- 1 rlsl180506 197121  4529 2月  19 11:26 import-into-eclipse.bat
-rw-r--r-- 1 rlsl180506 197121  4078 2月  19 11:26 import-into-eclipse.sh
-rw-r--r-- 1 rlsl180506 197121  1868 2月  19 11:26 import-into-idea.md
-rw-r--r-- 1 rlsl180506 197121  2290 2月  19 11:26 README.md
-rw-r--r-- 1 rlsl180506 197121  1154 2月  19 11:26 settings.gradle
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-aop/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-aspects/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-beans/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-context/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-context-indexer/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-context-support/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-core/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-expression/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-framework-bom/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-instrument/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-jcl/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-jdbc/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-jms/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-messaging/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-orm/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-oxm/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-test/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-tx/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-web/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-webflux/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-webmvc/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 spring-websocket/
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 src/
-rw-r--r-- 1 rlsl180506 197121     6 2月  19 11:26 test.txt
drwxr-xr-x 1 rlsl180506 197121     0 2月  19 11:26 tx-spring-teach/

rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit4/spring_src (master)
$ vi test.txt

rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit4/spring_src (master)
$ git add .

rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit4/spring_src (master)
$ git commit -m 'aa'
[master 1c8f28d] aa
 1 file changed, 1 insertion(+)

rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit4/spring_src (master)
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 250 bytes | 250.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To 192.168.0.108:root/spring_src.git
   bf028b3..1c8f28d  master -> master

rlsl180506@MACHENI-B936LIA MINGW64 /d/testGit4/spring_src (master)

 

 

 

刷新Gitlab我们可以看到变化。

 

如何完全卸载虚拟机当中的Gitlab

请参考这位博主大大的作品

centos7完全卸载GitLab_centos7 gitlab 卸载-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)综述

定义 开放词汇目标检测&#xff08;Open-Vocabulary Object Detection, OVOD&#xff09;是一种目标检测任务&#xff0c;旨在检测和识别那些未在训练集中明确标注的物体类别。传统的目标检测模型通常只能识别有限数量的预定义类别&#xff0c;而OVOD模型则具有识别“开放词汇…

JaxaFx学习(三)

目录&#xff1a; &#xff08;1&#xff09;JavaFx MVVM架构实现 &#xff08;2&#xff09;javaFX知识点 &#xff08;3&#xff09;JavaFx的MVC架构 &#xff08;4&#xff09;JavaFx事件处理机制 &#xff08;5&#xff09;多窗体编程 &#xff08;6&#xff09;数据…

【C++】小乐乐求和问题的高效求解与算法对比分析

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;问题描述与数学模型1.1 题目概述1.2 输入输出要求1.3 数学建模 &#x1f4af;方法一&#xff1a;朴素循环求和法2.1 实现原理2.2 分析与问题2.3 改进方案2.4 性能瓶颈与结论…

基于Spring Boot的找律师系统

一、系统背景与意义 在现代社会&#xff0c;法律服务的需求日益增长&#xff0c;但传统寻找律师的方式往往存在信息不透明、选择困难等问题。基于Spring Boot的找律师系统旨在解决这些问题&#xff0c;通过线上平台&#xff0c;用户可以轻松搜索、比较和选择合适的律师&#x…

【Spring】方法注解@Bean,配置类扫描路径

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 引入 一&#xff1a;Bean方法注解 1&#xff1a;方法注解要搭配类注解使用 2&#xff1a;执行结果 …

深度学习0-前置知识

一、背景 AI最大&#xff0c;它的目的是通过让机器模仿人类进而超越人类&#xff1b; ML次之&#xff0c;它是AI的一个分支&#xff0c;是让机器模仿人类的一种方法。开发人员用大量数据和算法“训练”机器&#xff0c;让机器自行学会如何执行任务&#xff0c;它的成功取决于…

前端面试题整理-前端异步编程

1. 进程、线程、协程的区别 在并发编程领域&#xff0c;进程、线程和协程是三个核心概念&#xff0c;它们在资源管理、调度和执行上有着本质的不同。 首先&#xff0c;进程是操作系统进行资源分配和调度的独立单位&#xff08;资源分配基本单位&#xff09;&#xff0c;每个进…

ARM学习(38)多进程多线程之间的通信方式

ARM学习(38)ARM学习(38)多进程多线程之间的通信方式 一、问题背景 笔者在调试模拟器的时候,碰到进程间通信的问题,一个进程在等另外一个进程ready的时候,迟迟等不到,然后通过调试发现,另外一个进程变量已经变化了,但是当前进程变量没变化,需要了解进程间通信的方式…

群晖利用acme.sh自动申请证书并且自动重载证书的问题解决

前言 21年的时候写了一个在群晖&#xff08;黑群晖&#xff09;下利用acme.sh自动申请Let‘s Encrypt的脚本工具 群晖使用acme自动申请Let‘s Encrypt证书脚本&#xff0c;自动申请虽然解决了&#xff0c;但是自动重载一直是一个问题&#xff0c;本人也懒&#xff0c;一想到去…

level2逐笔委托查询接口

沪深逐笔委托队列查询 前置步骤 分配数据库服务器 查询模板 以下是沪深委托队列查询的请求模板&#xff1a; http://<数据库服务器>/sql?modeorder_book&code<股票代码>&offset<offset>&token<token>查询参数说明 参数名类型说明mo…

delve调试环境搭建—golang

原文地址&#xff1a;delve调试环境搭建—golang – 无敌牛 欢迎参观我的个人博客&#xff1a;无敌牛 – 技术/著作/典籍/分享等 由于平时不用 IDE 开发环境&#xff0c;习惯在 linux终端vim 环境下开发&#xff0c;所以找了golang的调试工具&#xff0c;delve类似gdb的调试界…

PC寄存器(Program Counter Register) jvm

在JVM&#xff08;Java虚拟机&#xff09;中&#xff0c;PC寄存器&#xff08;Program Counter Register&#xff09;扮演着至关重要的角色&#xff0c;它是JVM执行引擎的核心组成部分之一。以下是PC寄存器在JVM中的具体角色和职责&#xff1a; 指令执行指针&#xff1a; PC寄存…

线性分类器(KNN,SVM损失,交叉熵损失,softmax)

KNN 工作机制 k-近邻算法的工作机制可以分为两个主要阶段&#xff1a;训练阶段和预测阶段。 训练阶段 在训练阶段&#xff0c;k-近邻算法并不进行显式的模型训练&#xff0c;而是简单地存储训练数据集。每个样本由特征向量和对应的标签组成。此阶段的主要任务是准备好数据&…

重拾设计模式--适配器模式

文章目录 适配器模式&#xff08;Adapter Pattern&#xff09;概述适配器模式UML图适配器模式的结构目标接口&#xff08;Target&#xff09;&#xff1a;适配器&#xff08;Adapter&#xff09;&#xff1a;被适配者&#xff08;Adaptee&#xff09;&#xff1a; 作用&#xf…

StarRocks:存算一体模式部署

目录 一、StarRocks 简介 二、StarRocks 架构 2.1 存算一体 2.2 存算分离 三、前期准备 3.1前提条件 3.2 集群规划 3.3 配置环境 3.4 准备部署文件 四、手动部署 4.1 部署FE节点 4.2 部署BE节点 4.3 部署CN节点&#xff08;可选&#xff09; 4.4 FE高可用…

找数字:JAVA

题目描述 试计算在区间1 到n 的所有整数中&#xff0c;数字x&#xff08;0 ≤ x ≤ 9&#xff09;共出现了多少次&#xff1f; 例如&#xff0c;在1到11 中&#xff0c;即在1、2、3、4、5、6、7、8、9、10、11 中&#xff0c;数字1 出现了4 次。 输入描述: 输入共1行&#xf…

AI的使用:结构化提示词

根据自己的使用&#xff0c;不断的完善自己的提示词。并且像程序版本一样管理和迭代自己的提示词&#xff0c;这样才能准确的按照自己的目的去使用AI。而为了更好的管理&#xff0c;我们在一开始使用的时候&#xff0c;就要有一个易于管理的定义&#xff0c;即&#xff1a;结构…

Netcat:网络中的瑞士军刀

免责声明&#xff1a;使用本教程或工具&#xff0c;用户必须遵守所有适用的法律和法规&#xff0c;并且用户应自行承担所有风险和责任。 文章目录 一、引言二、简述三、Netcat功能&#xff1f;四、参数选项五、Netcat 的常见功能六、高级用法多连接处理创建简单的代理 七、Netc…

VS Code Copilot 与 Cursor 对比

选手简介 VS Code Copilot&#xff1a;算是“老牌”编程助手了&#xff0c;虽然Copilot在别的编辑器上也有扩展&#xff0c;不过体验最好的还是VS Code&#xff0c;毕竟都是微软家的所以功能集成更好一些&#xff1b;主要提供的是Complete和Chat能力&#xff0c;也就是代码补全…

28、基于springboot的房屋租赁系统

房屋是人类生活栖息的重要场所&#xff0c;随着城市中的流动人口的增多&#xff0c;人们对房屋租赁需求越来越高&#xff0c;为满足用户查询房屋、预约看房、房屋租赁的需求&#xff0c;特开发了本基于Spring Boot的房屋租赁系统。 本文重点阐述了房屋租赁系统的开发过程&…