自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

翻译 博客迁移到独立站点:http://iamzhongyong.cn/

1、最近写文章,比较喜欢使用markdown来弄,而iteye不支持,所以就换了种方式; 2、基于github 的pages功能,然后用dnspod买了个域名,构建了一个独立站点; 3、站点链接如下:http://iamzhongyong.cn/ 4、iteye上会同步拷贝过来,不过排版的话,独立站点上会更好一点; 5、后面文章逐步在微信公众账号上面维护,二维码...

2015-11-16 22:27:44 151

翻译 2015qcon大会点滴记录

前言三天的QCon大会过得挺快的,感受到了技术的热情,总体开拓了视野,对于大会中的一些印象比较深的TOPIC做一个记录,分享出来。 针对失效或者异常部分进行系统设计,在设计层面来规避问题的产生《针对失效的设计-Uber》这一块是他们首席架构师讲的,片子内容不是很饱满,基本每个片子一个主题,然后围绕主题来进行演讲。总体感觉Uber的业务发展比较快,最开始的时候系统都是外包出去做...

2015-11-16 22:12:19 58

翻译 系统分布式情况下最终一致性方案梳理

前言目前的应用系统,不管是企业级应用还是互联网应用,最终数据的一致性是每个应用系统都要面临的问题,随着分布式的逐渐普及,数据一致性更加艰难,但是也很难有银弹的解决方案,也并不是引入特定的中间件或者特定的开源框架能够解决的,更多的还是看业务场景,根据场景来给出解决方案。根据笔者最近几年的了解,总结了几个点,更多的应用系统在编码的时候,更加关注数据的一致性,这样系统才是健壮的。基础...

2015-09-05 19:34:12 420

翻译 前端优化的技术点浅析

前端优化的技术点浅析最近关注前端页面的性能优化,参照一些文章做了整理,在前端方面属于门外汉,大多数都是在相应的文章中摘取的笔记。归纳使用缓存和CDN减少页面的HTTP请求减少下载的内容减少渲染过程中的阻塞减少渲染过程中的瓶颈PageSpeed规则避免目标页面重定向,访问页面的过程中进行了多次重定向启用压缩功能,第三方webserver会将文件进行压...

2015-08-20 11:23:40 133

翻译 高并发系统数据幂等的技术尝试

高并发系统数据幂等的技术尝试 前言在系统开发过程中,经常遇到数据重复插入、重复更新、消息重发发送等等问题,因为应用系统的复杂逻辑以及网络交互存在的不确定性,会导致这一重复现象,但是有些逻辑是需要有幂等特性的,否则造成的后果会比较严重,例如订单重复创建,这时候带来的问题可是非同一般啊。 什么是系统的幂等性幂等是数据中得一个概念,表示N次变换和1次变换的结果相同。 ...

2015-06-10 15:38:50 175

原创 软件架构模式转载

软件架构模式转载概要介绍最近一两年,转载文章越来越少了,之所以转载这篇文章,是因为看这篇文章,弄明白了我的一些问题。所以梳理了一下,结合了几篇文章。架构模式可以帮助你定义程序的基本特征和行为。例如一些架构模式很自然让程序成为大规模(scalable)的程序。有些模式让程序变得灵巧敏捷(agile)。知道这些架构的特征,优点和缺点,你就可以根据你特定的业务需求和目标从容的选择一种架构模...

2015-04-24 20:47:26 60

翻译 数据库ER图该怎么画

什么是ER图实体关系图,通过一张ER图,能够快速的了解数据库层面的表结构设计。目前做企业级应用系统,花费了大量的时间在数据库表结构的设计上,所以打算从源头梳理一下怎么样才能画好ER图,画好图是第一步,在这个过程中怎么样做好设计,然后来保证业务系统的功能实现以及扩展性的要求。 ER图的核心要素是什么实体:客观存在并可以相互区别的事物属性:实体所具有的一个属性关系:实...

2015-03-27 15:23:43 5746

翻译 编写可读代码的艺术-读书笔记

