- 博客(18)
- 收藏
- 关注
原创 对DCI(数据、上下文、交互)的理解
从袁英杰大牛的DDD&DCI培训ppt中接触到了DCI,之后又在网上看了一些材料、以及Trygve Reenskaug等写的论文,对DCI有了一点认识,作为学习心得记录,也请行家们指点下。一、 DCIDCI认为面向对象很好的反映了结构,但是在反映系统动作(行为)方面不够。协作交互也是用户的心智模型,但是找不到内聚的形式去表现他们。以转账的例子来说,用户思维里对转账的
2016-04-15 14:20:00 6323 2
原创 分布式系统总结
分布式系统总结 我们的系统一直是分布式的。即便在虚拟化、容器技术出现之前,我想他也是一个分布式系统。今天尝试将我对分布式的理解做一些总结。为什么要分布式? 我想首先是money方面的问题。随着产品支持的容量增加,软件的计算量、存储的数据都变得很大。Grosch定理说CPU的计算能力与它的价格的平方成正比。也就是说如果你付出两倍的价钱,就能获得四倍的性能。这么看其实花钱
2016-04-26 17:38:13 11195
原创 kubernetes源码分析 -- kubelet组件
Kubelet需要在每个minion结点上运行。他负责维护在特定主机上的容器。Kubelet的代码架构与kube-proxy类似,cmd部分组织代码调用(cmd/kubelet/kubelet.go),kubelet的功能实现在pkg/kubelet包中。apiServer负责接收server发过来的Pod管理信息,通过channel推送到PodConfig。PodConfig的mux使用
2016-04-23 12:01:03 5849 1
原创 kubernetes源码分析 -- kube-proxy
Kube-proxy需要在每一个minion结点上运行。他的作用是service的代理,负责将业务连接到service后面具体执行结点(endpoints)。我们列一下体现kube-proxy主要设计的代码部分。 总的来说kubernetes的代码可以从cmd看进去,看每个组件的启动过程,以及提供的业务。Cmd部分组织启动进程的过程以及代码调用,具体的代码实现在pkg里面。Kub
2016-04-23 11:40:13 4434 1
原创 设计模式简要总结——行为型模式
1. chain of responsibility 职责链 使用: · 有多个对象可以处理一个请求, 而具体由哪个对象处理请求需要在运行时刻自动确定。 · 可以处理一个请求的对象集合应被动态指定 原理: 在链上的每个对象都有一致的处理请求的接口, 和访问链上后继者的接口。 从链上的第一个对象开始,要么亲
2016-04-15 15:41:27 4100
原创 设计模式简要总结——结构型模式
1. adapter 适配器 应用: 一个通用的接口,希望使用一个已有的类。 原理:定义一个抽象的接口(或者目标类),总之是应用程序使用的类。这个类定义应用程序使用功能的接口原型。 但是目标类并不具备某些功能,而需要使用已有的另一个类。 这时可以有两种方法: a 定一个
2016-04-15 15:40:06 646
原创 设计模式简要总结——创建型模式
1. AbstractFactory 抽象工程模式 原理: 有多个具体工厂,分别可以创建自己的一套对象。再搞一个抽象的工厂, 让这些具体工厂继承自它。 应用程序里面确定一个使用工厂的接口。 在应用程序中根据场景需要(或不同产品)实例化一个具体的工厂,作为 参数传给使用工厂创建对象的那个接
2016-04-15 15:38:06 526
原创 Docker集群(三) —— Kubernetes 简单入门
【摘要】Kubernetes是Google开源的Docker容器集群管理系统,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能。本文介绍了kubernetes的重要概念,并通过实例的示例解释了如何应用kubernetes管理docker集群。因操作系统不同、应用场景不同kubernetes的使用方法有不同,本文只介绍其中一种笔者实践过的切实可行的方法,旨在使读者快速了解Ku
2016-04-15 15:29:05 11972 1
原创 Docker集群(二) —— Docker资源管理
Docker集群—— Docker资源管理 【摘要】本文介绍在多核CPU下管理docker对主机资源的使用。通常我们关心的是cpu和内存的使用,本文主要介绍这两个。1 工具stress为了测试CPU、内存的使用,需要有一个工具。已经有好心人做好了stress镜像,我直
2016-04-15 15:24:31 1956
原创 Docker集群(一) —— Docker网络及flannel介绍
【摘要】本文介绍docker网络原理和设置,以及在docker集群中需要解决的问题。最后介绍flannel在解决docker网络问题中的作用。1 基础在介绍docker的网络之前,必须先认识docker所依赖的几个linux技术,这对理解docker的网络有帮助。因水平有限这一节仅简单介绍,对linux网络原理感兴趣的TX可以继续深入研究。1.1 网络命名空间:Linu
2016-04-15 15:15:32 11708 3
转载 递归与尾递归
尾递归就是把当前的运算结果(或路径)放在参数里传给下层函数,深层函数所面对的不是越来越简单的问题,而是越来越复杂的问题——因为参数里带有前面若干步的运算路径。对于阶乘而言,越深并不意味着越复杂。从时间和空间效率上看,尾递归和传统递归差不多。递归运算效率低主要是分支巨大,像阶乘这类单分支的递归,效率并不低。递归运算的深度和运算总量大致成指数关系,return多次并不会造成显著的性能损失。一言
2016-04-15 15:10:38 646
原创 堆排序算法及go语言实现
堆分最大堆、最小堆。 以最大堆为例。最大堆是一个完全二叉树。 并且要求每个结点的值必须大于他的两个子节点。 所以他的根结点一定是最大值。但是左右结点大小不一定。用数组表示的二叉树,可以这样表达: i的子节点下标为 2*i + 1 和 2 * i + 2. i的父节点下标为 (i-1)/2。对于数组长度length,大于length/2的下标一定没有子节点.排序思想是构建最大
2016-04-15 15:08:22 854
原创 归并排序及go语言实现
归并排序的基本思想将待排序序列R[0...n-1]看成是n个长度为1的有序序列,将相邻的有序表成对归并,得到n/2个长度为2的有序表;将这些有序序列再次归并,得到n/4个长度为4的有序序列;如此反复进行下去,最后得到一个长度为n的有序序列。综上可知:归并排序其实要做两件事:(1)“分解”——将序列每次折半划分。(2)“合并”——将划分后的序列段两两合并后排序。归并操作(
2016-04-15 15:05:26 1119
原创 golang类型系统笔记
一、常量: const Pi float64 = 3.14159265358979323846 const zero = 0.0 // 无类型浮点常量 const ( size int64 = 1024 eof = -1 // 无类型整型常量 ) const u, v float32 = 0, 3 // u = 0.0, v = 3.0,常量的多重赋值
2016-04-15 14:54:45 1295
原创 设计原则学习笔记
1. 软件开发中的视角: a 概念:软件要做什么,负责什么 b 规约:软件的接口 c 实现:软件如何实现,如何履行负责的事情这也是抽象一个类时要做的事情: 一个类要负责什么,怎么接口,怎么实现。2.封装。 封装是对对象内数据直接访问的隐藏。 ------- 这样理解比较片面。封装不仅隐藏数据,也隐藏了职责的具体实现。使调用者不知道实现过程,则修改实现
2016-04-15 14:47:36 591
转载 VIM常用命令
把学习过程中收集的资料放一起发出来。 都是转自网上其他大牛的总结。 文本的选择,对于编辑器来说,是很基本的东西,也经常被用到,总结如下:v 从光标当前位置开始,光标所经过的地方会被选中,再按一下v结束。 V 从光标当前行开始,光标经过的行都会被选中,再按一下V结束。 Ctrl + v 从光标当前位置开始,选中光标起点和终点所构成的矩形区域,再按一下Ctrl +
2016-04-15 14:43:03 2474
原创 为什么cleancode
很多人觉得cleancode基础,cleancode那本书很容易读完,cc是啥也容易理解,似乎一次培训就能解决。但是并非基础就容易做到。好像世间很多事相通,拿写字来和我们写程序做个对照。程序能用对应没写错别字,cleancode就对应“横平竖直”。“横平竖直”是学写字时的第一个要求,基础不,是最基础的了。虽然基础,但却要求一定的功力,要花一定的努力。有多少人写了一辈子字,横竖未必直。为
2016-04-15 14:28:31 865
原创 快速排序算法 原理及golang语言实现
设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。一趟快速排序的算法是:1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;、
2016-04-07 09:19:13 995
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人