2015年6月积累
2015-07-21 18:28
344 查看
1、情景模拟:在某一个时刻生成某个对象值,但是有效期假如为2个小时;如果能保证调用的时候,这个值及时反馈是否失效;失效的对象值及时从存储空间移动,减少资源的占用?
方案一:在生成值的时候,记录值的同时,记录有效截止时间(生成值的当前时间+2个小时);
为了节省资源,我们需要对存储空间失效的数据值进行清除;那么,写一个定时器,2个小时执行一次,对于过期的清除;
做了上诉的检查操作后,但是其中有一定的时间差,当移动端主动调用这个值的时候,再次检查一次当前值是否有效,若失效,做相应的处理;(有效的这个,有效就去使用,无效就生成,有效节省资源)
2、情景模拟:当项目是分布式部署在不同服务器上面的时候(并且数据库也是多个备份的),为了数据主键的通用性,避免重复;主键生成策略应该如何?
方案一:多个应用共用一个主键生成策略;
单独建立一个单独的应用,用于提高主键生成;
为了保证主键的正确严密性,需要对主键生成部署在不同的服务器上面,避免主键应用运行异常时,对调用该主键生成的其他业务应用产生影响;
当一个主键应用1增长的时候,同时通知部署在其他服务器上的主键应用;及时更新;
如果其中一个应用访问不了,从另一个应用上面去获取数据;恢复的时候,首先去其他服务器上的应用同步数据;
当主键应用都运行不了,重启的时候,根据实际间隔,设置一个增值;在最后的值的基础上加上设置的增值
设置的主键生成:三位一介,从0开始,999封顶,进一介
定义规则:保存到固定的文件中
a、设置count默认值为1;代表当前为一介;每一介创建一个对象,设定对象属性名为数字(从0开始,比如第一介为0,第二介为1,依次类推)
b、当出现第二介的时候,count的值更改为2,三的时候count为3,以此类推。
c、每一介的属性名后面的值为当前介的值(值的范围是0到999 ,不足三位前面用0填充)
实现思路:
定义一个数组,存储每一介的值;
当介数大于1的时候,每次加1,对count进行循环迭代,若当前介的值等于最大值999的时候,当前介的值归0,其上一介的值加1
如果当前迭代的索引值为当前数组的最大长度的时候,并且值为最大值,那么字符串长度进1
3、情景模拟:使用memcache的时候,存储内容为库中的数据,当为电商网站的时候,购物广场数据查看频率特别高的时候;如果保证数据的及时刷新,迭代;
方案一:当我们整页(设定当前每页显示10条数据)存储的时候,若卖家发布了新商品,或者对商品进行了操作(修改,下架),那么多条数据的保存方式不合适;
注意的一点:保存的key对于这样的数据存储,那么可以选择使用sql语句(当有条件查询的时候,加上具体的条件参数值,这样就保证的key对于数据的准确性;这样也会存在一个问题,
数据的sql语句过长怎么办,个人的解决方案是再将这个key进行md5加密后存储,这样可以保证key的长度不会过长)
针对上面描述的问题,于是做了调整:
查询的时候,我们将每一条数据存储到memcache中,其中可以把主键id作为key,在查询购物广场的数据的时候;只查询出需要显示数据的主键id,再根据主键id从memcache中获取整个数据,返回给APP端;(这样的好处是:方便对数据及时维护;对数据进行修改删除操作的时候,根据主键id明确性的去更新缓存中的数据)
4、情景模拟:如何有效提高运行app的效率,提高用户体验,减少与服务器的交互?
5、情景模拟:如何实现在线和离线操作?
方案一: 技术上,项目是CS架构的,支持在线和离线两种操作方式,对于在线方式,数据访问是直连服务器上的Oracle数据库,离线的数据访问是连接本地的Access数据库;对于本地数据库,系统提供WebService来实现本地数据的同步。
6、情景模拟:项目如何产品化?如何真正在内部实现组件化(根据业务模块来划分模块,并像搭建具木一块快速组合与拆分)的 架构方式。
方案一:在生成值的时候,记录值的同时,记录有效截止时间(生成值的当前时间+2个小时);
为了节省资源,我们需要对存储空间失效的数据值进行清除;那么,写一个定时器,2个小时执行一次,对于过期的清除;
做了上诉的检查操作后,但是其中有一定的时间差,当移动端主动调用这个值的时候,再次检查一次当前值是否有效,若失效,做相应的处理;(有效的这个,有效就去使用,无效就生成,有效节省资源)
2、情景模拟:当项目是分布式部署在不同服务器上面的时候(并且数据库也是多个备份的),为了数据主键的通用性,避免重复;主键生成策略应该如何?
方案一:多个应用共用一个主键生成策略;
单独建立一个单独的应用,用于提高主键生成;
为了保证主键的正确严密性,需要对主键生成部署在不同的服务器上面,避免主键应用运行异常时,对调用该主键生成的其他业务应用产生影响;
当一个主键应用1增长的时候,同时通知部署在其他服务器上的主键应用;及时更新;
如果其中一个应用访问不了,从另一个应用上面去获取数据;恢复的时候,首先去其他服务器上的应用同步数据;
当主键应用都运行不了,重启的时候,根据实际间隔,设置一个增值;在最后的值的基础上加上设置的增值
设置的主键生成:三位一介,从0开始,999封顶,进一介
定义规则:保存到固定的文件中
a、设置count默认值为1;代表当前为一介;每一介创建一个对象,设定对象属性名为数字(从0开始,比如第一介为0,第二介为1,依次类推)
b、当出现第二介的时候,count的值更改为2,三的时候count为3,以此类推。
c、每一介的属性名后面的值为当前介的值(值的范围是0到999 ,不足三位前面用0填充)
实现思路:
定义一个数组,存储每一介的值;
当介数大于1的时候,每次加1,对count进行循环迭代,若当前介的值等于最大值999的时候,当前介的值归0,其上一介的值加1
如果当前迭代的索引值为当前数组的最大长度的时候,并且值为最大值,那么字符串长度进1
3、情景模拟:使用memcache的时候,存储内容为库中的数据,当为电商网站的时候,购物广场数据查看频率特别高的时候;如果保证数据的及时刷新,迭代;
方案一:当我们整页(设定当前每页显示10条数据)存储的时候,若卖家发布了新商品,或者对商品进行了操作(修改,下架),那么多条数据的保存方式不合适;
注意的一点:保存的key对于这样的数据存储,那么可以选择使用sql语句(当有条件查询的时候,加上具体的条件参数值,这样就保证的key对于数据的准确性;这样也会存在一个问题,
数据的sql语句过长怎么办,个人的解决方案是再将这个key进行md5加密后存储,这样可以保证key的长度不会过长)
针对上面描述的问题,于是做了调整:
查询的时候,我们将每一条数据存储到memcache中,其中可以把主键id作为key,在查询购物广场的数据的时候;只查询出需要显示数据的主键id,再根据主键id从memcache中获取整个数据,返回给APP端;(这样的好处是:方便对数据及时维护;对数据进行修改删除操作的时候,根据主键id明确性的去更新缓存中的数据)
4、情景模拟:如何有效提高运行app的效率,提高用户体验,减少与服务器的交互?
5、情景模拟:如何实现在线和离线操作?
方案一: 技术上,项目是CS架构的,支持在线和离线两种操作方式,对于在线方式,数据访问是直连服务器上的Oracle数据库,离线的数据访问是连接本地的Access数据库;对于本地数据库,系统提供WebService来实现本地数据的同步。
6、情景模拟:项目如何产品化?如何真正在内部实现组件化(根据业务模块来划分模块,并像搭建具木一块快速组合与拆分)的 架构方式。
相关文章推荐
- 关于如何改变thinkphp中自定义的成功界面、错误界面、异常界面
- 那个青春
- cocos2dx自学之 动作特效与场景切换特效
- 怎么旋转PDF文件的方向并保存成功
- android 自定义属性步骤
- POJ 2299 逆序对
- 动态集合的两个最近的数字之间的差的
- CSS伪类before和after的应用
- C++ 实现string的split
- 5.编写一个java程序,该程序有两个类:Tank(用于刻画坦克)和Fight(主类)。 已知坦克类如下:
- 利用 ProtoThreads实现Arduino多线程处理
- 修改Velocity over Lifetime
- Ubuntu系统常用操作指令说明
- java.lang.IllegalStateException: Failure saving state: active HomeMainFg{42ed2fb8} has cleared index
- ohasd failed to start错误解决办法
- 比特币基础知识原理讲解
- 12天学好C语言——记录我的C语言学习之路(Day 11)
- 什么叫编译时和运行时
- hdu 5294 Tricks Device 2015 Multi-University Training Contest 1
- 即使通讯聊天界面搭建----iOS