
技术总结
文章平均质量分 54
jobding
这个作者很懒,什么都没留下…
展开
-
代码注意降低接口提供者和调用者的耦合度
描述: 写代码时,接口中尽量封装为对外透明,外面只管调用,不用关心自己的状态。比较下三段比较简单的代码:用于下单和删除时客户付费状态修改1. updateCustomerPayingToExperience,updateCustomerExperienceToPaying 分开[code="java"]if (ChanOrder.CONVERT_FEE_ORDE...2009-09-22 21:15:08 · 224 阅读 · 0 评论 -
Map的HashCode做缓存key值引发的重大bug
现象:计费和账户的交互通过Map来交互,基本数据格式如下{"pp900_88",20,"pp900_61",2……}在不同的取值情况下,较多数据返回了相同的价格结果,导致计算价格错误。 应用场景:产品计算价格时,使用cache缓存了价格结果数据,cache的key值是传入map的hashCode,本意是要实现完全相同的Map传入值从缓存取数据,减少数据库的访问。 ...原创 2010-06-22 18:03:48 · 444 阅读 · 0 评论 -
分布式入门设计和实现
如何设计实现最基础的分布式应用,我们可以从如下两个ID入手:一个是全球唯一标识,另一个分布式hash散列值。前一个保证你各个服务器之间产生的不通ID是不重复的,因为它的主要算法是跟时间和MAC地址有关的,后一个决定你的数据是分发给哪台服务器处理。 对GUID不是太理解的可以看如下一段(摘抄自杂志):UUID含义是通用唯一识别码 (Universally Unique Ident...原创 2010-06-18 11:34:48 · 160 阅读 · 0 评论 -
WeakHashMap 用法和原理
在《Effective Java》一书中第六条,消除陈旧对象时,提到了weakHashMap,看了下还是适用的,即在我们使用短时间内就过期的缓存时最好使用weakHashMap,它包含了一个自动调用的方法expungeStaleEntries,这样就会在值被引用后直接执行这个隐含的方法,将不用的键清除掉。 测试了一下package com.alibaba.itbu.job.billing...原创 2010-05-18 09:18:52 · 414 阅读 · 0 评论 -
ConcurrentHashMap 用法和总结
本次提到的应用场景是这样的,对于任务启动来说(spring quartz任务),当有一个线程正在使用时,同样的任务不要再启动一次,这样可能导致数据出错。使用ConcurrentHashMap 来保存任务的线程信息,如果当前任务线程已经在运行中,则退出。主要代码如下: private static ConcurrentHashMap threadMap = new Concurren...原创 2010-05-18 08:40:42 · 1465 阅读 · 0 评论 -
我的项目发布总结
本次项目有幸担当了一次发布员,这也是我今年想尝试的事情之一,因为对于项目过程来说,我设计、开发、测试、联调等等都做了,唯一就是项目发布还是没有践行过,至此,我也算是走通了整个项目流程了。我信奉一个理论:没有做过的事情千万不要说自己会做了。发布过程就不写了,已经写好了发布手册了。 1.准备阶段要充分,你轻视了哪个环节,哪个环节就有可能有问题,要知道发布阶段是大家都在等你,一定不要bl...原创 2010-07-29 09:37:18 · 162 阅读 · 0 评论 -
使用queue等要 优雅的关闭
项目中使用了非阻塞队列,如下接口目的是实现阻塞队列的处理数据。 public interface IPoller { public void addResulst(Map resut); public void handle();} 这个没有针对queue的关闭,必然会导致在正常退出或者JVM 退出时queue里面的数据不能处理。在使用queue等存储临时数据时必...2010-05-13 17:44:05 · 464 阅读 · 0 评论 -
淘宝赛马心得体会
今天,参加淘宝赛马收获颇丰,鬼脚七的一句话对我影响是最大的,他说“任何好的创意都是一句话能说清楚的”,显然描述创意的时候,还有这样那样的限制,则说明这个创意不够成熟,比如淘宝客—推广商品获得积分和返现,今天最有意思的一个项目逛淘宝—通过左右键flip的方式解决淘宝店铺之间互相没有联系的展示方式。我今天提交的项目“荐”者有份,正如马钰所说,如果去掉各种限制,则最终会成为淘宝客,我把推广用户限制为...2010-04-14 17:00:43 · 270 阅读 · 0 评论 -
JAVA基础特性-ThreadLocal 应用
ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是thread local variable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适,他实现了线程的变量隔离,不同的线程可以维护自己的变量,他在内部实现原理上比较简单,就是每个ThreadLocal内定义一个以自己线程名称为key的hashMap...2009-10-11 21:56:48 · 125 阅读 · 0 评论 -
基于Lucene的商业搜索应用架构研究(下)——遇到的问题
由于也是初次开发基于Lucene的商业应用,经验比较缺乏,在开发过程中遇到了不少问题,有些比较大众化的问题,这里不细讲,对于稍微复杂的问题展开来写下,也希望得到博友的一些分享。 [b]1.单分词的研究 [/b] 对于 “上海apen 公司”进行搜索,要能够搜索出 上海a的模糊查询。首先这个需求有一定弊端,索引会因此变大,搜索效率会变低,目...2009-09-29 20:33:42 · 121 阅读 · 0 评论 -
基于Lucene的商业搜索应用架构研究(上)——架构设计
本文旨在探索基于Lucene的搜索架构问题,也就是怎么应用Lucene来构造一个应用于业务系统的搜索引擎框架的问题。 一直对做搜索有不少幻想,也曾尝试着自己小打小闹的搞过几个demo,前不久,这个机会来了,目前我们开发的系统业务数据在跨越千万级的门槛上了,主管和项目经理打起了搜索引擎的主意,我也主动请缨要来搞一下。 做过搜索的人都知道。对于使用Lucene做...2009-09-26 22:11:53 · 143 阅读 · 0 评论 -
事务中的一些问题
[size=medium]近期遇到了不少并发和事务问题,总结如下 [color=green]1.锁 必须在取数据之前。 现在的事务主要是通过锁数据并通过在后面的校验中验证状态实现的,要注意,后面的验证数据一定要是加锁之后取出来的数据,比如验证订单状态能否进行当前操作时要重新取一下订单。 2.锁的粒度 原则:粒度越小越好,但同时也要在不影响性能的情况下,考虑实现的方...2009-09-22 21:27:58 · 129 阅读 · 0 评论 -
解决RMI服务在windows下正常调用,而在linux下异常问题
现象: 端口开了访问不到,报错日志如下:[quote]java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: java.net.ConnectException: Connection refused: connect[/quote]问题解决:检查服务端线程信息...原创 2011-06-09 15:50:12 · 682 阅读 · 0 评论