Compose
Compose定义和运行多个Docker容器的应用,实现对Docker容器集群的快速编排。通过一个docker-compose.yml模板文件,定义一组相关联的服务(容器应用)为一个项目(由多个服务组成的完整的业务单元)。
Compose的使用
命令
Compose的命令对象默认指定为项目,使用 docker-compose [COMMAND] --help或docker-compose help[COMMAND]可以查看某个具体命令的使用格式。
shell
docker-compose [-f=...] [options] [COMMAND] [ARGS...]
命令选
继续阅读 »
众所周知,当我们执行没有任何调优参数(如java -jar myapplication.jar)的 Java 应用程序时,JVM 会自动调整几个参数,以便在执行环境中具有最佳性能。但是许多开发者发现,如果让 JVM ergonomics (即JVM人体工程学,用于自动选择和行为调整)对垃圾收集器、堆大小和运行编译器使用默认设置值,运行在Linux容器(docker,rkt,runC,lxcfs 等)中的 Java 进程会与我们的预期表现严重不符。
本篇文章采用简单的方法来向开发人员展示在 Linux 容器中打包 Java 应用程序时应该知道什么。
more
存在的问题
我们往往把容器当虚拟机,让它定义一些虚拟 CPU 和虚拟内
继续阅读 »
Flexbox 布局是 CSS3 中一种新的布局模型,被称为弹性盒模型。该模型是为了改进容器中内容的对齐、方向和排序方式,即使是动态,甚至是未知大小的容器。弹性盒模型的主要特点是,可以在不同屏幕尺寸下以最佳的方式,修改其子项的高度或宽度来填充容器的可用空间。
许多设计师和开发人员认为这种布局使用起来更加简单,弹性盒模型的使元素的定位更加简单,从而某些复杂的布局可以用更少的代码来实现,进而简化了开发过程。Flexbox 布局算法是基于方向的,这与基于垂直和水平的 block 和 inline 布局不同。弹性盒模型可用于小应用或组建的布局,然而对于大型应用应该使用 Grid 布局。
本文将用可视化的方式介绍 Flex 如何影响我们的
继续阅读 »
最近在 Qinling 项目中实现对 function 运行时做资源限制,主要是 cpu、内存和磁盘,后续还会考虑 package 大小、文件句柄、系统调用等资源限制。限制资源使用的原因很简单,因为底层是容器实现,function 都是跑在容器里,如果不做资源限制,任由用户自己在 function 里分配资源,那么不同用户的函数势必会相互影响,更严重的情况是恶意用户会利用一些手段突破容器的限制,威胁 hypervisor,进而威胁整个云环境。
继续阅读 »
Bloom Filter是由Bloom在1970年提出的一种快速查找算法,通过多个hash算法来共同判断某个元素是否在某个集合内。可以用于网络爬虫的url重复过滤、垃圾邮件的过滤等等。
它相比hash容器的一个优势就是,不需要存储元素的实际数据到容器中去来一个个的比较是否存在。
只需要对应的位段来标记是否存在就行了,所以想当节省内存,特别适合海量的数据处理。并且由于省去了存储元素和比较操作,所以性能也比基于hash容器的高了很多。
但是由于bloom filter没有去比较元素,只通过多个hash来判断唯一性,所以存在一定的hash冲突导致误判。误判率的大小由hash函数的个数、hash函数优劣、以及存储的位空间大小共同决定。
继续阅读 »
TBOX中提供了各种列表操作:
list: 元素在内部维护的双向链表
list_entry: 元素在外部维护的双向链表
single_list: 元素在内部维护的单向链表
single_list_entry: 元素在外部维护的单向链表
由于双链和单链的接口使用类似,这里主要就讲解双链的具体使用。
那什么是内部维护和外部维护呢? 简单地说:
外部维护:就是链表容器本身不存储元素,不开辟内存空间,仅仅是一个节点头,这样比较节省内存,更加灵活。(尤其是在多个链表间元素迁移的时候,或者多个链表需要统一内存池维护的时候)。
内部维护:就是链表容器本身回去开辟一块空间,去单独存储元素内
继续阅读 »
更新历史:
2018.02.07 初稿完成
2018.03.12 更新对 kuryr 现状的理解
前言
突然关注 Kuryr 是因为我正好在研究 k8s 集群如何跟 openstack 环境通信,我的 qinling 项目也有容器跟虚拟机的通信需求。k8s 现在是热门不假,但毕竟我们还在做 openstack 的生意,自然就会碰到虚拟机和容器的混合部署。直接在 openstack 集群部署 k8s 不现实,那样会对资源管理和运维带来很大不便。所以最直观的部署方式就是 k8s 和 openstack 是相互独立的集群,各自管理各自的资源,当然,更高级一点就是 k8s 跑在 openstack 的 vm 里,彼此是上下层的关系,利用
继续阅读 »
在C++03中, 标准容器提供了begin与end函数
vector v;
int a[100];
sort(v.begin(), v.end());
sort(a, a+sizeof(a)/sizeof(a[0]));
为了统一数组跟容器的语法, C++11提供了begin()函数
继续阅读 »
白送域名 dylloveyyl.vip
白送域名dylloveyyl.vip,国际域名,2019年03月27过期,免备案(解析到国内主机另说)
2018年04月09日更新
终于,有人告诉了我,猫死了,我按奈不住好奇,打开了盒子,果然是猫死了。
薛定谔的猫
把一只猫、一个装有氰化氢气体的玻璃烧瓶和放射性物质放进封闭的盒子里。当盒子内的监控器侦测到衰变粒子时,就会打破烧瓶,杀死这只猫。
实验者甚至可以设置出相当荒谬的案例来。
把一只猫关在一个封闭的铁容器里面,并且装置以下仪器(注意必须确保这仪器不被容器中的猫直接干扰):在一台盖革计数器内置入极少量放射性物质,在一小时内,这个放射性物质至少有一个原子衰变的概率为
继续阅读 »
ArrayList 和 LinkedList 是在开发过程中 常用的数据结构
分别代表了数组和链表,其实本身的实现都非常简单,所以Source Code
Read 就先从这两个开始。
ArrayList
ArrayList 从名字上就可以看出这个容器的本质,是用一个数组反复的进行自增实现的,ArrayList几乎是最经常被使用的List的实现了,平时可以使用线性数据结构的时候,通常都会选择ArrayList。但是容器的选取也要考虑到实现的方式和你需要的应用。比如说数组长于索引,弱于扩容和删除,但是链表长于扩容和删除,但是寻找某个具体节点的时候,没办法靠基址寻址来实现,而是要用指针不断的
继续阅读 »