- 博客(23)
- 收藏
- 关注
原创 Gin框架简易搭建(3)--Grom与数据库
个人认为GORM 指南这个网站是相比较之下最为清晰的框架介绍但是它在环境搭建阶段对于初学者而言不是很友好,尤其是使用mysql指令稍有不同,以及更新的方法和依赖问题都是很让人头疼的,而且这些报错并非逻辑上的,往往是网络端口,数据库创建等没有接触过的内容,因此我建议可以在学习使用增删改查的操作时看框架教程,配置环境使用以下的学习步骤:首先,下载mysql,以及三选一mysqlshellnavicatdbreaver。
2024-09-27 00:44:30 946
原创 Gin框架入门(2)--异常捕获与日志实现
Go语言的异常捕获采用的是的方法实现的,实际上就是利用defer,panic和recover三个关键字和函数来实现的。
2024-09-22 22:09:42 740
原创 Gin框架入门(1)--路由搭建与Json处理
因此在一个包的不同文件中(可能是针对不同的对象),容易引起函数的重载。这种实现方法容易讲清楚实现的方式和包之间相互调用的原理。但是,由于Go语言管理函数的方式是。我们在order文件中实现(这种方法的路由部分是不需要改动的)方法是如何调用的,之后再去看下一种常见的方法。在前后端传输数据的时候,常用的方法就是使用。格式,而在Gin框架中,想要创建使用。user.goJson响应的方法。只需要使用一个空的类,就可以把。common.go响应的信息。我们在user文件中实现。<包名称>.<函数>
2024-09-22 15:35:29 1208
原创 golang的sync包浅析
这个类是用来实现go中并发任务同步的。方法名功能计数器+delta计数器-1阻塞直到计数器变为0sync.WaitGroup内部维护着一个计数器,计数器的值可以增加和减少。例如当我们启动了N 个并发任务时,就将计数器值增加N。每个任务完成时通过调用Done()方法将计数器减1。通过调用Wait()来等待并发任务执行完,当计数器值为0时,表示所有并发任务已经完成。,这个语句往往放在将要并发的函数的第一行,来确保这个函数并发进程完成之后计数器会减一wg.Add(1)
2024-09-18 18:55:55 1110
原创 多态与接口(Golang)
我们可以发现,只要是父类实现了某个方法,那么子类就可以使用该方法而无需自己实现,但问题就是该方法调用的成员变量只能是子类嵌套里面的(就像在实例里面,我在每个父类中都创建了Name:“智能手机”这个东西)。这和函数的原则是很类似的:每个接口(函数)实现的功能很少,这样可以使这个接口(函数)的使用率提高和适用场景增多。也就是说,我们创建的这个智能手机接口,会优先使用自己类的方法,其次再去使用继承别人的方法!这个方法就是一个父类的方法,我们将子类的地址传进去,就可以实现统一个方法被不同类调用的效果。
2024-09-04 19:21:25 1310 1
原创 多签名钱包
相交于硬件钱包的物理上丢失和密钥遗忘,多签名钱包在保证安全不易被破解的基础上,解决了部分密钥丢失的问题。相比于BTC之前讲到的脚本钱包(BTC—脚本),ETH的多签钱包设计可以通过智能合约来实现。
2024-05-26 10:59:47 2377 3
原创 以太坊(3)——智能合约
美链(Beauty Chain)是一个部署在以太坊上的智能合约,有自己的代币BEC。ICO:Initial Coin Offering没有自己的区块链,代币的发行、转账都是通过调用智能合约中的函数来完成的可以自己定义发行规则,每个账户有多少代币也是保存在智能合约的状态变量里ERC 20(Ethereum Request for Comments)是以太坊上发行代币的一个标准,规范了所有发行代币的合约应该实现的功能和遵循的接口。
2024-05-19 23:12:19 3004 3
原创 以太坊(4)——权益证明与课程总结
上图是2018年(未使用PoS)时ETH的电力消耗区块链挖矿消耗了很多的电能,拿现在ETH的挖矿耗电来说,消耗电能为0.0026亿千瓦时每年。因此,很多人想到去避免挖矿这种行为,采用其他方法实现共识机制。PoS(权益证明)在2022年正式实施。
2024-05-19 22:56:59 1157 1
原创 以太坊(2)——共识机制与挖矿算法
ETH采用的是基于GHOST协议的共识机制"GHOST"(Greedy Heaviest-Observed Sub-Tree)共识机制,它是以太坊使用的一种改进的区块链共识算法。GHOST共识机制旨在提高链的安全性和效率,通过考虑非主链区块的贡献,减少网络中的分支和拜占庭错误,从而增加整体网络的可靠性。
2024-05-17 23:53:24 1146
原创 区块链侧链技术(0)——衍生知识补充
查询一个 1KB 的键值对时,goleveldb 需要读取 16KB 的索引信息块,4KB 的布隆过滤器块和 4KB 的数据块,在最坏的情况下需要读取 level 0 的 8个 sstable 文件以及从 level 1 到 level 6 六层中每层各一个 sstable 文件,共 14 个 sstable文件,读放大等于 24*14,为 336 倍。在最坏的情况下,前一个 level 中的一个 sstable 文件被压缩时,和下一个 level 中的十个 sstable 文件进行归并,写放大为 10。
2024-05-17 10:42:12 731 1
原创 比特币(4)——脚本与分叉
比特币的脚本语言很简单直接该脚本语言没有循环结构,虽然实现不了很多复杂的功能,但是也直接避免了死循环停机的可能比特币的脚本语言在密码学相关方面具有很强的优势现在能不能理解上面的总结?新认老,硬分叉更新协议的新节点认可(兼容)没有更新协议的老节点(挖出的区块),会造成硬分叉老认新,软分叉没有更新协议的老节点认可(兼容)更新协议的新节点(挖出的区块),会造成软分叉。
2024-05-04 17:53:14 1198 1
原创 比特币(2)——协议与实现
在一个异部(延时无上限)的系统中,倘若有一个节点不一致,系统就无法达成共识consistency(一致性)availability(可用性)partition_tolerance,三个性质不能同时满足要获得的共识是什么:记录交易的内容如何获得共识:只有获得记账权的节点才可以向区块链里面写入内容如何获得记账权:枚举nonce符合target,并且成为最长合法链的一个区块。
2024-05-02 02:48:42 972 2
原创 智能合约ethernaut题解(1)
智能合约是一种基于区块链技术的自动化合约,它能够执行、管理和强制合约条款,而无需第三方介入。智能合约通过编码和存储在区块链上的计算机代码来定义合同条件,并在满足条件时自动执行相关操作。这种自动执行使得智能合约具有高度透明性、不可篡改性和安全性。
2024-04-13 22:17:25 909
原创 简易区块链的搭建(3)——交易
我们先来介绍传统的金融模式,你有10元存款,想转给我3元,银行会怎么操作?很显然,他会将你的账户减3元,将我的账户加3元。这种交易模式记录的是 交易结果而UTXO账户模型记录的是 交易过程 下面是简单的例子:初始状态:你的账户有10元,由一个未花费交易输出(UTXO)组成,价值为10元。转账3元给我:你想要向我转账3元。这个过程会创建一笔新的交易,包含一个输入和一个输出。输入:指向之前未花费的10元交易输出,消费掉这个UTXO。输出:一个新的UTXO,价值为7元,指向我的地址。交易记录。
2024-04-04 21:08:22 2312 3
原创 简易区块链的搭建(2)——工作量证明
/ 将区块的时间戳(Timestamp)、前一个区块的哈希值(PrevHash)、给定的 nonce、挖矿目标值(Target)、以及区块数据(Data)连接成字节返回。//区块头中,Target字段表示了当前区块的目标哈希值,矿工需要通过不断调整Nonce值来寻找满足条件的哈希值,从而完成区块的挖掘工作。//在PoW算法中,矿工需要不断尝试不同的Nonce值,使得区块的哈希值小于或等于Target,以此来满足网络的难度要求。我们要求,通过反复枚举nonce,生成一个小于target的数字。
2024-03-30 16:56:52 823 2
原创 简易区块链的实现
因为后续的区块的哈希值依赖于前一个区块的哈希值,因此如果前一个区块的数据被篡改,那么它的哈希值也会发生变化,从而导致整个区块链的哈希值序列被破坏。具体来说,当你创建一个新的区块时,你会将前一个区块的哈希值作为当前区块的前一个哈希值存储在当前区块中。每个区块的哈希值都是由该区块的数据和前一个区块的哈希值计算得出的,因此每个区块的哈希值都依赖于前一个区块的哈希值。//因此,通过遍历区块链中的每个区块,你可以逐个检查每个区块的前一个区块的哈希值是否与前一个区块的实际哈希值匹配,从而验证区块链的完整性。
2024-03-27 14:49:23 1309
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人