- 博客(87)
- 收藏
- 关注

原创 破解滑块验证码最新版(GEETEST 95%以上通过率)
一、滑块验证码简述 有爬虫,自然就有反爬虫,就像病毒和杀毒软件一样,有攻就有防,两者彼此推进发展。而目前最流行的反爬技术验证码,为了防止爬虫自动注册,批量生成垃圾账号,几乎所有网站的注册页面都会用到验证码技术。其实验证码的英文为 CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans ...
2018-07-25 22:18:53
35594
44
原创 自定义Mybatis-Plus分布式ID生成器(解决ID长度超过JavaScript整数安全范围问题)
MyBatis-Plus 默认生成的是 64bit 长整型,而 JS 的 Number 类型精度最高只有 53bit,如果以 Long 类型 ID 和前端 JS 进行交互,会出现精度丢失(最后两位数字变成 00) 而导致最终系统报错。一种方案是在响应前端时,将 ID 转换成 String 类型返回,但这个方法治标不治本,因此最终通过采用截短 ID 长度,以避免 ID 超过 JS 整数安全范围。SpringBoot 项目中如何引用?
2024-08-05 19:46:05
789
1
原创 SpringBoot内嵌neo4j配置
neo4j 可以对每个图节点自动生成一个唯一 id,也支持通过 @Id 自定义 id// Node// Service// 添加图节点以及与上游节点之间的关系// 寻找上游节点// 寻找下游节点// Impl@Service@Override@Override@Override。
2023-08-22 14:13:31
1028
原创 Springboot内嵌SQLite配置使用
MacOS Apple M1 | Jdk17 | Maven 3.8.5 | SpringBoot 2.6.9 | SQLite 3.42.0.0
2023-08-22 14:06:10
2134
原创 MDC 实现全局 traceId(完整版)
MDC 是 Java 中的一种日志记录工具,底层实现是对 ThreadLocal 的封装,以实现线程级别的调用链路追踪,kv 形式存储。生成规则:服务器 IP + ID 产生的时间 + 自增序列 + 当前进程号。
2023-04-23 16:42:32
1617
原创 解决gradle下载jar包超时问题
另外 gradle-wrapper.properties 配置要使用国内地址代替官方地址去下载 gradle,否则也会超时。
2023-04-23 15:53:34
1976
原创 链下签名实现
比如我们在使用 opensea 的时候,经常会提示我们进行数字签名,如下图:用户进行 sign 确认,即用自己的私钥对一段数据进行签名,得到一个 signature,其他人可以使用你私钥对应的公钥,对 signature 进行验证,从而证明你是私钥的持有者。验证身份:验证私钥持有人完整性:防止数据被篡改不可否认:持有人无法否认签名我们在区块链中发起的每一笔交易(转账、对合约写操作)都是使用私钥签名过的,矿工会在打包前对每笔交易进行校验。具体逻辑如图:使用私钥进行签名,公钥进行验证。
2022-12-30 23:12:04
2242
原创 世界杯竞猜项目Dapp-第五章(合约升级)
目前主流有三种合约升级方法本次采用 transparent 方式,具体实现思路即,引入一个代理合约 Proxy(蓝色),用户仅与这个代理合约进行交互,由代理合约去与业务合约进行交互,因此在业务合约发生变化(升级)的时候,用户无感,并且历史数据也能够保留下来,如下图所示:既然业务合约可以随意切换,那用户数据就只能存储在代理合约中了,在实际进行业务处理时,数据读写都是从代理合约来的,即数据与逻辑分离,其实现的核心便是 delegatecall 关键字。
2022-12-25 19:53:36
1790
1
原创 世界杯竞猜项目Dapp-第四章(subgraph)
这里对 graph node 与 subgraph 关系进行说明,在 graph node 上可以部署多个 subgraph,每个 subgraph 可以服务多个不同的项目。具体选项跟随引导程序填写,选择:网络 -> 名称 -> 合约地址 -> 合约名字,引导程序会自动在网络上拉取 ABI(前提是我们 verify 了,否则需要自己填写)增加扫块起点 startBlock 为当前合约所部署的块,如果不增加,则从最初块开始扫,效率低。subgraph 项目结构。
2022-12-14 13:16:31
699
原创 Error in plugin @nomiclabs/hardhat-etherscan: Failed to send contract verification request
这个问题困扰了我好久,其实就是代理的问题,我们的代理只支持浏览器,并不支持终端代理,所以当时选择第一的解决办法就是如何设置终端代理或者系统全局代理(修改 hosts 文件之类的),但发现并没有用,最后找到的解决办法:因为我使用的 Mac,所以直接下载的 clashX Pro,连接代理后,直接使用增强模式就可以了。如果是 windows,可能麻烦点,下载 Clash for Windows,打开 TUN 模式,CFW 需要安装依赖包,自行编辑配置文件才能让 TUN 模式生效。
2022-12-14 12:41:33
642
原创 世界杯竞猜项目Dapp-第三章(ERC20)
ERC20 是标准的以太坊 Token 协议,它也是一个合约代码,只要在该合约内部实现了特定的 6 个方法,就会被系统判定为代币合约,具体总结为:6 个必要接口,2 个必要事件,3 个可选接口
2022-12-13 15:56:58
574
原创 如何在vscode、remix中结合hardhat编译部署合约
一般简单的测试学习我们可以用 remix,更多时候是用专业的 vscode IDE 编写合约,remix 现在要连接到我们刚创建的本地合约项目,执行以下命令启动后台。安装完之后直接打开合约项目文件夹就可以了,比如这里的 suchas,然后在 vscode 中安装 solidity 插件,以支持合约编程。在 contracts 文件夹中创建 ***.sol,F5 编译合约,接着在 tests 文件夹中编写。首先创建 npm 空项目,注意这里要选择合约项目对应的文件目录,比如这里的合约项目是 suchas。
2022-12-08 22:48:35
2015
原创 世界杯竞猜项目Dapp-第二章(hardhat部署合约)
根本之一可能是电脑设置的代理只针对浏览器,终端没有设置代理,这个问题我并没有真正解决,虽然我尝试在 hosts 文件中添加了地址映射,解决了连接超时的问题,但最后结果就像上面这样报另外一个错误,不知道如何解决了,如果有解决了的小伙伴可以留言。最后采取的方案是直接在。将 Worldcup.sol(上节编写的合约)添加到 contracts 目录,并进行编译。然后在项目根目录下添加 .env 文件,以配置连接用到的 key,先获取 key。编写完,运行单元测试:npm hardhat test,效果如下。
2022-12-08 15:49:00
898
原创 如何在 goerli.etherscan.io 上验证合约
Error in plugin @nomiclabs/hardhat-etherscan: Failed to send contract verification request.这个问题原因之一可能是代理只针对于应用可以使用,终端并没有走代理,我尝试过修改 hosts 地址映射,但我最后也没有解决这个问题,如果有小伙伴解决了,欢迎留言~接下来就来说另一个方案,在部署完合约后,直接在 goerli.etherscan.io 上验证合约。
2022-12-08 15:35:07
494
原创 Error: could not detect network (event=“noNetwork“, code=NETWORK_ERROR, version=providers/5.7.2)
今天在 hardhat 中部署合约时碰到了这个问题,算是一个粗心的问题吧,特此记录一下,如图:出现该问题的原因竟然是配置网络 url 时应该是 ``,而我用成了 ‘’,导致一直连不上
2022-12-08 00:46:43
3005
原创 Invalid account: #0 for network: goerli - private key too short, expected 32 bytes
今天在 hardhat 中部署合约时碰到该问题,即:Invalid account: #0 for network: goerli - private key too short, expected 32 bytes,如图:提示私钥太长,太短的问题我都碰到了,特此记录一下首先第一个可能出该问题的地方,私钥指的是你 goerli 测试网钱包的私钥,如图:第二个可能出问题的地方是,需要在项目根目录下创建一个 .env 文件以管理各种 key,.env 文件中代码具体格式如下,注意结尾是不加冒号的,我
2022-12-08 00:39:48
629
原创 世界杯竞猜项目Dapp-第一章(合约开发)
最近卡塔尔世界杯如火如荼,让我们一起来尝试利用 solidity 语言做一个世界杯竞猜的 Dapp 实战项目,本次实战学习主要参考:https://github.com/dukedaily/solidity-expert,我会针对原始项目做更详尽的注解,持续更新中…
2022-12-04 20:09:15
1305
原创 关于努力这件事
从学生时代到现在出身社会工作了一年多的时间,我发现自己对于努力这件事的执行力是呈下降趋势的,因此这两天做了一些思考,希望想清楚问题出在哪儿,并找回当初努力的自己。
2022-12-02 02:17:19
801
原创 java实现word模板文件填充
使用该包实现 word 文件填充,同时支持 pdf、excel 格式。word模板文件存放在项目 resource 文件夹下。
2022-11-11 15:49:01
3076
4
原创 Web3 每日资讯(2022-10-20)
Solana联合创始人表示,Web3手机是对抗谷歌和苹果的机会,目前Web3智能手机Saga市场定位还仅限小众加密用户。Terra首席执行官Do Kwon在韩国被通缉,现已离开新加坡,经迪拜飞往未知地区。韩国游戏巨头WeMade正式上线公链Wemix3.0主网。Mango联合创始人:被盗资金返还计划的审核将于明早完成。V神近日已铸造可兑换帕劳共和国数字身份的NFT。巴西ATM机将于11月3日起支持USDT。特斯拉Q3财报:比特币持仓量保持不变。华纳兄弟将发行《指环王》系列NFT。
2022-10-21 09:45:55
381
原创 基于 ZooKeeper 的分布式锁实现
ZooKeeper is a distributed, open-source coordination service for distributed applications.
2022-07-09 18:40:45
790
原创 Mybatis-Plus json 格式数据查询
因为 List 格式转换成 json 存储到数据库的格式与 List 是不一样的,数据多了一对引号,所以在查询时,我们需要将引号拼上去
2022-06-18 18:09:41
3720
原创 Mac IDEA 最常用快捷键(详解版)
公司同事让我提供一个简单的 rpc 接口,然后他坐在我旁边看着我写,写的过程中他不断打断我,比如我在代码换行时,如果光标不在下一行行首或者这行的行尾,我就会先移动光标到行尾,再点击回车进行换行,他这时候就会说,为什么你不用快捷键直接换行,最后变成了他手把手教我如何更高效的用快捷键编程,之前虽然自己知道快捷键的重要性,平时也有用到部分的快捷键,但这次打脸真的让我深刻体会到效率上的差异,日积月累,十年八年,这个效率差异无疑将是巨大的,所以这次下定决心好好学习使用快捷键!我列出的都是一些绝对会经常用到的快捷键,
2022-06-18 17:12:57
6885
原创 解决:对象映射时 Integer 类型字段转换枚举处理麻烦
使用场景当我们返回给前端所需的对象数据时,大多数情况可以直接使用 StructMap 映射实现自动转换,但碰到对象中的某些字段需要从 Integer 类型转换成对应枚举的时候,在 StructMap 中就需要单独对这些字段添加转换注解,实现较为麻烦,故整合出了一个通用转换工具类。ConverUtils 工具类实现public class ConvertUtils { // 普通对象转换 public static <T> T toObject(Object o, Clas
2022-04-20 19:50:36
936
原创 BigDecimal 设置小数位数、小数比例转换整数
设置保留两位小数 result = 0.20DecimalFormat decimalFormat = new DecimalFormat("0.00");BigDecimal result = decimalFormat.format(new BigDecimal(0.200000));小数点右移两位 20.0000new BigDecimal(0.200000).movePointRight(2);
2022-04-19 19:26:19
2268
原创 Mybatis-Plus 实现乐观锁
定义是指在读取一行数据时,记下它的版本号、最近修改的时间戳或校验和。然后,你可以在修改记录之前检查版本有没有发生变化。适用场景适用于读多写少的场景,乐观锁相信事务之间的数据竞争概率较小,因此尽可能地直接做下去,直到提交的时候才去锁定。实现方式取出记录时,获取当前 version执行更新时,带上这个 version,如 update table_name set version = 2 where id = 1 and version = 1;如果 version 不对,则更新失败Myba
2022-04-18 20:22:49
2993
原创 COLA 架构使用规范化
基础架构图Adapter 适配层:对前端展示的路由和适配。VO:返回给前端的对象assembler:将 responseDTO 转换为 VOweb:处理页面请求的 Controllerwap:处理手机端请求的 ControllerApplication 应用层:负责获取输入,组装上下文,调用领域层做业务流程编排,如果需要的话,发送消息通知等。若只是简单操作,应用层还可直接绕过领域层,访问基础层。避免在 Application 层做入参校验,可以通过 JSR303/380 和 Spring V
2022-04-02 17:50:03
3021
2
原创 Redis 串行生成顺序编码(应对分布式高并发场景)
应用场景:针对于分布式高并发环境,易出现编码生成重复问题方案特点:多线程串行操作可避免阻塞加锁,处理效率更高具体解决方案:private final static String ENTERPRISE_CODE = "enterpriseCode";@Resourceprivate RedisTemplate redisTemplate;private String generateCode() { String code; if (!redisTemplate.hasKey
2022-04-02 17:21:05
1761
2
原创 Java 架构师电商项目(220h): 1-1 整体架构概述
2022 Flag:学完这门 220h Java架构师电商项目视频课,学习笔记将持续更新……
2021-12-30 10:17:11
588
原创 MyBatis-Plus 实现数据库字段更新为 NULL
feeMapper.update(Wrappers.<FeePO>lambdaUpdate() .eq(FeePO::getId, feeDO.getId()) .set(ObjectUtils.isNotEmpty(feeDO.getMoney()), FeePO::getMoney, feeDO.getMoney()) .set(ObjectUtils.isEmpty(feeDO.getMoney()), FeePO::getMoney, null));
2021-12-20 15:37:28
461
2
原创 中文技术文档写作规范(汇总整理版)
前言:规范文档的好处,其一增加文档易读性,其二体现个人专业性只使用一二三级标题,三级标题下面的并列性内容使用列表展示二级标题前使用行分隔符表示分隔段落之间使用一个空行隔开一句话或者以逗号分隔的句子,长度尽量保持在 20 个字以内,20~29 个字的句子,可以接受禁止文字口语化尽量使用肯定句表达,不使用否定句表达(例如:没有、不能、不可以)不使用“被”技术名词拼写正确,比如正确的拼写:Java、JavaScript、MySQL第一次出现英文词汇时,在括号中给出中文标注【例如:IOC(Int
2021-12-17 16:50:36
3903
原创 Macbook pro2020配置maven、IDEA配置maven
安装maven的前提是已经安装好了jdk,同时注意maven对应jdk版本要求!1.下载maven官网地址(自行选择,所有迭代版本都有,选择bin.tar.gz)https://archive.apache.org/dist/maven/maven-3/2.解压文件包,配置环境变量下载之后,将文件包解压出来,本文放置的文件目录为 /Library/Maven接着打开终端,配置环境变量:# 打开环境变量vi ~/.bash_profile# 然后输入字母i就可以进入编辑模
2021-07-04 23:22:31
1115
原创 手把手实现RPC框架--简易版Dubbo构造(十四)服务端自动注册服务
本节commit地址: ec8defe到目前为止,客户端已经差不多了,但是在服务端,我们却还需要手动创建服务对象,并且手动进行注册,如果服务端提供了很多服务,这个操作就会变得很繁琐。本节就会介绍如何基于注解进行服务的自动注册。定义注解首先定义Service注解,用来标识一个服务提供类,注解放在Impl类上://表示注解的作用目标为接口、类、枚举类型@Target(ElementType.TYPE)//表示在运行时可以动态获取注解信息@Retention(RetentionPolicy
2021-03-16 15:54:07
2309
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人