Git学习与gitlab中央仓库搭建(详细介绍)

环境:centos7.3

一,Git的发展史

git:分布式版本控制系统,是当前最流行的版本控制软件

创始人:林纳斯.拖瓦兹

二,部署Git环境

1.安装git服务

[root@localhost ~]# yum -y install git

2.配置git环境

不一定是data目录,但是尽量设为data命名的目录,可视度比较高

[root@localhost ~]# mkdir /data
[root@localhost ~]# cd /data/
[root@localhost data]# git init
初始化空的 Git 版本库于 /data/.git/
[root@localhost data]# ls -a .git/
.  ..  branches  config  description  HEAD  hooks  info  objects  refs

自动生成的git文件,是隐藏的文件,需要ls -a才可以列出

git目录的组成

  • branches 分支目录

  • config 定义目录特有的配置选项

  • description 仅供git web使用

  • HEAD 指定当前的分支

  • hooks git钩子文件

  • info 包含一个全局排除文件(exclude)

  • objects 存放所有的数据内容

  • refs 指针文件

  • index 暂存区文件 当缓存区存在内存才会存在

3.指定直接的使用者信息

[root@localhost data]# git config --global user.name "test"
[root@localhost data]# git config --global user.email "132644323@qq.com"

三,git的常用命令

1.定义一个初始化文件

[root@localhost data]# vi readme.txt
<html>
<head>
        <title> test </title>
</head>
<body>
        <h1>hello world<\h1>
</body>
</html>

2.上传暂存区

[root@localhost data]# git add readme.txt
或使用:git add . #当前目录所有文件上传

3.查看暂存区

[root@localhost data]# git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
#   (使用 "git rm --cached <file>..." 撤出暂存区)
#
#       新文件:    readme.txt
#

4.把文件从暂存区撤销

[root@localhost data]# git rm --cached readme.txt
rm 'readme.txt'
[root@localhost data]# git status
# 位于分支 master
#
# 初始提交
#
# 未跟踪的文件:
#   (使用 "git add <file>..." 以包含要提交的内容)
#
#       readme.txt
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)

5.将本地文件返回到缓存区的版本

[root@localhost data]# git add .
[root@localhost data]# vi readme.txt
[root@localhost data]# cat readme.txt
<html>
<head>
        <title> test </title>
</head>
<body>
        <h1>hello world<\h1>
        <h1>error</h1>
</body>
</html>
[root@localhost data]# git checkout -- readme.txt
[root@localhost data]# cat readme.txt
<html>
<head>
        <title> test </title>
</head>
<body>
        <h1>hello world<\h1>
</body>
</html>

6.将缓存区中的内容上传到版本库

[root@localhost data]# git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
#   (使用 "git rm --cached <file>..." 撤出暂存区)
#
#       新文件:    readme.txt
#
[root@localhost data]# git commit -m "new readme.html"
[master 5210983] new readme.html
 1 file changed, 1 insertion(+)
[root@localhost data]# git status
# 位于分支 master
无文件要提交,干净的工作区

7.修改本地的readme文件,查看哪里发生了改变

-:代表缺少的行

+:代表增加的行

[root@localhost data]# git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 1dc5795..1c5dd62 100644
--- a/readme.txt
+++ b/readme.txt
@@ -4,6 +4,6 @@
 </head>
 <body>
        <h1>hello world<\h1>
-       <hr>
+       <p><\p>
 </body>
 </html>

8.查看提交版本库中的文件信息

[root@localhost data]# git log						#详细信息
commit 5210983213165a4304502faa0aed6579de140b7d
Author: test <132644323@qq.com>
Date:   Tue Feb 28 16:48:34 2023 +0800

    new readme.html

commit 936abac869ae93ce04904545c0720cba2faa78c0
Author: root <root@localhost.localdomain>
Date:   Tue Feb 28 16:42:49 2023 +0800

    new readme.html
[root@localhost data]# git log --oneline		#ID号的前七位 和文件名
5210983 new readme.html
936abac new readme.html

9.版本回滚(回滚直接,会自动删除之前版本注意)

