自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ERC721-链上/链下NFT编写流程

文章摘要 本文介绍了两种NFT实现方案:链下存储(Off-Chain)和链上存储(On-Chain)。链下方案将图片和JSON元数据存储在IPFS/Pinata上,合约仅保存tokenURI,通过mint()和tokenURI()函数实现。链上方案则完全在合约中存储SVG和JSON数据,实现动态Soulbound KYC Pass,包含动态状态变量、SVG模板选择、Base64编码等功能。两种方案都详细说明了从部署到钱包显示的完整流程,链上方案还特别介绍了如何通过Foundry读取SVG文件并部署合约。

2025-08-03 10:58:21 298

原创 chainlink VRF中文教程(含mock),解决error: Arithmetic Underflow in createSubscription

本文介绍了如何在Solidity智能合约中集成Chainlink VRF(可验证随机函数)功能。主要内容包括:1)导入VRF相关合约库;2)让目标合约继承VRFConsumerBaseV2Plus;3)声明必要的VRF状态变量;4)改造构造函数初始化VRF参数;5)实现请求随机数的函数;6)重写随机数回调函数实现业务逻辑;7)提供了本地Mock测试方案及常见报错解决方法。特别强调了线上部署时需要在Chainlink VRF UI手动添加consumer的注意事项。该教程适用于需要安全随机数的智能合约开发场景

2025-07-18 17:49:53 342

原创 MetaMask 连接其他网络,连接本地的 Anvil 区块链节点

MetaMask连接Anvil本地节点的简明教程:1)获取Anvil的RPC地址(如http://127.0.0.1:8545)和测试账户私钥;2)在MetaMask中添加自定义网络,设置网络名称为Anvil,链ID为31337;3)导入Anvil测试账户私钥即可交互。注意每次重启Anvil后需重新导入账户,确保MetaMask和CLI使用相同RPC地址。

2025-07-11 13:02:47 467

原创 Foundry 学习笔记 005

本文系统梳理了Foundry智能合约开发工具链的核心知识体系,主要内容包括:1)Foundry三大组件(forge、cast、anvil)的功能定位;2)项目标准目录结构;3)完整开发流程(编写→测试→部署);4)测试方法论(单元测试/Fork测试/集成测试);5)自动化部署方案(脚本/Makefile)。重点解析了合约开发中的关键实践:价格预言机集成、时间模拟测试、权限控制实现,以及cast工具链交互技巧。最后总结了Foundry环境下的标准开发范式,涵盖从本地开发到主网交互的全流程工具链使用。

2025-07-11 01:02:12 492

原创 Foundry智能合约测试设计流程

Foundry智能合约测试设计流程包含四种维度:单元测试(验证单个合约功能)、集成测试(测试多合约交互)、分叉测试(在真实网络快照测试)和阶段测试(模拟生产环境)。流程遵循测试环境搭建、用例编写和执行调试的通用步骤,强调全面覆盖核心功能、安全控制和辅助功能。测试应遵循完整性、独立性、可读性、稳定性和效率原则,使用清晰命名规范区分不同测试类型。典型结构包括测试合约初始化、场景模拟和断言验证,确保合约在不同环境下的正确性和安全性。

2025-07-09 21:36:41 709

原创 Solidity 合约的编写-完整开发流程:从编译、测试、部署到交互

摘要:本文详细介绍了使用Foundry工具链进行Solidity合约开发的完整流程。从项目初始化、合约编写、编译测试,到本地链(Anvil)和测试网(Sepolia)部署,以及合约交互脚本编写。重点展示了Foundry的核心工具(forge/anvil/cast)配合使用,包括目录结构说明、测试用例编写模板、本地部署命令和测试网部署注意事项。文章还提供了.env文件安全管理和常用命令速查表,特别强调测试阶段应覆盖所有函数逻辑和边界条件,部署前务必先在本地验证。适合已掌握Solidity基础但需要完善开发流程

2025-07-09 15:15:16 446

原创 Web3 Study Log 004

Web3学习日志与DeFi预售合约开发笔记 学习日志记录了开发者日常编程与生活的平衡,既有沉浸式coding的宁静,也流露出对拓展社交圈的渴望。技术部分详细记录了DeFi预售合约开发实践,涵盖以下核心内容: 功能需求:实现ETH捐赠、Chainlink汇率转换、线性代币释放机制 关键技术点:预言机集成、状态变量设计、时间锁计算 开发问题:解决了Remix部署、Chainlink精度转换等实际问题 合约亮点:完善的安全机制、用户状态查询、线性解锁逻辑 项目代码已开源在GitHub仓库,包含完整智能合约开发资料

2025-07-07 11:01:28 774

原创 Web3 Study Log 003

