自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(178)
  • 收藏
  • 关注

转载 xshell 配色方案

xshell 配色方案

2022-11-07 23:37:05 541

原创 以uniswap为例讲解使用etherscan

1、查询合约代码通过使用项目名称检索查询合约,uniswap需要寻找的为工厂合约;这里搜索出来的是v1版本的,v1版本合约使用python写的。v2版本的路由合约地址为:0xf164fC0Ec4E93095b804a4795bBe1e041497b92a2、寻找部署合约通过点击Outline可以查看合约中所有合约和方法,其中最粗的为所部署的合约;点击contract UniswapV2Router01 is IUniswapV2Router01可以查看合约内容,这里需要重点关注的为合约的

2022-05-13 17:48:30 857

原创 BurntSushi/toml包使用方法

toml文件# 全局信息title = "TOML示例"# 应用信息[app] author = "史布斯" organization = "Mafool" mark = "第一行\n第二行." # 换行 release = 2020-05-27T07:32:00Z # 时间# 数据库配置[mysql] server = "192.168.1.1" ports = [ 8001, 8001, 8002 ] #

2022-03-11 14:08:11 744

原创 github常用用法总结

0、名词解释Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库1、一般使用内容# 创建一个新的git仓库git init# clone一个项目git clone# 取回远程仓库的变化,并与本地分支合并$ git pull [remote] [branch]# 新建一个分支,并切换到该分支$ git checkout -b [branch]# 添加当前目录的所有文件到暂存区$ git add

2022-03-10 20:05:31 746

原创 ubuntu设置成密码登录(以AWS服务器为例)

切换root用户sudo su设置root密码sudo passwd root启用密码登陆vim /etc/ssh/sshd_configPasswordAuthentication yesPermitRootLogin yes重启ssh服务sudo service sshd restart

2022-03-09 11:35:24 2164

原创 Solidity注释格式

注释Solidity 里的注释和 JavaScript 相同。在我们的课程中你已经看到了不少单行注释了:// 这是一个单行注释,可以理解为给自己或者别人看的笔记/* 这是多行注释*/Solidity 社区所使用的一个标准是使用一种被称作 natspec 的格式,看起来像这样:/// @title 一个简单的基础运算合约/// @author 童蒙_/// @notice 现在,这个合约只添加一个乘法contract Math { /// @notice 两个数相乘 //.

2022-03-08 16:31:13 485

原创 Solidity格式

合约之间间隔在 solidity 源码中合约声明之间留出两个空行。contract A { ...}contract B { ...}contract C { ...}在一个合约中的函数声明之间留有一个空行。在相关联的各组单行语句之间可以省略空行。(例如抽象合约的 stub 函数)。pragma solidity ^0.6.0;abstract contract A { function spam() public virtual pu

2022-03-08 16:04:41 212

原创 Ethereum智能合约迁移到PlatON教程

        Ethereum生态的不断壮大,导致交易数量急剧增加,用户不得不在交易速度和手续费之间做出艰难的选择。随着DeFi和NFT项目持续火爆,产生了高额利润催生了大量的“套利”交易,导致用户对区块链数据隐私的需求不断增加。PlatON结合区块链、人工智能和隐私计算技术,建立了一个去中心化的协作式隐私人工智能区块链网络。相较于以太坊在交易速度、交易成本和数据隐私方面有巨大的优势。为提高开发效率,PlatON 1.1.1版

2022-02-25 14:05:06 2001

原创 Rust笔记

注意点Rust返回时,不使用return关键字,默认返回最后一句,并且最后一句不能加;

2021-12-28 16:29:44 305

原创 阅读Compound合约感觉Solidity的坑

memory和storage之间的赋值storage和memory之间是值拷贝;其他的向storage都是值拷贝;memory和memory之间是指针拷贝;storage和local storage之间是指针拷贝;使用了view依然可以修改要深入理解

2021-11-08 18:09:01 10254

原创 tmux使用

1、安装mtuxsudo apt-get install tmux -ytmux -V2、创建新的mtux会话tmux new-session -s processName3、常用命令窗口退出(与会话分离):Ctrl+b d为会话起名:tmux new -s <session-name>接入会话:tmux attach -t <session-name>杀死会话:tmux kill-session -t <session-name>切换会话:tm

2021-06-09 18:25:05 281

原创 Solidity学习笔记

1、Solidity特性相较于javaScript新增address类型;语言内嵌框架支持支付;提供了payable等关键字,可以在语言层面直接支持支付;使用区块链进行数据存储。数据的每个状态都可以永久存储,所以再使用时需要确定变量使用内存,还是区块链存储;运行环境实在去中心化的网络上,所以需要强调合约或函数执行的调用方式不同的异常机制。一旦出现异常,所有的执行都将回回撤,这主要是保证合约执行的原子性,避免中间状态的出现的数据不一致;2、Solidity关键字pragma:杂注,在

2021-05-20 16:46:40 514

原创 VSCode常用快捷键

1、与窗口管理相关的快捷键文件之间切换: Ctrl+Tab将当前文件分屏:Ctrl+\形成新的分屏:Ctrl+1, Ctrl+22、与代码格式相关的快捷键代码缩进Ctrl+[ , Ctrl+],其中Ctrl+]=Tab代码格式化:Shift+Alt+F代码移动:Alt+Up 或 Alt+Down代码复制:Shift+Alt+Up 或 Shift+Alt+Down在当前行上方插入空白行:Ctrl+Enter在当前行下方插入空白行:Ctrl+Shift+Enter3、与光标相关

