史上最详细安装教程

以上教程是作为扩展学习,其实完全按默认安装就可以了;我们详解配置过程

配置git环境:git config --global

  • config:参数是用来配置git环境的
  • global:长命令表示配置整个git环境

初次使用git需要设置你的用户名以及邮箱,这将作为当前机器git的标识,如果你用它来下载远程仓库一些需要登录权限的仓库会要求登录,git默认使用配置邮箱以及用户名登入但会要求你手动输入密码,用户每次提交代码都会记录用户名和邮箱

用户配置

  • user代表用户
  • .name代表配置用户的名称
  • .email代表配置用户的邮箱

注意点:username和email最好和github、gitlab(或者其它类似远程仓库)的用户名和邮箱一致。后续你提交时,github展示的提交者name就是你本地配置的

#设置用户名密码
git config --global user.name "你的用户名"
git config --global user.email 你的邮箱(不需要双引号)

注意:用户名和邮箱最好和你github的邮箱和用户名保持一致

#查看用户名密码
git config user.name
git config user.email

注意:如果需要修改重复执行上述命令即可,也就是通过覆盖的形式进行修改,不配置也行,但当遇到要求登录权限的远程仓库会让你在手动输入用户名、邮箱、以及密码,配置后会在目录

查看其他配置信息(git设置列表)

git config --list

可知已经配置成功

–global 表示全局的,即当前用户都有效,该配置会出现在 ~/.gitconfig 文件中,~表示当前用户的目录,比如我的是

既然有全局的,那么肯定有局部的啊!局部的是不加 --global 的,局部是只对当前仓库起效的,它的配置信息会在当前仓库根目录/.git/config文件下

注意:局部变量覆盖全局变量!和编程语言里面的变量关系是一样的。安装完git后必须对git做global级别的配置,后续看需求做局部配置或system级别的配置,我们按git作用域范围来划分级别,git的命令窗口是linux下的,与cmd命令提示窗口有着本质的区别,一个操作系统System对应多个用户

  • 执行git config --system:作用域最大,整台计算机,不管登陆那个帐号,不管哪个项目
  • 执行git config --global:作用域中等,为登陆这台计算机的用户
  • 执行git config:作用域最小,值针对当前项目有效

技巧:我们直接输入git config,就可以看到简单的命令列表了:

$ git config
usage: git config [<options>]Config file location--global              use global config file--system              use system config file--local               use repository config file--worktree            use per-worktree config file-f, --file <file>     use given config file--blob <blob-id>      read config from given blob object(2)git config --help

注意

一个很重要的和git config相关的地方是:简化本地git命令,比如查看git提交日志标志格式原始命令
git log --oneline --decorate --graph --all
简化命令为git lol
git config --global alias.lol "log --oneline --decorate --graph --all"
如果这个简化命令lol已经被占用
git config --global --replace-all alias.lol "log --oneline --decorate --graph --all"否则会报错
warning: alias.lol has multiple values
error: cannot overwrite multiple values with a single valueUse a regexp, --add or --replace-all to change alias.lol.

git init
在当前文件夹下生成git对象,在当前目录下会出现一个名为.git的目录,所有Git需要的数据和资源都存放在这个目录中

git区域概念

  • 工作区:你的项目代码,沙箱环境,意味着你可以任意修改你的项目,这部分不受git管理
  • 暂存区:你在工作区做了n次修改后,执行git add把当前工作区的内容存入到版本库index
  • 版本库:存储所有的目录,相当于存储历史项目记录的数据库,存放所有工作过程中产生的对象(tree,git,commit这三种类型),也就是所谓的版本库

此时在查看中选中查看隐藏文件才能看的.git 目录如下

  • hook:和其他的版本控制工具一样,hook在执行操作时能自动触发某些自定义脚本,钩子有两种,自定义端的和服务器端的,客户端的钩子可以由提交和并等操作调用,服务器端的钩子可以作用与客户端推送等操作,钩子可随意调用
  • info:包含一个全局性文件,其中info中的.gitconfig是项目级的配置信息
  • logs:日志记录
  • config:关于这个项目的配置内容,配置方法上面介绍的很情况了,比如
#项目级配置
git config user.name "你的用户名"
git config user.email 你的邮箱(不需要双引号)

