`

13年上半年开发经验小记

阅读更多
框架搭建:
1.统一常量、枚举类。
2.统一各层方法返回值。
3.统一自定义异常。
4.统一日志输出。
5.ibatis文件规范。
6.关于分页的统一。
7.ibatis文件中不要写过于动态化的sql。
8.最烦开发时间不足,还没开发好久给测试了,测试一天到晚盯着屁股喊。
9.一个好的开发工程师,任务分解越细越好,没有底线,开发时间评估,执行力比什么都重要。
前后端连调:
异步请求返回json列表,最好不要讲普通的vo对象转换后输出,因为这样会有很多无用的值。
且无法根据入参动态决定要返回哪些参数。

表设计:

一开始要考虑全面。

灵活应对:
根据订单id查点评的问题处理,换个角度,一切问题迎刃而解了。

缩减rt必经之路:
性能:
1.搭建search,避免多个数据源关联查询。
2.组装好的结果放入cache,下次直接返回。
3.分布加载,先加载躯干信息,再用lazy方式加载额外信息。
性能:
1.搭建search,避免多个数据源关联查询。
2.组装好的结果放入cache,下次直接返回。
3.分布加载,先加载躯干信息,再用lazy方式加载额外信息。


<res-loaders:file-loader basedir="D:/apps/vmcommon" />


存储键值对:
<itemId,item点餐相关内容(id,title,oriPrice,price,soldNum,picurl,isDiscount,isRecommend)>
<localstoreId,<name-id,name-id,name-id,name-id,name-id>>所有宝贝title和id,支持根据宝贝和关键字查询

<localstoreId+类目id+timeDesc,数组型的宝贝id列表>
<localstoreId+类目id+timeAsc, 数组型的宝贝id列表>

<localstoreId+类目id+priceDesc 数组型的宝贝id列表>
<localstoreId+类目id+priceAsc,数组型的宝贝id列表>

<localstoreId,类目LinkedHashMap>

<localstoreId+timeDesc,数组型的宝贝id列表>
<localstoreId+timeAsc,数组型的宝贝id列表>

<localstoreId+priceDesc,数组型的宝贝id列表>
<localstoreId+priceAsc,数组型的宝贝id列表>

容量:
每家店50个类目(1KB),500个宝贝(5KB),各种类目加起来每家店10KB的内存,1W家10M

数据初始化:
对于宝贝数据初次查询并加入到tair,以后在变更时更新到tair,永久即时缓存。
各种不同key值索引缓存与宝贝缓存类似做永久缓存,在类目或者宝贝更新时触发即时更新。


使用:
根据分页参数,在缓存的数组或者list中找到(al.subList(fromIndex, toIndex))符合条件的id列表,再据id列表索引出对应宝贝集合,返回给前端。
tair失效:
所有店铺的数据在初次查询(第一次访问该店铺页面的人)时进行初始化,压力也不会过于集中。

性能推测分析:
目前
调用一次实时搜索大概,平均20ms:itemInstantSearchService.search
取一次ic的宝贝,平均10ms:getItemReadService().queryItemById
tair方案
从tair中取200个byte时间在2ms
foreach两层嵌套循环300*6次在20ms
那么:目前方案一家店20个类目20次查询*20+500个宝贝各查一次*10=5s
          而tair方案20ms+500*2=1s
实验验证:基本符合推测,性能提升5倍
一般web服务器超时时间是多少?
开发一个功能点,一个页面,就必须对这个页面负责,所有问题尽量早些处理,靠别人提醒的话可能就已经到线上或者是最后关头了,那样付出的代价要大得多。
对前端的过渡依赖已经严重障碍了工作的进展!!!
互利的交往才会持续的交往和久远!
分享到:
评论

相关推荐

    开发经验小记.txt

    关于C#后台转换sql数据问题 格式:Convert.TO(DBHelper(sql).table[0].toString());

    android开发小记

    在“android开发小记”这个主题中,我们可以深入探讨Android应用程序开发的相关知识,特别是通过查看提供的压缩文件中的代码示例。这些文件名如lesson_8_code.zip至lesson_20_codel.zip,以及不同的Mp3Player版本,...

    liferay开发小记---开发环境的搭建

    本文将详述“liferay开发小记——开发环境的搭建”这一主题,旨在帮助开发者们快速有效地设置自己的开发环境,从而顺利进行Liferay插件或portlet的开发。 首先,我们需要了解Liferay开发的基础。Liferay提供了多种...

    javascript Dom开发小记

    web前端开发必备的技术,dom编程也是其中重点中的重点

    短信协议开发小记

    总结了短信协议cmpp、sgip、smgp等协议长短信开发要点

    Flex整合J2EE开发小记+源码下载

    标题中的“Flex整合J2EE开发小记+源码下载”揭示了本文的主题,主要讨论的是如何将Adobe Flex技术与Java EE(J2EE)平台相结合进行应用开发,并且提供了相应的源代码供学习和参考。Flex是一种用于构建富互联网应用...

    J2EE开发之常用开源项目小记

    这篇小记主要关注了几个关键领域:持久层、MVC框架、视图层、JavaScript库以及缓存技术。下面将详细阐述这些知识点。 1. **持久层**: - **Hibernate**:是一个流行的ORM(对象关系映射)框架,允许开发者以面向...

    开发细节小记

    ### 开发过程中的关键细节与注意事项 ...综上所述,无论是从开发流程、框架使用还是技术选型等方面来看,这些细节都非常重要。开发者应当充分理解并合理运用这些知识点,以提升开发效率和代码质量。

    snmp开发小记

    1、树莓派3B+安装配置net-snmp,搭设snmp代理 2、snmp++库的编译 3、snmp++示例(v1~v3) 4、在学习中遇到的问题以及解决方式 5、开发工具的资源共享

    java小记.rar

    这份"java小记.rar"压缩包很可能包含了作者多年从事Java Web开发的经验总结,可能包括代码示例、笔记、最佳实践等内容。 在Java Web开发中,Servlet是核心部分,它是一个Java类,用于扩展服务器的功能,处理HTTP...

    在Solaris上使用优盘小记

    在Solaris上使用优盘小记-Solaris -华夏名网资讯中心 虚拟主机,域名注册,双线虚拟主机,服务器租赁,为7万用户提供服务

    android 开发小记

    一些常用的技术总结,包括java基础,android 基础知识。

    Linux boost库安装、编译问题小记

    环境: Linux s12084 2.6.9-67.ELsmp #1 SMP Wed Nov 7 13:58:04 EST 2007 i686 i686 i386 GNU/Linux  gcc version 3.2.3 20030502 (Red Hat Linux 3.2.3-47.3)  boost 1.37.0  去年10月份用过一次再没用过了。...

    C++编程小记,经典收藏

    ### C++11 新特性详解 #### 一、Auto 关键字的新用途 - **旧用途**:在C++11之前,`auto`关键字主要用于指定变量的存储期。...无论是对于C++新手还是有经验的开发者来说,掌握并应用这些新特性都是非常有益的。

    Python django Extjs 项目开发中的错误小记

    在Python Django项目开发中使用Extjs时,开发者们可能会遇到各种各样的小错误或者问题。下面将详细地讨论其中的一些问题以及解决方法,涉及知识点包括Python Django框架、前端库Extjs以及一些常见的编程问题。 1. ...

    随笔小记.doc

    随笔小记.doc

Global site tag (gtag.js) - Google Analytics