hardhat本地交易导出到tenderly分析
本文主要是介绍使用tenderly来debug hardhat本地的事务。
参考资料:
Exporting a Local Transaction
安装tenderly CLI根据tenderly官网的文档,安装tenderly CLI。
macOS使用Homebrew package manager 来安装Tenderly CLI:
12brew tap tenderly/tenderlybrew install tenderly
或者,如果您也可以使用 cURL 并运行安装脚本进行安装::
1curl https://raw.githubusercontent.com/Tenderly/tenderly-cli/master/scripts/install-macos.sh | sh
Linux您可以使用 cURL 并运行安装脚本来安装 Tenderly CLI:
1curl https://raw.githubusercontent.com/Tenderly/tenderly-cli/master/scripts/install-linux.sh | sh
Windows ...
echidna智能合约模糊测试
Echidna是一个快速的智能合约(solidity)模糊测试框架,它是用Haskell语言编写的程序,实现基于以太坊智能合约属性的模糊测试。它使用基于合约ABI的复杂的grammar-based模糊测试来验证用户定义断言或者Solidity断言。Echidna在设计时考虑了模块化,可以很容易地被扩展成包含新的变种或者在特定情况下,测试特定合约。
特性:
生成根据实际代码生成定制化输入
可选的语料库集合,变种和覆盖指引,以便发现更深层次的错误
Slither 加持,在模糊测试之前提取有用的信息
集成源码,以识别哪些代码行在模糊测试后已经被覆盖
Curses-based retro UI、text-only或JSON输出
快速分类的自动最小化测试用例
与开发工作流无缝集成
模糊测试的最大gas消耗报告
支持使用 Etheno 和Truffle来初始化复杂的合约
此文只是Echidna的简单入门介绍,具体学会使用还是要看官方的Echidna 教程 。
参考资料:
Echidna 官方github (基本翻译自官方github文档)
Echidna:功能强大的以太坊模糊测试框架 ...
ClickHouse入门(一)
本文是ClickHouse入门教程(一),目标是学会ClickHouse的基本应用使用,不涉及ClickHouse的安装部署配置运维。以下内容基本从以下参考资料中拷贝而来:
参考资料:
《ClickHouse原理解析与应用实践》
ClickHouse官方文档
ClickHouse概述
ClickHouse
ClickHouse各种MergeTree的关系与作用
什么是Clickhouse(Click Stream, Data Ware-House) ClickHouse是一个开源的用于快速联机分析(OLAP)的列式数据库管理系统(DBMS)。是俄罗斯的Yandex公司于2016年开源的列式存储数据库(DBMS),主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。这个列式存储数据库的跑分要超过很多流行的商业MPP数据库软件,例如Vertica。
发展历程摘自:《ClickHouse原理解析与应用实践》
ClickHouse背后的研发团队是来自俄罗斯的Yandex公司。这是一家俄罗斯本土的互联网企业,于2011年在纳斯达克上市,它的核心产品是搜索 ...
Spring 入门(二) Spring AOP
本文是spring 入门教程(二),目标是学会Spring AOP 注解方式的使用。基本内容拷贝自以下参考资料:
参考资料:
Spring 参考手册(官方)
张开涛的跟我学Spring3
面试官:什么是AOP?Spring AOP和AspectJ的区别是什么?
理解Spring AOP AOP(Aspect Orient Programming),它是面向对象编程的一种补充,主要应用于处理一些具有横切性质的系统级服务,如日志收集、事务管理、安全检查、缓存、对象池管理等。 AOP实现的关键就在于AOP框架自动创建的AOP代理,AOP代理则可分为静态代理和动态代理两大类,其中静态代理是指使用AOP框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类,因此也称为编译时增强;而动态代理则在运行时借助于JDK动态代理、CGLIB等在内存中“临时”生成AOP动态代理类,因此也被称为运行时增强。 面向切面的编程(AOP) 是一种编程范式,旨在通过允许横切关注点的分离,提高模块化。AOP提供切面来将跨越对象关注点模块化。 AOP要实现的是在我们写的代码的基础上进行一定的包装,如在 ...
Spring 入门(一) Spring概述
本文是spring 入门教程(一),目标是知道Spring是什么,能做什么,以及一个简单的Spring的例子,内容基本均拷贝自以下参考资料。
参考资料:
Spring 参考手册(官方)
张开涛的跟我学Spring3
《Spring源码深度解析》 郝佳
《Spring5开发大全》 柳伟卫
《Spring5高级编程》
Spring源码解析 – AnnotationConfigApplicationContext容器创建过程
spring 源码解析 AnnotationConfigApplicationContext方式启动容器
BeanDefinition到实例Bean的源码分析
Spring介绍 Spring 是于2003年兴起的一个轻量级Java开源框架,由Rod Johnson 在其著作 Expert One-on-One Java EE Design and Development 中阐述的部分理念和原型衍生而来。Spring 目的是用于简化企业级应用程序开发,它使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情。然而, Spring 的用途不仅限于服务器端 ...
spring boot入门(三)-Validator参数校验
本文是spring boot的新手入门教程(三),目标是学会使用统一参数校验注解@Valid和@Validated,完成接口和方法参数的校验。
参考资料:
valid 和 validated的使用小结
Spring Validation最佳实践及其实现原理,参数校验没那么简单!
概述 基础概念和校验注解,网上有很多的资料,例如上面的参考资料,本文章不再复制描述,只关注一些重点。
@Validated和@Valid两种数据校验注解,Spring都支持。
@Valid(标准JSR-303规范)是javax(即Oracle)提供的校验注解,所属包为:javax.validation.Valid,Hibernate-validator对其进行了实现,并增加了一些自定义的校验注解。同时,它并非一定要和Spring结合在一起使用,可以手动导入Hibernate-validator依赖,如果是Spring boot用,可以导入spring-boot-starter-validation,这个包会依赖引入Hibernate-validator。
@Validated(Spring ...
spring boot入门(二)-Mybatis-Plus CRUD
本文是spring boot的新手入门教程,目标是使用Mybatis Plus 实现简单的Mysql单表增删改查,不考虑事务等。
参考资料:
Spring快速入门指南
MyBatis-Plus快速开始
前置条件
安装Mysql服务端,或已有Mysql服务端
Mysql已经有初始化库 test 表 User
数据库初始化表和数据数据库 test 中,已经初始化有一张 User 表,其表结构如下:
id
name
age
email
1
Jone
18
test1@baomidou.com
2
Jack
20
test2@baomidou.com
3
Tom
28
test ...
spring boot入门(一) - Hello World
本文是spring boot的新手入门教程(一),目标是能让人快速简单上手和了解服务端的简单Web开发。通过本文,可以学习使用IDEA构建一个Spring boot应用,实现经典的”Hello World!”
参考资料:
Spring快速入门指南
Spring boot 参考手册(官方)
Spring 参考手册(官方)
前置条件
安装Java开发套件JDK
使用AdoptOpenJDK:Spring推荐
使用Oracle JDK: 2019年4月16日当天,Oracle发布了Oracle JDK的8u211和8u212两个版本(属于JDK8系列),并从这两个版本开始将JDK的授权许可从BCL换成了OTN!也就是从这两个版本开始商用收费了! 所以Oracle JDK的最后两个免费版本号为8u201和8u202,并且一般情况下,我们通常使用奇数版本,即8u201(官方下载地址)。 奇数偶数版本差异说明见:官方奇偶数版本说明
阿里巴巴Dragonwell
亚马逊corretto
华为毕昇JDK
安装集成开发环境
IntelliJ IDEA:选择下载IntelliJ ...
kolla-ansible部署高可用openstack
从未使用过openstack,本文是对高可用openstack的第一次安装尝试,没时间整理,安装完再慢慢熟悉,后续整理。按照openstack官方当前最新release是stein版本的,但是pip install kolla-ansible安装的kolla-ansible,通过pip show kolla-ansible 查看是7.1.1版本,对应的是rocky版本的。所以本篇的kolla-ansible根据 kolla-ansible用户指南,在Centos7.6服务器集群上尝试安装rocky版本的Openstack,后端采用ceph存储。kolla-ansible和openstack的版本需要对应起来,这很重要!参考资料:
Openstack高可用离线部署(使用Kolla部署,后端存储使用CEPH)
kolla-ansible 部署openstack(vmware,多节点,ceph存储)
本文主机配置
主机必须满足以下最低要求:
2个网卡,都需要网线连接(内部管理网络建议万兆,外部网络千兆即可)
8GB主内存
40GB磁盘空间
本文服务器配置
至少2台contro ...
tomcat8的配置优化
使用任何一个第三方工具、库等,都需要对工具和库的配置进行了解和测试(一般公司都没有做测试,直接使用,不投入时间测试,实际上在后期,重复使用、遇到问题、以及资源浪费的开销更大),本文当然…也没有做测试。。。只是参考网上的资料进行整合,同时结合本身生产环境上的大并发web部署,讲解如何配置tomcat8的参数,使得web更安全,并且支撑更高的并发量,更大的吞吐量,同时降低系统资源使用率。
当然,tomcat中的JVM参数配置对web性能的影响最大最明显,但是并非本文的重点,JVM的调优内容也很多,应该另开一个文章来讲解。我们这里只讲解tomcat容器本身的配置,主要是server.xml的配置优化。
安全配置 –基本拷贝至 Tomcat8安装, 安全配置与性能优化一般情况下,软件的漏洞信息和版本是相关的,因此,软件的版本号对于攻击者来说是很有价值的。所以,在使用第三方软件的时候,一定要注意隐藏软件的版本信息等。另外,有的还需要配置端口,黑白名单,权限。
隐藏版本信息
隐藏HTTP 头部的版本信息,编辑tomcat的conf目录下的server.xml文件,为Connector节点 ...