自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(301)
  • 资源 (5)
  • 问答 (1)
  • 收藏
  • 关注

原创 使用 Foundry 进行高效、可靠的测试

摘要 Foundry框架为智能合约测试提供了高效解决方案,具有原生Solidity测试、极速性能和强大工具等优势。本文通过计数器合约案例演示了基础测试编写,包括断言函数和日志打印的使用方法。重点介绍了Foundry的核心功能——作弊码系统,涵盖环境控制、断言验证、模糊测试等类别,如vm.roll、vm.warp等常用操作,这些工具能精确模拟区块链状态,为合约测试提供全面支持。测试案例展示了从基础功能到边界条件的完整验证流程,体现了Foundry在保障合约安全性方面的价值。

2025-11-30 10:59:29 1084 1

原创 Foundry初始化、编译、测试、部署智能合约全流程介绍

Foundry 是一套用 Rust 编写的以太坊(EVM)智能合约开发工具链,由 Paradigm 团队开源维护。它以“极速、可移植、模块化”为设计目标,将编译、测试、部署、交互等流程整合在同一 CLI 中,是目前性能最突出的 Solidity 开发框架之一。

2025-11-24 18:19:29 1778

原创 以太坊改进提案EIP以及常用的ERC20和ERC721介绍

EIP(以太坊改进提案)是以太坊生态系统的核心治理机制,分为标准轨道EIP(包括核心协议变更、ERC应用标准和网络API)、元EIP(流程改进)和信息类EIP(设计指南)。其中ERC标准最为开发者熟知,如ERC-20同质化代币标准定义了6个必须实现的函数(转账、授权等)和2个事件,确保代币互操作性。ERC-20通过标准接口实现余额查询、转账和授权功能,典型应用包括代币发行和DEX交易。该标准已成为以太坊生态中最广泛采用的代币规范。

2025-11-21 14:32:09 1313 4

原创 Solidity代码复用梳理总结

本文系统介绍了Solidity中的代码复用机制,包括基础复用(函数与修饰器)和模块化复用(导入系统、接口与库)。函数复用可减少重复逻辑,修饰器用于添加通用验证;模块化通过import导入外部代码,接口标准化合约交互,库实现通用功能封装。文章提供了各类代码示例,展示了如何在实际开发中高效复用代码,提高开发效率并降低Gas成本。

2025-11-20 18:03:12 1084

原创 solidity中的抽象合约

Solidity中的抽象合约是一种至少包含一个未实现函数的合约,类似于抽象类,无法直接部署。摘要要点:1)抽象合约必须通过继承使用,子合约需实现所有抽象函数;2)与接口的区别在于抽象合约可包含已实现函数、状态变量和修饰器;3)主要用途包括作为基类模板、定义接口标准和部分实现模板;4)编译器会强制检查子合约是否实现所有抽象函数。抽象合约为智能合约开发提供了代码复用和标准化的重要机制。

2025-11-10 11:31:24 450 1

原创 Solidity 中的 ABI 编码与底层调用

本文介绍了Solidity中ABI编码与底层调用的核心概念。ABI定义了智能合约与外部交互的二进制接口规范,包括函数签名和参数的编码/解码方法。Solidity提供了abi.encode、abi.encodePacked等编码函数,以及call、delegatecall等底层调用方式,这些机制使合约能灵活地与外部交互,同时也带来一定的风险。理解ABI编码和底层调用是掌握高级Solidity开发的关键基础,特别是在实现复杂合约交互或代理模式时尤为重要。

2025-11-10 10:50:34 1049

原创 solidity中的接口和继承

Solidity中的接口和继承是构建智能合约的重要机制。接口是仅声明函数的外部契约,用于标准化合约交互,要求实现合约必须提供所有函数定义。继承则通过is关键字实现代码复用,支持函数重写和多重继承,并遵循C3线性化规则确定调用顺序。接口解耦合约交互,继承促进代码复用,二者共同提升合约的模块化、可扩展性和可维护性,是Solidity面向对象编程的核心工具。

2025-11-07 18:27:29 1414

原创 详解Solidity中的事件

