- ruoyi使用笔记
万变不离其宗_8
项目笔记代码参考笔记笔记java前端
1.限流处理@RateLimiter@PostMapping("/createOrder")@ApiOperation("创建充值订单")@RateLimiter(key=CacheConstants.REPEAT_SUBMIT_KEY,time=10,count=1,limitType=LimitType.IP)publicRcreateOrder(@RequestBodyFormform){/
- Redis+Lua脚本实现分布式服务的限流
henry_2016
Redis分布式redislua
背景限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务。开始打算使用GuavaRateLimiter来实现限流,但RateLimiter是局限于单机中使用,然后打算使用Redis+Lua脚本实现限流。1提供调用的接口@Slf4j@RestController@RequestMapping("/rateLimter")publiccl
- 13个可能未使用过的Python特性
千锋教育官方
Pythonpython开发语言
大多数程序员不知道的令人难以置信的功能列表。Python是顶级编程语言之一,它具有许多程序员从未使用过的许多隐藏功能。在这篇文章中,我将分享你可能从未使用过的13个Python特性。1.列表Stepping这是一个step参数,可以通过采取几个步骤来分割你的列表。此外,你可以使用step参数来反转整数。看看下面的代码示例:# 列表Steppingdata = [10, 20, 30, 40, 50
- springboot中get post put delete 请求区别详解
developerFBI
JAVASpringbootjava
Spring4.3中引进了{@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping}来帮助简化常用的HTTP方法的映射并更好地表达被注解方法的语义。1.@GetMapping:处理get请求,传统的RequestMapping来编写应该是@RequestMapping(value=“/get/{id}”,method=Re
- beego框架基础知识学习笔记
一弓虽
beego框架学习beego学习
网站beegogithub地址:https://github.com/beego/beegobeego中文学习文档:http://beego.gocn.vip/beego/zh/developing/什么是beegobeego是一个快速开发go应用的HTTP框架他可以用来快速开发API、Web及后端服务等各种应用bee工具什么是beebee工具是一个为了协助快速开发beego项目而创建的项目,通过
- 164Elasticsearch 基础入门--elasticsearch之mapping
Jachin111
实验原理elasticsearchmapping简介Mapping对应数据库里的表定义,我们都知道数据库表有各种字段每种字段使用场景是不一样,mapping中字段也类似数据库字段,定义形式不同搜索场景也不同,mapping还有一些其他的含义,mapping不仅告诉ES一个field中是什么类型的值,它还告诉ES如何索引数据以及数据是否能被搜索到,Mapping是对于index上每种type的定义。
- Floodlight开发者文档之MACTracker
造夢先森
SDNfloodlight篇floodlightSDN
概述Floodlight内部定义报文格式的代码位于net.floodlightcontroller.packet,其中定义的报文类型有ARP,BPDU,BSN,BSNPROBE,DHCP,Ethernet,ICMP,IPv4,LLC,LLDP,TCP,UDP。其中定义了一个名为IPacket的接口,该接口结构如图:包内还定义了一个实现了IPacket接口的抽象类BasePacket,BasePac
- Pont神坑 ,添加swagger @ApiParam后无法导出参数
applebomb
javaspringmvcponttypescripptswagger
Pont是一个很好的前后端一体化工具,能够帮助自动生成API代码。今天正在整Pont的时候,发现个别API参数在pont里无法导出,经过反复的对比发现有一个神坑,很容易踩中。例如下面这个PostMapping,很习惯的,给它添加了@ApiParam参数。@PostMapping("testPost")@ApiOperation(value="后台管理员登录aaaa")publicStringtes
- Spring Boot Demo with Docker
亨利何
1.Springstarter启动一个web项目基本操作可参考:感谢这个链接Note:Controller&Mapping类似于Route2.Springmavenpackage生成可执行jar包mavenpackage报错:相比于jdk你是不是运行在jre上?需要mavenpom.xml配置compile和jdk相匹配org.apache.maven.pluginsmaven-compiler-
- Java后端响应出来的图片流在HTML中显示
Acmen-zym
JavajavaScriptjavajs
varlogoName=$("#materPicLogo").val();if(logoName==""){layer.msg("当前没有选择设置主图LOGO");returnfalse;}varimg='''';/***返回一个图片流到前端显示**@paramlogoName*@parammap*@paramresponse*@throwsIOException*/@RequestMapping
- Linux——使用Keepalived实现DHCP服务的高可用
一坨小橙子ovo
linux运维服务器
前言Keepalived是一个用于实现高可用性的开源工具,主要用于实现基于VRRP协议的负载均衡和故障转移功能。它可以通过检测节点的健康状况,并自动切换到备份节点来确保服务的高可用性。Keepalived支持多种检测方式,如ping、TCP连接等,并可以根据需要配置多个检测脚本。当某个节点状态异常时,Keepalived会自动执行预定义的操作,如启动或停止服务,以确保服务的连续性和可用性。在实现高
- SinoDB V16.8 版本新特性
Sinoregal
SinoDB数据库国产数据库
1、Oracle兼容兼容withas语法兼容insertall/first语法兼容(+)形式的左外连接和右外连接语法兼容ROLLUP/CUBE/GROUPINGSETS语法兼容createorreplaceview/trigger/procedure/function/index语法兼容renameprocedure/function语法2、新增功能条件索引(ConditionalIndex)新增
- Dropping Balls(UVA 679)
Fool256353
算法数据结构c++
网址如下:DroppingBalls-UVA679-VirtualJudge(vjudge.net)(第三方网站)二叉树别说了,我只会模拟,最后用时530ms结果算法书给出了一个优化的解法:因为小球要么往左,要么往右,根据到这个点有几个小球可以推断出当前点的状态,根据要求的第几个小球可以推断在这个点有多少个球往左走了,多少个球往右走了这样可以根据I直接推断出第I个的动向,配合D直接算出答案用时20
- -[AwesomeProjectTests testRendersWelcomeScreen]
架构师的一小步
"_RCTSetLogFunction",referencedfrom:-[AwesomeProjectTeststestRendersWelcomeScreen]inAwesomeProjectTests.o运行报错---->解决方法:在BuildSetting->Linking->DeadCodeStripping中设置为No就可以了。
- Redis入门--头歌实验初始redis
烟雨平生9527
Redis入门redis数据库缓存
一、Redis中的数据结构任务描述本关任务:启动Redis客户端并创建一些值。相关知识为了完成本关任务,你需要掌握:1.Redis简介,2.快速安装Redis与Python,3.Redis数据结构简介。Redis简介Redis是一个速度非常快的非关系型数据库(non-relationaldatabase),它可以存储键(key)和五种不同类型的值(value)之间的映射(mapping),可基于内
- Database Modeling with Object Role Modeling
envykok
初级DBAobjectdatabaseconstraintstypesdropdownvisio
http://dotnet.sys-con.com/node/38984Itisnosecretthatpropermodelingwhendevelopingcomplex,multitieredapplicationsisvitaltothesuccessofaproject.Countlessstudiesinvestigatingthepoorsuccessrateofenterprise
- 阿里云k8s内OSS报错UnKnownHost。
南宫文凯
kubernetes阿里云docker
这个问题就是链接不上oss属于网络问题:1.排查服务器在服务器(ecs)上直接pingoss地址看是否能够通。不通就要修改dns和hosts(这个不说,自己网上查)2.排查容器进去ping一下你的容器是否能访问到oss//oss的地址这个要是不通的话就要修改k8s的配置文件(如果显示没有ping这个语法)就要在打docker包的时候加进去。(加到dockerFile里)RUNapt-getupda
- dubbo全局异常处理_dubbo和spring mvc全局异常处理器实现
丹丹在这里
dubbo全局异常处理
springmvc的全局异常处理器@ExceptionHandler当它在一个controller内部声明时,它将被用于那个controller(或它的子类)的@RequestMapping方法抛出的异常.你也可以在@ControllerAdvice类里面声明@ExceptionHandler方法,它将会处理很多controller的@RequestMapping方法抛出的异常.我的例子就是写一个
- 【Linux】CentOS网络故障排查大揭秘: 实战攻略解读
还在路上的秃头
Linuxphp开发语言笔记面试运维linux服务器
个人博客:个人主页个人专栏:Linux⛳️功不唐捐,玉汝于成目录前言正文检查网络连接状态:检查网络配置:重启网络服务:检查防火墙设置:查看日志文件:硬件检查:使用网络诊断工具:更新系统和驱动程序:结语我的其他博客前言在管理CentOS服务器时,网络故障是一项常见但又令人头疼的问题。无论您是初学者还是经验丰富的管理员,都可能会遇到网络连接中断、DNS解析失败或者其他网络相关的故障。本文旨在提供一份详
- Spring MVC 简单文件上传
Bridge Fish
Springspringmvcjava
1.添加依赖commons-fileuploadcommons-fileupload1.3.12.配置文件上传解析器3.测试编写controller@Controller@RequestMapping("/account")publicclassAccountController{@RequestMapping(path="/upload")publicStringupload(HttpServl
- HertzBeat赫兹节拍 v1.0.beta.6 发布,Linux监控来啦
TanCloud探云
HertzBeat赫兹跳动是由Dromara孵化,TanCloud开源的一个支持网站,API,PING,端口,数据库,操作系统,全站等监控类型,支持阈值告警,告警通知(邮箱,webhook,钉钉,企业微信,飞书机器人),拥有易用友好的可视化操作界面的开源监控告警项目。官网:hertzbeat.com|tancloud.cn此升级版本包含了很多同学需要的Linux操作系统监控支持,支持其CPU,内存
- Linux基础命令的学习总结
Gnevergiveup
linux
Linux基础命令vmware的三种网络模式桥接模式虚拟机占用一个独立的ip,通过虚拟交换机,直接使用物理网卡上网NAT模式使用主机ip,通过NAT设备上网仅主机模式无法上网,与其他主机隔绝配置静态ip配置成功的标志虚拟机可以上网虚拟机与主机可以相互ping通如何配置静态ip查看物理机ipipconfig-all有线上网以太网适配器无线上网无线局域网适配器WLAN100.67.14.155配置虚拟
- 同一wifi下电脑与手机无法ping通,简单解决
看见我书了吗
网络
同一wifi下电脑与手机无法ping通,听说有一些路由器是这样的,可以设置:登陆路由管理界面,把‘开启AP隔离’前面的√去掉。也可以:电脑连接wifi后再在电脑上开个热点,把网络共享出去,手机连接热点后就可以相互ping通了,而且都能上网。舒服~~
- 黑马点评-发布探店笔记
洒水水儿
黑马点评项目javaredis
探店笔记探店笔记类似点评网站的评价,往往是图文结合。对应的表有两个:tb_blog:探店笔记表,包含笔记中的标题、文字、图片等tb_blog_comments:其他用户对探店笔记的评价流程如下:上传接口:@Slf4j@RestController@RequestMapping("upload")publicclassUploadController{@PostMapping("blog")publ
- 设计模式-builder模式
代码匠心印记
设计模式设计模式建造者模式java
builder模式使用背景&使用场景重叠构造器模式(TelescopingConstructorPattern):特点:通过在构造器中传递不同数量的参数,从而实现构建不同属性组合的对象。优点:简单直观,适用于属性较少的情况。缺点:随着属性增加,构造器的参数组合呈指数级增长,难以维护和理解。publicclassProduct{privateStringproperty1;privateintpro
- LINUX内核打开IPV4分片支援。
liulilittle
IPExtensionlinux服务器数据库
在某些LINUX系统上面IP分片是被禁用的,通常我们都不需要IPV4分片的支持,但是有些程序必须强制打开IP分片,因为它们不考虑自己分片的问题,常见于UDP、大包ICMP/PING测试。打开终端窗口。使用以下命令查看当前系统上IPv4分片支持的状态:sysctlnet.ipv4.ip_no_pmtu_disc如果返回结果为net.ipv4.ip_no_pmtu_disc=0,表示IPv4分片支持已
- websocket 通用类封装和使用
桃根仙
websocket网络协议网络
websocket工具类封装exportdefaultclassSocketService{staticinstance=null;staticgetInstance(){if(!this.instance){this.instance=newSocketService();}}wx=null;callBackMapping={};connected=false;sendRetryCount=0;
- 华为交换机MAC地址漂移配置实验
Ang.sut倾城♛ ♛
华为HCIP交换机部分交换机网络经验分享安全
一、实验拓扑图:二、实验要求:1、根据图示配置VLAN信息,E0/0/3为TRUNK端口,放行所有VLAN。2、在S2上配置VLAN10的MAC漂移检测,将产生漂移的MAC地址阻塞,阻塞30秒,允许重复2次。3、在S2上配置VLAN111的MAC漂移检测,将产生MAC地址漂移的端口阻塞,阻塞30秒,允许重复2次。4、从PC1上分别PINGPC2、PC9,查看S1、S2的MAC地址表,截图。5、从P
- AI推介-大语言模型LLMs论文速览(arXiv方向):2024.02.25-2024.03.01
小小帅AIGC
LLMs论文时报人工智能语言模型自然语言处理LLM大语言模型深度学习论文推送
论文目录~1.ArithmeticControlofLLMsforDiverseUserPreferences:DirectionalPreferenceAlignmentwithMulti-ObjectiveRewards2.KeepingLLMsAlignedAfterFine-tuning:TheCrucialRoleofPromptTemplates3.Meta-TaskPrompting
- easyExcel导出多sheet表格,最简单快捷写法
R-sz
笔记
/***导出*/@PostMapping("/export")@ApiOperationSupport(order=10)@ApiOperation(value="导出",notes="传入ids")publicvoidexport(HttpServletResponseresponse)throwsIOException{ArrayListbatchExcelList=newArrayListf
- 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交互,它允许用户