- 【Mycat1.6】缓存不生效问题处理
u013323965
其他缓存Mycatehcachesql
背景系统做读写分离,有大量读需求,基本没有实时获取数据业务需要,所以可以启用缓存来减缓数据库压力,传统使用mybatis的缓存需要大量侵入式声明,所以结合需求使用Mycat中间件来满足数据库结构mysql-master:主库,含数据表test.table1mysql-slave:从库,含数据表test.table1mycat:开启一写两读,默认使用ehcache缓存问题流程部署最新的Mycat1.
- Mycat实现读写分离,主备热切换
NingKangMing
mysql读写分离数据库容灾Mycat
实验环境:ubutuserver14MasterIP:172.16.34.212SlaveIP:172.16.34.34.156MycatserverIP:172.16.34.219不涉及过多理论,只有实现的过程。mysql读写分离和主备热切换,容灾,数据分片的实现手段目前比较流行的是Mycat。当然利用应用层代码去解决这些问题也是可以的。1,首先到Github下载Mycat1.6版本的安装包,下
- Mycat1.6事务问题
七星石
使用Mycat用于读写分离时,对数据库的事务不跨库,如果硬要打开事务没有关闭的话,容易产生系统事务紊乱等问题。通过源代码仔细分析,发现mycat并非透传sql语句。starttransaction的处理publicfinalclassStartHandler{privatestaticfinalbyte[]AC_OFF=newbyte[]{7,0,0,1,0,0,0,0,0,0,0};public
- mycat1.6 +mysql5.7数据库读写分离+主从复制
还珠妹妹
登录mycat命令:mysql-uroot-p123456-h192.168.57.98-P80661.主库只负责读,备库只负责写,一主一备当备库挂掉时,无法读取数据当主库挂掉时,无法写数据,但是还能读取数据第一种情况:当配置为balance=3;writetype=1;switch=0或者switch=1;当备库挂掉时,无法读取数据当主库挂掉时,无法写数据,但是还能读取数据第二种情况:当配置为b
- mycat扩容报错(后端节点为阿里RDS):ERROR 1227:Access denied; you need (at least one of) the SUPER privilege(s)
longzhizhui926
个人日志mycatmysqlLinuxRDS
本文是记一次mycat后端数据库为阿里云RDS的mycat扩容折腾过程:背景是,mycat后端连接的是阿里RDS,原先有2个节点,现在需要扩大到10个节点。这里简要介绍下扩容的官方步骤:(官方文档)6.1离线扩容缩容工具目前从mycat1.6开始支持。一、准备工作1、mycat所在环境安装mysql客户端程序2、mycat的lib目录下添加mysql的jdbc驱动包3、对扩容缩容的表所有节点数据进
- Mycat节点扩缩容及高可用集群方案
weixin_30763397
数据迁移与扩容实践:工具目前从mycat1.6,准备工作:1、mycat所在环境安装mysql客户端程序。2、mycat的lib目录下添加mysql的jdbc驱动包。3、对扩容缩容的表所有节点数据进行备份,以便迁移失败后的数据恢复。步骤:1、复制schema.xml、rule.xml并重命名为newSchema.xml、newRule.xml放于conf目录下。2、修改newSchema.xml和
- 【Mycat1.6之注解&多租户】
lijieshare
数据库-----MYSQLMycat中间件
一、Mycat之分片--节点--主机分片节点(dataNode)数据切分后,一个大表被分到不同的分片数据库上面,每个表分片所在的数据库就是分片节(dataNode)。节点主机(dataHost)数据切分后,每个分片节点(dataNode)不一定都会独占一台机器,同一机器上面可以有多个分片数据库,这样一个或多个分片节点(dataNode)所在的机器就是节点主机(dataHost),为了规避单节点主机
- 源码分析mycat1.6之网络篇---前端线程模型下篇(读写事件篇)
唯有坚持不懈
Mycat源码研究mycat
1、mycat前端读事件处理程序的入口处:NIOReactor的run方法:直接调用的方法为AbstractConnection的aysnRead方法。NIOSocketWR,IO处理的核心入口:@OverridepublicvoidasynRead()throwsIOException{ByteBuffertheBuffer=con.readBuffer;//@1if(theBuffer==nu
- Mycat1.6启动报NumberFormatException解决方案
lijieshare
数据库-----MYSQLMycat中间件
2016-11-1218:28:27,094[INFO][main]sysconfigparams:SystemConfig[processorBufferLocalPercent=100,frontSocketSoRcvbuf=1048576,frontSocketSoSndbuf=4194304,backSocketSoRcvbuf=4194304,backSocketSoSndbuf=104
- Mycat1.6的多分片结果集聚合源码分析(1)
K-Darker
中间件mysql数据库Mycat
1.配置文件的配置(shecma.xml)2.测试的语句select*fromproduct;+-----+------------+---------+---------------------+------------+|id|name|price|create_tm|company_id|+-----+------------+---------+---------------------+
- 使用MyCat实现MySQL读写分离
师太,老衲把持不住了
Happyjava2019-05-2007:00:00说明配置MyCat读写分离前需要先配置MySQL的主从复制,参考我上一篇的文章,已经做了比较详细地讲解了。环境centos7、MySQL5.7、mycat1.6配置MyCat账号密码和数据库名(server.xml)MyCat作为数据库的中间件,对于上层应用来说,他就是一个数据库。因此需要配置数据库的用户名,密码,数据库名,以及读写权限。下面是
- Mycat生产实践---数据迁移与扩容实践
wangshuang1631
Mycat
1离线扩容缩容工具目前从mycat1.6开始支持。一、准备工作1、mycat所在环境安装mysql客户端程序2、mycat的lib目录下添加mysql的jdbc驱动包3、对扩容缩容的表所有节点数据进行备份,以便迁移失败后的数据恢复二、扩容缩容步骤1、复制schema.xml、rule.xml并重命名为newSchema.xml、newRule.xml放于conf目录下2、修改newSchema.x
- Linux安装mycat1.6
Anyan-T
Linux运维
前言1.逻辑库,mycat中存在,对应用来说相当于mysql数据库,后端可能对应了多个物理数据库,逻辑库中不保存数据2.逻辑表,逻辑库中的表,对应用来说相当于mysql的数据表,后端可能对应多个物理数据库中的表,也不保存数据逻辑表分类1.分片表,进行了水平切分的表,具有相同表结构但存储在不同数据库中的表,所有分片表的集合才是一张完整的表2.非分片表,垂直切分的表,一个数据库中就保存了一张完整的表3
- mycat中间件--linux安装mycat1.6版本
aiwen2130
mycat使用Java开发,所以安装mycat之前必须先安装jdk安装mycat1、下载mycat为了方便,我已经下载下来。我选择的版本是1.6版本2、解压,安装在/home/xm6f/dev目录下cd/home/xm6f/devtar-zxvfMycat-server-1.6-RELEASE-20161028204710-linux.tar.gz3、创建用户并修改配置文件a、为了更好的进入myc
- centos7上安装mycat1.6(.tar.gz)
wudinaniya
mycat
1.下载mycat可以使用wget下载,也可以事先下载好,然后扔到centos7上。2.解压mycat到/usr/local/下[root@mycat~]#tar-xvfMycat-server-1.6-RELEASE-20161028204710-linux.tar.gz-C/usr/local/进入/usr/local/下,会看到解压后的文件夹mycat[root@mycat~]#cd/usr
- centos7安装mycat1.6
u014180504
CentosMYCATmysql
centos安装mycat参考:http://blog.csdn.net/yuyuntan/article/details/53160960前提是你已经安装好了jdk,安装jdk参考:http://blog.csdn.net/u014180504/article/details/72846613安装mysql参考:http://blog.csdn.net/u014180504/article/de
- CentOS7中安装MyCAT1.6并实现读写分离
intomylife
CentOS7
前言MyCAT是一个开源的分布式系统,是一个数据库中间件。可以用MyCAT来实现读写分离、主从切换以及分库分表等等强大的功能,但是有一点要清楚,MyCAT只是作为中间件的角色,来'拦截'用户发送的SQL,经过特定的分析(如分片分析,读写分析)之后,再将分析后的SQL发送给真正的物理数据库,最终再把结果返回给用户在这之前,先得配置物理数据库集群间的主从关系,并实现主从同步,这些操作都是在物理数据库中
- Mycat 实现读写分离
desirelll
一、环境介绍macOS(Mycat1.6)+centos(MySQL主从复制)实验拓扑mycat/\master--slave(主从复制)需求:已部署好MySQL主从复制二、Mycat配置schema.xmlselectuser()dataNode标签定义了MyCat中的数据节点,也就是我们通常说所的数据分片。一个dataNode标签就是一个独立的数据分片。dataHost:包含一个writeHo
- springboot集成mybatis和mycat
weixin_30945319
配置mycat一.配置java这个就不写了,网上随便百度一下就好了二.配置mycat安装:使用mycat1.6(jdk1.7以上)下载:官网下载,然后传到linux服务器解压:tar-zxvfxxxxxxxx,解压后就是一个mycat文件夹mv到/usr/local/mycat在/etc/profile配置下MYCAT_HOME,路径就是这个路劲#########配置java信息exportJAV
- mycat读写分离
小伙子_china
mycat
在docker环境下构建PXC集群,集群中有3个节点。3个节点分别映射到3307,3308,3309端口。安装mycat1.6后,这里读写分离配置文件为schema.xml,server.xml。(Mycat安装文件Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz)在mycat安装路径下执行命令:./bin/mycatstart,出现下面进程
- MyCat 1.6部署编译构建环境
john_zhong
MyCat1.6部署编译构建环境简单来说,编译(compile)是用javac编译器将.java源代码编译成.class中间码的动作;而构建(build)则是不止将源代码编译,还包括编译后执行开发者指定的测试、将所有.class打包成.jar包的动作,以及编译前和编译时所遇到的工具、包依赖的分析和下载问题。下面以Windows7+下面的软件,将MyCat1.6(Mycat-server)从源代码构
- SuSE上运行MyCat(一):安装
john_zhong
SuSE上运行MyCat(一):安装目标按照本文,将在2台服务器上安装Java8、MyCat1.6和ZooKeeper3.4,与第三台MySQL服务器构成一个简易的MyCat环境。在这套环境中,实际只有2种角色:MyCat节点和MySQL数据节点。本文只讲解MyCat节点上的安装过程,省略MySQL数据节点的安装配置。角色IP部署内容MyCat节点192.168.35.121Java8、MyCat
- Mycat1.6系列密码加密使用
junwen12221
mycatMycatMycat
java-cpMycat-server-xxx.jario.mycat.util.DecryptUtil0:user:password运行后得到加密后的密码其中0:user:password是加密字符串,有两种格式dataHost加密格式1:hostM1:root:1234561代表是dataHost加密hostM1是 mycat用户登录密码加密格式0:root:123
- Mycat1.6系列使用MySQL后端存储过程
junwen12221
Mycat
测试版本:mycat1.6.73dn4的配置localhost4是mysql数据源db1中的存储过程DELIMITER&& CREATEPROCEDUREp_test2(OUTp_idINT) BEGIN SETp_id=22; --将p_id赋值为22 END&&DELIMITER;JDBC使用存储过程的方法 connection.setAutoCommit(fa
- mycat分表以及细化表控制
我是小运维
mycat分表mycat细化表管理mycat的DML
mycat分表以及细化表控制schema.xmlschema部分加入可具体指定对应表的访问mycat1.6以上server.xml的user部分加入权限管理可细化表的权限
- Mycat1.6连接mysql三台主机安装部署
FreeStarsky
一、项目环境配置1.1、centos7虚拟机安装(准备三台虚拟机)分别为master、slave01、slave021.2、jdk安装配置(mycat需要最低安装jdk1.7版本)在master上安装,master作为主节点安装mycat注意:rpm与软件相关命令相当于window下的软件助手管理软件步骤:查看当前Linux系统是否已经安装java输入rpm-qa|grepjava卸载两个open
- 三、mycat实战之扩容(实操)
peigui.huang
mycatmycat
扩容是项目投入生产之后,经过一定的数据量的积累,达到一定的量级之后,需要执行的操作。扩容配置下载地址一、离线扩容(摘自官方)工具目前从mycat1.6开始支持。一、准备工作1、mycat所在环境安装mysql客户端程序。2、mycat的lib目录下添加mysql的jdbc驱动包。3、对扩容缩容的表所有节点数据进行备份,以便迁移失败后的数据恢复。二、扩容缩容步骤1、复制schema.xml、rule
- mycat1.6实现单库分表
kingmax54212008
mycat
mycat1.6实现单库分表1,下载mycat1.6(http://dl.mycat.io/1.6-RELEASE/“选择win版本第6个文件就是”)2,把server.xml,rule.xml,schema.xml,wrapper.conf替换成如下配置3,在mysql创建库名为testdb2然后运行文章下方提供的sql4,重启mycat5,用Navicat登入mycat执行3个INSERTIN
- Mycat实现读写分离,主备热切换
qq_16563637
mycat
实验环境:ubutuserver14MasterIP:172.16.34.212SlaveIP:172.16.34.34.156MycatserverIP:172.16.34.219不涉及过多理论,只有实现的过程。mysql读写分离和主备热切换,容灾,数据分片的实现手段目前比较流行的是Mycat。当然利用应用层代码去解决这些问题也是可以的。1,首先到Github下载Mycat1.6版本的安装包,下
- winodws系统mycat部署以及简单使用
Mars'Ares
mysqlmycat
一前期准备1、mycatwinodw安装包mycat1.6官方下载2、jdk环境(1.7以上)3、mysql环境(5.5以上)4、navicat客户端二mycat简介1、mycatmycat作为一个中间件,是数据库管理的优秀方案。详细介绍请看官网mycat官网2、mycat拓扑图3、mycat作用(1)、集中管理多个数据库连接(分布式解决方案)(2)、配置读写分离(3)、配置数据库分片(分表、分库
- 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交互,它允许用户