Java HashMap类源码解析(续)-TreeNode
由于TreeNode本身是红黑树的实现,所以在分析TreeNode的之前我还是摸了一篇算法导论里红黑树的读书笔记:算法导论——红黑树,从伪代码行数也可以看出完整的红黑树的插入和删除操作代码是很长的,下面源码分析部分的行数就更多了,所以所谓手写红黑树画个图分析下逻辑还行,手写代码估计要写死(滑稽)
TreeNode从JDK8开始引入,作用是当HashMap解决冲突的链表长度超过了8时,生成一个红黑树来加速查找和插入,这里树结构存在并不影响本身依然存在线性链表结构,意思是Node.next这个属性依然有效,所以说树替换了线性链表依然还是链表法解决冲突,只不过链表的实现策略换了。
物联网发展的三大编程语言
虽然Java是物联网开发中使用最多的语言,但是Java和Python在物联网开发的不同子域中紧随其后。物联网发展的未来可能仍然是多语言的。十年前,可能没有人想象未来有一天我们使用的空调、冰箱可以智能可控,路上行驶的汽车可以自动驾驶,现在,这些都将变得现实,而让这些变得现实的就是物联网。
Spring Cloud -- Ribbon负载均衡
Overview
Ribbon是Netflix
发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组
件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load
Balancer后面所有的机器,Rib
Spring Cloud Config 规范
首先Spring Cloud 是基于 Spring 来扩展的,Spring 本身就提供当创建一个Bean时可从Environment 中将一些属性值通过@Value的形式注入到业务代码中的能力。那Spring Cloud Config 要解决的问题就是:
1. 如何将配置加载到 Environment 。
调试tomcat源码步骤
调试tomcat源码
下载tomcat源码
git@github.com:apache/tomcat.git
添加pom.xml
内容如下:
<?xml version="1.