在去看下该文件

  • index:文件保存暂存区的信息,代表暂存区,采用懒加载的型,初始化.git文件是不自带,执行由版本库到暂存区命令(git add)时生成
  • objects:存储所有的目录,相当于存储历史项目记录的数据库,存放所有工作过程中产生的对象(tree,git,commit这三种类型),也就是所谓的版本库,初始化.git文件是不自带,执行由版本库到暂存区命令(git add)时生成,我们知道git是累加性的,git操作中没有任何操作会删除objects目录下的文件,除非你手动删除,删除后你在进线版本回退可能就会受到影响
  • refs:g该目录存储指向数据分支(提交对象commit)的指针
  • info:包含一个全局性排除文件

git相关基础linux命令

在这里插入代码片

git三大对象类型
Git 的核心部分是一个简单的键值对数据库。你可以向该数据库插入任意类型的内容,它会返回一个键值,通过该键值可以在任意时刻再次检索该内容

向数据库写入内容 并返回对应键值

echo 'test content' | git hash-object -w --stdin   //将文本内容写入git版本库
git hash-object -w  test.txt //将某路径下的文件存储版本库

-w 选项指示 hash-object 命令存储数据对象;若不指定此选项,则该命令仅返回对应的键值
–stdin(standard input)选项则指示该命令从标准输入读取内容;若不指定此选项,则须在命令尾部给出待存储文件的路径

执行上述命令会返回一个hash值,hash值是根据文件生成的 => 同样的内容生成同样的hash值

后面的hash值内容作为文件名,存储规则是hash值前两个作为文件夹,后面的作为文件内容,存储在objects文件夹下

根据键值拉取数据

git cat-file -p d670460b4b4aece5915caf5c68d12f560a9fe3e4-p 选项可指示该命令自动判断内容的类型,并为我们显示格式友好的内容
-t 选项可以让 Git 告诉我们其内部存储的任何对象类型

以下分别是拉取的文本内容和存入的文件test.txt的内容

查看 Git 是如何存储数据的

find .git/objects -type f

当前的操作都是在对本地数据库(.git/objects文件)进行操作 不涉及暂存区

构建树对象
树对象(tree object),它能解决文件名保存的问题,也允许我们将多个文件组织到一起。Git 以一种类似于 UNIX 文件系统的方式存储内容。所有内容均以树对象和数据对象(git 对象)的形式存储,其中树对象对应了 UNIX 中的目录项,数据对象(git 对象)则大致上对应文件内容。一个树对象包含了一条或多条记录(每条记录含有一个指向 git 对象或者子树对象的 SHA-1 指针,以及相应的模式、类
型、文件名信息)。一个树对象也可以包含另一个树对象。

以下案例是我们重新新建git项目演示的,演示内容:1. 利用 update-index 命令 为 test.txt 文件的首个版本——创建一个暂存区。并通过 write-tree 命令生成树对像

查看当前暂存区内容

 git ls-files -s

向暂存区index添加内容(仅仅是向暂存区添加数据,和版本库没关系)

echo 'test.txt v1' > test.txt
git hash-object -w  test.txt //返回的哈希值560a3d89bf36ea10794402f6664740c284d4ae3b
//把刚才创建的这个文件加入到暂存区里面
git update-index --add --cacheinfo 100644 560a3d89bf36ea10794402f6664740c284d4ae3b test.txt
git ls-files -s //再次检查缓存区文件模式为 100644,表明这是一个普通文件
100755,表示一个可执行文件;
120000,表示一个符号链接。--add 选项:
因为此前该文件并不在暂存区中 首次需要—add
--cacheinfo 选项:
因为将要添加的文件位于 Git 数据库中,而不是位于当前
目录下 所有需要—cacheinfo

对应的值会存入到./git/index文件中,同时在查看当前暂存区,发现有值了

把暂存区的一系列git对象(本例中只用一个git对象)刷写到版本库生成项目快照

git write-tree  //返回06e21bb0105e2de6c846725a9a7172f57dd1af96,意味着版本库生成相关tree对象

注意:此时我们的版本库会有两个对象,一个代表test.txt v1版本的git对象,和项目demo快照tree对象

find .git/objects -type f
git cat-file -t 560a3d89bf36ea10794402f6664740c284d4ae3b
git cat-file -t 06e21bb0105e2de6c846725a9a7172f57dd1af96

