- python基础
晨曦543210
python学习
一、常见的标准库1、系统交互类(1)sys控制Python运行环境,支持命令行参数解析(sys.argv)、程序退出(sys.exit())和解释器信息获取(sys.version)。(2)os访问操作系统功能,如目录操作(os.mkdir)、环境变量管理(os.environ)、执行系统命令(os.system)。(3)platform获取操作系统和硬件平台的详细信息2、数据处理类(1)json
- node-red
sanzk
node-red
Node-Red-简书一、node-red简介 Node-RED是一个构建物联网应用的开源可视化界面开发工具,提供了一个基于浏览器的流程编辑器,通过拖拽连接节点的编程方式,快速连接硬件和设备到Web服务和其他软件,可以一键部署运行,创建好的流程还可以通过导出导入JSON文件轻松实现程序移植。 它是基于Node.js构建的轻量级开源工具,非常适合运行在RaspberryPi等低成本边缘设备以及云
- 卸载mysql5.7数据库_卸载 Mysql 5.1 与安装 Mysql 5.7 压缩包
果舒
卸载mysql5.7数据库
今天遇到几个奇葩问题,记录一下,本文仅限使用Windows10系统参考。我的数据库和表格编码都是统一为UTF8,后端也使用UTF8,Postman测试接口时使用的Json也都是UTF8,后端接收Json之后显示中文也正常。但是写入数据库的中文字段,就乱码。经排查后发现是我使用的Mysql版本太低导致的,有问题的版本编号为5.1,经过一番折腾,升级到Mysql5.7就解决这个问题。由于官方并没有提供
- 关于创建vue3项目 vscode的vetur插件依然报错需要template有根标签解决方法
墨雪遗痕
vuevue
为了解决vscode的vetur插件把vue3项目当成vue2去检查然后出现了报错非要template下仍然有要标签的报错我找到了以下方法,这个不会影响vetur的设置本身,只会对当前的项目生效第一步:打开你的package.json第二步:"eslintConfig":{"rules":{"vue/no-multiple-template-root":"off"}}把这个配置放到里面去,通过规则
- Linux:(网络协议定制)
5:00
网络协议网络linux
目录一、协议定制1.再谈协议2.认识序列化与反序列化二、网络计算器1.序列化与反序列化头文件2.套接字的类3.处理计算的类4.服务端5.客户端6.makefile7.运行结果三、json序列化与反序列化1.常用序列化与反序列化库2.安装3.使用(1)Request的序列化(2)Request的反序列化一、协议定制1.再谈协议协议本质是一种“约定”,在前面的TCP和UDP网络通信中,读写数据的时候都
- 对该Django ORM查询的改进方案及详细说明
大霸王龙
djangopython后端
以下是对该DjangoORM查询的改进方案及详细说明:一、基础安全性改进try:instance=mc_groupcustomerlkwist.objects.get(filenamemark=filenamemark)returninstance.toJson()exceptmc_groupcustomerlkwist.DoesNotExist:returnJsonResponse({'erro
- 数据处理神器!一款强大的数据处理命令行工具!
大家好,我是Java陈序员。我们在日常开发中,经常会操作使用一些JSON、YAML、XML等格式的数据,对数据进行增删改查和转换操作。今天,给大家分享一款强大的数据处理命令行工具,一行命令搞定数据操作!关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。项目介绍dasel——一款用于处理和操作多种数据格式的命令行工具,支持对JSON、YAML、TOM
- 雪球网数据爬取
weixin_30270561
jsongolang数据库
1importrequests2importjson3importpymysql45classmysql_conn(object):6#魔术方法,初始化,构造函数7def__init__(self):8self.db=pymysql.connect(host='127.0.0.1',user='root',password='abc123',port=3306,database='py1011')
- [python爬虫]爬寻雪球网
Black_God1
爬虫计算机爬虫
导包fromurllibimportrequest,parsefrompiaotimport*importjsonimportpymysqlyeshu是输入的页数#自己创建一个数据库函数defsql(sql_z):#打开数据库连接db=pymysql.connect("192.168.43.128","root","123456","xq",charset='utf8')#使用cursor()方法
- 使用js下载地区json文件
weixin_48280215
javascript
1.从网站免费下载实时更新的geoJson数据、行政区划边界数据、区划边界坐标集合__HashTang下载全国省市区县乡村名称和编码的josn文件2.从中搜索到所需要的省或市、区,新建json文件复制进去cqCityToStreet.json3.脚本文件downGeoData.jsconstfs=require('fs');consthttps=require('https');constpath
- pythonjson数据_一文看懂Python类型数据JSON序列化
weixin_39582569
pythonjson数据
现代网络应用WebAPP或大型网站的后台一般只有一个,然后客户端却是各种各样的(iOS,android,浏览器),而且客户端的开发语言很可能与后台的开发语言不一样。这时我们需要后台能够提供可以跨平台跨语言的一种标准的数据交换格式供前后端沟通(这就是WebAPI的作用)。如今大家最常用的跨平台跨语言数据交换格式就是JSON(JavaScriptObjectNotation)了。JSON是一种文本序列
- python中pickle模块_一文带你读懂Python中的pickle模块
weixin_39640444
python中pickle模块
pickle模块:属于python专有的模块,用法,功能与json类似。常用方法:dump(obj,fp):将对象以字符串的形式写入文件中。load(fp):将数据从文件中读出,并返回(需要变量接收)。dumps(obj):将对象转换成json字符串形式。loads(str):将json字符串数据转换成原来的数据类型。dump(obj,fp)|load(fp)示例如下;importpickle#将
- Json冲突崩溃问题
GoKu~
json
在一个项目中同时使用RapidJSON库后崩溃了。。。。---###**一、潜在问题分析**1.**符号重复定义(ODR冲突)**-**原因**:若您的库和上位机主程序均静态链接了RapidJSON(如编译为`.a`或`.lib`),或通过不同方式包含头文件(如不同版本的RapidJSON头文件),可能导致同一符号(如类、函数)被多次定义,引发链接错误(`multipledefinition`)。
- package.json版本前缀
田本初
前端
前言执行npmi下载依赖后,element-plus出现bug(单页面多个date-picker同时开启),这是v2.9.0+的问题,但是项目package.json中版本如下:"element-plus":"^2.7.6",乍一看并不是版本问题,但是package-lock.json中版本却是2.9.7版本前缀版本号主要分为三个部分:如2.7.6,其中2为主版本(major)、7为次要版本(mi
- Python||JSON文件 VS. json模块一文读懂异与同
the_time_runner
#小白学Pythonjson模块JSON编码格式json.loads()json.dumps()
JSON(JavaScriptObjectNotation)是一种文件编码格式。python中json是一个模块(官方文档菜鸟教程),用于解析或编码JSON文件。importjson#将python格式编码成JSON数据格式json.dumps([1,2,3,{'4':5,'6':7}],separators=(',',':'))#'[1,2,3,{"4":5,"6":7}]'>>>将JSON数据
- 一文读懂Python之json模块(33)
跟着杰哥学Python
json
一、json模块介绍json模块的功能是将序列化的json数据从文件里读取出来或者存入文件。json是一种轻量级的数据交换格式,在大部分语言中,它被理解为数组(array)。json模块序列化与反序列化的过程分别是encoding和decoding。encoding-把一个Python对象编码转换成Json字符串;decoding-把Json格式字符串解码转换成Python对象。json数据示例:
- package.json browserslist
82年的辣鸡
JavaScriptVue.jsvue
作用:根据提供的目标浏览器的环境来,智能添加css前缀,js的polyfill垫片,来兼容旧版本浏览器。避免不必要的兼容代码,以提高代码的编译质量。共享使用browserslist的组件们:组件名功能Autoprefixerpostcss添加css前缀组件bable-preset-env编译预设环境智能添加polyfill垫片代码postcss-normalize基础语法:只要package.js
- centos7 二进制安装docker和docker-compose(amd64,arch64)
蓝~天~
容器化脚本dockercentoslinux
一、优化系统modprobebr_netfiltercat>>/etc/sysctl.conf/etc/systemd/system/docker.service/etc/docker/daemon.json<
- spring mvc (七) 接收json数据
_painter
JavaSpringMvcspringmvcjson
注意:启动方式为maven插件启动以实体类方式接收json数据注册配置类packagecom.painter.config;importorg.springframework.web.context.WebApplicationContext;importorg.springframework.web.context.support.AnnotationConfigWebApplicationCo
- c# post获取小红书列表数据,x-s
乐于分享
c#js
stringurl=DecodeBase64(Request["post"]);//stringjsonData=DecodeBase64(Request["jsonData"]);//WebClientwebClient=newWebClient();ServicePointManager.SecurityProtocol=(SecurityProtocolType)3072;webClient
- springmvc全局异常处理器
简单点,编程的方式简单点
javaweb
定义一个类,继承springmvc的一个接口,实现里面的关于对异常的处理的方法。当dao抛出异常、service、action抛出异常后,springmvc将会用这个类的方法来处理这些异常,我们的处理逻辑是:1.先判断异常是否自定义异常,如果是未知异常,则新建一个自定义异常,并赋值为未知异常信息;2.判断action方法是否有responsebody注解,如果有,则将自定义异常类转json并返回,
- electron框架(4.0)electron-builde和electron Forge的打包方式
不断努力的根号七
electron框架electronjavascript前端
----使用electron-builder打包(需要魔法)--安装electron-builder:npminstallelectron-builder-D--package.json中进行相关配置:{"name":"video-tools","version":"1.0.0","main":"main.js","scripts":{"start":"electron.","build":"el
- Python脚本,用于查询RocketMQ的JMX接口以获取生产者和消费者的连接数
ascarl2010
RocketMQpythonrocketmq数据库
以下是一个简单的Python脚本,用于查询RocketMQ的JMX接口以获取生产者和消费者的连接数。这个脚本依赖于requests库来发送HTTP请求。首先,你需要在Broker的配置文件中开启JMX:com.alibaba.rocketmq.common.MQVersion.enable_jmx=true然后,你可以使用以下脚本来获取连接数:importrequestsimportjson#定义
- Hive UDF开发实战:构建高性能JSON生成器
莫叫石榴姐
收获不止一点hivejsonhadoop数据仓库大数据sql
目录一、背景与需求场景二、开发环境准备2.1基础工具栈2.2Maven依赖配置三、核心代码实现3.1UDF类骨架3.2高级类型处理四、部署与使用4.1打包与注册4.2使用示例五、性能优化技巧六、功能扩展方向七、生产环境注意事项八、性能对比测试九、总结与展望往期精彩一、背景与需求场景在大数据生态中,Hive作为主流的数据仓库工具,在处理结构化数据时表现出色。但当我们需要将Hive查询结果与其他JSO
- 利用python调接口获取物流标签,并转成PDF保存在指定的文件夹。
xiaoli_panpan
#python练习pythonpdf开发语言
需求调用getlabel接口将接口返回的base64文件转换成pdf文件命名用接口返回值的单号命名保存再指定的文件夹重实现代码#-*-coding:utf-8-*-importrequestsimportbase64importosimportjson#新增json模块导入url="http://releasud.com/api/label/LableApi/GalProcess"#替换为实际AP
- docker 常见问题整理(持续更新)
CodeIsCoding
dockerlinux
permissiondeniedwhiletryingtoconnecttotheDockerdaemonsocketatunix:///var/run/docker.sock:Get"http://%2Fvar%2Frun%2Fdocker.sock/v1.46/containers/json?all=1":dialunix/var/run/docker.sock:connect:permiss
- Java爬虫如何解析返回的JSON数据?
数据小小爬虫
java爬虫json
在Java中解析JSON数据通常使用一些流行的库,如Jackson或Gson。这些库提供了强大的功能,可以轻松地将JSON字符串转换为Java对象,或者从Java对象生成JSON字符串。以下是如何使用Jackson库解析返回的JSON数据的详细步骤和示例。一、添加依赖首先,确保你的项目中已经添加了Jackson库的依赖。如果你使用Maven,可以在pom.xml文件中添加以下依赖:xmlcom.f
- python实现语音转文字
张航柯
python开发语言
一、下载模型地址模型地址两个模型一个小一点,加载快一个大一点,加载慢加载的话每次启动只加载一次二、代码pipinstallspeech_recognitionvosk代码importjsonimportspeech_recognitionassrfromvoskimportModel,KaldiRecognizerrecognizer=sr.Recognizer()defrecognize_aud
- Node.js 包管理工具 npm、pnpm、cnpm、yarn
7 号
Node.jsnode.jsnpm
目录什么是npmnpm主要功能什么是package.jsonpackage.json版本范围规则安装配置npm环境使用npmnpm版本和帮助命令npm包相关命令安装包卸载包升级第三方包升级自己开发的包查看已安装的包清除缓存和修复package.json相关运行命令脚本全局配置npm包发布相关代理(Proxy)相关npm仓库镜像源配置cnpm什么是npxnpm、pnpm和yarn的区别什么是npmn
- uni-app框架+vue 实现上拉加载和下拉刷新功能
码喽的自我修养
uniApp与微信小程序vue2/3从基础到起飞前端常见问题与避坑指南uni-app前端vue.jsjavascriptai微信微信小程序
个人简介:某大型国企资深软件开发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主、华为云云享专家,分享前端后端相关技术与工作常见问题~作者:码喽的自我修养❣️专栏:vue2/3从基础到起飞若有帮助,还请关注➕点赞➕收藏,不行的话我再努努力文章目录一、实现上拉加载更多1.配置pages.json2.声明onReachBottom事件处理函数3.进行新旧数据的拼接处理4.使用节流阀进行优
- 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交互,它允许用户