【Git企业级开发实战指南①】Git安装、基本操作!
目录
- 一、Git是什么?
- 1.1特点
- 1.2功能
- 1.3基本概念
- 二、Git安装
- 2.1Ubuntu下安装
- 2.2Centos下安装Git
- 三、Git基本操作
- 3.1创建git本地仓库
- 3.2配置Git
- 3.3 工作区&暂存区&版本库
- 3.4 实操案例
- 3.4.1添加文件
- 3.5 修改文件
- 3.6版本回退
- 3.7查看历史操作日志
- 3.7撤销修改
- 3.7.1工作区还没有add
- 3.7.2已经add,但没有commit
- 3.7.3已经add,并且也commit了
- 3.8删除文件
- 🍀小结🍀
🎉博客主页:小智_x0___0x_
🎉欢迎关注:👍点赞🙌收藏✍️留言
🎉系列专栏:Git企业级开发教程
🎉代码仓库:小智的代码仓库
一、Git是什么?
Git是一个免费和开源的分布式版本控制系统,它可以快速高效地处理从小型到大型项目的所有文件。Git由Linux内核的开发者Linus Torvalds在2005年为了管理Linux内核源代码而创建。Git的主要特点和功能包括:
1.1特点
- 分布式:与SVN等集中式版本控制系统相比,Git是分布式的。每个开发者都拥有完整的本地仓库,可以在本地进行提交、分支、合并等操作,无需依赖网络连接或中央服务器。这种特性提高了开发效率,降低了服务器压力,并增强了安全性和灵活性。
- 高效性:Git能够高效地处理各种规模的项目,无论是小型项目还是大型项目,都能迅速完成版本控制任务。
- 安全性:由于每个开发者都拥有完整的本地仓库,因此即使中心仓库出现问题,开发者也可以通过本地仓库恢复数据,保证了数据的安全性。
1.2功能
- 版本控制:Git能够追踪项目从开始到结束的整个过程,记录每次代码修改的内容和时间,并能够回滚到任意历史版本,方便团队协作和代码维护。
- 协作开发:Git支持多人协作开发,开发者可以在不同的分支上独立进行代码修改,最后通过合并操作将修改集成到一起。这种方式避免了代码冲突和重复开发的问题。
- 分支管理:Git的分支功能非常强大,允许开发者在不影响主干代码的情况下进行代码的修改和开发。每一个分支都是当前代码仓库中的一个拷贝,可以独立进行修改和版本管理。
- 代码审查:Git可以与代码审查工具集成,方便开发者在提交代码前进行代码审查,确保代码质量。
- 集成与自动化:Git可以与持续集成/持续部署(CI/CD)工具集成,实现自动化的构建、测试和部署流程,提高开发效率。
1.3基本概念
- 仓库(Repository):Git存储代码和相关历史记录的地方。Git支持本地仓库和远程仓库,本地仓库存储在开发者的计算机上,而远程仓库通常存储在云端,如GitHub、Gitee等。
- 提交(Commit):将代码的当前状态保存到仓库中的过程。每次提交都会生成一个唯一的SHA-1哈希值,称为提交ID。
- 分支(Branch):从主分支(或其他分支)上分出来的一条独立的代码线。使用分支可以使得多人协作更加高效,同时也可以保证代码稳定性。
- 合并(Merge):将两个或多个分支上产生的不同的修改合并为一个代码历史。合并可能会导致冲突,需要手动解决。
二、Git安装
2.1Ubuntu下安装
- 检查Ubuntu下有没有安装git
$:git --version
-bash: git: command not found //表示没有安装git
- 安装Git
sudo apt install -y git
等待安装完毕即可。
- 查看Git版本
git --version
$:git version 2.34.1
2.2Centos下安装Git
- 检查Centos下有没有安装git
$:git --version
-bash: git: command not found //表示没有安装git
- 安装Git
sudo yum install -y git
等待安装完毕即可。
- 查看Git版本
git --version
$:git version 1.8.3.1
三、Git基本操作
3.1创建git本地仓库
- 先创建一个目录
mkdir gitcode
进入gitcode
目录 - 使用
git init
创建一个本地仓库
创建好git仓库之后本地会有一个.git
的隐藏目录
.git
目录是用Git用来跟踪管理仓库的,不能手动去修改里面的文件。
3.2配置Git
安装好Git之后首先要做的是设置自己的用户名称和邮箱
git config [--global] user.name "Your Name"
git config [--global] user.email "email@example.com"
# 把 Your Name 改成你的昵称
# 把 email@example.com 改成邮箱的格式,只要格式正确即可
其中--global
是⼀个可选项。如果使用了该选项,表示这台机器上所有的Git仓库都会使用这个配置。如果你希望在不同仓库中使用不同的 name
或 e-mail
,可以不要--global
选项,但要注意的是,执行命令时必须要在仓库里。
查看配置命令:
ubuntu@xiaozhi:~/Desktop/gitcode$ git config -l
user.name=小智
user.email=2935117143@qq.com
alias.st=status
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
删除对应的配置命令为:
git config [--global] --unset user.name
git config [--global] --unset user.email
3.3 工作区&暂存区&版本库
- ⼯作区:是在电脑上你要写代码或⽂件的目录。
- 暂存区:英文叫stage或index。⼀般存放在
.git
目录下的index
文件(.git/index)
中,我们
把暂存区有时也叫作索引(index)。 - 版本库:又名仓库,英文名
repository
。工作区有⼀个隐藏目录.git
,它不算工作区,而是Git
的版本库。这个版本库里面的所有文件都可以被Git
管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以还原。
- 左侧为工作区,右侧为版本库,版本库中最重的是stage(暂存区)。
- 创建git的版本库时,git会默认给我们创建一个唯一的master分支,以及一个指向master分支的指针
HEAD
- 当在工作区修改文件时执行
git add
命令,则会更新暂存区的文件树索引 - 当执行
git commit
命令时,master分支会相应进行更新(此时暂存区的文件树索引内容才被真正写入版本库中)
通过新建或粘贴进目录的文件,并不能称之为向仓库中新增文件,而只是在工作区新增了文件。必须要通过使用git add
和git commit
命令才能将文件添加到仓库中进行管理!!!
3.4 实操案例
3.4.1添加文件
- 添加一个文件或多个文件到暂存区:
git add [file1] [file2]
- 添加指定目录,包括子目录到暂存区:
git add [dir]
- 添加当前目录下所有文件改动到暂存区:
git add .
在使用git commit
命令将暂存区中的内容添加到本地仓库中:
- 提交暂存区中所有内容到本地仓库中:
git commit -m "message"
- 提交暂存区中的指定文件到本地仓库中:
git commit [file1] [file2] -m "message"
git commit
后面的-m
选项,要加上本次提交的message(描述本次提交),这部分不能省略。用来记录我们提交细节。
git log
可以查看历史提交信息,并且可以查看我们每次commit
的日志信息。
也可以格式化打印输出:
git log --pretty=oneline
这里的ceea989e0ba7254e1bf2cafc8c1619257511da14
是每一次commit
的版本号,是通过特殊的哈希算法(SHA-1)算出来的数字。用于唯一标识一个提交。
查看.git
中的文件结构
index
是我们的暂存区,add之后的内容都添加到这里。HEAD
是我们的默认指向master分支的指针。
ubuntu@xiaozhi:~/Desktop/gitcode$ cat .git/HEAD
ref: refs/heads/master
默认的master分支就是:
ubuntu@xiaozhi:~/Desktop/gitcode$ cat .git/refs/heads/master
ceea989e0ba7254e1bf2cafc8c1619257511da14
master指向的就是我们最新提交到本地仓库的commit ID
objects
是 Git 的对象库,里面包含了创建的各种版本库对象及内容。当执行git add
命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,这个新对象就位于.git/objects
目录下。
ubuntu@xiaozhi:~/Desktop/gitcode$ ls .git/objects/
16 c7 ce info pack
ubuntu@xiaozhi:~/Desktop/gitcode$ ls .git/objects/ce/
ea989e0ba7254e1bf2cafc8c1619257511da14
查找object时要将commit ID
分为两部分查看,前2位时文件夹名称,后38位是文件名称。
找到这个文件一般我们不能直接去cat
这个文件,因为这个文件是通过哈希算法加密过的文件。我们可以使用Git给我们提供的指令git cat-file -p + (commid ID)
来查看:
ubuntu@xiaozhi:~/Desktop/gitcode$ git cat-file -p ceea989e0ba7254e1bf2cafc8c1619257511da14
tree c730883a3e1d9acd478bcc8e4ce4a2d144e78256
author 小智 <2935117143@qq.com> 1722834791 +0800
committer 小智 <2935117143@qq.com> 1722834791 +0800add file1
查看上面输出中tree后面的commit ID
:
ubuntu@xiaozhi:~/Desktop/gitcode$ git cat-file -p c730883a3e1d9acd478bcc8e4ce4a2d144e78256
100644 blob 16372721c888812697c2f880365b83e1db033a3f file1
再来看看对应file1里面的commit ID
:
ubuntu@xiaozhi:~/Desktop/gitcode$ git cat-file -p 16372721c888812697c2f880365b83e1db033a3f
I am file1!
#这是我们对file1做的修改!!被git记录了下来!!
3.5 修改文件
Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。
ubuntu@xiaozhi:~/Desktop/gitcode$ echo "aaaaaaaaaaaa" >>file1
ubuntu@xiaozhi:~/Desktop/gitcode$ cat file1
I am file1!
aaaaaaaaaaaa
git status
查看当前仓库状态:
上面告诉我们file1
文件已经被修改但是没有添加和提交。
git diff [file]
查看暂存区和工作区中的文件差异,现实的格式是Unix通用的diff格式,也可以通过git diff HEAD -- [file]
来查看版本库和工作区的文件差异。
ubuntu@xiaozhi:~/Desktop/gitcode$ git diff file1
diff --git a/file1 b/file1
index 1637272..e0eef4b 100644
--- a/file1
+++ b/file1
@@ -1 +1,2 @@I am file1!
+aaaaaaaaaaaa
ubuntu@xiaozhi:~/Desktop/gitcode$ git diff HEAD -- file1
diff --git a/file1 b/file1
index 1637272..e0eef4b 100644
--- a/file1
+++ b/file1
@@ -1 +1,2 @@I am file1!
+aaaaaaaaaaaa
3.6版本回退
执行 git reset
命令用于回退版本,可以指定退回某一次提交的版本。回退的本质是将版本库中的内容进行回退,工作区或暂存区是否回退由命令参数决定:
git reset
命令语法格式为: git reset [--soft | --mixed | --hard] [HEAD]
--mixed
为默认选项,使用时可以不用带该参数。该参数将暂存区的内容退回为指定提交版本内容,工作区文件保持不变。--soft
参数对于工作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。--hard
参数将暂存区与工作区都退回到指定版本。切记工作区有未提交的代码时不要用这个命令,因为工作区会回滚,你没有提交的代码就再也找不回了,所以使用该参数前一定要慎重。
HEAD 说明:
- 可直接写成 commit id,表示指定退回的版本。
HEAD
表示当前版本。HEAD^
上一个版本。HEAD^^
上上一个版本。- 以此类推…
可以使用 ~数字表示:
HEAD~0
表示当前版本。HEAD~1
上一个版本。HEAD~2
上上一个版本。- 以此类推…
当然,这里是一个表格,帮助你更好地理解 git reset
中 --soft
、--mixed
和 --hard
这三种模式的区别:
参数 | 版本库(HEAD指针) | 暂存区(Index) | 工作区(Working Directory) |
---|---|---|---|
--soft | 回退到指定提交 | 保持不变 | 保持不变 |
--mixed (默认选项) | 回退到指定提交 | 回退到指定提交 | 保持不变 |
--hard (慎用) | 回退到指定提交 | 回退到指定提交 | 回退到指定提交 |
示例
假设有以下提交历史:
commit a1b2c3d (HEAD -> master)
commit e4f5g6h
commit i7j8k9l
如果你想回退到 e4f5g6h
:
git reset --hard e4f5g6h
使用 git reset --hard
命令后,提交历史将变为:
commit e4f5g6h (HEAD -> master)
commit i7j8k9l
不同参数对工作区和暂存区的影响:
-
git reset --mixed e4f5g6h
:- 版本库:回退到
e4f5g6h
- 暂存区:更新为
e4f5g6h
的内容 - 工作区:保持不变
- 版本库:回退到
-
git reset --soft e4f5g6h
:- 版本库:回退到
e4f5g6h
- 暂存区:保持不变
- 工作区:保持不变
- 版本库:回退到
-
git reset --hard e4f5g6h
:- 版本库:回退到
e4f5g6h
- 暂存区:更新为
e4f5g6h
的内容 - 工作区:更新为
e4f5g6h
的内容
- 版本库:回退到
恢复可以通过部分的commit ID
来恢复!
3.7查看历史操作日志
使用git reflog
可以查看历史操作日志
ubuntu@xiaozhi:~/Desktop/gitcode$ git reflog
787ed68 (HEAD -> master) HEAD@{0}: commit: md file1
ceea989 HEAD@{1}: commit (initial): add file1
git reflog
记录了对本地仓库的所有操作日志,包括那些已经丢失或不可见的操作。通过 git reflog
,可以找到并恢复意外丢失的提交。
可以通过git reset --hard HEAD@{1}
或者git reset --hard ceea989
来恢复到部分commit ID为ceea989的提交。
在 Git 中,版本回退速度非常快,因为 Git 在内部使用了一个指向当前分支(如 master)的 HEAD 指针。refs/heads/master
文件中保存了当前 master 分支的最新 commit ID。当我们进行版本回退时,Git 只是将 refs/heads/master
中存储的 commit ID 更新为特定的版本。可以简单理解成如下示意图:
通过更新 refs/heads/master
文件中的 commit ID,Git 可以快速地实现版本回退,而不需要实际更改文件的内容。这种方式使得 Git 的版本回退操作非常高效。
3.7撤销修改
3.7.1工作区还没有add
可以使用 git checkout -- [file]
命令让工作区的文件回到最近一次 add
或 commit
时的状态。要注意 git checkout -- [file]
命令中的 --
很重要,切记不要省略。
ubuntu@xiaozhi:~/Desktop/gitcode$ cat file1
I am file1!
ubuntu@xiaozhi:~/Desktop/gitcode$ git reset --hard 787ed68
HEAD 现在位于 787ed68 md file1
ubuntu@xiaozhi:~/Desktop/gitcode$ cat file1
I am file1!
aaaaaaaaaaaa
ubuntu@xiaozhi:~/Desktop/gitcode$ echo "cccccc" >> file1
ubuntu@xiaozhi:~/Desktop/gitcode$ cat file1
I am file1!
aaaaaaaaaaaa
cccccc
ubuntu@xiaozhi:~/Desktop/gitcode$ git checkout -- file1
ubuntu@xiaozhi:~/Desktop/gitcode$ cat file1
I am file1!
aaaaaaaaaaaa
在这个命令中:
git checkout
是用于检出分支或恢复文件的命令。--
用于明确告诉 Git 后面的内容是文件名而不是分支名。这可以防止错误地检出到某个分支。file1
是你想恢复的文件名。
注意事项
- 慎重使用:
git checkout -- [file]
命令会丢失你在文件中的所有未保存的修改,因此使用前请确保你真的不需要这些修改。 - 区分分支和文件:
--
符号非常重要,因为它能让 Git 清楚地知道你指的是文件而不是分支名。
git reset
用于回退版本,根据参数不同可以回退到不同的状态(soft、mixed、hard)。git checkout -- [file]
用于撤销工作区中文件的修改,使其恢复到最近一次git add
或git commit
时的状态。
3.7.2已经add,但没有commit
如果已经使用 git add
将文件添加到暂存区,但还没有进行 commit
,你可以通过以下方法撤销这些更改:
ubuntu@xiaozhi:~/Desktop/gitcode$ cat file1
I am file1!
aaaaaaaaaaaa
ubuntu@xiaozhi:~/Desktop/gitcode$ echo "cccccccc" >>file1
ubuntu@xiaozhi:~/Desktop/gitcode$ cat file1
I am file1!
aaaaaaaaaaaa
cccccccc
ubuntu@xiaozhi:~/Desktop/gitcode$ git reset HEAD file1 #将暂存区恢复至HEAD指向的master版本
重置后取消暂存的变更:
M file1
ubuntu@xiaozhi:~/Desktop/gitcode$ git status #查看分区状态
位于分支 master
无文件要提交,干净的工作区
ubuntu@xiaozhi:~/Desktop/gitcode$ cat file1
I am file1!
aaaaaaaaaaaa
cccccccc
ubuntu@xiaozhi:~/Desktop/gitcode$ git checkout -- file1 #再来恢复工作区
ubuntu@xiaozhi:~/Desktop/gitcode$ git status
位于分支 master
无文件要提交,干净的工作区
ubuntu@xiaozhi:~/Desktop/gitcode$ cat file1
I am file1!
aaaaaaaaaaaa
3.7.3已经add,并且也commit了
- 如果还没有将本地版本库推送到远程,可以安全地使用
git reset --hard HEAD^
来回退到上一个提交。这样本地的最新提交会被丢弃,工作目录会恢复到上一个提交的状态。
3.8删除文件
ubuntu@xiaozhi:~/Desktop/gitcode$ ls
file1 file2
ubuntu@xiaozhi:~/Desktop/gitcode$ rm file2
ubuntu@xiaozhi:~/Desktop/gitcode$ git status
位于分支 master
尚未暂存以备提交的变更:(使用 "git add/rm <文件>..." 更新要提交的内容)(使用 "git restore <文件>..." 丢弃工作区的改动)删除: file2修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
ubuntu@xiaozhi:~/Desktop/gitcode$
在这种情况下,工作区和版本库不一致,需要删除文件。有两种可能性:
- 确实需要从版本库中删除该文件。
- 不小心误删了文件。
对于第二种我们可以直接通过git checkout -- file2
来进行恢复。
ubuntu@xiaozhi:~/Desktop/gitcode$ git checkout -- file2
ubuntu@xiaozhi:~/Desktop/gitcode$ ls
file1 file2
对于第一种则需要使用git rm
将暂存区和工作区中删除,并且还需要commit
。
ubuntu@xiaozhi:~/Desktop/gitcode$ git rm file2
rm 'file2'
ubuntu@xiaozhi:~/Desktop/gitcode$ git status
位于分支 master
要提交的变更:(使用 "git restore --staged <文件>..." 以取消暂存)删除: file2ubuntu@xiaozhi:~/Desktop/gitcode$ git commit -m "delete file2"
[master 5c846bd] delete file21 file changed, 1 deletion(-)delete mode 100644 file2
这样文件就从版本库中删除了。
🍀小结🍀
今天我们学习了"Git安装、基本操作
相信大家看完有一定的收获。种一棵树的最好时间是十年前,其次是现在!
把握好当下,合理利用时间努力奋斗,相信大家一定会实现自己的目标!加油!创作不易,辛苦各位小伙伴们动动小手,三连一波💕💕~~~
,本文中也有不足之处,欢迎各位随时私信点评指正!
相关文章:

