日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

objectid.go源码阅读

發布時間:2023/12/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 objectid.go源码阅读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*http://docs.mongodb.org/manual/reference/object-id/ObjectId 按照字節順序,一次代表ObjectId is a 12-byte BSON type, constructed using:4個字節代表1970年元月一日到現在毫秒數 UNIX時間戳a 4-byte value representing the seconds since the Unix epoch,3個字節代表機器的唯一標識符 表示運行的機器a 3-byte machine identifier,2個字節代表進程的id 表示生成此_id的進程a 2-byte process id, and3個字節代表計數器,開始帶著一個隨機數 由一個隨機數開始的計數器生成的值a 3-byte counter, starting with a random value.
*/
package objectid
import (????"crypto/md5"????"encoding/hex"????"fmt"????"math/rand"????"os"????"sync/atomic"????"time")
var staticMachine = getMachineHash() //獲取機器的idvar staticIncrement = getRandomNumber()//獲取隨機數var staticPid = int32(os.Getpid())//獲取進程id//type ObjectId struct {????timestamp int64????machine int32????pid int32????increment int32}//func New() *ObjectId {????timestamp := time.Now().Unix()????return &ObjectId{timestamp, staticMachine, staticPid, atomic.AddInt32(&staticIncrement, 1) & 0xffffff}}//func Parse(input string) *ObjectId {????if len(input) == 0 {????????panic("The input is empty.")????}????if value, ok := tryParse(input); ok {????????return value????}????panic(fmt.Sprintf("%s is not a valid 24 digit hex string.", input))}//func (this *ObjectId) Timestamp() int64 {????return this.timestamp}//func (this *ObjectId) Machine() int32 {????return this.machine}//func (this *ObjectId) Pid() int32 {????return this.pid}//func (this *ObjectId) Increment() int32 {????return this.increment & 0xffffff}//func (this *ObjectId) CreationTime() time.Time {????return time.Unix(this.timestamp, 0)}//func (this *ObjectId) Equal(other *ObjectId) bool {????return this.timestamp == other.timestamp &&????????this.machine == other.machine &&????????this.pid == other.pid &&????????this.increment == other.increment}//func (this *ObjectId) String() string {????array := []byte{????????byte(this.timestamp >> 0x18),????????byte(this.timestamp >> 0x10),????????byte(this.timestamp >> 8),????????byte(this.timestamp),????????byte(this.machine >> 0x10),????????byte(this.machine >> 8),????????byte(this.machine),????????byte(this.pid >> 8),????????byte(this.pid),????????byte(this.increment >> 0x10),????????byte(this.increment >> 8),????????byte(this.increment),????}????return hex.EncodeToString(array)}//獲取機器唯一標識符func getMachineHash() int32 {????machineName, err := os.Hostname()????if err != nil {????????panic(err)????}????buf := md5.Sum([]byte(machineName))????return (int32(buf[0])<<0x10 + int32(buf[1])<<8) + int32(buf[2])}//獲取隨機數開始的計數器生成的值func getRandomNumber() int32 {????rand.Seed(time.Now().UnixNano())????return rand.Int31()}//從字符串objectid 解析成為ObjectIdfunc tryParse(input string) (*ObjectId, bool) {????if len(input) != 0x18 {????????return nil, false????}????array, err := hex.DecodeString(input) //十六進制的字符串 轉化為字節切片 ????if err != nil {????????return nil, false????}????return &ObjectId{????????timestamp: int64(array[0])<<0x18 + int64(array[1])<<0x10 + int64(array[2])<<8 + int64(array[3]), //轉化為十進制的int64 新紀元時間 毫秒????????machine: int32(array[4])<<0x10 + int32(array[5])<<8 + int32(array[6]), //轉化為十進制的int32數據 機器唯一標識符????????pid: int32(array[7])<<8 + int32(array[8]), // 當前進程id????????increment: int32(array[9])<<0x10 + (int32(array[10]) << 8) + int32(array[11]), // 隨機數開始的計數器生成的值????}, true}

轉載于:https://www.cnblogs.com/zhangboyu/p/7461907.html

總結

以上是生活随笔為你收集整理的objectid.go源码阅读的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91porny九色| 黄色三级带 | 日本va在线 | 福利在线视频观看 | 日韩欧美成人精品 | 神马一区二区三区 | 噼里啪啦动漫高清在线观看 | 综合国产在线 | 亚洲免费黄网 | 黄色靠逼视频 | 亚洲天堂2020 | 国产精品一级视频 | 最新中文字幕在线播放 | 黄色片女人 | 成片免费观看视频大全 | 在哪里可以看毛片 | 国产日产亚洲精品 | 高清视频在线免费观看 | 亚洲综合色在线 | 久久精品人妻一区二区三区 | 国产乱人伦 | 69av导航| www.黄色| 日日碰狠狠添天天爽 | 爱爱视频天天干 | 色婷在线 | 波多野吉衣视频在线观看 | 人人妻人人藻人人爽欧美一区 | 99精品影视 | 亚洲精品中文字幕成人片 | 久久久精品国产免费爽爽爽 | 在线只有精品 | 日韩精品区 | 国产91视频播放 | 久久久永久久久人妻精品麻豆 | 国产噜噜噜噜久久久久久久久 | 激情六月天 | 蜜臀久久99精品久久久久久宅男 | 一级一级黄色片 | 伊人久久一区 | 免费的a级片| 男人桶进美女尿囗 | 一级黄色片网址 | 欧美影音| 久久久久久久久99精品 | 超碰伦理| 人操人爽| 97精品久久 | 可以免费看黄的网站 | 黄色一级网 | 97视频在线观看免费高清完整版在线观看 | 青青草综合在线 | 欧美在线视频免费播放 | 成人午夜免费在线观看 | 潘金莲黄色一级片 | 超碰av男人的天堂 | 三级视频黄色 | 九九香蕉视频 | 日本视频免费看 | 亚洲涩涩在线 | 99精品在线看 | 欧美成人hd | 国产91网址| 九九在线精品视频 | 久久久精品影院 | 日韩美女福利视频 | 久久99国产精品一区 | 波多野结衣亚洲一区二区 | 一本之道高清无码视频 | 婷婷综合| 东方欧美色图 | 97视频在线观看免费高清完整版在线观看 | av夜夜操 | 美女福利在线观看 | 福利二区三区 | 美女午夜影院 | 亚洲欧美国产一区二区三区 | 美女网站在线看 | 色999五月色 | 2024av视频 | 51妺嘿嘿午夜福利 | 欧美另类视频在线观看 | 体内精69xxxxx | 91视频在线观看 | 成人免费福利 | 国产爽视频 | 伊人热久久 | 欧美阿v | 成人久久久 | 日本视频一区二区 | 熟女俱乐部五十路六十路av | 久久久男女 | 午夜伦伦电影理论片费看 | 色偷偷888欧美精品久久久 | www.日韩在线观看 | 国产精品无码一区二区三区在线看 | 人妻熟人中文字幕一区二区 | 中文字幕av第一页 | 欧美日韩视频无码一区二区三 |