jackson,fastjson,Gson比较分析

2019-09-26
阅读 4 分钟
12.2k
1 快并不是唯一需要考虑的因素等,相对于数据库IO,json解析时间可以忽略不计2 fastjson针对特定需求做了很多优化,导致校验不严格,比如数组[],夏令时,末尾不带,等都能转成对象3 jackson功能更强大,可配置化程度更高(fastjson)比如序列化guava类型,序列化java8中的时间日期等,常见配置如下

Apollo源码分析(二): Apollo的代码层次

2019-06-21
阅读 11 分钟
8.1k
不同与其它中间件框架,Apollo中有大量的业务代码,它向我们展示了大神是如何写业务代码的:maven依赖的层次结构,如何进行基础包配置,以及工具类编写,可以称之为springboot之最佳实践。

Apollo源码分析(一):Apollo简介 & 架构演进

2019-06-04
阅读 3 分钟
7.6k
1 简单,Apollo是我现在看起来最"简单"的源码不会像spring封装了一层又一层,把人绕晕,而apollo没有那么多封装,上手快,我们学习就应该从简单的开始,凭什么非要去学封的像粽子一样的spring源码,我们就是要去学简简单单,平时朴素,接地气的源码

如何用5W rmb支持34W并发

2019-01-12
阅读 2 分钟
1.5k
在《这垃圾APP,差点毁了70万高考生》一文中,我们的报考app是用5W rmb 向供应商采购。在报名当天涌入海量考生,并发数飙升至34W,导致系统宕机,拒绝服务,导致考生无法报名,舆情哗然。

从汇编看Volatile的内存屏障

2018-04-11
阅读 5 分钟
9.6k
Java的Volatile的特征是任何读都能读到最新值,本质上是JVM通过内存屏障来实现的,让我们看看从字节码以及汇编码的角度,来看下是否真是如此?

JDK源码中的一些“小技巧”

2018-03-23
阅读 5 分钟
4.6k
这段代码是用于判断字符串是否相等,但有个奇怪地方是用了i--!=0来做判断,我们通常不是用i++么?为什么用i--呢?而且循环次数相同。原因在于编译后会多一条指令:

Java unsafe操作指北

2018-03-19
阅读 3 分钟
3.5k
Unsafe是Java无锁操作的基石,在无锁并发类中都少不了它们的身影,比如ConcurrentHashMap, ConcurrentLinkedQueue, 都是由Unsafe类来实现的。相对于与Java中的锁,它基本无开销,会原地等待。本文主要介绍下Unsafe中的主要操作。

用Kolb学习模型来学编程

2018-02-01
阅读 3 分钟
4.8k
1984年, 大卫·库伯曾在他的著作《体验学习:体验——学习发展的源泉》提出了学习圈理论,与他认为经验学习过程是由四个适应性学习阶段构成的环形结构,包括具体经验(Concrete Experience),反思性观察(Reflective Observation),抽象概念化(Abstract Conceptualization),主动实践(Active Experimentation)。

微服务网关方案调研

2018-01-15
阅读 3 分钟
12.8k
经调研,使用Spring Cloud Zuul解决方案的占多数,已经能满足绝大多数公司需求。但除了一些超级公司外,比如阿里,京东,他们是自己撸的一套网关。此外,点评直接采用的nginx负载均衡前置网关,而没用第七层网关,原因据说是七层网关会影响性能,但由于对其架构不甚了解,所以也不得而知。

Spring Cloud分布式事务终极解决方案探讨

2018-01-09
阅读 5 分钟
92k
一 小小推广 讲座 本话题已收入视频讲座《Spring Cloud分布式事务解决方案》大家不妨围观下 开源项目 我们利用消息队列实现了分布式事务的最终一致性解决方案,请大家围观。可以参考Github CoolMQ源码,项目支持网站: [链接],最新文章或实现会更新在上面 二 前言 阿里2017云栖大会《破解世界性技术难题!GTS让分布式事...

白话RabbitMQ(五): 主题路由器(Topic Exchange)

2018-01-02
阅读 4 分钟
3.3k
在之前的建立路由中我们改进了日志系统。我们摒弃无脑发送消息的广播路由器,而使用能够根据绑定键(binding key)来发送消息的,从而能有有选择的后去logs.

白话RabbitMQ(四): 建立路由

2018-01-01
阅读 4 分钟
3k
在订阅/发布中我们建立了一个简单的日志系统,从而将log消息广播给一些消费者。这章我们会在此基础上加入一些新的特性-我们将有针对性的进行消息分发,比如,只把错误(error)消息保存到磁盘,与此同时,打印出所有的消息。

