主頁 > 後端開發 > 大牛總結的 Git 使用技巧,寫得太好了!

大牛總結的 Git 使用技巧,寫得太好了!

2020-09-30 09:58:38 後端開發

作者:你喜歡吃青椒么
juejin.im/post/5d157bf3f265da1bcc1954e6

前言

本文是參考廖雪峰老師的Git資料再加上我自己對Git的理解,記錄我的Git學習歷程,作下此文是為以后學習,作業,開發中如果遇到問題可以回過頭來參考參考,因為水平有限,難免會有出錯的地方,歡迎指正,

Git是什么

官方話:Git是一個免費的開源分布式版本控制系統,旨在快速高效地處理從小型到大型專案的所有事務,

參考廖雪峰老師的話,它能自動幫我記錄每次檔案的改動,還可以讓同事協作編輯,這樣就不用自己管理一堆類似的檔案了,也不需要把檔案傳來傳去,如果想查看某次改動,只需要在軟體里瞄一眼就可以,

為什么要學習Git

  • 面試要被問,可以應付面試,

  • 很多公司開發都用Git來處理專案,現在不學,以后肯定還要學,

  • 在我看來Git是現如今所有程式員都要掌握的,以后與同事共同開發專案必定要用到的,熟練掌握Git命令,可以提高開發的效率,

安裝Git

Windows

直接在官網上去下載,下載完成后,隨便在某個檔案下右鍵如果有Git Bash Here就安裝成功,安裝后,還要在命令列輸入

$git config --global user.name "你的名字"
$git config --global user.email "你的郵箱"

global表示全域,這臺機器所有的Git倉庫都會使用這個配置,允許單個倉庫使用其他的名字和郵箱,

Mac

Mac也可以像Windows一樣,按上面的步驟安裝,

也可以直接從AppStore安裝Xcode,Xcode集成了Git,不過默認沒有安裝,你需要運行Xcode,選擇選單“Xcode”->“Preferences”,在彈出視窗中找到“Downloads”,選擇“Command Line Tools”,點“Install”就可以完成安裝了,

倉庫

本地倉庫是對于遠程倉庫而言的,本地倉庫 = 作業區 + 版本區,

  • 作業區即磁盤上的檔案集合,

  • 版本區(版本庫)即.git檔案,

  • 版本庫 = 暫存區(stage) + 分支(master) + 指標Head,

以我使用最頻繁的git命令為例,即提交到github為例,

  • git init 原本本地倉庫只包含著作業區,這是最常見的作業狀態,此時,git init一下,表示在本地區域創建了一個.git檔案,版本區建立,

  • git add . 表示把作業區的所有檔案全部提交到版本區里面的暫存區

  • 當然你也可以通過 git add ./xxx/ 一條一條分批添加到暫存區,

  • git commit -m "xxx" 把暫存區的所有檔案提交到倉庫區,暫存區空空蕩蕩,

  • git remote add origin https://github.com/name/name_cangku.git 把本地倉庫與遠程倉庫連接起來,

  • git push -u origin master 把倉庫區的檔案提交到遠程倉庫里,

  • 一旦提交后,如果你又沒有對作業區做任何修改,那么作業區就是“干凈”的,會有這樣的資訊nothing to commit, working tree clean

提交到GitHub

以前不熟悉git命令的時候,我提交專案到github上都是直接在網頁上直接拉取檔案提交上去的,有點羞恥,

  • git init .初始化,表示把這個檔案變成Git可以管理的倉庫,初始化后打開隱藏的檔案可以看到有一個.git檔案,

  • git add . 后面的一個點表示把這個檔案全部提交到暫存區,

  • git add ./readme.md/ 表示把這個檔案下面的readme.md檔案提交到暫存區,

  • git commit -m "你要評論一點什么東西" git commit的意思是把暫存區的全部檔案提交到本地倉庫,-m后接評論,

  • git remote add origin https://github.com/name/name_cangku.git表示把你本地的倉庫與GitHub上的遠程倉庫連接起來,只需要連接一次,以后提交的時候就可以不用謝這條命令了,name是你的github名字,name_cangku是你的倉庫名,注意不要把后面的.git給漏掉了,因為我前面就是這么走過來的,繞了很多彎路,至于如何在GitHub上新建倉庫,網上有很多教程,這里不再贅述了,

  • git push -u origin master 把本地倉庫提交到遠程倉庫,(最后一步)在你的遠程倉庫上重繪一下就可以看到你提交的檔案了,

  • 最后提到的是,在git commit -m ""之前,可以重復git add到暫存區,但是git commit會把你之前存放在暫存區的全部檔案一次性全部提交到本地倉庫,