【Git企业级开发实战指南①】Git安装、基本操作!
目录 一、Git是什么?1.1特点1.2功能1.3基本概念 二、Git安装2.1Ubuntu下安装2.2Centos下安装Git 三、Git基本操作3.1创建git本地仓库3.2配置Git3.3 工作区&暂存区&版本库3.4 实操案例3.4.1添加文件 3.5 修改文件3.6版本回退3.7查看历史操作日志3.7撤销修改3…...

Leetcode 3239. Minimum Number of Flips to Make Binary Grid Palindromic I
Leetcode 3239. Minimum Number of Flips to Make Binary Grid Palindromic I 1. 解题思路2. 代码实现 题目链接:3239. Minimum Number of Flips to Make Binary Grid Palindromic I 1. 解题思路 这一题思路上的话就是分别考察一下把所有行都变成回文所需要的fli…...

C++面试基础算法的简要介绍
C是一种广泛使用的编程语言,尤其在算法和数据结构的实现中占据重要地位。以下是对C基础算法的一些介绍,涵盖了排序、查找、搜索算法以及基本的遍历算法等方面。 排序算法 快速排序(Quick Sort) 快速排序是一种分而治之的排序算法…...

【Linux网络编程】套接字Socket(UDP)
网络编程基础概念: ip地址和端口号 ip地址是网络协议地址(4字节32位,形式:xxx.xxx.xxx.xxx xxx在范围[0, 255]内),是IP协议提供的一种统一的地址格式,每台主机的ip地址不同,一个…...

