51CTO博客开发
22989-云计算研发工程师(北京)工作地点:北京职位类别:技术类招聘人数:1人工作职责:开发和维护腾讯云的后台管理/调度系统(类似于OpenStack);开发和维护运行在数十万宿主机上的虚拟化Agent;开发和维护大规模数据的可视化展现、计算汇总以及预测分析。工作要求:热情、好学,有钻研和折腾的精神;有良好的沟通能力和乐于分享的意识;对云计算领域有浓厚的兴趣;熟悉C/C++/Python中的任意
反射是在golang程序运行时检查变量所具有类型的一种机制。由于反射可以得出关于变量结构的数据(即“关于数据的数据”),所以这也被认为是golang元编程的基础。初学反射,会感觉有些“玄乎”。我这里由浅入深,尝试阐述反射内涵,并解读反射三法则(http://blog.golang.org/laws-of-reflection)。0 从类型和方法理解反射内涵
0 背景 0.1 Borg简介 Borg是Google内部的大规模集群管理系统,已经延续十余年的时间,大体上与MapReduce、GFS、BigTable、Chubby是同时代的产物,但一直被雪藏,直至今年才发表论文,披露其实现细节。论文链接(http://research.google.c
1 接口的定义与理解 接口是一个自定义类型,它是一组方法的集合。从定义上来看,接口有两个特点。第一,接口本质是一种自定义类型,因此不要将golang中的接口简单理解为C++/Java中的接口,后者仅用于声明方法签名。第二,接口是一种特殊的自定义类型,其中没有数据成员,只有方法(也可以为空)。 接口是完全抽象的,因此不能将其实例化。然而,可以创建一
golang不支持继承,只支持嵌入和聚合(匿名字段称为嵌入,具名字段称为聚合)。golang通过嵌入,可以到达类似继承的效果,而且更为简洁。 一个例子type Base struct{ b int } func (base *Base
目前,golang还不支持模板函数(类型参数化),所以看上去不得不为每一种类型都实现一个函数。但是Golang可以利用空接口interface{}和闭包/高阶函数来实现泛型函数。1 空接口 空接口interface{}是指方法集为空的接口,任何类型的值都可以赋值给空接口。接口相关内容请参见另一篇博客《Golang中的接口》// int
1 形式含义 所谓闭包就是一个函数“捕获”了和它在同一作用于的其他常量和变量。 从形式上看,在Golang中,所有的匿名函数都是闭包。闭包的创建方式和普通函数几乎一致,只有一个关键区别:闭包没有名字。 我们来看两个例子addPng := func(name string) stri
1 简介 上一篇博客我们介绍了Golang的安装、编译、运行,本篇博客我们介绍如何设置面向Golang的vim开发环境。原生的vim无法自行识别golang关键字,开发环境如同编辑普通文本文件,无法高亮显示,更不要说自动补全等功能。为此,我们需要在vim中加入面向golang的插件vim-go。同时,根据vim-go的安装引导,我们还需要安装YouCompleteMe(Y
1 简介最近两年Golang发展迅猛,大有比肩C++、Java等主流语言、成为未来十年最为流行的编程语言之势。在开源社区中,热火朝天的Docker、Kubernetes、CoreOS生态圈都采用Golang开发,便是Golang大热的最佳例证。Golang之所以备受推崇,一方面得益于其特有的并发编程模型,一方面得益于其更为简约抽象的编程哲学(接口、OOP等特性)。作为分布式领域的开发者,不能不关注
0 环境:ubuntu 14.041 安装sudo apt-get update sudo apt-get install -y docker.io 启动Docker后台服务 sudo docker -d &2 镜像2.1 下拉镜像sudo docker&n
本文重点参考了《C++ 虚函数表解析》一文(链接:http://blog.csdn.net/haoel/article/details/1948051/),陈皓前辈此文讲解清晰,之前阅读受益匪浅,只是代码中存在一些问题。例如涉及到本文重点虚函数表的地方,写到Base b; cout << "虚函数表地址:" <&
使用C++开发系统有时会出现段错误,即Segment Fault。此类错误程序直接崩溃,通常没有任何有用信息输出,很难定位bug,因而无从解决问题。今天我们介绍core dump文件,并使用gdb进行调试,以此来定位段错误问题。此文同时用以备忘。 一、core dumpCore dump也称核心转储, 当程序运行过程中异常退出时, 由操作系统把程序当前的内存状
我们在项目中使用LXC(Linux Container)对系统进行资源控制,上线期间发现一个问题,使用LXC启动Java进程后,java调试命令(如jps/jstat)无效。其实,java调试命令无效只是问题的表面现象,真正原因在于Container与宿主机没有共享PID Namespace。本文将分析其中原因,并给出解决方案。一、问题现象我们发现,使用lxc启动Java进程后,jvm的调试命令(
一、安装sudo yum install git二、常用步骤# 初始化git init # 初始化git remote add repo_name url # 添加远程仓库git config --list # 查看当前配git remote -v # 查看远程仓库# 下拉代码git pull repo_name master # 下拉代码git clone h
问题一:执行lxc-create时,报错configuration path '/usr/local/var/lib/lxc' not found,或者lxc-ls无效:解决:mkdir –p /usr/local/var/lib/lxc问题二:lxc-execute: No such file or directory -failed to open /proc/mounts原因简析:挂载cgr
一、背景因项目需求,需要调用lxc部分API(用于系统开发,相比于直接使用shell命令,更为规范),并修改lxc部分代码。因为需求比较具体,因此目前没有阅读lxc所有代码,只是阅读了相关部分。为了便于积累,这里把代码阅读的一些成果进行记录总结,今后若有机会阅读lxc全部代码,将会进行补充。二、lxc源代码简介lxc版本:0.7.5下载:http://sourceforge.net/project
一、Docker、LXC、Cgroup的结构关系根据Docker布道师Jerome Petazzoni的说法,Docker约等于LXC+AUFS(之前只支持ubuntu时)(作者2015-10-22更新:Docker0.9.0版本开始引入libcontainer,可以视作LXC的替代品)。其中LXC负责资源管理,AUFS负责镜像管理;而LXC包括cgroup、namespace、chroot等组件
零、博客背景 由于内核版本问题,最初仅ubuntu可以较好的支持Docker。不过,由于Redhat系列OS(REHL、Centos)是目前主流的Linux服务器操作系统,所以令Redhat系列OS支持Docker很有必要。目前Docker和Redhat已经展开深入合作,并在2013年年底推出了可以在Redhat系列OS上运行的Docker0.7。
一、Redhat系列操作系统下的Docker Redhat系列操作系统(redhat、centos、fedora)与ubuntu是目前最为流行的两款Linux操作系统。由于ubuntu更为桌面化,通常生产环境中更多使用Redhat系OS。但是由于Redhat系内核版本较低,对虚拟化的支持总是落后一步。例如本文要分析的Docker,就是先支持ubuntu,直到2013年年底才
一、简介 谷歌经常抽搐,而百度在学术、技术搜索层面又不尽如人意,只好使用goagent。这里不过多介绍goagent了,不熟悉的朋友可以自行谷歌、百度。后面直入主题,介绍如何配置、使用。二、使用方法1、申请gmail帐号2、创建Google App,并记录Appid 我们登录Google App Engine(https://appengine.go
一、简介RRDtool是指Round Robin Database工具,即环状数据库。从功能上说,RRDtool可用于数据存储+数据展示。著名的网络流量绘图软件MRTG和集群监控系统Ganglia都使用的RRDtool。数据存储方面,RRDtool采用“Round Robin”模式存储数据。所谓“Round Robin”是一种存储数据的方式,使用固定大小的空间来存储数据,并有指针指向最新的数据的位
Linux Container是Google开源的轻量级虚拟化方案,是一种资源容器,简称LXC。LXC可以制作自己的文件系统,即rootfs。一、创建文件系统与挂载表1、准备目录mkdir /lxc然后进入/lxc目录中,创建根文件系统的目录mkdir rootfs进入/lxc/rootfs目录中,创建其他目录mkdir bin dev etc&n
一、需求 我有一个kvm虚拟机镜像ubuntu.qco,格式位qcow2,大小为5G,使用一段时间后,镜像磁盘空间已基本占满,需要扩容。查看一下ubuntu.qco的基本信息,如下:virt-filesystems --long --parts --blkdevs -h -a ubuntu.qco Name &nbs
一、背景与环境 我们有时需要在不能连接外网的局域网服务器上部署软件,为了部署便利,我们可以利用DVD光盘或iso文件制作yum源,然后整个局域网内的服务器都可以通过该yum源,安装软件。 OS:CentOS 6.2 64bits二、挂载对于光盘DVD,可这样挂载mkdir /media/cdrom # 新
一、环境操作系统:centos 6.3 64bitsHadoop版本:1.0.4本文假设Hadoop的安装目录为<Hadoop>,Java的安装目录为<Java>二、编译:在<Hadoop>目录下,执行ant compile-c++-libhdfs -Dislibhdfs=true三、配置 主要解决g++ 寻找头文件和动态链接库的问题。1、头
Hortonworks公司的人写了篇关于YARN的paper,投到SOCC'13,然后一不小心就成了BestPaper。文章名为《ApacheHadoop YARN: Yet Another Resource Negotiator》,重点介绍了YARN的产生驱动、基本架构等,这里与大家分享一下。如有不当之处,敬请指正。一、介绍 1、驱动 初始的Hadoop专注于大规模的索引web抓取,属于数据密
注:背景介绍可参见本系列博客第一篇《CS61系列实验之一 解除二进制炸弹》一、缓冲区溢出简介 缓冲区溢出是一种非常普遍、非常危险的漏洞,在各操作系统种、应用软件中广泛存在。利用缓冲区溢出漏洞可以导致程序运行失败、系统宕机、重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。当前被广泛利用的安全漏洞中,有50%以上都是缓冲区
一、简介 log4cplus是一个C++编写的开源日志库,功能全面,一句话概括就是:开发者可以以自定义的格式将日志记录到自定义的位置上。 log4cplus其前身是java编写的log4j,属于Apache项目,作者是Tad E. Smith。log4cplus具有线程安全、灵活、以及多
CS61系列实验之一 解除二进制炸弹一、背景介绍最近和组内同学一起在学习CS61(Harvard课程)和《深入理解计算机系统》,二者虽然出处不同,但是所讲内容实际上是一致的,用一句话概括就是“程序如何在计算机上运行”,主要内容包括程序的机器级表示、处理器体系结构、存储器层次结构、动态内存分配、虚拟存储器、链接、多线程、同步、死锁等计算机关键问题。此外,课程和书籍包含多个实验,借用《深入理解计算系统
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号