- 《Inside VCL(深入核心——VCL架构剖析)》.(李维) 一
liang08114
delphiVCL
一、回到从前:1.1、多任务操作系统是如何设计和实现的?1.1.1、系统——多个应用程序方案1:(系统不断读取应用程序状态)系统通过大型循环(Loop)不断坚持么一个恶用用程序是否触发了特定的事件。方案2:(事件驱动模型——事件/消息处理模型)执行环境将事件转换成代表事件的消息,然后发送给对应的应用程序。//消息大概格式TMyMessage=packedrecord//用来存储事件信息Messag
- Kubernetes主要网络概念汇总(Summary of Main Networking Concepts in Kubernetes)
Linux运维老纪
天涯海角k8s伴你同行kubernetes网络容器云计算运维开发运维服务器
Kubernetes主要网络概念汇总1.Kubernetes网络架构Kubernetes网络设计有一个独特的地方:每个Pod有独立的IP地址,各个Pod可以直接互相访问,无需通过NAT。这种设计大大简化了网络层次,使得在集群内部各组件之间的连接更加自然。下面是K8S整个架构图,可以看到整体的关联关系和网络走向1.1核心设计原则PodIP独立性:在Kubernetes中,每个Pod都有一个独立的IP
- C语言顺序表
卷柏296
c语言windows开发语言数据库
希望帮助需要的人头文件#pragmaonce#include#include#include#includetypedefstructList{//静态//inta[n];//动态int*a;intsize;//数据个数intcapacity;//空间大小}LIST;//开voidlistinit(LIST*ps);//尾插voidlistpushback(LIST*ps,intx);//从尾部删
- K8S集群的高可用性(HA)架构如何设计
IT-民工21110
kubernetes架构容器运维linux
Kubernetes(K8S)高可用性(HighAvailability,HA)集群架构设计的目标是确保集群在发生组件或节点故障时,仍能提供持续的服务。以下是HA架构的设计要点和实现方式:1.高可用控制平面(ControlPlane)控制平面由kube-apiserver、etcd、kube-scheduler、kube-controller-manager等组件组成。要实现控制平面的高可用:1.
- 前端——vue代码结构
Alisazxy
前端
默认代码结构README.md---项目说明文件package.json---定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。package-lock.json---会自动为npm修改node_modules树或任何操作而生成package.jsonLICENSE---开源协议index.html---项目默认首页模板.postcssrc.js---是对pos
- 100%解决docx.opc.exceptions.PackageNotFoundError: Package not found at
择~城
python开发语言
Docx:docx.opc.exceptions.PackageNotFoundError:Packagenotfoundat前言第一步:首先确定自己的文档类型确实docx**因为doc完全不行****因为doc完全不行****因为doc完全不行**第二步:确定是不是空文档**因为空文档完全不行****因为空文档完全不行****因为空文档完全不行**第三步:更改docx名字第四步:绝对路径第五步原
- vue项目代码结构
很小白的小白
Vue
最外层文件:README.md————>说明文件package.json————>依赖文件存储地package-lock.json————>依赖的版本LICENSE————>开源协议说明index.heml————>项目首页的默认文件(深入)postcssrc.js————>postcss的配置项。gitignore————>git配置项(把不想上传的文件配置在里面,不会被提交)我添加了我不想提交
- 对领域驱动设计(DDD)的学习成果
huaishu
架构
领域驱动设计之领域模型2004年EricEvans发表Domain-DrivenDesign–TacklingComplexityintheHeartofSoftware(领域驱动设计),简称EvansDDD。领域驱动设计分为两个阶段:以一种领域专家、设计人员、开发人员都能理解的“通用语言”作为相互交流的工具,在不断交流的过程中不断发现一些主要的领域概念,然后将这些概念设计成一个领域模型;由领域模
- Webpack 模块加载、动态引入机制源码解读
AIGC小陈
正则表达式javascript开发语言react.js前端
今天的文章简单探讨一下Vue和React的不同。本人Vue2和React都用过,但不熟悉Vue3,没用它做过项目。其实我对这两大框架也没有认真钻研过它们的细节,也就是工作上用它们写一些简单业务,或偶尔看看相关的博客文章,但还是有一些浅显的认识的,写下来记录一下。Vue和React都是用于构建UI界面的流行框架。它们的哲学也有很多相似的地方,我们可以认为这些特性是流行前端框架的一个趋势。它们是:组件
- tf.Keras (tf-1.15)使用记录4-model.fit方法及其callbacks参数
普通攻击往后拉
NN技巧tf.keraskeras人工智能深度学习
model.fit()方法是TensorFlowKeras中用于训练模型的核心方法。其中里面的callbacks参数是实现模型保存、监控、以及和tensorboard联动的重要API1model.fit()方法的参数及使用必需参数x:训练数据的输入。可以是NumPy数组、TensorFlowtf.data.Dataset、Python生成器或keras.utils.Sequence实例。y:训练数
- macbook自带python保存文件夹_在mac下查找python包存放路径site-packages的实现方法 在Mac系统下python如何安装第三方函数库?...
Charnychi
mac怎么查看python的site-package位置世界上最伤心的事,不是你爱的人不爱你,而是他爱你过后,最后却不爱你。可以通过find命令查看,参考demo如下:sudofind/-name"site-package"小编们总是对最亲近的家人视而不见,甚至还有许多抱怨,却对外人”的一点小惠感激不已。mac自带的python安装在/usr/bin/python目录下进入终端直接键入python
- python exe site-package
weixin_33735077
python
2019独角兽企业重金招聘Python工程师标准>>>pythonexesite-package:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pillow转载于:https://my.oschina.net/zuoan001/blog/346126
- python 分享site-package
CbdFocus
Python
导出列表pipfreeze>requirements.txt安装列表pipinstall-rrequirements.txt
- npm启动前端项目时报错(vue) error:0308010C:digital envelope routines::unsupported
华如锦
开发本地环境配置jsjava前端npmvue.jsnode.jsjava
vue启动项目时,npmrunserve报下面的错:error:0308010C:digitalenveloperoutines::unsupportedatnewHash(node:internal/crypto/hash:67:19)atObject.createHash(node:crypto:133:10)atFSReqCallback.readFileAfterClose[asoncom
- python dist-packages 和 site-packages
ECHOutopia
linuxpythonsite-packagesdist-packagesubuntupython
dist-packages和site-packages在我的ubuntu12上都在/usr/local/lib/python2.7目录下今天安装django时发现一个奇怪的现象:我使用pipinstallDjango==1.8.4安装的django,安装成功,直接在终端使用django-admin也成功,但是进入python:importdnango,却提示nomodulenameddjango,
- 脚本运行禁止:npm 无法加载文件,因为在此系统上禁止运行脚本
我命由我12345
前端-问题清单npm前端node.js前端框架javascriptjshtml
问题与处理策略1、问题描述npminstall-Dtailwindcss执行上述指令,报如下错误npm:无法加载文件D:\nodejs\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅https:/go.microsoft.com/fwlink/?LinkID=135170中的about_Execution_Policies。2、问题原因npm全称NodePackageManage
- python 安装包 site-packages
cliffordl
综合pythonpython开发语言
1.site-packages文件夹的位置当我们通过pip或其他方式安装一个Python包时,这些包的文件就会被复制到site-packages文件夹下。site-packages文件夹通常位于Python的安装目录下的Lib文件夹内。具体的路径会根据你使用的操作系统和Python版本的不同而有所不同。下面是一些常见操作系统下site-packages文件夹的默认位置:1.1.在Windows系统
- 微信小程序视频点播在线视频学习系统 毕业设计 课程设计(1)首页_微信小程序视频功能设计流程图
字节全栈_kYu
微信小程序学习课程设计
06-19关于违规会员处理的通知视频分类最新更新课程所有课程HTML入门到精通3651人报名免费HTML入门到精通3651人报名免费HTML入门到精通3651人报名免费HTML入门到精通3651人报名免费###wxss代码/*广告图片*/.ad01{width:100%;/*宽度100%*/}.qukuai{display:flex;align-items:center;background-co
- webpack 面试题整理
iijik55
面试学习路线阿里巴巴android前端后端
文章目录webpack面试题整理谈谈你对Webpack的理解Webpack的打包过程/打包原理/构建流程?Webpack中loader的作用/loader是什么?常见的loader有哪些?Plugin有什么作用?/Plugin是什么常见的Plugin有哪些Webpack插件的执行顺序(加载机制)?Webpack中Loader和Plugin的区别Webpack做过哪些优化手段?有哪些优化手段?tre
- 蓝桥备赛指南(5)
神里流~霜灭
蓝桥备赛c++数据结构贪心算法动态规划排序算法
queue队列queue是一种先进先出的数据结构。它提供了一组函数来操作和访问元素,但它的功能相对较简单,queue函数的内部实现了底层容器来存储元素,并且只能通过特定的函数来访问和操作元素。queue函数的常用函数1.push()函数:在队尾插入元素;2.pop()函数:弹出队首元素;3.front()函数:返回队首元素;4.back()函数:返回队尾元素;5.empty()函数:检查队列是否为
- Kubernetes(K8s)技术深度解析与实战案例
我的运维人生
kubernetes容器云原生运维开发技术共享
Kubernetes(K8s)技术深度解析与实战案例Kubernetes(简称K8s)已经成为当今云原生应用和微服务架构的首选平台。作为一个开源的容器编排系统,K8s用于自动化应用程序的部署、扩展和管理。本文将深入探讨K8s的架构、关键组件、设计理念以及实战应用,并通过一个具体的微服务应用部署案例,展示K8s在运维中的强大功能和便利性。一、K8s的起源与发展K8s的诞生源于Google内部对大规模
- HTML5+SVG+CSS3 雪中点亮的圣诞树
坏男孩!
css3html5css
HTML5+SVG+CSS3雪中点亮的圣诞树源码下载地址:HTML5+SVG+CSS3雪中点亮的圣诞树css3:body{background:-webkit-linear-gradient(top,#235,#22240%,#fff50%,#fff);background:linear-gradient(tobottom,#235,#22240%,#fff50%,#fff);overflow:h
- python 安装库报错 IOError: [Errno 2] No such file or directory: ‘/tmp/pip-build-qxKbBk/numpy/setup.py‘
一个人的Coding
pythonpipnumpy
我的博客尝试在Ubuntu环境中安装python库时报错:$pipinstallnumpyCollectingnumpyDownloadinghttps://files.pythonhosted.org/packages/1c/8a/0db635b225d2aa2984e405dc14bd2b0c324a0c312ea1bc9d283f2b83b038/numpy-2.0.1.tar.gz(18.
- TypeError: unsupported operand type(s) for |: ‘type‘ and ‘type‘
男孩阿宝
linux运维服务器
FileD:\Programfiles\Anaconda3\envs\my_satpy_env2\lib\site-packages\pyspectral\config.py:59defget_config(config_file:str|Path=None)->dict:TypeError:unsupportedoperandtype(s)for|:'type'and'type'这个错误是因为你
- 根据表结构生成controller,service,repository,domain的工具类
小裕哥略帅
java
packagecom.mdgyl.tools.generator;importcom.baomidou.mybatisplus.annotation.FieldFill;importcom.baomidou.mybatisplus.generator.FastAutoGenerator;importcom.baomidou.mybatisplus.generator.config.OutputFi
- 几种常见的工具类
小裕哥略帅
java开发语言
反射工具类packagecom.mdgyl.common.util;importorg.springframework.util.StringUtils;importjava.lang.reflect.Field;importjava.lang.reflect.Method;importjava.util.Objects;/***description:反射工具类*author:wuyc*crea
- 笔试代码题--58同城--二进制数目
大姐姐毕宿五
C++
笔试代码题--58同城--二进制数目题目描述:给定一个非负整数num,对于0countBits(intnum){vectorres;for(inti=0;i<=num;i++){res.push_back(num_count(i));}returnres;}};
- Spring Boot 篇五: Log的使用
alvachien
JavaSpringBootspringbootloglogbackspring
本文目录Log在Spring的前世今生log4j,logback和log4j2SLF4JAPI使用Logbackloggerrootappenderappendfilterencoderfile和rollingPolicy一些实际案例不写入Console的日志在Console显示日志,但将错误写入文件使用log4j2Log在Spring的前世今生Log对于任一系统的重要性不言而喻。跟JPA类似,S
- 《Memory Barriers a Hardware View for Software Hackers》阅读笔记
落樱弥城
基础知识c++笔记
CPU设计者引入内存屏障(memorybarriers)是为了应对在多处理器系统(SMP)中,内存引用重排序可能导致的同步问题。尽管重排序可以提高性能,但在某些情况下(如同步原语),正确的操作依赖于有序的内存引用,因此需要使用内存屏障来强制执行顺序。 要深入理解这个问题,需要了解CPU缓存的工作原理,尤其是如何使缓存有效工作。以下是相关内容的概述:缓存结构:介绍缓存的基本结构和工作机制。缓存
- 【Go语言圣经】第四节:复合数据类型
YGGP
Golanggolang
第四章:复合数据类型本节主要讨论四种类型——数组、slice、map和结构体。数组和结构体都是有固定内存大小的数据结构。相比之下,slice和map则是动态的数据结构,它们可以根据需要动态增长。4.1数组数组是一个定长的由特定类型元素构成的序列。由于数组定长,因此Golang当中很少直接使用数组,而是使用slice。一个使用数组的例子如下:packagemainimport"fmt"funcmai
- 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节点最多