我有一个 PostgreSQL 数据库,有 2 列:id (UUID)、company_url (varchar),具有以下值:
2fc35af4-5f5c-445e-86c5-01d93513b8be | https://test.com
2bf31b75-d1f3-4a9c-a530-73b714816e9e | https://test2.com
Run Code Online (Sandbox Code Playgroud)
以下是使用 Go 访问表的代码(为简单起见,省略了错误处理和凭据):
package main
import (
"fmt"
"database/sql"
"github.com/google/uuid"
_ "github.com/lib/pq"
)
func main() {
connStr := "host= password= port= dbname= user="
db, _ := sql.Open("postgres", connStr)
rows, _ := db.Query("SELECT * FROM companies;")
for rows.Next() {
// var id [16]byte // not ok
var id uuid.UUID // ok
var companyURL string
rows.Scan(&id, &companyURL)
fmt.Println(id, companyURL)
}
}
Run Code Online (Sandbox Code Playgroud)
还有一个用于UUID的 Go 包。在其源代码中,UUID 简单地定义为
type UUID …
Run Code Online (Sandbox Code Playgroud) #include <stdio.h>
#include <stdlib.h>
#include <uuid/uuid.h>
int main(void) {
puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
uuid_t uuid;
int uuid_generate_time_safe(uuid);
printf("%x",uuid);
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
我只是想知道为什么uuid不是16字节长?我用DEBUG查看内存,确实不是16字节.我使用libpcap开发我的程序,uuid并不是唯一的.
据我了解,UUID 包含一组字符,根据 RFC 4122,这些字符分为 5 组,采用 8-4-4-4-12 字符模式。示例:123e4567-e89b-12d3-a456-42661417400
我正在使用 Google 的流行库来解析 UUID ( https://github.com/google/uuid )。该库特别解析两者123e4567-e89b-12d3-a456-42661417400
并且123e4567e89b12d3a456426614174000
没有任何错误。
我应该按照 RFC 4122 解析潜在的 UUID。但我不确定 RFC 4122 是否认为123e4567e89b12d3a456426614174000
与123e4567-e89b-12d3-a456-42661417400
. 我没有在官方文档中找到任何说明未连字符(或破折号)的 UUID 是否有效的材料。
请分享你的看法,谢谢。
我有一个如下代码:
D00077B4-EBFB-4BD8-9E3F-1F3943CBCE35
Run Code Online (Sandbox Code Playgroud)
我想知道如何在Java中生成这样的代码.