- Feign 解码异常处理:解决 No Suitable HttpMessageConverter 问题
码傻啦弟
软件开发java开发语言Feignspringboot
一、问题场景与错误解析在使用SpringCloudFeign进行微服务间通信时,常遇到以下典型错误:feign.codec.DecodeException:Couldnotextractresponse:nosuitableHttpMessageConverterfoundforresponsetype[classXxxResponse]andcontenttype[text/plain;char
- vue2+elementui使用compressorjs压缩上传的图片
肖肖肖丽珠
elementui前端javascript
首先是npminstallcompressorjs然后新建一个compressorjs.js的文件importCompressorfrom"compressorjs";//默认压缩配置constDEFAULT_COMPRESS_OPTIONS={quality:0.6,//默认压缩质量(0-1)maxWidth:1920,//最大宽度maxHeight:1080,//最大高度convertSize
- mediapipe流水线分析 三
江太翁
AndroidNDK人工智能mediapipeandroid
目标检测Graph一流水线上游输入处理1TfLiteConverterCalculator将输入的数据转换成tensorflowapi支持的TensorTfLiteTensor并初始化相关输入输出节点,该类的业务主要通过interpreterstd::unique_ptrtflite::Interpreterinterpreter_=nullptr;实现类完成数据在cpu/gpu上的推理1.1Tf
- 初始CNN(卷积神经网络)
超龄超能程序猿
机器学习cnn人工智能神经网络
卷积神经网络(ConvolutionalNeuralNetwork,简称CNN)作为深度学习的重要分支,在图像识别、目标检测、语义分割等领域大放异彩。无论是手机上的人脸识别解锁,还是自动驾驶汽车对道路和行人的识别,背后都离不开CNN的强大能力一、CNN诞生的背景与意义在CNN出现之前,传统的图像识别方法主要依赖人工提取特征,例如使用SIFT(尺度不变特征变换)、HOG(方向梯度直方图)等算法。这些
- 【TensorRT】TensorRT及加速原理
浩瀚之水_csdn
tensorrt
一、TensorRT架构概览TensorRT是NVIDIA推出的高性能推理优化器,专为GPU加速设计。其核心架构分为三层:前端解析器支持ONNX/UFF/Caffe等格式的模型解析执行格式验证和初步结构优化优化引擎核心优化层(层融合、精度校准、内存优化等)生成优化后的计算图(OptimizedGraph)运行时环境管理GPU内存分配执行优化后的计算图二、核心加速原理(8大关键技术)1.层融合(La
- Redis+Caffeine双层缓存策略对比与实践指南
浅沫云归
后端技术栈小结RedisCaffeine缓存
Redis+Caffeine双层缓存策略对比与实践指南在高并发场景下,缓存是提升系统性能和并发处理能力的关键手段。常见的缓存方案包括远程缓存(如Redis)和本地缓存(如Caffeine)。单层缓存各有优劣,结合两者优势的双层缓存架构已成为生产环境中的最佳实践。本文将基于SpringBoot,从方案对比分析出发,深入探讨Redis、本地Caffeine与双层缓存的实现与性能差异,并给出选型建议与实
- YOLO融合synergisticNet中的模块
今天炼丹了吗
YOLOv11与自研模型专栏YOLO
YOLOv11v10v8使用教程:YOLOv11入门到入土使用教程YOLOv11改进汇总贴:YOLOv11及自研模型更新汇总《HyperSINet:ASynergeticInteractionNetworkCombinedWithConvolutionandTransformerforHyperspectralImageClassification》一、模块介绍论文链接:https://ieeex
- Briefcase 项目常见问题解决方案
刘梓苹
Briefcase项目常见问题解决方案briefcaseToolstosupportconvertingaPythonprojectintoastandalonenativeapplication.项目地址:https://gitcode.com/gh_mirrors/br/briefcase1.项目基础介绍和主要编程语言Briefcase是一个由BeeWare项目开发的工具,旨在帮助开发者将Py
- python内积 卷积
AI算法网奇
python基础python开发语言
内积就是点乘,卷积先取反。importnumpyasnpbb=[1,2]cc=[2,3]aa=np.dot(bb,cc)print(aa)dd=np.convolve([2,1],cc,'valid')print(dd)dd=np.convolve(bb,cc,'same')print(dd)dd=np.convolve(bb,cc,'full')print(dd)结果:8[8][27][276]
- Flutter学习之Base64加密及解密
Pillar~
FlutterFlutter
1、导包:import'dart:convert';2、使用方法:/**Base64加密*/staticStringencodeBase64(Stringdata){varcontent=utf8.encode(data);vardigest=base64Encode(content);returndigest;}/**Base64解密*/staticStringdecodeBase64(Stri
- Pytorch实现DenseNet,腾讯T3大牛手把手教你
print("TorchvisionVersion:",torchvision.version)all=[‘DenseNet121’,‘DenseNet169’,‘DenseNet201’,‘DenseNet264’]defConv1(in_planes,places,stride=2):returnnn.Sequential(nn.Conv2d(in_channels=in_planes,out
- Pytorch实现DenseNet,先收藏了
classDenseNet(nn.Module):definit(self,init_channels=64,growth_rate=32,blocks=[6,12,24,16],num_classes=1000):super(DenseNet,self).init()bn_size=4drop_rate=0self.conv1=Conv1(in_planes=3,places=init_chan
- ConvNeXT:面向 2020 年代的卷积神经网络
摘要视觉识别的“咆哮二十年代”始于VisionTransformer(ViT)的引入,ViT很快取代了ConvNet,成为图像分类任务中的最新最强模型。然而,vanillaViT在应用于目标检测、语义分割等通用计算机视觉任务时面临困难。HierarchicalTransformer(如SwinTransformer)重新引入了若干ConvNet的先验知识,使Transformer成为实用的通用视觉
- 目标检测新纪元:DETR到Mamba实战解析
加油吧zkf
图像处理python分类人工智能目标检测
【实战分享】目标检测的“后DEⱯ”时代:DETR/DINO/RT-DETR及新型骨干网络探索(含示例代码)目标检测从YOLO、FasterR-CNN到Transformer结构的DETR,再到DINO、RT-DETR,近两年出现了许多新趋势:更高效的端到端结构、更少的手工设计(比如不再需要NMS)、以及新型轻量化骨干网络(比如Mamba、ConvNeXt、ViT等)被引入检测任务中。作为从事目标检
- 面向智能医疗的6G物联网和人工智能
Allen_Lyb
医疗高效编程研发物联网人工智能健康医疗
AbstractTheconvergenceof6Gwirelesstechnology,theInternetofThings(IoT),andArtificialIntelligence(AI)ispoisedtorevolutionizehealthcaredeliverybyenablingunprecedentedlevelsofconnectivity,intelligence,and
- Pytorch 之torch.nn初探 torch.nn.Module与线性--Linear layers
十有久诚
人工智能机器学习pytorch
初探torch.nn.Module神经网络可以使用torch.nn包构建。它提供了几乎所有与神经网络相关的功能,例如:线性图层nn.Linear,nn.Bilinear卷积层nn.Conv1d,nn.Conv2d,nn.Conv3d,nn.ConvTranspose2d非线性nn.Sigmoid,nn.Tanh,nn.ReLU,nn.LeakyReLU池化层nn.MaxPool1d,nn.Aver
- Python训练营-Day41
m0_72314023
python深度学习神经网络
#原始模型(2层卷积)classOriginalCNN(nn.Module):def__init__(self):super().__init__()self.conv1=nn.Conv2d(1,16,3)self.conv2=nn.Conv2d(16,32,3)self.fc=nn.Linear(32*5*5,10)defforward(self,x):x=torch.relu(self.con
- spring boot + caffeine使用
月光一族吖
springbootspringjava
一、Caffeine缓存背景Caffeine是一个高性能、可扩展的Java缓存库,由Google的BenManes开发。Caffeine基于ConcurrentHashMap设计,采用了近似LRU(LeastRecentlyUsed,最近最少使用)算法,以实现高速缓存淘汰策略。Caffeine广泛应用于各类Java项目中,作为一种提高数据读取性能的优秀解决方案。二、Caffeine缓存优点与缺点优
- idea常用插件
蓝天白云下遛狗
intellij-ideajavaide
idea常用插件PDFViewer(可以查看pdf文档在idea中)QuickFilePreview(快速查看文件)LongTimeToDateLongTimeToDate是一款IDEA插件,能够方便地将毫秒日期转换为年月日格式。用户可以通过调试器、编辑器或控制台使用此插件。安装插件可通过IDEA内置市场或从指定网址下载离线包安装。使用时,只需选中毫秒日期,右键选择’ConvertLongtoDa
- PPT到PDF转换器:一个功能强大的Python GUI应用(unzip,convert,replace,merge)
winfredzhang
pythonpowerpointpdf7zreplacemerge
在当今的数字时代,文档格式转换已成为一项常见需求。特别是将PowerPoint演示文稿转换为PDF格式,这不仅可以确保文档的一致性,还能方便分享和打印。今天,我们将深入探讨一个使用Python开发的强大GUI应用程序,它不仅可以将PPT转换为PDF,还具备文本替换、PDF处理和文件合并等多项功能。C:\pythoncode\new\unzipconvertpdfmerge.py应用概述这个应用程序
- python语言视频格式转换工具程序代码ZXQZQ
EYYLTV
python开发语言
importsubprocessimportosimporttkinterastkfromtkinterimportfiledialog,messagebox,ttkimportthreadingimportreclassVideoConverter:def__init__(self,ffmpeg_path):self.ffmpeg_path=ffmpeg_pathdefconvert_video
- C#生成DLL给C语言调用的例子
caimouse
C#入门到精通c#c语言
usingSystem;usingSystem.Runtime.InteropServices;namespaceCSharpDll{publicclassMathOperations{//使用DllExport特性导出函数,采用Cdecl调用约定[DllExport("Add",CallingConvention=CallingConvention.Cdecl)]publicstaticintA
- LogisticRegression(solver = ‘lbfgs‘)的ConvergenceWarning问题解决
Love And Program
废掉小脑阔的错误pythonscikit-learn
一个帅气的boy,你可以叫我LoveAndProgram⌨个人主页:LoveAndProgram的个人主页如果对你有帮助的话希望三连支持一下博主LogisticRegression的ConvergenceWarning问题解决,收敛警告,意义为未完全收敛问题解决方法问题在执行LogisticRegression(solver=‘lbfgs’)时出现如下错误:ConvergenceWarning:l
- 两级缓存 Caffeine + Redis 架构:原理、实现与实践
大只鹅
缓存redis架构
一、前言在高性能服务架构设计里,缓存是关键环节。常规做法是将热点数据存于Redis/MemCache等远程缓存,缓存未命中时再查数据库,以此提升访问速度、降低数据库压力。随着发展,架构有了改进,部分场景下单纯远程缓存不够,需结合本地缓存(如Guavacache、Caffeine),形成本地缓存(一级缓存)+远程缓存(二级缓存)的两级缓存架构,进一步提升程序响应与服务性能,其基础访问流程如下(暂不考
- Python脚本,音频格式转换 和 视频格式转换
一、音频格式转换完整代码frompydubimportAudioSegmentimportosdefconvert_audio(input_dir,output_dir,target_format):ifnotos.path.exists(output_dir):os.makedirs(output_dir)forfilenameinos.listdir(input_dir):iffilename
- day41
m0_62568655
python训练营python
#原始模型(2层卷积)classOriginalCNN(nn.Module):def__init__(self):super().__init__()self.conv1=nn.Conv2d(1,16,3)self.conv2=nn.Conv2d(16,32,3)self.fc=nn.Linear(32*5*5,10)defforward(self,x):x=torch.relu(self.con
- Android Telephony 网络状态中的 NAS 信息
Dic-
#AndroidTelephony#计算机网络网络通信Telephony自学笔记Android计算机网络移动网络非接入层
引言上层如何拿到NAS信息?那么首先要知道什么是NAS。领域知识术语表通信网络术语英文缩写英文全称中文含义NASNon-AccessStratum非接入层RRCRadioResourceControl无线资源控制层PDCPPacketDataConvergenceProtocol分组数据汇聚协议层RLCRadioLinkControl无线链路控制层MACMediumAccessControl媒体接
- GPT4.0带记忆API源码
沐晨API
php
以下为输出截图:需要在同路径中添加一个名为conversations的文件夹原本输出为英文,对接翻译接口沐晨API翻译:https://mcapi.muwl.xyz/api/fanyi2.php,可以自己改成别的,不过改了输出的格式不一样,代码也需要变动沐晨API:沐晨免费稳定API,沐晨收录站,欢迎前来申请代码json_encode($messages)]);//构建GET请求的查询字符串$ch
- 探索3D空间新维度:gltf-to-3d-tiles开源项目推荐
史琼鸽Power
探索3D空间新维度:gltf-to-3d-tiles开源项目推荐gltf-to-3d-tilesglTFto3dTilesConverter.ConvertglTFmodeltoGlb,b3dmor3dtilesformat.项目地址:https://gitcode.com/gh_mirrors/gl/gltf-to-3d-tiles在数字世界日益壮大的今天,高效地展示三维模型成为了技术领域的一大
- Rust 学习笔记:比较数值
UestcXiye
RustRust
Rust学习笔记:比较数值Rust学习笔记:比较数值整数类型浮点类型NANRust学习笔记:比较数值整数类型在Rust中,可以用以下运算符比较数值:>、=、i32。但要注意从范围大的类型转换成范围小的类型,编译不会报错,但结果可能不对。解决方法2:使用try_into()进行类型转换try_into()方法:导入std::convert::TryIntotrait。该方法返回Result类型。us
- 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交互,它允许用户