熬夜会秃头——alpha冲刺Day10

这个作业属于哪个课程2301-计算机学院-软件工程社区-CSDN社区云
这个作业要求在哪里团队作业——站立式会议+alpha冲刺-CSDN社区
这个作业的目标记录alpha冲刺Day10
团队名称熬夜会秃头
团队置顶集合随笔链接Alpha 冲刺随笔置顶(熬夜会秃头团队)-CSDN博客

目录

一、团队成员站立式会议总结

二、今日成果展示

三、站立式会议照片

四、当日项目燃尽图

一、团队成员站立式会议总结

组员昨天站立式会议到现在的进展存在的问题/遇到的困难心得体会
陈少桐

编写缺少的页面,实现了单文件上传以及下载

在下载文件的实现过程中路径会报错,后来发现将当前文件的地址当成了服务器的地址,将url改为this.url就可以

学会了利用uni.upload以及uni.download,比起利用uni-file-piker会更加自由

梁菲汎

实现了各页面之间的点击跳转

首先需要对按钮绑定一个函数,然后在函数里进行页面路由的改变。

这里要确保项目中已经在使用vue-router。

陈知菲

完善了文件分片上传功能,实现了Redis的slot分配在文件分片上传中的运用和文件分片与去中心化分布式架构的整合,使文件在集群中变得可标识

文件分片上传包括准备、上传、校验三个阶段,每个阶段都有一独立的接口实现,如何标识同一文件的三个阶段,使集群中的节点“记得”调用某一阶段的接口的属于哪个文件

使用jwt+md5的方式,jwt定位文件上传的目的节点,md5定义某一分片属于哪个未上传完成的文件

了解了在去中心化集群中标识某一文件的方法,了解了jwt的算法与使用。

李恒欣继续完善后端代码功能引入缓存机制能减少对数据库的访问次数,提高后端代码的性能和可扩展性。
邱思源对新实现的后端代码进行单元测试需要确保测试能够准确地模拟后端代码的输入和输出,同时还要确保测试能够在不同环境下可靠地运行使用自动化测试工具来进行测试,并对测试结果进行详细的分析和比较,能提高测试的准确性和可靠性。
宋芳鑫完善测试随笔、编写冲刺总结随笔如何确保总结的全面性和客观性

编写随笔可以帮助我更好地组织和表达思想。通过将想法转化为文字,我可以更清晰地理解自己的思路,并提高团队沟通能力。

张一凡对新实现的前端代码进行单元测试需要确保测试覆盖了所有重要的功能和边界情况,同时还要确保测试的有效性单元测试需要持续进行和定期更新,以确保其与代码的变化保持同步。
林承桢继续进行功能测试,完善测试文档如何确保功能测试的全面性和有效性编写有效的功能测试需要花费一定的时间和精力,但这是非常值得的,因为它可以帮助我在早期阶段发现和解决问题,从而避免在后期的开发环境中出现严重的问题。
黄才栋完善了图片上传功能要使图片上传功能正常工作并防止恶意行为编写有效的图片上传功能需要综合考虑多个因素,如文件大小限制、文件类型过滤等。最后,图片上传功能需要与后端紧密配合,以确保文件的安全存储和传输。
谢怀广核对已完成代码规范并制作项目燃尽图在编写代码时,不仅要考虑功能的实现,还要考虑代码的结构和可读性。通过制作燃尽图,我不仅了解了项目的整体进度,还发现了项目中的瓶颈和需要改进的地方。

二、今日成果展示

上传并下载单文件

uploadAFile(){
				uni.uploadFile({
						url:this.url,
						filePath: tempFilePaths[0],
				        name: 'file',  
						formData:this.formdata,
						header:{
							"Content-Type": "multipart/form-data",
							"token":this.token
						},
						success: (res) => {
						 if (res.data.code == 200){
						console.log('请求成功',res)
							uni.showToast({
							icon:'none',
							title:'提交成功',
								success: (res) => {
									setTimeout(() => {
										uni.navigateBack({
											delta: 1
										})
									}, 1500)
								}
							})
				    }	
						},
						fail:(err)=>{
							console.log('请求失败',err)
						}
					})
			},
			downLoadAFile(){
				uni.downloadFile({
					url: 'http://test-cn.your-api-server.com',
					success: res => {
						let filePath = res.tempFilePath;
							uni.openDocument({
								filePath,
								success: () => {
									console.log('打开文档成功');
								},
								fail: error => {
									console.log(error)
								}
							});
						} else {  
							uni.saveFile({
								tempFilePath: filePath,
								success: () => {
									uni.showToast({
										title:'下载成功'
									})
								},
								fail:()=>{
									uni.showToast({
										title:'下载失败'
									})
								}
							})
						}
					},
					fail:()=>{
						if(!open){
							uni.showToast({
								title:'下载失败'
							})
						}
					}
				})
			},

各页面之间的点击跳转

export default {
   name :'login',
   setup()
   {
       ...
       const jump = () =>{
           router.push({path:'/register'})
       }
      return {jump}
   }
}

Slot分配机制在文件分片上传过程中的实现

上传准备阶段:去中心化集群的某一节点获取其目的节点的url,向目的节点转发,将目的节点的url用jwt加密后返回

public ResponseResult shardPreparation(ShardMessage message, String originMd5) {
        String bucketId = message.getBucketId();
        String fileName = message.getFileName();
        String uri = servicesUtil.distributeURI(fileName);
        String jwt = JwtUtil.createJWT(uri);
//        if ("localhost".equals(uri)) {
//            return putService.shardPreparation(message, originMd5);
//        } else {
        try {
            ResponseResult res = testFeign.shardPreparation(new URI(uri), fileName,
                    message.getShardNum(), message.getShardSize(), bucketId,
                    message.getIsZip(), originMd5, 1);
            return new ResponseResult(res.getCode(), res.getMsg(), jwt);

        } catch (URISyntaxException e) {
            throw new RuntimeException(e);
        }
//        }
    }

上传和校验阶段:

前端携带准备阶段的jwt请求,后端解析jwt后获取其目的节点的url,向目的节点转发请求

@Override
public ResponseResult<Integer> uploadShard(ShardFile shardFile, String key) {
    try {
        String uri = JwtUtil.parseJWT(key).getSubject();
        testFeign.uploadShard(new URI(uri), shardFile.getNo(), shardFile.getTotalMD5(),
                shardFile.getOwnMD5(), shardFile.getFile(), key, 1);
    } catch (Exception e) {
        e.printStackTrace();
        return new ResponseResult<>(200, "key解析失败");
    }
    return new ResponseResult<>(200, "找不到路径");
}

@Override
public ResponseResult<Set<Integer>> checkShard(String md5, String key) {
    try {
        String uri = JwtUtil.parseJWT(key).getSubject();
        testFeign.checkShard(new URI(uri), md5, key, 1);
    } catch (Exception e) {
        e.printStackTrace();
        return new ResponseResult<>(200, "key解析失败");
    }
    return new ResponseResult<>(200, "找不到路径");
}

三、站立式会议照片

四、当日项目燃尽图

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值