[root@localhost data]# git reset --hard HEAD^		#回滚到上一个版本,HEAD^^上上版本,HEAD~10回滚到上10个版本
HEAD 现在位于 936abac new readme.html
[root@localhost data]# vi readme.txt
[root@localhost data]# git reset --hard 936abac		#指定回滚的ID
HEAD 现在位于 936abac new readme.html
[root@localhost data]# vi readme.txt
[root@localhost data]# git log --oneline
936abac new readme.html

10.查看回滚动作日志

[root@localhost data]# git reflog
936abac HEAD@{0}: reset: moving to HEAD^
5210983 HEAD@{1}: commit: new readme.html
936abac HEAD@{2}: commit (initial): new readme.html

11.git config常见的配置选项

	git config -e 编辑配置文件 
		git config --local -e 编辑仓库级别配置文件
		git config --global -e 编辑用户级别配置文件
		git config --system -e 编辑系统级别配置文件
		
	git config 添加配置项目 
		git config --global user.email “you@example.com”
		git config --global user.name “Your Name”
		
	git config 添加别名
		git config --global -e
		添加:	
		[alias]
        st = status
        co = checkout
        br = branch
        mg = merge
        ci = commit
        md = commit --amend
        dt = difftool
        mt = mergetool
        last = log -1 HEAD
        cf = config
        line = log --oneline

四,git分支

1.查看分支

master:为默认主分支,不可以删除

[root@localhost data]# git branch
* master

2.创建分支

[root@localhost data]# git branch ops
[root@localhost data]# git branch
* master
  ops

3.切换分支

[root@localhost data]# git checkout ops
切换到分支 'ops'
[root@localhost data]# git branch
  master
* ops

4.创建分支并切换

[root@localhost data]# git checkout -b dev
切换到一个新分支 'dev'
[root@localhost data]# git branch
* dev
  master
  ops

5.合并分支

[root@localhost data]# git checkout dev
切换到分支 'dev'
[root@localhost data]# vi readme.txt
[root@localhost data]# git add .
[root@localhost data]# git commit -m "dev readme.html"
[dev c0af69f] dev readme.html
 1 file changed, 1 insertion(+)
[root@localhost data]# git checkout master			#切换到主分支
切换到分支 'master'
[root@localhost data]# git merge dev				#合并dev分支
更新 936abac..c0af69f
Fast-forward
 readme.txt | 1 +
 1 file changed, 1 insertion(+)
[root@localhost data]# git log --oneline
c0af69f dev readme.html
936abac new readme.html

6.删除分支

当复制被合并完之后,就没有任何作用了,除非还要继续使用

[root@localhost data]# git branch -d dev
已删除分支 dev(曾为 c0af69f)。

7.分支冲突

制造冲突:先在分支修改文件,提交;然后回到master,再修改文件相应内容,提交;最后,合并分支,出现冲突。
删除冲突文件内容:带>>>>>>>>>    ================= 行,保留想要的内容,再commit

注:为了避免合并冲突,尽量不要在master分支修改代码

五,gitlab中央仓库

gitlab:gitlab是一个利用ruby on rails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过web界面进行访问公开的或私人的项目

1.下载前提软件

[root@localhost data]# yum install curl policycoreutils openssh-server openssh-clients postfix -y

2.下载清华源的gitlab安装包

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm

3.安装rpm包

[root@localhost mnt]# yum -y install gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm

4.修改gitlab配置文件

[root@localhost mnt]# vi /etc/gitlab/gitlab.rb
external_url 'http://192.168.2.1'		#将字段设置为本机IP来供浏览器访问

5.配置启动gitlab

[root@localhost mnt]# gitlab-ctl reconfigure

6.查看gitlab的状态

[root@localhost mnt]# gitlab-ctl status
run: gitaly: (pid 112529) 104s; run: log: (pid 112168) 126s
run: gitlab-monitor: (pid 112553) 103s; run: log: (pid 112319) 117s
run: gitlab-workhorse: (pid 112511) 104s; run: log: (pid 112003) 140s
run: logrotate: (pid 112081) 132s; run: log: (pid 112080) 132s
run: nginx: (pid 112026) 138s; run: log: (pid 112025) 138s
run: node-exporter: (pid 112229) 124s; run: log: (pid 112228) 124s
run: postgres-exporter: (pid 112581) 102s; run: log: (pid 112385) 114s
run: postgresql: (pid 111637) 165s; run: log: (pid 111636) 165s
run: prometheus: (pid 112564) 103s; run: log: (pid 112361) 115s
run: redis: (pid 111541) 171s; run: log: (pid 111540) 171s
run: redis-exporter: (pid 112341) 116s; run: log: (pid 112340) 116s
run: sidekiq: (pid 111975) 142s; run: log: (pid 111974) 142s
run: unicorn: (pid 111905) 148s; run: log: (pid 111904) 148s

