摘要:
synchronized与ReentrantLock都是可重入锁,区别两者之前,先介绍可重入锁的概念。 可重入锁 同一个线程可以在对象锁还没释放时,可再次获取这个对象的锁。同一个线程每次获取锁,锁的计数器加1,释放一次锁,计数器减1,直到计数器为0,完全释放锁。 synchronized与Reent 阅读全文
摘要:
本节探讨Character类,它的基本用法我们在包装类第一节已经介绍了,本节不再赘述。Character类除了封装了一个char外,还有什么可介绍的呢?它有很多静态方法,封装了Unicode字符级别的各种操作,是Java文本处理的基础,注意不是char级别,Unicode字符并不等同于char,本节 阅读全文
摘要:
本节继续探讨包装类,主要介绍Integer类,下节介绍Character类,Long与Integer类似,就不再单独介绍了,其他类基本已经介绍完了,不再赘述。 一个简单的Integer还有什么要介绍的呢?它有一些二进制操作,我们来看一下,另外,我们也分析一下它的valueOf实现。 为什么要关心实现 阅读全文
摘要:
Dobbo 阿里开源的高性能、轻量级的RPC框架,提供服务自动注册、服务自动发现等高效服务治理方案,可以和Spring无缝集成。底层使用Netty,基于TCP协议,配合Hession序列化完成RPC通信。 组成部分之间关系 其中,container负责启动,加载,运行服务提供者。 整体架构 接口服务 阅读全文
摘要:
RPC 远程过程调用协议。通过网络从远程计算机程序请求服务,不关心底层网络技术的协议。简而言之,RPC从一台机器(客户端)通过参数传递的方式调用另一台机器(服务器)的方法(服务)并得到返回结果。 RPC干了什么? 确定客户端与服务端间的通信协议 高效网络通信(一般选择Netty作为网络通信框架) 服 阅读全文
摘要:
前面两节讨论了Java 8中的函数式数据处理,那是对38节到55节介绍的容器类的增强,它可以将对集合数据的多个操作以流水线的方式组合在一起。本节继续讨论Java 8的新功能,主要是一个新的类CompletableFuture,它是对65节到83节介绍的并发编程的增强,它可以方便地将多个有一定依赖关系 阅读全文
摘要:
上节初步介绍了Java 8中的函数式数据处理,对于collect方法,我们只是演示了其最基本的应用,它还有很多强大的功能,比如,可以分组统计汇总,实现类似数据库查询语言SQL中的group by功能。 具体都有哪些功能?有什么用?如何使用?基本原理是什么?本节进行详细讨论,我们先来进一步理解下col 阅读全文
摘要:
上节我们介绍了Lambda表达式和函数式接口,本节探讨它们的应用,函数式数据处理,针对常见的集合数据处理,Java 8引入了一套新的类库,位于包java.util.stream下,称之为Stream API,这套API操作数据的思路,不同于我们在38节到55节介绍的容器类API,它们是函数式的,非常 阅读全文
摘要:
在之前的章节中,我们的讨论基本都是基于Java 7的,从本节开始,我们探讨Java 8的一些特性,主要内容包括: 传递行为代码 - Lambda表达式 函数式数据处理 - 流 组合式异步编程 - CompletableFuture 新的日期和时间API 本节,我们先讨论Lambda表达式,它是什么? 阅读全文
摘要:
上节,我们介绍了Java中的标准序列化机制,我们提到,它有一些重要的限制,最重要的是不能跨语言,实践中经常使用一些替代方案,比如XML/JSON/MessagePack。 Java SDK中对这些格式的支持有限,有很多第三方的类库,提供了更为方便的支持,Jackson是其中一种,它支持多种格式,包括 阅读全文