Web3学习日志003:智能合约开发实践 最近处理完琐事后,作者重新投入Web3学习,重点研究了Chainlink预言机获取ETH/USD实时价格,并开发了一个众筹项目测试合约。在开发过程中深刻体会到涉及资金的智能合约需要格外谨慎,作者分享了一个因提款条件错误导致资金无法提取的测试网教训。接下来计划开发一个DeFi预售合约练习项目,包含募资目标设定、Chainlink汇率转换、时间限制、线性解锁等功能。笔记详细记录了Solidity开发中的关键知识点,包括Chainlink集成、资金处理、权限控制等核心概念

2025-07-05 22:14:49 1068

原创 解决chatgpt(mac app登陆)出现报错:获取您的 SSO 信息时出错

所以我们使用邮箱先载入auth0的地址,再更改自己的账号就好,亲测完美解决。由于我们是app登陆的,不能直接修改网站的链接,将 URL 的域名部分从。,然后加载新的地址,这时候应该就可以正常登录或注册了。

2025-01-02 20:33:24 944 1

原创 Java-AOP

AOP,面向切面编程是一种思想,动态代理就是这种思想的最主要表现形式。

2024-11-28 10:39:18 622

原创 Java反射与动态代理(简单易懂)

一句话简单来讲,就是把类中东西,拿出来,之后在用他们。包括字节码文件,构造方法,成员变量,成员方法。反射可以跟配置文件结合起来使用,动态的创建对象,动态的调用方法。获取成员方法并运行 invoke(obj,args)//参数一:表示方法的调用对象//参数二:方法在运行时需要的实际参数//注意点:如果方法有返回值,那么需要接收invoke的结果//如果方法没有返回值,则不需要接收String result = (String) eatMethod.invoke(s, "重庆小面");

2024-11-27 11:32:02 581

原创 Mybatis,Druid,lombok

这里的select 就是操作,还有update/delete等等,id后面的list就是你mapper接口里面的方法名字,这个resultType就是这个方法的返回类型,比如List,方法返回一个集合,对象是Emp,所以xml这里就写Emp这个pojo类的路径。比如:com.fujunhao.day09.mapper.EmpMapper。application.properties的配置用以前的就好。复杂的SQL功能,建议使用XML来配置映射语句。注解方式,主要是来完成一些简单的增删改查功能。

2024-11-22 14:32:15 308

