{"id":37100710,"url":"https://github.com/jokechat/snowflake","last_synced_at":"2026-01-14T12:15:29.472Z","repository":{"id":203542906,"uuid":"709849763","full_name":"jokechat/snowflake","owner":"jokechat","description":null,"archived":false,"fork":false,"pushed_at":"2025-10-03T10:10:13.000Z","size":49,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-03T12:12:07.906Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jokechat.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-10-25T14:16:59.000Z","updated_at":"2025-10-03T10:09:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"88c18d65-369b-41c8-80d5-6a773530e525","html_url":"https://github.com/jokechat/snowflake","commit_stats":null,"previous_names":["jokechat/snowflake"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/jokechat/snowflake","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jokechat%2Fsnowflake","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jokechat%2Fsnowflake/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jokechat%2Fsnowflake/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jokechat%2Fsnowflake/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jokechat","download_url":"https://codeload.github.com/jokechat/snowflake/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jokechat%2Fsnowflake/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28419778,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T10:47:48.104Z","status":"ssl_error","status_checked_at":"2026-01-14T10:46:19.031Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-14T12:15:28.796Z","updated_at":"2026-01-14T12:15:29.446Z","avatar_url":"https://github.com/jokechat.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"由图我们可以看出来，snowFlake ID结构是一个64bit的int型数据。\n\n    第1位bit\n\n在二进制中最高位为1，表示的是负数，因为我们使用的id应该都是整数，所以这里最高位应该是0。\n\n    41bit时间戳\n\n41位可以表示2^41-1个数字，如果只用来表示正整数，可以表示的数值范围是：0 - (2^41 -1)，这里减去1的原因就是因为数值范围是从0开始计算的，而不是从1开始的。\n\n这里的单位是毫秒，所以41位就可以表示2^41-1个毫秒值，这样转化成单位年则是(2^41-1)/(1000 * 60 * 60 * 24 * 365) = 69\n\n    10bit-工作机器id\n\n这里是用来记录工作机器的id。2^10=1024表示当前规则允许分布式最大节点数为1024个节点。这里包括5位的workerID和5位的dataCenterID，这里其实可以不区分，但我下面的代码进行了区分。\n\n    12bit-序列号\n\n用来记录同毫秒内产生的不同id。12bit可以表示的最大正整数是2^12-1=4095，即可以用0,1,2,3,......4094这4095个数字，表示同一机器同一时间戳(毫秒)内产生的4095个ID序号。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjokechat%2Fsnowflake","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjokechat%2Fsnowflake","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjokechat%2Fsnowflake/lists"}