首页 > 其他分享 >实战:电子书阅读器

实战:电子书阅读器

时间:2024-12-21 15:27:13浏览次数:11  
标签:实战 电子书 用户 ## 内容 阅读器 参数 ###

## 问题背景

web开发成为了主流的编程模式,许多系统都采用web开发模式,譬如,电商系统、门户网站、新闻资讯、邮件系统、还有诸多千奇百怪的网页,这就是今天我们熟悉的互联网发展的结果。web开发具有简单、快捷、高效的特性,从而备受青睐。笔者在这里以电子书阅读器为例,针对电子书阅读器的各项功能提供一些简单的思路。

##几款电子书阅读器案例

### top5 起点中文网

以连载小说为主要阅读偏好的产品,受众为大众、青年等群体,功能齐全,完美契合了作家、客户的客观需求。

95fe69f6c84148d2be6a367c3eb5ea5d.png

 ### top4 网易云阅读

特色是提供了用户入驻的功能,满足了需要内容推广的用户。同时方便大众阅读海量图书。

563637fc536a44dda618f66183d1dad1.png

 ### top3 知网

海量论文下载、浏览的利器,满足了学者、终身学习者的资料搜索需求,其中epub阅读器相当出色。

1dec08fbf45c47d8a2c98c2a236b8e9b.webp

 ### top2 学习通

提供了期刊订阅,学习交流,上面有很多期刊的官网,能免费阅读书籍、论文和期刊

f7165defe5504249915272f7136ca127.png

 ### top1 微信读书

依托微信用户群体,为用户提供优质内容服务。

74c5c9b08df34f80a06ffbf7f0c373c2.jpeg

 ## 功能描述

满足用户可以阅读电子书,订阅专栏内容,还可以入驻。

这里将功能分为,基础功能和扩展功能。

### 基础功能

用户使用浏览器访问主页便阅读喜好的书籍。需要内容推广可以入驻。

### 扩展功能

喜好设置、专栏订阅。

## 详细设计

内部开发模块采用基础类+配置类+扩展类的分层耦合开发方式。基础类提供电子书的处理,配置类完成基础类需要的初始化参数,扩展类主要访问基础类并延伸拓展功能。用户请求模块则集成spring mvc,或者干脆不需要第三方开源库,采用老式Servlet。主要实现电子书阅读功能。

### 配置类

配置类完成基础类的初始化需要的参数。

1、页面设置

页面设置需指定页面大小,行高,间接高度等。

2、段落设置

段落设置应该指定间接高度、是否缩间等。

3、内容设置

内容设置应该指定字体设置、内容类型、内容格式等。

4、一些用户请求参数

获取内容的请求参数,其他参数

### 基础类

1、Context类

电子书上下文类,可以获取电子书的目录、章节、段落等资源。

2、Content类

内容提供器,提供指定的内容(标题、段落、图片)等资源。

3、Url类

统一资源定位器,Context类会根据用户请求参数决定Url,然后获取资源。

### 扩展类

1、ContentHandler类

内容处理类,根据用户请求参数生成配置类后,上下文类Context会根据配置信息,找到相应的资源,最后通过该类处理成静态页面,或是保存在服务端,同时返回给客服端。

2、Search类

根据Url直接获取相应的内容

### 核心方法

1、getUrl(settings)

该方法必须指定配置参数,返回一个资源链接

2、getContent(url)

通过资源链接获取内容

3、contentAdaper(content)

内容适配器

4、search(Url)

精准搜索

## 后期扩展

随着用户量的增长,需对内部开发模块不断的完善,这些完善方面包括以下几个量级

### 500活跃用户

这个量级不需要应用多线程,直接将内容转化为静态页面保存在服务端,做好复制备份,牺牲外部存储空间换取时间。

### 10000活跃用户

做内容分发,需要多线程,此时设计一个中转器,转移部分资源到其他端口,缓解中转器的压力。

## 开发维护

分配三个作业同时完成,即是用户请求模块的请求参数设计,内部开发模块的实现,与其他开源框架如spring mvc的集成使用。我们不管是使用servlet还是其他开源框架,内部开发模块都应该被独立出来,形成独立的jar。

### 用户请求参数规范

。。。。略

### 内部开发模块实现

。。。。略

### spring mvc集成使用

。。。。略

## 样例展示

## 结束语

