摘要:
编写的代码能否在线上持续的提供稳定可靠的服务是区分普通程序员,文艺程序员,2B程序员的重要标准之一。持续的提供稳定可靠的服务说起来简单,实际影响的因素有很多,数据的量级,请求的峰值,并发的影响,架构的设计,系统的复杂度,外部依赖,线上的运维,单测和CR的执行,这些都一定程度影响着系统能否持续的提供稳 阅读全文
摘要:
假设在办理各种证件时分为填表,审核,制作3个过程,每个过程用时10分钟,这样一个工作人员需要30分钟办理一个证件。那么有没有办法提供效率,减少等待时间呢。可以让一个专门的工作人员,每个顾客到来时就负责让顾客填表,在顾客填好表后交给其他工作人员审核。这样其他功能人员的工作效率就从30分钟提高到了20分 阅读全文
摘要:
提起IO模型首先想到的就是同步,异步,阻塞,非阻塞这几个概念。每个概念的含义,解释,概念间的区别这些都是好理解,这里深入 nix系统讲一下IO模型。 在 nix中将IO模型分为5类。 1. Blocking I/O 2. Nonblocking I/O 3. I/O Multiplexing (se 阅读全文
摘要:
据说每个程序员上辈子都是法力高深的魔法师 crontab 话说小明11年从新手村毕业,拿着一把等级为灰色的木剑就开始了打怪升级之路。小明发现怪并不好打,怪物都是在凌晨4点才出现的,好在小明在新手村的时候学会了一个叫crontab的静态魔法,该魔法虽然等级低但是不需要吟唱时间,小明将crontab附魔 阅读全文
摘要:
为何重造轮子 半年前写了一个注解驱动的缓存,最近提交到了 "github" 。缓存大量的被使用在应用中的多个地方,简单的使用方式就是代码先查询缓存中是否存在数据,如果不存在或者缓存过期再查询数据库,并将查询的结果缓存一段时间,缓存key通常是入参的对象或者入参对象的某些属性,有些时候还需要按照某种条 阅读全文
摘要:
缓存一直是web2.0应用的性能核心,缓存大幅提高了应用QPS,减少了数据库的压力,降低了RT,让应用能够飞起来。缓存具有易于上手,难于精通的特点,缓存失效的设计是整个缓存应用的难点,在某些复杂情况,不适合的缓存设计增加了系统出错的可能。下面对缓存使用的几种典型情况做下分析。 本地缓存 1. 用于缓 阅读全文
摘要:
feed系统和火车票售卖系统是2个高访问高并发情况下具体很大挑战的系统。 在低访问,低并发的情况下feed系统会变的非常简单,数据模型和业务功能都比较容易设计和实现,主要的挑战就剩如何面对层出不穷的敏感词和花样百出的广告语。相比之下,火车票售卖系统在低并发时也很有趣,假设我是12306的架构师,我会 阅读全文
摘要:
这算是工作以后第一次做年终总结。距离2011年末已经整整3年,距离毕业已经3.5年。毕业(前)后,一直过着随遇而安的生活,白天码代码,下班看书,动漫,电影,游戏。今年多了一个陪妹子的活动,实事求是的说陪妹子这个优先级太高抢占了不少资源。 过去的2011,2012,2013年就不说了,往事已矣。今年是 阅读全文
摘要:
CAS 是什么 CAS是单词compare and set的缩写,意思是指在set之前先比较该值有没有变化,只有在没变的情况下才对其赋值。在java.util.concurrent包中,CAS提供了一种不同于互斥锁,读写锁的乐观锁机制,CAS和volatile一起构成了整个concurrent包的基 阅读全文
摘要:
包冲突 几乎上点规模的java系统就会遇到jar冲突,不负责任的讲排除依赖成了每次发布上线前必做的工作。虽然问题的本质都是jar冲突,但是表现上却有很多不同,从NoSuchMethodError,ClassNotFoundException到field找不到,作用域错误;并且触发冲突条件也不相同,最 阅读全文
摘要:
在jdk5中,新增了Lock接口来提供一种比synchronized更灵活的锁机制。 ReentrantLock ReentrantLock是被最广泛使用来替代synchronized的Lock接口实现,ReentrantLock的代码使用非常简单,只要记得将unlock写在finally方法中就可 阅读全文
摘要:
在oracle停止对jdk6更新,jdk8发布之后,公司终于要把生产环境更新到jdk7,下面列一下jdk7,8的可能需要关注的新特性。 jdk7 G1垃圾回收 fork join框架 二进制变量 Switch支持String类型 try with resource 简化泛型 catch多个异常 In 阅读全文
摘要:
最近看了一段涉及到事务处理的代码,正好去年做过的一个项目也有强一致性的要求,当时做过比较长时间的调研,决定把学习到的知识都总结一遍加深记忆,也方便后续遇到事务处理问题时寻找解决方案。 其实大多数互联网应用对事务性要求都不高,更多的挑战在于更好的性能和更高的可扩展性,只有少数涉及到账户和交易的系统才对 阅读全文
摘要:
try 回首3年前的7月,我背着一个硕大的包,拎着满满的行李箱走下飞机来到杭州,在一个阳光明媚的有些刺眼,天气闷热难耐的日子,正式告别了学校,入职阿里巴巴广告应用团队,开始了人生中的第一份正式工作。三年后的7月,我在一个天气清爽的日子写下这段文字,决定告别熟悉的广告业务,加入了一个新的业务团队。 在 阅读全文
摘要:
最近团队的版本控制从svn切换到了git,虽说已经使用git有2年多了,也写了一个 "实用攻略" ,但是github上的项目使用经验和公司内部团队协作的使用经验还有很多不同。补充下新的使用体会。 首先还是看一下git的3个区:working,stage,commit,心中有个概念。 1. githu 阅读全文
摘要:
一直以来都是在mac的iterm2和windows的cygwin上通过命令行的方式使用git,今天决定整理下常用的git命令,作为简明实用的帮助手册,方便以后查找。 git 配置 1. 使用git config global user.name/user.email 进行初始化配置 2. 使用cat 阅读全文
摘要:
不要急 不要害怕改变 不要只做不想 听别人的话,即使你不想听 订一个五年期的目标,写一个一年期的计划,然后回顾它 学好中文,学好写文章,学会打标点符号 学好英语,有时候会发挥巨大作用 把工作当成事业做,天天都在做事业,才会成功 理论看不懂,就去实践;实践遇到问题,就去看理论 参加一个开源项目。如果没 阅读全文