7.gitlab服务器管理命令

[root@localhost mnt]# gitlab-ctl start	#开启gitlab
[root@localhost mnt]# gitlab-ctl stop	#关闭gitlab
[root@localhost mnt]# gitlab-ctl restart 	#重新加载gitlab
  1. 登录gitlab服务器

登录

成功进入界面

六,gitlab中央仓库的管理

1.取消注册功能

为什么取消注册功能,在大多数生产环境中,是不允许每个用户都有自己的账号的,如果需要,登录root用户来管理员自行创建

登录gitlab--admin area(顶部菜单栏小扳手图标)--左侧面板settings--Sign-up Restrictions--去除勾选sign-up enabled  --下拉选save保存

2.修改登录欢迎界面

登录gitlab--admin area--Appearance--填写管理员联系方式和logo--save

退出登录:点击右上角的个人头像--》sign out

3.项目创建流程

1.创建group
登录gitlab--admin area--new group

2.创建user
登录gitlab--admin area--new user--添加用户名、邮箱--create--edit--修改密码

注意:用户名不能与组名相同

3.创建项目
登录gitlab--admin area--new project--注意选择组

4.gitlab用户在组中的权限
Guest:可以创建issue、发表评论,不能读写版本库
Reporter:可以克隆代码,不能提交,测试、产品经理可以赋予这个权限
Developer:可以克隆代码、开发、提交、push,开发人员可以赋予这个权限
Master:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限
Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限
5.gitlab中的组和项目有三种访问权限
Gitlab中的组和项目有三种访问权限:
Private:只有组成员才能看到
Internal:只要登录的用户就能看到
Public:所有人都能看到
6.上传ssh密钥对
这样当用户下载仓库项目时可以实现免密码登录
本地用户创建秘钥:ssh-keygen -t rsa
复制公钥内容:cat /root/.ssh/id_rsa.pub
黏贴到web界面:右上角--用户--settings--SSH Keys
7.克隆下载项目
[root@localhost data]# git clone git@192.168.2.1:dev/test.git
正克隆到 'test'...
The authenticity of host '192.168.2.1 (192.168.2.1)' can't be established.
ECDSA key fingerprint is SHA256:zrvQnhSEBUrxCxdIZ3HbTLxZfWnaKv7tbeFl/asoDw8.
ECDSA key fingerprint is MD5:b1:65:c6:c0:91:f3:a6:5e:6e:2b:27:65:8f:0a:8d:15.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.1' (ECDSA) to the list of known hosts.
warning: 您似乎克隆了一个空版本库。
[root@localhost data]# ls
readme.txt  test
8.添加文件内容,并推送代码
[root@localhost data]# cd test/
[root@localhost test]# ls
[root@localhost test]# cd ..
[root@localhost data]# cd test/
[root@localhost test]# echo "test file" > new.txt
[root@localhost test]# git add .
[root@localhost test]# git commit -m "add new.txt"
[master(根提交) 045fd6f] add new.txt
 1 file changed, 1 insertion(+)
 create mode 100644 new.txt
[root@localhost test]# git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 213 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.2.1:dev/test.git
 * [new branch]      master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。

4.在客户机,普通开发人员更新代码流程

前提

