- C++字符串和小数类型的转换
Tan_Zhixia
c++
字符串->小数代码展示提示:solo为转换的字符串number为返回的小数#includeusingnamespacestd;doubleconvert(stringsolo){//double方法的返回值有小数部分两位数的限制doubleinteger=0;//整数部分(为了相加)stringstrInt="";//整数字符串doubledecimal=0;//小数部分stringstrDeci
- 【区块链】区块链交易(Transaction)之nonce
ZFJ_张福杰
区块链区块链web3nonce
【区块链】区块链交易(Transaction)之nonce一、什么是nonce?nonce是发送方(账户)的交易计数器,表示该账户已经发送的交易数量。以太坊使用nonce来防止双重支付(doublespending)和重放攻击(replayattacks)。从0开始,每次交易都会增加1。交易必须按nonce顺序被区块链确认,否则会被拒绝。二、为什么需要nonce?防止交易重复:交易的nonce唯一
- C++扩展 - 函数模板高级 - 返回类型自动推导
念致达
#C++扩展c++
函数模板返回类型自动推导一、语法templateRTsmartAdd(constT1&a,constT2&b){returna+b;}//使用示例autoresult=smartAdd(3,4.5);//自动推导为double该函数模板的参数声明,包含三个部分:T1-第一个类型参数T2-第二个类型参数RT-返回类型,默认值为decltype(T1()+T2())的结果二、decltype关键字de
- C#使用ExcelDataReader高效读取excel文件写入数据库
香煎三文鱼
.netcore.Net6C#C#读取excel
分享一个库ExcelDataReader,它专注读取、支持.xls/.xlsx、内存优化。首先安装NuGet包dotnetaddpackageExcelDataReaderdotnetaddpackageSystem.Text.Encoding.CodePages编码内存优化:每次仅读取一行,适合处理百万级数据。类型安全方法:可用GetString(0)、GetDouble(1)等强类型方法(需确
- C++使用大小括号初始化变量
空名Noname
c++开发语言
转自个人博客本文对普通变量、普通类对象在初始化时使用()和{}的情况进行区分说明,以免混淆不清。一般使用()是使用构造函数初始化,使用{}是使用列表初始化,如下。1.基本初始化(略过)这里大概对基本初始化方式做一个归纳1.1默认初始化即只声明,让其调用默认构造函数。对于基本变量类型(如int、double…),只声明就不会定义具体的初始值。对于类对象,就会调用可以不用填参数的默认构造函数,如果没有
- Java-Scanner类
Lowjin_
Java开发语言java
Scanner是Java中一个实用的文本扫描工具类(位于java.util包),主要用于从输入流(如键盘、文件或字符串)中解析基本数据类型和字符串。它通过正则表达式将输入分解为标记(tokens),并提供了多种方法来读取和转换这些标记。1.Scanner的核心功能功能说明读取输入从键盘、文件、字符串等来源读取数据。按类型解析自动将输入的文本转换为int、double、String等类型。分隔符控制
- C++学习笔记.2
Lowjin_
C++c++学习笔记
类和对象封装语法:class关键字{访问权限属性行为}#includeusingnamespacestd;constdoublepi=3.14;//设计一个圆类classcircle{//访问权限//公共权限public://属性intr;//行为doublec(){return2*pi*r;}};intmain(){//通过圆类创建具体的圆(对象)circlec1;c1.r=10;cout#in
- c语言实现2的n次方
network爬虫
算法c语言
#include#includeintmain(){intn;scanf("%d",&n);doublea=pow(2,n);printf("%lf\n",a);}
- 【设计模式】单例模式之双检锁(Double-Checked Locking)
浩瀚之水_csdn
#软件模式设计模式单例模式
双检锁(Double-CheckedLocking)是一种在多线程环境下高效实现单例模式的技术,它结合了延迟初始化和线程安全的优点,避免了不必要的同步开销。核心思想双检锁的核心思想是:第一重检查(无锁):快速检查实例是否已创建加锁保护:确保只有一个线程进入创建流程第二重检查(有锁):再次检查实例是否已创建创建实例:如果仍未创建,则创建实例经典实现(C++11之前)#includeclassSing
- C++泛型编程基础
深情AC
c++开发语言
泛型编程的作用我们通过具体的例子来理解,假设我们要实现如下需求:实现函数用来返回两个数的最大值,要求能支持char类型、int类型、double类型变量我们可以设计出如下函数intMax(inta,intb){returna>b?a:b;}charMax(chara,charb){returna>b?a:b;}floatMax(floata,floatb){returna>b?a:b;}但其中存在
- 1、C语言——结构体的内存大小计算
postfull
C语言c语言算法开发语言
C语言结构体内存的大小会根据不同的对齐数进行不同的计算,也会因为结构体成员的排列顺序影响最终的结构体内存大小。为了解决这一难题,本文给出一些较为常见的解法来帮助对结构体内存计算有困难的同学或爱好者,欢迎各位大佬进行批评指正。基础数据类型所占内存空间表(32位操作系统)数据类型charshortintlonglonglongfloatdouble大小(字节)1244848结构体内存计算规则:1.基本
- 设计模式之手写策略模式实现动态支付(Java实现)
尤物程序猿
设计模式策略模式java
首先,定义一个接口类importjava.util.Map;publicinterfacePayInterface{/***支付方法*@paramamount支付金额*@parampaymentInfo支付信息(如卡号、密码等)*@return支付结果*/booleanpay(doubleamount,MappaymentInfo);}再写俩个实现类importjava.util.Map;publ
- C语言之数学运算强化练习题
林赢56
湖南工业大学(移动云启)c语言开发语言
第1关:逐一挑出来100任务要求参考答案评论46任务描述相关知识算数运算符floor编程要求测试说明任务描述本关需要完成一个输出某个三位数各个位上的数字的小程序。相关知识算数运算符%是取模运算符,获得整除后的余数。/是通过分子除以分母,获得整除后的整数部分。floorfloor()是返回一个浮点型的整数部分,即向下取整。语法:floor(doublex)说明:x是需要传入的浮点型数。举例如下:fl
- java鱼眼相机标定_鱼眼相机标定以及OpenCV实现
元宿six
java鱼眼相机标定
开始标定doublefisheye::calibrate(InputArrayOfArraysobjectPoints,InputArrayOfArraysimagePoints,constSize&image_size,InputOutputArrayK,InputOutputArrayD,OutputArrayOfArraysrvecs,OutputArrayOfArraystvecs,int
- 10-C#的dataGridView1和datatable的使用
水果里面有苹果
C#c#java开发语言
C#的dataGridView的使用1.双缓冲-解决控件卡顿//利用反射设置DataGridView1的双缓冲TypedgvType=this.dataGridView1.GetType();PropertyInfopi=dgvType.GetProperty("DoubleBuffered",BindingFlags.Instance|BindingFlags.NonPublic);pi.Set
- 自带自动清理机制的阻塞队列
publicclassAutoClearBlockingQueueextendsArrayBlockingQueue{privatefinalintclearThreshold;//触发清理的阈值privatetransientConsumer>clearCallback;//清理回调函数publicAutoClearBlockingQueue(intcapacity,doublethreshol
- python开三次方根函数_Python牛顿迭代法怎么开三次方
weixin_39612540
python开三次方根函数
2018-11-19回答用牛顿迭代法求方程'a*x^3+b*x^2+c*x+d=0,系数a=1,b=2,c=3,d=4,x在0附近的一个实数根为1.33333333333。算法代码如下:privatesubcommand1_click()'牛顿迭代法dimaasdouble,basdouble,casdouble,dasdouble,xx1asdoubledimnaslonga=1b=2c=3d=
- 【QT】QPointF、QRectF、QPolygonF 介绍
我不是程序猿儿
QT之路qt开发语言
QPointF确实存在于Qt框架中,它是一个类,用于表示二维空间中的一个点,其中包含了浮点精度的x和y坐标。主要特点和用途高精度坐标:QPointF使用double类型来存储x和y坐标,这提供了比QPoint(后者存储整数坐标)更高的精度。这在需要精确定位或处理图形和界面元素时特别有用,例如在绘图、图像处理或任何需要几何计算的应用中。数学运算支持:QPointF提供了一系列便利的数学运算,如加法、
- Java数据结构——线性表Ⅲ
爱吃代码的小皇冠
算法数据结构java学习笔记链表
一、双链表(DoubleLinkedList)1.结点与链表类定义(设计思路)(1)DLinkNode结点类设计双向指针:prior指针指向前驱,支持反向遍历next指针指向后继,支持正向遍历应用场景:需要频繁前后移动的场景(如文本编辑器的光标移动)(2)DLinkListClass链表类设计头结点dhead:prior初始为null(链表头部标识)next初始为null(链表尾部标识)双向操作基
- python cffi的使用初探
废话不多说,直接上代码(忽略我写的c代码严谨性,我刚学的c)//hello.h//Createdby86176on2022/12/14.//#ifndefUNTITLED1_SAMPLE_H#defineUNTITLED1_SAMPLE_Htypedefstruct{intx,y;}Point;typedefstruct{intdata1;float*data2;double*data3;intd
- java 接入新版微信商家转账接口
V_1920
java微信开发语言
Doubleprice=preOrders.getPrice()*100;//时间戳longtimestamp=System.currentTimeMillis()/1000;//加密算法。固定值,目前不支持其他方式StringauthType="WECHATPAY2-SHA256-RSA2048";//生成nonce_strStringnonceStr=WxPayKit.generateStr(
- Python游戏:扫雷 (附源码)
这次我们基于pygame来做一个扫雷,我所有的代码都是基于python3.6的。下面将一下我的实现逻辑首先,如何表示雷和非雷,一开始有好多状态,后来一想,干脆就做个类吧。classBlockStatus(Enum):normal=1#未点opened=2#已点mine=3#雷flag=4#标记雷ask=5#标记问号bomb=6#踩中雷hint=7#被双击周围double=8#正在被鼠标左右键双击c
- asyncio入门教程
qq123aa2006
python
1.asyncio异步并发概念asyncio显示的处理上下文的切换,以事件循环(eventloop)为中心,程序开启一个无限的循环,程序会把一些函数注册到事件循环上,当满足事件发生的时候,调用相应的协程函数2.写一个异步方法asyncdefasync_double(x):return2*x从外观上看异步方法和标准方法没有什么区别,只是前面多了个async,要调用异步函数,必须使用await关键字,
- Java面试复习指南:基础、面向对象、多线程与框架
Nnbwbyhxy
Java场景面试宝典Java面试并发编程JVMSpringJava8面向对象
Java面试复习指南:基础、面向对象、多线程与框架1.Java基础概念解析Java是一种面向对象的编程语言,具有平台无关性和丰富的API。核心原理Java通过JVM实现平台无关性,使用JIT编译提升性能。高频面试问题Java的基本数据类型有哪些?Java有八种基本数据类型:byte,short,int,long,float,double,char,boolean。2.面向对象编程概念解析面向对象编
- java8 - 排序,包括double类型的排序
Haoea!
javajava
首先将所有的数据放到了一个List中,然后以List中的某个字段进行排序//当List中的字段为int类型的时候,//降序resultList.sort((o1,o2)->{intd1=o1.getNums();intd2=o2.getNums();return(d2-d1);});//升序resultList.sort((o1,o2)->{intd1=o1.getNums();intd2=o2.
- C语言数组---二维数组
sunjiale22
学习c语言开发语言
⼆维数组的概念前⾯学习的数组被称为⼀维数组,数组的元素都是内置类型的,如果我们把⼀维数组做为数组的元素,这时候就是⼆维数组,⼆维数组作为数组元素的数组被称为三维数组,⼆维数组以上的数组统称为多维数组。⼆维数组的创建那我们如何定义⼆维数组呢?语法如下:typearr_name[常量值1][常量值2];例如:intarr[3][5];doubledata[2][8];解释:上述代码中出现的信息3表⽰数
- 1376 - 买汽水
寒燕舞
算法数据结构
题目描述一瓶饮料n元钱,两个空瓶换一瓶,有m元最多可以喝几瓶?输入两个整数n,m(1usingnamespacestd;intmain(){intn,m;cin>>n>>m;doubles=m/n;m/=n;while(m){s+=m/2.0;m/=2;}cout<<int(s);return0;}
- 微信小程序在wxml文件中使用函数
浅箬
微信小程序日常问题总结小程序WXSwxml使用函数
这是微信小程序WXS使用链接https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxs/具体使用方法:1、在wxml中使用module.exports={isDouble:function(n){returnn>9?true:false}}直接在代码段中使用{{function.isDouble(item.number)
- 【Python】超实用的ddddocr库-一个基于深度学习的OCR(光学字符识别)工具库
穿山甲yyds
ocr
一、Ddddocr简介ddddocr(DeepDouble-DigitalDigitsOCR)是一个基于深度学习的OCR(OpticalCharacterRecognition,光学字符识别)库,用于从图像中提取文本,尤其擅长处理验证码、票据、表单数据提取、文档自动化处理等场景。主要用户已下三种:自动化测试:自动填写网页验证码,提升测试效率。数据采集:从截图或文档中提取结构化文本。安全验证:辅助处
- python中ls.clear_Python基础
Python基础知识学习过程中记录目录1.基本数据类型1.1.数字类型及操作1.1.1.int整数可正可负没有取值范围四种进制:十进制:1010,99,-219二进制:(以0b或0B开头)0b010,-0B101八进制:(以0o或者0O开头)0o123,-0O456十六进制:(以0x或者0X开头)0x9a,-0X891.1.2.double浮点数取值范围-10308到10308,精度数量级10^-
- 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节点最多