阿里巴巴为什么不用 ZooKeeper 做服务发现?

历史的迷思

站在未来的路口,回望历史的迷途,常常会很有意思,因为我们会不经意地兴起疯狂的念头,例如如果当年某事提前发生了,而另外一件事又没有发生会怎样?一如当年的奥匈帝国皇位继承人斐迪南大公夫妇如果没有被塞尔维亚族热血青年普林西普枪杀会怎样,又如若当年的丘老道没有经过牛家村会怎样?

2007年底,淘宝开启一个叫做“五彩石”的内部重构项目,这个项目后来成为了淘宝服务化、面向分布式走自研之路,走出了[……]

Read more

Spring MVC:Tomcat,Servlet,Spring

最近迷上了tomcat,小研究了下多层容器结构,下图来自互联网

Spring MVC相关的内容,一些基本的概念,转载几个讲解的部分内容学习一下

web容器中有servlet容器,spring项目部署后存在spring容器和springmvc容器。其中spring控制service层和dao层的bean对象。springmvc容器控制controller层bean对象。servlet容器[……]

Read more

React入门实例教程

转一篇React基础教程:阮一峰:React 入门实例教程

我学习 React 时,就很苦恼。有的教程讨论一些细节问题,对入门没帮助;有的教程写得不错,但比较短,无助于看清全貌。我断断续续学了几个月,看过二十几篇教程,在这个过程中,将对自己有帮助的 Demo 都收集下来,做成了一个库 React Demos 。

下面,我就根据这个库,写一篇全面又易懂的 React 入门教程。你只需要跟着每一个[……]

Read more

Java多线程wait()用while代码块的理解

多线程wait()判断条件这个地方的逻辑琢磨了挺久的,本意就是拿到锁之后如果条件不满足就等待,感觉用if和while似乎没啥区别

首先是生产者,单独一个线程,和消费者共用一个锁和一个队列,都通过构造方法传入

1.线程里直接死循环持续生产消息,消息体最好不一样,可以弄个随机数,我这里用了微妙时间戳,调用add()方法

2.需要添加一个条件,如果队列已经满了,就不能继续添加了,调用wait()方法等待[……]

Read more

Spring:@Service注解

正常Spring通过在xml里对bean进行装配和注入,然后通过@Resource,@Autowired注解来完成自动装配的工作,之前写过一篇两者之间的区别:Spring:自动装配的疑惑,@Autowired和@Resource梳理

我还是比较习惯用@Resource,毕竟是JDK自带,byName也更习惯一些

比如定义一个类

package com.lihuia.spring.hello;[......]

Read more

腾讯云MongoDB优化让LBS服务性能提升十倍

一篇挺有感觉的文章,文中的问题根源,性能瓶颈,以及优化方式,基本和去年我厂LBS服务做性能优化的过程比较类似,包括文中最后提及的MongoDB和Redis的性能对比,大方向也基本一致,只不过毕竟小厂人力和财力都无法和巨头相提并论,对于MongoDB的优化基本为零,经常还会出现超时,连接异常等,还是因为技术储备不足,后来引入了Uber的H3算法,然后用Redis替代了MongoDB,完成了位置服务一[……]

Read more