需要将用户添加到dev组中,要不同步时无法使用
登录管理员用户--》小扳手-》groups:1--》dev--》add users to group-——》设置用户和权限--》add users to group
1.dev用户登录到gitlab上传密钥
本地用户创建秘钥:ssh-keygen -t rsa
复制公钥内容:cat /root/.ssh/id_rsa.pub
dev01登录:右上角--用户--settings--SSH Keys
2.关联远程仓库
[root@git-client ~]# mkdir /data
[root@git-client ~]# cd /data/
[root@git-client data]# git init
初始化空的 Git 版本库于 /data/.git/
[root@git-client data]# git remote add origin git@192.168.2.1:dev/web.git
3.下载同步代码
[root@git-client data]# git pull origin master
4.创建分支,上传代码
[root@git-client data]# git config --global user.name "zhangsan"
[root@git-client data]# git config --global user.email "1234@qq.com"
[root@git-client data]# git checkout -b ops
切换到一个新分支 'ops'
[root@git-client data]# echo " test2 file" > new.txt
[root@git-client data]# git add .
[root@git-client data]# git commit -m "add new name-zhangsan"
[ops 8b42e8e] add new name-zhangsan
 1 file changed, 1 insertion(+), 1 deletion(-)
5.推送ops分支
[root@git-client data]# git push -u origin ops
Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 278 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote:
remote: To create a merge request for ops, visit:
remote:   http://192.168.2.1/dev/test/merge_requests/new?merge_request%5Bsource_branch%5D=ops
remote:
To git@192.168.2.1:dev/test.git
 * [new branch]      ops -> ops
分支 ops 设置为跟踪来自 origin 的远程分支 ops。
6.在dev的web界面上创建merge请求
登录dev用户的gitlab--》merge request--》create merge request
7.在切换到管理员登录,进入项目,同意merge请求
在左侧面板--》merge requests --》merge

七,常用的git命令

git remote add [remote] [url] #添加(关联)远程库
git remote set-url [remote] [url] #修改远程仓库
git clone [url] #克隆远程仓库项目
git remote #查看指定远程仓库命名简写
git remote –v #查看远程仓库详细信息以及名称对应URL
git push -u remote master #第一次推送master分支的所有内容
git fetch remote [branch/tag] #下载远程仓库的所有变动
git pull remote [branch/tag] #拉取主分支最新版本(可以拉取其他分支)
git push remote [branch/tag] --force #强行推送当前分支至远程分支,及时冲突
git push remote [branch/tag] --all #推送所有分支到远程仓库
git remote rename [oldname] [newname] #修改远程仓库名称
git remote remove [name] #删除远程仓库名称以及URL地址

git remote add [remote] [url] #添加(关联)远程库
git remote set-url [remote] [url] #修改远程仓库
git clone [url] #克隆远程仓库项目
git remote #查看指定远程仓库命名简写
git remote –v #查看远程仓库详细信息以及名称对应URL
git push -u remote master #第一次推送master分支的所有内容
git fetch remote [branch/tag] #下载远程仓库的所有变动
git pull remote [branch/tag] #拉取主分支最新版本(可以拉取其他分支)
git push remote [branch/tag] --force #强行推送当前分支至远程分支,及时冲突
git push remote [branch/tag] --all #推送所有分支到远程仓库
git remote rename [oldname] [newname] #修改远程仓库名称
git remote remove [name] #删除远程仓库名称以及URL地址
 
1、git clone 与 git pull 相同点
相同点:都是从远程服务器拉取代码到本地

2、git clone 与 git pull 不同点
git clone
是在本地没有版本库的时候,从远程服务器克隆整个版本库到本地,是一个本地从无到有的过程。

git pull
在本地有版本库的情况下,从远程库获取最新commit 数据(如果有的话),并merge(合并)到本地。

git pull = git fetch + git merge

3、使用场景
通常情况下,远程操作的第一步,是使用git clone从远程主机克隆一个版本库到本地。

本地修改代码后,每次从本地仓库push到远程仓库之前都要先进行git pull操作,保证push到远程仓库时没有版本冲突。

1.常用命令

git config --global user.name 'cjx'				#声明用户
git config --global user.email 'cjx@qq.com'		#声明邮箱

git init						#git初始化
git add . 						#将当前所有文件上传到暂存区
git status						#查看暂存区的文件
git rm --cached readme.txt		#删除暂存区中的文件
git checkout -- readme.txt		#把文件从暂存区中撤销
git commit -m "add readme.txt"	#上传到本地版本库

git diff readme.txt				#对比版本库中的文件与本地有哪些区别

git log 						#显示详细信息
git log --oneline				#显示摘要信息

git reset --hard HEAD^			#版本回滚
git reset --hard 版本号 			#回滚到执行的版本	注:版本回滚前的,会被自动删除

git reflog						#查看动作命令日志

