- 解决nginx无法显示图片的问题
刘晓倩
在nginx配置文件里加上这句location~.*\.(jpg|jepg|gif|css|png|ico|html)?${root/Users/liuxq/Sites;expires30d;break;}重新启动后,就ok啦。
- Linux之MySQL安装篇
2401_83150173
linuxmysql运维
1.确保Yum环境是否能正常使用使用yum环境进行软件的安装yum-yinstallmysql-servermysql2.确保软件包已正常完成安装3.设置防火墙和selinux配置##关闭防火墙systemctlstopfirewalld##修该selinux配置vim/etc/selinux/config将seliux=enforcing修改为selinux=disable重启机器reboot4
- 2020-10-22 Android 简单后端服务器的搭建方法
Donald Linux
Android
Android简单后端服务器的搭建方法一、后端服务器搭建,需要用到jsp+java+tomcat。1、安装myeclipse,不细说,自己下载安装,里面包含服务器apache-tomcat。2、testServlet.java代码packagecom.liuxiang;importjava.io.IOException;importjava.io.PrintWriter;importjavax.s
- 21. Ubuntu 交叉编译工具链安装
lljss2020
Linux
交叉编译器安装ARM裸机、Uboot移植、Linux移植这些都需要在Ubuntu下进行编译,编译就需要编译器,我们在第三章“LinuxC编程入门”里面已经讲解了如何在Liux进行C语言开发,里面使用GCC编译器进行代码编译,但是Ubuntu自带的gcc编译器是针对X86架构的!而我们现在要编译的是ARM架构的代码,所以我们需要一个在X86架构的PC上运行,可以编译ARM架构代码的GCC编译器,这个
- Docker容器启动时运行shell脚本
安替-AnTi
Dockerdocker容器shell定时
文章目录需求docker开机运行docker容器开机运行docker容器启动时运行脚本执行多个脚本docker容器进入时启动脚本docker容器启动后退出参考文献需求来源于部署在liux上的Docker服务如何自动运行,而不是手动运行,因为输入数据是变化的,这里根据的是如果存在输入数据,被Docker服务监听到,则自动运行Docker服务中的代码。docker开机运行对于Ubuntu18.04以上
- 生信|通过manifest文件批量构建软链接
王诗翔
从GDC下载的数据都被放在UUID目录下,该目录名非常乱,为了有效的读取文件,可以采用软链接的形式。命令:tail-n+2/public/home/liuxs/biodata/gdc/wes/gdc_manifest.2018-10-17.txt|\head-n5|\awk'BEGIN{OFS="\t";}{info=$2;gsub(/\.bam/,"",info);system("ln-s/pu
- Java学习第六节之包机制和JavaDoc生成文档
新手小刘学Java
java学习开发语言
包机制JavaDocJavaDoc代码展示packagecom.base;/***@authorLiuxin*@version1.0*@since1.8*/publicclassDoc{Stringname;/***@authorLiuxin*@paramname*@return*@throwsException*/publicStringtest(Stringname)throwsExcepti
- c语言寒假作业答案,寒假作业的答案
weixin_39717121
c语言寒假作业答案
作为六年级的学生英语一定不能放纵学习,下面是出国留学网为大家整理的:六年级寒假作业的答案英语,仅供参考,欢迎阅读!更多相关内容请继续关注出国留学网liuxue86.com六年级寒假作业的答案英语P1-2I.1.B,have2.B,watching3.C,in4.A,She’sII.1-5BABCC6-10ABBACIII.Kerry’s,years,England,teaches,numberIV
- 【驱动】块设备驱动(四)-块设备驱动层
嵌入式与Linux那些事
#块设备驱动linux嵌入式硬件c语言嵌入式
前言块设备驱动程序是Liux块子系统中的最底层组件。它们从IO调度程序中获得请求,然后按要求处理这些请求。一个块设备驱动程序可能处理几个块设备。例如,IDE设备驱动程序可以处理几个IDE磁盘,其中的每个都是一个单独的块设备。而且,每个磁盘通常是被分区的,每个分区又可以被看作是一个逻辑块设备。核心数据结构block_deviceblock_device结构代表了内核中的一个块设备。它可以表示整个磁盘
- C++随机函数rand()和srand()
ClimberCoding
C/C++c++
转自:https://blog.csdn.net/candyliuxj/article/details/4396666一、rand()函数名:rand功能:随机数发生器用法:intrand(void);所在头文件:stdlib.h函数说明:rand()的内部实现是用线性同余法做的,它不是真的随机数,因其周期特别长,故在一定的范围里可看成是随机的。rand()返回一随机数值的范围在0至RAND_MA
- C# DataGridView操作小结(2.datagridview列头添加复选框实现全选)
s01896
C#c#开发语言后端
C#DataGridView操作小结(2.datagridview列头添加复选框实现全选)_HsuanKeny的博客-CSDN博客模切MES中的分切作业中就是使用的上面的方法c#datagridview列头添加复选框实现全选_liuxufeiyang000的专栏-CSDN博客_datagridview复选框全选
- 用Hexo+Github搭建个人博客
听说你家有酒喝
在搭建过程中踩坑无数,写个博客记录一下最后实验成功的教程参考链接:https://www.cnblogs.com/liuxianan/p/build-blog-website-by-hexo-github.htmlhttps://www.jianshu.com/p/c7397489757c1.安装node.js下载链接下载好安装包之后一路next就行命令行测试nodejs.png2.安装git下载
- 集群任务提交及相关命令
wangyantao1991
~代表根目录/public/home/wangyantao/#任务提交命令qsub-lmem=1G,nodes=1:ppn=1*.sh(#*.sh代表脚本)ll#根目录下的文件less#查看脚本文件内容#vimstar建索引以下是脚本信息/public/home/liuxiaofeng/biosoft/STAR-master/bin/Linux_x86_64_static/STAR--runThr
- 加载预训练权重时不匹配
卡拉比丘流形
深度学习人工智能深度学习神经网络python
场景复现RethinkingtheLearningParadigmforDynamicFacialExpressionRecognition这篇论文时,加载已经训练好的.pt文件进行推理,发现准确率很低。利用下面两行代码加载预训练的权重:weights_dict=torch.load('/data2/liuxu/attribute/M3DFEL/outputs/DFEW-[10-29]-[14:2
- 花了一周整理的,这是价值10W的32个Python项目!
Python新视界
今天为大家整理了32个Python爬虫项目。整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心。所有链接指向GitHub,祝大家玩得愉快~!QQSpiderQQ空间爬虫,包括日志、说说、个人信息等,一天可抓取400万条数据。https://github.com/LiuXingMing/QQSpiderWechatSogouhttps://github.com/Chyroc/Wecha
- 2018-11-29
骑长颈鹿的猪
D46[source]201811291)翻译下面的句子:姚明和刘翔让上海人感到骄傲。YaoMingandLiuXiangareasourceofprideforShanghaipeople.(参考翻译:YaoMingandLiuXiangareasourceofprideforShanghainesepeople.)2)结合自己的生活、学习、工作、兴趣等,想象在什么语境下会用到这个表达。先简要描
- MFC界面--利用CHtmlView和HTML制作新风格的界面(包括CView和Dialog)
HNFXS985
c++技术
一、文档视图形式,以一个视图cview(chtmlview)作为首页界面转自:http://liuxiang031130.blog.163.com/blog/static/1176665520111117914849/用过OutlookExpress的很多人都对其第一页的HTML界面感到新奇,很明显这是使用DHTML技术,加入了一些JavaScript的一个网页,但它能够和应用程序进行交互操作。其
- Misc一起学生物--【中国电信2023巅峰极客网络安全技能挑战赛】
jia9iniu
CTFMisc
题目下载https://download.csdn.net/download/rickliuxiao/88072843分享一首很坑的Misc题解wp。1-盲水印题目中给了2张图片,看上去一模一样,猜测是盲水印。脚本运行一下:>pythonbwmforpy3.pydecodetest3/1.pngtest3/2.pngtest3/out.png--alpha10.0image+image(encod
- 账号更名
坑儿里的小朕
✌劝学诗-唐•颜真卿三更灯火五更鸡,正是男儿读书时。黑发不知勤学早,白首方悔读书迟。⭐"小磊说书"正式更名为"坑儿里的小朕",谢谢关注!✨更多精彩,期待中... ✉
[email protected] ℹWechat:liuxiaoleione(添加时请注明'简友')版权声明® 版权所有,翻版必究! 本系列课程文本及表格均为原创作品,可以转载或学习,但要注明作者和出处,然文章
- 《生命觉者—梁冬对话刘丰》观后感
Piscine
我们站在最遥远的过去、最纷繁的当下和正在发生的未来,从上古天真到基因科学和人工智能,致力于探寻生命终极智慧。处于奇点时刻的我们,今日探讨的秘密必将成为十年之后的人类常识。我们先来看这个精彩视频吧,梁冬采访北大的刘丰教授——https://v.youku.com/v_show/id_XNDIxNzk0NTIwNA==.html?refer=seo_operation.liuxiao.liux_000
- UIView的生命周期
大刘
CreateedBy:大刘
[email protected]生命周期//Test@IBActionfuncadd(_sender:Any){print(self.redView)self.view.addSubview(self.redView)}@IBActionfuncremove(_sender:Any){self.redView.removeFromSuperview()}classR
- 一个springboot+layui开发模板
往事不堪回首..
javalayuispringbootjava
原版描述:SpringBoot+Layui后台管理系统,使用shiro安全框架后端:SpringBoot2.1.0tk.mybatis2.0.2Shiro1.3.1Lombok1.18.4前端:Layui2.4.5JQuery3.3.1渲染模板ThymeleafGitthub项目地址:https://github.com/Linliuxing/springboot-layui各框架的集成详解:sp
- liux.
极客诗人
多想3至5年后有朋友会这样问我,图片来自网络想做好想做广想学很多很多的东西所以还需要持之以恒收一收心我想我能做的更好.时间2018.7.410.23
- 2022-01-07 HDC2021技术分论坛:如何高效完成HarmonyOS分布式应用测试?
麻酱不会打麻将
如何高效完成HarmonyOS分布式应用测试?作者:liuxun,HarmonyOS测试架构师HarmonyOS是新一代的智能终端操作系统,给开发者提供了设备发现、设备连接、跨设备调用等丰富的分布式API。随着越来越多的开发者投入到HarmonyOS分布式应用开发,分布式应用如雨后春笋般涌现。然而分布式应用测试却面临质量差、效率低等挑战。HarmonyOS如何应对这些挑战?下面,让我们一探究竟!一
- mac提示“已损坏,无法打开。 您应该将它移到废纸篓“的终极解决方案
weixin_38934440
macosp2p网络协议
文章来源:mac提示“已损坏,无法打开。您应该将它移到废纸篓“的终极解决方案_liuxingyu的博客-CSDN博客_已损坏,无法打开。您应该将它移到废纸篓1、打开任何来源设置2、更改应用程序拓展属性3、考虑app本身问题1、打开任何来源设置打开系统偏好设置->安全性与隐私->通用->任何来源。在终端执行如下命令,打开后如图所示sudospctl--master-disable12、更改应用程序拓
- Linux(3):Linux 的文件权限与目录配置
飞大圣
操作系统linuxwindows运维
把具有相同的账户放入到一个组里面,这个组就是这两个账户的群组。在访问资源(操作系统中计算机的资源)时,可以让这个组里面的所有用户都具有访问权限。每个账号都可以有多个群组的支持。在我们Liux系统当中,默认的情况下,所有的系统上的账号与一般身份使用者,还有那个root的相关信息,都是记录在/etc/passwd这个文件内的。个人的密码则是记录在/etc/shadow这个文件下。此外,Linux所有的
- 搭建web网站服务器
没名zz
服务器运维
搭建web网站服务器一、准备工作1.关闭防火墙和seliux,安装所需软件,启动开机自启动2.做host域名映射二、创建www.openlab.com1.创建网页目录和内容2.编辑主配置文件3.重启服务并在Linux端测试三、创建教学资料子网站www.openlab.com/data1.创建网页目录和内容2.编辑主配置文件3.重启服务并在Linux端测试四、创建学生信息子网站www.openlab
- Elasticsearch 2.3.2 安装部署
love13135816
ElasticsearchElasticsearch
1.1Elasticsearch安装下载地址:https://www.elastic.co/downloads/elasticsearch解压压缩文件,进入bin文件夹中Win启动:双击elasticsearch.bat或cmd运行elasticsearch.batLiuxn启动:./elasticsearch&启动成功后,在浏览器中输入:http://localhost:9200/目录结构bin
- hadoop 虚拟机配置大数据环境 hadoop(二)
不努力就种地~
大数据大数据hadoop分布式
1.安装epel-release注:ExtraPackagesforEnterpriseLinux是为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和ScientificLiux。相当于是一个软件仓库,大多数rpm包在官方repository中是找不到的)命令:yuminstall-yepel-release2.更新yum源yumupdate3.安装ifconfig命令:yum
- Harbor私有仓库
碳烤小肥杨..
linux运维nginx容器docker
Harbor私有仓库文章目录Harbor私有仓库Harbor简介:Harbor提供了以下主要功能和特性:优缺点:环境说明:部署harbor1.永久关闭防火墙和seliux,配置阿里云源,添加映射关系2.安装docker,开启docker服务并添加加速器3.进入DockerCompose官网查看安装部署流程4.进入harbor官网,拉取harbor二进制包5.复制出一份harbor.yml文件,编辑
- 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交互,它允许用户