版本的回溯與前進

提交一個檔案,有時候我們會提交很多次,在提交歷史中,這樣就產生了不同的版本,每次提交,Git會把他們串成一條時間線,如何回溯到我們提交的上一個版本,用git reset --hard + 版本號即可,版本號可以用git log來查看,每一次的版本都會產生不一樣的版本號,

回溯之后,git log查看一下發現離我們最近的那個版本已經不見了,但是我還想要前進到最近的版本應該如何?只要git reset --hard + 版本號就行,退一步來講,雖然我們可以通過git reset --hard + 版本號,靠記住版本號來可以在不同的版本之間來回穿梭,

但是,有時候把版本號弄丟了怎么辦?git reflog幫你記錄了每一次的命令,這樣就可以找到版本號了,這樣你又可以通過git reset來版本穿梭了,

撤銷

場景1:在作業區時,你修改了一個東西,你想撤銷修改,git checkout -- file,廖雪峰老師指出撤銷修改就回到和版本庫一模一樣的狀態,即用版本庫里的版本替換作業區的版本,

場景2:你修改了一個內容,并且已經git add到暫存區了,想撤銷怎么辦?回溯版本,git reset --hard + 版本號,再git checkout -- file,替換作業區的版本,

場景3:你修改了一個內容,并且已經git commit到了master,跟場景2一樣,版本回溯,再進行撤銷,

洗掉

如果你git add一個檔案到暫存區,然后在作業區又把檔案洗掉了,Git會知道你洗掉了檔案,如果你要把版本庫里的檔案洗掉,git rm 并且git commit -m "xxx".

如果你誤刪了作業區的檔案,怎么辦?使用撤銷命令,git checkout --就可以,這再次證明了撤銷命令其實就是用版本庫里的版本替換作業區的版本,無論作業區是修改還是洗掉,都可以“一鍵還原”,

分支

分支,就像平行宇宙,廖雪峰老師如是說,你創建了一個屬于你自己的分支,別人看不到,還繼續在原來的分支上正常作業,而你在自己的分支上干活,想提交就提交,直到開發完畢后,再一次性合并到原來的分支上,這樣,既安全,又不影響別人作業,用 Git 和 Github 提高效率的 10 個技巧!這篇也推薦看下,

創建與合并分支

在沒有其他分支插進來時,只有一個master主分支,每次你git push -u origin master 提交就是增加一條時間軸,master也會跟著移動,

創建一個other的分支,通過other提交,雖然時間軸向前走了,但是主分支master還在原來的位置,

理論分析完,看一下命令怎么寫,

創建分支other,切換到other分支,

git branch other
git checkout other

查看當前所有分支

git branch
* other  master

當前的分支會有一個*

用other提交

git add ./xxx/
git commit -m "xxx"

other分支完成,切換回master

git checkout master

此時,master分支上并沒有other的檔案,因為分支還沒有合并,

合并分支

git merge other

合并完成之后,就可以在master分支上查看到檔案了,

洗掉other分支

git branch -d other

我由此想到,在以后作業中,應該是一個開放小組共同開發一個專案,組長會創建很多分支,每一個分支可以交給一個人去開發某一個功能,一個小組共同開發而且不會相互干擾,誰的功能完成了,可以由組長合并一下完成了的分支,哦,完美!

解決合并分支問題

假如有這樣一種情況,分支other已經commit了,但是此時指標指回master時,并且master沒有合并,而是git add / commit 提交了,這樣,就產生了沖突,主分支master檔案內容與other分支的內容不一樣,合并不起來!所以,

  • 修改檔案的內容,讓其保持一致,

  • git add git commit 提交,

  • 分支合并了,

  • git log --graph 查看分支合并圖

  • git branch -d other 洗掉分支,任務結束,

分支管理策略

git merge --no-ff other 禁用Fast forward模式,因為使用Fast forward模式,洗掉分支后,分支歷史資訊會丟失,超詳細的 Git 實戰教程,傻瓜一看也會!這篇也推薦看下,

BUG分支

廖雪峰老師提到,作業中每個bug都可以通過一個新的臨時分支來修復,修復后,合并分支,然后將臨時分支洗掉,但如果你手上有分支在作業中,你的上級要你改另外的分支的BUG,

你要把現在正在作業的分支保存下來,git stash,把當前作業現場“存盤”起來,等以后恢復后繼續作業,當你解決BUG后,git checkout other回到自己的分支,用git stash list查看你剛剛“存放”起來的作業去哪里了,

