20 Dec 2024
如果你和我一样是一名以太坊开发者,那么在尝试开发 Solana 时,你一定和我当初一样感到困惑。Solana 是如此不同且独特。在这篇文章中,我将向你展示一份精心设计的路线图,帮助你尽快开始在 Solana 上进行开发。
在开始之前,我假设你已经对 Solana 有一些基础知识,包括它的账户模型和程序系统,以及对 Rust 编程语言的基本了解。如果你对这些内容不是很熟悉也没关系,只要有基础理解,这篇文章就足够了。
此外,我假设你使用的是 Linux 系统,并且已经安装了 rust、solana-cli 和 anchor。如果你是 Windows 用户,我强烈推荐使用 WSL2,因为 anchor 对 Windows 的支持不是很好。
Read more
18 Dec 2024
我从 2017 年开始在以太坊平台上开发,不得不说 Solidity 在当时是一个非常出色的设计。它简单的语法使学习变得容易,像 Remix 这样的工具简化了测试和部署。对于更复杂的项目,Truffle 和 Hardhat 等框架也能满足需求。然而,Solidity 并不完美,升级难度大以及有限的处理能力使其不太适合大规模项目。
我从 2023 年开始学习 Solana 开发。Solana 与以太坊有着完全不同的设计,对于一名以太坊开发者来说,学习 Solana 是一个相当有挑战的旅程。在这篇文章中,我们将讨论以太坊与 Solana 之间最显著的区别:账户模型、程序系统以及代币程序。
Read more
14 May 2023
本文是C++20四大系列的收官之作,不少读者可能会与这样的疑问:位列四大的range是个什么特性?
笔者一开始也有同样的感觉:C++20前三大都是“划时代”的改动:module改变了C++工程的组织模型,coroutine改变了C++并发的实现、concept则是模板编程自存在以来的最大变革,range到底带来了哪些改变,可位列于四大?
因为他改变了循环的方式,或者说,他给循环提供了更高层的抽象
Read more
05 Apr 2022
前言:C++模板的演进
模板的演进是C++发展史中一条十分重要的线,个人觉得Concept是这条线中最大的一个特性了。在介绍Concept之前,我们先捋一捋模板这条线的发展。
timeline
title C++ Templates Evolution
1979 : C with Classes - First Implementation
1988 : First Formal Proposal of Templates
1998 : Templates Enter the Standard (Function/Class Templates, SFINAE)
2011 : C++11 Variadic Templates
2014 : C++14 Variable Templates, Generic Lambda
2017 : C++17 Template Parameter Deduction, if constexpr
2020 : C++20 Concepts
Read more
19 Oct 2021
上一篇博客中我们介绍了C++20中module相关的特性,本篇博客我们通过三个可运行的完整示例来体验下C++20中的协程:coroutine。
全文共三部分,第一部分从概念上讨论协程与普通函数的区别;第二部分通过两个个完整的协程代码示例,并深入到编译器层面,深入解析promise_type及其工作流程;第三部分介绍了co_await的作用以及工作原理,该部分是本文最难理解的部分。
Read more
10 Jul 2021
前言
C++20最大的特性是什么?
——最大的特性是迄今为止没有哪一款编译器完全实现了所有特性。
Read more
25 Dec 2019
C++14篇
相对于C++11,C++14的改动可谓非常mini了,主要的改动一句话便是:扩大自动类型推断的应用范围。剩下的都是边边角角的小改动
这包括:
Read more
19 Dec 2019
新版本的标准库添加了许多新的特性,本文只介绍特性的简单使用,不做原理上的探究,否则篇幅将无法控制。
Read more
15 May 2019
本文是C++11新特性系列的第二篇们主要记录C++11的新语意。
Read more
14 May 2019
C++11新引入的特性比较多,这里简单记录下每个特性的大致情况,无法将细节一一描述清楚——那样每个特性几乎都要花费一篇博客的篇幅来记录。本文从新增的关键字 、 新增的语义 、新增的标准库三个方面来记录这些新特性。原本打算将这三部分放到一篇博客中,后来发现太长了,还是分开吧。
Read more
11 Apr 2019
在上一篇博客中我们知道了什么是移动语意以及完美转发,在这期间我们使用了两个新的std函数: std::move 与 std::forward。
- std::move 的作用:将一个左值转换为一个右值
- std::forward的作用:将实参的左右值属性在实参转发时完整保留。
我们理解了移动语意以及完美转发后,有必要探究一下std::move 与 std::forward两个函数的内部实现,这需要一些关于C++模板的基本知识:
Read more
04 Nov 2018
在C++11之前我们很少听说左值、右值这个叫法,自从C++11支持了右值引用之后,大多数人会像我一样疑惑:啥是右值?
准确的来说:
- 左值:拥有可辨识的内存地址的标识符便是一个左值。
- 右值:非左值。
- 左值引用:左值标识符的一个别名,简称引用
- 右值引用:右值标识符的一个别名
Read more
15 Mar 2018
我个人算是一个比较后知后觉的人,2017年12月底才开始炒币,开始深入了解区块链。这里以一个新人的角度回忆一下这段时间的收获,做个记录,同时希望能给其他人一些帮助。
在我学习区块链的过程中,给我最大迷惑的,其实是“挖矿”这个词。我们从What、Why、How三个方向解释一下“挖矿”。在这之前,我们先得弄清什么是区块链,什么是比特币。
Read more