编写可读代码的艺术-读书笔记最近读这本书,总体感觉作者很实在,通过一个一个的小细节,诠释了可读代码的衡量情况。 代码应当易于理解代码的写法,应当便于别人理解它需要的时间最小化把信息装入名字中选择专业的词,避免使用空洞的词找到更有表现力的词避免像tmp这样的范范的名字像i、j等名字常用做索引或者迭代器,尽管空泛,但是大家都知道他的意思用具体的名字代替...

2015-03-24 23:30:27 51

翻译 Storm核心概念剖析

最近团队中有分析的场景,用到了JStorm来做数据的实时分析,于是花时间对于一些概念做了了解。 什么是Storm?这个的话出来应该有几年时间了,阿里巴巴也重写了一套JStorm,核心的类名都是服用的Storm的,他是一套实时数据处理系统,容错行好,然后足够稳定,目前很多数据实时分析的场景,选择Storm的越来越多了。  核心概念介绍    Nimbus:负责在集群里面...

2015-03-20 20:42:15 104

翻译 关系型数据库表结构设计规范-浅谈

数据库表结构设计规范-浅谈,为啥是浅谈呢,因为主要的观点还是来自原微信公共账号的一篇文章,稍微加了一些自己的看法。 谁来进行数据库的设计?肯定是具体的开发工程师来进行,开发同学的话,第一业务熟悉度比较高,第二结合OO和ORM的思想,能有比较好的运用关系型数据库的特性。如果是DBA同学的话,虽然对于数据库本身了解比较多,但是对于业务了解较少,很难有比较客观的设计。但是业务上线或者运行期...

2015-03-13 18:26:47 162

翻译 系统架构图那些事儿-浅析

​断断续续看过很多系统的架构图,种类和形式不一,然后使用的工具也不一,具体架构图怎么画呢,贴一下自己的一些看法。 软件的灵魂在于设计,设计的体现,往往用图会比较好的表达出来。 总体来看,能够描述清楚,别人能够看懂,我觉得图的效果就得到体现了。因为不同的系统特点不同,所以维护可能有侧重,只要能描述清楚即可。 架构可以通过不同的视图来体现,换个说话就是不同的角度来看到系统,...

2015-02-27 21:33:42 77

翻译 池和流的两种数据处理方式

在抽象层面,想了一下,目前很多的数据处理形式,一般分为池和流两种方式。 Pool池,最简单的理解,就是数据先流过来,我用一个池子存下来,之后再从池子里捞出来进行加工处理。 Pipeline管道流,在数据流动或者请求流动的过程中,在pipeline中添加Valve进行处理 ,这样在流的时候,经过处理。...

2014-11-19 22:59:23 79

翻译 系统负载剧变下的管控策略

假如目前的系统有100台机器,能够支撑每天1亿的点击量(这个就简单比喻一下),然后系统流量剧变了要,我如何应对,系统有那些策略可以处理,这里总结了一下之前的一些做法。1、水平扩展这个最容易理解,加机器,这样的话对于系统刚刚开始的伸缩性设计要求比较高,能够非常灵活的添加机器,来应对流量的变化。2、系统分组假如系统服务的业务不同,有优先级高的,有优先级低的,那就让不同的业务调用提前...

2014-11-11 23:15:02 47

翻译 关于CodeReview(java)

关于codereview,在平时的开发中,经常忽略的环节,参照目前介绍写好代码的几本书和之前掉进的坑,做了一个总结,分享出来。为什么要做通过review规避一些代码层面的问题提升可读性,方便后续扩展和维护double check 确保代码质量检查列表注释写有意义的注释DO属性上,名字无法识别业务含义的,加注释service接口和manager接口,...

2014-10-29 20:42:37 72

原创 推荐几款提升效率的小工具

推荐几款提升效率的小工具最近使用了几款工具,再结合之前用的一些,觉得挺不错的,效率有提升,现在分享出来。文本编辑器sublime:文本编辑器中的神器,需要付费,但是免费版可以永久使用,自动下载了sublime,现在文本都用它搞了,插件机制实在太帅了。下载地址:sublime思维导图xmind:虽然思维导图工具断断续续换了几个,但是还是xmind用的最爽了,在梳理事情的时候...

2014-07-29 23:41:01 409

