- mac中svn,git的配置与使用
白云影中仙
gitsvn
subversionbrew安装brewinstallsubversion#查看下载的软件brewlistsvn配置#1。创建资源库位置,自己设置目录svnadmincreate/usr/java/testJenk#2.设置权限,在你创建的目录的conf文件里(会自动生成)#svnserve.confanon-access=readanon-access=read#代表匿名访问的时候是只读的,若改
- JMeter安装及配置-Mac
testeru.top
性能jmetermacosjava
JMeter安装及配置-Mac本章要点前置条件命令行安装压缩包安装在Mac上安装对应的JMeter工具有两种方式:一种直接借助终端命令行brew进行安装;另外一种和Window电脑一样去JMeter官网下载压缩包安装。JMeter不需要安装,但是JMeter作为java应用前提是需要JDK环境的支持。无论是哪种安装方式,都需要有对应环境的前置条件,下面先来看一下对应的前置条件:前置条件Java安装
- JMeter在Mac下的安装使用
晓风残月Yuperman
系统安全软件工程jmeter
博主介绍:大家好,我是想成为Super的Yuperman,互联网宇宙厂经验,17年医疗健康行业的码拉松奔跑者,曾担任技术专家、架构师、研发总监负责和主导多个应用架构。技术范围:目前专注java体系,有多年java、golang、.Net、DDD、软件架构、redis、nginx、tomcat、mysql、oracle等经验业务范围:对传统业务应用技术转型,从数字医院到区域医疗,从院内业务系统到互联
- VMware ESXi 8.0U3c macOS Unlocker & OEM BIOS Dell (戴尔) 定制版
esxi
VMwareESXi8.0U3cmacOSUnlocker&OEMBIOSDell(戴尔)定制版ESXi8.0U3c标准版,Dell(戴尔)、HPE(慧与)、Lenovo(联想)、Inspur(浪潮)、Cisco(思科)、Hitachi(日立)、Fujitsu(富士通)、NEC(日电)、Huawei(华为)、xFusion(超聚变)OEM定制版请访问原文链接:https://sysin.org/b
- Mac 系统占用100G+解决办法(详细步骤)
X_Pqk
macoscocoaobjective-c
清空iOSDeviceSupport~/Library/Developer/Xcode/iOSDeviceLogs清空Products~/Library/Developer/Xcode/ProductsXcode12及之后版本还有3个占用内存的文件分别是:第一名:iOS.simruntime10.29 GB(iOS日常开发需要使用,勿删)第二名:watchOS.simruntime7.05 GB(
- A novice’s attempt at translating
LuminaryDream
英语笔记笔记
声明:英文原文来自扇贝英语app,中文翻译仅供参考Businessesarealreadybeingradicallytransformedbyartificialintelligence(AI).企业已经被人工智能(AI)彻底改变。Toolsnowexistthatofferinstantaneous,high-qualityresultsinimprovingcertainoperations
- Android的Manifest配置文件介绍,30分钟轻松入门flutter
笃孟夏雨
程序员androidfluttergitee
一、关于AndroidManifest.xmlAndroidManifest.xml是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities,services,等等),他们各自的实现类,各种能被处理的数据和启动位置。除了能声明程序中的Activities,ContentProviders,Services,和IntentReceivers
- ping命令第1版主流程的源码分析
我们知道,ping命令是通过ICMP(InternetControlMessageProtocol,互联网控制消息协议)来检测网络连通性和延迟的。执行ping命令的主机(源主机)会向目标主机发送ICMPEchoRequest报文,目标主机收到该报文后,应响应ICMPEchoReply报文。如果源主机能够收到目标主机返回的ICMPEchoReply报文,就说明目标主机可达。再根据当前时间戳与发送时间
- flutter引入高德地图_Flutter接入高德地图后运行报错
耀答案
flutter引入高德地图
1、flutter开发接入高德地图包后运行报下面错误信息fatalerror:'simple_permissions/simple_permissions-Swift.h'filenotfound运行在iPhone手机时出现以下错误信息:===BUILDTARGETurl_launcherOFPROJECTPodsWITHCONFIGURATIONDebug===/Users/bobo/flutt
- 使用Bazel编译报错ERROR: Unrecognized option: --experimental_repo_remote_exec解决方法
青年夏日科技
tensorflow人工智能python
ERROR:Unrecognizedoption:--experimental_repo_remote_exec一、问题:INFO:Optionsprovidedbytheclient:Inherited'common'options:--isatty=1--terminal_columns=80INFO:Readingrcoptionsfor'version'from/home/emadboct
- Chapter 3-18. Detecting Congestion in Fibre Channel Fabrics
mounter625
Linuxkernel网络linux服务器kerneltcp/ip
MTMUse-casesMTMisalightweightApp.ItisnotdesignedtotakeplaceofafullyfunctionalmonitoringplatformslikeCiscoNDFC/DCNM.Instead,itisdesignedforuserswholikecustomizingthemonitoringplatformsbasedontheproblem
- python实现get请求
admin``
Pythonpythonhttp
python——get请求importurllib.requesturl="http://www.csdn.net"response=urllib.request.urlopen(url)#打印请求的状态码print(response.getcode())msg=response.read()#打印请求的网页内容的长度print(len(msg))输出:2001148023Processfinis
- Flutter开发:iOS 14+系统的iPhone在debug模式下运行App报错的解决方法
三掌柜666
Flutter开发flutter
今天博主30岁生日,在这个特殊的时刻,一定要发一篇文章做纪念,人生能有几个30年,继续加油向前了。前言前段时间在做一个Flutter相关的App开发的时候,iPhone手机在连接Mac电脑,然后运行VSCode启动Flutter程序,然后可以正常安装到手机上,但是安装之后更新了手机的系统,而且手机系统更新到最新的iOS14.4,然后重新打开手机里面安装的Flutter程序,然后遇到了程序启动问题,
- 在树莓派安装arm gcc工具链
zili09
linuxarmgnulinux
InstallGCC需要将gnu工具在树莓派重新编译,具体流程见文档:ThebuildprocessofGNUtoolsforARMembeddedprocessors由于编译需要的时间较长,Github上已经有人将编译过的文件放出来,直接拷贝进/usr/即可,见安装步骤。安装好之后,只需要在厂商提供的工具链build_debug.sh中将ARMGCC_DIR的值改为/usr即可,之后运行脚本将调
- 2021-10-07
少年近视
matlab
Regionprops:用途是getthepropertiesofregion,即用来度量图像区域属性的函数。语法:STATS=regionprops(L,properties)描述:测量标注矩阵L中每一个标注区域的一系列属性。L中不同的正整数元素对应不同的区域,例如:L中等于整数1的元素对应区域1;L中等于整数2的元素对应区域2;以此类推。返回值STATS是一个长度为max(L(:))的结构数组
- RabbitMQ 架构分析
DREAM LINER SU
rabbitmq架构rubyjava分布式
文章目录前言一、RabbitMQ架构分析1、Broker2、Vhost3、Producer4、Messages5、Connections6、Channel7、Exchange7、Queue8、Consumer二、消息路由机制1、DirectExchange2、TopicExchange3、FanoutExchange4、HeadersExchange5、notice5.1、备用交换机(Altern
- fatal: unable to access ‘https://github
江_小_白
报错解决方案github
fatal:unabletoaccess‘https://github.com/protocolbuffers/protobuf.git/’:Failedtoconnecttogithub.comport443:Connectiontimedout下载项目的时候出现了这个问题,本以为是网络或者什么的问题,没想到是sudo,sudosudogitclone-bv3.6.1https://github
- 青少年编程与数学 02-008 Pyhon语言编程基础 03课题、环境准备
明月看潮生
编程与数学第02阶段青少年编程python编程与数学编程语言
青少年编程与数学02-008Pyhon语言编程基础03课题、环境准备一、开发环境二、PyCharm安装PyCharm配置PyCharm三、VSCode安装VSCode配置VSCode四、Python(解释器)Windows系统:macOS系统:Linux系统:五、PythonShell特点:如何打开PythonShell:使用示例:六、PythonIDLE特点如何使用IDLE局限性七、Jupyte
- node.js使用commander包构建命令行应用
crayon-shin-chan
surprisenode.jstypescriptjavascriptnodejs
仓库:https://github.com/tj/commander.js1.简介commander是node.js命令行接口的完整解决方案。2.安装npminstallcommander3.开始使用Commander导出一个全局对象,这对于快速程序很方便。为了简洁起见,在本自述文件的示例中使用了此方法。const{program}=require('commander');program.ver
- ESP32-S3模组上跑通esp32-camera(30)
蓝天居士
ESP32-S3ESP32-S3camerasensorOV5640
接前一篇文章:ESP32-S3模组上跑通esp32-camera(29)一、OV5640初始化2.相机初始化及图像传感器配置上一回解析完了camera_probe函数的第6段代码,本回继续往下解析该函数后续内容。为了便于理解和回顾,再次贴出camera_probe函数源码,在components/esp32-camera/driver/esp_camera.c中,如下:staticesp_err_
- 需要按ctrl+alt+delete才能进入用户解锁界面
m0_75101866
windows
Win+R:netplwizwinR:secpol.msc本地策略>安全选项交互式登录:无需按Ctrl+Alt+Del,然后设置为已禁用.reg文件WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon]"DisableCAD"=dword:00
- vue局域网内访问
Simorel
前端vue局域网访问
为了能在公司局域网内访问vue项目需要配置vue项目配置vue.config.jsmodule.exports={devServer:{/**为了在局域网内访问修改host*/host:'0.0.0.0',},};win10配置
- 本类方法调用,如何使事务依然生效;调用本类方法为什么要用AopContext.currentProxy()
CURRY30_1
mybatisjava
springAOP中只会切入代理类,从一个类调用另外另外一个类的时候,是会生成代理对象的。但是如果是本类方法的互相调用,那么就不会生成代理对象,随之方法配置的事务也会失效。那么我们可以使用两种方法来避免这种事务失效的问题1.((Service)AopContext.currentProxy()).B()来调用B方法,用这种方式,即使是本类方法的互相调用也能生成代理对象啦((Service)AopC
- 代理模式 - 代理模式的应用
w(゚Д゚)w吓洗宝宝了
C++从0到1代理模式c++
引言代理模式(ProxyPattern)是一种结构型设计模式,它允许你提供一个代理对象来控制对另一个对象的访问。代理对象通常会在客户端和目标对象之间起到中介的作用,从而可以在不改变目标对象的情况下,增加额外的功能或控制访问。本文将详细介绍如何在C++中实现代理模式,并通过示例代码帮助读者理解其应用场景。代理模式的基本概念代理模式的核心思想是通过引入一个代理对象来控制对目标对象的访问。代理对象通常会
- Commander 一款命令行自定义命令依赖
yqcoder
arcgisjavascript前端node.js
一、安装`commander`插件npminstallcommander二、基本用法1.创建一个简单的命令行程序创建一个JavaScript文件,例如`mycli.js`,并添加以下代码://引入`commander`模块并获取`program`对象。const{program}=require("commander");program .version("1.0.0")//设置命令行工具的版本
- springboot配置文件与注解
xiaobai_cpp
javaspringboot后端java
文章目录配置注解@SpringBootApplication:@Configuration@EnableAutoConfiguration:@ComponentScan:@Value:@ConfigurationProperties:@PropertySource:@Conditional及其派生注解(如@ConditionalOnClass、@ConditionalOnBean等):配置注解
- 【代码复现】ResUNet++进行语义分割(含图像切片预处理)
Cpdr
模型代码解读深度学习人工智能
文章目录参考资料1.preprocess.py1.1.参数声明1.1.1.执行命令的形参1.1.2.代码中的参数声明2.train.py2.1.参数声明2.2.main函数(不包括训练阶段)2.2.1参数说明2.2.2.读取数据部分2.2.3.创建loaders2.3.训练阶段2.4.validation阶段3.其他相关代码3.1.model.py3.1.1.res_unet_plus.py3.1
- el-tree,父节点的复选框不显示
timoingff
前端javascripthtml
对父节点的选择框禁用关键代码:computed:{defaultProps(){return{children:'children',label:'label',disabled:(data,node)=>{//isDir-判断是否为父节点returndata&&data.isDir}}}}//取消禁用样式/deep/[aria-disabled=true]>.el-tree-node__cont
- Vue2.0+ElementUI实现查询条件展开和收起功能组件
热忱1128
elementui前端javascript
一、需求el-form如果查询条件过多,影响页面的展示效果。查询条件表单是我们系统中非常常见的功能,我们需要把它封装成一个通用的组件,方便在系统开发中提升开发效率。除了在实现基本查询条件的功能上,还需要实现多条件的折叠和展开功能二、效果图三、代码示例封装查询条件表单组件SearchButton.vue查询重置{{word}}exportdefault{props:{showAll:{type:Bo
- C51基础知识
promising-w
单片机单片机嵌入式硬件
1.什么是C51?计算机平台——C语言单片机平台——C51计算机平台的CPU主频,内存和硬盘相较于单片机平台都是巨大的量级,另一方面,计算机平台的有不同的操作系统,如Windows,Linux,macOS等,单片机一般是没有操作系统的,(也会有一些简单的操作系统如:RTOS,但与计算机平台的系统相比,还是较为简单的)代码直接运行在芯片上,我们常称为裸机开发,计算机平台的开发叫做基于系统的开发。另外
- java工厂模式
3213213333332132
java抽象工厂
工厂模式有
1、工厂方法
2、抽象工厂方法。
下面我的实现是抽象工厂方法,
给所有具体的产品类定一个通用的接口。
package 工厂模式;
/**
* 航天飞行接口
*
* @Description
* @author FuJianyong
* 2015-7-14下午02:42:05
*/
public interface SpaceF
- nginx频率限制+python测试
ronin47
nginx 频率 python
部分内容参考:http://www.abc3210.com/2013/web_04/82.shtml
首先说一下遇到这个问题是因为网站被攻击,阿里云报警,想到要限制一下访问频率,而不是限制ip(限制ip的方案稍后给出)。nginx连接资源被吃空返回状态码是502,添加本方案限制后返回599,与正常状态码区别开。步骤如下:
- java线程和线程池的使用
dyy_gusi
ThreadPoolthreadRunnabletimer
java线程和线程池
一、创建多线程的方式
java多线程很常见,如何使用多线程,如何创建线程,java中有两种方式,第一种是让自己的类实现Runnable接口,第二种是让自己的类继承Thread类。其实Thread类自己也是实现了Runnable接口。具体使用实例如下:
1、通过实现Runnable接口方式 1 2
- Linux
171815164
linux
ubuntu kernel
http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.1.2-unstable/
安卓sdk代理
mirrors.neusoft.edu.cn 80
输入法和jdk
sudo apt-get install fcitx
su
- Tomcat JDBC Connection Pool
g21121
Connection
Tomcat7 抛弃了以往的DBCP 采用了新的Tomcat Jdbc Pool 作为数据库连接组件,事实上DBCP已经被Hibernate 所抛弃,因为他存在很多问题,诸如:更新缓慢,bug较多,编译问题,代码复杂等等。
Tomcat Jdbc P
- 敲代码的一点想法
永夜-极光
java随笔感想
入门学习java编程已经半年了,一路敲代码下来,现在也才1w+行代码量,也就菜鸟水准吧,但是在整个学习过程中,我一直在想,为什么很多培训老师,网上的文章都是要我们背一些代码?比如学习Arraylist的时候,教师就让我们先参考源代码写一遍,然
- jvm指令集
程序员是怎么炼成的
jvm 指令集
转自:http://blog.csdn.net/hudashi/article/details/7062675#comments
将值推送至栈顶时 const ldc push load指令
const系列
该系列命令主要负责把简单的数值类型送到栈顶。(从常量池或者局部变量push到栈顶时均使用)
0x02 &nbs
- Oracle字符集的查看查询和Oracle字符集的设置修改
aijuans
oracle
本文主要讨论以下几个部分:如何查看查询oracle字符集、 修改设置字符集以及常见的oracle utf8字符集和oracle exp 字符集问题。
一、什么是Oracle字符集
Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货
- png在Ie6下透明度处理方法
antonyup_2006
css浏览器FirebugIE
由于之前到深圳现场支撑上线,当时为了解决个控件下载,我机器上的IE8老报个错,不得以把ie8卸载掉,换个Ie6,问题解决了,今天出差回来,用ie6登入另一个正在开发的系统,遇到了Png图片的问题,当然升级到ie8(ie8自带的开发人员工具调试前端页面JS之类的还是比较方便的,和FireBug一样,呵呵),这个问题就解决了,但稍微做了下这个问题的处理。
我们知道PNG是图像文件存储格式,查询资
- 表查询常用命令高级查询方法(二)
百合不是茶
oracle分页查询分组查询联合查询
----------------------------------------------------分组查询 group by having --平均工资和最高工资 select avg(sal)平均工资,max(sal) from emp ; --每个部门的平均工资和最高工资
- uploadify3.1版本参数使用详解
bijian1013
JavaScriptuploadify3.1
使用:
绑定的界面元素<input id='gallery'type='file'/>$("#gallery").uploadify({设置参数,参数如下});
设置的属性:
id: jQuery(this).attr('id'),//绑定的input的ID
langFile: 'http://ww
- 精通Oracle10编程SQL(17)使用ORACLE系统包
bijian1013
oracle数据库plsql
/*
*使用ORACLE系统包
*/
--1.DBMS_OUTPUT
--ENABLE:用于激活过程PUT,PUT_LINE,NEW_LINE,GET_LINE和GET_LINES的调用
--语法:DBMS_OUTPUT.enable(buffer_size in integer default 20000);
--DISABLE:用于禁止对过程PUT,PUT_LINE,NEW
- 【JVM一】JVM垃圾回收日志
bit1129
垃圾回收
将JVM垃圾回收的日志记录下来,对于分析垃圾回收的运行状态,进而调整内存分配(年轻代,老年代,永久代的内存分配)等是很有意义的。JVM与垃圾回收日志相关的参数包括:
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
-Xloggc
-XX:+PrintGC
通
- Toast使用
白糖_
toast
Android中的Toast是一种简易的消息提示框,toast提示框不能被用户点击,toast会根据用户设置的显示时间后自动消失。
创建Toast
两个方法创建Toast
makeText(Context context, int resId, int duration)
参数:context是toast显示在
- angular.identity
boyitech
AngularJSAngularJS API
angular.identiy 描述: 返回它第一参数的函数. 此函数多用于函数是编程. 使用方法: angular.identity(value); 参数详解: Param Type Details value
*
to be returned. 返回值: 传入的value 实例代码:
<!DOCTYPE HTML>
- java-两整数相除,求循环节
bylijinnan
java
import java.util.ArrayList;
import java.util.List;
public class CircleDigitsInDivision {
/**
* 题目:求循环节,若整除则返回NULL,否则返回char*指向循环节。先写思路。函数原型:char*get_circle_digits(unsigned k,unsigned j)
- Java 日期 周 年
Chen.H
javaC++cC#
/**
* java日期操作(月末、周末等的日期操作)
*
* @author
*
*/
public class DateUtil {
/** */
/**
* 取得某天相加(减)後的那一天
*
* @param date
* @param num
*
- [高考与专业]欢迎广大高中毕业生加入自动控制与计算机应用专业
comsci
计算机
不知道现在的高校还设置这个宽口径专业没有,自动控制与计算机应用专业,我就是这个专业毕业的,这个专业的课程非常多,既要学习自动控制方面的课程,也要学习计算机专业的课程,对数学也要求比较高.....如果有这个专业,欢迎大家报考...毕业出来之后,就业的途径非常广.....
以后
- 分层查询(Hierarchical Queries)
daizj
oracle递归查询层次查询
Hierarchical Queries
If a table contains hierarchical data, then you can select rows in a hierarchical order using the hierarchical query clause:
hierarchical_query_clause::=
start with condi
- 数据迁移
daysinsun
数据迁移
最近公司在重构一个医疗系统,原来的系统是两个.Net系统,现需要重构到java中。数据库分别为SQL Server和Mysql,现需要将数据库统一为Hana数据库,发现了几个问题,但最后通过努力都解决了。
1、原本通过Hana的数据迁移工具把数据是可以迁移过去的,在MySQl里面的字段为TEXT类型的到Hana里面就存储不了了,最后不得不更改为clob。
2、在数据插入的时候有些字段特别长
- C语言学习二进制的表示示例
dcj3sjt126com
cbasic
进制的表示示例
# include <stdio.h>
int main(void)
{
int i = 0x32C;
printf("i = %d\n", i);
/*
printf的用法
%d表示以十进制输出
%x或%X表示以十六进制的输出
%o表示以八进制输出
*/
return 0;
}
- NsTimer 和 UITableViewCell 之间的控制
dcj3sjt126com
ios
情况是这样的:
一个UITableView, 每个Cell的内容是我自定义的 viewA viewA上面有很多的动画, 我需要添加NSTimer来做动画, 由于TableView的复用机制, 我添加的动画会不断开启, 没有停止, 动画会执行越来越多.
解决办法:
在配置cell的时候开始动画, 然后在cell结束显示的时候停止动画
查找cell结束显示的代理
- MySql中case when then 的使用
fanxiaolong
casewhenthenend
select "主键", "项目编号", "项目名称","项目创建时间", "项目状态","部门名称","创建人"
union
(select
pp.id as "主键",
pp.project_number as &
- Ehcache(01)——简介、基本操作
234390216
cacheehcache简介CacheManagercrud
Ehcache简介
目录
1 CacheManager
1.1 构造方法构建
1.2 静态方法构建
2 Cache
2.1&
- 最容易懂的javascript闭包学习入门
jackyrong
JavaScript
http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。
下面就是我的学习笔记,对于Javascript初学者应该是很有用的。
一、变量的作用域
要理解闭包,首先必须理解Javascript特殊
- 提升网站转化率的四步优化方案
php教程分享
数据结构PHP数据挖掘Google活动
网站开发完成后,我们在进行网站优化最关键的问题就是如何提高整体的转化率,这也是营销策略里最最重要的方面之一,并且也是网站综合运营实例的结果。文中分享了四大优化策略:调查、研究、优化、评估,这四大策略可以很好地帮助用户设计出高效的优化方案。
PHP开发的网站优化一个网站最关键和棘手的是,如何提高整体的转化率,这是任何营销策略里最重要的方面之一,而提升网站转化率是网站综合运营实力的结果。今天,我就分
- web开发里什么是HTML5的WebSocket?
naruto1990
Webhtml5浏览器socket
当前火起来的HTML5语言里面,很多学者们都还没有完全了解这语言的效果情况,我最喜欢的Web开发技术就是正迅速变得流行的 WebSocket API。WebSocket 提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术。这个新的API提供了一个方法,从客户端使用简单的语法有效地推动消息到服务器。让我们看一看6个HTML5教程介绍里 的 WebSocket API:它可用于客户端、服
- Socket初步编程——简单实现群聊
Everyday都不同
socket网络编程初步认识
初次接触到socket网络编程,也参考了网络上众前辈的文章。尝试自己也写了一下,记录下过程吧:
服务端:(接收客户端消息并把它们打印出来)
public class SocketServer {
private List<Socket> socketList = new ArrayList<Socket>();
public s
- 面试:Hashtable与HashMap的区别(结合线程)
toknowme
昨天去了某钱公司面试,面试过程中被问道
Hashtable与HashMap的区别?当时就是回答了一点,Hashtable是线程安全的,HashMap是线程不安全的,说白了,就是Hashtable是的同步的,HashMap不是同步的,需要额外的处理一下。
今天就动手写了一个例子,直接看代码吧
package com.learn.lesson001;
import java
- MVC设计模式的总结
xp9802
设计模式mvc框架IOC
随着Web应用的商业逻辑包含逐渐复杂的公式分析计算、决策支持等,使客户机越
来越不堪重负,因此将系统的商业分离出来。单独形成一部分,这样三层结构产生了。
其中‘层’是逻辑上的划分。
三层体系结构是将整个系统划分为如图2.1所示的结构[3]
(1)表现层(Presentation layer):包含表示代码、用户交互GUI、数据验证。
该层用于向客户端用户提供GUI交互,它允许用户