摘要: 在前面的一篇文章《图形数据库Neo4J简介》中,我们已经对其内部所使用的各种机制进行了简单地介绍。而在我们尝试对Neo4J进行大版本升级时,我发现网络上并没有任何成型的样例代码以及简介,而其自身的文档也对如何使用Spring Data Neo4J介绍得语焉不详。因此在本文中,我们就将简单地介绍如何使阅读全文
posted @ 2017-01-27 17:17 loveis715 阅读(11796) 评论(7) 编辑
摘要: 相信大家都听说过Amazon的AWS。作为业内最为成熟的云服务提供商,其运行规模,稳定性,安全性都已经经过了市场的考验。时至今日,越来越多的应用被部署在了AWS之上。这其中不乏Zynga及Netflix这样著名的服务。 然而这一切并没有停滞不前:AWS根据市场的变化提供了越来越多的内建服务,在降低了阅读全文
posted @ 2016-03-28 01:21 loveis715 阅读(1127) 评论(0) 编辑
摘要: 在最近的一次Microservices Practitioner Summit中,原Netflix工程师介绍了一种越来越常见的对Microservice的误用。简单地说,大家在搭建一个基于Microservice的服务时常常依赖同一套类库,进而使得Microservice中的各个子服务无法选择最适合阅读全文
posted @ 2016-03-24 21:08 loveis715 阅读(3656) 评论(3) 编辑
摘要: 在前面的一篇文章《图形数据库Neo4J简介》中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法。而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介绍。 接触Cassandra的原因与接触Neo4J的原因相同:我们的产品需要能够记录一系列关系型数据库所无法快速阅读全文
posted @ 2016-03-21 00:43 loveis715 阅读(77173) 评论(13) 编辑
摘要: 最近我在用图形数据库来完成对一个初创项目的支持。在使用过程中觉得这种图形数据库实际上挺有意思的。因此在这里给大家做一个简单的介绍。 NoSQL数据库相信大家都听说过。它们常常可以用来处理传统的关系型数据库所难以解决的一系列问题。通常情况下,这些NoSQL数据库分为Graph,Document,Col阅读全文
posted @ 2016-03-16 01:19 loveis715 阅读(70140) 评论(11) 编辑
摘要: 注:这是大概四年前写的文章了。而且我离开.net领域也有四年多了。本来不想再发表,但是这实际上是Active Object模式在.net中的一种重要实现方法,因此我把它掏出来发布一下。如果该模型有新的发展,望在评论中帮给出一个引用,以便其它读者知晓。感激不尽 基于事件的异步模型实际上是MSDN中讲解阅读全文
posted @ 2016-03-07 13:43 loveis715 阅读(1635) 评论(1) 编辑
摘要: 本文中,我们将对ZooKeeper进行介绍。简单地说,ZooKeeper是一个用来在构成应用的各个子服务之间进行协调的一个服务。 由于其本身并没有特别复杂的机制,因此我们将会把更多的笔墨集中在如何对ZooKeeper进行使用方面。当然,这也是和其它博文所略有不同的地方,否则我也不会花费时间去写这这篇阅读全文
posted @ 2016-03-03 11:11 loveis715 阅读(2356) 评论(2) 编辑
摘要: 本来不想起一个英文名,但是想来想去都没能想出一个简洁地表述该意思的中文释义,所以就用了一个英文名称,望见谅。 Cloud Native是一个刚刚由VMware所提出一年左右的名词。其表示在设计并实现一个应用时,软件开发人员需要尽量使用云所提供的一系列较为先进的特性来提高应用的开发及部署效率,并使得应阅读全文
posted @ 2016-02-17 03:44 loveis715 阅读(1289) 评论(0) 编辑
摘要: 在前一篇文章中,我们已经对Enterprise Integration Pattern中所包含的各个组成进行了简单地介绍。限于篇幅(20页Word以内),我并没有深入地讨论各个组成。但是如果要真正地按照Enterprise Integration Pattern搭建一个系统,仅仅是了解它们实际上还差阅读全文
posted @ 2016-02-16 10:27 loveis715 阅读(1424) 评论(0) 编辑
摘要: 近些年来,越来越多的Web应用正在逐渐向大型化的方向发展。它们通常都会包含一系列相互协作的子服务。在开发过程中,如何让这些子服务协同工作常常是软件开发人员所最为头疼的问题,如各个子服务之间的数据表示不一致,处理并发的能力不同,进行沟通的网络不稳定等。为了解决这些问题,世界各地的优秀程序员提出了一系列阅读全文
posted @ 2016-02-15 14:25 loveis715 阅读(2607) 评论(0) 编辑
摘要: 在编写一个应用时,我们常常考虑的是该应用应该如何实现特定的业务逻辑。但是在逐渐发展出越来越多的用户后,这些应用常常会暴露出一系列问题,如不容易增大容量,容错性差等等。这常常会导致这些应用在市场的拓展过程中无法快速地响应用户的需求,并最终失去商业上的先机。 通常情况下,我们将应用所具有的用来避免...阅读全文
posted @ 2016-01-03 23:23 loveis715 阅读(10617) 评论(22) 编辑
摘要: 之所以写这篇文章,源自于组内的一些技术讨论。实际上,Effective Java的Item 37已经详细地讨论了Marker Interface。但是从整个Item的角度来看,其对于Marker Interface所提供的一系列优点及特殊特性实际上是持肯定态度的。因此很多人,包括我的同事,都将该...阅读全文
posted @ 2016-01-02 11:50 loveis715 阅读(2807) 评论(0) 编辑
摘要: 在Web服务开发中,服务端缓存是服务实现中所常常采用的一种提高服务性能的方法。其通过记录某部分计算结果来尝试避免再次执行得到该结果所需要的复杂计算,从而提高了服务的运行效率。 除了能够提高服务的运行效率之外,服务端缓存还常常用来提高服务的扩展性。因此一些大规模的Web应用,如Facebook,...阅读全文
posted @ 2015-07-28 00:11 loveis715 阅读(20166) 评论(3) 编辑
摘要: 一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式。”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则。 在您将看到的这一篇文章中,我们将对REST,尤其是基于HTTP的REST服务进行详细地介绍。...阅读全文
posted @ 2015-07-23 00:08 loveis715 阅读(142703) 评论(77) 编辑
摘要: 在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书《Building Microservices》。该书描述了如何按照Microservice架构模式设计及搭建一个具有良好扩展性并可持续开发的系统。除此之外,该书还将基于该模式的系统...阅读全文
posted @ 2015-07-13 23:46 loveis715 阅读(35087) 评论(23) 编辑
摘要: 在使用Java编写应用的时候,我们常常需要通过第三方类库来帮助我们完成所需要的功能。有时候这些类库所提供的很多API都通过throws声明了它们所可能抛出的异常。但是在查看这些API的文档时,我们却没有办法找到有关这些异常的详尽解释。在这种情况下,我们不能简单地忽略这些由throws所声明的异常...阅读全文
posted @ 2015-06-23 23:18 loveis715 阅读(8371) 评论(3) 编辑
摘要: 在我刚刚接触现在这个产品的时候,我就在我们的代码中接触到了对Double Brace Initialization的使用。那段代码用来初始化一个集合:1 final Set exclusions = new HashSet() {{2 add(‘Alice’);3 add(‘Bo...阅读全文
posted @ 2015-06-22 21:41 loveis715 阅读(1398) 评论(2) 编辑
摘要: 现在请跟我做:在您的浏览器的地址栏中输入www.yhd.com并敲击回车。在网站内容全部加载完毕后,按F12打开浏览器的调试窗口。当切换到Sources页时,您会发现您当前所看到的一号店的页面是从多个不同的域中得到的: 或许有些读者会感到奇怪:在之前自己 写网页的时候就曾经尝试访问非当前域中的...阅读全文
posted @ 2015-06-21 21:21 loveis715 阅读(35125) 评论(9) 编辑
摘要: 在之前的一篇文章《放好你的密码 - 从芝麻金融被攻破说起》中,一位读者在评论中提出了“如果整个过程速度比较慢登陆会有问题”这样一条评论。虽然说我对文章的正确性很有把握,但也仍需要仔细思考是否自己哪里没有说清楚。在这个思考过程中,我想起了一个非常值得一说的话题,那就是负载平衡。 在那篇文章中我们...阅读全文
posted @ 2015-06-02 23:05 loveis715 阅读(5317) 评论(15) 编辑
摘要: 注:这一系列都是小品文。它们偏重的并不是如何实现模式,而是一系列在模式实现,使用等众多方面绝对值得思考的问题。如果您仅仅希望知道一个模式该如何实现,那么整个系列都会让您失望。如果您希望更深入地了解各个模式的常用法,并对各个模式进行深入地思考,那么希望您能喜欢这一系列文章。 在昏黄的灯光下,我开始了...阅读全文
posted @ 2015-05-29 22:09 loveis715 阅读(1925) 评论(0) 编辑
摘要: 在之前的一篇文章中,我们已经介绍了如何为一个应用添加对CAS协议的支持,进而使得我们的应用可以与所有基于CAS协议的单点登陆服务通讯。但是现在的单点登陆服务实际上并不全是通过实现CAS协议来完成的。例如Google就使用OAuth协议来管理它的帐户。 相较于CAS协议,OAuth协议不仅仅可以...阅读全文
posted @ 2015-05-12 20:46 loveis715 阅读(4639) 评论(1) 编辑
摘要: 相信大家对单点登陆(SSO,Single Sign On)这个名词并不感到陌生吧?简单地说,单点登陆允许多个应用使用同一个登陆服务。一旦一个用户登陆了一个支持单点登陆的应用,那么在进入其它使用同一单点登陆服务的应用时就不再需要重新登陆了。而CAS协议则正是各单点登陆产品所需要实现的协议,其全称为...阅读全文
posted @ 2015-05-11 00:09 loveis715 阅读(14401) 评论(4) 编辑
摘要: 最近几天有点忙,所以我们今天来一篇短的,简单地介绍一下数据库设计中的一种模式——Soft Delete。 可以说,该模式毁誉参半,甚至有非常多的人认为该模式是一个Anti-Pattern。因此在本篇文章中,我们不仅仅会对该模式进行介绍,同时也会列出该模式可能导致的一系列问题,以帮助大家正确地决...阅读全文
posted @ 2015-05-09 22:27 loveis715 阅读(2888) 评论(0) 编辑
摘要: 拿着刚磨好的热咖啡,我坐在了显示器前。“美好的一天又开始了”,我想。 昨晚做完了一个非常困难的任务并送给美国同事Review,因此今天只需要根据他们提出的意见适当修改代码并提交,一周的任务就完成了。剩下的两三天里,我就可以有一些空余的时间看看其它资料来继续充实自己了。 打开Review Bo...阅读全文
posted @ 2015-05-06 21:46 loveis715 阅读(3953) 评论(4) 编辑
摘要: 今天在帮一个兄弟检查一段自定义控件的代码时觉得他对xtype以及alias的使用和ExtJS各示例代码的使用有较多的不一致,而我自己也不是很清楚使用这两个属性时的最佳方法。因此在回家后整理出了这样一篇文档。一方面用来标准化我们自己的代码,另一方面也共享给大家,毕竟对这两个属性进行详细讨论的资料几...阅读全文
posted @ 2015-04-21 23:25 loveis715 阅读(1621) 评论(0) 编辑
摘要: 在一个Web服务的实现中,我们常常需要访问数据库,并将从数据库中所取得的数据显示在用户页面中。这样做的一个问题是:用于在用户页面上展示的数据和从数据库中取得的数据常常具有较大区别。在这种情况下,我们常常需要向服务端发送多个请求才能将用于在页面中展示的数据凑齐。 一个解决该问题的方法就是根据不同...阅读全文
posted @ 2015-04-13 22:32 loveis715 阅读(17995) 评论(7) 编辑
摘要: 昨天午休时,新浪上的一条新闻引起了我的注意。新闻中说,一家叫芝麻金融的P2P网站数据库泄露,并且数据库中所记录的密码仅经过一次哈希。虽然说我不是攻破它的白帽,更没有仔细地研究这些泄露的数据,但如果报告所言不虚,其中所提及的各个问题实际上非常严重。因此我觉得有必要对如何在系统中保存密码以及为什么要...阅读全文
posted @ 2015-04-11 13:04 loveis715 阅读(3485) 评论(6) 编辑
摘要: 是的,文章的题目看起来很牛,我承认。 附加属性是WPF中的一个非常重要的功能。例如在设置布局的过程中,软件开发人员就常常通过DockPanel的Dock附加属性来设置其各个子元素所处的布局位置。同样地,在为程序添加一个新的功能时,我们也常常需要创建自定义的附加属性来完成该功能。附加属性简介 ...阅读全文
posted @ 2015-03-20 20:40 loveis715 阅读(1452) 评论(1) 编辑
摘要: 依赖项属性的重写 在基于C#的编程中,对属性的重写常常是一种行之有效的解决方案:在基类所提供的属性访问符实现不能满足当前要求的时候,我们就需要重新定义属性的访问符。 但对于依赖项属性而言,属性执行逻辑的重新定义并不能存在于CLR属性包装中:WPF内部对依赖项属性的实现要求依赖项属性的CLR包装实...阅读全文
posted @ 2015-03-19 22:37 loveis715 阅读(840) 评论(0) 编辑
摘要: 依赖项属性元数据 在前面的章节中,我们已经介绍了WPF依赖项属性元数据中的两个组成:CoerceValueCallback回调以及PropertyChangedCallback。而在本节中,我们将对其它元数据属性进行讲解。 首先让我们来看看元数据对默认值的支持。在元数据的构造函数中,软件开发人员...阅读全文
posted @ 2015-03-18 23:25 loveis715 阅读(1569) 评论(0) 编辑