自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (6)
  • 收藏
  • 关注

原创 基于虚拟机源码分析move合约(六):整数、布尔值的引用

move合约中针对整数和布尔值的引用和解引用

2022-10-20 14:45:42 429 1

原创 基于虚拟机源码分析move合约(五):vector的基本操作

move合约中对vector的基本操作的原理

2022-10-18 15:48:43 571

原创 基于虚拟机源码分析move合约(四):布尔值和比较大小

move合约布尔变量的运算以及整数比较大小的原理

2022-10-18 14:41:25 398

原创 基于虚拟机源码分析move合约(三):整数的位运算和强制转换

move合约整数的位操作和强制转换原理

2022-10-17 14:23:33 463

原创 基于虚拟机源码分析move合约(二):整数基本运算

move合约加减乘除取模运算的原理

2022-10-17 13:33:24 306

原创 基于虚拟机源码分析move合约(一):本地变量

对照Move虚拟机源码解读本地变量的分配和使用

2022-09-29 14:59:40 532

原创 基于虚拟机源码分析move合约(零):Move虚拟机执行原理

本系列文章尝试通过解读move虚拟机执行阶段的源码,来分析move合约实际的工作原理

2022-09-28 17:11:03 613

原创 Solana Account 详解

在Solana的世界里,一切都是Account,每个Account都有一个独一无二的地址,除了地址外,每个Account都有以下属性

2022-07-13 15:00:15 1028 1

原创 Solana SPL Token 的一些最佳实践

SPL Token是Solana针对ERC20的一种实现,在Solana编程中常常会对SPL Token进行操作,今天介绍一些关于SPL Token的最佳实践,代码出自Solana官方之手:spl_tokes.rsToken Account是SPL Token里特有的Account类型,它的作用是用来持有某种类型的代币,每个用户想要持有代币,就必须创建一个Token Account。在转移代币的时候,我们往往需要校验一个Token Account是合法的,上述代码包含了所有需要校验的点:1. 校验da

2022-07-13 13:58:29 2068

翻译 基于Merkle Tree为NFT添加白名单功能(翻译)

1、介绍在我们今天所知道和喜爱的区块链出现之前,Merkle Trees一直存在于密码学和计算机科学领域。如今,我们开始慢慢看到它们在链上更频繁地用于数据验证。在这篇文章中,我将解释Merkle Trees如何在NFT(ERC-721)背景下实现NFT的白名单的功能,以及它们如何提供保证NFT只能由特定的用户认领。2、什么是Merkle Trees?Merkle Trees是一种树状结构,树上的每个节点都由一个值表示,这个值是一些哈希函数的结果。哈希函数是单向的,这意味着从一个输入产生一个输出很

2022-04-08 15:13:31 1371

原创 写一个Solana版的Sushi Masterchef

写一个Solana版的Sushi Masterchef

2022-03-29 15:33:41 648

原创 Rust简短笔记:Cargo指定依赖版本

今天使用Cargo管理依赖,发现指定的依赖和实际构建的依赖对不上:如图,我指定了solana-program = "1.9.5",但是实际构建的时候依赖的是1.10.2,百度了很久发现没有任何有效信息,然后google了一下,找到了和我遇到一样问题的兄弟(这说明Rust在国内还是比较小众的):how to specify the exact version of a dependency从回答中我们知道,solana-program = "1.9.5"这种写法,Cargo会优先使用本地的s.

2022-03-17 17:23:56 2972

原创 Rust复杂的表达式解析结果探讨

在上文Solana项目学习(一):Hello World_biakia0610的专栏-CSDN博客中,我们学习了solana的helloworld例子,在代码最后一部分,有一个非常复杂的表达式:greeting_account.serialize(&mut &mut account.data.borrow_mut()[..])?;这里的&mut &mut account.data.borrow_mut()[..] 到底是返回什么呢? 这篇文章会尝试进行详细探讨。

2022-02-25 13:55:47 332

原创 Solana项目学习(一):Hello World