Solidity事件是智能合约与外部应用通信的关键机制,作为区块链的低成本"广播系统",通过日志记录状态变化。相比状态变量存储,事件具有Gas效率高、支持前端异步监听、便于数据审计和调试等优势。事件使用emit触发,参数可标记为indexed以便过滤(最多3个)。底层通过EVM的LOG操作码实现,数据存储在交易回执中。前端可通过web3.js订阅或查询历史事件,获取包含参数值、区块信息等详细数据的Event对象。开发者还可创建匿名事件或使用事件重载功能。合理使用事件能显著提升DApp性能

2025-11-05 11:58:42 1041 1

原创 solidity中的错误处理机制

Solidity智能合约错误处理机制解析:原子性交易的错误处理对合约安全至关重要。Solidity提供三种主要方式:1)require用于输入验证,可退款未用Gas;2)revert支持复杂条件和自定义错误,Gas消耗最低;3)assert检查不应发生的内部错误,不退还Gas。0.6.0版本引入try/catch处理外部调用失败,但不能捕获内部函数错误或不存在的合约调用。开发者需根据场景选择合适方式,在安全性和Gas效率间取得平衡。

2025-11-05 10:13:07 1273

原创 solidity中的函数总结

Solidity函数是智能合约的核心,包含丰富的特性和细节。函数的基本结构由可见性、状态可变性、修改器等组成。可见性修饰符(public/internal/private/external)决定函数的调用范围。状态可变性(pure/view/payable/默认)定义函数如何与区块链交互。函数修改器用于插入执行前后的检查逻辑,提高代码复用性和安全性。这些特性共同构成了Solidity函数的完整体系,开发者需要根据实际场景合理选择组合,以确保合约的安全性和高效性。

2025-10-24 08:07:11 1811 2

原创 solidity的变量学习小结

值类型不需要指定数据位置的原因是编译器知道它们应该在栈上引用类型需要指定数据位置的原因是编译器需要知道是在内存还是存储中Q:如果对值类型的局部变量使用数据位置修饰会怎样呢?A:我验证了一下: uint memory a = 0;会编译报错: 4.1 内存中的赋值行为出于“安全性考虑”、“Gas 成本优化”、“简化存储管理”这几个原因,字符串被设为不可变的4.2 存储中的赋值行为理解storage引用,要区分“storage引用” 与 “状态变量”试图在函数返回参数中使用storage修饰会编译报错:

2025-10-18 21:17:32 1289 3

原创 Solidity 变量完全指南

理解 Solidity 变量远不止是知道如何声明一个。

2025-10-17 17:56:40 1182

原创 在 Windows 上安装 WSL并使用linux命令处理文本文件

WSL(Windows Subsystem for Linux)允许在Windows中直接运行Linux发行版。安装时需确保系统为Windows 10(2004+)或11,通过管理员PowerShell执行wsl --install命令即可自动完成设置,包括启用功能、安装内核及默认Ubuntu。安装后重启并按提示创建账户。在WSL中可通过cd /mnt/c/路径访问Windows目录,使用wc -l统计文件行数,或grep -v "字符串" 原文件 > 新文件来删除包含指定字符串的

2025-10-09 13:23:23 765

原创 用sftp协议实现对文件的上传下载

用sftp协议实现对文件的上传和下载,相关java工具类的编写

2025-08-22 15:51:03 416

原创 如何把对方的jar包添加到自己的项目里

一般在金融业务中会经常涉及加密,而在跟第三方联调时,有时候要用到对方提供的加密工具,经常以jar包的形式提供。那么该如何引入到自己的springBoot项目中呢?在Maven的pom.xml中,includeSystemScope是用于控制是否将系统范围(system)的依赖包含到最终打包产物中的配置项。若需将系统范围的依赖包含到打包产物中,需在build节点中添加includeSystemScope配置并设置为true。当依赖的scope设置为system时,默认情况下这些依赖不会被打包到最终产物中。

2025-08-22 15:27:32 337

原创 近期https接口的联调小记

前不久跟第三方联调接口,涉及到了https协议,特记录一下备忘。

