- 浏览: 1003267 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (529)
- 服务器 (8)
- jsp (1)
- java (6)
- AIX (1)
- solaris (3)
- linux学习 (53)
- javaScript (2)
- hibernate (1)
- 数据库 (74)
- sql语句 (8)
- oracle 学习 (75)
- oracle 案例 (42)
- oracle 管理 (42)
- Oracle RAC (27)
- oracle data guard (12)
- oracle 参数讲解 (14)
- Oracle 字符集 (8)
- oracle性能调优 (24)
- oracle备份与恢复 (12)
- oracle Tablespace (9)
- oracle性能诊断艺术 (1)
- oracle 11g学习 (5)
- oracle streams (1)
- oracle upgrade and downgrade (4)
- db2学习 (13)
- db2命令学习 (2)
- mysql (28)
- sql server (30)
- sql server 2008 (0)
- 工具 (10)
- 操作系统 (3)
- c++ (1)
- stock (1)
- 生活 (5)
- HADOOP (2)
最新评论
-
massjcy:
...
如何将ubuntu文件夹中文名改为英文 -
skypiea:
谢谢。。。
终于解决了。。。
Oracle 10.2.0.4(5)EM不能启动的解决方案(Patch 8350262) -
qwe_rt:
引用vi /etc/sysconfig/network 请问 ...
Linux操作系统下配置静态IP上网 -
liuqiang:
sudo killall -9 apache2
ps 和 kill 命令详解 -
dazuiba:
引用*绝杀 kill -9 PID 当使用此命令时,一定要通过 ...
ps 和 kill 命令详解
Oracle MTS的相关问题
一、什么是MTS
MTS = Multi-Threaded Server
MTS是ORACLE SERVER的一个可选的配置选择,是相对DEDICATE方式而言,它最大的优点是在以不用增加物理资源(内存)的前提下支持更多的并发的连接。
Joseph C.Johnson以餐馆给出一个MTS的形象的比喻
假设ORACLE是一家餐馆,当你走进一家餐馆时你感觉最舒服的服务方式就是有一个专门的waiter来为你服务,而不管餐馆中来了多少人,她只对你请求应答,这是DEDICTE的处理方式,也就是说每一个ORACLE客户端的连接都有一个专门的服务进程来为它服务。而大部的餐馆的服方式都不是一对一的,当你走进的时侯,你就被指定了一个waiter,她也可能为其它桌服着务,这对于餐馆来说是最有利的,因为他们可以服务更多的客人而不需要增加他们的员工。这样对你来说也可能是不错的,如果餐馆不是太忙,她服务的客人的请求都很简短且容易完成,你的感觉也好像自己拥有一个专门的waiter,waiter把你的ORDER转给厨师,然后把做好的菜拿给你,这就是MTS的处理方式,这些共享的waiters我们叫她们为Dispatchers,厨师我们则叫他们为Shared Server Processes。
假设ORACLE是一家餐馆,当你走进一家餐馆时你感觉最舒服的服务方式就是有一个专门的waiter来为你服务,而不管餐馆中来了多少人,她只对你请求应答,这是DEDICTE的处理方式,也就是说每一个ORACLE客户端的连接都有一个专门的服务进程来为它服务。而大部的餐馆的服方式都不是一对一的,当你走进的时侯,你就被指定了一个waiter,她也可能为其它桌服着务,这对于餐馆来说是最有利的,因为他们可以服务更多的客人而不需要增加他们的员工。这样对你来说也可能是不错的,如果餐馆不是太忙,她服务的客人的请求都很简短且容易完成,你的感觉也好像自己拥有一个专门的waiter,waiter把你的ORDER转给厨师,然后把做好的菜拿给你,这就是MTS的处理方式,这些共享的waiters我们叫她们为Dispatchers,厨师我们则叫他们为Shared Server Processes。
二、MTS架构
[metalink-Note:29038.1]
1. Oracle Multi-Threaded Server Architecture.
----------------------------------------------
+-----------+ user
+-----------+| processes
| ||
|APPLICATION||
| CODE ||
| |+
+-----------+
/|\
| CLIENT
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| SERVER
\|/
+----------------------------------+
+----------------------------------+|
| ||
| DISPATCHER PROCESSES ||
| |+
+----------------------------------+
| /|\
| |
| +-----------+ |
| +-----------+| shared |
| +-----------+|| server |
| | ORACLE ||+ processes |
| |SERVER CODE|+ |
| +-----------+ |
| /|\ /|\ | |
| | | | |
| | | | |
| | \|/ | |
+---------------|-----|-------|----------------|-------+
| \|/ | \|/ | |
| +-------------------+ +----------------------+ |
| | REQUEST | | RESPONSE QUEUES | |
| | QUEUES | +----------------------+ |
| +-------------------+ |
| SYSTEM GLOBAL AREA |
| |
+------------------------------------------------------+
Client Connections to MTS
~~~~~~~~~~~~~~~~~~~~~~~~~
A client process wanting to connect to an Oracle instance using MTS
should go through the following steps:
----------------------------------------------
+-----------+ user
+-----------+| processes
| ||
|APPLICATION||
| CODE ||
| |+
+-----------+
/|\
| CLIENT
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| SERVER
\|/
+----------------------------------+
+----------------------------------+|
| ||
| DISPATCHER PROCESSES ||
| |+
+----------------------------------+
| /|\
| |
| +-----------+ |
| +-----------+| shared |
| +-----------+|| server |
| | ORACLE ||+ processes |
| |SERVER CODE|+ |
| +-----------+ |
| /|\ /|\ | |
| | | | |
| | | | |
| | \|/ | |
+---------------|-----|-------|----------------|-------+
| \|/ | \|/ | |
| +-------------------+ +----------------------+ |
| | REQUEST | | RESPONSE QUEUES | |
| | QUEUES | +----------------------+ |
| +-------------------+ |
| SYSTEM GLOBAL AREA |
| |
+------------------------------------------------------+
Client Connections to MTS
~~~~~~~~~~~~~~~~~~~~~~~~~
A client process wanting to connect to an Oracle instance using MTS
should go through the following steps:
a) Call the listener
b) The listener tells it to call back on the address where
the dispatcher is listening (a REDIRECT)
c) The client calls the dispatcher and establishes a connection.
d) The dispatcher now has a CLIENT connection ESTABLISHED and
will also continue to listen for any new connections.
e) The client sends a SQL message to the dispatcher.
f) The dispatcher unwraps this message packet and places the
request onto a queue in the SGA (System Global Area).
This queue has NOTHING to do with SQL*Net. The SQL*Net
layer ends in the dispatcher.
g) A shared server will pick up the request from the SGA queue
and process it. When there is any result this is placed
on a separate queue in the SGA ready for the dispatcher.
h) The dispatcher picks up the response message from the SGA
and wraps this into a SQL*Net message. This is passed
back to the client.
b) The listener tells it to call back on the address where
the dispatcher is listening (a REDIRECT)
c) The client calls the dispatcher and establishes a connection.
d) The dispatcher now has a CLIENT connection ESTABLISHED and
will also continue to listen for any new connections.
e) The client sends a SQL message to the dispatcher.
f) The dispatcher unwraps this message packet and places the
request onto a queue in the SGA (System Global Area).
This queue has NOTHING to do with SQL*Net. The SQL*Net
layer ends in the dispatcher.
g) A shared server will pick up the request from the SGA queue
and process it. When there is any result this is placed
on a separate queue in the SGA ready for the dispatcher.
h) The dispatcher picks up the response message from the SGA
and wraps this into a SQL*Net message. This is passed
back to the client.
三、确定你的DB是否在使用MTS
[metalink-Note:1071305.6]
Solution Description:
=====================
Look at the "init.ora" parameter MTS_DISPATCHERS.
MTS_DISPATCHERS defines the number of dispatchers created when the instance
starts up. If this is set to zero, or is null (default value), then you are NOT
using MTS.
=====================
Look at the "init.ora" parameter MTS_DISPATCHERS.
MTS_DISPATCHERS defines the number of dispatchers created when the instance
starts up. If this is set to zero, or is null (default value), then you are NOT
using MTS.
If MTS_DISPATCHERS is greater than zero, then check these other "init.ora"
parameters for valid values:
parameters for valid values:
MTS_MAX_DISPATCHERS Maximum number of dispatchers
MTS_SERVERS Number of server processes created at startup
MTS_MAX_SERVERS Maximum number of shared server processes
MTS_SERVICE SID
MTS_LISTENER_ADDRESS Configuration of the listener
MTS_SERVERS Number of server processes created at startup
MTS_MAX_SERVERS Maximum number of shared server processes
MTS_SERVICE SID
MTS_LISTENER_ADDRESS Configuration of the listener
Solution Explanation:
=====================
These other "init.ora" parameters may have valid values, but if MTS_DISPATCHERS
is zero or null, MTS is not being used.
=====================
These other "init.ora" parameters may have valid values, but if MTS_DISPATCHERS
is zero or null, MTS is not being used.
四、MTS相关参数的含义
[metalink-Note:29038.1]
The main parameters required to start MTS are:
o MTS_SERVICE - This parameter establishes the name of the MTS service
that clients connect to, in order for the dispatchers to handle requests.
o MTS_DISPATCHERS - Dispatchers are detached processes that handle client
process requests and communicate them to server processes for execution.
that clients connect to, in order for the dispatchers to handle requests.
o MTS_DISPATCHERS - Dispatchers are detached processes that handle client
process requests and communicate them to server processes for execution.
This parameter defines the number of dispatchers to startup for
each protocol that is configured for MTS. For example,
mts_dispatchers = "ipc, 2"
each protocol that is configured for MTS. For example,
mts_dispatchers = "ipc, 2"
o MTS_SERVERS - This is the number of shared server processes that
start at instance startup time. Shared servers service the
client requests passed on to them by the dispatchers.
start at instance startup time. Shared servers service the
client requests passed on to them by the dispatchers.
o MTS_LISTENER_ADDRESS - This is the full address for dispatchers to listen
on, and is the same as the address configured in the TNS listener. The
address specification is protocol-specific. For example:
on, and is the same as the address configured in the TNS listener. The
address specification is protocol-specific. For example:
mts_listener_address = "(address=(protocol=ipc)(key=sw))"
五、使用MTS连接DB
先在主机命令行 $ lsnrctl services;
"D000" established:0 refused:0 current:1 max:972 state:ready
DISPATCHER <machine: db1, pid: 3950>
(ADDRESS=(PROTOCOL=tcp)(HOST=eagle1)(PORT=33166));
DISPATCHER <machine: db1, pid: 3950>
(ADDRESS=(PROTOCOL=tcp)(HOST=eagle1)(PORT=33166));
查看dispather的监听端口号——33166。(dispather进程名称一般是 ora_dNNN_SID,NNN in (000-999))
在client端的tnsname.ora中,注意:
TODB_MTS =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 33166))
)
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = dbname)
)
)
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 33166))
)
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = dbname)
)
)
这样可以解决ora-12520问题(当然这只是解决方法之一)
六、一问一答
Q:MTS一定比Delicated模式好吗?
A:不是。如果硬件好点,建议使用Delicated模式。biti语录:“我是能不用MTS就不用”
Q:MTS与Delicated模式可以相互转换吗?
A:可以。
MTS => Delicated
Reset the MTS Parameters in init.ora and reopen your DB.
Delicated => MTS
Added the MTS Parameters in init.ora and reopen your DB.
Q:MTS模式下可以用Delicated连进来吗?
A:可以。(SERVER = Delicated)即可。反之则不行。
Q:RAC环境一定得是MTS吗?
A:不是。
Q:JDBC thin 支持MTS吗?
A:目前不支持。
发表评论
-
数据库设计规范
2011-11-24 10:40 6840数据库设计(Database Desi ... -
Linux下用OCCI或OCI连接Oracle
2011-07-26 12:00 2869首先,去oracle官网下载C ... -
PowerDesigner快捷键
2011-03-19 00:10 1068一般快捷键F4 打开检查模型窗口,检查模型F5 如果图 ... -
oracle和sql server功能对比
2011-01-05 22:05 1774Oracle Database 10g对比SQL Server ... -
Parse CPU to Parse Elapsd%的理解
2010-11-28 18:37 6724Parse CPU to Parse Elapsd%是指sql ... -
DB2客户端连接服务端的方法(转载)
2010-07-14 22:40 885在DB2中从客户端访问服 ... -
四大数据库的比较(SQL Server、Oracle、Sybase和DB2)
2010-07-14 21:54 1482本篇引用于公司数据库 ... -
Oracle迁移到DB2常用转换
2010-07-01 13:12 1118因为项目需要,要将Oracle上的东西转移到DB2,于是收集整 ... -
输出object的DDL的方法
2010-06-23 01:07 1398最近一段时间,由于经常要通过ssh访问远程环境。所以图形工具使 ... -
oracle的license和正版使用问题
2010-06-08 01:08 19091, 正版Oracle 产品和盗版的区别 直奔主题,这是许多研 ... -
oracle opatch 工具的使用(oracle小补丁安装)(转)
2010-05-30 13:49 2215从9.2版开始,Oracle公司设计实现了个别补丁安装管理工具 ... -
mysql常用函数
2009-12-29 10:25 917一、数学函数ABS(x) ... -
SP2-0618和_SP2-0611错误处理
2009-12-27 23:48 1040AUTOTRACE是一项 SQL*Plus 功能,自动跟踪为 ... -
几分钟学会Oracle Audit
2009-12-03 15:49 21201、什么是审计 简单来讲,就是把对数据库的操作记录下来。不管 ... -
alter system switch logfile和alter system archive log current的区别
2009-12-03 12:19 1081alter system switch logfile 是强制 ... -
由HWM引出的drop,delete,truncate的异同点比较
2009-12-02 14:18 1213今天在做HWM时,说truncate表后HWM会降低,但是dr ... -
主流数据库的比较
2009-12-02 10:29 1257开发数据库应用,选择一个好的数据库是非常重要的。目前, 商品 ... -
10g: SYSAUX 里面都有些什么东西
2009-09-04 12:38 1786Isabella says:SYSAUX 暴涨有 ... -
ORACLE的PL/SQL一
2009-08-26 17:03 1117一、什么是PL/SQL? P ... -
Oracle中password file的作用及说明
2009-08-21 21:19 1013在数据库没有启动之前,数据库内建用户是无法通过数据库来验证身份 ...
相关推荐
毕设&课设&项目&实训- 【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。
Matlab研究室上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描视频QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
【内容概要】 本C++项目,集成OpenCV库与实例分割模型,实现了对图像中不同对象的精确分割。项目采用先进的实例分割算法,并以C++为核心开发语言,搭配Qt框架构建用户友好型图形界面。完成模型训练后,实现了模型的高效部署,用户可直接通过QT界面上传图片,以及选择模型地址,就可获取分割后的结果。 【适用人群】 适合C++开发者、CV工程师、机器学习研究者及对AI技术有浓厚兴趣的学生群体。 【使用场景】 广泛适用于工业检测、医学影像分析、农林业病虫害识别、智能监控系统及AR增强现实等领域。无论是学术研究中的数据预处理,还是企业级产品中的图像分析功能开发,该项目都能提供坚实的技术支撑。 【目标】 项目旨在通过实战演练,帮助开发者掌握从理论到实践的全过程:包括模型选择与优化、C++接口的OpenCV操作、Qt界面设计与交互逻辑实现,直至模型的高效部署与应用。最终目标是打造一个即拿即用的实例分割工具,促进AI技术在多领域的落地应用,同时提升开发者在复杂项目。
javaEE javaweb常用jar包 , 亲测可用,下载后导入到java工程中使用。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
可完美实现计算器功能,使用Matlab进行编程,可自行替换按键图标以及背景图片
本项目是课程设计课程实验的demo,内含源码和说明书,可以自己修改
RibbonIcon.dll
烟雾车辆探测器 基于Yolov5的烟雾车辆探测器 要求:pytorch、opencv、numpy等
数据库课程设计 java swing mysql实现的酒店管理系统项目源码
牛客网数据库SQL实战题目汇总
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
MySQL的执行原理-1.md
装饰器模式(Decorator Pattern)是结构型设计模式之一,用于动态地向对象添加额外的职责,而不影响其他对象。这种模式通过使用装饰器函数,允许你在保持原始功能的基础上,灵活地扩展代码的行为。
基于良田高拍仪的浏览器控件开发的demo,便于开发人员降低研究成本
工厂模式(Factory Pattern)作为创建型模式的一种,通过提供一个统一的接口来创建对象,封装对象的创建逻辑,提高代码的灵活性和可维护性。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
本项目是课程设计课程实验的demo,内含源码和说明书,可以自己修改