项目地址:example-helloworld1、整体代码use borsh::{BorshDeserialize, BorshSerialize};use solana_program::{ account_info::{next_account_info, AccountInfo}, entrypoint, entrypoint::ProgramResult, msg, program_error::ProgramError, pubkey::

2022-02-21 15:17:57 715

原创 Rust简短笔记:原始指针(Raw Pointer)

众所周知,Rust语言的指针是一种安全的指针,它会遵循一定的规则,比如ownership规则,会确保不出现悬挂指针。但是当我们需要写一些底层框架的时候,往往需要绕过这些规则,自由的控制指针,这时候我们就可以使用原始指针1、定义原始指针我们可以通过以下方法定义原始指针:fn main() { let mut num = 5; let r1 = &num as *const i32; let r2 = &mut num as *mut i32;}

2022-02-14 13:42:39 2836

原创 Rust简短笔记:4种不同的引用变量解答

Rust四种引用变量

2022-02-12 21:45:00 838

原创 PawningShop:一种NFT抵押借贷的实现

PawningShop是一种基于NFT的抵押借贷的实现。PawningShop中有两种角色:一种是抵押NFT的人,他需要通过抵押NFT借入一笔钱,我们叫他borrower,另一种是借出钱的人,我们叫他lender....

2021-11-14 15:05:30 12987

原创 Pancake的IFO解读

IFO英文全称是Initial Farm Offering,用户在pancake进行CAKE-BNB挖矿获得的LP Token,用户使用LP Token可以在IFO合约中进行新发布币种的认购。代码在:initial-farm-offering/IFO.sol at 1d452d71d5956693467605e76b04a1f6c06c8344 · pancakeswap/initial-farm-offering · GitHubpragma solidity 0.6.12;import

2021-09-10 13:20:38 8465

原创 NFT Market的一种实现

代码来源:https://github.com/blocklords/seascape-smartcontracts/blob/main/contracts/nft_marketplace/NftMarket.solpragma solidity ^0.6.7;pragma experimental ABIEncoderV2;import "./../openzeppelin/contracts/token/ERC20/IERC20.sol";import "./../openzeppel

2021-09-08 14:11:44 11006

原创 SushiToken的投票实现

SushiToken继承标准的ERC20,在此基础上,又实现了代币的投票功能。1、数据结构/// @notice A record of each accounts delegate mapping (address => address) internal _delegates; /// @notice A checkpoint for marking number of votes from a given block struct Checkpoint {

2021-08-10 13:51:40 427

原创 Safemoon源码解读

Safemoon是一种通缩分红token,通缩指的是每次转账都会收取一定手续费,这些手续费会直接销毁,进而导致总量的通缩。分红指的是,用户的余额会随着其他用户转账而增加。Safemoon的基本原理用一个比喻来说就是,将一块固定蛋糕(_tTotal)分给总量会变化的盘子中(_rTotal),每次转账都会打碎一部分盘子,这样剩余盘子分到的蛋糕就变多了。

2021-07-30 17:25:24 4328 5

原创 Solidity中的mapping为何不提供按照key遍历的功能?

举个例子pragma solidity ^0.6.12;contract Test { mapping(uint256 => uint256) numMap; function testMap() public { numMap[1001] = 1; }}这个Test合约定义了一个mapping数据结构numMap,key和value都是uint256类型使用solc生成汇编:solc --bin --asm --optimize Test.sol

2021-04-16 14:53:19 837

原创 SushiSwap的SushiMaker和SushiBar解读

1、SushiMakerSushiMaker的第一个作用是收集SushiSwap的手续费,SushiSwap是基于Uniswap进行扩展的,底层的代码和Uniswap是一样的。而Uniswap每个交易对都是一个UniswapV2Pair,它在执行mint和burn的时候,会计算手续费,这些手续费会以流动性代币的形式发给feeTo这个地址。在SushiSwap中,这个feeTo其实就是SushiMaker合约的地址。SushiMaker的第二个作用就是将收集到的流动性代币转换成Sushi代币,然后发给

2021-04-13 15:09:41 1515

原创 SushiSwap的MasterChef解读

1、MasterChef的数据结构MasterChef在SushiSwap中处于核心地位,用户可以通过它进行流动性挖矿。MasterChef中包含两个主要的数据结构:UserInfo和PoolInfo1.1、UserInfostruct UserInfo { uint256 amount; // How many LP tokens the user has provided. uint256 rewardDebt; // Reward debt. See ex

2021-04-13 14:22:31 1331 1

原创 Uniswap计算过程推演

0、创建一个交易对假设创建了一个DAI/USDT交易对,其中有一个用户lpUser负责存入和提取交易对,另一个用户swapUser负责交易。1、初始状态

2021-04-10 14:56:12 2722 1

原创 基于双数组实现Set功能(基于Solidity)

1、背景在以太坊NFT中,需要使用Set进行NFT(本质是存的NFT的唯一ID)的存储,以太坊本身没有Set的概念,只有数组。基于单数组实现Set,每次删除value,都需要遍历数组然后逐个调整,由于太坊执行操作需要消耗gas,这种调整比较消耗gas,因此会基于双数组来实现删除功能。2、原理图3、solidity代码实现mapping(address => uint256[]) internal ownerTokens;mapping(uint256 => uint.

2021-04-03 10:46:21 313

原创 docker启动springboot耗时太长

1、问题最近发现测试环境docker启动springboot应用,耗时达到了355s:2、排查首先进入docker容器docker exec -it core-collections /bin/bash执行jps得到应用pid是1,然后执行jstack 1 | grep -100 main得到如下堆栈:"main" #1 prio=5 os_prio=0 tid=0x00007f7dbc00d800 nid=0x6 in Object.wait() [0x00007f7d

2020-08-05 20:22:16 1342

原创 高并发下JDBC执行update有可能返回0

1、场景jdbc配置:jdbc.url=xxxxxxxxx&useAffectedRows=true数据库字段update_time为datetime 类型sql语句:update xxx set a=#{a},update_time=now() where id=#{id}触发场景:高并发下,1秒内连续两次update请求,第二次update返回为0。2、原因分析一般我们建表时都不指定日期格式精度,默认就是精确到秒,jdbc如果设置了useAffectedRows=t.

2020-06-29 16:32:39 1196

原创 iOS内置webview跨域问题

1、问题描述同一个接口,在安卓webview下跨域成功,iOS的webview跨域失败。2、原因参考:https://stackoverflow.com/questions/49304677/cors-error-in-safari-not-in-chrome由于我们服务端设置了Access-Control-Allow-Headers : *而iOS的webview可能不支持*...

2019-12-31 09:47:36 5906 1

原创 CentOS7安装mysql5.7

1、下载去https://dev.mysql.com/downloads/mysql/ 下载Mysql Community Server 5.7版本,然后上传到服务器2、解压并移动目录tar -zvxf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gzmkdir /usr/local/msyqlmv mysql-5.7....

2019-01-19 15:16:57 78

原创 Sharding-JDBC实战

 1、快速入门1.1、分库分表数据库架构以订单中心为例,无论库还是表,都是以卖家ID或者买家ID去分片。假设有两个数据库 order_center_0和order_center_1,每个库有两张表t_order_0,t_order_1以及t_order_item_0和t_order_item_1,于是我们得到下面的数据库架构:1.2、Sharding-JDBC的配置1....

2019-01-14 19:42:44 1503

原创 最大字段和

/** * 求一个序列的最大字段和: * 比如序列{-2,11,-4,13} 则最大字段和为18 * @author biakia * */public class MaxSubSum { /* * 求最大字段和的分治算法: * 如果将所给的序列a[1:n]分为两段:a[1:n/2],a[n/2+1,b],那么要求最大字段和,共三种情况: * 1、a[1:n]的最大字段和

2014-09-02 15:10:36 451

原创 最长公共子序列

/** * 最长公共子序列问题,是一个经典的动态规划问题,它有如下最优子结构: * 令c[i][j]保存的是最大长度,则 * 1、当i=0 j=0时 c[i][j]=0 * 2、当i,j>0;x[i]=y[j]时 c[i][j]=c[i-1][j-1]+1 * 3、当i,j>0;x[i]!=u[j]时 c[i][j]=max{c[i][j-1],c[i

2014-09-02 14:46:44 259

原创 快速排序

/** * 经典的快速排序,基本思想分为三步: * 1、分解:选取一个基元素,把数组中小于基元素的元素放到左边,大于基元素的放到右边 * 2、递归求解 * 3、合并:其实一旦求解完,数组就已经排好序了,所以不需要合并 * @author biakia * */public class QuickSort { private static void quickSort(int[

2014-09-01 21:09:51 237

原创 归并排序

/** * 归并排序,本质是分治算法,对每个数组分为左右两个数组,然后在合并的时候进行排序 * @author biakia * */public class MergeSort { private static int[] mergeSort(int[] array,int left,int right){ int[] result=new int[right-left+1]

2014-09-01 20:58:40 254

软件框架设计的艺术

作者是NetBeans的创始人,本书讲述了自己十多年的API设计经验,书中很多思想和技巧都让人受益匪浅,值得一读

2017-05-01

Java 7 NIO

2017-04-25

Lua教程中文版

Lua中午教程

2017-04-17

dubbo-admin-2.8.4.war

编译过的dubbo-admin-2.8.4.war,解压后把 WEB-INF/dubbo.properties里的dubbo.registry.address换成你自己的ZK地址,默认是127.0.0.1:2181,然后把dubbo-admin-2.8.4放到tomcat目录后启动tomcat,最后访问localhost:8080/dubbo-admin-2.8.4/,会弹出用户名和密码,用户名和密码都输入root就可以了

2016-12-21

C Programming Language(高清版)

《The C Programming Language》译作《C程序设计语言》,是由著名的计算机科学家Brian W. Kernighan和C语言之父的Dennis M. Ritchie合著的一部计算机科学著作,是第一部介绍C语言编程方法的书籍。它是一本必读的程序设计语言方面的参考书。

2013-03-19

空空如也

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

TA关注的人

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