- 博客(45)
- 收藏
- 关注
原创 【合约开发工具】合约的开源与验证
前言在我们部署完合约后,可以将合约的源码上传到各链的浏览器上开源并验证,一来是方便前后端调试代码,二来是方便其他人查看合约代码。ETH 的合约建议在 Remix 进行验证;BSC 的合约建议在 Hardhat 里进行验证;OKC 的合约建议在 Explorer 里进行验证;Explorer验证在 Scan 里先注册,申请 API key 。点击浏览器上的 Verify and Publish,按配置操作。一定要注意 Compile Type 以及 编译器版本 的选择。如果 constr
2022-04-14 22:04:28
3666
原创 【合约安全】重入 (Reentrancy) 攻击
重入(Reentrancy)攻击是合约攻击中比较常见的攻击手段。黑客利用自己攻击合约中的 fallback() 函数和多余的gas将合约中本不属于自己的 ETH 转走。
2022-02-17 11:44:25
15472
原创 【合约检测工具】使用 Slither 检测合约中的 “坏味道”
在合约开发中,重中之重是合约的安全。在开发中,我时常会疑惑,除了自己写的单元测试,还有没有别的方法可以像 sonar 一样检测 solidity 中的 “坏味道” 呢?咱们不用收费的 MythX ,可以试一试开源的 Silther。...
2022-01-15 21:21:06
987
原创 【合约开发工具】solidity + hardhat 在 docker 容器中运行
本文介绍使用了 hardhat 集成的 solidity 的合约如何在 docker 中运行。
2021-10-26 14:48:00
791
原创 【Solidity 开发】合约函数返回 struct 或 struct 数组
在solidity 0.4 时代,是不支持返回struct的。但现在solidity已经进入了0.8的版本,这个版本是支持直接返回struct与struct array的,以下为具体做法。
2021-09-18 10:08:48
16950
3
原创 【Solidity 开发】访问可见性 - internal & private & external & public
本文按照访问可见范围由大到小,简要介绍以上4( internal、private、external、public)个关键字。
2021-07-08 16:31:36
1587
1
原创 【合约开发工具】如何使用 hardhat 在本地测试合约
前言本文介绍如何使用 hardhat 在 solidity 项目中本地测试智能合约,并介绍一些简要的写法。基本配置在本地测试与部署前,需要认识与安装一些 hardhat 的插件。
2021-07-05 13:58:59
5226
1
原创 【合约开发工具】使用 hardhat 在 rinkeby 部署第一个合约
前言本片介绍 hardhat 配置文件的基本编写信息与技巧。先来熟悉一下模版:简要介绍
2021-06-25 18:19:42
5868
2
原创 【合约开发工具】基于 hardhat 新建一个 Solidity 项目
安装新建 npm 项目npm init新建 hardhat 项目npm install --save-dev hardhatnpx hardhat添加 typescript支持npm install --save-dev ts-node typescriptnpm install --save-dev chai @types/node @types/mocha @types/chai添加必要项目mv hardhat.config.js hardhat.config.
2021-06-19 14:16:42
986
原创 【日常问题】离线手动全局安装npm包
前言在做一个新目的时候要npm安装包@graphprotocol/graph-cli,但是发现科学上网也连不到库,于是就向同事要了依赖,自己研究了一下,全局手动安装了。安装前提需要安装好npm要安装的包。安装步骤查看本机npm -g的包路径npm root -g将包复制到该路径下执行命令安装包,以本例为例:npm i -g @graphprotocol/graph-cli@0.20.0安装成功注意一定要执行步骤三,不然执行npm list -g --dept
2021-06-01 18:55:54
2596
原创 【Java学习笔记-并发编程】关键字 volatile 详解
最近项目中,写到了很多多线程的东西。其中有个多任务轻型阻断器的实现,牵出了 volatile 关键词的应用,顺便学习一下原理和相关的基础知识。
2021-02-24 19:56:01
330
原创 【Java学习笔记-并发编程】Treiber stack 详解
最近在看 Java 并发编程的相关源码。发现了一个词 —— Treiber stack。这篇文章介绍一下什么是 Treiber stack 以及其核心算法 CAS。
2021-02-20 17:33:58
1086
1
原创 【Java学习笔记-并发编程】线程池
在上篇整理了 Java 线程与任务的概念,这篇说一说 Java 的线程池,在我们更加了解线程池的同时,也增加一些设计思路。
2021-02-19 10:56:17
284
原创 【Java学习笔记-并发编程】线程与任务
最近在看一些Java15的并发、线程调度以及一些实现方案的东西,虽然很多东西还是 1.5 的,但还是很有收获。
2021-02-04 17:50:44
426
9
原创 【Java学习笔记-基础篇】关于注解(annotation)编程
今天在看以前写的代码,发现自己对注解的了解还不是非常透彻,经常选择性就忽视了对注解实现的探究,遂查询资料学习了一下。
2021-01-19 13:53:35
160
原创 【实现方案】springboot 使用 websocket 与客户端实时通信(with 多人聊天室 + 心跳检测)
在之前一个项目中,有一个实时通信的需求需要实现,由此我初步接触了 websocket 协议,并做了简单的业务实现。作为一个初步的了解吧,给大家一个参考。
2021-01-14 16:18:30
2065
原创 【Elasticsearch学习笔记-基础篇5】Elasticsearch 集群管理
本篇就是 es 学习笔记的倒数第二篇咯,集中于 es 的集群管理。同样的,本篇也是较少涉及相关配置文件的编写,主要聚焦于步骤方法总结以及本人感悟。
2021-01-12 16:45:02
259
原创 【Elasticsearch学习笔记-基础篇4】Elasticsearch 文档间的关系
这篇文章还是延续着第三篇文章的精神,概述相关概念与本人的学习心得, 不涉及 API 与具体的操作,有兴趣的同学可以另行查阅学习。
2021-01-11 09:50:44
356
1
原创 【Elasticsearch学习笔记-基础篇3】Elasticsearch 聚集(aggregation)与过滤器(filter)
这篇主要总结一下 es 的聚集(aggregation)与过滤器(filter),不会涉及到具体的 API 操作与示例,主要总结概念性与本人理解的内容。
2021-01-05 17:10:47
2419
原创 【Elasticsearch学习笔记-基础篇2】Elasticsearch倒排索引、分析及打分
在之前的一篇文章中,简单介绍了 es 的设计和相关概念,这一篇来介绍一下 es 中实操方面相关概念的引申——在索引和搜索文档的时候,es 是怎么做的。
2020-12-16 16:18:10
530
原创 【Elasticsearch学习笔记-基础篇1】Elasticsearch介绍及设计概念
前言随着本人所在小组每周的技术分享,本人决定将每周所学整理为学习笔记,以供自己牢固知识。同时希望对新玩家有引导作用,也希望老玩家能就我之所学错误之处批评指正,不甚感激。本人的学习方法:争取在系列学习之前给自己提几个问题,随着学习的深入可以贯穿始终,从顶层到底层的回答系列学习前问题。私以为,徐徐图之,便可进至大成。Elasticsearch 简单介绍ES是一个基于RESTful web接口并且构建在Apache Lucene之上的开源分布式搜索引擎。同时ES还是一个分布式文档数据库,其中每个字段
2020-12-10 14:42:13
278
原创 【实现方案】springboot 中 FreeMarker 导出 word 文档(动态表格与动态多图片)
前言项目有需求,通过特定模板导出 .doc 格式的 Word 文档。因为之前有过使用 apache-poi 导出 excel 的经验,所以在一开始选择了 apache-poi 作为实现依赖,但后来发现生成 word 调用及实现过于复杂,遂放弃。查阅资料后,试着使用 easy-poi 实现,但又发现可定制程度太小,无法动态生成表格和图片,遂放弃。就在山穷水尽之时,我想到了 freemarker。众所周知,Word 的本质就是一个 xml 文件,所以我们使用 freemarker 来动态生成 Word,应该
2020-11-25 11:24:52
1762
1
原创 【数据库】mysql 实现 oracle connect by 遍历特定节点的所有子节点。
前言在做企业开发时候,有时会碰到这样的需求:在一个树形的组织结构中,查询一个公司所有的子公司。如果数据库使用的是 Oracle 那可以通过 connect by 关键字轻松实现。但如果用的是 mysql,那么就有两种解决方案(我只想到两种哈哈):通过代码递归查询所有子公司。通过编写存储过程(函数),来实现子公司的递归查询。在本文中,采用第二种方案,并记录如何在 mybatis 中调用存储过程。实现过程编写存储过程CREATE DEFINER=`root`@`%` FUNCTION `g
2020-11-18 16:16:43
333
原创 【运维部署】nginx-UrlRewrite 实现URL重写转发
在前后端分离的开发模式中,会遇到这样一个需求:前端通过特定路由前缀来访问后端接口,例如:http://localhost/api/getUser,这里 api 即是每一个前端 request 所多加的前缀。
2020-10-14 14:24:27
1617
原创 【运维部署】nodejs打包静态资源内存溢出
背景在使用jenkins部署前端工程时报出内存溢出异常,之后进行排查。异常:Js heap out of memory解决方法经反复测试发现位node版本问题,10.x会有此问题,需要升级到12.x。升级方法安装 nodejs 的版本管理器 nsudo npm install -g n使用 n 切换(更新) nodejs 版本最新版本n lastest稳定版本n stable安装指定版本n 12.18.4...
2020-10-12 20:29:17
576
原创 【实现方案】Nginx搭建简单直播服务器
前言使用 Nginx + Nginx-rtmp-module 在Ubuntu 中搭建简单的 rtmp 推流直播服务器。相关概念RTMP: RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议。依赖于flash播发器来拉流。请求样式:rtmp://xxx.xxx.xxx.xxx:1935/ttest(命名空间)/test(推流码)HLS:苹果出的一套Http Live Streaming协议,它的工作原理简
2020-09-23 16:26:29
351
原创 【读书笔记】第二次机器革命
全书分为大致三个部分:数字化背景介绍、数字化能给社会带来什么影响以及我们应该如何面对数字化给我们带来的影响。全书在叙述主线的同时,穿插实例与设问力图还原数字化的起因经过以及结果,但遗憾的是,书中很多例子都是美国的案例,个人认为有些示例是在特定情况下的特定表达,没有充足的说服力。但总体来说,书中的几个大观点以及原理性的阐述,我认为还是非常具有实用性与启发性的。实际上,前几个章节我认为是整本书的根基。首先,通过横向比较社会发展指数(有一个特定的算法)来明确我们现在就是处于一个大变革,大发展的时期,处于一个数字
2020-07-19 16:32:15
368
原创 【web基础】正向代理与反向代理初步了解
这段时间对计算机网络的一些基本概念有些不清晰,做一下记录梳理。https://www.cnblogs.com/Anker/p/6056540.html
2020-07-18 00:03:30
164
原创 【Python绊脚石】循环嵌套内层只执行一遍
情景叙述在编写对比两个csv文件内容的脚本时,需要利用循环嵌套来实现功能。在一般情况下,我们可能会这样写:但会发现最后的执行结果是,内层循环只执行了一遍。在第一次执行之后,外循环都会跳过内循环。问题分析因为我一开始不是写python的,所以会犯这样的低级错误。在for j in bbFile:这条语句中,因为每次 j 在第一次内循环过后没有被重新初始化,所以导致 j 在第二次以及之...
2020-04-15 13:39:23
3391
2
原创 【Java学习笔记-高级篇】Java回调函数应用
前言最近在复习一些编程的基础知识,发现回调函数这个东西用起来很方便。于是就研究了一下Java是如何实现真正意义上的回调函数。直接调用与间接调用在理解回调函数之前,我们需要先来理解在 c/c++ 中,什么是直接调用,什么是间接调用。直接调用在函数A的函数体里,通过书写函数B的函数名来调用之,使内存中对应函数B的代码得以执行。这里,A称为“主叫函数”(Caller),B称为“被叫函数”...
2020-02-03 19:53:52
521
原创 【ORM】Mybatis 多字段组合唯一 并批量添加数据
前言现在,普遍的关系型数据库开发都离不开 mybatis 这个优秀的持久层框架。而在普遍的业务场景中,也时常会有短时间内高频次的增删操作。这样短时间内高频次的操作,通常有两种实现方案,第一种是比较常见的一种:在代码中编写循环,在持久层做单次的操作;另一种是通过 mybatis,直接在持久层批量操作数据。虽然mybatis 的批量也是在内存中操作的,但它从始至终只开了一个 sqlSession ,...
2020-01-16 16:10:42
1384
原创 【数据库】关系型数据库设计规范感悟
前言在设计关系型数据库时,我们从课上的学习得知,需要参照不同的范式及原则,设计表结构与表关系。在课上,我们关注的角度更多是,设计要符合范式,保证数据不冗余。但在实际的开发设计中,我们往往要从更多角度思考数据库的设计原则,根据不同的需求场景,进行不同角度的侧重。比如开发是否便捷,表结构是否易维护,查询效率是否达到要求等等。设计原则一般的企业级应用数据库中,对于数据的冗余是有一定容忍性的,但对于...
2020-01-06 21:32:49
243
原创 【开发工具】使用swagger生成接口文档
前言在开发过程中,编写接口文档是开发人员必不可少的工作,但在写文档的时候,总会占用不少时间与精力。使用 springfox-swagger2 框架,并在相应地方加上注解,swagger 就可以帮我们自动在线生成标准的接口文档,并支持接口的测试。具体实现1、maven依赖实际上,前两个依赖是自动生成与测试的框架依赖。com.google.guava 这个依赖是为了解决一个报错,貌似是因为在类...
2019-12-25 11:39:20
608
原创 【开发工具】使用 MyBatis-Generator 自动生成代码
前言Mybatis-generator 可以生成关于 mybatis 的模板代码。在数据库表复杂的情况下,使用 mybatis-generator 生成 model 等工程必要类无疑是极其方便的。生成的内容最简单的:Model类、Dao接口、基于主键的基础查询mapper语句。具体步骤1、添加Maven依赖mybatis-generator 其实是一个开发插件,运行插件就可以生成模板代...
2019-12-06 16:19:15
178
原创 【web基础】Cookie Session Token 区别与联系
前言最近写的项目是和用户权限与认证有关,所以学习了很多有关 Cookie、Session 以及 Token 的相关知识,在这里做一个梳理。本文包括基础概念、区别与联系。对于实际如何在项目中进行实现,虽然在我之前的博客中有所体现,但之后我也会将其中实现功能的代码与流程整理出来,写一个专门的文章。Session基础概念“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息于...
2019-11-30 23:10:29
349
3
原创 【实现方案】Springboot结合HttpSession实现邮箱验证码验证用户
前置说明本文使用 spring 框架中自带的 JavaMailSender 发送邮件,使用HttpSession 在服务器端保存会话信息,储存生成的验证码,以便客户端输入验证码进行验证。邮箱验证码验证众所周知,邮件可以包含很多种类的内容。在本文中,邮件内容分为:纯文本、HTML代码(Thymeleaf模板)、附件、图片。看完内容类型可以得知,其实内容为 HTML 代码或附件是最好用的。验证...
2019-11-28 22:14:08
932
原创 【实现方案】Springboot整合token的权限管理实现(三)—— 解决token或cookie过期后的跨域问题
前置说明在token拦截器中,处理非法 (包含过期)token 的方法无非就是两种,一种是直接 return false,另一种是 throws Exception。如果是使用 throws Exception ,那么直接 http status code 就是500,在前端也很好捕捉。但是如果直接 return false,那浏览器还是会报出跨域请求的错误。解决方案问题原因其实导致这个问...
2019-11-14 11:40:39
1559
原创 【实现方案】Springboot整合token的权限管理实现(二)—— 配置服务器拦截器与跨域访问权限
前置说明前一篇文章介绍了如何使用 JWT 生成与解析 token。这篇文章给大家介绍,当我们使用 springboot 进行开发时,如何从后端解决跨域访问问题,以及如何配置 request 拦截器。跨域访问一、什么是跨域访问?跨域的严格一点的定义是:只要协议,域名,端口有任何一个的不同,就被当作是跨域。从现在的开发技术而言,大家越来越讲究前后端分离开发。如果前后端分离,那么势必会遇到跨域...
2019-11-14 11:11:22
664
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人