自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

nellson的专栏

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。

  • 博客(150)
  • 收藏
  • 关注

原创 ProtoBuf插件原理 - 未完

一、目的介绍ProtoBuf插件原理,并实践用Python和Golang实现二、原理这里以2.6.1为例,查看protobuf-2.6.1/src/google/protobuf/compiler/main.cc代码,默认注册cpp\java\python 3个generator。最后调用cli.Run接口执行。int main(int argc, char* argv[]...

2020-04-29 16:44:04 502

原创 K8s入门手记

一、准备工作0. 基本概念节点(Node):一个节点是一个运行 Kubernetes 中的主机。 容器组(Pod):一个 Pod 对应于由若干容器组成的一个容器组,同个组内的容器共享一个存储卷(volume)。 容器组生命周期(pos-states):包含所有容器状态集合,包括容器组状态类型,容器组生命周期,事件,重启策略,以及 replication controllers。 Re...

2019-03-19 12:20:34 1260

原创 RabbitMQ性能测试

作者一直在寻找一个极低延时的消息队列,从目前的测试结果来看,只有nats达到了<1ms的水平,本文旨在测试rabbitmq的国latency,撰文记录并与大家分享。 1. 搭建rabbitmq svr最方便的方式一定是docker,一行命令搞定,这里需要注意的是,没有用rabbitmq:latest,原因是因为这个版本不支持web管理docker run -d --name ...

2018-10-24 10:10:30 2000

原创 How to build your own ubuntu image with docker?

一. Build a ubuntu image and install sshd1. Pull ubuntu docker pull ubuntu:14.042. Create DockerfileFROM ubuntu:14.04#updateRUN apt-get update#install gccRUN apt-get install -y gc...

2018-06-13 12:17:06 536

原创 Way to Go

Way to Go一、Why Go为什么选择Go? 引用Gokit官网的一段原文:Go is designed from first principles to advance the practice of software engineering. It’s easy to learn, easy to master, and — most importantly — easy to maint

2017-03-17 22:24:08 664

原创 分布式消息队列浅析

队列作为一种比较抽象的数据结构,在程序世界中被广泛的应用,而实现方式和形态也各式各样,有使用进程内堆栈实现的,如stl库中的queue;有基于管道、Shmem实现的,如常见的同机进程间通信模型,而随着分布式系统应用越来越广泛,跨机通信的场景需来需多,面临的问题不仅是消息投递问题,分布式系统普适性的挑战也随着应用场景的多样性而越来越多。

2016-12-21 16:34:41 3853

原创 KAFKA-PHP环境搭建

1. 下载二进制版本http://kafka.apache.org/downloads.html kafka_2.10-0.10.0.1.tgz 解压到  /home/deploy/tar/kafka_2.10-0.10.0.1  2. 启动./bin/zookeeper-server-start.sh -daemon config/zookeeper.properties ...

2016-12-15 17:56:48 2848

原创 【C协程】ucontext入解

In  a  System V-like environment, one has the type ucontext_t defined in and the four functions get-context(2), setcontext(2), makecontext() and swapcontext() that allow user-level context switching

2016-11-24 15:32:29 1852

原创 PHP安装CURL扩展

场景: PHP已完成安装,单独安装CURL扩展1. 安装LIBCURL下载安装文件 https://curl.haxx.se/libcurl/./configure --prefix=/usr/local/bin/curl/make && make install2. 编译curl扩展进入php源码文件夹,php-5.6.26/ext/curl执行p

2016-09-29 10:36:30 2033

原创 coreseek实现中文检索服务

主要参考了两篇文章,使用的安装版本为 coreseek-4.1-beta.tar文章一,原地址为:http://zhan.renren.com/itbegin?gid=3602888498033481671&checked=trueubuntu-10.04的安装环境coreseek安装需要预装的软件:shell>apt-get install make gc

2016-07-23 23:13:41 1938

原创 Ubuntu系统,搭建mysql+sphinx环建

本文介绍下如何在ubuntu系统中,利用apt工具,搭建mysql+sphinx的全文检索环境。一 安装mysql切换到root帐户,或者执行sudo apt-get install mysql-server mysql-client,安装mysql。启动mysql service,执行sudo service mysql restart安装支持apache的m

2016-07-23 14:45:54 1190

原创 office系列文档的在线预览解决方案 - 在linux平台下转为pdf

office系列文档包括:.ppt .pptx .doc .docx .xls .xlsx 等常用格式。目标:在pc和手机浏览器上,可以方便的在线预览,类似邮箱中查看附件的体验。方法:我是在mac环境下测试的,直接用源码包安装报错,可能是一些依赖软件没安装,图方便,最后直接有dmg安装,安装到应用程序后,就可以很方便的转换了。sudo /Applications/L

2016-07-07 14:10:15 6003

转载 PYTHON-正则表达式用法

这个模块提供了与 Perl 相似l的正则表达式匹配操作。Unicode字符串也同样适用。 正则表达式使用反斜杠" \ "来代表特殊形式或用作转义字符,这里跟Python的语法冲突,因此,Python用" \\\\ "表示正则表达式中的" \ ",因为正则表达式中如果要匹配" \ ",需要用\来转义,变成" \\ ",而Python语法中又需要对字符串中每一个\进行转义,所以就变成了

2016-06-30 15:43:56 360

原创 FFMPEG - 安装指南

1. 安装 x264http://www.videolan.org/developers/x264.html#tc_qz_original=707413898下载并安装2. 安装ffmpeg./configure --prefix=/usr/local/ffmpeg/  --enable-gpl --enable-libx264 --enable-decoder

2016-06-28 16:16:38 395

转载 FFmpeg常用基本命令

1.分离视频音频流ffmpeg -i input_file -vcodec copy -an output_file_video  //分离视频流ffmpeg -i input_file -acodec copy -vn output_file_audio  //分离音频流2.视频解复用ffmpeg –i test.mp4 –vcodec copy –an –f m4

2016-06-26 10:50:26 455

原创 FFMPEG-如何对视频按时长切片与压缩

本文介绍如何用ffmpeg开源组件按时长进行切片,举一个例子,一个视频网站,拿到一个时长1.5小时的电影,用户点击播放时,常用的技术方案就是把一个完整的大文件,转码后切成按固定时长的小文件,分发到cdn上去,这样用户就可以实现就近下载,包括拖放等操作,这里面有比较多的技术细节,本文只讨论第一步,按时长切片。一 获取视频时长ffmpeg安装后,直接执行ffmpeg -i 文件就可以从内容中获

2016-06-24 19:28:54 15951

原创 Golang 中的“潜规则”

GO语言中要提供给外面访问的方法或是结构体必须是首字母大写在一个公共的头文件中定义了一个结构体,如下所示:type Header struct { ver int magic_num int len int}在另一个执行文件中,进行了初始化和赋值: var head comm.Header; head.

2016-06-22 10:01:19 4051

原创 如何在Go中使用Protobuf

Protobuf对于Golang通过插件进行支持,因些需要安装protoc的执行环境,下面我们来一步步看下,如何搭建一个编译环境。1. 安装protoc2. 下载并安装protobuf-go插件从github上下载插件,并解压(https://github.com/golang/protobuf),得到以下的目录drwxr-xr-x 6 root root 4096

2016-06-16 16:34:15 13853

转载 mac os x使用Git简易入门教程

该入门教程的流程是这样的;什么是Git----------------->为什么选择Git----------------->如何安装Git到MAC OS X------------------>如何使用Git具体如下;1, 首先要了解什么是Git。简而言之,Git是一个分布式的代码版本管理工具。类似的常用工具还有SVN,CVS。概念了解参见;http://ba

2016-05-28 19:05:41 17947 1

原创 Go运行环境搭建(Mac\Linux)

1. 下载安装文件http://www.golangtc.com/dlMac使用go1.13.5.darwin-amd64.pkgLinux使用go1.13.5.linux-amd64.tar.gz 2. 配置执行路径用vi打开~/.bash_rc,加入下面两行# Go的安装目录export GOROOT=/usr/local/go# 执行...

2016-05-28 05:55:10 2009

原创 【Zookeeper】Leader选举机制示例(异步API)

上一篇文章中介绍了如何用同步API实现Leader选举机制,本文也借用本一个场景,简单介绍异步API的使用。管理异步API的使用,可以方便大家在一些单进程系统中使用zk。提到异步API的使用,需要先了解zk里的线程模型。zk的线程模型如下图所示,调用zookeeper_init后将创建两个线程:I/O线程:该线程主要完成三个任务,一是建立对服务器组的连接以及当连接失效时对服

2016-03-15 16:04:53 1843

转载 【Boost】 ASIO 译文

Christopher KohlhoffCopyright © 2003-2012 Christopher M. Kohlhoff以Boost1.0的软件授权进行发布(见附带的LICENSE_1_0.txt文件或从http://www.boost.org/LICENSE_1_0.txt)Boost.Asio是用于网络和低层IO编程的跨平台C++库,为开发者提供了C++环境下稳定的异步模

2016-02-23 19:47:49 848

原创 【Boost】Interprocess - 共享内存、文件映射介绍

通过Interprocess,可以实现在共享内存、文件映射中保存vector、map等STL对象,并且可以使用自定义的类,官方文档介绍的也很详细了,下面是几个精简的示例。

2016-02-17 16:39:35 7328

原创 【Zookeeper】Leader选举机制示例

提到Leader选举,先需要重点介绍下创建znode时的Flag选项。ZOO_EPHEMERAL ZOO_EPHEMERAL,用来标记当创建这个znode的节点和Zookeeper失去连接后,这个znode将不再存在在Zookeeper里,Zookeeper使用Watcher察觉事件信息。当客户端接收到事件信息,比如连接超时、节点数据改变、子节点改变,可以调用相应的行为来处理数据。

2016-02-03 14:27:34 3495

原创 【zookeeper】安装指南

本文介绍zookeeper安装一个实例的方法和一些注意事项,指引新手上路。一、安装zookeeper.sh1. 下载安装包,推荐从官网下载,我这里用的是3.4.6http://www.apache.org/dyn/closer.cgi/zookeeper/2. 解压安装执行./configure, 然后make, make install3. 修改conf下的z

2016-02-03 09:57:51 1845

原创 【zookeeper】 同步API示例入门

zookeeper提供了两套静态库,xxx_st.a和xxx_mt.a,其中xxx_mt.a 支持同步api,链接的时间一定要注意,demo代码如下:#include #include #include #include using namespace std;const char* host = "127.0.0.1:2181";const int timeout = 200

2016-02-01 16:48:43 3170

原创 lua中设置只读table

C++里有const用来定义常量,保护参数或函数意外地修改,提高程序的健壮性。在lua里虽然没有没有类似的关键字,我们可以用表来模拟实现其只读的功能,来保护我们的数据被意义地修改。 lua 里有一个__index metamethod,当我们访问一个表不存在的域时,会触发lua解释器去查找__index metamethod: 如果不存在,返回结果nil,如果存在,则由__index meta

2013-09-02 16:20:54 6404 1

转载 Lua中的元表和元方法

Lua中每个值都可具有元表。 元表是普通的Lua表,定义了原始值在某些特定操作下的行为。你可通过在值的原表中设置特定的字段来改变作用于该值的操作的某些行为特征。例如,当数字值作为加法的操作数时,Lua检查其元表中的"__add"字段是否有个函数。如果有,Lua调用它执行加法。我们称元表中的键为事件(event),称值为元方法(metamethod)。前述例子中的事件是"add",元方法是执

2013-09-02 15:36:46 1147

原创 Lua入门 - helloworld

一、安装lua1.install readlinetar zxvf readline-5.2.tar.gz ./configure --prefix=/usr/local/readline/make && make installln -s /usr/local/readline/include/readline/ /usr/include/readlinecp /us

2012-12-20 09:16:14 3586

原创 erlang学习路线图

1. 找到一本经典的教程 http://wenku.baidu.com/view/6ec2a984e53a580216fcfee0.html2. 安装erlang开发与运行环境3. Learn & Do

2012-12-11 06:59:30 1462

转载 使用事件驱动模型实现高效稳定的网络服务器程序

前言事件驱动为广大的程序员所熟悉,其最为人津津乐道的是在图形化界面编程中的应用;事实上,在网络编程中事件驱动也被广泛使用,并大规模部署在高连接数高吞吐量的服务器程序中,如 http 服务器程序、ftp 服务器程序等。相比于传统的网络编程方式,事件驱动能够极大的降低资源占用,增大服务接待能力,并提高网络传输效率。关于本文提及的服务器模型,搜索网络可以查阅到很多的实现代码,所以,本文将不拘泥于

2012-11-16 07:31:15 670

转载 转一个,备忘

http://www.cnblogs.com/csharponworking/archive/2011/07/21/2112275.html

2012-03-07 01:39:44 511

原创 A*算法C实现

参考 http://www.cppblog.com/christanxw/archive/2006/04/07/5126.html 实现了A*算法,模拟了一下,大多数场景还是可以应对的,以传统的场景为例  以下,1为源,2为目的,-1为墙。 初始地图: 0

2011-10-04 23:06:34 4248 6

原创 关于模版的一个问题

http://www.cplusplus.com/doc/tutorial/templates/ Templates and multiple-file projectsFrom the point of view of the compiler, templates are not normal functions or classes. They are compiled on

2011-07-01 14:07:00 576

转载 在你的游戏中应用LUA

本文转自zx9597446的Blog,欢迎对Lua感兴趣的朋友互相交流, mailto: [email protected] 在你的游戏中应用Lua(1):在你的游戏代码中运行解释器  通常,你希望在你的游戏开始的时候读取一些信息,以配置你的游戏,这些信息通常都是放到一个文本文件中,在你的游戏启动的时候,你需要打开这个文件,然后解析字符串,找到所需要的信息。  是的,或许你认为这样就足够了,为什

2011-06-22 07:29:00 1018

原创 linux平台下svn环境搭建【未完】

一、安装apache 1. http://httpd.apache.org/ 下载 2.  编译安装      #./configure --prefix=/usr/local/apache --enable-dav --enable-so --enable-modules=so --enable-dav --enable-maintainer-mode --enable-

2011-06-22 07:27:00 1725

转载 优雅的Bitcask

<br />Bitcask是一个日志型的基于hash表结构和key-value存储模型,我了解到他也就几天时间,但是其简洁有效的设计思路,让我的某种技术癖好得到了极大满足,于是酝酿出这篇东西。<br />Bitcask模型指导下的存储系统有Riak和豆瓣的beansdb新版本(beansdb新版本信息,参见这里),下面就简单的介绍一下Bitcask模型:1.日志型的数据文件<br />何谓日志型?就是append only,所有写操作只追加而不修改老的数据,就像我们的各种服务器日志一样。在Bitcask模型

2011-05-23 22:07:00 1043

转载 检测socket链接是否断开

【解决方案】 <br />1. 发送重试,由业务完成。    因为club_l5的send接口不会保留用户发送的内容,在recv失败的情况下,用户发送的数据已经丢失,所以只能由业务进行重试。    结论:否定。由于后端服务器有多台,每次发送的时候并不能不能保证连接的机器还是上次发送的那一台服务器,有可能后端所有的连接都被断开,虽然失败比例有所降低,还是不能解决问题。 <br />2. 修改服务器端关闭连接的等待时间。     治标不治本,可以在紧急情况下使用。     经过和still、allan、robb

2011-05-17 16:34:00 1741

转载 信号基本原理

Linux是一种多用户多任务的操作系统,系统内会有多个进程存在。无论是操作系统与用户进程之间,还是用户进程之间,经常需要共享数据和交换信息。进程间相互通信的方法有多种,信号便是其中最为简单的一种,它用以指出某事件的发生。在Linux系统中,根据具体的的软硬件情况,内核程序会发出不同的信号来通知进程某个事件的发生。对于信号的发送,尽管可以由某些用户进程发出,但是大多数情况下,都是由内核程序在遇到以下几种特定情况的时候向进程发送的,例如: 1. 系统测出一个可能出现的硬件故障,如电源故障。 2. 程序出现异常行

2011-01-11 10:56:00 1126

转载 发一个多CPU中进程与CPU绑定的例子

<br />现在多CPU的趋势越来越大了. 有时候为了更好地操作机器, 需要将某个进程绑定到具体的CPU上去. 下面给出了一个进程绑定到具体的CPU上去的一个例子. <br /> <br />#include<stdlib.h>#include<stdio.h>#include<sys/types.h>#include<sys/sysinfo.h>#include<unistd.h>#define __USE_GNU#include<sched.h>#include<ctyp

2011-01-09 15:40:00 3282

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除