完成开发任务前最需要的就是文档的编写,一个优秀的文档体现了清晰的思路和有效的表达能力,笔者由于技术、时间和资源的有限,不能写完全部的文档,暂时分享这些内容,下面附加一些内容阐释:

1、线程

线程是程序执行的最小单位,本文档中提到了多线程,虽然笔者还没有完全实现电子书阅读器,但是这里也没有相应的环境。

2、servlet是一种动态网页处理技术,比较古老了,或许是技术更新太频繁了,好像被淘汰了吧。

3、mvc是一种开发模式,将页面内容和数据模型分开,通过控制器协调获取页面需要的数据。

4、基础类+配置类+扩展类是笔者自创的,没有什么用途。

笔者有时间和精力再做一个完整的文档。

 

标签:实战,电子书,用户,##,内容,阅读器,参数,###
From: https://blog.csdn.net/2402_89594624/article/details/144629583

相关文章

  • C++ 中的多线程编程:从基础到实战
        随着多核处理器的普及,多线程编程成为现代C++开发中的关键技能。C++11引入了强大的线程库,使得多线程编程更安全、更高效。本文将带你深入了解C++中的多线程编程,从基础概念到实际案例,逐步掌握如何用现代C++编写高效的多线程程序。一、多线程的基础概念  ......
  • windows 驱动实例分析系列: pl2303芯片开发实战之一
    驱动开发有大半情况是需要和硬件芯片交互的,而国内,最多的情况就是拿到国外的芯片,然后进行仿制,故能根据芯片设计出解决方案这种技术是许多高级工程师的基本操作。PL2303是一个被广泛使用的USB转RS232串口芯片。其中一些型号早已停产,但还在市场上流通,被使用在一些产品上。在......
  • [Python学习日记-73] 面向对象实战1——答题系统
    [Python学习日记-73]面向对象实战1——答题系统简介需求模型——5w1h8c领域模型设计模型实现模型案例:年会答题系统简介    在学习完面向对象之后你会发现,你还是不会自己做软件做系统,这是非常正常的,这是因为计算机软件和系统的制作是一个系统性工程,在大学里面......
  • 实战设计模式之工厂方法模式
    概述        工厂方法模式和前一篇文章中提到的简单工厂模式都属于创建型设计模式,它们都致力于解决对象创建的问题。但两者还是有一些重要区别的:简单工厂模式通常用于减少重复代码,并将对象的创建逻辑集中在一个地方,适用于产品种类较少且创建逻辑相对简单的情况;工厂方......
  • 读图数据库实战笔记09性能与反模式
    1. 熵1.1. 熵是物理学上的一个术语,本质上是一个系统“内在的混乱程度”​1.2. 是我们的敌人2. 执行缓慢的遍历2.1. 和关系数据库一样,图数据库对于执行缓慢的操作并不陌生2.2. 图也有帮助诊断问题的工具2.2.1. 解释一个遍历会做什么2.2.2. 分析一个遍历做了什......
  • 计算机毕业设计-基于Java+SSM架构的班级同学录网站系统项目开发实战(附源码+论文)
    大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。......
  • Java毕业设计-基于SSM框架的旅游信息管理系统项目实战(附源码+论文)
    大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。......
  • 【模块一】kubernetes容器编排进阶实战之基于velero及minio实现etcd数据备份与恢复
    基于velero及minio实现etcd数据备份与恢复Velero简介及minio环境准备Velero简介:Velero是vmware开源的一个云原生的灾难恢复和迁移工具,它本身也是开源的,采用Go语言编写,可以安全的备份、恢复和迁移Kubernetes集群资源数据,Velero。Velero是西班牙语意思是帆船,非常符合K......
  • TypeScript进阶实战:构建可维护的企业级应用
    "这代码太难维护了!"接手一个海外客户的项目后,我不禁感叹道。虽然项目用了TypeScript,但类型定义混乱,代码提示基本失效,测试写起来也很痛苦。作为一个有着多年TypeScript开发经验的工程师,我深知一个项目的可维护性有多重要。最近三个月,我带领团队对这个项目进行了一次彻底......
  • React性能优化实战:从理论到落地的最佳实践
    "这个列表页怎么这么卡?"产品经理皱着眉头看着我。作为一个接手海外电商项目的前端开发者,我深知性能问题的重要性。特别是在东南亚市场,很多用户使用的是中低端手机,网络条件也不太理想。最近一个月,我带领团队对整个React应用进行了一次全面的性能优化,不仅解决了性能问题,还总......