翻译 java中各种各样的数据结构

在java中,有非常丰富的数据结构,可能是因为大多数的软件系统都是围绕数据来进行的,那自然而然也就会导致编程原因围绕不同的数据结构来做处理。  ​PS:栈是后进先出。     ...

2014-07-13 20:26:21 57

翻译 关于JVM的ClassLoader(笔记)

     众所周知,java是编译型的语言,写的是java文件,最后运行的是class文件,class文件是运行在JVM之中的,这时候就有一个问题,JVM如何装载class文件的?是通过ClassLoader来进行的,这里做一下笔记,因为发现原作者写的很好《深入分析java web 技术内幕》。ClassLoader的结构分析    ClassLoader是一个抽象类,他有很多子类,JV...

2014-07-13 12:19:52 46

翻译 关于事务的几个概念介绍

啥是事务?有一组操作组成的可靠的独立的工作单元。 ACID是咋回事?A(原子性)事务的原子操作单元,对数据的修改,要么全部执行,要么全部不执行;C(一致性)在事务开始和完成时,数据必须保持一致状态,相关的数据规则必须应用于事务的修改,以保证数据的完整性,事务结束时,所有的内部数据结构必须正确;I(隔离性)保证事务不受外部并发操作的独立环境执行;D(持久性)事务完成之后...

2014-06-06 22:22:02 60

翻译 开发中遇到的编码问题

1、说到编码,最大的问题就是乱码了,为啥会有乱码呢 ?因为字符在编码和解码的时候,用的编码字典不一致,从而导致了乱码,常见的编码有ASCII、GBK、GB2312、UTF-8、UTF-16等。 2、为啥需要编码呢?因为计算机的存储是二进制的,也就是01​010这种形式的,这样一些中文、法文、俄文等,就需要编码解码才可以达到效果。 3、java中数据类型的转换是啥?bi...

2014-05-22 19:39:35 40

翻译 关于模板方法模式(代码)

模板方法模式是一种比较简单的设计模式,这里写了一个例子出来。1、基本的模板方法实现2、模板方法中钩子方法的实现3、模板方法中回调的处理(带有回调功能的模板方法)​1234567891011121314151617181920212223242526272829...

2014-05-13 22:09:55 63

翻译 我读《大型网站技术架构》笔记

之前很早的时候了解过这本书,但是发现很多都是概念性的东西,没有意向看。后来在微博上看到一个我比较欣赏的架构师分享这本书,说是基本上涵盖了他过去十来年的一些点,于是打算买回来看了看。发现还是挺不错的,后面的案例有的过于宽泛,但是整体还是挺不错的。 架构一词,比较飘渺,隐藏在代码的背后,似有似无。大家对于架构师这个职位也褒贬不一。大型网站不是设计出来的,而是逐步发展演化过来的。 ...

2014-05-07 23:47:37 48

翻译 ThreadLocal源代码解析

最开始的时候,理解的ThreadLocal,我的理解是这样的:ThreadLocal<Thread,Map<k,v>> K的话是线程,V的话是线程的副本,是一个Map,里面可以方式多个变量的副本,后来发现是错的。今天翻了一下代码,画了一个类图。 关于ThreadLocalMap.table这个属性,类型是Entry[]用于真正存放数据的Entry,继承...

2014-04-24 17:54:04 37

翻译 关于单例模式(代码篇)

很早的时候,转发过一篇单例模式的文章:http://iamzhongyong.iteye.com/blog/1539642 最近又翻了一本设计模式的书,然后发现单例其实也简单也复杂,于是就打算把代码敲一下,保存下来。---------------------------------------------------------------------------------------...

2014-04-23 10:47:26 43

翻译 好的开发人员在项目经理眼中应该具备哪些素质

​这篇文章想写很长时间了,一直没下笔,今天终于空了一下,打算整理一下。最初的时候源自于去年的那个“项目经理经验总结”http://iamzhongyong.iteye.com/blog/1977551 工作几年来,在项目中做过纯开发,也做过项目经理,于是有了这些总结。有些点自己做的也不是很好,权当拿来自我反省吧。 1、积极,主动性这个其实比较重要,如果说技术实力不强,有些东西...