2 新增 new.txt然后再修改test.txt, 将 new.txt 和 test.txt 文件的第二个个版本塞入到暂存区。并通过 write-tree 命令生成树对像。

echo 'new v1' > new.txt
git hash-object -w  new.txt  //eae614245cc5faa121ed130b4eba7f9afbcc7cd9
vim test.txt
git hash-object -w  text.txt  //87c6086d9143f8c993f3b828f0c403862be40a30

我们查看版本库发现已经有四个版本了,我们整理下

.git/objects/06/e21bb0105e2de6c846725a9a7172f57dd1af96 //demo项目第一个版本,tree类型
.git/objects/56/0a3d89bf36ea10794402f6664740c284d4ae3b //tetst.txt文件第一版本,git类型
.git/objects/87/c6086d9143f8c993f3b828f0c403862be40a30 //test.txt文件第二版本,git
.git/objects/ea/e614245cc5faa121ed130b4eba7f9afbcc7cd9 //new.txt文件第一版本,git版本

注意,demo项目第一个版本的内容仅仅是test.txt的第一个版本,当前版本库也还是停留在test.txt的第一个版本中

现在,我们把test.txt的第二版本添加到版本库,在把new.txt添加进去看版本库是什么效果

我们发现,test.txt被覆盖,同时版本库多了new.txt文件,而且当前暂存区的状态已经和我们的工作区对象状态完全一致了,那么我们再次生成树对象(git write-tree),生成我们的demo的v2版本,此处版本库已经有五个对象了;

图示如下

将第一个树对象加入第二个树对象,使其成为新的树对象

git read-tree  --prefix=bak 06e21bb0105e2de6c846725a9a7172f57dd1af96
git write-tree 在生成一个新的数对象f296b1f5603d6739f00dbfc40dd31bf016685349

总结:

.git/objects/f2/96b1f5603d6739f00dbfc40dd31bf016685349 //demo项目第三版本,tree类型
.git/objects/35/ecf071f2528da0c74f2beb484c960fef7c986d //demo项目第二版本,tree类型
.git/objects/06/e21bb0105e2de6c846725a9a7172f57dd1af96 //demo项目第一个版本,tree类型
.git/objects/56/0a3d89bf36ea10794402f6664740c284d4ae3b //tetst.txt文件第一版本,git类型
.git/objects/87/c6086d9143f8c993f3b828f0c403862be40a30 //test.txt文件第二版本,git
.git/objects/ea/e614245cc5faa121ed130b4eba7f9afbcc7cd9 //new.txt文件第一版本,git版本

整体结构如图所示

总结;git对象代表文件的一次次版本,tree对象代表项目的一次次版本

tree对象的问题①我们上述三次项目快照,如果响应查看需要记住hash值,很麻烦,而且我们也不能知道谁修改的项目,无法条件备注,无法查看修改时间…

我们可以通过调用 commit-tree 命令创建一个提交对象,为此需要指定一个树对象的 SHA-1 值,以及该提交的父提交对象(如果有的话 第一次将暂存区做快照就没有父对象),这里我们把demo的v1版本tree对象进行提交

echo 'first commit' | git commit-tree 06e21b //返回tree对象183c6672fe41c2206b59f462ee9cd88cdb15db6f


同理,我们依次提交demo的v2和v3对应的tree对象

echo 'second commit' | git commit-tree f296b1 //返回tree对象4e5dac7b61b854c24292228aa84c7ce274d6a67a
echo 'third commit' | git commit-tree 35ecf0 //返回tree对象0eb70ea05902612244bd52d8ff01577b1d9f20f9


这样,我们就已经分别为三个树对象创建好提交对象了,第一个提交对象没有父对象,第二个以第一份为父对象,同理,第n个commit对象以第n-1个commit对象作为父对象,也就是commit对象是链式结构的,所以真正的项目快照是tree对象,真正代表项目版本的是commit对象,git commit-tree命令不但生成提交对象 而且会将对应的快照(树对象)提交到本地库中;

总结:

  • Git 根据某一时刻暂存区(即 index 区域)所表示的状态创建并记录一个对应的树对象,如此重复便可依次记录(某个时间段内)一系列的树对象其实树对象是对暂存区内操作的抽象,这颗树对象相对于就是快照。当我们的工作区有任何更改同步到暂存区时。便会调用 write-tree 命令通过 write-tree 命令向暂存区内容写入一个树对象。它会根据当前暂存区状态自动创建一个新的树对象。即每一次同步都产生一颗树对象。且该命令会返回一个 hash 指向树对象,在 Git 中每一个文件(数据)都对应一个类型为blob的hash,每一个树对象都对应一个类型为tree的hash

