- [Unity 3d] VertexPaint (Mesh 顶点画手) - GitHub
雨落随风
一个Mesh顶点动画绘制工具。GitHub上的工程多如繁星,有些好的仓库,但凡不经意间错过了就很难找回,故稍作采撷,希望能帮助到有心人。简介:笔者今天推荐的仓库叫VertexPaint。-顶点画手ThispackageallowsyoutopaintinformationontotheverticesofameshintheUnityeditoraswellasmodifyanyattribute
- Qt触发paintEvent事件
quaer
QTqt开发语言
常见情况下,paintEvent会在以下几种情况下被触发:窗口初始化和显示:当窗口首次被创建、显示或者窗口被覆盖、最小化后再恢复时,paintEvent会被触发以绘制窗口的内容。部件大小或位置变化:如果窗口或部件的大小或位置发生变化,需要重新绘制内容以适应新的尺寸或位置,此时也会触发paintEvent。强制重绘:当调用部件的update()或repaint()函数时,会触发对应部件的paintE
- Flutter 自绘组件 (CustomPaint与Canvas)绘制虚线、区域、直线(一)
goodhighting
程序员flutter前端javascript
有人也许会疑惑,方案1和方案二不都是采用的绘制吗,那可不一定。有的时候解决问题,我们不遵循常规也可以解决问题,满足一时之需了。1、解决问题奇葩方式一:为什么奇葩呢?我们采用多个Container进行竖直或者水平排列完成了效果,至于性能上我们后面慢慢验证了。_lineContainer(){returnContainer(margin:EdgeInsets.only(top:2.0),color:C
- 突发奇想,玩家用《我的世界》重现美术大师画作,还原度很高
爱游戏的萌博士
如果你喜欢绘画,在其中又特别钟情风景画的话,你可能听说过鲍伯·鲁斯(BobRoss)。这其实是罗伯特·诺曼·鲁斯(RobertNormanRoss)的艺名,他是位美国画家,同时也是一位艺术指导与电视节目主持人。鲁斯以他温柔且和乐的语气为特色,在他著名的电视节目“欢乐画室(TheJoyofPainting)”中担任即席教学画家兼主持人,这个节目活跃于上世纪八九十年代。博士为什么要提上面这位顶着爆炸头
- Windows和浏览器的命令与快捷键
伍嘉源
Windowswindows
Windows和浏览器的命令与快捷键一、运行常用命令二、cmd常用命令(cmd的命令是运行的命令的超集)三、Windows快捷键1、Win键2、Ctrl键3、Alt键4、F键四、浏览器快捷键五、关闭Windows防火墙、安全中心和自动更新一、运行常用命令1.基本命令cmd打开命令提示符(cmd命令行控制台)control打开控制面板regedit打开注册表编辑器2.打开系统自带工具mspaint打
- 2023-07-12
大法师的输出
模型:xxmix9realistic_v30LoRA:,,,室内、起居室、咖啡杯等构建环境氛围效果图1(SFW:2),HDR,UHD,8K,bestquality,masterpiece,Highlydetailed,Studiolighting,ultra-finepainting,sharpfocus,physically-basedrendering,extremedetaildescrip
- 春节集市见闻
C18078黄俊豪阅读
图片发自App春节是中国最富有特色的传统节日,由虞舜时期兴起。春节指华夏传统历法夏历的元旦(与中国现行的公历元旦不同),农历正月初一,又称农历新年、大年、岁首、正旦、正月朔日,又叫阴历年,俗称过年、度岁、庆新岁。在中国民间,传统意义上的春节是指从腊月初八的腊祭或腊月二十三或二十四的祭灶,一直到正月十五,其中以除夕和正月初一为高潮。图片发自App年画(newyearpaintings)是中国画的一种
- HarmonyOS Next 使用绘制组件实现自定义进度动画
2401_84181731
2024年程序员学习harmonyos信息可视化人工智能
加载完成后初始显示进度为0%,颜色为红色,且有充电、放电两个按钮。点击充电按钮,进度会持续增长,直到100%时绿色填充满整个圆形,当到达20%以上和80%以上时,颜色动态变化。点击耗电按钮,进度会持续下降,直到0%恢复1中的初始效果,当到达20%以下和80%以下时,颜色动态变化。实现思路使用Circle组件绘制外层的圆环。源码参考PaintComponent.ets。//外框圆环Circle({w
- python:实现声音采集判断声音分贝值
Demons_皮
python开发语言
一、依赖库importwavefrommathimportlogimportnumpyasnpimportpyaudio二、代码defsavewavfile(count):CHUNK=1024FORMAT=pyaudio.paInt16CHANNELS=1RATE=44100RECORD_SECONDS=5WAVE_OUTPUT_FILENAME="output"+str(count)+".wav
- Android使用Paint 和 Canvas 的相关知识,自定义 View 实现一系列效果动画
Android高级
Android经验分享面试android
**setSrokeJoin(Paint.Joinjoin);*设置绘制时各图形的结合方式,如平滑效果等**setStrokeWidth(floatwidth);*当画笔样式为STROKE或FILL_OR_STROKE时,设置笔刷的粗细度**setXfermode(Xfermodexfermode);*设置图形重叠时的处理方式,如合并,取交集或并集,经常用来制作橡皮的擦除效果**2.文本绘制*se
- 录井实时监控曲线组件
悟空也会写代码
c#集成测试个人开发软件工程.net
使用GID+原生代码编写实时动态曲线组件privatevoidDrawAsync(PaintEventArgse){if((points!=null&&points.Count()>0)||(points1!=null&&points1.Count()>0)){PointF[]pointsNew=points.ToList().Where(c=>c.Y!=StartHight).ToArray()
- QT如何在控件上绘图(例如QLabel,Button,QWidget等)
重生之我在四川卖苕皮
QTqtui开发语言
方法一:使用事件过滤机制事件过滤器:由两个函数组成的一种操作,用来完成一个部件对其他部件的事件监视,这两个函数分别是installEventFilter();eventFilter(QObject*obj,QEvent*ev)皆为QObject类中的函数。如何使用:一,ui->paint_widget(子控件名)->installEventFilter(this);//安装事件过滤器二,在.h中加
- 8月29日wpf
西鲶鱼
wpfjavascript开发语言ecmascript
小语折磨我们的往往是想象,而不是真实。学wpf7.071.vs如何创建新项目?退出,创建新项目,点c#,windows,进入界面2.app.config在哪里?好像只有这个。。。试一下,不是我为啥没有config?视频里的F5没用,我自己点了运行,结果差不多20min课程学了俩小时,最后写了一个ui,以下为代码PaintedNotPaintedRubberNotRubber
- Qt:玩转QPainter后转之太极图
血不热了
qt开发语言
前言简单了解了QPainter之后还是要做两个小例子练一练,不实际去做,只看看函数是没啥太大提升的,这里就简单画一个太极图。正文我们都知道太极分为阴阳鱼两部分,阴鱼(黑色)有个白色鱼眼,阳鱼(白色)有个黑色鱼眼;所以我们在画图的时候也可以分成阴阳两部分来画单看阳鱼不算鱼眼的话可以分成三部分,我们可以先画一个大半圆,用大半圆减去上面一个小半圆,再加上下面一个小半圆即可阴鱼正好相反先画一个大半圆,用大
- 新年计划:Kiki's new year resolution
月婵娟
图片发自AppKiki'snewyearresolution:1.Practicedrawingorpaintingatleasttwiceaweek.每周至少练习两次画画。2.Read15minutesperday.每天读书15分钟。3.Teachmom5Englishwordseveryday.每天教妈妈认五个英语单词。
- android自定义view之画圆随着手指移动
✎ℳ๓Eternity✾
进阶View画圆可以跟随手指移动
publicclassMyViewextendsView{privatePaintmFanPaint,mTextPaint;//扇形画笔和文字画笔publicfloatAxisX=100;publicfloatAxisY=100;publicMyView(Contextcontext){super(context);init();}publicMyView(Contextcontext,Attri
- View画矩形统计图(可动态添加)
✎ℳ๓Eternity✾
进阶
布局画矩形统计图publicclassMyViewextendsView{privatePaintmLinePaint,mTextPaint,mRectPaint;ArrayListlist;publicMyView(Contextcontext){super(context);init();}publicMyView(Contextcontext,AttributeSetattrs){super
- 2023-07-02
大法师的输出
大模型:breakdomainrealistic_R2333LoRA:,效果图(SFW:2),HDR,UHD,8K,bestquality,masterpiece,Highlydetailed,Studiolighting,ultra-finepainting,sharpfocus,physically-basedrendering,extremedetaildescription,Profess
- Qt:设置Qwidget类背景方法总结
面条有点辣
Qtqtui开发语言
目录1、引言2、使用样式表(setStyleSheet)3、QPalette4、paintEvent事件5、简洁方式6、总结1、引言 在实现一个页面跳转功能时,选择PushButton或QWidget可以有效当作按钮,而Qwidget可以添加label或者其它控件,自定义程度更高,因此本文给出几种给Qwidget绘制背景图片方法。2、使用样式表(setStyleSheet)ui->widget-
- 100-days-Coding - day12
亨利何
day12-0827html-刮刮奖startpainting刮刮奖的整体思路,就是canvas的动态绘制「事件驱动」使用两个canvas,下层为最终展示层「刮完后的涂层」,上层为「刮层,银色层」每次移动手指时,绘制图形「原型,三角形,等」,特点是透明,可以使得下层显现重点:透明涂层绘画this.ctx.globalCompositeOperation="destination-out";//设置
- 棉花糖的Scalers Talk第四轮新概念英语持续力训练Day 2018116
春晓菲华
练习材料Lesson26ThebestartcriticsWhoisthestudent'sbestcritic?IamanartstudentandIpaintalotofpictures.Manypeoplepretendthattheyunderstandmodernart.Theyalwaystellyouwhatapictureis'about'.Ofcourse,manypicture
- 2023-09-10
大法师的输出
pikasAnimatedMix_10Pruned(SFW:2),HDR,UHD,8K,bestquality,masterpiece,Highlydetailed,Studiolighting,ultra-finepainting,sharpfocus,physically-basedrendering,extremedetaildescription,Professional,VividCol
- C++开源界面库duilib的使用细节与实战技巧总结(实战经验分享)
dvlinker
C/C++实战专栏C/C++软件开发从入门到实战C++开源库duilib使用细节实战技巧控件Layout布局字符串格式化
目录1、使用CEditUI编辑框2、使用CLabelUI或CTextUI的Html文本效果3、使用CTextUI控件对文字宽度自适应的特性4、CRichEditUI富文本控件使用注意点4.1、指定CRichEditUI加在2.0版本的Riched20.dll库4.2、解决向CRichEditUI中插入文字后显示空白的问题5、设置窗口透明度的接口CPaintManagerUI::SetTranspa
- 提升前端性能的JavaScript技巧
丁爸
linuxjavascript
1.前端JavaScript性能问题前端JavaScript的性能问题可以显著影响Web应用的用户体验和整体性能。以下是一些常见的前端JavaScript性能问题:1.1.频繁的DOM操作问题描述:JavaScript经常需要与DOM(文档对象模型)交互来更新页面内容。然而,每次DOM操作都可能触发浏览器的重绘(repaint)或重排(reflow/reflow),这些操作是资源密集型的,会导致页
- 古希腊陶器之03绘有四对象葡萄串的大水罐
iCloudEnd
图片
[email protected]介绍Largejugwithfourgrape-clusterssymmetricallypaintedaroundthebodygrapesareacharacteristicdecorativemotifinTheranpottery.绘有四对象葡萄串的大水罐。公元前16世纪AkroterionThera16thcent.BC.年代:公
- 2021-07-19
rosalind
ThedisguiseofPortraitofanArtistDavidHockney,PortraitofanArtistPortraitofanartistisoneofthemostbelovedpaintingsofHockney,regardlessofthestruggleintheprocessofcreation.However,theexcellenceofthepainting
- c++窗口立即刷新重绘
beibaoke910
windows客户端windowsc++
UI界面没有及时刷新时,添加如下代码强制重绘:InvalidateRect(m_hWnd,NULL,TRUE);UpdateWindow(m_hWnd);当窗体需要更新内容或是重绘外观背景的时候,应用程序通常会发送一条WM_PAINT消息,通知窗体进行重新绘制。1、InvalidateRectInvalidateRect(m_hWnd,lpRect,bErase)强制使客户区中的一个矩形失效,而在
- Qt中对主窗口的一些基本操作
徐kun按门铃
Qt学习cssc++
一,给主窗口添加背景我们在做Qt项目的时候,难免需要在主场口上面添加背景图片,一般有两种方法来实现这一功能,可以在主窗口上面粘贴一个很大的QLabel然后在QLabel上面绘制图片,一般不会这样做,另外一种放法我们就需要重写绘制事件函数。paintEvent事件是在窗口状态改变之后处罚的,窗口的状态改变,可以是大小改变,也可以是别的。如下:头文件:protected://只要窗口状态改变自动调用此
- QTableWidget表头添加复选框实现全选功能
hss2799
Qt
QTableWidget表头添加复选框实现全选功能主要是CheckBoxHeaderView继承QHeaderView,重写paintSection函数voidcheckStatusChange(bool);是复选框是否选中的信号。详细代码如下:#ifndefCHECKBOXHEADERVIEW_H#defineCHECKBOXHEADERVIEW_H#include#include#includ
- JfreeChart做折线图
Loren_云淡风轻
java基础特定功能
packageorg.com.testJfreechart;importjava.awt.BasicStroke;importjava.awt.Color;importjava.awt.Font;importjava.awt.GradientPaint;importjava.io.File;importjava.io.IOException;importjava.util.HashMap;impo
- 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节点最多