一起分享
北京十六方数据科技有限公司招聘java开发人员 年薪10W~15W
2012-02-03, Nortan Posted in 一起分享 | 我来说两句 | 查看全文>>
公司研发新产品,需要招聘两名java开发人员,公司以前从不加班,但目前公司研发新产品,在产品研发关键时候可能偶尔会有加班,加班一般安排在周末,占用一天时间,大家如有能力有兴趣,请发邮件到job1@16ds.com,这个招聘邮箱为研发部门专用
职位要求分别如下: 查看全文…
yardvps试用过程中的烦恼
2011-08-08, Nortan Posted in 一起分享 | 1 回复 | 查看全文>>
不得不承认yardvps的VPS便宜,TREE 1为XEN虚拟机512M的内存才$7.95/Month,加上8月有20%的优惠码,忍不住就下手了,因为我想找一个能很好支持java的vps(需要真实内存大,openVZ的主机不太合适),于是注册,下订单,支付宝付钱,一切尽在掌握中…
好景不长,交钱后,苦苦等了一个晚上才开通,看到自己的独立IP,心里那个高兴呀,马上使用ssh登陆,结果…你懂的,我中奖了,登陆没有反应!!!于是在ping一下,妈的,不通!!!服务器的状态是绿绿的Online竞然ping不通!!!难道是这个ip被Great Wall了?带个这个疑问,我马上登陆我朋友的国外vps,再ping,还是不通!!!就这样我又是reboot,又是shutdown,又是boot,还是不通,甚至连他提供的在线ssh连接工具也连接不上. 查看全文…
snapnames很给力,域名抢注成功
2011-05-05, Nortan Posted in 一起分享, 人生百味 | 7 回复 | 查看全文>>
前几天看上了一个域名,5.4号过期,于是动用Godaddy进行抢注,20.99美元就这样进了别人的腰包!然后我又跑到snapnames查看,发现本域名在snapnames预定最低需要$69!,别人不是说只需要59$吗?难道已经有人预定了?本人对域名抢注不熟悉,又怕别人抢走了*******.com这个域名,于是又花了70美元在snapnames预定.
今早7:03分,一短信发来,迷糊中一看,短信的意思大概是我的信用卡在境外消费$70美元.我心中一喜,域名到手了!同时也有不爽,近$100就为了一个域名而消失了,钱与自己想要的东西在某些时候总是冲突,心情也随之像波浪一样,高低起伏.
想要就得到它吧,它会给你好运!我一直是这样想的,所以在这个域名也确实花了不少心思,从域名筛选到预定!!怪不得老婆说比给自己的娃取名还上心.娃就要出生了,希望好的域名也能给老婆及娃带来好运与平安.
刚才看了邮箱,snapnames发过来的贺信,内容如下:
Hello ****
Congratulations on your successful transaction.
We will be processing your payment shortly for *******.com. You can expect an update within 24 hours.
Thank you,
SnapNames
还得要等上24小时才能拥有它!总结这次抢注,SnapNames果然很给力,当然,也可能是钱给力:)呵呵,反正Godaddy是没有抢到,$70绝胜$20.99,结果就是这样!
用生产消费者模式实现数据队列定时或定量的异步存储
2011-03-06, Nortan Posted in Java, 一起分享 | 1 回复 | 查看全文>>
需求:
最近在考虑IM软件服务器端编程,有这样一个需求,就是把用户发的信息,全部保存到数据库中,如果是一般的web应用,可能就直接把用户提交的数据写入数据库了,但IM的信息的特点时,需要响应快(实时处理),数据量大,根据这个特点,我设计成接收转发模块与数据写入数据库为不同的模块,很明显,他们满足生产消费者模式,即某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。生产者与消费者并没有构成生产消费者模式,而生产者生产的数据由消费者消费的过程才能构成生产消费者模式。
设计:
生产者和消费者模式实现方式很多,但在实现的时候我们至少需要考虑生产消费解耦、支持并发、支持生产消费忙闲不均的情况。
一、解耦
假设生产者和消费者分别是两个类。如果让生产者直接调用消费者的某个方法,那么生产者对于消费者就会产生依赖(也就是耦合)。将来如果消费者的代码发生变化,可能会影响到生产者。而如果两者都依赖于某个缓冲区,两者之间不直接依赖,耦合也就相应降低了。这个缓冲区我们可以用一个列队实现。
二、支持并发(concurrency)
生产者直接调用消费者的某个方法,还有另一个弊端。由于函数调用是同步的(或者叫阻塞的),在消费者的方法没有返回之前,生产者只好一直等在那边。万一消费者处理数据很慢,生产者就会白白糟蹋大好时光。
使用了生产者/消费者模式之后,生产者和消费者可以是两个独立的并发主体。生产者把制造出来的数据往缓冲区一丢,就可以再去生产下一个数据。基本上不用依赖消费者的处理速度。其实当初这个模式,主要就是用来处理并发问题的。这样高并发下,用户感觉响应很快:)
三、支持忙闲不均
缓冲区还有另一个好处。如果制造数据的速度时快时慢,缓冲区的好处就体现出来了。当数据制造快的时候,消费者来不及处理,未处理的数据可以暂时存在缓冲区中。等生产者的制造速度慢下来,消费者再慢慢处理掉。
除了以上三个需要考虑的,在我的项目中,我还要考虑与数据库的交互不能太频繁,只能满足一定数据量时,使用批量方式写入数据库(定量写入),这个实现本身很简单,但如果考虑到服务器清闲时,很长时间都达不到这个数据量,但这段时间内可能会停机,没有写入数据库的数据就可能丢失,所以在给定的一段时间里,数据量没有到达给定数据的条件,只要达到时间条件,也需要写入数据库。
实现:
基于以上的想法,我们可以使用java.util.concurrent.BlockingQueue来实现,这里仅分析一些关键代码 查看全文…
Debian常用操作命令集合
2011-01-10, Nortan Posted in 一起分享, 常用, 操作系统 | 2 回复 | 查看全文>>
Debian常用操作命令集合,不定期增加及修改
查看软件xxx安装内容
#dpkg -L xxx
查找软件
#apt-cache search 正则表达式
查找文件属于哪个包
#dpkg -S filename
#apt-file search filename
查询软件xxx依赖哪些包
#apt-cache depends xxx
查询软件xxx被哪些包依赖
#apt-cache rdepends xxx
增加一个光盘源
#apt-cdrom add
系统升级
#apt-get update
#apt-get upgrade
#apt-get dist-upgrade
查看全文…