高校云平台3.1

高校云平台3.1版本升级纪实

高校云平台3.1,历时18天,主力开发19人,辅助开发10余人,于7月19日成功结项.

3.1是在3.0的基础上,修改底层,加上AOP切入日志和权限,容器,多线程,jar包减肥(定制jboss的modules),推行easyui的war包减肥(抽取公共的web.xml),将hibernate的级联关系改为主键关联,系统之间传递数据map,excel导入导出,前台容器,云效果(注册建库建表登录),并且最终部署在linux系统上,测试使用真实数据。

云效果,权限加上注册功能,能在注册的同时,为新注册的用户,生成一个库,库中会新建一套所有的表.目前建库和建表都是通过写sql语句,或者执行sql脚本.但是需要的大概40s的时间,需要优化.

将底层从原来的JPA改为了EclipseLink,实现多租户,所有用到的方法都要加上库名参数,若参数是实体类型,要求给实体的属性dataBaseName赋上值,普通的参数,则需要添加一个String dataBaseName的参数.底层也做出控制,若是dataBaseName没有值,则默认给一个值。但是这个做法,造成项目完成之后一些漏洞。如部分方法中,没有给dataBaseName赋上值,底层给他默认了一个值,所以测试的时候也不会报错.而若是一直在默认的库上操作还好,若切换到其他用户的库如B库,则数据读取或存储就会到默认的库中读取或存储,而不是在B库.这样用户的数据的隔离性没有做好.

但是我们实现了多租户的功能,就是用户登录的时候,获取他所在的库名,放到session中,然后我们在controller层获取到库名,根据库名去访问不同的表,拿不同的数据.

AOP切入日志和权限,目前切入日志是成功的,但权限还未切入,由于时间的原因,3.1使用了shiro实现的cas单点登录,但是没有做到界面上的权限控制.而切入的日志,由于部署在基础项目中,造成基础系统大量的写操作,基础压力太大,经常崩.所以后期验收时,日志已经去掉,去掉只需要将easyui中web.xml,去掉一个spring-aop.xml的读取即可.目前需要解决这个问题.

容器,我们在1.0,2.0,3.0已经使用了容器,Web容器,Spring容器,Ejb容器,都是容器.所以,没有再特意用上我们之前写的容器例子.

jar包减肥,通过定制一个jar包非常全的modules,来达到jar包减肥的目的.但是实际上,jar包并没有完全减肥,目前大家的jar包大概还有20M左右,而真正减肥的jar包大概在1M左右,若真的有些特殊的jar包,大小也应该在5M左右.原因是有一部分的jar没有写成<scope>为provided.所以即使自己这里没有用过这个jar,但是因为依赖的jar包中有这个jar,所以会下载下来.

easyui的war包减肥,将easyui的内容一份为二,一部分通过hfs发布出来,包括图片,样式和js.一部分通过伺服,down到本地,包括jsp页面和web.xml.从而,抽取出公共的web.xml,并且减少easyui的war包大小,从1.7M减为15K.

hibernate的级联关系改为主键关联,之前用hibernate的级联关系,如基础级联关系太多,导致查询学生,会将基础的所有信息都级联出来,效率非常低.后来优化成new map(),查什么就写什么,这样只会发出一条sql语句,效率提高很多.但是,后来我们选用坤哥提供的主外键的关联方式,如Student和Class有关联关系,则在Student实体中,放一个属性classId,类型是String.并且写一个private的Class实体,这样生成表时做对应,但是实际上我们是靠sql脚本建的库,应该不需要这样的对应.

系统间传递数据,用map,而不是之前的传递实体.传递实体的做法,若实体稳定这么做是没问题的,但是一旦实体不稳定,而我有用到了你的实体,则会造成比较大的影响.如Student,原来的属性为stuNo和stuName,后来改成studentNo和studentName.我若直接用你的student实体,则student.stuNo,就要改代码,改为student.studentName.所以为了减少这种影响,要求系统间的,传递map数据。接口双方约定map数据的key都是什么,必须给的key有哪几个,以后不管怎么变化,约定不变,key不变,则系统没有影响。

而由于之前没有做好接口的约定,后面有没有做好接口收集时的详细说明,导致接口耽误了很长的时间.并且我认为从一开始就应该开始设计接口,并且有专门的人员负责收集,处理接口的问题,并且不应该写假数据,则应该直接在数据库中导入真实的数据,然后给他们写接口.


