一款特别好用的霸王餐系统,搭建也特别简单,个人需要自备服务器和域名。下面是一些系统图片:下面是有关部分代码展示:部分代码展示配置数据库
ESG资料大全(部分更新2024):数据+工具变量+论文复现
经管数据库
人工智能大数据物联网
资源介绍ESG是Environmental(环境)、Social(社会责任)、Governance(公司治理)3个英文单词的首字母缩写,是一种评价企业可持续性的指标及框架。不同于传统上对于企业财务绩效的评价,ESG是一种关注企业环境、社会责任和公司治理绩效的投资理念和企业评价标准。政府监管机构和投资者可以通过对企业ESG绩效的观察,评价投资对象在促进环境保护、促进经济可持续发展和履行社会责任等方面
小程序与内嵌网页的数据通信
大耳朵乔乔
#微信小程序开发小程序
小程序与内嵌网页的数据通信前言微信小程序提供了web-view组件,允许开发者在小程序中嵌入网页。然而,由于小程序和网页运行在不同的环境中,它们之间的通信就需要依赖特定的机制来实现。然而我们日常的需求中,很多的时候都涉及到小程序内嵌网页和小程序之间进行数据通信的情况。这篇文章是我自己总结的微信小程序与内嵌web-view中网页通信的一些方法。小程序向内嵌网页传递数据通过修改web-view的src
2.2.3 代码格式与风格指南
阿凡工控分享
ST编程指南PLC开发语言PLC
编写清晰、规范的代码是提高代码可读性、可维护性和团队协作效率的关键。虽然好多人说工控行业都是一帮电工,没有什么素质,这完全是误解,任何程序所在的行业,都需要个人保证其代码风格能够很好与团队进行协作,在过去一台设备一个人写的多,往往不注意这些,这也导致了设备交接困难,成了后来接手工程师永远的痛,但是时代在发展,如今多人协作使得代码的规范性越来越成为如今的工控开发行业的共识。以下是ST(Structu
Java 不可变集合全面解析
吉安.
开发语言java
在Java编程中,不可变集合是一种特殊类型的集合,一旦创建,其内容就不能被修改。这种特性使得不可变集合在某些场景下具有独特的优势。创建不可变集合的应用场景数据不可修改的场景:当某个数据不应该被修改时,将其防御性地拷贝到不可变集合中是一种很好的实践。例如,一些配置信息、常量数据等,将它们放在不可变集合中,可以确保在程序运行过程中其内容不会被意外修改。安全调用不可信库:当集合对象需要被不可信的库调用时
Apache Flink 替换 Spark Stream的架构与实践( bilibili 案例解读)_streamsparkflink加载udf
2501_90243308
apacheflinkspark
3.基于ApacheFlink的流式计算平台为解决上述问题,bilibili希望根据以下三点要求构建基于ApacheFlink的流式计算平台。第一点,需要提供SQL化编程。bilibili对SQL进行了扩展,称为BSQL。BSQL扩展了Flink底层SQL的上层,即SQL语法层。**第二点,**DAG拖拽编程,一方面用户可以通过画板来构建自己的Pipeline,另一方面用户也可以使用原生Jar方式
Python实现itemCF协同过滤推荐算法并计算召回率、准确率、F1分数和覆盖率
计算机软件程序设计
机器学习python推荐算法开发语言
一个完整的Python实现,包括ItemCF协同过滤算法的实现以及召回率、准确率、F1分数和覆盖率等评估指标的计算。将使用Pandas进行数据处理,Scikit-learn进行相似度计算,并编写函数来生成推荐列表和评估模型性能。1.数据准备首先,需要准备数据。假设有一个用户-物品评分矩阵(可以是显式评分或隐式反馈),表示用户对不同酒店的喜好程度。这里可以使用Pandas来处理数据。importpa
深度学习利用数据加载、预处理和增强数据提高模型的性能
weixin_30777913
人工智能深度学习
深度学习数据预处理是一个关键步骤,旨在提高模型的性能和准确性。通过数据加载、预处理和增强,可以显著提高深度学习模型的性能和准确性。在实际应用中,需要根据具体的数据和任务来选择合适的预处理和增强技术。以下将详细论述并举例说明如何加载、预处理和增强数据。一、数据加载在深度学习中,数据加载是第一步。这通常涉及到从各种数据源(如CSV文件、数据库、图像文件夹等)中读取数据。以DeepLearning4J(
系统架构设计基础:概念与原则
Evaporator Core
系统架构设计师Python开发经验数据库系统设计师系统架构
系统架构设计基础:概念与原则引言系统架构设计是软件开发过程中至关重要的一环,它决定了系统的整体结构、组件之间的关系以及系统的可扩展性、可维护性和性能。系统架构设计师不仅需要具备扎实的技术功底,还需要对业务需求有深刻的理解,能够在复杂的需求中找到平衡点,设计出既满足当前需求又具备良好扩展性的系统架构。本文将深入探讨系统架构设计的基础概念与原则,帮助读者建立起系统架构设计的理论基础。第一章:系统架构设
Python Web应用开发进阶:集成数据库与SQLAlchemy
Evaporator Core
Python开发经验python前端数据库
引言在上一篇《PythonWeb应用开发入门:从零搭建一个简单的Web应用》中,我们学习了如何使用Flask框架搭建一个简单的Web应用。然而,大多数Web应用都需要与数据库进行交互,以存储和检索数据。本文将深入探讨如何在Flask应用中集成数据库,并使用SQLAlchemy进行数据操作。一、数据库选择与安装1.1选择数据库在PythonWeb开发中,常用的数据库有SQLite、MySQL、Pos
Java力扣题解:169 多数元素——投票法
早起之王
leetcodeleetcode
题目给定一个大小为n的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于⌊n/2⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/majority-element著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。分析这里的投票法,是以第一个元素为基准数,票
基于MySQL8.0安装部署MHA集群(一主两从)
收买神的欢心
mysql数据库大数据
写在前面之前搭建过MySQL5.7版本的MHA集群,因为一些需要,现进行MySQL8.0版本的MHA集群搭建,搭建步骤基本与5.7版本相似,所以某些测试部分、问题解决、安装包、mha的IP漂移配置文件可以参照我之前写的博文,但是有部分配置文件做了改动,且8.0版本的某些命令与5.7版本的也不尽相同,需要注意。基于MySQL5.7安装部署MHA集群(一主一从)可查看MySQL高可用集群搭建(一主一从
一步教你轻松实现--Word方括号打勾☑
韦_恩
windows日常使用总结word
开门见山,不说废话,本文介绍两种方法任君选择!1.方法1:在需要输入“方框打勾”符号的地方按着【Alt】键的同时,输入数字“9745”,输入完之后再松开【Alt】键,你会发现这个数字瞬间变成了“方框打勾”符号【如果没有就再按下回车键】。2.方法2:需要输入“方框打勾”符号的地方输入“2611”,然后按下【Alt+X】的组合键,即可看到“2611”瞬间变成了“方框打勾”符号。alt+x键后:以上两种
如何运用python爬虫获取大型资讯类网站文章,并同时导出pdf或word格式文本?
大懒猫软件
深度学习python网络爬虫自然语言处理
这里,我们以比较知名的商业新知网站https://www.shangyexinzhi.com/为例进行代码编写,下面进行代码应用思路。第一部分,分析网站结构首先,我们来分析,要使用Python技术分析一个网站的结构,通常可以通过以下步骤实现:获取网站的HTML内容:使用requests库来获取网站的HTML源代码。解析HTML内容:使用BeautifulSoup库来解析HTML,提取网站的结构信息
牛客网面试必刷TOP101-03二叉树BM40 重建二叉树
bingw0114
面试数据结构职场和发展
描述给定节点数为n的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。提示:1.vin.length==pre.length2.pre和vin均无重复元素3.vin出现的元素均出现在pre里4.只需要返回根结点,系统会自动输出整颗树做答案对比数据范围:n≤20
使用Python进行3D游戏开发
2301_79366332
python3dpygamePython
Python是一种功能强大且易于学习的编程语言,它也可以用于开发3D游戏。虽然Python在游戏开发方面可能不如其他专门的游戏引擎和语言,但它仍然提供了许多库和工具,可以帮助您构建简单的3D游戏。在本文中,我们将探讨如何使用Python进行基本的3D游戏开发。安装所需的库要开始使用Python进行3D游戏开发,您需要安装一些必要的库。其中,最重要的是Pygame库和PyOpenGL库。Pygame
Python知识点:如何使用Panda3D进行3D游戏开发
杰哥在此
Python系列python3d开发语言编程面试
使用Panda3D进行3D游戏开发是一个相对复杂但功能强大的过程。Panda3D是一个基于Python和C++的开源引擎,专为3D游戏开发而设计。它支持物理、动画、着色器、碰撞检测等,能够制作高质量的3D游戏。以下是如何使用Panda3D进行3D游戏开发的基本步骤。1.安装Panda3D首先,你需要安装Panda3D。你可以使用以下命令安装:pipinstallpanda3d2.创建一个基本的Pa
超级账本Hyperledger fabric 2.2.1安装测试详细步骤
wayne_keh
golanghyperledgerfabric超级账本
HyperledgerFabric2.2.1安装测试操作系统(本文Ubuntu18.04LTS虚拟机),最后在Window操作系统中再安装一个远程连接工具(如XShell或SecureCRT),方便连接并操作Ubuntu系统。1.换源,更换apt的下载源,官方下载源很慢,我们需要更换到国内的镜像站1.1进入/etc/apt目录cd/etc/apt1.2备份sources.list文件sudocp/
星露谷模组开发教程#8 自定义武器
c#
首发于Enaium的个人博客添加武器还是比较简单的,只需要在Data/Weapons中添加一个新的武器数据即可。这里做一张16x16格式为png的图。if(e.Name.IsEquivalentTo("Data/Weapons")){e.Edit(assets=>{vardict=assets.AsDictionary();dict.Data["Awesome_TheLastSword"]=new
星露谷模组开发教程#7 自定义机器
c#
首发于Enaium的个人博客添加大型工艺品机器也算是大型工艺品,所以我们需要先添加它的大型工艺品。这里做一张16x32格式为png的图。if(e.Name.IsEquivalentTo("Data/BigCraftables")){e.Edit(assets=>{vardict=assets.AsDictionary();dict.Data["Awesome_Orearium"]=newBigCr
Rust入门实战 编写Minecraft启动器#2建立资源模型
首发于Enaium的个人博客我们需要声明几个结构体来存储游戏的资源信息,之后我们需要将json文件解析成这几个结构体,所以我们需要添加serde依赖。serde={version="1.0",features=["derive"]}资源相关asset.rsuseserde::Deserialize;usestd::collections::HashMap;#[derive(Deserialize)
Rust入门实战 编写Minecraft启动器#3解析资源配置
首发于Enaium的个人博客在上一篇文章中,我们已经建立了资源模型,接下来我们需要解析游戏的配置文件。首先我们添加serde_json依赖和model依赖。model={path="../model"}serde_json="1.0"之后我们在lib.rs中添加解析的trait。pubtraitParse:Sized{typeError;fnparse(value:T)->Result;}之后将所
docker 快速入门
小黄失业ing
dockerlinux
你好,欢迎来到我的博客!今天我要和大家分享一下如何在CentOS中使用Docker安装常用服务。Docker是一个非常强大的容器技术,它可以让我们轻松地部署和管理各种应用程序,而不用担心环境的差异和依赖的问题。Docker的安装和使用也很简单,只需要几个步骤就可以完成。下面我就来具体介绍一下。安装docker首先,我们需要在CentOS上安装DockerEngine。DockerEngine是Do
日常小tip_Bat命令运行Java程序
蓝田~
小tipsjava开发语言
批处理命令介绍文章目录介绍常用语法bat命令运行一个简单的Java程序介绍批处理命令一般是一个文本文件,文件的每一行命令都会在DOS中执行。一般用来处理需要重复性执行的命令。常用语法echo:表示显示此命令后的字符echooff:表示不显示此命令后的命令行本身的字符@:与echooff类似,但是这条命令加在命令行之前,表示不显示这一行的命令行字符call:调用另外一个批处理文件pause:暂停当前
电商行业中 API 接口的常见问题和解决方法
前端后端运维数据挖掘api
在电商行业蓬勃发展的今天,API接口作为不同系统之间数据交互与功能调用的桥梁,扮演着举足轻重的角色。从商品信息展示、订单处理到物流追踪,电商业务的各个环节都离不开API接口的支持。然而,在实际应用中,API接口常常会出现各种问题,影响电商业务的正常运转。本文将深入探讨电商行业中API接口的常见问题,并提供详细的解决方法,同时结合代码示例,帮助开发者更好地理解和应对这些挑战。数据准确性问题数据不一致
Session+Redis,Token+Redis,JWT+Redis,用户身份认证,到底选择哪种更合适?
简学云资源平台
Java技术#Redisredisjava
1三中方案的比较在选择Session+Redis、Token+Redis、JWT+Redis这三种用户身份认证方案时,我们需要考虑各自的优势、劣势以及应用场景。以下是对这三种方案的详细分析和比较:1.Session+Redis优势:Session登录是一种在Web应用程序中用于跟踪用户状态的机制,通过在服务器端存储会话信息,可以确保用户只需一次登录,并在整个会话期间保持登录状态。使用Redis作为
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节点最多