2025-08-22 15:03:24 580

原创 要会用抓包来帮助“破案”

摘要:通过抓包分析MQTT通信中断问题,发现TCP重置连接由平台端发起。进一步排查发现不同画面播放时长差异与Nginx配置client_max_body_size 100M限制有关,复杂画面数据量接近阈值时被截断。调整该参数后问题解决。关键点:使用tcpdump -i Eth1 -w /root/aap.pcap 'port 1883' -s 0捕获完整MQTT数据包,结合Nginx错误日志定位配置瓶颈。(149字)

2025-08-14 16:40:18 699

原创 实时画面回传的开发复盘

逢山开路遇水搭桥,遇到问题不可怕,尤其是当下有这么趁手的AI辅助工具,所以保持轻松乐观的心态。但仍然是需要学习的,因为不学习,你都没办法向AI提问~

2025-07-29 17:52:01 454

原创 如何对nginx设置开机自启动

使用 systemd(适用于 CentOS 7+/Ubuntu 16.04+/Debian 8+ 等新系统)**

2025-07-29 17:08:10 812 2

原创 在华为欧拉系统openEuler 24.03 sp1上安装nginx 1.28

一、华为欧拉系统openEuler 24.03服务器上离线安装Nginx 1.28版本,但是服务器自带了openssl 3.0,而nginx为了兼容openssl 1.1仍然会依赖libcrypt.so.2。源码安装方式 、RPM安装方式、 二进制软件安装方式、yum安装方式。二、如果要用源码编译的方式安装,也需要安装一些依赖,可以从这里边找到。先把上述的rpm包全部安装后,再源码编译安装nginx。所以在安装时报依赖错误。

2025-07-29 15:22:43 1854

原创 从一次emqx的安装经历感受软件世界的封装思想

封装无处不在

2025-07-28 15:14:42 830

原创 对近期接触到的直播相关知识进行梳理

M3U8 文件是 HLS (HTTP Live Streaming) 协议的核心组件,它本质上是一个播放列表文件,包含媒体流的结构信息。直播与视频聊天的对比:我觉得直播是通过流媒体技术把现场的图像和声音采集后分发出去,供观众在线围观,可以认为是开放的,一般没有人数限制;而视频聊天是点对点的线上交流,是基于UDP/TCP的实时传输协议实现的。流媒体是通过互联网实时传输音视频内容的技术,用户无需等待完整下载即可开始观看,核心是将内容分割为小数据包顺序传输。直播传输的是视频流,而点播是播放的录制好的视频文件。

2025-06-23 14:15:43 1395

原创 ftp文件无法写入文件排查过程记录

这中间还把测试环境的ftp改成了ftps, 客户端对ftp这块做了调整,兼容了ftp和ftps,但是预发环境还是之前的ftp。我的体会居然是对段永平的本分思想增加了理解,在协作过程中出现问题,当责任不清晰时,要老实本分地把问题纳入到自己职责范围内,长期下来,不仅会赢得声誉,还会成长得更快。测试环境,ftp服务器是可以正常自动创建目录,并写入文件的,但部署到预发环境后,目录倒是可以自动创建,但是文件不能正常写入了。领导的意思是可以用命令去连接ftp,如果可以正常操作,那就是代码的问题。

2025-06-09 18:15:33 746

原创 接入ftps上传文件

sftp = ssh + scp,这个不适合大模式的文件传输领导表达有误,实际上是希望把ftp改为ftps。

2025-06-03 11:15:15 479

原创 ftp改为sftp,从服务器配置到代码的调整梳理

将FTP改为SFTP的核心方法是启用SSH服务并配置SFTP子系统,同时调整客户端工具或脚本以使用SFTP协议替代FTP协议‌。具体操作包括服务器端SSH/SFTP服务配置、防火墙端口调整。还是在SSH配置文件/etc/ssh/sshd_config中,修改倒数第二行。还是编辑SSH配置文件/etc/ssh/sshd_config。编辑SSH配置文件/etc/ssh/sshd_config。找到#Port 22那一行,可以放开注释并改为其他端口。但需要开放该端口的访问。