2014-04-18 22:38:02 49

翻译 今天遇到的两个spring相关的两个问题

今天在项目中写代码,遇到两个Spring的问题,记录一下。再一次看到了spring的灵活之处。1、@Autowired没有生效打算用unitils来搞一下单元测试,于是搞了一个spring的xml文件,里面配置了几个Bean,然后用unitils的注解搞了(为啥用这个?主要是考虑少写点代码,以前是直接用ClassPath***ApplicationContext来搞的),但是发现有的be...

2014-04-18 21:56:30 33

翻译 我读《六顶思考帽》

     前段时间看了《六顶思考帽》,一直想写的笔记,但是又想换种形式,于是这次用了PPT来做,发现自己做PPT的水平还处于比较业余的水平中啊。                            ...

2014-04-13 15:48:21 77

原创 Activiti中的命令模式解析

最近在看Activiti的源代码,发现是基于命令模式进行的开发,所以对于Command模式做了个了解。什么是命令模式?这个随便翻开一本模式的书,都有介绍,这里就不再冗余了。画一个Command的图,然后加一个例子吧,方法和类的命名加入了自己的理解。1、模式的根本是把“行为的请求者”和“行为的处理者”分开,实现解耦;2、实现Command的ConcreteCommand,有时候要跟...

2014-04-11 13:10:13 596

原创 关于java中的本地缓存-总结概述

