- 【转】Office 中的 VBA 入门
Amyxfy
officeVBAofficeword
链接:https://docs.microsoft.com/zh-CN/office/vba/Library-Reference/Concepts/getting-started-with-vba-in-office你是否面临着重复清理Word中五十个表格的工作?你是否希望有一个特殊的文档能够在打开时提示用户进行输入?你是否感觉难以弄明白如何将MicrosoftOutlook中获取的联系人有效地导
- 结构化设计(耦合)
编程在手天下我有
软件工程
1.非直接耦合定义:两个模块之间没有直接的联系,它们分别从属于不同的上层模块控制与调用。示例:在一个电商系统中,用户管理模块负责处理用户的注册、登录等操作,而商品库存管理模块负责管理商品的库存数量。这两个模块分别由不同的业务逻辑模块调用,它们之间没有直接的交互。classUserManagement{publicvoidmanageUser(){System.out.println("正在进行用户
- nextjs系列教程(三):pages和路由
HarryDeveloper
#nextjs合集javascript前端react.js
Pages页面用法1.1概念介绍在Next.js中,一个page(页面)就是一个从.js、jsx、.ts或.tsx文件导出(export)的React组件,这些文件存放在pages目录下。每个page(页面)都使用其文件名作为路由(route)。1.2创建page页面如果你创建了一个命名为pages/about.jsx的文件并导出(export)一个如下所示的React组件,则可以通过/about
- 四、小白学JAVA-石头剪刀布游戏
定制开发才有价值
java游戏开发语言
1、如何从控制台获取用户输入import java.util.Scanner;publicclass Main{ publicstaticvoid main(String[]args){ //石头剪刀布的思路 //123石头剪刀布 Scannerscanner= new Scanner(System.in); System.out.println("请出拳:1.石头
- 工作中如何不动声色展现价值
程序员
本文主要讨论如何在不动声色的情况下展示个人价值,包括积极主动分享知识、帮助他人提升技能、记录并分享学习经验、通过提问引导他人思考、将时间投入更重要的工作等策略。原文:HowtoShowcaseYourValueWithoutBragging工作中有两种人,一种是夸夸其谈的人,另一种是真正做事的人。嗓门大的人即使能力不行,也会得到关注和机会。而安静做事的人一直在幕后默默创造价值,却从未得到应有的赞赏
- 在vs中开发QT时使能控制台输出的方法
xfc_1939
QTqt
VS开发QT应用程序时出现std::cout属性->配置属性->链接器->系统->子系统中将窗口(/SUBSYSTEM:WINDOW)改为控制台(/SUBSYSTEM:CONSOLE)
- format(C++20)
GarryLau
C++c++20
1.std::formatformat_01.cpp//g++format_01.cpp-std=c++20#include#include#includevoidtest_01(){//使用字符串填充std::cout#include#includevoidtest_02(){/*{[arg_id][!spec][:[fill]align][sign][#][0][width][.precisi
- C++20 std::formatter的使用--格式化自定义类型
Aboes
C++20c++编程语言
C++20std::formatter的使用--格式化自定义类型说明头文件一个简单的format例子格式化自定义类型(class,struct)注意事项!!重要!!说明C++在20标准中正式引入格式化库format,其来自第三方库fmt::format。头文件#include一个简单的format例子#includeintmain(){std::cout//非模板类struct
- 针对vue 、 kotlin 、java 这三个语言AI辅助开发的提示词
人生富有
javavue.jskotlin
Vue项目搭建与配置请使用Vue3和Vite搭建一个新项目,包含路由和状态管理,给出详细的配置步骤和示例代码。我想用Vue构建一个电商网站前端,采用VueRouter和Pinia,如何进行项目的初始配置?组件开发开发一个可复用的Vue卡片组件,要求有标题、内容和按钮,使用Vue3的组合式API。帮我实现一个基于Vue的日期选择器组件,结合ElementPlusUI库。生成代码"用Vue3Compo
- 【C++】打印输出,换行的3种方式
四维碎片
C++c++开发语言
1.使用std::endl2.使用\n进行换行3.使用<<运算符分开两个输出操作//使用std::endl:intnumber=42;std::cout<<"Thevalueofnumberis:"<
- IR(Interrupt Router)
weixin_42438100
MCU单片机嵌入式硬件
文章目录1.功能特性2.系统框图3.重要寄存器3.1.SRCi3.2.LWSRx(x=0~7)3.3.LASR3.4.ECR(错误捕获寄存器)3.5.其他4.主要功能4.1.SRN4.2.ICU作用4.3.GPSR与广播服务请求4.4.ArbitrationProcess(仲裁过程)4.5.中断的使用4.6.Eg5.疑问5.1.ICU、SRN如何理解?ICU有多少个?5.2.中断优先级越小越高还是
- Kotlin 类扩展实现原理
MarkRZJ
javaclassproxy类jvm
在Kotlin中当项目集成第三方SDK的时候,如果需要为其中某个类新增方法来可以通过className.methodName(){},即类名.方法名的形式来扩展函数,那么同样和Java一样是JVM语言的Kt为什么就可以实现这种功能呢,以下为一个例子,借助它来详细探讨一下实现原理及细节。openclassFather{//定义成员函数openfunshout()=println("Fathercal
- 面试题:协程异常处理器及try catch
祖师爷科技
面试kotlinandroid
在Kotlin协程里,异常处理器(CoroutineExceptionHandler)和try-catch块在处理异常时各有特点,它们之间存在一定的包含关系,下面详细介绍:1.try-catch块在协程内部使用try-catch块可以捕获并处理局部异常。它的作用范围仅限于所在的协程体,仅能捕获该协程体中抛出的异常。importkotlinx.coroutines.*funmain()=runBlo
- C++匿名对象、编译器对拷贝构造和构造的优化等的介绍
Farewell_me
C++c++开发语言匿名对象编译器优化
文章目录前言一、C++匿名对象1.匿名对象的生命周期2.匿名对象调用成员函数3.匿名对象具有常性二、编译器对拷贝构造和构造的优化总结前言C++匿名对象、编译器对拷贝构造和构造的优化等的介绍一、C++匿名对象1.匿名对象的生命周期#includeusingnamespacestd;classA{public:A(inta):_a(a){coutusingnamespacestd;classSolut
- C++的指针数组、数组指针和指针数组指针
胡乱儿起个名
C++c++开发语言
C++指针与数组:简单详细指南1.指针数组(数组里存指针)是什么:一个普通数组,但每个元素都是指针定义:类型*数组名[大小];例子:inta=1,b=2,c=3;int*numPtr[3]={&a,&b,&c};//存了3个int指针char*names[2]={"小明","小红"};//存了2个字符串指针怎么用:cout右边>左边)逐步解析。
- x6.js 流程图绘制笔记,常用函数
web前端神器
流程图笔记javascripthtml5vue.js
官方参考网站如下:https://antv-x6.gitee.io/zh/docs/tutorial/about目录安装x6创建绘制区域插入数据并渲染添加新节点删除节点连接节点连接桩设置快捷键Graph内置常用函数根据id获取节点对象获取整个节点json复制函数粘贴函数销毁Graph节点内置函数更新节点guiplan开发工具,可视化开发一键使用常见问题安装x6输入以下命令npminstall@an
- 实现基于Vue的后台管理系统权限控制与动态路由
聂聂脸
前端服务器vue.jsanti-design-vue
在开发后台管理系统时,权限控制是不可或缺的一部分。本文将详细介绍如何使用Vue实现根据不同角色动态生成路由,从而控制用户访问权限。步骤一:基础路由配置首先,我们需要配置基础路由,这些路由是所有用户共有的,例如登录页和404页。constallRoutes=[//基础路由{path:'/',name:'login',component:()=>import("@/views/LoginView.vu
- 用deepseek创建可运行的简单的php框架
PHPlai
人工智能php开发语言
用deepseek创建可运行的简单的php框架构建一个简单的PHPMVC框架(从零开始)本文将手把手教你构建一个精简的PHPMVC框架,适合学习框架原理和快速开发小型项目。以下是完整实现步骤:一、框架结构创建以下目录结构:/myframework├──app/│├──controllers/│├──models/│└──views/├──core/│├──Router.php│├──Control
- django-rest-framework-jwt与django-rest-framework-simplejwt的对比及使用
2401_87298624
djangopython后端
作者在YouTube讲解Token结构通过他的讲解,我们发现token分为三部分,以"."进行分割,使用Base64编码。第一部分我们称它为头部(header)第二部分我们称其为净负载(payload)第三部分是签名(signature)作者讲解Header需要加参数通过作者讲解可知道,添加验证后,需要在Header中添加参数Authorization,内容为JWT。使用文档通过使用文档,我们可以
- 快速入手-基于Django-rest-framework的ModelViewSet终极版(七)
神奇侠2024
djangopythonModelViewSet
和上一节中的代码不通地方做一下说明1、对应的api模块中的urls.py导入路由模块,进行相关操作fromdjango.urlsimportpath,re_pathfrom.importviewsfromrest_frameworkimportroutersrouters=routers.DefaultRouter()routers.register("linkapi",views.Linkapi
- 【Java】Java核心知识点与相应面试技巧(八)——类与对象(三)
self-discipline634
java面试开发语言
Java内部类上期面试题解析上文链接:https://blog.csdn.net/weixin_73492487/article/details/146690712以下代码输出什么?classA{static{System.out.print("1");}{System.out.print("2");}publicA(){System.out.print("3");}}classBextendsA
- JavaScript制作定时器
前端宸汐~
前端javascripthtml
定时器关键函数:setTimeoutfunctiontest1(){document.write("你好");}//3秒后再执行,只执行一次setTimeout('test1()',3000);letid=setTimeout(function(){alert("祝你天天开心!!!");},5000)console.log(id);三秒后会弹窗出来。
- python:图片压缩脚本
_乐多_
python实用脚本小脚本python
本教程记录了将图片进行压缩的python脚本,可以输入一张图片,进行压缩,返回一个新的压缩后的图片。#-*-coding:utf-8-*-fromPILimportImageimportosdefcompress_image(input_path,output_path,target_size_kb,step=5,min_quality=10,scale_factor=0.9):"""压缩图片到指
- python 视频流截图_python视频按帧截取图片工具
weixin_39735509
python视频流截图
本文实例为大家分享了python视频按帧截取图片工具的具体代码,供大家参考,具体内容如下描述:将一个视频流按帧数截取大量的图片用途:AI的数据集制作,得到大量的图片,之后将其打标签更改的地方1.default--间隔的帧数2.input/output--输入视频的路径、存放截取图片的路径(将路径放入后面的‘'中即可)前面加r可表示绝对路径eg:args=parser.parse_args(['--
- python截取视频图像_python视频按帧截取图片工具
weixin_39599097
python截取视频图像
描述:将一个视频流按帧数截取大量的图片用途:AI的数据集制作,得到大量的图片,之后将其打标签更改的地方1.default--间隔的帧数2.input/output--输入视频的路径、存放截取图片的路径(将路径放入后面的‘'中即可)前面加r可表示绝对路径eg:args=parser.parse_args(['--input',r'F:\data_video\IMG_4395.MOV','--outp
- UE5中开启ACES工作流程
CG星空
UE蓝图ue5
首先要开启OCIO插件OpenColorIO创建配置下载ACEShttps://github.com/colour-science/OpenColorIO-Configs/tree/feature/aces-1.2-config加载ACES的ocio选择Srgb选择ACES参考链接:https://zhuanlan.zhihu.com/p/534357694https://www.youtube.
- python:将mp4视频快进播放,并保存新的视频
_乐多_
python音视频处理python音视频开发语言
本文将介绍将mp4视频快进播放,并保存新的视频的python代码。importsubprocessdefspeed_up_video(input_path,output_path,speed=2.0):"""快进播放视频(加速播放):paraminput_path:输入的视频文件路径:paramoutput_path:输出快进后的视频文件路径:paramspeed:加速倍数,例如2.0表示快进2倍
- 【GIT常用命令】
Vacancy空白
经验分享gitelasticsearch大数据
git常用命令备忘录git://合并某个分支上的单个commit//切换到需要合并的分支gitcheckoutmaster//查询commitid进行gitgitcherry-pick82ecb31//合并分支//切换到需要合并的分支上//目前在master分支,需要合并bcl分支的代码gitmergebcl或者gitmerge--no-ffbcl//取消合并gitmerge--abort//回滚
- jQuery 尺寸
宇哥资料
jQueryjquery前端javascript
通过jQuery,很容易处理元素和浏览器窗口的尺寸。jQuery尺寸方法jQuery提供多个处理尺寸的重要方法:width()height()innerWidth()innerHeight()outerWidth()outerHeight()jQuery尺寸jQuerywidth()和height()方法width()方法设置或返回元素的宽度(不包括内边距、边框或外边距)。height()方法设置
- RTDETR融合何凯明[CVPR2025]新作DyT结构
今天炼丹了吗
RT-DETR涨点改进专栏YOLO深度学习人工智能
RT-DETR使用教程:RT-DETR使用教程RT-DETR改进汇总贴:RT-DETR更新汇总贴《TransformerswithoutNormalization》一、模块介绍论文链接:https://arxiv.org/pdf/2503.10622代码链接:https://jiachenzhu.github.io/DyT/论文速览:归一化层在现代神经网络中无处不在,长期以来一直被认为是必不可少的
- VMware Workstation 11 或者 VMware Player 7安装MAC OS X 10.10 Yosemite
iwindyforest
vmwaremac os10.10workstationplayer
最近尝试了下VMware下安装MacOS 系统,
安装过程中发现网上可供参考的文章都是VMware Workstation 10以下, MacOS X 10.9以下的文章,
只能提供大概的思路, 但是实际安装起来由于版本问题, 走了不少弯路, 所以我尝试写以下总结, 希望能给有兴趣安装OSX的人提供一点帮助。
写在前面的话:
其实安装好后发现, 由于我的th
- 关于《基于模型驱动的B/S在线开发平台》源代码开源的疑虑?
deathwknight
JavaScriptjava框架
本人从学习Java开发到现在已有10年整,从一个要自学 java买成javascript的小菜鸟,成长为只会java和javascript语言的老菜鸟(个人邮箱:deathwknight@163.com)
一路走来,跌跌撞撞。用自己的三年多业余时间,瞎搞一个小东西(基于模型驱动的B/S在线开发平台,非MVC框架、非代码生成)。希望与大家一起分享,同时有许些疑虑,希望有人可以交流下
平台
- 如何把maven项目转成web项目
Kai_Ge
mavenMyEclipse
创建Web工程,使用eclipse ee创建maven web工程 1.右键项目,选择Project Facets,点击Convert to faceted from 2.更改Dynamic Web Module的Version为2.5.(3.0为Java7的,Tomcat6不支持). 如果提示错误,可能需要在Java Compiler设置Compiler compl
- 主管???
Array_06
工作
转载:http://www.blogjava.net/fastzch/archive/2010/11/25/339054.html
很久以前跟同事参加的培训,同事整理得很详细,必须得转!
前段时间,公司有组织中高阶主管及其培养干部进行了为期三天的管理训练培训。三天的课程下来,虽然内容较多,因对老师三天来的课程内容深有感触,故借着整理学习心得的机会,将三天来的培训课程做了一个
- python内置函数大全
2002wmj
python
最近一直在看python的document,打算在基础方面重点看一下python的keyword、Build-in Function、Build-in Constants、Build-in Types、Build-in Exception这四个方面,其实在看的时候发现整个《The Python Standard Library》章节都是很不错的,其中描述了很多不错的主题。先把Build-in Fu
- JSP页面通过JQUERY合并行
357029540
JavaScriptjquery
在写程序的过程中我们难免会遇到在页面上合并单元行的情况,如图所示
如果对于会的同学可能很简单,但是对没有思路的同学来说还是比较麻烦的,提供一下用JQUERY实现的参考代码
function mergeCell(){
var trs = $("#table tr");
&nb
- Java基础
冰天百华
java基础
学习函数式编程
package base;
import java.text.DecimalFormat;
public class Main {
public static void main(String[] args) {
// Integer a = 4;
// Double aa = (double)a / 100000;
// Decimal
- unix时间戳相互转换
adminjun
转换unix时间戳
如何在不同编程语言中获取现在的Unix时间戳(Unix timestamp)? Java time JavaScript Math.round(new Date().getTime()/1000)
getTime()返回数值的单位是毫秒 Microsoft .NET / C# epoch = (DateTime.Now.ToUniversalTime().Ticks - 62135
- 作为一个合格程序员该做的事
aijuans
程序员
作为一个合格程序员每天该做的事 1、总结自己一天任务的完成情况 最好的方式是写工作日志,把自己今天完成了什么事情,遇见了什么问题都记录下来,日后翻看好处多多
2、考虑自己明天应该做的主要工作 把明天要做的事情列出来,并按照优先级排列,第二天应该把自己效率最高的时间分配给最重要的工作
3、考虑自己一天工作中失误的地方,并想出避免下一次再犯的方法 出错不要紧,最重
- 由html5视频播放引发的总结
ayaoxinchao
html5视频video
前言
项目中存在视频播放的功能,前期设计是以flash播放器播放视频的。但是现在由于需要兼容苹果的设备,必须采用html5的方式来播放视频。我就出于兴趣对html5播放视频做了简单的了解,不了解不知道,水真是很深。本文所记录的知识一些浅尝辄止的知识,说起来很惭愧。
视频结构
本该直接介绍html5的<video>的,但鉴于本人对视频
- 解决httpclient访问自签名https报javax.net.ssl.SSLHandshakeException: sun.security.validat
bewithme
httpclient
如果你构建了一个https协议的站点,而此站点的安全证书并不是合法的第三方证书颁发机构所签发,那么你用httpclient去访问此站点会报如下错误
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path bu
- Jedis连接池的入门级使用
bijian1013
redisredis数据库jedis
Jedis连接池操作步骤如下:
a.获取Jedis实例需要从JedisPool中获取;
b.用完Jedis实例需要返还给JedisPool;
c.如果Jedis在使用过程中出错,则也需要还给JedisPool;
packag
- 变与不变
bingyingao
不变变亲情永恒
变与不变
周末骑车转到了五年前租住的小区,曾经最爱吃的西北面馆、江西水饺、手工拉面早已不在,
各种店铺都换了好几茬,这些是变的。
三年前还很流行的一款手机在今天看起来已经落后的不像样子。
三年前还运行的好好的一家公司,今天也已经不复存在。
一座座高楼拔地而起,
- 【Scala十】Scala核心四:集合框架之List
bit1129
scala
Spark的RDD作为一个分布式不可变的数据集合,它提供的转换操作,很多是借鉴于Scala的集合框架提供的一些函数,因此,有必要对Scala的集合进行详细的了解
1. 泛型集合都是协变的,对于List而言,如果B是A的子类,那么List[B]也是List[A]的子类,即可以把List[B]的实例赋值给List[A]变量
2. 给变量赋值(注意val关键字,a,b
- Nested Functions in C
bookjovi
cclosure
Nested Functions 又称closure,属于functional language中的概念,一直以为C中是不支持closure的,现在看来我错了,不过C标准中是不支持的,而GCC支持。
既然GCC支持了closure,那么 lexical scoping自然也支持了,同时在C中label也是可以在nested functions中自由跳转的
- Java-Collections Framework学习与总结-WeakHashMap
BrokenDreams
Collections
总结这个类之前,首先看一下Java引用的相关知识。Java的引用分为四种:强引用、软引用、弱引用和虚引用。
强引用:就是常见的代码中的引用,如Object o = new Object();存在强引用的对象不会被垃圾收集
- 读《研磨设计模式》-代码笔记-解释器模式-Interpret
bylijinnan
java设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
package design.pattern;
/*
* 解释器(Interpreter)模式的意图是可以按照自己定义的组合规则集合来组合可执行对象
*
* 代码示例实现XML里面1.读取单个元素的值 2.读取单个属性的值
* 多
- After Effects操作&快捷键
cherishLC
After Effects
1、快捷键官方文档
中文版:https://helpx.adobe.com/cn/after-effects/using/keyboard-shortcuts-reference.html
英文版:https://helpx.adobe.com/after-effects/using/keyboard-shortcuts-reference.html
2、常用快捷键
- Maven 常用命令
crabdave
maven
Maven 常用命令
mvn archetype:generate
mvn install
mvn clean
mvn clean complie
mvn clean test
mvn clean install
mvn clean package
mvn test
mvn package
mvn site
mvn dependency:res
- shell bad substitution
daizj
shell脚本
#!/bin/sh
/data/script/common/run_cmd.exp 192.168.13.168 "impala-shell -islave4 -q 'insert OVERWRITE table imeis.${tableName} select ${selectFields}, ds, fnv_hash(concat(cast(ds as string), im
- Java SE 第二讲(原生数据类型 Primitive Data Type)
dcj3sjt126com
java
Java SE 第二讲:
1. Windows: notepad, editplus, ultraedit, gvim
Linux: vi, vim, gedit
2. Java 中的数据类型分为两大类:
1)原生数据类型 (Primitive Data Type)
2)引用类型(对象类型) (R
- CGridView中实现批量删除
dcj3sjt126com
PHPyii
1,CGridView中的columns添加
array(
'selectableRows' => 2,
'footer' => '<button type="button" onclick="GetCheckbox();" style=&
- Java中泛型的各种使用
dyy_gusi
java泛型
Java中的泛型的使用:1.普通的泛型使用
在使用类的时候后面的<>中的类型就是我们确定的类型。
public class MyClass1<T> {//此处定义的泛型是T
private T var;
public T getVar() {
return var;
}
public void setVa
- Web开发技术十年发展历程
gcq511120594
Web浏览器数据挖掘
回顾web开发技术这十年发展历程:
Ajax
03年的时候我上六年级,那时候网吧刚在小县城的角落萌生。传奇,大话西游第一代网游一时风靡。我抱着试一试的心态给了网吧老板两块钱想申请个号玩玩,然后接下来的一个小时我一直在,注,册,账,号。
彼时网吧用的512k的带宽,注册的时候,填了一堆信息,提交,页面跳转,嘣,”您填写的信息有误,请重填”。然后跳转回注册页面,以此循环。我现在时常想,如果当时a
- openSession()与getCurrentSession()区别:
hetongfei
javaDAOHibernate
来自 http://blog.csdn.net/dy511/article/details/6166134
1.getCurrentSession创建的session会和绑定到当前线程,而openSession不会。
2. getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭,而openSession必须手动关闭。
这里getCurrentSession本地事务(本地
- 第一章 安装Nginx+Lua开发环境
jinnianshilongnian
nginxluaopenresty
首先我们选择使用OpenResty,其是由Nginx核心加很多第三方模块组成,其最大的亮点是默认集成了Lua开发环境,使得Nginx可以作为一个Web Server使用。借助于Nginx的事件驱动模型和非阻塞IO,可以实现高性能的Web应用程序。而且OpenResty提供了大量组件如Mysql、Redis、Memcached等等,使在Nginx上开发Web应用更方便更简单。目前在京东如实时价格、秒
- HSQLDB In-Process方式访问内存数据库
liyonghui160com
HSQLDB一大特色就是能够在内存中建立数据库,当然它也能将这些内存数据库保存到文件中以便实现真正的持久化。
先睹为快!
下面是一个In-Process方式访问内存数据库的代码示例:
下面代码需要引入hsqldb.jar包 (hsqldb-2.2.8)
import java.s
- Java线程的5个使用技巧
pda158
java数据结构
Java线程有哪些不太为人所知的技巧与用法? 萝卜白菜各有所爱。像我就喜欢Java。学无止境,这也是我喜欢它的一个原因。日常
工作中你所用到的工具,通常都有些你从来没有了解过的东西,比方说某个方法或者是一些有趣的用法。比如说线程。没错,就是线程。或者确切说是Thread这个类。当我们在构建高可扩展性系统的时候,通常会面临各种各样的并发编程的问题,不过我们现在所要讲的可能会略有不同。
- 开发资源大整合:编程语言篇——JavaScript(1)
shoothao
JavaScript
概述:本系列的资源整合来自于github中各个领域的大牛,来收藏你感兴趣的东西吧。
程序包管理器
管理javascript库并提供对这些库的快速使用与打包的服务。
Bower - 用于web的程序包管理。
component - 用于客户端的程序包管理,构建更好的web应用程序。
spm - 全新的静态的文件包管
- 避免使用终结函数
vahoa.ma
javajvmC++
终结函数(finalizer)通常是不可预测的,常常也是很危险的,一般情况下不是必要的。使用终结函数会导致不稳定的行为、更差的性能,以及带来移植性问题。不要把终结函数当做C++中的析构函数(destructors)的对应物。
我自己总结了一下这一条的综合性结论是这样的:
1)在涉及使用资源,使用完毕后要释放资源的情形下,首先要用一个显示的方