2025-05-30 16:57:14 879

原创 EMQX社区版5.8.5集群搭建踩坑记

1.作为反向代理服务器,NGINX 位于 MQTT 服务器端,代表 MQTT 客户端向 EMQX 集群发起 MQTT 连接请求,并代替 EMQX 集群处理请求,然后将 EMQX 集群的响应返回给 MQTT 客户端。比如我在openEuler 22.03 (LTS-SP4)上使用emqx-5.8.5-el8-amd64.tar.gz安装成功,但在CentOS Linux 7 (Core)上却安装不成功,后边换成了emqx-5.8.5-el7-amd64.tar.gz才可以。

2025-05-30 13:53:02 2224

原创 EMQX启用单向认证的SSl/TLS连接的配置步骤

参考官网地址:https://docs.emqx.com/zh/cloud/latest/deployments/tls_ssl.html#%E7%94%9F%E6%88%90%E8%87%AA%E7%AD%BE%E5%90%8D%E8%AF%81%E4%B9%A6。执行openssl version -a 获取 openssl.cnf 目录。需要注意openssl.cnf的路径。subj 依据实际使用情况调整。

2025-05-27 16:38:54 1263

原创 了解一下OceanBase中的表分区

OceanBase 是一个高性能的分布式关系型数据库,它支持 SQL 标准的大部分功能,包括分区表。分区表可以帮助管理大量数据,提高查询效率,通过将数据分散到不同的物理段中,可以减少查询时的数据扫描量。

2025-05-06 18:08:44 1457

原创 并行查询的超时时间设置

【代码】并行查询的超时时间设置。

2025-02-19 11:26:44 334

原创 定期删除一周前的数据,日志表的表空间会增长吗?

删除操作不释放空间:DELETE 操作只会标记数据为删除状态,并不会立即释放空间。碎片化:频繁的 DELETE 和 INSERT 操作可能导致表空间碎片化,虽然有空闲空间,但由于不连续,可能无法有效利用。高水位线:表的高水位线(HWM)不会因 DELETE 操作而降低,即使删除了大量数据,表空间也不会自动收缩。分区表:使用分区表,按时间分区,直接删除旧分区,操作更高效且能立即释放空间。即使定期删除一周前的数据,日志表的表空间仍可能持续增长。通过这些方法,可以有效控制日志表的空间增长。

2025-02-07 19:31:18 470

原创 小经验小结

关于数据校验的一条经验: 先假定是合法的,直接落库,再校验数据是否有问题,有问题就抛异常回滚关于外部接口调用:调用外部接口的组件交给spring管理,这样方便将一些配置数据(如url地址、加密key等信息)注入进来关于功能自测:起码要用debug覆盖一遍自己的代码逻辑,避免明显的缺陷

2024-10-14 14:20:32 352 1

原创 多态对象的存储方案小结

和@JsonSubTypes可以应对这种情形,但有点麻烦,并且name属性必须是字符串、必须用Jackson为基础的json工具类对json字符串和对象进行序列化和反序列化。(为了方便与前端交互,实体类成员变量的值如showConfig1、showConfig2都具有相同的前缀,后缀则是枚举值)某个类型有几种不同的子类,Jackson中的@JsonTypeInfo。后来,又遇到了一次这种情形,觉得不用多态反而更方便地应对了。存储时,把不同实体类对象转换为json串赋值给对应的字段上。

2024-10-14 11:50:13 538

原创 使用Python的f-string时踩了一个坑

【代码】使用Python的f-string时踩了一个坑。

2024-10-14 11:19:39 361

原创 巧用枚举应对多种策略的场景

其次是每个数据项都有多个属性(比如中文含义、英文编码、权重值…),或者是需要对某个行为以各不相同的策略进行实现。总结一下,什么时候适合使用枚举呢?

2024-10-14 11:12:58 570

原创 exists在sql中的妙用

最近有两处功能都用到了exists, 觉得它很好地用子查询的方式实现了对主表数据的过滤。

2024-10-11 20:20:49 588 1