此時你要恢復作業:

  • git stash apply恢復卻不洗掉stash內容,git stash drop洗掉stash內容,

  • git stash pop恢復的同時把stash內容也刪了.

  • 此時,用git stash list查看,看不到任何stash 內容,

總結:修復bug時,我們會通過創建新的bug分支進行修復,然后合并,最后洗掉;當手頭作業沒有完成時,先把作業現場git stash一下,然后去修復bug,修復后,再git stash pop,回到作業現場

洗掉分支

  • git branch -d + 分支有可能會洗掉失敗,因為Git會保護沒有被合并的分支,

  • git branch -D + 分支 強行洗掉,丟棄沒被合并的分支,

多人協作

  • git remote 查看遠程庫的資訊,會顯示origin,遠程倉庫默認名稱為origin

  • git remote -v顯示更詳細的資訊

  • git push -u origin master推送master分支到origin遠程倉庫,

  • git push -u origin other 推送other到origin遠程倉庫,

抓取分支

產生上圖的沖突時,

  • git pull 把最新的提交從遠程倉庫中抓取下來,在本地合并,解決沖突,在進行git pull

  • 如果git pull 也失敗了,還要指定分支之間的鏈接,這一步Git會提醒你怎么做,然后再git pull,

廖雪峰老師的總結:多人協作的作業模式通常是這樣:

  • 首先,可以試圖用git push origin

    推送自己的修改;

  • 如果推送失敗,則因為遠程分支比你的本地更新,需要先用git pull試圖合并;

  • 如果合并有沖突,則解決沖突,并在本地提交;

  • 沒有沖突或者解決掉沖突后,再用git push origin

    推送就能成功!

  • 如果git pull提示no tracking information,則說明本地分支和遠程分支的鏈接關系沒有創建,用命令git branch --set-upstream-to origin/,

Rebase

git rebase 把分叉的提交歷史“整理”成一條直線,看上去更直觀.缺點是本地的分叉提交已經被修改過了,

最后在進行git push -u origin master

rebase的目的是使得我們在查看歷史提交的變化時更容易,因為分叉的提交需要三方對比,

標簽管理

比如一個APP要上線,通常在版本庫中打一個標簽(tag),這樣,就確定了打標簽的版本,將來無論什么時候,取某個標簽的版本,就是把那個打標簽的時刻的歷史版本取出來,所以,標簽也是版本庫的一個快照,

Git的標簽雖然是版本庫的快照,但其實它就是指向某個commit的指標,

tag其實就是一個讓人容易記住的有意義的名字,它跟某個commit綁在一起,比如tag v2.1就是把歷史上的一個版本的東西叫做v2.1

創建標簽

步驟:

  • git branch查看當前分支,git checkout master切換到master分支,

  • git tag 打標簽,默認為HEAD,比如git tag v1.0

  • 默認標簽是打在最新提交的commit上的,如果想要打標簽在以前的commit上,要git log找到歷史提交的commit id.

  • 如果一個commt id是du2n2d9,執行git tag v1.0 du2n2d9就把這個版本打上了v1.0的標簽了,

  • git tag 查看所有標簽,可以知道歷史版本的tag

  • 標簽不是按時間順序列出,而是按字母排序的,

  • git show 查看標簽資訊,

  • git tag -a <標簽名> -m "<說明>",創建帶說明的標簽,-a指定標簽名,-m指定說明文字,用show可以查看說明,

操作標簽

  • git tag -d v1.0 洗掉標簽,因為創建的標簽都只存盤在本地,不會自動推送到遠程,所以,打錯的標簽可以在本地安全洗掉,

  • git push origin 推送某個標簽到遠程

  • git push origin --tags 一次性推送全部尚未推送到遠程的本地標簽

  • 如果標簽推送到遠程,git tag -d v1.0 先洗掉本地標簽v1.0,git push origin :refs/tags/v1.0洗掉遠程標簽v1.0

自定義Git

  • git config --global color.ui true讓Git顯示顏色,會讓命令輸出看起來更醒目

  • 忽略特殊檔案 創建一個.gitignore檔案,把需要忽略的檔案名填進去,Git就會自動忽略這些檔案,我也在學習中遇到過這樣的問題,比如node_modules檔案就可以忽略,