Git 本地操作(高层命令)

初始化新仓库
解析:要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录,执行:git init
作用:初始化后,在当前目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。不过目前,仅仅是按照既有的结构框架初始化好了里边所有的文件和目录,但我们还没有开始跟踪管理项目中的任何一个文件。

记录每次更新到仓库
工作目录下面的所有文件都不外乎这两种状态:已跟踪未跟踪

git add命令

git init
echo 'tes1 v1' > test.txt
git add ./#执行完这个命令去查看版本库和暂存区
git ls-files -s
find .git/objects -type f

效果如下

以上是对只要一个文件的项目做演示,首次执行git add./会生成一个git文件,那么对于n个文件的项目,首次执行git add./会生成n个git对象,第二次修改了工作目录x个文件后(x <= n),第二次执行git add ./会生成x个git对象;

我们执行git write-tree从暂存区提交git对象到版本库

生成了tree对象提交到了版本库,暂存区还是之前那些git对象,首先我们知道objects文件即版本库是完全增量的,每次执行完git相当于会更新暂存区为当前工作区最新状态,那么版本穿梭的原理是什么呢?tree对象可以代表版本快照,那么我们版本穿梭以tree对象为单位进线穿梭即可,这是为何呢?我们详细观察tree对象,tree对象内容如下

tree对象,代表了当时暂存区将它内容所有最新git对象封装成功的tree对象;整体流程如下

git add ./ 等价于

git hash-object -w 文件名  //其中目录被修改多少次该命令执行多少次
git update-index --add --cacheinfo 文件类型数字代号 文件hash值 文件名

git commit -m ‘注释’ 等价于

git write-tree
git commit-tree

记录每次更新到仓库
工作目录下面的所有文件都不外乎这两种状态:已跟踪 或 未跟踪,已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是已提交,已修改或者已暂存,所有其他文件都属于未跟踪文件。它们既没有上次更新时的快照,也不在当前的暂存区域。初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为已提交;在编辑过某些文件之后,Git 将这些文件标为已修改。我们逐步把这些修改过的文件放到暂存区域,直到最后一次性提交所有这些暂存起来的文件。使用 Git 时的文件状态变化周期如下图所示

git status是确定文件当前处于什么状态

情况一,对刚clone下来的仓库执行git status

On branch master
nothing to commit, working directory clean

这说明你现在的工作目录相当干净。换句话说,所有已跟踪文件在上次提交后都未被更改过。此外,上面的信息还表明,当前目录下没有出现任何处于未跟踪的新文件,否则 Git 会在这里列出来。最后,该命令还显示了当前所在的分支是 master,这是默认的分支名称,实际是可以修改的,现在先不用考虑。

情况二:未跟踪文件

On branch master
Untracked files:(use "git add <file>..." to include in what will be committed)文件名
nothing added to commit but untracked files present (use "git add" to
track)

此时没有对这个文件做任何操作,这个文件处于未暂存状态

情况三:执行git add ./

此时我们发现,文件处于三种已跟踪状态(已提交、已暂存、已修改)中的已暂存状态(暂存待提交状态)

Changes to be committed:(use "git reset HEAD <file>..." to unstage)new file: README

只要在 “Changes to be committed” 这行下面的,就说明是已暂存状态。如果此时提交,那么该文件此时此刻的版本将被留存在历史记录中。在 gitadd 后面可以指明要跟踪的文件或目录路径。如果是目录的话,就说明要递归跟踪该目录下的所有文件。情况

四:我们提交文件,此时文件处于三种已跟踪状态的已提交状态,和刚clone下的项目一样

On branch master
nothing to commit, working directory clean

情况五:我们再修改文件

此时处于已修改状态

情况六:我们先执行git add ./再修改文件,也就是说执行完git add ./后