excel导入导出,学敏改良版,采用xml配置.部署在基础,采用远程调用execlUtil,不过因为persistence.xml的原因,只认一份api,所以只能在一个系统中使用.所以3.1最终没有用上.

前台容器,在部分同学的页面已经加上这个效果.只需要在样式上加一点东西,就能实现在不同的地方右击,出现不同的效果.由于后期需要调优,并且为了验收,所以没有大力推广,只在一部分人页面上实验可用.

系统完成之后,发布在linux的服务上.为基础,考评,权限,新生各部署一台服务器,安装jdk,jboss,maven;然后配置hosts和去掉selinux,关闭防火墙,让linux和windows,以及linux的远程调用可以调通.然后部署2台测试机,配置一样.还有一台部署jenkins,一台部署svn,一台部署mysql.linux采用的都是图形化界面,遇到的问题较少,若是采用纯命令行,应该会遇到很多问题,锻炼也更多.

测试使用真实的数据,发现之前设计的功能有一些问题,如我的功能是分配班级,但是我分配班级的命名不是很好,比真实数据的差一些,并且因为有真实数据,发现原来classCode也是有规律的,但是这是功能我之前没做,后来只好急急忙忙做个.

以上就是我能想起来的3.1的功能了,3.1在这么短的时间内完成了这么多的功能.也让大家明白,没有什么问题,什么困难是我们克服不了的.

湖南省高校师资云平台作为教育资源整合与管理的数字化平台,支持通过脚本进行系统操作、数据处理和自动化任务,以提升管理效率与数据利用率。以下是一些关于如何使用脚本功能的操作指南与建议: ### 3.1 脚本开发环境准备 在开始编写脚本之前,需确保具备相应的开发环境与权限: - **API 接口访问权限**:用户需要向平台管理员申请 API 访问密钥(Access Key),以便通过脚本调用接口获取或更新数据。 - **编程语言选择**:常用的脚本语言包括 Python、JavaScript(Node.js)、Shell 等,其中 Python 因其丰富的库支持和易读性被广泛使用。 ```python import requests # 示例:使用 Python 发送 GET 请求获取教师列表 url = "https://hunan-teacher-cloud-platform.com/api/teachers" headers = { "Authorization": "Bearer YOUR_ACCESS_TOKEN" } response = requests.get(url, headers=headers) teachers = response.json() print(teachers) ``` ### 3.2 数据处理与自动化任务示例 平台支持通过脚本实现多种自动化任务,如批量导入教师信息、定期生成报表、自动发送通知等。 #### 批量导入教师信息 可使用 CSV 文件配合脚本完成教师数据的批量导入,示例如下: ```python import csv import requests url = "https://hunan-teacher-cloud-platform.com/api/teachers/batch" headers = { "Authorization": "Bearer YOUR_ACCESS_TOKEN", "Content-Type": "application/json" } with open(&#39;teachers.csv&#39;, newline=&#39;&#39;, encoding=&#39;utf-8&#39;) as csvfile: reader = csv.DictReader(csvfile) for row in reader: response = requests.post(url, headers=headers, json=row) print(f"Imported {row[&#39;name&#39;]}, Status Code: {response.status_code}") ``` #### 定期生成报表 使用定时任务(如 Linux 的 `cron` 或 Windows 的任务计划程序)结合脚本,可以自动生成并发送教师统计报表。 ```bash # 示例:Shell 脚本用于每日生成教师报表 #!/bin/bash DATE=$(date +"%Y-%m-%d") curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" https://hunan-teacher-cloud-platform.com/api/reports/teachers > /reports/teachers_$DATE.csv mail -s "Daily Teacher Report" admin@example.com < /reports/teachers_$DATE.csv ``` ### 3.3 安全与权限管理 - **API 密钥保护**:应将 API 密钥存储在安全的配置文件中,避免硬编码在脚本中。 - **日志记录与监控**:建议为脚本添加日志记录功能,便于追踪错误与审计操作行为。 - **权限最小化原则**:为脚本分配仅满足需求的最小权限,防止越权操作带来的安全隐患。 ### 3.4 平台扩展功能 若平台提供 Webhook 功能,可通过脚本订阅特定事件(如新教师注册、课程变更等),实现即时响应机制。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值