git branch						#查看当前分支
git branch ops					#创建ops分支
git checkout ops				#切换到ops分支
git checkout -b dev				#创建并切换到dev分支
git merge dev 					#合并dev分支
git branch -d dev				#删除dev分支
git push -u origin master		#推送代码

git remote add origin git@192.168.2.1:dev/web.git	#关联远程仓库
git pull origin master								#下载同步代码
git push -u origin master							#推送合并代码

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】初识模板

放在专栏【C知识总结】&#xff0c;会持续更新&#xff0c;期待支持&#x1f339;前言在谈及本章之前&#xff0c;我们先来聊一聊别的。橡皮泥大家小时候应该都玩过吧&#xff0c;通常我们买来的橡皮泥里面都会带有一些小动物的图案的模子。我们把橡皮泥往上面按压&#xff0c;…

【性能分析】分析JVM出现的内存泄漏的性能故障

分析JVM出现的内存持续增加的性能故障手册 前言 本文通过常见的性能文件为例&#xff0c;提供简单清晰的思路去快速定位问题根源&#xff0c;从而可以快速解决性能故障。 性能问题介绍 在性能测试工作中针对Java程序最重要的是要关注JVM的内存消耗情况&#xff0c;JVM的内存…

面试错题本

目录2023.3.21 深信服哈夫曼树哈夫曼编码2023.3.21 深信服 ​同一线程共享的有堆、全局变量、静态变量、指针&#xff0c;引用、文件等&#xff0c;而独自占有栈 友元函数不能被继承&#xff0c;友元函数不是成员函数 友元函数不能被继承&#xff0c;友元函数不是当前类的成员…

Vue2项目总结-电商后台管理系统

Vue2项目总结-电商后台管理系统 去年做的项目&#xff0c;拖了很久&#xff0c;总算是打起精力去做这个项目的总结&#xff0c;并对Vue2的相关知识进行回顾与复习 各个功能模块如果有过多重复冗杂的部分&#xff0c;将会抽取部分值得记录复习的地方进行记录 一&#xff1a;项目…

精心整理前端主流框架学习路径

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 前端主流框架 前端框架指的是用于构建Web前端应用程序的框架&#xff0c;使用框架进行前端开发带来以下显著优势&#xff1a; 提高开发效率&#xff1a;前端框架提供了现成的…

STM32的CAN总线调试经验分享

相关文章 CAN总线简易入门教程 CAN总线显性电平和隐性电平详解 STM32的CAN总线调试经验分享 文章目录相关文章背景CAN总线CAN控制器CAN收发器调试过程硬件排查CAN分析仪芯片CAN控制器调试总结背景 最近负责的一个项目用的主控芯片是STM32F407IGT6&#xff0c;需要和几个电机控…

DWF文件怎么用CAD打开?DWF输入CAD步骤

DWF是一种开放、安全的文件格式&#xff0c;它可以将丰富的设计数据高效率地分发给需要查看、评审或打印这些数据的任何人。那么&#xff0c;DWF文件如何打开呢&#xff1f;下面就和小编一起来了解一下DWF输入浩辰CAD软件中的具体操作步骤吧&#xff01; DWF输入CAD中步骤&…

安装CentOS系统

打开 Oracle VM VirtualBox 点击新建 输入名称 点击下一步 点击下一步 点击创建 点击下一步 点击下一步 分配30G硬盘 点击创建 创建成功 点击启动按钮 选择 CentOS 系统 iso 镜像文件 点击启动 按键盘方向键 “上键”&#xff0c;选择第一项 按键盘回车键&#xff0c;然后等待 …

QT搭建MQTT开发环境

QT搭建MQTT开发环境 第一步、明确安装的QT版本 注意&#xff1a; 从QT5.15.0版本开始&#xff0c;官方不再提供离线版安装包&#xff0c;除非你充钱买商业版。 而在这里我使用的QT版本为5.15.2&#xff0c;在线安装了好久才弄好&#xff0c;还是建议使用离线安装的版本 在这里…

代码随想录复习——单调栈篇 每日温度 下一个更大元素12 接雨水 柱状图中最大的矩形

739.每日温度 每日温度 暴力解法双指针 def dailyTemperatures(self, temperatures: List[int]) -> List[int]:n len(temperatures)res [0] * nfor i in range(n):for j in range(i,n):if temperatures[j] < temperatures[i]: continueelse: res[i] j-ibreakreturn …