jvm方法返回相关指令ireturn,areturn,return等分析
正文 看图: 做的事情如下: 1:弹出当前的方法栈帧 2:获取上一个方法 3:从当前方法的操作数栈中获取执行结果,并推送到上一个方法的操作数栈中对应的伪代码: Override public void execute(Frame frame) {Thread thread frame.thread();Frame curren…...

宝塔部署springboot vue ruoyi前后端分离项目,分离lib、resources
1、“文件”中创建好相关项目目录,并将项目相关文件传到对应目录 例如:项目名称/ #项目总目录 api/ #存放jar项目的Java项目文件 manage/ #vue管理后端界面 …...

Python 基础教程:List(列表)的使用
《Python 基础教程:List(列表)的使用》 在 Python 中,列表是最基本的数据结构之一,它是一种有序的、可变的数据集合,可以包含任意类型的元素,包括数字、字符串、其他列表等。 1. 列表的创建 …...

kubebuilder常用标签
kubebuilder 标签是用于注解 Kubernetes CRD(Custom Resource Definition) 的标签,主要用于在 Operator SDK 和 Kubebuilder 框架中生成代码、验证规则以及自定义 CRD 的生成。以下是常用的 kubebuilder 标签: 1. 字段验证标签 …...

ChatTTS文本转语音本地部署结合内网穿透实现远程使用生成AI音频
文章目录 前言1. 下载运行ChatTTS模型2. 安装Cpolar工具3. 实现公网访问4. 配置ChatTTS固定公网地址 前言 本篇文章主要介绍如何快速地在Windows系统电脑中本地部署ChatTTS开源文本转语音项目,并且我们还可以结合Cpolar内网穿透工具创建公网地址,随时随…...

基于微信小程序的高校大学生信息服务平台设计与实现
基于微信小程序的高校大学生信息服务平台设计与实现 Design and Implementation of a College Student Information Service Platform based on WeChat Mini Program 完整下载链接:基于微信小程序的高校大学生信息服务平台设计与实现 文章目录 基于微信小程序的高校大学生信息…...

YOLOV8替换Lion优化器
YOLOV8替换Lion优化器 1 优化器介绍博客 参考bilibili讲解视频 论文地址:https://arxiv.org/abs/2302.06675 代码地址:https://github.com/google/automl/blob/master/lion/lion_pytorch.py """PyTorch implementation of the Lion …...

uniapp页面里面的登录注册模板
<!-- 账号密码登录页 --> <template><view class"page"><view class"uni-content"><view class"login-logo"><image :src"logo"></image></view><text class"title title-bo…...

C++新手入门学习教程(完整版)
以下教程覆盖了 C 学习的各个方面,适合初学者循序渐进地学习。学习过程中,建议初学者多做练习和项目,以加深对理论知识的理解。希望这个教程能为你提供一个清晰的学习路径。 目录 第一章:C 简介 1.1 C 的历史与演变 1.2 C 的特…...

Python 爬虫入门(六):urllib库的使用方法
Python 爬虫入门(六):urllib库的使用方法 前言1. urllib 概述2. urllib.request 模块2.1 发送GET请求2.2 发送POST请求2.3 添加headers2.4 处理异常 3. urllib.error 模块4. urllib.parse 模块4.1 URL解析4.2 URL编码和解码4.3 拼接URL 5. ur…...

个人开发神器,一应俱全,有你想要的!
哈喽,各位小伙伴们好,我是给大家带来各类黑科技与前沿资讯的小武。 经常有很多小伙伴问小武,是从哪里获取到这么多资源,其实除了熟知的吾爱、酷安等知名论坛集聚地,还有一些强大的资源聚合类软件也非常重要。 如之前安…...

电子电气架构 --- SOVD在域控制器的应用
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…...

React(四):DOCX文件在线预览
效果 注意 ⚠️注意:部分文件预览存在问题 依赖 $ yarn add docx-preview $ yarn add jszip源码 import ./index.scss; import {useRef} from react; import type {UploadRequestOption} from rc-upload/lib/interface; import {Upload, Button, message} from an…...

Java IO.字符集,流,缓冲流 转换流 对象操作流
一.字符集 如果使用字节流 , 把文本文件中的内容读取到内存时, 可能会出现乱码 如果使用字节流 , 把中文写入文本文件中 , 也有可能会出现乱码 读取n.txt"你好" 两个汉字 字节流读中文,每次只能读一部分所以出现了乱码 字符集(Character se…...

线性稳压器的内部电路与构成分析
线性稳压器的一般的引脚构成 线性稳压器基本上由VIN (输入)、VO (输出)、GND (接地)三个引脚构成。在输出可变的线性稳压器上添加了用于反馈输出电压的FB(反馈引脚)。 简单来说&am…...

Go语言实现多协程文件下载器
文章目录 前言流程图主函数下载文件初始化分片下载worker分发下载任务获取下载文件的大小下载文件分片错误重试项目演示最后 前言 你好,我是醉墨居士,最近在开发文件传输相关的项目,然后顺手写了一个多协程文件下载器,代码非常精…...

本地方法详解
本地方法(Native Methods)是指那些由Java程序调用,但其实现是用非Java语言(如C、C等)编写的方法。它们通常用于访问操作系统底层的功能或进行高效的计算,这些是Java本身不能直接实现的。下面详细解释本地方…...

每日新闻掌握【2024年8月3日 星期六】
2024年8月3日 星期六 农历六月廿九 大公司/大事件 微信地震预警全国上线 36氪获悉,国家地震烈度速报与预警工程已于7月25日正式通过国家验收。8月2日,在中国地震局指导下,中国地震台网中心、中央广播电视总台国家应急广播与腾讯联合推出“中…...

python入门基础篇(一)
基础篇 Python基础安装与配置Python环境理解Python解释器第一个Python程序:"Hello, World!" 基础语法注释与文档字符串变量与数据类型数字类型:整数、浮点数、复数字符串布尔值None值 运算符算术运算符比较运算符逻辑运算符赋值运算符位运算符…...

windows下在线预览服务kkFileView4.4.0问题记录
前几天找到一个开源项目:kkFileView,感觉可能以后可能会用到,所以尝试了下。 通过git下载下来,版本是4.4.0,通过idea打开项目,发现老是无法找到组件aspose-cad,版本是23.9. 找了好多文章&#x…...

Java:通过反射获取class类的属性
有如下一个普通类,我想获取他的所有属性值 package com.demo.bean;import lombok.Data;import java.util.List;Data public class UserBean {private String name;private Integer age;private List<String> tags; }可以通过反射的方式获取属性值 package c…...

07.FreeRTOS列表与列表项
文章目录 07. FreeRTOS列表与列表项1. 列表和列表项的简介2. 列表相关API函数3. 代码验证 07. FreeRTOS列表与列表项 1. 列表和列表项的简介 列表的定义: typedef struct xLIST {listFIRST_LIST_INTEGRITY_CHECK_VALUE /* 校验值 */volatile UBaseType_t uxN…...

餐饮业油烟净化器安装势在必行,切勿侥幸
我最近分析了餐饮市场的油烟净化器等产品报告,解决了餐饮业厨房油腻的难题,更加方便了在餐饮业和商业场所有需求的小伙伴们。 随着环保法规的日益严格和公众环保意识的提升,餐饮业油烟排放问题成为社会关注的焦点。油烟不仅影响环境质量&am…...

SpringBoot集成阿里百炼大模型 原子的学习日记Day01
文章目录 概要下一章SpringBoot集成阿里百炼大模型(多轮对话) 原子的学习日记Day02 整体架构流程技术名词解释集成步骤1,选择大模型以及获取自己的api-key(前面还有一步开通服务就没有展示啦!)2,…...

【网络编程】网络原理(一)
系列文章目录 1、 初识网络 2、网络编程的基础使用(一) 文章目录 系列文章目录前言一、端口号的使用二、UDP报文学习1.报文格式2.MD5算法 总结 前言 在前文中,主要对UDP和TCP协议有了简单的了解,而这两种协议是负责传输层的内容…...

鲁班上门维修安装系统源码开发之功能模式
鲁班上门维修安装系统在当今的趋势呈现出显著的增长与创新。随着物联网、智能家居的普及,以及消费者对便捷、高效生活方式的追求,鲁班上门维修安装系统凭借其多渠道预约、智能派单、在线支付与费用明细透明等优势,赢得了市场的广泛认可。 …...