- 【Solidity】代币
JS.Huang
Solidity笔记区块链web3
ERC20ERC20全称“EthereumRequestforComment20”,是一种标准接口,用于实现代币合约。ERC20标准定义了一组函数和事件,使得代币可以在不同的应用和平台之间相互操作。ERC20标准接口定义了一组必须实现的函数和事件:interfaceIERC20{//查询代币的总供应量functiontotalSupply()externalviewreturns(uint);//
- 以太坊客户端geth安装与启动
链人成长chainerup
本文是《循序渐进以太坊》系列的第一篇-安装篇。本文将简单讲解在Mac上安装,以及启动过程。本文只是一个操作入门,不会讲解细节,在下一篇文章中,我们将会详细分析以太坊客户端geth启动时到底做了什么。1安装如果你不是想研究内部实现机制,只是简单地想把ethereum跑起来,你可以直接使用mac自带的brew.brewtapethereum/ethereumbrewinstallethereum上面就
- 【加密社】马后炮视角来看以太坊二层战略
加密社
闲侃区块链行情趋势区块链
阅读正文前先给大家普及下知识,以下文章中提到的Blobs指的是:"BlobCarriers"或"CalldataBlobs"这是在以太坊网络中用于携带数据的一种方式,尤其是在涉及Rollup(如OptimisticRollup和ZK-Rollup)这类Layer2扩容解决方案时。随着以太坊网络的发展,特别是在其Cancun升级(通常被认为是EthereumImprovementProposal,E
- 智能合约漏洞检测论文
weixin_45332030
智能合约
综述TestingEthereumSmartContracts:AComparisonofSymbolicAnalysisandFuzzTestingTools符号执行与模糊测试工具的比较综述DeepLearningBasedVulnerabilityDetection:AreWeThereYet?基于深度学习的漏洞检测研究https://github.com/VulDetProject/ReVe
- Bitcoin ,Ethereum and Solana
0010000100
Web3区块链
Bitcoin比特币(Bitcoin,简称BTC)是一种基于区块链技术的去中心化数字货币,由中本聪(SatoshiNakamoto)在2008年提出,并于2009年正式推出。以下是对比特币的详细介绍:一、基本概念定义:比特币是一种不依赖于特定中央机构发行和管理的数字货币,通过区块链技术实现交易记录和验证。创始人:中本聪,其身份至今仍然神秘,据称是一名日裔美国人,但具体信息不详。单位:比特币的单位是
- 在Spring Boot项目中集成Geth(Go Ethereum)
cesske
springbootgolang后端
在SpringBoot项目中集成Geth(GoEthereum)客户端,通常是为了与以太坊区块链进行交互。以下是一些基本的步骤和考虑因素,帮助你在SpringBoot应用程序中集成Geth。安装Geth首先,你需要在你的机器上安装Geth。你可以从官方网站下载适合你操作系统的版本。启动Geth安装完成后,你可以通过命令行启动Geth。根据你的需求,你可能需要以不同的模式运行Geth,比如作为一个完
- 多钱包自动发现以及注入冲突解决方案: EIP-6963调研
前言如果浏览器插件钱包需要向Dapp提供以太坊Provider能力,必须实现EIP1193协议。根据EIP1193协议描述,要求插件钱包将Provider实现注入到window.ethereum。这就导致了一些问题。注入冲突。用户如果安装了多个插件钱包,就会造成window.ethereum被重复覆盖,最终值取决于插件钱包的加载顺序。恶意竞争。为了让自家钱包的Provider实现能够成功注入到wi
- Remix在CentOS7上的安装和问题解决
飞狗未来
1、网站https://remix.ethereum.org2、安装cdremix-idenpminstallremix-ide-gremix-ide3、问题1ERR!stackError:Can'tfindPythonexecutable"python",解决方案:安装Python2.7.15版本,并配置环境变量4、问题2MSBUILD:errorMSB3428:未能加载VisualC++组件“
- NFTScan 正式上线 Mantle NFTScan 浏览器和 NFT API 数据服务
nft区块链
2024年2月1号,NFTScan团队正式对外发布了MantleNFTScan浏览器,将为Mantle生态的NFT开发者和用户提供简洁高效的NFT数据搜索查询服务。NFTScan作为全球领先的NFT数据基础设施服务商,Mantle是继Bitcoin、Ethereum、BNBChain、Polygon、Solana、Arbitrum、Optimism、Aptos等区块链之后,NFTScan浏览器支持
- 【区块链技术开发语言】在ubuntu18 系统环境下命令操作配置以太坊go-ethereum环境
源代码杀手
区块链技术开发开发语言区块链golang
一、概述项目简介:以太坊是一个基于区块链技术的分布式平台,用于构建去中心化应用程序(DApps)。go-ethereum是以太坊官方开发团队维护的Go语言实现的以太坊客户端,也被称为Geth。它提供了一个完整的以太坊节点,用于参与以太坊网络,执行智能合约,进行交易等。前提条件安装GO语言环境:https://blog.csdn.net/weixin_41194129/article/details
- 剖析以太坊上的庞氏骗局:识别、分析和影响
卷神
区块链安全防护论文翻译:Bartoletti,Massimo,etal."DissectingPonzischemesonEthereum:identification,analysis,andimpact."FutureGenerationComputerSystems102(2020):259-277.摘要:庞氏骗局是一种以高额利润为诱饵的金融欺诈。实际上,只有新用户加入了庞氏骗局,用户才能得
- Contractfuzzer 运行环境的复现
区区小块
开源代码:gongbell/ContractFuzzer:TheEthereumSmartContractFuzzerforSecurityVulnerabilityDetection(ASE2018)首先第一步:到Contractfuzzer的仓库中拉取项目源码第二步:将下载的源码中的go-Ethereum-cf和Ethereum拉到虚拟机上,我使用的是Ubuntu18.04第三步:使用go-E
- ContractFuzzer速览
Reanon
论文阅读安全区块链智能合约
ContractFuzzer速览论文标题:ContractFuzzer:FuzzingSmartContractsforVulnerabilityDetection论文链接:ContractFuzzer:FuzzingSmartContractsforVulnerabilityDetection开源地址:gongbell/ContractFuzzer:TheEthereumSmartContrac
- MAC上用以太坊搭建私有链[转]
daos
MAC上以太坊私有链搭建go-ethereum客户端安装brewtapethereum/ethereumbrewinstallethereum安装完成之后在命令行输入geth--help//能成功显示输出帮助,则表示已经成功安装搭建私有链以太坊支持自定义创世区块,要运行私有链,我们就需要定义自己的创世区块,创世区块信息写在一个json格式的配置文件中。首先将下面的内容保存到一个json文件中,例如
- 以太坊创始人V神:区块链可扩展性解决方案有何意义?
加密情报局
近日,以太坊(Ethereum)联合创始人VitalikButerin(以下称V神)在YouTube上直播了巴黎举办的以太坊社区会议演讲。演讲中,v神介绍了一个名为PlasmaCash的区块链可扩展性解决方案,即对现有解决方案Plasma“更具可扩展性”的版本。PlasmaCash是由V神、DanRobinson和KarlFloersch开发的的一个项目,它是v神和LightningNetwork
- 以太坊_POA_部署
斜杠青年_728f
cd$GOPATH/src/github.com/ethereum1.下载源码gitclonehttps://gitee.com/xgqnytz/go-ethereum.gitcdgo-ethereum&&gitcheckoutv1.8.27makegethmakeallexportPATH=$PATH:/work/src/github.com/ethereum/go-ethereum/build
- ETH源码阅读(contract地址生成规则)
坠叶飘香
通过合约创建者和这笔交易的nonce,生成addressgo-ethereum/internal/ethapi/api.gosigner:=types.MakeSigner(b.ChainConfig(),b.CurrentBlock().Number())from,err:=types.Sender(signer,tx)//得到合约创建者地址iferr!=nil{returncommon.Has
- ERC-721 文档翻译(下)
唠嗑008
前言在之前的2篇文章中,已经讲了一些关于ERC-721的基本概念,适用范围,以及ERC-721与ERC-20的区别。本文是针对ERC-721NFTS(Non-FungibleTokens)标准的翻译,将会更加详细与准确,由于文章篇幅较长,所以分为上、下2部分来讲解,本文为下半部分。由于本人水平有限,如有错误,欢迎大家指正。原文链接https://github.com/ethereum/EIPs/b
- 以太坊之Remix部署智能合约(Remix简介,使用,测试网络部署合约)
Rose J
#区块链之以太坊区块链
1.Remix简介Remix是一个开源的Solidity智能合约开发环境,提供基本的编译、部署至本地或测试网络、执行合约等功能。Solidity是以太坊Ethereum官方设计和支持的开发语言,专门用于编写智能合约。网址:http://remix.ethereum.org/学习网址:https://cryptozombies.io/zh/2.使用参考博客首先我们需要编写我们的代币合约,这里我们就先
- solidity payable_以太坊区块链搭建与使用(五)-智能合约Solidity
weixin_39614521
soliditypayable
一、智能合约Solidity开发工具1、remix-idehttp://remix.ethereum.org/在线版本,也可以去github下载安装到本地。开发、编译、发布、执行、测试2、remix-ide-cnhttp://remix.hubwiz.com/在线中文版本,也可以去github下载安装到本地。支持开发、编译、发布、执行、测试。这个有个好用的地方就是部署的合约可以直接在这里调用执行。
- Ubuntu系统运行以太坊
ShadderSeina
硕士学习ubuntu区块链
安装以太坊应用geth、go语言su命令进入管理员权限,sudomkdirtest创建test文件夹,cdtest进入目录sudogitclonehttps://github.com/ethereum/go-ethereum.git命令下载以太坊客户端源码下载完成后在创建好的目录有了文件,使用cdgo-ethereum命令再makegeth构建gethsudotar-zxvfgo1.9.2.lin
- Solidity 基础(一)
chinusyan
Solidity区块链
Solidity官网githubSolidity是一种静态类型的花括号(curly-braces)编程语言,旨在开发运行在以太坊(Ethereum)上的智能合约。Solidity正在迅速发展作为一门相对年轻的语言,Solidity正在迅速发展。我们的目标是每月定期发布(非突破性)版本,每年大约发布一个突破性版本。您可以在SolidityGithub项目中跟踪新功能的实现状态。通过从默认分支(dev
- Blockchain for creative contents
Vivien_like
SharingatHKOSCon2018byLikeCoinFoundationLikeCoinisanERC20tokenbasedontheEthereumblockchain.Usingthepowerofsmartcontract,weenableeasieruserattributionandcross-platformcollaborationoncreativecontents.In
- Solidity之旅(十八)内联汇编 [inline assembly]
BSN研习社
汇编
概要自从C语言问世,而后类C语言犹如雨后春笋般地搅动着IT界,而这些语言有别于汇编语言那样。它们就是更贴切自然语言的高级编程语言,可这些高级编程语言最终还是要编译成机器语言(汇编语言)。EVM(EthereumVirtualMachine)是一种栈(Stack)结构,我们知道栈是一种先进后出(LIFO)的数据结构。为什么要用汇编来编写呢?借您所问,既然Solidity可以编写出优秀的智能合约,那为
- 【平兄译文】了解以太坊的Layer 2扩容方案Ⅱ:状态通道
平兄_3cd7
【本文由赞我(zaneds.com)独家冠名】本文翻译自:MakingSenseofEthereum’sLayer2ScalingSolutions:StateChannels,Plasma,andTruebit原文作者:JoshStark译者:区块链中文字幕组平兄文章简介:作者简单地概述了目前以太坊的扩容难题和Layer1和Layer2扩容方案之间的区别,后面针对Layer2扩容方案的三个项目S
- Geth如何部署智能合约
赫灵
1、打开remix在线工具https://remix.ethereum.org/#optimize=true&version=soljson-v0.4.25+commit.59dbf8f1.js2、输入智能合约代码:pragmasolidity^0.4.0;contractMultiply{eventPrint(uint);functionmultiply(uintinput)returns(ui
- NFTScan 正式上线 Mantle NFTScan 浏览器和 NFT API 数据服务
NFT_Research
NFTResearch区块链web3
2024年2月1号,NFTScan团队正式对外发布了MantleNFTScan浏览器,将为Mantle生态的NFT开发者和用户提供简洁高效的NFT数据搜索查询服务。NFTScan作为全球领先的NFT数据基础设施服务商,Mantle是继Bitcoin、Ethereum、BNBChain、Polygon、Solana、Arbitrum、Optimism、Aptos等区块链之后,NFTScan浏览器支持
- Go-ethereum 源码解析之 go-ethereum/consensus/errors.go
furnace
Go-ethereum源码解析之go-ethereum/consensus/errors.goSourcecode//Copyright2017Thego-ethereumAuthors//Thisfileispartofthego-ethereumlibrary.////Thego-ethereumlibraryisfreesoftware:youcanredistributeitand/orm
- PDX Utopia区块链协议栈已正式支持eWASM智能合约
PDXchain
PDXUtopia区块链协议栈,正式支持eWASM智能合约。具体请见:https://github.com/PDXbaap/ewasm-rust-demo/blob/master/README.md来源:PDXewasm(Ethereum)ewasm不是一个智能合约开发语言,而是一个编译器的生成目标,它允许以太坊开发者使用其他语言(例如Rust、C++等)开发智能合约并编译为以太坊接受的WebAs
- Solidity-031 LoopExample
DataSummer
区块链智能合约信任链去中心化分布式账本
//SPDX-License-Identifier:MITpragmasolidity^0.8.9;/***@titleForLoopExample*@devThisSoliditysmartcontractdemonstratestheuseofaforlooptostoreandemitEthereumblocknumbersasevents.*Itincludesamappingtostor
- C/C++Win32编程基础详解视频下载
择善Zach
编程C++Win32
课题视频:C/C++Win32编程基础详解
视频知识:win32窗口的创建
windows事件机制
主讲:择善Uncle老师
学习交流群:386620625
验证码:625
--
- Guava Cache使用笔记
bylijinnan
javaguavacache
1.Guava Cache的get/getIfPresent方法当参数为null时会抛空指针异常
我刚开始使用时还以为Guava Cache跟HashMap一样,get(null)返回null。
实际上Guava整体设计思想就是拒绝null的,很多地方都会执行com.google.common.base.Preconditions.checkNotNull的检查。
2.Guava
- 解决ora-01652无法通过128(在temp表空间中)
0624chenhong
oracle
解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程
一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle的错误代码说明:意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是不能自动扩展。
分析过程:
既然是temp表空间有问题,那当
- Struct在jsp标签
不懂事的小屁孩
struct
非UI标签介绍:
控制类标签:
1:程序流程控制标签 if elseif else
<s:if test="isUsed">
<span class="label label-success">True</span>
</
- 按对象属性排序
换个号韩国红果果
JavaScript对象排序
利用JavaScript进行对象排序,根据用户的年龄排序展示
<script>
var bob={
name;bob,
age:30
}
var peter={
name;peter,
age:30
}
var amy={
name;amy,
age:24
}
var mike={
name;mike,
age:29
}
var john={
- 大数据分析让个性化的客户体验不再遥远
蓝儿唯美
数据分析
顾客通过多种渠道制造大量数据,企业则热衷于利用这些信息来实现更为个性化的体验。
分析公司Gartner表示,高级分析会成为客户服务的关键,但是大数据分析的采用目前仅局限于不到一成的企业。 挑战在于企业还在努力适应结构化数据,疲于根据自身的客户关系管理(CRM)系统部署有效的分析框架,以及集成不同的内外部信息源。
然而,面对顾客通过数字技术参与而产生的快速变化的信息,企业需要及时作出反应。要想实
- java笔记4
a-john
java
操作符
1,使用java操作符
操作符接受一个或多个参数,并生成一个新值。参数的形式与普通的方法调用不用,但是效果是相同的。加号和一元的正号(+)、减号和一元的负号(-)、乘号(*)、除号(/)以及赋值号(=)的用法与其他编程语言类似。
操作符作用于操作数,生成一个新值。另外,有些操作符可能会改变操作数自身的
- 从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序
aijuans
嵌入式学习
笔者学习嵌入式Linux也有一段时间了,很奇怪的是很多书讲驱动编程方面的知识,也有很多书将ARM9方面的知识,但是从以前51形式的(对寄存器直接操作,初始化芯片的功能模块)编程方法,和思维模式,变换为基于Linux操作系统编程,讲这个思想转变的书几乎没有,让初学者走了很多弯路,撞了很多难墙。
笔者因此写上自己的学习心得,希望能给和我一样转变
- 在springmvc中解决FastJson循环引用的问题
asialee
循环引用fastjson
我们先来看一个例子:
package com.elong.bms;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import co
- ArrayAdapter和SimpleAdapter技术总结
百合不是茶
androidSimpleAdapterArrayAdapter高级组件基础
ArrayAdapter比较简单,但它只能用于显示文字。而SimpleAdapter则有很强的扩展性,可以自定义出各种效果
ArrayAdapter;的数据可以是数组或者是队列
// 获得下拉框对象
AutoCompleteTextView textview = (AutoCompleteTextView) this
- 九封信
bijian1013
人生励志
有时候,莫名的心情不好,不想和任何人说话,只想一个人静静的发呆。有时候,想一个人躲起来脆弱,不愿别人看到自己的伤口。有时候,走过熟悉的街角,看到熟悉的背影,突然想起一个人的脸。有时候,发现自己一夜之间就长大了。 2014,写给人
- Linux下安装MySQL Web 管理工具phpMyAdmin
sunjing
PHPInstallphpMyAdmin
PHP http://php.net/
phpMyAdmin http://www.phpmyadmin.net
Error compiling PHP on CentOS x64
一、安装Apache
请参阅http://billben.iteye.com/admin/blogs/1985244
二、安装依赖包
sudo yum install gd
- 分布式系统理论
bit1129
分布式
FLP
One famous theory in distributed computing, known as FLP after the authors Fischer, Lynch, and Patterson, proved that in a distributed system with asynchronous communication and process crashes,
- ssh2整合(spring+struts2+hibernate)-附源码
白糖_
eclipsespringHibernatemysql项目管理
最近抽空又整理了一套ssh2框架,主要使用的技术如下:
spring做容器,管理了三层(dao,service,actioin)的对象
struts2实现与页面交互(MVC),自己做了一个异常拦截器,能拦截Action层抛出的异常
hibernate与数据库交互
BoneCp数据库连接池,据说比其它数据库连接池快20倍,仅仅是据说
MySql数据库
项目用eclipse
- treetable bug记录
braveCS
table
// 插入子节点删除再插入时不能正常显示。修改:
//不知改后有没有错,先做个备忘
Tree.prototype.removeNode = function(node) {
// Recursively remove all descendants of +node+
this.unloadBranch(node);
// Remove
- 编程之美-电话号码对应英语单词
bylijinnan
java算法编程之美
import java.util.Arrays;
public class NumberToWord {
/**
* 编程之美 电话号码对应英语单词
* 题目:
* 手机上的拨号盘,每个数字都对应一些字母,比如2对应ABC,3对应DEF.........,8对应TUV,9对应WXYZ,
* 要求对一段数字,输出其代表的所有可能的字母组合
- jquery ajax读书笔记
chengxuyuancsdn
jQuery ajax
1、jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()
- JWFD工作流拓扑结构解析伪码描述算法
comsci
数据结构算法工作活动J#
对工作流拓扑结构解析感兴趣的朋友可以下载附件,或者下载JWFD的全部代码进行分析
/* 流程图拓扑结构解析伪码描述算法
public java.util.ArrayList DFS(String graphid, String stepid, int j)
- oracle I/O 从属进程
daizj
oracle
I/O 从属进程
I/O从属进程用于为不支持异步I/O的系统或设备模拟异步I/O.例如,磁带设备(相当慢)就不支持异步I/O.通过使用I/O 从属进程,可以让磁带机模仿通常只为磁盘驱动器提供的功能。就好像支持真正的异步I/O 一样,写设备的进程(调用者)会收集大量数据,并交由写入器写出。数据成功地写出时,写入器(此时写入器是I/O 从属进程,而不是操作系统)会通知原来的调用者,调用者则会
- 高级排序:希尔排序
dieslrae
希尔排序
public void shellSort(int[] array){
int limit = 1;
int temp;
int index;
while(limit <= array.length/3){
limit = limit * 3 + 1;
- 初二下学期难记忆单词
dcj3sjt126com
englishword
kitchen 厨房
cupboard 厨柜
salt 盐
sugar 糖
oil 油
fork 叉;餐叉
spoon 匙;调羹
chopsticks 筷子
cabbage 卷心菜;洋白菜
soup 汤
Italian 意大利的
Indian 印度的
workplace 工作场所
even 甚至;更
Italy 意大利
laugh 笑
m
- Go语言使用MySQL数据库进行增删改查
dcj3sjt126com
mysql
目前Internet上流行的网站构架方式是LAMP,其中的M即MySQL, 作为数据库,MySQL以免费、开源、使用方便为优势成为了很多Web开发的后端数据库存储引擎。MySQL驱动Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常用的有如下几种:
http://code.google.c...o-mysql-dri
- git命令
shuizhaosi888
git
---------------设置全局用户名:
git config --global user.name "HanShuliang" //设置用户名
git config --global user.email "
[email protected]" //设置邮箱
---------------查看环境配置
git config --li
- qemu-kvm 网络 nat模式 (四)
haoningabc
kvmqemu
qemu-ifup-NAT
#!/bin/bash
BRIDGE=virbr0
NETWORK=192.168.122.0
GATEWAY=192.168.122.1
NETMASK=255.255.255.0
DHCPRANGE=192.168.122.2,192.168.122.254
TFTPROOT=
BOOTP=
function check_bridge()
- 不要让未来的你,讨厌现在的自己
jingjing0907
生活 奋斗 工作 梦想
故事one
23岁,他大学毕业,放弃了父母安排的稳定工作,独闯京城,在家小公司混个小职位,工作还算顺手,月薪三千,混了混,混走了一年的光阴。 24岁,有了女朋友,从二环12人的集体宿舍搬到香山民居,一间平房,二人世界,爱爱爱。偶然约三朋四友,打扑克搓麻将,日子快乐似神仙; 25岁,出了几次差,调了两次岗,薪水涨了不过百,生猛狂飙的物价让现实血淋淋,无力为心爱银儿购件大牌
- 枚举类型详解
一路欢笑一路走
enum枚举详解enumsetenumMap
枚举类型详解
一.Enum详解
1.1枚举类型的介绍
JDK1.5加入了一个全新的类型的”类”—枚举类型,为此JDK1.5引入了一个新的关键字enum,我们可以这样定义一个枚举类型。
Demo:一个最简单的枚举类
public enum ColorType {
RED
- 第11章 动画效果(上)
onestopweb
动画
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
- Eclipse中jsp、js文件编辑时,卡死现象解决汇总
ljf_home
eclipsejsp卡死js卡死
使用Eclipse编辑jsp、js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲。将所有用过的方法罗列如下:
1、取消验证
windows–>perferences–>validation
把 除了manual 下面的全部点掉,build下只留 classpath dependency Valida
- MySQL编程中的6个重要的实用技巧
tomcat_oracle
mysql
每一行命令都是用分号(;)作为结束
对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的分号省略掉,例如:
mysql_query("INSERT INTO tablename(first_name,last_name)VALUES('$first_name',$last_name')");
- zoj 3820 Building Fire Stations(二分+bfs)
阿尔萨斯
Build
题目链接:zoj 3820 Building Fire Stations
题目大意:给定一棵树,选取两个建立加油站,问说所有点距离加油站距离的最大值的最小值是多少,并且任意输出一种建立加油站的方式。
解题思路:二分距离判断,判断函数的复杂度是o(n),这样的复杂度应该是o(nlogn),即使常数系数偏大,但是居然跑了4.5s,也是醉了。 判断函数里面做了3次bfs,但是每次bfs节点最多