2021-05-07 20:04:06 120

原创 Goland常用快捷键

工作中Goland常用快捷键(windows环境下)(1)返回上次光标所在位置Ctrl+window+Alt +左箭头或右箭头(2)跳转到interface实现ctrl + alt + 鼠标左键

2021-01-28 18:34:08 2504

原创 常用的ETH命令

一、ubuntu安装gethsudo add-apt-repository -y ppa:ethereum/ethereumsudo apt-get updatesudo apt-get install ethereum二、通过geth启动ETH测试网络geth --datadir /data/eth/.ethereum/ropsten --port 30301 --rpc --rpcaddr 0.0.0.0 --rpcport 8545 --syncmode light --ropsten

2020-11-09 16:09:15 1317

原创 常用的ubuntu功能命令

工作中常用ubuntu命令

2020-10-28 20:14:59 2747 1

原创 etcd-go配置中心

初始化type SecLayerConf struct { Proxy2LayerRedis RedisConf Layer2ProxyRedis RedisConf EtcdConfig EtcdConf LogPath string LogLevel string WriteGoroutineNum int ReadGoroutineNum int HandleUserGoroutineNum int Read2h

2020-08-16 10:14:00 1018

原创 老男孩秒杀系统框架

秒杀接入层功能对应程序在SecProxy路径下长连接IP黑名单ID黑名单抢购开关url校验refer白名单秒杀业务层对应程序在SecLayer路径下redis配置etcd配置等级配置速度配置goroute概率配置是否售罄是否超速是否已购买是否总数超速是否黑名单随机抽奖更新总数更新速度秒杀Web对应程序在SecAdmin路径下商品添加商品浏览强制售罄商品修改开源地址...

2020-08-15 19:28:02 187

原创 Debug程序

1、Debug简介1.1 什么是程序DebugDebug,是程序开发人员必会的一项调试程序的技能企业中程序开发和程序调试的比例为1:1.5,Debug是必须掌握的技能1.2 Debug能帮助我们做什么追踪代码的运行流程程序运行异常定位和调试线上问题追踪1.3 Debug的意义通过调试能够更好的查看程序的执行流程复杂的程序逻辑,通过老师的口述讲解,很难理解清楚,调试是帮助理解的好方法定位问题,提高自我解决问题的能力2、IDEA中Debug步骤(1) 设置断点(F9)(2

2020-08-11 21:36:44 878

原创 Go从入门到实战——不安全编程(笔记)

不安全行为的危险性

2020-08-02 15:40:26 132

原创 Go从入门到实战——反射编程(笔记)

reflect.TypeOf和reflect.ValueOf比较利用反射编写灵活代码DeepEqual比较切片和map关于“反射”的注意点

2020-08-02 15:33:39 120

原创 Go从入门到实战——单元测试(笔记)

表格式单元测试内置单元测试框架内置单元测试框架

2020-08-02 11:49:24 125

原创 Go从入门到实战——sync.Pool对象缓存(笔记)

sync.Pool对象获取私有对象是协程安全的,共享池是协程不安全的私用对象不用使用锁,共享池需要使用锁sync.Pool对象放回代码实例sync.Pool对象的生命周期

2020-08-02 11:22:57 213

原创 Go从入门到实战——对象池(笔记)

使用buffered channel实现对象池type ReusableObj struct {}type ObjPool struct { bufChan chan *ReusableObj}func NewObjPool(numOfObj int) *ObjPool { objPool := ObjPool{} objPool.bufChan = make(chan *ReusableObj, numOfObj) for i := 0; i < numOfObj; i++

2020-08-02 11:07:43 106

原创 Go从入门到实战——所有任务完成(笔记)

func runTask(id int) string { time.Sleep(10 * time.Millisecond) return fmt.Sprintf("The result is from %d", id)}func FirstResponse() string { numOfRunner := 10 ch := make(chan string, numOfRunner) for i := 0; i < numOfRunner; i++ { go func(i in

2020-08-02 10:35:26 152

原创 Go从入门到实战——仅需任意任务完成(笔记)

使用无缓冲的channelfunc runTask(id int) string { time.Sleep(10 * time.Millisecond) return fmt.Sprintf("The result is from %d", id)}func FirstResponse() string { numOfRunner := 10 ch := make(chan string) for i := 0; i < numOfRunner; i++ { go func(i i

2020-08-02 10:23:13 179

原创 Go从入门到实战——仅执行一次(笔记)

单例模式var ( once sync.Once obj *SingletonObj)type SingletonObj struct {}func GetSingletonOb() *SingletonObj { once.Do(func() { fmt.Println("Create Singleton obj") obj = &SingletonObj{} }) return obj}

2020-08-02 10:02:37 269

原创 Go从入门到实战——Context与任务取消(笔记)

关联任务的取消Contextfunc isCancelled(ctx context.Context) bool { select { case <-ctx.Done(): return true default: return false }}func TestCancel(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) for i := 0; i < 5; i++

2020-08-01 22:07:25 126

原创 Go从入门到实战——任务的取消(笔记)

任务取消代码展示func isCancelled(cancelChan chan struct{}) bool { select { case <-cancelChan: return true default: return false }}func cancel1(cancelChan chan struct{}) { cancelChan <- struct{}{}}func cancel2(cancelChan chan struct{}) { close

2020-08-01 21:33:44 350

原创 Go从入门到实战——channel的关闭和广播(笔记)

channel

2020-08-01 20:58:31 168

原创 Go从入门到实战—— 多路选择和超时控制(笔记)

select如果多个case都符合要求,执行顺序不依赖case的顺序

2020-08-01 20:44:58 96

原创 Go从入门到实战——CSP并发机制(笔记)

CSP和Actor比较channel

2020-08-01 17:12:52 169

原创 Go从入门到实战——共享内存并发机制(笔记)

共享内存并发机制Lock错误示范package share_testimport ( "testing" "time")func TestCounter(t *testing.T) { coun := 0 for i := 0; i < 5000; i++ { go func() { coun++ }() } time.Sleep(time.Second) t.Log(coun)}在不同的协程中进行自增,增加了相互竞争。不是一个线程安全的程序正确

2020-08-01 16:42:19 251

原创 Go从入门到实战——协程机制(笔记)

Thead和Groutine比较多对多简图多对多情况下,多个Goroutine对应同一个系统线程,相互之间的切换成本较低Go基本调度机制Processor会对一点时间内完成的Goroutine数量进行计数,如果长时间没有发生改变,就会将目前正在执行的Goroutine插到队尾;当某一个Goroutine被系统中断了如读写IO操作,Processor会把自己移动到另一个System Thread中继续完成其他Goroutine。并将目前运行记录下来,执行完IO之后,继续回来操作错误使用方

2020-08-01 16:09:13 141

原创 Go从入门到实战——依赖管理(笔记)

Go未解决的依赖问题vendor路径

2020-08-01 15:55:14 111

原创 Go从入门到实战——package(笔记)

Package导入外部包init方法

2020-07-31 22:05:19 97

原创 Go从入门到实战——Panic和recover(笔记)

PanicPanic 和 os.ExitRecover错误的recover方式原因

2020-07-31 21:52:54 104

原创 Go从入门到实战——错误机制(笔记)

Go错误机制最佳实践

2020-07-31 21:46:16 94

原创 Go从入门到实战——多态(笔记)

package mainimport ( "fmt" "testing")type Code stringtype Programmer interface { WriteHelloWorld() Code}type GoProgrammer struct {}func (p *GoProgrammer)WriteHelloWorld() Code { return "fmt.Println(\"Hello world\")"}type JavaProgramme

2020-07-31 20:58:31 111

原创 Go从入门到实战——接口(笔记)

Java接口Go接口type Mover interface { move()}type dog struct {}func (d dog) move() { fmt.Println("狗会动")}func main() { var x Mover var wangcai = dog{} // 旺财是dog类型 x = wangcai // x可以接收dog类型 var fugui = &dog{} // 富贵是*dog类型 x = fugui

2020-07-30 11:31:53 141

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除