原创 mac安装mysql8.4.3lts(解决报错ERROR! The server quit without updating PID file (/usr/local/mysql/data/Mac.)

今天上午起来安装mysql,安装好了,但是死活启动不了服务,连接不上数据库,真的给我整麻了,我记得以前win下安装简单的一批啊,最后我终于摸索出来了,mysql安装好之后,第一次一定要在设置里搜索mysql初始化,然后千万不要在终端去启动服务,不然就会报错一大堆。话不多说直接开整。解决报错ERROR! The server quit without updating PID file (/usr/local/mysql/data/Mac.)

2024-11-22 10:45:49 852

原创 SpringBoot,IOC,DI,分层解耦,统一响应

@RequestParam注解 完成参数名和形参的映射3、controller接收json对象,使用@RequestBody注解4、@PathVariable注解传递路径参数5、@ResponseBody(return 响应数据)

2024-11-21 20:34:05 1482 1

原创 mac2024 安装node和vue

重新设置 npm 的全局目录可以避免权限问题,推荐优先配置。以下是使用 Node.js 官方 .pkg 安装包 安装 Node.js 和 Vue CLI 的完整流程,包括如何重新设置 npm 的环境,以避免权限问题。默认情况下,npm 全局包会安装到 /usr/local/,可能需要管理员权限。如果输出 Node.js 和 npm 的版本号,说明安装成功。如果输出类似 @vue/cli 5.x.x,说明安装成功。使用重新配置的 npm 安装 Vue CLI。步骤 2.2:配置 npm 使用新的目录。

2024-11-20 11:52:18 2496

原创 axios

都是axios的get请求返回的结果,但包含的层级不同。

2024-11-20 10:59:20 288

原创 jsjsjs

DOM文档对象模型。也就是JavaScript将HTML文档的各个组成部分封装为对象。其实我们并不陌生,之前在学习XML就接触过,只不过XML文档中的标签需要我们写代码解 析,而 HTML文档是浏览器解析。封装的对象分为Document:整个文档对象Element:元素对象Attribute:属性对象Text:文本对象Comment:注释对象那么我们学习DOM技术有什么用呢?主要作用如下:改变HTML元素的内容改变HTML元素的样式(CSS对。

2024-11-19 17:41:43 831

原创 序列化和反序列化

Java 提供了一种对象序列化的机制。用一个字节序列可以表示一个对象,该字节序列包含该对象的数据对象的类型和对象中存储的属性等信息。字节序列写出到文件之后,相当于文件中持久保存了一个对象的信息。反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。对象的数据对象的类型和对象中存储的数据信息,都可以用来在内存中创建对象。

2024-11-10 19:46:53 829

原创 方法 引用

引用构造器,其实就是引用构造方法l格式类名::new范例Student::new

2024-11-10 14:45:56 993

原创 Stream流

生成Stream流的方式Collection体系集合使用默认方法stream()生成流, default Stream stream()Map体系集合把Map转成Set集合,间接的生成流数组通过Arrays中的静态方法stream生成流同种数据类型的多个数据通过Stream接口的静态方法of(T... values)生成流代码演示//Collection体系的集合可以使用默认方法stream()生成流​​//Map体系的集合间接的生成流​。

2024-11-09 20:44:12 524

原创 不可变集合

/如果集合的长度 > 数组的长度 :数据在数组中放不下,此时会根据实际数据的个数,重新创建数组。Map里面的of方法,参数是有上限的,最多只能传递20个参数,10个键值对。//如果集合的长度 <= 数组的长度:数据在数组中放的下,此时不会创建新的数组,而是直接用。当我们要获取一个不可变的Set集合时,里面的参数一定要保证唯一性。//toArray方法在底层会比较集合的长度跟数组的长度两者的大小。//2.利用上面的数据来获取一个不可变的集合。创建Map的不可变集合。//不可变的map集合。

2024-11-09 19:12:56 183

原创 JavaSE 泛型

java中的泛型只是编译的时候检查一下数据类型,但是内部存储的时候还是存储的Object类型的数据,但是你取出来用,会自动变成String

2024-11-09 15:50:00 213

原创 JavaSE List

ArrayList源码,底层原理原理第一次添加的时候已经添加了10个元素,添加第11个进行扩容的时候LinkedList源码,底层原理迭代器源码,底层原理

2024-11-09 14:27:48 143

原创 JavaSE Collection

使用forEach

2024-11-09 11:05:22 248

原创 bigdecimal、biginteger、正则表达式和捕获/非捕获分组,包装类,日历类

bigdecimal的底层存储原理是,存储每个数字,.,-的ascii值比如。

2024-11-08 22:08:00 230

原创 Object的tostring,clone,equals

tostring都是打印的对象的地址值,想看属性值都要重写tostring方法object中的是比较地址值,String中的,是先判断参数是不是字符串,不是直接false,是的话在比较属性值,相同true,不同false浅拷贝就是直接把变量存储的值copy过来,里面是值就copy值,里面地址值就copy地址。深拷贝就是,值一样copy过来,只有string类型的地址值会copy过来,复用串池,其他引用数据类型,会开辟一个新的地址存储一样的数据值。

2024-11-08 21:59:40 380

原创 JavaSE 内部类(静态,成员,匿名,局部)和lambda表达式

【代码】JavaSE 内部类(静态,成员,匿名,局部)和lambda表达式。

2024-11-08 21:42:20 680

原创 JavaSE 抽象、接口、适配器设计模式

2024-11-08 21:29:34 149

原创 javase 静态、继承、多态、final

static继承

2024-10-29 10:48:15 365

原创 学生管理系统(javase)

这个系统由四个类组成,两个javabean,两个界面类。业务逻辑非常常见实用,逻辑清晰,可读性强,且有注释,尽量保证自己不写屎山代码。每个校验方法,也很清晰,方便以后复用。对用户名有校验规则,唯一,3-15位,字母和数字,不能纯数字组成。:用户的登录,注册,重置密码,登陆后才能进去学生管理系统。忘记密码重置时,需要正确验证手机号和身份证号码,三次机会。对手机号和身份证有校验和现实世界一样。设置密码时,需要二次确认才能成功。:实现了学生信息的增删改查。

2024-10-28 11:35:40 623

原创 javase 003(String)

相同的串不会二次创建内存,而是引用地址。

2024-10-24 11:26:20 146

原创 javase002(javabean)

每个事务就是一个javabean类,比如试卷管理,学生管理,班级管理。。。这个javabean类有哪些属性?就看名词,比如试卷编号,名称,题目数量。。。这个javabean类有哪些行为?就看要干什么,修改,删除,查看。。。

2024-10-23 22:45:06 222

原创 javase001

方法在栈内存中调用完之后就被清理了。

2024-10-23 11:45:22 271

原创 24年10月Mac配置jdk21,jdk11并切换(jEnv插件)+安装idea2024.3最新教程(全网最详细,最新,实操验证,完全不会出错),homebrew傻瓜安装教程,不出错

我是M3芯片,macos15.0.1。

2024-10-22 11:00:20 3965 1

空空如也

空空如也

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

TA关注的人

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