pytorch 计算混淆矩阵

混淆矩阵是评估模型结果的一种指标 用来判断分类模型的好坏 预测对了 为对角线 还可以通过矩阵的上下角发现哪些容易出错 从这个 矩阵出发 可以得到 acc &#xff01; precision recall 特异度&#xff1f; 目标检测01笔记AP mAP recall precision是什么 查全率是什么 查准率…

【K8S系列】深入解析Pod对象(一)

目录 序言 1.问题引入 1.1 问题描述 2 问题解答 2.1 pod 属性 2.1.1 NodeSelector 2.1.2 HostAliases 2.1.3 shareProcessNamespace 2.1.4 NodeName 2.1.5 其他pod属性 2.2 容器属性 2.2.1 ImagePullPolicy 2.2.2 Lifecycle 3 总结 4. 投票 序言 任何一件事情&am…

一文读懂强化学习!

一.了解强化学习1.1基本概念强化学习是考虑智能体&#xff08;Agent&#xff09;与环境&#xff08;Environment&#xff09;的交互问题&#xff1a;智能体处在一个环境中&#xff0c;每个状态为智能体对当前环境的感知&#xff1b;智能体只能通过动作来影响环境&#xff0c;当…

空间信息智能应用团队研究成果介绍及人才引进

目录1、多平台移动测量技术1.1 车载移动测量系统1.2 机载移动测量系统2、数据处理与应用技术研究2.1 点云与影像融合2.2 点云配准与拼接2.3 点云滤波与分类2.4 道路矢量地图提取2.5 道路三维自动建模2.6 道路路面三维病害分析2.7 多期点云三维变形分析2.8 地表覆盖遥感监测分析…

ChatGPT在安全研究领域的应用实践

引言ChatGPT是一个人工智能技术驱动的自然语言处理工具&#xff0c;它能够通过理解和学习人类的语言来进行对话&#xff0c;并能进行连续对话。目前ChatGPT已经官方已经更新模型到4.0版本&#xff0c;宣称它是“最先进的系统&#xff0c;能生产更安全和更有用的回复”。当前使用…

wandb:可视化和超参数寻优

参考博客&#xff1a;https://zhuanlan.zhihu.com/p/591047340 1、注册账号 首先&#xff0c;去wandb官网注册一个账号&#xff0c;选择个人使用即可&#xff08;根据个人需要&#xff09; 然后&#xff0c;登录得到一个API key 2、wandb使用 &#xff08;1&#xff09;命令…

Spring框架学习--xml和Annotation方式实现IOC

AnnotationXml的spring-IOC和全Annotation的spring-IOC 文章目录AnnotationXml的spring-IOC和全Annotation的spring-IOC学习目标第二章 基于AnnotationXml的spring-IOC【重点】1、annotationxml【入门案例】(5)【1】目标【2】实现【2.1】创建项目【2.3】改写AccountDaoImpl【2.…

刷题记录(2023.3.14 - 2023.3.18)

[第五空间 2021]EasyCleanup 临时文件包含考点 分析源码&#xff0c;两个特殊的点&#xff0c;一个是 eval&#xff0c;另一个是 include eval 经过了 strlen filter checkNums 三个函数 include 经过了 strlen filter 两个函数 filter 检测是否包含特定的关键字或字符 fun…

【数据结构与算法】用栈实现队列

文章目录&#x1f63b;前言如何用栈实现队列&#xff1f;用栈实现队列整体的实现代码&#x1f63c;写在最后&#x1f63b;前言 &#x1f61d;上一章我们用队列实现了一个栈&#xff08;-> 传送门 <-&#xff09;&#xff0c;而这一章就带大家用栈实现一个队列。 &#x1…

< 每日算法:在排序数组中查找元素的第一个和最后一个位置 >

每日算法 - JavaScript解析&#xff1a;在排序数组中查找元素的第一个和最后一个位置 一、任务描述&#xff1a;> 示例 1> 示例 2> 示例 3二、题意解析三、解决方案&#xff1a;往期内容 &#x1f4a8;一、任务描述&#xff1a; 给你一个按照非递减顺序排列的整数数组…