在修改该目录下的任意文件都有一些提示,也就是说test.txt同时出现两种状态即一次算已修改,一次算已暂存,实际上 Git 只不过暂存了你运行 git add 命令时的版本,如果现在提交,那么提交的是添加注释前的版本,而非当前工作目录中的版本,所以,运行了 git add 之后又作了修订的文件,需要重新运行 git add 把最新版本重新暂存起来:相比之下,情况五,如果是刚执行完commit,在修改目录下文件没有出现情况六这种提示,情况五不也是修改的已跟踪文件,区别在于,执行完commit后,文件状态status会变成working directory clean状态,在此状态下修改任意文件,只是会使git status变为已修改状态而非这种复杂状态,我们这么理解,执行完git add ./ 会生成相关tree对象存到版本库,tree对象代表当前项目版本快照(v1.0),此时你在修改文件,那意味着工作区版本会变为2.0了,此时如果突然执行commit的话,虽然也能commit成功,而且执行完commit,testx.txt就会变为简单的已修改状态,所以这样会造成提交上的版本不是最新的v2.0版本而依然是v1.0版本

实际上 git status 的显示比较简单,仅仅是列出了修改过的文件,如果要查看具体修改了什么地方,可以用 git diff 命令.这个命令它已经能解决我们两个问题了:当前做的哪些更新还没有暂存?有哪些更新已经暂存起来准备好了下次提交?当前做的哪些更新还没有暂存?

  • 当前做的哪些更新还没有暂存?
命令:git diff(不加参数直接输入 git diff)
这里主要数看暂存区和工作区的差异
  • 有哪些更新已经暂存起来准备好了下次提交?
 git diff –cached主要是详细查看暂存区中的内容

总结:git add ./潜台词①会把该目录所有未跟踪的文件标记为已跟踪②把当前目录下所有文件即项目的一次性快照放入到暂存区(暂存区,可以理解为根据kv来存储,key是文件名,value则是对应当前文件最新的hash值,也就是如果修改了文件并对把文件进行了暂存(存入暂存区),那么旧value会被最新的文件的hash值这个value给覆盖住),即add files into staged area
技巧:当暂存区域已经准备妥当可以提交时,在此之前,请一定要确认还有什么修改过的或新建的文件还没有 git add 过,否则提交的时候不会记录这些还没暂存起来的变化。所以,每次准备提交前,先用 git status 看下,是不是都已暂存起来了,然后再运行提交命令 git commit

git commit
这种方式会启动文本编辑器以便输入本次提交的说明默认的提交消息包含最后一次运行 git status 的输出,放在注释行里,另外开头还有一空行,供你输入提交说明。你完全可以去掉这些注释行,不过留着也没关系,多少能帮你回想起这次更新的内容有哪些。

git commit –m “message xxx”
另外也可以用 -m 参数后跟提交说明的方式,在一行命令中提交更新,提交时记录的是放在暂存区域的快照,任何还未暂存的仍然保持已修改状态,可以在下次提交时纳入版本管理。每一次运行提交操作,都是对你项目作一次快照,以后可以回到这个状态,或者进行比较

git commit -a
尽管使用暂存区域的方式可以精心准备要提交的细节,但有时候这么做略显繁琐。Git 提供了一个跳过使用暂存区域的方式,只要在提交的时候,给 gitcommit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤,但是要注意以下几点;对于工作目录已经被跟踪的文件,被跟踪文件被修改后,可以跳过把修改同步到暂存区的步骤直接commit,因为加上-a的作用本身就是Git 就会自动把所有已经跟踪过的文件暂存起来一并提交;

情况七:但前提是已跟踪的文件,如果工作目录存在未跟踪文件,那么需要老老实实的先git add ./ 在git commit,否则根本无法提交成功

正常文件删除,对git来说操作相当于文件状态会变成已修改或者暂存已修改,通过

git rm #等价于删除该文件的同时把修改暂存起来
git nv #等价于修改该文件名的同时把修改暂存起来

修改已提交commitd对象的注释信息

git commit --amend

