代码管理系统简介与部署(Introduction and Deployment of Code Management System)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

推荐:Linux运维老纪的首页,持续学习,不断总结,共同进步,活到老学到老
导航剑指大厂系列:全面总结 运维核心技术:系统基础、数据库、网路技术、系统安全、自动化运维、容器技术、监控工具、脚本编程、云服务等。
常用运维工具系列:常用的运维开发工具, zabbix、nagios、docker、k8s、puppet、ansible等
数据库系列:详细总结了常用数据库 mysql、Redis、MongoDB、oracle 技术点,以及工作中遇到的 mysql 问题等
懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

代码管理系统简介与部署
技能目标:
- 了解各软件版本控制系统
- 掌握各软件版本控制系统的安装与部署

1.1 案例分析

1.1.1 案例概述

在开发一个项目时,如果只有几十行代码或几百行代码时维护还算简单,但是当代码数
量达到一定程度或两三个人共同开发一个项目时,就很容易会出现代码混乱、冲突、排错难
等问题。当代码编写完成以后发现整个项目运行不了时,提交的代码也无法确认到责任人,
导致维护项目时需要花费数倍的时间。为解决上述问题,版本控制系统应运而生。
版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管
理,是软件配置管理的核心思想之一。

1.1.2 案例前置知识点

1. 常见的版本控制系统介绍

Git 是一个开源的分布式版本控制系统,用于有效、高速的处理版本控制,从很小到非
常大的项目都支持。一个原始 Git 版本仓库,可以让其他主机克隆这个原始版本仓库,从而
使得一个 Git 版本仓库可以同时分布到不同的主机上,并且每台主机的版本库都是一样的,
并没有主次之分,极大的保证了数据的安全性,并使得用户能够自主选择 Git 服务器推送文
件。作为一个分布式的版本控制系统,在 Git 中并不存在主库这样的概念。每一份复制出的
库都可以独立使用,任何两个库之间的不一致之处都可以进行合并。
Git Linus Torvalds 为了帮助管理 Linux 内核开发而设计的一个开放源码的版本控制
系统,是作为一种过渡方案用来替代 BitKeeperBitKeeper 一直是 Linux 内核开发人员在
全球使用的主要源代码工具。因为开放源码社区中有些人认为 BitKeeper 的许可证并不适合
开放源码社区的工作,所以 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管
最初研发 Git 的目的是为了辅助 Linux 内核开发,但目前在很多其他自由软件项目中也使用
Git
GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本
库格式进行托管,故名 GitHubGitHub 可以提供给用户空间创建 Git 仓储,保存用户的一
些数据文档或者代码等。GitHub 作为开源代码库以及版本控制系统,目前拥有 140 多万开
发者用户。随着越来越多的应用程序转移到了云上,GitHub 已经成为了管理软件开发以及
发现已有代码的首选方法。GitHub 可以托管各种 Git 库,并提供一个 Web 界面,但与其它
SourceForge Google Code 这样的服务不同,GitHub 的独特卖点在于从另外一个项
目进行分支的简易性。
GitLab 是一个基于 Git 的项目管理软件,用于仓库管理系统的开源项目。使用 Git 作为代
码管理工具,并在此基础上搭建起来 Web 服务。GitGitlabGithub 都是基于 Git 的,可
以说是 Git 的衍生品。
Subversion 英文全称为 Apache Subversion(简称 SVN),是一个开放源代码的版本
控制系统。相较于 RCSCVSSubversion 采用了分支管理系统,其设计目标就是取代
CVS。互联网上很多版本控制服务都是从 CVS 转移到 Subversion 的。

2. Git、Subversion 功能特性

