WEB3 Day4—Solidity基础[part3]
智能合约部署 Smart Contracts Deploying
Sepolia TestNet deploying
我们可以通过进入部署选项卡,从本地虚拟环境(Remix VM)切换到注入的提供者 - MetaMask 来开始部署过程。这一操作将允许Remix发送请求并与您的MetaMask账户进行交互。
随后系统会提示你去选择一个账号。 在你成功连接到remix之后,你会看到账号已经成功链接到并且正在使用sepolia网络的信息。
注意,需要你的测试网络里面必须有足够的 sepolia ETH,如果没有需要从水龙头获取,免费的水龙头我这边会集中收集一次,后续可点击这篇文章:【TODO 挖个坑】;
暂时可以去这里faucet, 但是还是需要主账户里面要有ether。
随后,MetaMask就会要求你在测试网站上签署发送:
交易执行之后,合约地址会将交易详情一同显示在已部署的合约列表下面。这就是Eherscan上部署交易的显示方式。
合约交互 Contract interaction
合约部署完成以后,我们可以与之交互并更 ...
WEB3 Day3 — Solidity基础[part2]
存储位置
solidity里面有六种存储位置。
Calldata
Memory
Storage
Stack
Code
Logs
calldata和memory是函数执行期间变量的临时存储位置,calldata只读,用于不可修改的函数输入。
相比之下,memory允许读写访问,使变量能在函数内部被修改。
要修改calldata变量,必须先讲它们加载到memory中。
Calldata
只读的, 比storage更经济,主要用于输入。
下面函数中_name 用calldata关键字,就会收到错误提示,因为不可修改。
Memory
可读可修改,大多数的变量默认自动使用memory,但是字符串不能默认,需要明确指定memory或者calldata
string memory variableName = "someValue";
下面会讲到为什么会这么特殊
storage
存储在storage的变量在区块链上是持久化的,其值在函数调用和交易之间保持不变。
比如下面这个变量 favoriteNumber ,声明在函数外部,会被隐式 ...
Twikoo评论系统的Cloudflare部署方案
Twikoo是一款简洁、安全且免费的静态网站评论系统,在提升网站互动性方面表现出色。通常,Twikoo可部署在诸如腾讯云开发环境、Vercel等平台,但借助Cloudflare进行部署,能极大改善冷启动延迟问题,实现快速加载,为用户带来更流畅的评论体验,同时利用Cloudflare强大的全球网络提升访问速度。以下为详细的Cloudflare部署Twikoo评论系统的步骤与要点。
一、前期准备
在开始部署前,需提前准备好相关工具与资源:
Cloudflare账户:若尚未注册,前往Cloudflare官网完成注册流程。
Node.js环境:确保本地开发环境安装了Node.js,可通过Node.js官网下载并安装对应系统的最新版本,安装完成后,在命令行输入node -v验证是否安装成功及查看版本号。
文本编辑器:推荐使用Visual Studio Code、Sublime Text等,方便进行代码编辑与配置文件修改。
二、安装依赖包
首先,创建一个新的项目目录,用于存放Twikoo相关代码与配置文件,在命令行中进入该目录,执行以下命令 ...
WEB3 Day2—BlockChain Basic 2 + Solidity基础[part1]
Layer1
blockChain的base layer,例如bitcoin、BNB chain、Solana,and Avalanche.
Layer2
构建在L1区块链外部但是也与之连接的任何应用application。有各种类型,比如for example ChainLink(去中心化预言机网络) ,以及像The Graph(事件索引网络)。
好的,我将为你优化这段区块链技术描述,提升专业性和清晰度:
Rollup 技术:以太坊Layer2扩容的核心方案
Rollup是Layer2(L2)扩容的主流解决方案,其核心原理是将多笔链下交易打包为一个聚合交易,仅将交易摘要(而非完整数据)提交至以太坊主链(Layer1),大幅提升交易吞吐量并降低Gas费用。根据验证机制不同,Rollup可分为两类:
1. Optimistic Rollups(乐观汇总)
工作机制:默认所有链下交易均为有效,运营商(Operator)定期向主链提交状态根(State Root)和交易哈希。若其他参与者发 ...
从 0 到 1:用 Git、CloudFlare、PicGo、Typora、Hexo 搭建个人博客全流程
一、前言
22年,我用 Hexo + Next 主题搭起第一个个人博客。三年后,随着图床需求升级、对博客风格有了新想法,我决定重构 —— 替换图床工具、更换主题,用 Git、CloudFlare、PicGo、Typora 配合 Hexo 重新搭建。这篇文章复盘从旧版迭代到全新上线的全过程,既是对自己折腾经历的记录,也希望给想优化博客的朋友一份实操参考。
二、环境准备与工具选型
(一)核心工具简介
Git:分布式版本控制系统,负责博客代码的版本管理与远程仓库同步,让博客部署、内容更新更高效。
CloudFlare:提供 CDN 加速、DNS 解析、安全防护等功能,让博客访问更快、更稳定,还能隐藏真实服务器 IP 。
PicGo:图床上传工具,写博客时本地图片能一键上传到图床,解决文章中图片存储与引用问题。
Typora:简洁高效的 Markdown 编辑器,实时预览、语法简洁,专注内容创作。
Hexo:静态博客生成框架,基于 Node.js,支持 Markdown 写作,能快速生成 ...
WEB3 Day1—BlockChain Basic 1
转型方向
从 Java 开发转型至智能合约开发。
学习资源
学习视频
推荐 patrick collins 【Cyfrin】的教学视频 。
同时,Cyfrin Updraft 官网提供了文字笔记和视频课程。不过,某些翻译插件的双语字幕不支持该网站,因此我选择在 YouTube 上观看完整视频,并且将两者结合起来学习。
翻译插件推荐
这里推荐一款翻译插件——沉浸式翻译
创建自己的钱包
安装 MetaMask 插件
首先,进入 MetaMask 官网,将其作为 Chrome 浏览器插件添加到浏览器中。
创建钱包
创建自己的钱包后,会得到三个关键信息:私钥(private key)、助记词(Mnemonic Key)和公钥地址(public Address)。其中,私钥和助记词极其重要,务必安全保存!因为拥有私钥就可以直接访问你的钱包账户,所以千万不能有侥幸心理。建议将助记词记录在纸上,而不是存储在电脑里,如果能记在大脑中(如使用记忆宫殿的方法)则是最安全的。三者的重要性排序为:【Mnemonic > Private Key & ...
1、Redis与MQ在项目中的运用!
Redis应用场景-缓存系统
Redis最主要的还是做缓存,一般的方案下就是把热点数据(访问频次高)的数据放入Redis缓存,用Redis的高性能去避免MySQL数据的。这种方案一般的做法都会有兜底方案,就是数据在Redis中没有话,还是会去访问MySQL然后再把数据同步到Redis缓存。
Redis应用场景-排行榜、计数器
1、Redis提供的incr方法做计数器(点赞、关注数之类)
import redis.clients.jedis.Jedis;
public class RedisCounter {
private Jedis jedis;
public RedisCounter() {
// 连接到 Redis
this.jedis = new Jedis("localhost", 6379);
}
// 用户点赞
public void likePost(St ...
一、微服务架构介绍
1.1 架构演变
单体架构: All in One,所有的功能模块都在一个工程里。
SOA架构: 这个架构当不当正不正,对于现在来说,有点老,甚至需要ESB,WebService之类的,基本不会使用了。
微服务架构: 微服务架构思想是马丁福勒提出的
https://martinfowler.com/articles/microservices.html
他的核心思想是这一段话:
In short, the microservice architectural style 1 is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and in ...
缓存和分布式锁
一、缓存
1. 什么是缓存
缓存的作用是减低对数据源的访问频率。从而提高我们系统的性能。
缓存的流程图
2.缓存的分类
2.1 本地缓存
其实就是把缓存数据存储在内存中(Map <String,Object>).在单体架构中肯定没有问题。
单体架构下的缓存处理
2.2 分布式缓存
在分布式环境下,我们原来的本地缓存就不是太使用了,原因是:
缓存数据冗余
缓存效率不高
分布式缓存的结构图
3.整合Redis
要整合Redis那么我们在SpringBoot项目中首页来添加对应的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
然后我们需要添加对应的配置信息
测试操作Redis的数据
@Autowired
Strin ...
Sentinel
一、熔断、降级、限流
1.熔断
服务熔断的作用类似于我们家用的保险丝,当某服务出现不可用或响应超时的情况时,为了防止整个系统出现雪崩,暂时停止对该服务的调用。
停止是说,当前服务一旦对下游服务进行熔断,当请求到达时,当前服务不再对下游服务进行调用,而是使用设定好的策略(如构建默认值)直接返回。
暂时是说,熔断后,并不会一直不再调用下游服务,而是以一定的策略(如每分钟调用 10 次,若均返回成功,则增大调用量)试探调用下游服务,当下游服务恢复可用时,自动停止熔断。
2.降级
降级是指当自身服务压力增大时,采取一些手段,增强自身服务的处理能力,以保障服务的持续可用。比如,下线非核心服务以保证核心服务的稳定、降低实时性、降低数据一致性。
为了预防某些功能出现负荷过载或者响应慢的情况,在其内部暂时舍弃一些非核心接口和数据的请求(如评论、积分),而直接返回一个提前准备好的 fallback(退路) 错误处理信息。释放CPU和内存资源,以保证整个系统的稳定性和可用性。
3.限流
限流是指上游服务对本服务请求 QPS 超过阙值时,通过一定的策略(如延迟处理、 ...