java中的本地缓存,工作后陆续用到,一直想写,一直无从下手,最近又涉及到这方面的问题了,梳理了一下。自己构造单例、guava、ehcache基本上涵盖了目前的大多数行为了。 为什么要有本地缓存?在系统中,有些数据,数据量小,但是访问十分频繁(例如国家标准行政区域数据),针对这种场景,需要将数据搞到应用的本地缓存中,以提升系统的访问效率,减少无谓的数据库访问(数据库访问占用数据库连...

2014-03-31 19:00:48 336

原创 使用guava中的EventBus构建内存级别的事件引擎

这个EventBus是guava中比较给力的一个类,从字面上看是事件总线,解决了传统的观察这模式的问题,使用比较灵活方便。最近打算搞一个轻量级的事件驱动引擎,重点参照了这个类EventBus,如果是内存级别的事件分发或者MQ,推荐直接用EventBus。 关于EventBus中的几个问题?1、  事件定义:任意的对象即可;2、  事件处理器的注册:事件处理的方法,添加注解即可,...

2014-03-25 19:27:20 205

翻译 浅谈面向对象和设计的基本原则

最近开始反观OO以及设计的原则,发现之前理解的确实比较浅显,翻了一些书,然后做一下比较吧。 ​面向对象编程(OO)的核心是啥?看了一些文章之后,应该是四个关键字,抽象、封装、继承、多态,后面三个环环相扣。没有封装就谈不上继承,没有继承也就没有了多态。 ​1、封转的目的是将代码切分成多个模块,每个模块之间的关联性降到最低,这里其实就是模块内部高内聚,模块之间低耦合,降低相互依赖的复杂度...

2014-03-24 21:24:17 73

翻译 DSL的基本介绍(groovy来进行构建)

什么是DSL?领域特定语言,针对一个特定的领域,具有受限表达性的一种计算机程序语言。可以看做是一种抽象处理的方式。具有四个元素,第一个是计算机程序设计语言,使用DSL来指挥计算机做事情,语言性(一种特定的语言),受限的表达性,并不像同通用的设计语言那样具有广泛的能力,针对一个明确的领域。分类有哪些?外部DSL:不同于应用系统主要使用语言的语言,通常采用自定义语法,宿主应用的代码采...

2014-03-04 23:32:25 887

翻译 qlexpress规则引擎初探

qlexpress是啥?这个是阿里内部的一个开源的java规则引擎。开源的链接地址如下:http://code.taobao.org/p/QLExpress/wiki/index/ 主要的原理是啥?按照之前阅读的文档以及代码,主要是定义规则、解析规则、执行规则几个步骤,编译的过程类似java class文件的编译过程,首先进行词法分解、词法分析、语法分析、规则执行等步骤。 ...

2014-02-25 22:28:16 1260

翻译 再读《拆掉思维的墙》

​这本书在刚刚实习的时候就看了,然后就放在书架上去了,今天自己在家拿出来翻了一下,有了不一样的体会。关于安全感、关于兴趣、关于目标、关于受害者等等。作者古典确实是这个浮躁的时代中为数不多的独立思考者。关于潜能潜能就好像是你的咨询顾问,如果一开始你就信任它,他就会越来越努力,为你做越来越多的事情。如果你一开始不信任它,他就会慢慢远离你,在你需要的时候,他也不会来了。关于恐惧恐惧就像...

2014-01-18 20:14:45 79

翻译 2013年个人精选博客

2013年坚持写文章,在自己不是很忙的时候,把工作中用到的或者自己观察到的记录了下来。下面整理13年博客中比较受欢迎的(跟进阅读数和评论的情况),把我认为还不错的梳理在这里。1、《我读打造Facebook》http://iamzhongyong.iteye.com/blog/1768940这本书非常值得推荐。2、《网易云阅读移动架构》http://iamzhongyong....

2014-01-18 16:37:51 36

翻译 在java中使用groovy怎么搞 (java and groovy)

什么是groovy?一种基于Java虚拟机的动态语言,可以和java无缝集成,正是这个特性,很多时候把二者同时使用,把groovy作为java的有效补充。对于Java程序员来说,学习成本几乎为零。同时支持DSL和其他简介的语法(例如闭包),使代码便于阅读。可以用groovy的动态特性来做规则引擎,在DB中维护脚本,业务变化的时候让应用系统动态加载。 如果引入groovy在java工...

2014-01-15 23:17:36 177

翻译 关于java中的锁

对于锁一直处于比较模糊的状态,最近一天晚上偶然想看看,就翻了几本书,然后弄明白了一些概念,有一些仍然没明白,例如AQS,先把搞明白的记录一下吧。 什么是线程安全?当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的。代码本省封装了所有必要...

2014-01-09 22:40:16 26

翻译 关于供应链的一些基本概念

    ​    ​最近买了一本供应链方面的书《香港李丰集团实践》,大体看了一下,很多东西不是很懂,就搞几个简单的概念记录一下吧,算是自己的笔记了。 什么是供应链?这个可能会见仁见智,目前没有统一的概念。作者总结了三个方面:1、供应链由客户需求开始,贯穿从产品设计到原材料供应、生产、批发、零售等过程,中间可能会有仓储和物流,把产品送到用户的各项业务活动;2、供应链的参与者,包...

2013-12-30 22:49:23 358

翻译 关于git的一点笔记

很早的时候注册了github,然后搞了一些自己写的代码上去,逐渐学会了使用git,但是目前也仅仅是一个很浅的初级,觉得有必要记录一下呵呵。其实看很多文章帮助可能也不是很大,不如自己实际操作一下:1、在github上面创建一个仓库;2、git clone dddddd /dir  克隆到本地;3、git add  添加文件到working memory;4、git commit...

2013-12-24 23:18:14 31

翻译 RMICache组件设计(remote method cache)

    ​    ​一个复杂的系统,可能外部一个web请求,调用到服务端之后,会变成多个请求,可能是再次请求外部,也可能是请求外部的DB,这时候就面临一个问题,就是一个请求,如何不被重复发送,例如根据userId在数据库查询用户信息,这个操作,可能会由于新人改代码,明明线程内已经请求过一次了,还会再继续请求,这个时候就多了一次网络开销。    ​    ​这种问题如何避免呢?也可能有答案,...

2013-12-24 21:30:42 31

翻译 rework启示

    ​    ​很早读过的一本书 ,最开始知道这本书,还是在@左耳朵耗子的博客中看到的,看了读后感之后http://coolshell.cn/articles/9156.html 就立即下单买了,本来打算参照耗子叔叔的博客搞一篇文章呢,写着写着发现道行不够,暂且做简单的评论吧。    ​    ​rework-更为简单有效的商业思维    ​     ​    ​“关于工作狂...

2013-12-24 21:14:29 61

提示
确定要删除当前文章?
取消 删除