Git 不仅是一款开源的分布式版本控制系统,而且有其独特的功能特性。例如大多数的
分布式版本控制系统只会记录每次文件的变化,它们只关心文件的内容变化差异,而 Git
是关注于文件数据整体的变化,直接会将文件提交时的数据保存成快照,而非仅记录差异内
容,并且使用 SHA-1 加密算法保证数据的完整性。从一般开发者的角度来看,Git 有以下功
能:
克隆数据库版本:从服务器上克隆数据库(包括代码和版本信息)到本机上;
提交代码:在本机自己创建的分支上提交代码;
合并分支:在本机上合并分支;
拉取合并分支:新建一个分支,把服务器上最新版的代码 Fetch 下来,然后跟自己
的主分支合并;
代码冲突解决:一般开发者之间解决冲突的方法是,开发者可以使用 pull 命令拉
取代码,解决冲突,解决完冲突之后再向主开发者提交补丁。
Subversion 属于传统的版本控制系统,以下是 Subversion 功能特性:
统一的版本号:SVN 在任何一次提交时,都会对所有文件增加一个新的版本号,
版本号相同的文件才能构成一个项目软件版本;
原子提交:一次提交不管是单个还是多个文件,都是作为一个整体提交的。在这当
中发生的意外例如传输中断,不会引起数据库的不完整和数据损坏;
版本记录:重命名、复制、删除文件等动作都保存在版本历史记录当中。对于二进
制文件,使用了节省空间的保存方法(简单的理解,就是只保存和上一版本不同之
处)。当目录也有版本历史或者整个目录被移动或者复制,能够保留全部版本记录;
开销:分支的开销非常小;
元数据管理:每个目录或文件都可以定义属性(Property),它是一些隐藏的键值
对,用户可以自定义属性内容,而且属性和文件内容一样在版本控制范围内;
格式支持:支持 FSFS Berkeley DB 两种资料库格式。

1.1.3 案例环境

1. 本案例环境

本案例环境如表 1-1 所示。
1-1 代码版本控制系统环境
主机操作系统主机名/IP 地址 主要软件及版本
服务器CentOS 7.3-x86_64master/192.168.9.246Git Gitlab SVN
客户端CentOS 7.3-x86_64client/192.168.9.247Git

2. 案例需求

安装部署 GitGitlabSVN 等几种常见的代码管理控制系统。

3. 案例实现思路

1)准备案例实现环境。
2)部署 Git 版本控制系统。
3)部署 Gitlab 版本控制系统。
4)部署 Subversion 版本控制系统。

1.2 案例实施1.2.1 部署 Git 服务器

1. 系统环境准备

