在线格式转换网站设计-综述

本网站的设计与开发是以学习与交流为目的,不会涉及任何盈利项目,如果网站的设计或者其他代码涉及您的利益,您可以联系我,我会立即删除。

1. 开发背景

互联网的迅猛发展使人们对软件使用体验的要求越来越高,客户端软件繁琐的下载安装过程已经不能满足人们的要求,在线服务越来越得到人们的青睐。网页是人们获取在线服务的一个重要途径,通过网页,人们无需下载,无需安装,方便快捷。在当今,表情包的盛行使GIF这种轻便的动图重新占据图片领域的一席之地,GIF的制作成为人们娱乐的需求之一,而GIF的体积越来越小成为用户和电商企业共同追求的目标。此外,PDF转Word和证件照更换背景等,也是人们偶尔需要使用的功能之一,这些小功能的不常用的特性使得人们不会专门安装客户端去解决,更多的人选择找专门的某宝商家付费解决。这些都表明在线格式转换网站设计必然会拥有用户,有一定的前景。

2. 总体描述

本网站预计最终实现四大功能。

  • 视频转GIF
    用户首先选择视频,然后视频的指定帧进行选择,本网站将用户选择的视频帧导出为GIF供用户下载。
  • GIF压缩
    用户选择要压缩的GIF,然后网站将压缩好的GIF供用户下载。
  • PDF转Word
    用户选择PDF进行上传,然后网站将转换后的Word供用户下载。
  • 证件照更换背景
    用户选择证件照以及证件照更换后的背景颜色,然后网站将更换背景的证件照供用户下载。

3. 开发环境

Eclipse集成开发环境(JavaWebProject);Opencv 4.1.0;Mysql;Java Jacob库;Spire免费版库;Pdfbox库;Nodejs(配置 GraphicsMagick、ImageMagick、gm);

4. 开发约束

  • 命名规则
  1. Java工程文件都在包com.convert 下。
  2. Java文件命名Severrlet文件, 名称要以Serverlet 开头。
  3. Java文件命名 Struct文件,名称要以 Struct开头。
  4. Java 文件命名 Interface 文件,名称要以 In开头。
  5. Java 文件命名 Interface Implement 文件,名称要以 InImpl 开头。
  • 目录架构
  1. JavaWeb工程项目主目录
    JavaWeb工程项目主目录
  2. 个人项目目录主结构
    个人项目主目录
  • 命名风格
  1. [必须遵守] 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。
    反例: _name / __name / O b j e c t / n a m e / n a m e Object / name_ / name Object/name/name / Object$

  2. [必须遵守] 代码中的命名严禁直接使用中文的方式。 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。正例: alibaba / taobao / youku / hangzhou 等国际通用的名称,可视同英文。
    反例: DaZhePromotion [打折] / getPingfenByName() [评分] / int 某变量 = 3

  3. [必须遵守]类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:DO / BO / DTO / VO / AO
    正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion
    反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion

  4. [必须遵守]方法名统一使用 lowerCamelCase 风格,必须遵从 驼峰形式。
    正例: localValue / getHttpMessage() / inputUserId

  5. [必须遵守]常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
    正例: MAX_STOCK_COUNT 反例: MAX_COUNT

  6. [必须遵守]抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类 命名以它要测试的类的名称开始,以 Test 结尾

  7. [必须遵守]中括号是数组类型的一部分,数组定义如下:String[] args; 反例:使用 String args[]的方式来定义。

  8. [必须遵守]POJO 类中布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误。
    反例:定义为基本数据类型 Boolean isDeleted;的属性,它的方法也是 isDeleted(),

  9. [必须遵守]包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用 单数形式,但是类名如果有复数含义,类名可以使用复数形式。
    正例: 应用工具类包名为 com.alibaba.open.util、类名为 MessageUtils(此规则参考 spring 的框架结构

  10. [必须遵守]杜绝完全不规范的缩写,避免望文不知义。
    反例: AbstractClass“缩写”命名成 AbsClass;condition“缩写”命名成 condi,此类 随意缩写严重降低了代码的可阅读性。

  11. 【推荐】接口类中的方法和属性加上有效的 Javadoc 注释。尽量不要在接口里定义变量,如果一定要定义变量,肯定是与接口方法相关,并且是整个应用的基础常量。
    正例:接口方法签名:void f();
    接口基础常量表示:String COMPANY = “alibaba”;
    反例:接口方法定义:public abstract void f(); 说明:JDK8 中接口允许有默认实现,那么这个 default 方法,是对所有实现类都有价值的默 认实现。

  • 常量定义
    1.[必须遵守]不允许任何魔法值(即未经定义的常量)直接出现在代码中。
    反例: String key = “Id#taobao_” + tradeId; cache.put(key, value);
  1. [推荐]常量的复用层次有五层:跨应用共享常量、应用内共享常量、子工程内共享常量、包 内共享常量、类内共享常量。
    1) 跨应用共享常量:放置在二方库中,通常是 client.jar 中的 constant 目录下。 2) 应用内共享常量:放置在一方库的 modules 中的 constant 目录下。
    反例:易懂变量也要统一定义成应用内共享常量,两位攻城师在两个类中分别定义了表示 “是”的变量:
    类 A 中:public static final String YES = “yes”;
    类 B 中:public static final String YES = “y”; A.YES.equals(B.YES),预期是 true,但实际返回为 false,导致线上问题。
    3) 子工程内部共享常量:即在当前子工程的 constant 目录下。 4) 包内共享常量:即在当前包下单独的 constant 目录下。 5) 类内共享常量:直接在类内部 private static final 定义。

5. 具体设计(逐渐更新,一直到2020年4月前更新完毕)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值