原创 记录一下工作中用到的几个有意思的小算法

22年的夏天,我补了一段时间算法知识,看的是马士兵教育左程云老师的算法课和极客时间王争老师的算法之美,虽然没吸收太多,但也对算法中蕴含的巧妙智慧印象颇深,着实在心里埋下了一颗喜欢算法的种子。工作中很少需要自己编写一段算法,但最近一段时间集中遇到了几处,特意记录下来。

2024-10-11 19:51:10 1023

原创 使用规则引擎简化特定场景的开发

前一段开发一个根据获奖规则生成获奖名单的功能,场景比资金路由的匹配要简单,但规则引擎也是适用的。之前做资金中台的时候,用到了aviator轻量级的规则引擎,简化了匹配逻辑。

2024-09-13 16:46:12 317 2

原创 自测的重要性

发现了sql少写了个条件、发现了入参必传 mergeBrandId、发现了复制错误 mergeBrandId 跟 memberBrandId长得很像。2、核对需求文档,看看是不是自己的逻辑跟需求都是匹配的,有没有遗漏的细节。3、有时候配合接口的使用方去做点假数据,也是发现自己接口漏洞的好机会。1、把debug一遍,看看每一步变量值的变化都符合预期。

2024-09-13 11:11:08 337

原创 actuator字符绕过漏洞在Nginx和apisix上的配置

最近遇到了安全部门派发的actuator泄漏漏洞,领导希望不暴露到外网上,对于内网需要认证才可以访问。要想不暴露到外网上,就需要在网络层面做拦截,比如nginx和apisix上做代理配置。一般的情况都可以应对,就是对于http://xxx/actuator;%2f…/字符绕过这种情况,一直没有解决方案。

2024-09-13 10:34:47 1570

原创 工作中遇到了一个线程中断异常

而主线程随后又进行了数据查询,这时候从druid数据库连接池中获取数据连接会用到AQS中的可重入锁, 可重入锁会检查线程的中断标识,如果是中断,则抛出中断异常。主线程使用CompletableFuture开辟子线程进行了并行查询,但其中某个子线程执行时发生异常,没有捕获。结果就在主线程等待所有子线程都执行完毕时报ExecutionException。工作中遇到了一个线程中断异常,备忘记录一下。从而对主线程打上了中断标识。

2024-09-11 19:36:52 688

在openEuler 24.03 sp1上源码编译安装nginx的依赖

在openEuler 24.03 sp1上源码编译安装nginx的依赖

2025-07-29

Spring+SpringMVC的一个简单登录例子(参考用户ldhsecret)

参考了用户ldhsecret分享的例子,对页面上不能登录进行了修改,使得下载后导入到Eclipse中可以运行

2013-07-27

My97DatePicke日期控件

使用时只需要在页面上引用 WdatePicker.js 即可。 然后,像这样 <input id="d11" type="text" onClick="WdatePicker()" class="Wdate"/> 使用就可以呈现出效果了,用起来很方便~

2014-06-12

一个使用angularJS实现的简易音乐播放器

一个使用angularJS实现的简易音乐播放器,体现了angularJS双向绑定的使用

2018-04-04

My|Batis框架的入门例子

在Eclipse下做的一个MyBatis的例子,对配置文件进行了注释,可供有兴趣了解的朋友参考

2013-07-27

算法导论(第二版)pdf

这本书深入浅出,全面地介绍了计算机算法。对每一个算法的分析既易于理解又十分有趣,并保持了数学严谨性。本书的设计目标全面,适用于多种用途。涵盖的内容有:算法在计算中的作用,概率分析和随机算法的介绍。书中专门讨论了线性规划,介绍了动态规划的两个应用,随机化和线性规划技术的近似算法等,还有有关递归求解、快速排序中用到的划分方法与期望线性时间顺序统计算法,以及对贪心算法元素的讨论。此书还介绍了对强连通子图算法正确性的证明,对哈密顿回路和子集求和问题的NP完全性的证明等内容。全书提供了900多个练习题和思考题以及叙述较为详细的实例研究。

2011-11-20

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

TA关注的人

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