写在前面

“知了”这款APP的业务逻辑是技术框架的前提,如果还没有用过“知了”的,不如先试试
http://blog.csdn.net/wsrspirit/article/details/51751568
业务有两个主要场景,主要是按照学生在校园生活的社交维度划分,一个是以整个学校为单位,一个是以院、班等团体为单位。学校为单位的消息来源主要是整合常见网站信息,而团体单位则依赖学生主动添加组织并主动发送。好了现在可以来说我们的技术框架了

总体设计


主要由Android平台,服务器和信息平台三部分组成。Android平台主要包括通信模块和控制显示平台,通信模块负责与服务器进行数据交换,控制显示平台即为与用户交互的界面,显示各种信息。服务器主要由通信模块、功能模块、爬虫模块和数据库模块组成。通信模块负责与Android端连接并交换数据;功能模块实现用户请求的登录注册、获取分类信息、接收分类信息和推送提醒的功能;爬虫模块主要通过IP代理技术从多信息平台获取信息,并进行分类;数据库模块通过关系映射模块和数据存取模块实现信息的高效准确存取。

服务器设计


服务器使用SpringMVC作为服务器框架;MVC模式的一些组件还是很容易看懂;爬虫使用WebMagic,Service通过ScheduleTask定时启动爬虫,WebMagic中实现了IP代理,数据挖掘和数据分类功能,爬取得到的数据通过MyBatis完成数据存储;数据持久化层使用MyBatis框架,MyBatis完成MySQL到Model的关系映射,并将数据存储至MySQL;数据库使用MySQL,MySQL负责数据的存储以及读取。

Android设计


移动端使用Android作为移动端平台,移动端则是MVP模式;移动端解析网络请求没有使用开源框架如LiteHttp或Valley,而是自己实现;使用UrlHttpConnection发送GET和POST请求并接受返回数据,接收的数据通过Gson进行数据解析,通过LRUCache + SoftReference + Disk对图片进行缓存;数据持久化层使用GreenDAO框架,GreenDAO完成Sqlite子模块到Model子模块的关系映射,并将数据存储至Sqlite;移动端的数据库使用Sqlite,Sqlite负责数据的存储以及读取。

技术难点

  1. 目前我们资源受限,或者说用户量不大,所以服务器整体配置在一个war中,这就要求SpringMVC能够与WebMagic融入一个工程。
  2. 服务器开发就是SpringMVC+MyBatis的基本开发
  3. 因为知了覆盖了用户、团体和消息之间的关系,所以数据库的表设计还是有一定的难度,尤其是在后面对于数据库的优化方面,学习了很多
  4. 爬虫这里坑就更多了,首先是如何反爬,之后就是如何实现增量爬虫(这里的增量是指第二次对于第一次的增量)。还有就是爬虫对于服务器资源耗费,这个也能说很久
  5. 个人信息管理,负责用户的auth,个人资料等
  6. Android开发中的难度,像多层View的点击事件覆盖,ListView优化,网络通信的处理,图片信息优化,但是最主要的是对于AlarmManager的保活。
  7. RPC+反射 实现通信

好了,关于“知了”的基本设计和技术难点也就这么多啦,当然这么皮毛的东西肯定看的不过瘾,我会依次详细的介绍我在开发中遇到的问题,使用的开源框架,还有就是会详细的写一篇关于“知了”的优化篇,一定会让你吸收到一些经验。

