原创 go gorm 更新的時候不會更新空字段

做個記錄,gorm在更新字段的時候,如果字符串字段是空的,那麼將不會更新到數據庫。 在使用gorm將一個字段更新爲空的時候,發現並不生效,不瞭解具體什麼原因,所以此時需要打開debug模式,查看原生SQL是如何執行的。   type St

原创 go gorm 軟刪除和查詢

軟刪除 如果您的模型包含了一個 gorm.deletedat 字段(gorm.Model 已經包含了該字段),它將自動獲得軟刪除的能力! 擁有軟刪除能力的模型調用 Delete 時,記錄不會從數據庫中被真正刪除。但 GORM 會將 Dele

原创 go defer修改返回值

golang在defer修改返回值時需要格外注意! 如果未提前聲明返回值的話,在defer中修改返回值是無效的操作。原因如下: package main func test1() int { i := 1 defer func() {

原创 Go中for range的時候,地址是否發生變化

1,回答問題之前,先看下面這段代碼   package main import "fmt" type girl struct { Name string Age int } func main() { gl := make(m

原创 基於truffle進行合約部署

1.Truffle 簡介 1.1.什麼是 Truffle ? Truffle 是一個世界級的開發環境,測試框架,以太坊的資源管理通道,致力於讓以太坊上的開發變得簡單。 Truffle 有以下特性: 內置的智能合約編譯,鏈接,部署和二進制文件

原创 Go 語言中,函數的參數傳遞--值傳遞

在 Go 語言中,函數的參數傳遞是值傳遞的方式。當函數被調用時,函數參數的值會被拷貝到函數的參數變量中。 對於指針類型的參數,指針本身也是以值的方式進行傳遞。這意味着函數內部的指針參數將獲得原始指針的拷貝,但這個拷貝仍然指向相同的內存地址。

原创 mysql 頁級鎖

頁級鎖是 MySQL 中鎖定粒度介於行級鎖和表級鎖中間的一種鎖。表級鎖速度快,但衝突多,行級衝突少,但速度慢。因此,採取了折衷的頁級鎖,一次鎖定相鄰的一組記錄。BDB 引擎支持頁級鎖。   從上到下,鎖的粒度逐漸細粒化, 但實現開銷逐漸增

原创 在 Go-Kratos 框架中優雅的使用 GORM 完成事務

準備工作 創建新項目 kratos new helloworld cd helloworld # 拉取項目依賴 go mod download # 項目中的 config 等請自行修改   添加事務 如果您還不瞭解 Kratos、

原创 NFT的"transaction"(交易)和"NFT transfer"(NFT轉移)

在以太坊中,"NFT"代表非同質化代幣(Non-Fungible Token)。對於NFT,有兩個相關的概念:NFT的"transaction"(交易)和"NFT transfer"(NFT轉移)。 NFT Transaction(NF

原创 以太坊交易信息中的logs和topics概念

1. 看一個logs和topics的交易記錄: Topics中的 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef是啥意思呢?   1.1.合約交易關鍵字

原创 區塊鏈的"token"和"NFT"

在區塊鏈中,"token"和"NFT"(Non-Fungible Token)是兩個常見的概念。 Token(代幣):Token是在區塊鏈上表示某種資產或價值的數字化單位。它可以代表各種不同類型的資產,如貨幣、權益、商品、服務或其他實物

原创 evm體系中data和value的區別

在區塊鏈中,data和value是兩個不同的字段,具有不同的含義和用途。 1.data字段: data字段用於存儲任意的數據,可以是交易數據、智能合約代碼、文本註釋等。 在以太坊和其他智能合約平臺中,data字段通常用於傳遞智能合約的調用或

原创 mysql 全局鎖

1.全局鎖就是對整個數據庫實例加鎖。MySQL 提供了一個加全局讀鎖的方法,命令是Flush tables with read lock ,即FTWRL。 MySQL全局鎖是一種數據庫級別的鎖,用於在執行特定操作時阻塞其他會話對數據庫的訪

原创 把bsc的合約代碼部署到opbnb

1. 找到bsc已經正式部署的合約 https://bscscan.com/   2. 拷貝Contract Source Code 把文件導出爲xxx.sol   3. 把導出的sol文件導入remix編輯器 打開remix編輯器 h

原创 mysql 表級鎖之一lock table

1.lock table t1 read: 1.1.當前線程: 讀/寫當前表/其他表: unlock tables; lock table t1 read; select * from t1; INSERT INTO `t1` (`c2`,