- 【JavaScript】异步编程汇总
秀秀_heo
JavaScriptjavascript开发语言ecmascript
异步编程解决方案:回调函数PromiseGeneratorawait/async回调函数回调函数是早期处理异步编程的主要方式,虽然它本身存在很多的缺陷,比如那个时候对于复杂的异步处理常常会出现回调地狱。但是因为JavaScript中当时并没有很好的API来帮助我们以比较优雅的方式编写代码,所以依然应用非常广泛。functionfetchData(url,callback){setTimeout((
- Wiki.js 集成 Artalk 评论系统配置指南
运维小弟| srebro.cn
知识库知识库wiki.jswikijs
Wiki.js集成Artalk评论系统配置指南一、Artalk核心优势开源性质采用MIT许可证的自托管评论系统,支持全平台集成数据控制评论数据存储在自有服务器,避免第三方服务依赖轻量化架构Go语言开发的后端服务,内存占用低于50MB二、DockerCompose部署方案部署文件docker-compose.yamlversion:'3.8'services:artalk:image:artalk/
- 微信小程序图片拖拽排序组件:wx-drag-img 安装与使用指南
庞眉杨Will
微信小程序图片拖拽排序组件:wx-drag-img安装与使用指南项目地址:https://gitcode.com/gh_mirrors/wx/wx-drag-img项目概述wx-drag-img是一个专为微信小程序设计的图片拖拽排序组件。它允许用户通过原生微信小程序语法轻松实现图片列表的拖动重排功能,简化了开发者在微信小程序中集成此类交互的需求。目录结构及介绍仓库的主要目录结构如下:.├──exa
- 视频通讯使用SIP协议详解
大王算法
C/C++开发实战365算法SIPc++
一、Sip协议简介SIP(SessionInitiationProtocol,会话初始协议)是由IETF(InternetEngineeringTaskForce,因特网工程任务组)制定的多媒体通信协议。广泛应用于CS(CircuitSwitched,电路交换)、NGN(NextGenerationNetwork,下一代网络)以及IMS(IPMultimediaSubsystem,IP多媒体子系统
- cocos creator从零开发简单框架(07)-UI返回
cocos
参考UIMain,创建一个新的UIBag,创建一个名为BtnBack文本为返回的按钮,再创建一个名为BtnMain文本为主页的按钮,然后把UIBag节点拖动到resources目录下并从场景删除。新建scripts/UIBag.ts,内容如下。importUIBasefrom"../framework/scripts/view/UIBase"importUIMgrfrom"../framework
- cocos creator从零开发简单框架(08)-UI缓存
cocos
当UI切换频繁,为了避免频繁加载资源,给UI设置是否缓存的选项,当开启缓存时关闭UI时把UI对象隐藏,开启时显示UI对象。编辑scripts/UIMain.ts,开启缓存,内容如下。publicskinPath:string='UIMain'publiccache:boolean=true编辑framework/scripts/view/UIMgr.ts,添加缓存UI的Map成员。privates
- Redisson自定义序列化
兔子先生°
java
主要是解决LocalDateTime的序列化报错问题。com.fasterxml.jackson.databind.exc.InvalidDefinitionException:Java8date/timetype`java.time.LocalDateTime`notsupportedbydefault:addModule"com.fasterxml.jackson.datatype:jacks
- flutter 专题 五十三 Flutter 底部向上动画弹出菜单
leluckys
Flutter面试与实战flutter前端javascript
在移动应用开发中,我们经常会遇到弹出菜单的开发需求,对于下拉菜单可以参考Flutter自定义下拉菜单,而如果是向上的弹出菜单或者更加负责的扇形菜单,则需要开发者进行自定义开发。上面是自定义向上弹出菜单的示例,如果要实现上面的效果,需要开发者对动画(AnimationController、Animation)和Flow组件能够很熟练的进行使用。,为了方便大家快速的进行开发,现在我们将它封装城一个组件
- 推荐开源项目:Flame —— 构建PureScript Web应用的轻量级框架
贾彩知Maura
推荐开源项目:Flame——构建PureScriptWeb应用的轻量级框架purescript-flameFast&simpleframeworkforbuildingwebapplications项目地址:https://gitcode.com/gh_mirrors/pu/purescript-flame项目介绍Flame是一个受Elm架构启发,专为使用PureScript开发web应用程序而设
- [Verilog]带使能端的级联BCD码计数器 - 以时钟计数器为例
Jason_Tye
fpga开发
问题描述//模块声明moduletop_module(inputclk,inputreset,inputena,outputpm,output[7:0]hh,output[7:0]mm,output[7:0]ss);前置知识:BCD码:将十进制数的每一位(0~9)按序,用4位2进制数表示Decimal=[3:0]Binary(78)10=(0111,1000)BCDDecimal=[3:0]\Bi
- go语言:实现hexagonal numbers六边形数算法(附完整源码)
源代码大师
go算法实战教程golang算法开发语言
go语言:实现hexagonalnumbers六边形数算法代码说明:如何运行代码:六边形数是指可以用六边形排列的点数,公式为H=n(2n−1),其中n是正整数。下面是用Go语言实现六边形数算法的完整源码:packagemainimport("fmt")//HexagonalNumber计算第n个六边形数funcHexagonalNumber(nint)int{
- 优先级队列 PriorityQueue 模拟实现
a添砖Java
java开发语言
文章目录概要整体架构流程小结概要优先级队列实际是小堆,根据不同的比较方法实现小堆,也可以根据自己的需要重写比较方法,从而实现自己想要的优先级队列,获取想要的数据,接下来将会用整数模拟实现一个优先级队列;这里我的优先是优先获取最小的元素,保证出队的永远是现存的数据里最小的;整体架构流程packagedom.bite;importjava.util.Arrays;publicclassPriority
- Python图形界面 Tkinter入门6 数据库sqlite3
mango大侠
Pythonpython数据库sqlite3tkinter
6.1数据库sqlite3基础fromtkinterimport*importsqlite3importosroot=Tk()root.title('数据库sqlite3操作')root.geometry('400x400')#sqlite3-------------------------------------------------##检查数据库文件是否存在,不存在就创建,user表:ifn
- 查询和XXX同学学习的课程完全相同的其他同学学号和姓名
魔法少女小严
学习
createtablescore(s_idvarchar(20),c_idvarchar(20),s_scoreint(3),primarykey(s_id,c_id));createtablestudent(s_idvarchar(20),s_namevarchar(20)notnull,primarykey(s_id));第一步:查询XXX同学选的所有课selectc_idfromscorew
- 使用LangChainV3.0加载PDF文件并进行总结
毛毛的毛毛
pdfAI编程
LangChain目前已经更新到了V3版本,之前一直使用的V1版本,有很多方法都需要自己去封装,这次重新看了V3版本的API文档,很多方法都十分便利,调用方法简单明了十分方便,下面就来展示下这次对于PDF文件加载的优化处理:importtimefromlangchain.chains.summarizeimportload_summarize_chainfromlangchain_communit
- 小学python教材电子版_【python爬虫】中小学人教版教材下载 (调用IDM)
weixin_39981185
小学python教材电子版
根据楼主的python改的。就没做成运行文件,代码如下:新手勿喷。#!/usr/bin/envpython3#encoding:utf-8'''@author:zengyun@software:tool@application:@file:down.py@time:2020/2/2115:46@desc:'''importrequests,bs4fromtqdmimporttqdm#获取文件名称和
- django上传文件
大得369
djangosqlitepython
1、settings.py配置#静态文件配置STATIC_URL='/static/'STATICFILES_DIRS=[BASE_DIR/'static',]上传文件#定义一个视图函数,该函数接收一个request参数fromdjango.shortcutsimportrender#必备引入importjsonfromdjango.views.decorators.httpimportrequi
- PyQt5之按钮
threesevens
qtpyqt
1.QAbstractButton(1)描述所有按钮控件的基类,提供按钮的通用功能,继承自QWidget(2)功能作用1)提示文本setText(str)#设置按钮提示文本text()#获取按钮提示文本案例fromPyQt5.Qtimport*importsysapp=QApplication(sys.argv)window=QWidget()window.setWindowTitle("提示文本
- 以下是一篇关于使用SLURM编写作业脚本的原创技术指南
这题有点难度
人工智能
SLURM作业脚本编写实战指南:从入门到生产级配置一、为什么需要SLURM脚本?在高性能计算(HPC)领域,SLURM(SimpleLinuxUtilityforResourceManagement)作为主流的作业调度系统,承担着集群资源分配的核心职责。通过编写规范的SLURM脚本,研究人员可以:1.精确申请计算资源(CPU/GPU/内存)2.实现任务队列管理3.自动化作业流程4.获得执行日志和性
- spring security 实现短信登录---若依RuoYi整合短信验证码登录
菜鸡且互啄69
springjava后端
背景:若依默认使用账号密码进行登录,但是咱们客户需要增加一个短信登录功能,即在不更改原有账号密码登录的基础上,整合短信验证码登录。本案例基于RuoYi-Vue版本实现,其他版本应该大同小异。本文参考http://t.csdnimg.cn/go78Z1自定义短信登录token验证仿照UsernamePasswordAuthenticationToken类,编写短信登录token验证。我们自己构造的这
- go语言获取机器的进程和进程运行参数 获取当前进程的jmx端口 go调用/jstat获取当前Java进程gc情况
march of Time
gojvmgolangjavapython
这里主要分享go中获取机器进程和进程参数的一些代码获取当前机器所有的pid:import"github.com/shirou/gopsutil/process"pids,err:=process.Pids()for_,pid:=rangepids{proc,err:=process.NewProcess(pid)iferr!=nil{log.Errorf("getpid%dinfoerror:%s
- python 如何解析PDF文件,并将其翻译为其他语言
openwin_top
python编程示例系列pdfpython
要解析PDF文件并将其翻译为其他语言,可以使用Python中的PyPDF2库和baidu_trans库。以下是解析PDF文件并将其翻译为其他语言的基本步骤:安装PyPDF2和baidu_trans库pipinstallPyPDF2baidu_trans可以使用PyPDF2库中的PdfFileWriter和PdfFileMerger类。以下是将翻译后的文本重新组织为PDF文档的代码示例:import
- C#学习之DateTime 类
零壹电子
C#DateTimec#学习开发语言DateTime
目录一、DateTime类的常用方法和属性的汇总表格二、常用方法程序示例1.获取当前本地时间2.获取当前UTC时间3.格式化日期和时间4.获取特定部分的时间5.获取时间戳6.获取时区信息三、总结一、DateTime类的常用方法和属性的汇总表格在C#中,获取本地系统时间非常简单。可以使用DateTime类来获取当前日期和时间。DateTime类提供了丰富的属性和方法,用于处理日期和时间。常用的方法包
- 记录一次 vue3 + ele pls 改写 饿了么主题色实践
Ashy-
前端笔记前端vue.js
一、改写element主题色在main.ts中引入需要改写的scss文件main.ts:import'element-plus/dist/index.css'import'./styles/element-plus.scss'在自定义的element-plus.scss文件中改写elepls的变量element-plus.scss:/***更改主题色*/:root{--el-color-prima
- SSM框架搭建
皇家大厨
笔记
此文参考书籍为ACCP软件工程师——使用SSM框架开发企业级应用8.0版文章目录遇到的问题:1.错误:couldnotfindresourcesrc/dao/UserMapper.xml和mybatis启动异常:Logginginitializedusing'classorg.apache.ibatis.logging.log4j.Log4jImpl'2.Eclipse中的路径问题:3.log4j
- Python如何用pdfplumber读取解析pdf文件
ToMiky明明
pythonpdf开发语言
1.首先安装pdfplumber库:pipinstallpdfplumber2.如果安装失败,首先应该升级pip,用低版本的pip可能导致pdfplumber安装不成功:python-mpipinstall--upgradepip#coding:utf-8importpdfplumberwithpdfplumber.open('./test.pdf')aspdf:#遍历每个页面forpageinp
- arco.design动态引入icon
如果我们想在项目中动态引入icon,类似与这样:在官网中,有这么一句话:Arco图标是一个独立的库,需要额外引入并注册使用。这意味着,arco中的所有icon默认不是全量引入的,你只能手动引入单个icon并使用/*其它页面结构...*/你想要在递归组件中动态引入组件,则需要在main.ts中配置额外引入图标库import{createApp}from'vue'importArcoVuefrom'@
- vue中ref/reactive的区别是什么
子玉欸
前端vue.jsjavascript前端
在Vue中,`ref`和`reactive`是两种不同的响应式数据处理方式,它们的区别主要体现在作用对象和使用场景上。1.**`ref`**:-**作用对象**:`ref`主要用于将基本数据类型(如数字、字符串等)或非响应式对象(如DOM元素)转换为响应式对象。-**使用场景**:通常用于对单个数据进行响应式处理,例如在组件中声明一个响应式的变量。-**示例**:import{ref}from'v
- python解析pdf文件
irisMoon06
pythonpdfmicrosoft
先安装PyPDF2,据说这是目前最好的解析pdf的包pipinstallPyPDF2PDF文件分割、拼接importosfromPyPDF2importPdfFileWriter,PdfFileReaderdefclear_dir(dir_path): """清空目录下的文件""" names=os.listdir(dir_path) fornameinnames: file_path
- vue3 ref/reactive 修改数组的方法
取啥好
vuevue.jsjavascript前端
import{ref}from'vue'//给每个todo对象一个唯一的idletid=0constnewTodo=ref('')consttodos=ref([{id:id++,text:'LearnHTML'},{id:id++,text:'LearnJavaScript'},{id:id++,text:'LearnVue'}])functionaddTodo(){todos.value.pu
- ViewController添加button按钮解析。(翻译)
张亚雄
c
<div class="it610-blog-content-contain" style="font-size: 14px"></div>// ViewController.m
// Reservation software
//
// Created by 张亚雄 on 15/6/2.
- mongoDB 简单的增删改查
开窍的石头
mongodb
在上一篇文章中我们已经讲了mongodb怎么安装和数据库/表的创建。在这里我们讲mongoDB的数据库操作
在mongo中对于不存在的表当你用db.表名 他会自动统计
下边用到的user是表明,db代表的是数据库
添加(insert):
- log4j配置
0624chenhong
log4j
1) 新建java项目
2) 导入jar包,项目右击,properties—java build path—libraries—Add External jar,加入log4j.jar包。
3) 新建一个类com.hand.Log4jTest
package com.hand;
import org.apache.log4j.Logger;
public class
- 多点触摸(图片缩放为例)
不懂事的小屁孩
多点触摸
多点触摸的事件跟单点是大同小异的,上个图片缩放的代码,供大家参考一下
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener
- 有关浏览器窗口宽度高度几个值的解析
换个号韩国红果果
JavaScripthtml
1 元素的 offsetWidth 包括border padding content 整体的宽度。
clientWidth 只包括内容区 padding 不包括border。
clientLeft = offsetWidth -clientWidth 即这个元素border的值
offsetLeft 若无已定位的包裹元素
- 数据库产品巡礼:IBM DB2概览
蓝儿唯美
db2
IBM DB2是一个支持了NoSQL功能的关系数据库管理系统,其包含了对XML,图像存储和Java脚本对象表示(JSON)的支持。DB2可被各种类型的企 业使用,它提供了一个数据平台,同时支持事务和分析操作,通过提供持续的数据流来保持事务工作流和分析操作的高效性。 DB2支持的操作系统
DB2可应用于以下三个主要的平台:
工作站,DB2可在Linus、Unix、Windo
- java笔记5
a-john
java
控制执行流程:
1,true和false
利用条件表达式的真或假来决定执行路径。例:(a==b)。它利用条件操作符“==”来判断a值是否等于b值,返回true或false。java不允许我们将一个数字作为布尔值使用,虽然这在C和C++里是允许的。如果想在布尔测试中使用一个非布尔值,那么首先必须用一个条件表达式将其转化成布尔值,例如if(a!=0)。
2,if-els
- Web开发常用手册汇总
aijuans
PHP
一门技术,如果没有好的参考手册指导,很难普及大众。这其实就是为什么很多技术,非常好,却得不到普遍运用的原因。
正如我们学习一门技术,过程大概是这个样子:
①我们日常工作中,遇到了问题,困难。寻找解决方案,即寻找新的技术;
②为什么要学习这门技术?这门技术是不是很好的解决了我们遇到的难题,困惑。这个问题,非常重要,我们不是为了学习技术而学习技术,而是为了更好的处理我们遇到的问题,才需要学习新的
- 今天帮助人解决的一个sql问题
asialee
sql
今天有个人问了一个问题,如下:
type AD value
A  
- 意图对象传递数据
百合不是茶
android意图IntentBundle对象数据的传递
学习意图将数据传递给目标活动; 初学者需要好好研究的
1,将下面的代码添加到main.xml中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http:/
- oracle查询锁表解锁语句
bijian1013
oracleobjectsessionkill
一.查询锁定的表
如下语句,都可以查询锁定的表
语句一:
select a.sid,
a.serial#,
p.spid,
c.object_name,
b.session_id,
b.oracle_username,
b.os_user_name
from v$process p, v$s
- mac osx 10.10 下安装 mysql 5.6 二进制文件[tar.gz]
征客丶
mysqlosx
场景:在 mac osx 10.10 下安装 mysql 5.6 的二进制文件。
环境:mac osx 10.10、mysql 5.6 的二进制文件
步骤:[所有目录请从根“/”目录开始取,以免层级弄错导致找不到目录]
1、下载 mysql 5.6 的二进制文件,下载目录下面称之为 mysql5.6SourceDir;
下载地址:http://dev.mysql.com/downl
- 分布式系统与框架
bit1129
分布式
RPC框架 Dubbo
什么是Dubbo
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 集群容错: 提供基于接
- 那些令人蛋痛的专业术语
白糖_
springWebSSOIOC
spring
【控制反转(IOC)/依赖注入(DI)】:
由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。
简单的说:对象的创建又容器(比如spring容器)来执行,程序里不直接new对象。
Web
【单点登录(SSO)】:SSO的定义是在多个应用系统中,用户
- 《给大忙人看的java8》摘抄
braveCS
java8
函数式接口:只包含一个抽象方法的接口
lambda表达式:是一段可以传递的代码
你最好将一个lambda表达式想象成一个函数,而不是一个对象,并记住它可以被转换为一个函数式接口。
事实上,函数式接口的转换是你在Java中使用lambda表达式能做的唯一一件事。
方法引用:又是要传递给其他代码的操作已经有实现的方法了,这时可以使
- 编程之美-计算字符串的相似度
bylijinnan
java算法编程之美
public class StringDistance {
/**
* 编程之美 计算字符串的相似度
* 我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:
* 1.修改一个字符(如把“a”替换为“b”);
* 2.增加一个字符(如把“abdd”变为“aebdd”);
* 3.删除一个字符(如把“travelling”变为“trav
- 上传、下载压缩图片
chengxuyuancsdn
下载
/**
*
* @param uploadImage --本地路径(tomacat路径)
* @param serverDir --服务器路径
* @param imageType --文件或图片类型
* 此方法可以上传文件或图片.txt,.jpg,.gif等
*/
public void upload(String uploadImage,Str
- bellman-ford(贝尔曼-福特)算法
comsci
算法F#
Bellman-Ford算法(根据发明者 Richard Bellman 和 Lester Ford 命名)是求解单源最短路径问题的一种算法。单源点的最短路径问题是指:给定一个加权有向图G和源点s,对于图G中的任意一点v,求从s到v的最短路径。有时候这种算法也被称为 Moore-Bellman-Ford 算法,因为 Edward F. Moore zu 也为这个算法的发展做出了贡献。
与迪科
- oracle ASM中ASM_POWER_LIMIT参数
daizj
ASMoracleASM_POWER_LIMIT磁盘平衡
ASM_POWER_LIMIT
该初始化参数用于指定ASM例程平衡磁盘所用的最大权值,其数值范围为0~11,默认值为1。该初始化参数是动态参数,可以使用ALTER SESSION或ALTER SYSTEM命令进行修改。示例如下:
SQL>ALTER SESSION SET Asm_power_limit=2;
- 高级排序:快速排序
dieslrae
快速排序
public void quickSort(int[] array){
this.quickSort(array, 0, array.length - 1);
}
public void quickSort(int[] array,int left,int right){
if(right - left <= 0
- C语言学习六指针_何谓变量的地址 一个指针变量到底占几个字节
dcj3sjt126com
C语言
# include <stdio.h>
int main(void)
{
/*
1、一个变量的地址只用第一个字节表示
2、虽然他只使用了第一个字节表示,但是他本身指针变量类型就可以确定出他指向的指针变量占几个字节了
3、他都只存了第一个字节地址,为什么只需要存一个字节的地址,却占了4个字节,虽然只有一个字节,
但是这些字节比较多,所以编号就比较大,
- phpize使用方法
dcj3sjt126com
PHP
phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块,下面介绍一个它的使用方法,需要的朋友可以参考下
安装(fastcgi模式)的时候,常常有这样一句命令:
代码如下:
/usr/local/webserver/php/bin/phpize
一、phpize是干嘛的?
phpize是什么?
phpize是用来扩展php扩展模块的,通过phpi
- Java虚拟机学习 - 对象引用强度
shuizhaosi888
JAVA虚拟机
本文原文链接:http://blog.csdn.net/java2000_wl/article/details/8090276 转载请注明出处!
无论是通过计数算法判断对象的引用数量,还是通过根搜索算法判断对象引用链是否可达,判定对象是否存活都与“引用”相关。
引用主要分为 :强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Wea
- .NET Framework 3.5 Service Pack 1(完整软件包)下载地址
happyqing
.net下载framework
Microsoft .NET Framework 3.5 Service Pack 1(完整软件包)
http://www.microsoft.com/zh-cn/download/details.aspx?id=25150
Microsoft .NET Framework 3.5 Service Pack 1 是一个累积更新,包含很多基于 .NET Framewo
- JAVA定时器的使用
jingjing0907
javatimer线程定时器
1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。
对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。
privatejava.util.Timer timer;
timer = newTimer(true);
timer.schedule(
newjava.util.TimerTask() { public void run()
- Webbench
流浪鱼
webbench
首页下载地址 http://home.tiscali.cz/~cz210552/webbench.html
Webbench是知名的网站压力测试工具,它是由Lionbridge公司(http://www.lionbridge.com)开发。
Webbench能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况。webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相
- 第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/
- windows下制作bat启动脚本.
sanyecao2314
javacmd脚本bat
java -classpath C:\dwjj\commons-dbcp.jar;C:\dwjj\commons-pool.jar;C:\dwjj\log4j-1.2.16.jar;C:\dwjj\poi-3.9-20121203.jar;C:\dwjj\sqljdbc4.jar;C:\dwjj\voucherimp.jar com.citsamex.core.startup.MainStart
- Java进行RSA加解密的例子
tomcat_oracle
java
加密是保证数据安全的手段之一。加密是将纯文本数据转换为难以理解的密文;解密是将密文转换回纯文本。 数据的加解密属于密码学的范畴。通常,加密和解密都需要使用一些秘密信息,这些秘密信息叫做密钥,将纯文本转为密文或者转回的时候都要用到这些密钥。 对称加密指的是发送者和接收者共用同一个密钥的加解密方法。 非对称加密(又称公钥加密)指的是需要一个私有密钥一个公开密钥,两个不同的密钥的
- Android_ViewStub
阿尔萨斯
ViewStub
public final class ViewStub extends View
java.lang.Object
android.view.View
android.view.ViewStub
类摘要: ViewStub 是一个隐藏的,不占用内存空间的视图对象,它可以在运行时延迟加载布局资源文件。当 ViewSt