[知了开发]“知了”APP整体设计相关推荐

  1. 用于android天气开发的背景图,Android开发天气预报APP的设计与实现毕业设计.pdf

    摘要 随着移动互联网技术和通信技术的发展,智能手机几乎成为人们 生活的必需品.近年来,Android系统已经成为智能手机中用户量最 多的操作系统.通过Android程序开发和设计天气预报手机应用,可 ...

  2. 博客园客户端UAP开发随笔 -- App UI设计的三大纪律八项注意

    前言 每一个页面都是这个App的门面,尤其是主页面,看上去干净整洁清爽宜人容易操作,那么你的App就成功了一半.这也反映出了你这个开发团队的基本审美素质和设计理念.如果你不是一个团队,而是一个个人开发 ...

  3. 结对项目开发电梯调度 - 整体设计

    一.系统介绍 1. 功能描述 本电梯系统用来控制一台运行于一个具有16层的大楼电梯,它具有上升.下降.开门.关门.载客的基本功能. 大楼的每一层都有: (1) 两个指示灯:  这两个指示灯分别用于指示 ...

  4. 如何做出一套完整的APP界面设计

    完整的APP设计由编码设计UI设计组成.长期以来,开发者一直重视功能的研发,忽视了功能的研发UI设计导致许多非常实用的设计APP客户安装下载后不会使用,或者觉得操作复杂,不易使用.因此,界面设计逐渐受 ...

  5. 开发手机APP做UI设计,这5个UI错误会置你的APP于死地!

    作为一名常州开发APP公司的UI设计师,我们需要一些规范来约束自己,让工作变得更有条理,更具专业性.在完成APP开发的过程中会有很多的细节需要注意,今天就来为大家讲5个常犯的主要错误以及解决的办法.& ...

  6. iPhone开发教程之iOS APP体验设计 - 醒醒吧 ))))) - majszt - 和讯博客

    iPhone开发教程之iOS APP体验设计 iPhone开发    |   更新时间:2012-10-15   |   点击:131    |   来源:本站 iOS APP体验设计不像互联网的体验 ...

  7. “知了杯”第一届网页设计大赛在川职圆满落幕

    为增强大学生实践创新能力,进一步推进应用型人才培养质量,成都知了汇智有限公司(以下简称"知了汇智")联合合作高校四川职业技术学院计算机工程学院,于6月9日14:30在学院406会议 ...

  8. Android App整体架构设计

    避免代码臃肿混乱,最根本的是需要代码功底以及对于程序的整体把控和设计能力.除此之外,对于Android App,个人抛砖引玉,提点自己的思路.如果只是轻量级的App或者Web App,在App内做点简 ...

  9. 用thinkphp进行微信开发的整体设计思考

    用thinkphp进行微信开发的整体设计思考 http://www.2cto.com/weixin/201504/388423.html 2015-04-09      0个评论       作者:明 ...

最新文章

  1. java xml中的冒号_Java jdom解析xml文件带冒号的属性
  2. 大棚骨架搭建好 科学施肥增收增产
  3. “开源、共享、创新” 2020 中国.NET开发者大会小结
  4. ajax请求参数为中文乱码的情况
  5. CRNN——文本识别算法
  6. android factorymode下回路测试无声音问题解析
  7. java poi将每一个cell设置为文本格式
  8. 浅谈简单快捷的服务器——私有云服务器!
  9. 当年谷歌为什么退出中国?
  10. Parasol and GreenSwitch: Managing Datacenters Powered by Renewable Energy
  11. DataAccess通用数据库访问类,简单易用,功能强悍
  12. Ubuntu下卸载和重新安装wps ——解决wps不能带格式复制粘贴网页文字和图片问题
  13. 关于typedef,指针数组和数组指针,指针函数的说明
  14. 吉林建筑大学计算机科学技术,吉林建筑大学计算机科学与技术专业2015年在吉林理科高考录取最低分数线...
  15. 【总结整理】读《结网》有感 ---腾讯系
  16. 区块链入门:如何简单易懂地介绍区块链(图文)
  17. 中秋节灯谜趣事:古人中秋节…
  18. vue elementui 复杂表头 table
  19. 风景类Midjouney prompt提示词
  20. iOS Xcode Git 如何忽略UserInterface.xcuserstate文件

热门文章

  1. 利用OVITO软件绘制团簇构型 (ICO, BCC, HCP, FCC及SC 多面体)
  2. 如果让你设计铁道部购票网站,你怎么做
  3. 「 C++ 11」std::thread “invalid use of non-static member function“问题处理
  4. 计算机的发展与电子物证,针对计算机信息来源的电子物证技术研究
  5. editplus如何设置保存后不生成备份文件
  6. 潮汕牛肉火锅,美味在你身边
  7. java通过J2C获取用户名密码_WAS服务器上的J2C别名有什么用途?
  8. Linux内核驱动初探(一) LVDS显卡
  9. android 随音乐旋律,Deemo - 叩击心灵的旋律 - Android 应用 - 音乐游戏 - 【最美应用】...
  10. 爬虫js逆向获取信息,有道翻译逆向{‘errorCode‘: 50}及UA错误