文章
全部技术笔记,按发布时间排序。
cURL 响应状态码的相关例子
1. 怎么获取返回 HTTP 状态码 curl -I 可以返回响应头,当然也就包含了响应状态码。 如果想只要状态码,那么可以这样做: 如果请求失败,那么返回 000 2. HTTP 响应状态码 500/400 那么 curl 运行是否也是失败? 否 如果想要 shell 返回错误码,可以加上 -f 参数,非 200 会
shell read 逐行读取操作同时修改全局变量的问题
当文件没有可读的行时,read 命令将以非零状态退出,所以我们可以使用 while...read 逐行处理数据。 第一种,使用 cat 读取文件然后管道符传给 while...read 第二种,使用输入重定向到 while...read 内 如果同时操作的全局变量,比如这里有个例子,有一个文件内容需要在每行最后加上逗号
ECMAScript2021: 逻辑赋值运算符
目前 js 支持 3 种逻辑赋值运算符: 与数学意义的逻辑运算符不同的是,逻辑赋值符在不符合逻辑条件下不会触发 setter 实际使用中,逻辑赋值运算符能提供更好的性能,如下面代码: 上述代码中赋值给 .innerHTML 属性会删除 msgElement 元素内部子元素,然后插入从新分配的字符串后再进行解析,而逻辑赋
比特币替换交易(RBF)
RBF(replace-by-fee) 在 bip125 中规范。 最简单的方式是只要存在 TxIn 成员中的 nSequence 字段值小于 0xffffffff - 1 那么就可以进行替换交易。 使用下面代码在 regtest 下进行尝试: 然后进行发送,可以看到内存池中已经有这个交易了。 然后更改下矿工费,也就是
p99延迟是什么?
Go1.14发布时,Sameer Ajmani 再说明其性能提升时提到一个 p99 延迟,查了资料,但是最近突然想起来又忘记了,这里记录下来。 原文是说: Some data: improved loaded gRPC server throughput by 15% & reduced p99 latency by
Rust Iterator 迭代器
在 Rust 中很多常用数据结构,例如Vector、HashMap 都内置了迭代器,消费这些结构直接只使用 for...in 的结构即可。 如果要自定义一个迭代器,只要实现 Iterator trait 即可,每次遍历都是运行 next 方法,直到返回 None。 如下所示,可以直接使用 for 进行遍历。 不过你可能
Rust 中的 From 和 Into trait
Rust 中 From trait 定义一个类型如何转换为另一个类型的过程,还有些类似于构造函数。比如最常见的可以将 str 转换为 String 再比如将一个原始 i32 数字转化为 Number 类型 如果一个类型实现了 From,那么也自动实现了 Into trait,Into 实际上是 From 的逆运算。由于
GET 请求可不可以附带 body?
正常的认知中,GET 是不可以使用 body 的,如果要使用 body,可以转化成 querystring。 查了些资料,发现规范并没有限制,但是实际使用是有很大区别的。 使用 Go 实现一个 Server,然后使用 curl(v7.54.0),nodejs(v13.5.0),go(v1.13.5) 来实验: 使用 G
solidity 重入攻击和预防
solidity 执行是单线程事务执行的,所以没有并发也就没有了竞态,所以怎么可以进行重入攻击呢? 如下所示代码,警告⚠️:下面代码有严重bug! 这是一个钱包,之前存取,看起没有什么问题,但是如果我们withdraw发送到一个合约里面,我们可以利用合约重新调用 withdraw 就可以耗尽钱包里所有的钱。 问题出在哪
Go中可比较性和有序性
什么是可比较性,简单来说就是可以使用比较运算符的类型具有可比较性。 比较运算符又分为等于、大于、小于等形式。可以使用等于和不等的那么就代表此类型具有可比较性。可以使用大于和小于的的类型,那么就说明此类型具有有序性。 一般而言: - 布尔类型具有可比较性。两个布尔值相等,那么说明二者都是 true 或 false。 -