容器(docker)中运行java需关注的几个小问题
简介
- container: 资源隔离、平台无关, 限制cpu、mem等资源
- Java: 平台无关、Write once, run anywhere、WORA
java不知道自己运行在container里,以为它看到的资源都能用。结果:java工作在资源充足的
java不知道自己运行在container里,以为它看到的资源都能用。结果:java工作在资源充足的
平时接触过多线程开发的童鞋应该都或多或少了解过线程池,之前发布的《阿里巴巴 Java 手册》里也有一条:
可见线程池的重要性。
简单来说使用线程池有以下几个目的:
原文链接 译者:Carvendy
Python应用程序总会使用一些包和模块,它们离不开标准库。应用程序需要指定标准库的版本,因为应用程序可能需要避免一个已经修复的bug,或者是应用程序重写了具体版本标准库的接口的实现。
这意味着也许不可能需要给每一个应用程序安装它所需要的的版本。如果应用A需要1.0的部分模块,而应用B需要版本2.0的,这样是会产生冲突的,并且只安装1.0或者2.0版本将会使得另外一个应用无法正常运行。
解决这个问题的方法就创建虚拟环境,它是一个自包含目录树,里面安装有Python各个版本,一个数字一个包版本地区分开来。
不同的应用程序可以使用不同的环境变量。为了解决前面的冲突,应用程序A可以有自己的虚拟环境并使用版本1.0,同时应用程序B可以使用虚拟环境的版本2.0。如果应用程序B需要升级到版本3.0,也一样不会对应用程序的环境影响。
Map 这样的 Key Value
在软件开发中是非常经典的结构,常用于在内存中存放数据。
本篇主要想讨论 ConcurrentHashMap 这样一个并发容器,在正式开始之前我觉得有必要谈谈 HashMap,没有它就不会有后面的 ConcurrentHashMap。
Raft是当前分布式领域最重要的一致性算法之一,今天我们就来好好研究研究这个算法的[论文][1], 还有对应[网站][2], [动画][3], 不想看英文的也有中文的[翻译][4],所以我这边就不翻译了,主要还是记录一下论文重点和自己的心得。
Python解释器一般安装在 /usr/local/bin/python3.6
目录下,将 /usr/local/bin
目录加入到Unix Shell脚本的命令搜索目录下,这样便可以通过输入以下shell命令已启动它[1]:
python3.7
既然解释器的存放目录是安装时可选的,那么其他位置也是可以的;请与python的安装用户或系统管理员确认。(/usr/local/python
是常用可选目录)
在Windows系统上,python一般安装到 C:\Python36
目录下,你同样可以再安装时选择其他目录。将次目录添加到Path环境变量,你可以通过在DOS命令窗体输入以下命令:
翻译:Ethereum Clients—Choosing a client
在这个项目的早期,就已经有多种跨多种不同操作系统的客户端实现。客户端实现的多样性是整个以太系统的巨大胜利。这就让我们验证了(在黄页中指定的)协议是清晰的。这也为新的革新敞开了大门。这让我们保持诚实。但是,这样也会让用户非常困扰,因为这会导致没有一个通用的以太安装包可以提供给用户。
截止2016年9月,优秀的实现有以下几种:
以太坊是一个开放的区块链平台,他允许任何人构建和使用运行在区块链技术上的去中心化应用。与比特币相似,没有人可以控制或者拥有以太坊 – 以太坊是一项由世界各地人一起构建的开源项目。但是与比特币协议不同,以太坊设计得适应性强和灵活。在以太坊平台创建新应用很容易,使用以太坊Homestead release(以太坊第二版本),所有人可以安全地使用这些应用。
在上文「Guava 源码分析(Cache 原理)」中分析了 Guava Cache
的相关原理。
文末提到了回收机制、移除时间通知等内容,许多朋友也挺感兴趣,这次就这两个内容再来分析分析。
在开始之前先补习下 Java 自带的两个特性,Guava 中都有具体的应用。