//两台服务器均执行如下命令
[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld
[root@master ~]# systemctl stop NetworkManager
[root@master ~]# systemctl disable NetworkManager
[root@master ~]# sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config
[root@master ~]# setenforce 0

2. 使用 YUM 安装 Git

[root@master ~]# yum install -y git //两台服务器都需要安装

创建 Git 版本仓库,一般要以.git 为后缀。
[root@master ~]# mkdir linuxprobe.git
[root@master ~]# useradd git
[root@master ~]# passwd git
更改用户 git 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@master ~]# chown -Rf git:git linuxprobe.git
初始化 Git 版本仓库。
[root@master ~]# cd linuxprobe.git
[root@master linuxprobe.git]# git --bare init
初始化空的 Git 版本库于 /root/linuxprobe.git/
此时,Git 服务器已经部署好,但用户还不能向服务器推送数据,也不能克隆 Git 版本
仓库。要想实现上述功能,需要在服务器上开放至少一种支持 Git 的协议,比如:
HTTP/HTTPS/SSH 等。现在使用最多的就是 HTTPS SSH,本案例中使用 SSH 协议。
切换至 Git 客户机来生成 SSH 密钥。
[root@client ~]# ssh-keygen
//一路回车
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
f3:35:60:41:6a:ef:85:da:fe:b2:39:f7:50:14:47:21 root@client
The key's randomart image is:
+--[ RSA 2048]----+
|
.o E.o+|
|
. . .o |
|
o o
. |
|
. o o .
|
|
S o + . |
|
* o o
|
|
. + .
|
|
.o...
|
|
+*... |
+-----------------+
[root@client ~]# ssh-copy-id 192.168.9.246 //将客户机的公钥传递给 Git 服务器
The authenticity of host '192.168.9.246 (192.168.9.246)' can't be established.
ECDSA key fingerprint is ca:0f:4c:c3:f5:2a:8e:30:94:77:b1:44:00:8e:84:fd.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already
installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install
the new keys
root@192.168.9.246's password:
Number of key(s) added: 1
Now try logging into the machine, with:
"ssh '192.168.9.246'"
and check to make sure that only the key(s) you wanted were added.
这样,可以从 Git 服务器中克隆版本仓库(此时目录内没有文件是正常的)。
[root@client ~]# git clone root@192.168.9.246:/root/linuxprobe.git
正克隆到 'linuxprobe'...
warning: 您似乎克隆了一个空版本库。
配置用户名称和电子邮件地址。每次 Git 提交时都会引用这两条信息,记录提交了文
件的用户,并且会随更新内容一起被永久纳入历史记录。
[root@client ~]# git config --global user.name "Zhan San"
[root@client ~]# git config --global user.email root@linuxprobe.com
设置 vim 为默认的文本编辑器。
[root@client ~]# git config --global core.editor vim查看 Git 工作环境信息。
[root@client ~]# git config --list
user.name=Zhan San
user.email=root@linuxprobe.com
core.editor=vim
Git 只能追踪类似于 txt 文件、网页、程序源码等文本文件内容的变化,下面模拟代码
提交过程。
[root@client ~]# cd linuxprobe /
[root@client linuxprobe]# echo "Initialization Git repository" > readme.txt
将该文件添加到暂存区。
[root@client linuxprobe]# git add readme.txt
添加到暂存区后再次修改文件的内容。
[root@client linuxprobe]# echo "Something not important" >> readme.txt
将暂存区的文件提交到 Git 版本仓库,命令格式为:git commit -m "提交说明"
[root@client linuxprobe]# git commit -m "add the readme file"
[master(根提交) c7824b8] add the readme file
1 file changed, 1 insertion(+)
create mode 100644 readme.txt
查看当前工作目录的状态。
[root@client linuxprobe]# git status
# 位于分支 master
# 尚未暂存以备提交的变更:
#
(使用 "git add <file>..." 更新要提交的内容)
#
(使用 "git checkout -- <file>..." 丢弃工作区的改动)
#
#
修改:
readme.txt
#
修改尚未加入提交(使用 "git add" /"git commit -a"
(1)第一次修改提交代码:git 将代码文件提交到本地 Git 版本数据库,此时会在暂存
区生产一个快照版本;
(2)第二次修改提交代码:当再次修改代码时,需要重新提交代码文件到暂存区,此
时还会生产一个快照版本;
(3)提交代码:只有将暂存区的代码文件提交到 Git 版本数据库才能算真正提交。查看当前文件内容与 Git 版本数据库中的差别。
[root@client linuxprobe]# git diff readme.txt
diff --git a/readme.txt b/readme.txt
index cb06697..33d16d0 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1 +1,2 @@
Initialization Git repository
+Something not important
把文件提交到 Git 版本数据库。
[root@client linuxprobe]# git add readme.txt
[root@client linuxprobe]# git commit -m "added a line of words"
[master ebc5069] added a line of words
1 file changed, 1 insertion(+)
再次查看下当前 Git 版本仓库的状态。
[root@client linuxprobe]# git status
# 位于分支 master
无文件要提交,干净的工作区
本次操作还是只将文件提交到了本地的 Git 版本仓库,并没有推送到远程 Git 服务器,
所以需要定义远程的 Git 服务器。
[root@client linuxprobe]# git remote add server root@192.168.9.246:/root/linuxprobe.git
将文件提交到远程 Git 服务器。
[root@client linuxprobe]# git push -u server master
Counting objects: 6, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (6/6), 521 bytes | 0 bytes/s, done.
Total 6 (delta 0), reused 0 (delta 0)
To root@192.168.9.246:/root/linuxprobe.git
* [new branch]
master -> master
分支 master 设置为跟踪来自 server 的远程分支 master
为了验证文件是否推送到远程的 Git 服务,可以换个目录再次克隆一份版本仓库。
[root@client linuxprobe]# mkdir test
[root@client linuxprobe]# cd test/
[root@client test]# git clone root@192.168.9.246:/root/linuxprobe.git
正克隆到 'linuxprobe'...
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
接收对象中: 100% (6/6), done.
[root@client test]# cd linuxprobe/
[root@client linuxprobe]# cat readme.txt //查看该文件是否存在,存在说明克隆成功
Initialization Git repository
Something not important
1.2.2 部署 GitLab 服务器
GitLab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基
础上搭建 Web 服务。建议:服务器内存 4G 以上。
[root@master ~]# vim /etc/yum.repos.d/gitlab-ce.repo
//添加 GitLab
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key
[root@master ~]# yum makecache
[root@master ~]# yum install -y gitlab-ce
[root@master ~]# gitlab-ctl reconfigure //加载配置文件并启动,前提是 80 端口没有被占用
Starting Chef Client, version 13.6.4
resolving cookbooks for run list: ["gitlab"]
Synchronizing Cookbooks:
- postgresql (0.1.0)
......
//省略部分内容
Running handlers:
Running handlers complete
Chef Client finished, 428/613 resources updated in 07 minutes 49 seconds
gitlab Reconfigured!
[root@master ~]# lsof -i:80
COMMAND
PID
USER
FD
TYPE DEVICE SIZE/OFF NODE NAME
nginx
44551
root
7u IPv4 79911
0t0 TCP *:http (LISTEN)
nginx
44552 gitlab-www
7u IPv4 79911
0t0 TCP *:http (LISTEN)
gitlab-ctl 其他命令。
启动:gitlib-ctl start
关闭:gitlab-ctl stop
重启:gitlab-ctl restart
重载配置:gitlab-ctl reconfigure
查看状态:gitlab-ctl status
GitLab 配置文件路径为/etc/gitlab/gitlab.rb,生产环境下可以根据实际需求修改配置,
本章采用默认配置不做修改。
在浏览器中输入 http://服务器 IP 地址,访问 GitLab,如图 1.1 所示。
1.1 Gitlab 登录密码设置页
设置完密码后,使用 root 用户进行登录,如图 1.2 所示。
1.2 root 用户登录登录成功后,便可进入 GitLab 首页,如图 1.3 所示。
1.3 Gitlab 登录首页
点击图 1.3 中的“Create project” 按钮,创建如图 1.4 所示的新项目 kgc-demo
1.4 创建 kgc-demo 项目
在项目创建完成界面中点击“Add Readme”,并在 Readme 文件中添加“It's kgc-demo!”
字段,如图 1.5 所示。
1.5 添加 Readme 文件
在客户机验证。
[root@client ~]# git clone http://192.168.9.246/root/kgc-demo.git
正克隆到 'kgc-demo'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
[root@client ~]# cat kgc-demo/README.md
It's kgc-demo!
1.2.3 部署安装 Subversion
[root@master ~]# yum -y install subversion
//client 也执行此命令,安装 SVN 客户端命令
[root@master ~]# mkdir -p /kgc/svn
[root@master ~]# svnadmin create /kgc/svn
[root@master ~]# cd /kgc/svn/conf
[root@master ~]# vim passwd
kgc-test=123.com
[root@master ~]# vim authz
[/]
kgc-test=rw
修改 svnserve.conf 配置文件。
[root@master conf]# vim svnserve.conf
[general]
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
realm = /kgc/svn
[sasl]
[root@master conf]# svnserve -d -r /kgc/svn
//启动 SVN 即可完成部署
在客户机使用 svn list 命令查看分支。执行 svn list 命令时要求先输入系统密码,再输
SVN 授权的用户名和密码即可查看 SVN 所有分支。
[root@client ~]# svn list svn://192.168.9.246
认证领域: <svn://192.168.9.246:3690> /kgc/svn
“root”的密码:
认证领域: <svn://192.168.9.246:3690> /kgc/svn
用户名: kgc-test
“kgc-test”的密码:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
注意! 你的密码,对于认证域:
<svn://192.168.9.246:3690> /kgc/svn
只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。
你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”“yes”“no”
来避免再次出现此警告。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
保存未加密的密码(yes/no)?yes
在客户端提交代码文件,过程如下所示。
[root@client ~]# svn checkout svn://192.168.9.246
[root@client ~]# mkdir svndemo
[root@client ~]# svn add svndemo
A
svndemo
[root@client ~]# svn commit -m "add svn demo"
正在增加
svndemo
提交后的版本为 1
[root@client ~]# svn list svn://192.168.9.246
svndemo/
[root@client ~]# cd svndemo
[root@client svndemo]# echo "svn test" > test.txt
[root@client svndemo]# svn add test.txt
A
test.txt
[root@client svndemo]# svn commit -m "add txt file."
正在增加
test.txt
传输文件数据.
提交后的版本为 2
[root@client svndemo]# svn list svn://192.168.9.246/svndemo
test.txt至此,SVN 部署完成。

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

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

相关文章

visual prompt tuning和visual instruction tuning

visual prompt tuning&#xff1a;作为一种微调手段&#xff0c;其目的是节省参数量&#xff0c;训练时需要优化的参数量小。 输入&#xff1a;视觉信息image token可学习的prompt token 处理任务&#xff1a;比如常见的分类任务 visual prompt tuning visual instruction tu…

在麒麟操作系统中查看进程运行时间

在麒麟操作系统中查看进程运行时间 1、使用ps命令查看进程运行时间1.1 基本命令结构1.2 示例&#xff1a;查看sshd进程的运行时间 2、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Linux操作系统中&#xff0c;包括麒麟&#xff08…

第L6周:机器学习-随机森林(RF)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目标&#xff1a; 1.什么是随机森林&#xff08;RF&#xff09; 随机森林&#xff08;Random Forest, RF&#xff09;是一种由 决策树 构成的 集成算法 &#…

python绘制3d建筑

import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.mplot3d.art3d import Poly3DCollection# 随机生成建筑块数据 def generate_building_blocks(num_blocks, grid_size100, height_range(5, 50), base_size_range(10, 30)):buildings []for _ in range(…

代码随想录训练营 Day58打卡 图论part08 拓扑排序 dijkstra朴素版 + 堆优化版

代码随想录训练营 Day58打卡 图论part08 一、拓扑排序 例题&#xff1a;卡码117. 软件构建 题目描述 某个大型软件项目的构建系统拥有 N 个文件&#xff0c;文件编号从 0 到 N - 1&#xff0c;在这些文件中&#xff0c;某些文件依赖于其他文件的内容&#xff0c;这意味着如果…

勇于尝试,永远行动 - 《洛克菲勒写给儿子的38封信》读书笔记

两倍速听过好几遍的书&#xff0c;洛克菲勒的思想和志向&#xff0c;配得上他的成就。 “在尝试中寻找突破&#xff0c;在行动中成就自我。”这是洛克菲勒写给儿子的箴言&#xff0c;也是他一生的真实写照。在这38封信中&#xff0c;他不仅分享了自己的工作心得&#xff0c;更…

完整版订单超时自动取消功能

前几天对实习还是继续学习技术产生了抉择&#xff0c;问了一个前辈&#xff0c;他抛给我一个问题&#xff0c;怎么做15分钟订单自动取消&#xff0c;我说然后到时间之后&#xff0c;自动执行这个订单关闭业务&#xff0c;比如把锁了的库存给解开等等操作&#xff0c;然后在数据…

VTD激光雷达(3)——04_OptiX_SimulationDataFlow

文章目录 前言一、总结 前言 一、 1 总结

synchronized的详解、锁的升级过程和优缺点比较

本文 详细介绍Java中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级 锁、重量级锁&#xff0c;以及锁升级过程。 Java中每一个对象都可以作为锁。具体表现形式为以下三种形式&#xff1a; 对于普通的同步方法&#xff0c;锁是当前的实例对象对于静态同步方法&a…

cJSON-轻量级解析模块、字符串的神——编织STM32C8T6与阿里云信息传递的纽带

编写方向&#xff1a;本人就不泛泛的编写一篇什么一文学会cJSON了&#xff0c;没什么突出点&#xff0c;也就我水水字数&#xff0c;你们看来看去也不懂&#xff0c;本人是从上阿里云传信息接触的cJSON的&#xff0c;我就此写一篇针对性的文章&#xff0c;希望对大家有用&#…

研1日记12

1. 改19->10 2. 学习数据不平衡问题 1. 欠采样 合并两个样本数据 两种方式 1. 按原分布比例划分。sklearn中train_test_split里&#xff0c;参数stratify含义解析_traintestsplit参数stratify-CSDN博客 3.刘二大人 卷积操作 待看论文&#xff1a; 刘老师指导&#xff1a…

用于稀疏自适应深度细化的掩码空间传播网络 CVPR2024

目录 Masked Spatial Propagation Network for Sparsity-Adaptive Depth Refinement &#xff08;CVPR 2024&#xff09;用于稀疏自适应深度细化的掩码空间传播网络1 介绍2 算法流程2.1 问题建模2.2 Guidance Network2.3 MSPN 模块 3 实验结果3.1 稀疏度自适应深度细化对比试验…

图论篇--代码随想录算法训练营第六十一天打卡| Floyd 算法,A*算法

Floyd 算法&#xff08;求多源汇最短路&#xff09; 题目链接&#xff1a;97. 小明逛公园 题目描述&#xff1a; 小明喜欢去公园散步&#xff0c;公园内布置了许多的景点&#xff0c;相互之间通过小路连接&#xff0c;小明希望在观看景点的同时&#xff0c;能够节省体力&…

计算机二级office操作技巧——Excel篇

文章目录 函数公式总结写在前面五大基本函数sum求和函数average求平均函数max求最大值函数min求最小值函数count求个数函数 rank排名函数if逻辑判断函数条件求个数函数countif单条件求个数函数countifs多条件求个数函数 条件求和函数sumifs多条件求和函数sumproduct乘积求和函数…

算法刷题[比较两个字符串的最大公字符串(滑动窗口实现)]

题目&#xff1a;编程实现&#xff1a;找出两个字符串中最大公共子字符串,如"abccade","dgcadde"的最大子串为"cad" 代码如下所示&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #inclu…

C语言实现贪吃蛇小游戏

✅博客主页:爆打维c-CSDN博客​​​​​​ &#x1f43e; &#x1f539;分享c语言知识及代码 &#x1f43e; 目录 游戏展示视频 一、项目准备工作 二、功能实现分析 1.游戏开始 a.设置本地化、创建窗口、标题 b.隐藏光标,封装定位光标的函数 c.打印欢迎界面及提示信息 …

网盘隐私照片泄露?教你如何保护自己的隐私照片!

网盘内的隐私照片 好兄弟最近遇到了一个困难&#xff1a;“我之前一直都是把照片存在网盘里面的&#xff0c;但是最近听说了某网盘的照片泄露了&#xff0c;自己的生活照啊&#xff0c;私密照啊都被人看光了&#xff0c;这太可怕了&#xff01;我现在也很担心自己的网盘上照片…

2021高教社杯全国大学生数学建模竞赛C题 Python代码演示

目录 问题一1.1 根据附件 1&#xff0c;对 402 家供应商的供货特征进行量化分析计算供货特征数据标准化对正向指标归一化对负向指标归一化 1.2 建立反映保障企业生产重要性的数学模型熵权法熵权法-TOPSISAHP 1.3 在此基础上确定 50 家最重要的供应商&#xff0c;并在论文中列表…

钢轨缺陷检测-目标检测数据集(包括VOC格式、YOLO格式)

钢轨缺陷检测-目标检测数据集&#xff08;包括VOC格式、YOLO格式&#xff09; 数据集&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1h7Dc0MiiRgtd7524cBUOFQ?pwdfr9y 提取码&#xff1a;fr9y 数据集信息介绍&#xff1a; 共有 1493 张图像和一一对应的标注文件 标…

Neo4j入门案例:三星堆

创建一个关于三星堆的知识图谱可以是一个非常有趣的项目&#xff0c;它可以帮助理解如何使用Neo4j来存储和查询复杂的关系数据。三星堆文化以其独特的青铜器、金器和其他文物而闻名&#xff0c;这为我们提供了一个丰富的历史背景来构建知识图谱。 数据模型定义 实体类型&#…