凡 若

初心 读书 知新 生活

安装 librdkafka

1
2
3
4
5
6
7
8
9
git clone https://github.com/edenhill/librdkafka.git ./librdkafka
cd ./librdkafka
./configure
# Or, to automatically install dependencies using the system's package manager:
# ./configure --install-deps
# Or, build dependencies from source:
# ./configure --install-deps --source-deps-only
make
sudo make install

使用 librdkafka

librdkafka 中自带 examples,cpp 目录下是 C++ 版本的包括两个 cpp 文件:consumer.cpp 和 producer.cpp,即生产者和消费者。修改其中 brokers 变量和 topic_str 变量的值。

consumer.cpp 文件的第58~63行修改如下(只修改了59行和61行,为看起来直观一些多粘了几行):

1
2
3
4
5
6
//broker 列表,可以用逗号隔开,只写其中一个也可以,这是线下测试环境
std::string brokers = "10.159.1.40:19092,10.159.1.41:19092,10.159.1.42:19092";
std::string errstr;
std::string topic_str="test_mq";
std::vector<std::string> topics;
topics.push_back(topic_str);

producer.cpp 文件的第31~34行修改如下(只修改了32行和34行,为看起来直观一些多粘了几行):

1
2
3
4
//broker 列表,可以用逗号隔开,只写其中一个也可以,这是线下测试环境
std::string brokers = "10.159.1.40:19092,10.159.1.41:19092,10.159.1.42:19092";
std::string errstr;
std::string topic_str="test_mq";

编译 consumer.cpp 和 producer.cpp

1
2
3
4
5
$ cd ~/librdkafka/examples/cpp
$ g++ -o consumer consumer.cpp -lrdkafka++ -lrdkafka -lstdc++ -lbaas_c_style_interface -I~/librdkafka/include -L~/librdkafka/lib

$ g++ -o producer producer.cpp -lrdkafka++ -lrdkafka -lstdc++ -lbaas_c_style_interface -I~/librdkafka/include -L~/librdkafka/lib

阅读全文 »

申请机器

联系OP同学申请机器,Linux服务器一台、三台、五台、(2*n+1),Zookeeper集群的工作是超过半数才能对外提供服务,3台中超过两台超过半数,允许1台挂掉 ,是否可用偶数,其实没必要。
如果有四台那么挂掉一台还剩下三台服务器,如果在挂掉一个就不行了,这里记住是超过半数
找到如下 3 台机器:

10.159.1.40
10.159.1.41
10.159.1.42

安装基础环境

安装Java环境支持,需要安装sun-java8,不再赘述。

目录规划

首先要注意在生产环境中目录结构要定义好,防止在项目过多的时候找不到所需的项目。

1
2
3
4
5
6
7
8
9
10
11
12
13
$ pwd
/home/work
$ mkdir opt
$ cd opt
$ mkdir zookeeper
$ mkdir kafka
$ tree -L 1
.
├── kafka
└── zookeeper

2 directories, 0 files

搭建zookeeper集群

安装配置zookeeper

阅读全文 »

算术表达式

Lua 的算术运算符如下表所示:

表达符 备注
+ 加法
- 减法
* 乘法
/ 除法
^ 指数
% 取模

实例

1
2
3
4
5
6
7
8
9
print(1 + 2) -->打印 3
print(5 / 10) -->打印 0.5。 这是Lua不同于c语言的
print(5.0 / 10) -->打印 0.5。 浮点数相除的结果是浮点数
-- print(10 / 0) -->注意除数不能为0,计算的结果会出错
print(2 ^ 10) -->打印 1024。 求2的10次方
local num = 1357
print(num % 2) -->打印 1
print((num % 2) == 1) -->打印 true。 判断num是否为奇数
print((num % 5) == 0) -->打印 false。判断num是否能被5整数

关系表达式

表达符 备注
< 小于
> 大于
<= 小于等于
>= 大于等于
== 等于
~= 不等于
1
2
3
4
5
print(1 < 2) -->打印 true
print(1 == 2) -->打印 false
print(1 ~= 2) -->打印 true
local a, b = true, false
print(a == b) -->打印 false

特别注意:

  1. 不同于C/C++等语言,lua中的“不等于”是~=而非!=.
  2. 由于 Lua 字符串总是会被“内化”,即相同内容的字符串只会被保存一份,因此 Lua 字符串之间的相等性比较可以简化为其内部存储地址的比较。这意味着 Lua 字符串的相等性比较总是为 O(1). 而在其他编程语言中,字符串的相等性比较则通常为 O(n),即需要逐个字节( 或按若干个连续字节) 进行比较。
  3. 在使用“==”做等于判断时,要注意对于 table, userdata 和函数, Lua 是作引用比较的。也就是说,只有当两个变量引用同一个对象时,才认为它们相等。如实例:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    local a = { x = 1, y = 0}
    local b = { x = 1, y = 0}
    if a == b then
    print("a==b")
    else
    print("a~=b")
    end
    ---output:
    a~=b
阅读全文 »

lua 是一门极其精简的语言,内置类型只要nil,boolean,number等三种基本类型,以及string,table等二种组合类型。没有C/C++ 等语言中的classstruct等复杂类型,这些类型可以通过table来实现。同时,不同于其他语言(如C/C++和java),function在lua中也作为一个一级类型。

阅读全文 »

开始

C语言之后大多数讲解语言的书籍都会以打印hello world来开始。那么,如何使用lua 打印hello world呢?

1
print("hello world")
阅读全文 »

lua 环境安装

linux 系统安装lua

linux & Mac上安装 Lua 安装非常简单,只需要下载源码包并在终端解压编译即可,本文使用了5.3.4版本进行安装:

1
2
3
4
5
curl -R -O http://www.lua.org/ftp/lua-5.3.4.tar.gz
tar zxf lua-5.3.4.tar.gz
cd lua-5.3.4
make linux test
make install
阅读全文 »

简介

Lua(发音: /ˈluːə/)程序设计语言是一个简洁、轻量、可扩展的脚本语言,Lua在葡萄牙语中的意思是月亮。
Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发。

阅读全文 »
0%