git本地安装配置与基础概念相关推荐

  1. Android Studio新手–下载安装配置–零基础入门–基本使用–调试技能–构建项目基础–使用AS应对常规应用开发

    转自:http://blog.csdn.net/yanbober/article/details/45306483 目标:Android Studio新手–>下载安装配置–>零基础入门–& ...

  2. easymock本地安装配置

    easymock本地安装配置 1 前期准备 redis4.0 及以上,mongodb 4.0 以上,node v8.1.3,git随便 1.0安装环境 1.1 node安装 使用nvm安装node并切 ...

  3. Spark安装配置和基础编程

    Spark安装配置和基础编程 重要知识点: Spark是一个开源的可应用于大规模数据处理的分布式计算框架,该框架可以独立安装使用,也可以和Hadoop一起安装使用.为了让Spark可以使用HDFS存取 ...

  4. Tomcat安装配置与基础使用

    Tomcat安装配置与基础使用: 以下除了特殊需求,一般来说下面阐述的基础操作占据了日常对tomcat操作80%以上,对于一般开发基本够用. 1.首先配置好JDK环境,可参考以下: http://bl ...

  5. 《大型数据库技术》MySQL数据库安装配置及基础使用

    文章目录 1.下载安装MySQL 1.1 搜索MySQL下载页面 1.2 查看各种MySQL版本 1.3 安装配置MySQL 2.数据库基本操作 2.1 创建数据库 2.2 创建关系表 2.3 插入数 ...

  6. 安装git安装路径在哪_Atom插件安装与git的安装配置

    一.Atom 插件在线安装 1. 安装插件 language-asciidoc ==>语法高亮asciidoc-preview ==>实时预览 在dos 下通过cmd命令安装插件 打开do ...

  7. [625]Git +TortoiseGit安装配置详细步骤

    文章目录 Git安装 TortoiseGit安装 TortoiseGit下载 TortoiseGit安装 TortoiseGit语言包安装 TortoiseGit设置 Git服务器添加密钥 示例 设置 ...

  8. 查看Git本地安装位置

    git安装时没有注意git的安装路径或者忘记git的安装路径,当在idea中配置版本控制器Version Control时,需要填写git.exe文件的位置,这里我用win 10系统进行操作. 操作步 ...

  9. git 本地如何配置多平台账号|本地 git 账号关联远程 github/gitlab/gitee

    一.问题产生背景 工作用的公司 gitlab 账号,自己平常学习用的 github 账号,又只有一个电脑,公司账号当然不能用于github,所以需要分别配置两套密钥,分别用于自己搞事情研究和公司搬砖使 ...

最新文章

  1. Postman使用Date数据类型,Postman发送Date类型数据,Postman模拟前端调用
  2. SpringBoot中的Profile配置的使用
  3. VTK:可视化算法之MarchingCases
  4. mysql核心参数_MySQL技术体系之核心参数
  5. php和mysql一起_PHP和MYSQL数据库合理且有效的结合在一起_MySQL
  6. [Java] 蓝桥杯ALGO-100 算法训练 整除问题
  7. 认识 Express 的 res.send() 和 res.end()
  8. oracle杅擂踱阀葩,Oracle常用傻瓜问题1000问
  9. 2019-4(2)-数据挖掘学习笔记
  10. HBase伪分布式搭建
  11. 公式推导以及代码书写 11-26
  12. x1c更改语言系统后开机超慢,大明:电脑重装系统后一个月变慢?简单五步设置,解决卡慢问题...
  13. 传智播客黑马java 30期_黑马传智播客JavaEE57期 2019最新基础+就业+在职加薪_汇总...
  14. 客户端到服务器端的通信过程及 原理图很好
  15. 中南大学计算机学院复试2021,中南大学2021年硕士研究生拟录取名单汇总
  16. [教程] PSP 5.00M33-6升级图文教程
  17. 机器学习算法 09-02 TensorFlow核心概念 TensorFlow基础代码、TensorFlow线性回归解析解和BGD求法
  18. IDEA环境下SpringBoot项目,@Resource或@Autowired报错could not autowire
  19. 如何创建一个SpringBoot项目
  20. 《基础会计学》期末模拟试题及答案

热门文章

  1. js中的数组Array定义与sort方法使用示例
  2. 删除VisaulStudio2010产生的垃圾
  3. jQuery——入门(三)JQuery DOM操作(核心处理和文档处理)
  4. 用jQuery实现banner图片切换
  5. 入门机器学习(十二)--课后作业解析-偏差与方差(Python 实现)
  6. 4023-基于双向链表的双向冒泡排序法
  7. php mongo 范围查询语句,【MongoDB】数组和范围查询的相互作用
  8. CDH spark2切换成anaconda3的问题
  9. SQL Server遍历表(临时表)
  10. JavaScript求两点之间相对于Y轴的顺时针旋转角度