忽略檔案原則:忽略作業系統自動生成的檔案,比如縮略圖等;忽略編譯生成的中間檔案、可執行檔案等,也就是如果一個檔案是通過另一個檔案自動生成的,那自動生成的檔案就沒必要放進版本庫,比如Java編譯產生的.class檔案;忽略你自己的帶有敏感資訊的組態檔,比如存放口令的組態檔,

  • 強制提交已忽略的的檔案,git add -f

  • git check-ignore -v 檢查為什么Git會忽略該檔案,

  • 給Git命令配別名,這個有點騷,就是你以后想輸入git rebase時,你給它一個“外號”,就叫它git nb,以后你可以通過git nb來代替git rebase,

常用Git命令總結

  • git config --global user.name "你的名字" 讓你全部的Git倉庫系結你的名字

  • git config --global user.email "你的郵箱" 讓你全部的Git倉庫系結你的郵箱

  • git init 初始化你的倉庫

  • git add . 把作業區的檔案全部提交到暫存區

  • git add .// 把作業區的檔案提交到暫存區

  • git commit -m "xxx" 把暫存區的所有檔案提交到倉庫區,暫存區空空蕩蕩

  • git remote add origin https://github.com/name/name_cangku.git 把本地倉庫與遠程倉庫連接起來

  • git push -u origin master 把倉庫區的主分支master提交到遠程倉庫里

  • git push -u origin <其他分支> 把其他分支提交到遠程倉庫

  • git status查看當前倉庫的狀態

  • git diff 查看檔案修改的具體內容

  • git log 顯示從最近到最遠的提交歷史

  • git clone + 倉庫地址下載克隆檔案

  • git reset --hard + 版本號 回溯版本,版本號在commit的時候與master跟隨在一起

  • git reflog 顯示命令歷史

  • git checkout -- 撤銷命令,用版本庫里的檔案替換掉作業區的檔案,我覺得就像是Git世界的ctrl + z

  • git rm 洗掉版本庫的檔案

  • git branch 查看當前所有分支

  • git branch <分支名字> 創建分支

  • git checkout <分支名字> 切換到分支

  • git merge <分支名字> 合并分支

  • git branch -d <分支名字> 洗掉分支,有可能會洗掉失敗,因為Git會保護沒有被合并的分支

  • git branch -D + <分支名字> 強行洗掉,丟棄沒被合并的分支

  • git log --graph 查看分支合并圖

  • git merge --no-ff <分支名字> 合并分支的時候禁用Fast forward模式,因為這個模式會丟失分支歷史資訊

  • git stash 當有其他任務插進來時,把當前作業現場“存盤”起來,以后恢復后繼續作業

  • git stash list 查看你剛剛“存放”起來的作業去哪里了

  • git stash apply 恢復卻不洗掉stash內容

  • git stash drop 洗掉stash內容

  • git stash pop 恢復的同時把stash內容也刪了

  • git remote 查看遠程庫的資訊,會顯示origin,遠程倉庫默認名稱為origin

  • git remote -v 顯示更詳細的資訊

  • git pull 把最新的提交從遠程倉庫中抓取下來,在本地合并,和git push相反

  • git rebase 把分叉的提交歷史“整理”成一條直線,看上去更直觀

  • git tag 查看所有標簽,可以知道歷史版本的tag

  • git tag 打標簽,默認為HEAD,比如git tag v1.0

  • git tag <版本號> 把版本號打上標簽,版本號就是commit時,跟在旁邊的一串字母數字

  • git show 查看標簽資訊

  • git tag -a -m "<說明>" 創建帶說明的標簽,-a指定標簽名,-m指定說明文字

  • git tag -d 洗掉標簽

  • git push origin 推送某個標簽到遠程

  • git push origin --tags 一次性推送全部尚未推送到遠程的本地標簽

  • git push origin :refs/tags/ 洗掉遠程標簽

  • git config --global color.ui true 讓Git顯示顏色,會讓命令輸出看起來更醒目

  • git add -f 強制提交已忽略的的檔案

  • git check-ignore -v 檢查為什么Git會忽略該檔案

關注公眾號Java技術堆疊回復"面試"獲取我整理的2020最全面試題及答案,

推薦去我的博客閱讀更多:

1.Java JVM、集合、多執行緒、新特性系列教程

2.Spring MVC、Spring Boot、Spring Cloud 系列教程

3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程

4.Java、后端、架構、阿里巴巴等大廠最新面試題

覺得不錯,別忘了點贊+轉發哦!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/141655.html

標籤:Java

上一篇:Mac下安裝配置Maven并在IDEA中配置

下一篇:創建執行緒池注意、自定義執行緒池

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more