白话RabbitMQ(三):发布/订阅

2018-01-01
阅读 4 分钟
3.4k
为了更好的阐述这个模式,我们会建立一个新的简单的logging系统,包含2个步骤-第一步发送log信息,第二步能够接受并将信息打印出来,而且在第二步中所有的消费者都会接受到同样的消息,比如一个消费者用来将log信息写到磁盘,另外一个接受信息并显示在屏幕上。因此一旦有有消息,消息会广播到所有的消费者。

白话RabbitMQ(二): 任务队列

2017-12-31
阅读 7 分钟
5.6k
在第一篇中我们描述了如何最简单的RabbitMQ操作,如何发送、接受消息。在今天这篇文章中我们将描述如何创建一个任务队列,来将高耗时的任务分发到多个消费者,从而提高处理效率。

大数据导入优化

2017-12-25
阅读 1 分钟
3.1k
公司年终要办一个抢购活动,抢购活动维护有一份名单(txt文件),只有名单中的用户可以参加抢购活动,所以需要把名单导入到内存数据库中,以便于检验用户是否有资格。

白话rabbitmq(一): HelloWorld

2017-12-24
阅读 4 分钟
3.4k
消息队列想必大家都有一定了解:用来解耦,上级模块不用关心下级模块是否执行成功,最常见的比如说日志,核心系统并不关心日志是否成功,日志什么时候记录。这种情形就可以用消息队列来解耦。

Rabbitmq各参数详解

2017-12-15
阅读 4 分钟
15.3k
Rabbitmq舍弃了繁重的事务消息而使用了消息确认机制实现了分布式事务,实在是解耦之一大神器。但是其配置起来挺麻烦,各种参数,各种调整。但国内貌似资料很少,找来找去都找不到,自己撸一发先

PV统计优化设计

2017-12-02
阅读 2 分钟
7.4k
经调研发现这绝对是一个坑,pv、uv统计存在的设计看起来简单,但是瞬间流量大,特别是有抢购等功能时,设计不良会导致数据库访问压力大,还存在被用心不良者利用等情况。

微服务spring-cloud中 redis cache annotation操作指北

2017-10-20
阅读 7 分钟
6.9k
Cache通常意义上是指高速缓存,它与数据库最大的区别是“更快”,可能会快上100倍,而且Cache是全部运行在内存中,而数据库中的数据一般都是存在硬盘中,而IO一直都是网站等大规模系统的瓶颈,如果不使用Cache,完全用数据库,当访问量过大时将导致数据丢失,更严重时会导致系统崩溃,特别是遇到恶意攻击的情况,所以缓存...

(微服务)分布式事务-最大努力交付 && 消息最终一致性方案

2017-10-09
阅读 5 分钟
34.3k
分布式系统最终一致性有N种方案,比如2PC(2阶段事务) ,以及三段提交等等,但开销较大,实现起来复杂,比如2阶段事务为例,需要引入一个协调者(Coordinator)来统一掌控所有参与者(Participant)的操作结果

concurrentmap并非线程安全

2017-06-06
阅读 1 分钟
1.8k
Thread A calls containsKey and finds out that the key is not present, but is immediately suspended.Thread B calls containsKey and finds out that the key is not present, and has the time to insert its value v2.Thread A resumes and inserts v1, "peacefully" overwriting (since put is threadsafe) the ...

CSP(Common Service Platform)部署记录-新建server

2017-05-18
阅读 1 分钟
1.5k
CSP(Common Service Platform)实现了负载均衡、分布容错等功能,流程图可参考:[链接] 现将部署步骤记录如下,我们以最简单的echo项目为例 按照方法二来进行部署,此时不需要中央处理器来分发 1 建立Proxy工程 其中Names.java用于记录服务名称proto里的类是实体类,用来表述接受和发送的实体类EchoSrvProxy为代理对象,...

Netty简明教学文档

2017-05-02
阅读 3 分钟
3.1k
写个简单点,比较小白的文档,言语比较接地气 Netty是什么?NIO的高层封装,NIO很难写,所以有了Netty,方便异步的操作 service的主要代码片段 {代码...} 按照代码顺序解释如下 (1) EventLoopGroup bossGroup = new NioEventLoopGroup(); 事件循环队列,用来接受或发送事件。大家可以把他想象成邮局,消息都要先到邮局...

java的线程、锁相关

2017-05-02
阅读 2 分钟
1.7k
当中有个lock指令,这个指令是做什么的呢?1)将当前处理器缓存行的数据写回到系统内存。2)这个写回内存的操作会使在其他CPU里缓存了该内存地址的数据无效。