<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lzg_zone的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lzg_zone</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lzg_zone]]></copyright><item><title><![CDATA[consul 简介]]></title><link>https://blog.youkuaiyun.com/lzg_zone/article/details/120785187</link><guid>https://blog.youkuaiyun.com/lzg_zone/article/details/120785187</guid><author>lzg_zone</author><pubDate>Fri, 15 Oct 2021 21:15:00 +0800</pubDate><description><![CDATA[1、前言

在分布式架构中，服务治理是一个重要的问题。在没有服务治理的分布式集群中，各个服务之间通过手工或者配置的方式进行服务关系管理，遇到服务关系变化或者增加服务的时候，人工配置极其麻烦且容易出错。

2、zookeeper和consul比较
开发语言方面，zookeeper采用java开发，安装的时候需要部署java环境；consul采用golang开发，所有依赖都编译到了可执行程序中，即插即用。

部署方面，zookeeper一般部署奇数个节点方便做简单多数的选举机制。consul部署的时候分serv]]></description><category></category></item><item><title><![CDATA[freeswitch  使用记录]]></title><link>https://blog.youkuaiyun.com/lzg_zone/article/details/108073158</link><guid>https://blog.youkuaiyun.com/lzg_zone/article/details/108073158</guid><author>lzg_zone</author><pubDate>Mon, 24 Aug 2020 11:57:22 +0800</pubDate><description><![CDATA[在FreeSWITCH中，每一次呼叫都由一条或多条“腿”（Call Leg）组成，其中的一条腿又称为一个 Channel（通道），每一个Channel都有很多属性，用于标识Channel的状态、性能等，这些属性称为Channel Variable（通道变量），可简写为Channel Var、Chan Var或Var。



在这里使用X-PRE-PROCESS设置的变量都称为全局变量，它们在FreeSWITCH运行期间永远都是有效的。

而局部变量，它们通常在拨号计划中，在一个呼叫的生命周期中才有效。

.]]></description><category></category></item><item><title><![CDATA[python 3 execl  生成XML]]></title><link>https://blog.youkuaiyun.com/lzg_zone/article/details/106576466</link><guid>https://blog.youkuaiyun.com/lzg_zone/article/details/106576466</guid><author>lzg_zone</author><pubDate>Fri, 05 Jun 2020 18:47:47 +0800</pubDate><description><![CDATA[execl内容：





生成XML如下




]]></description><category></category></item><item><title><![CDATA[centos上freeswitch 1.8.5 源码编译安装]]></title><link>https://blog.youkuaiyun.com/lzg_zone/article/details/105998619</link><guid>https://blog.youkuaiyun.com/lzg_zone/article/details/105998619</guid><author>lzg_zone</author><pubDate>Fri, 08 May 2020 17:51:00 +0800</pubDate><description><![CDATA[1、下载1.8.5源码



2、执行./bootstrap.sh 

./bootstrap.sh 



3、configure

./configure

不使用 prefix参数默认安装到/usr/local/freeswitch目录下，如果想安装到其他目录，如下：

./configure --prefix=/usr/local/freeswitch2



可能出现的错误：

&lt;1&gt;、no usable zlib; please install zlib devel packa...]]></description><category></category></item><item><title><![CDATA[epoll边缘触发和水平触发]]></title><link>https://blog.youkuaiyun.com/lzg_zone/article/details/105527365</link><guid>https://blog.youkuaiyun.com/lzg_zone/article/details/105527365</guid><author>lzg_zone</author><pubDate>Wed, 15 Apr 2020 09:08:06 +0800</pubDate><description><![CDATA[Level_triggered(水平触发)：当被监控的文件描述符上有可读写事件发生时，epoll_wait()会通知处理程序去读写。如果这次没有把数据一次性全部读写完(如读写缓冲区太小)，那么下次调用 epoll_wait()时，它还会通知你在上没读写完的文件描述符上继续读写，当然如果你一直不去读写，它会一直通知你！！！如果系统中有大量你不需要读写的就绪文件描述符，而它们每次都会返回，这样会大大降...]]></description><category></category></item><item><title><![CDATA[sed使用小记]]></title><link>https://blog.youkuaiyun.com/lzg_zone/article/details/105245270</link><guid>https://blog.youkuaiyun.com/lzg_zone/article/details/105245270</guid><author>lzg_zone</author><pubDate>Wed, 01 Apr 2020 14:36:07 +0800</pubDate><description><![CDATA[log.txt文件内容如下：


num:[zhangsan],name:[lisi]
num:[wangwu],name:[liuyi]

1、提取name字段值

grep -nr yourname log.txt|sed -r 's/.*name:\[(.*)\]/\1/'

执行结果如下：


lisi
liuyi



2、提取num字段值

grep -nr yourname log...]]></description><category></category></item><item><title><![CDATA[git使用小记---工作区、暂存区、本地仓库、远程仓库]]></title><link>https://blog.youkuaiyun.com/lzg_zone/article/details/103824202</link><guid>https://blog.youkuaiyun.com/lzg_zone/article/details/103824202</guid><author>lzg_zone</author><pubDate>Fri, 03 Jan 2020 17:32:52 +0800</pubDate><description><![CDATA[工作区、暂存区、本地仓库、远程仓库
1.概念

工作区：工作区就是你克隆项目到本地后，项目所在的文件夹目录。

暂存区：用于存储工作区中添加上来的变更（新增、修改、删除）的文件的地方。操作时，使用git add .会将本地所有新增、变更、删除过的文件的情况存入暂存区中。

本地仓库：用于存储本地工作区和暂存区提交上来的变更（新增、修改、删除）过的文件的地方。操作时，使用git commit ...]]></description><category></category></item><item><title><![CDATA[select函数详解]]></title><link>https://blog.youkuaiyun.com/lzg_zone/article/details/93207092</link><guid>https://blog.youkuaiyun.com/lzg_zone/article/details/93207092</guid><author>lzg_zone</author><pubDate>Fri, 21 Jun 2019 17:08:31 +0800</pubDate><description><![CDATA[Select的函数格式：

int select(int maxfdp,fd_set *readfds,fd_set *writefds,fd_set *errorfds,struct timeval*timeout);

第一个参数：int maxfdp是一个整数值，是指集合中所有文件描述符的范围，即所有文件描述符的最大值加1，不能错！

第二三四各参数：都是fd_set结构的结构体指针，分别...]]></description><category></category></item><item><title><![CDATA[freeswitch]]></title><link>https://blog.youkuaiyun.com/lzg_zone/article/details/90605855</link><guid>https://blog.youkuaiyun.com/lzg_zone/article/details/90605855</guid><author>lzg_zone</author><pubDate>Mon, 27 May 2019 16:34:00 +0800</pubDate><description><![CDATA[x-Lite下载链接： http://www.sipsoft.cn/downloads/X-Lite.exe



1.在虚拟机启动freeswitch

2.配置X-Lite客户端



如图所示，只需要填写红框以内的即可，其中的192.168.178.133是虚拟机中CentOS系统的地址。密码默认是1234，User ID与后面的两个name都写1000~1019以内即可。
点击OK。
...]]></description><category></category></item><item><title><![CDATA[c++ STL的list用法总结]]></title><link>https://blog.youkuaiyun.com/lzg_zone/article/details/88832799</link><guid>https://blog.youkuaiyun.com/lzg_zone/article/details/88832799</guid><author>lzg_zone</author><pubDate>Tue, 26 Mar 2019 22:55:57 +0800</pubDate><description><![CDATA[#include&lt;list&gt;



声明一个int型的list：list&lt;int&gt; a；

1、list的构造函数

list&lt;int&gt;a{1,2,3}
list&lt;int&gt;a(n)  //声明一个n个元素的列表，每个元素都是0
list&lt;int&gt;a(n, m) //声明一个n个元素的列表，每个元素都是m
list&lt;int&g...]]></description><category></category></item><item><title><![CDATA[智能指针]]></title><link>https://blog.youkuaiyun.com/lzg_zone/article/details/88574162</link><guid>https://blog.youkuaiyun.com/lzg_zone/article/details/88574162</guid><author>lzg_zone</author><pubDate>Fri, 15 Mar 2019 14:43:18 +0800</pubDate><description><![CDATA[1，你知道智能指针吗？智能指针的原理。
 2，常用的智能指针。
 3，智能指针的实现。

1答案：智能指针是一个类，这个类的构造函数中传入一个普通指针，析构函数中释放传入的指针。智能指针的类都是栈上的对象，所以当函数（或程序）结束时会自动被释放，

 2， 最常用的智能指针：

 1）std::auto_ptr，有很多问题。 不支持复制（...]]></description><category></category></item><item><title><![CDATA[linux c小记]]></title><link>https://blog.youkuaiyun.com/lzg_zone/article/details/88420697</link><guid>https://blog.youkuaiyun.com/lzg_zone/article/details/88420697</guid><author>lzg_zone</author><pubDate>Tue, 12 Mar 2019 14:48:03 +0800</pubDate><description><![CDATA[1、编写统计一个数二进制表示中有多少个1的函数

 int count_bit1(int m)

 {

 int count = 0;

 while(m)

 {

 m = m &amp;amp; (m-1);

 count++;

 }

 return count;

 }



2、编写一个函...]]></description><category></category></item><item><title><![CDATA[网络模型]]></title><link>https://blog.youkuaiyun.com/lzg_zone/article/details/88220651</link><guid>https://blog.youkuaiyun.com/lzg_zone/article/details/88220651</guid><author>lzg_zone</author><pubDate>Wed, 06 Mar 2019 10:17:04 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[docker 命令整理]]></title><link>https://blog.youkuaiyun.com/lzg_zone/article/details/87929553</link><guid>https://blog.youkuaiyun.com/lzg_zone/article/details/87929553</guid><author>lzg_zone</author><pubDate>Tue, 26 Feb 2019 11:30:29 +0800</pubDate><description><![CDATA[一、构建镜像

构建镜像有两种方式docker commit命令和Dockerfile文件。

1、docker commit命令

可以分为三步：


运行容器
修改容器
把修改的容器保存为新镜像，docker commit 旧容器名 新镜像名

2、Dockerfile文件

docker build -t 标签名 .

二、从镜像创建容器

1、docker run----从镜像创建容器并运...]]></description><category></category></item><item><title><![CDATA[python小记 列表、元组、字典、集合]]></title><link>https://blog.youkuaiyun.com/lzg_zone/article/details/86674564</link><guid>https://blog.youkuaiyun.com/lzg_zone/article/details/86674564</guid><author>lzg_zone</author><pubDate>Mon, 28 Jan 2019 14:32:00 +0800</pubDate><description><![CDATA[列表  

列表使用方括号


mylist1 = ['ming', 'jan', 2];
mylist2 = [1, 2, 3, 4, 5, 6, 7 ];

mylist1[0]就是ming

mylist2[1:5]就是 [2,3,4,5]，[1:5]指的是取第二个值到第六个值，左闭右开。

mylist1 + mylist2 = ['ming', 'jan', 2,1,2,3,4,5,6,...]]></description><category></category></item><item><title><![CDATA[dokcer build 命令详解]]></title><link>https://blog.youkuaiyun.com/lzg_zone/article/details/84998284</link><guid>https://blog.youkuaiyun.com/lzg_zone/article/details/84998284</guid><author>lzg_zone</author><pubDate>Fri, 14 Dec 2018 10:20:10 +0800</pubDate><description><![CDATA[docker build  命令用于使用 Dockerfile 创建镜像。

 

--tag, -t: 镜像的名字及标签，通常 name:tag 或者 name 格式；可以在一次构建中为一个镜像设置多个标签

-f :指定要使用的Dockerfile路径；

-m :设置内存最大值；

--quiet, -q :安静模式，成功后只输出镜像 ID；

--rm :设置镜像成功后删除中间容器；

-...]]></description><category></category></item><item><title><![CDATA[iptables基础知识]]></title><link>https://blog.youkuaiyun.com/lzg_zone/article/details/84839034</link><guid>https://blog.youkuaiyun.com/lzg_zone/article/details/84839034</guid><author>lzg_zone</author><pubDate>Wed, 05 Dec 2018 16:44:30 +0800</pubDate><description><![CDATA[基本概念：

1.防火墙工作在主机边缘:对于进出本网络或者本主机的数据报文，根据事先设定好的检查规则对其检查，对形迹可疑的报文一律按照事先定义好的处理机制做出相应处理

对linux而言tcp/ip协议栈是在内核当中，意味着报文的处理是在内核中处理的，也就是说防火墙必须在工作在内核中，防火墙必须在内核中完成tcp/ip报文所流进的位置，用规则去检查，才真正能工作起来。

iptables用来衡量t...]]></description><category></category></item><item><title><![CDATA[linux install命令]]></title><link>https://blog.youkuaiyun.com/lzg_zone/article/details/83899346</link><guid>https://blog.youkuaiyun.com/lzg_zone/article/details/83899346</guid><author>lzg_zone</author><pubDate>Fri, 09 Nov 2018 16:20:00 +0800</pubDate><description><![CDATA[install命令的作用是安装或升级软件或备份数据，它的使用权限是所有用户。install命令和cp命令类似，都可以将文件/目录拷贝到指定的地点。但是，install允许你控制目标文件的属性。install通常用于程序的makefile，使用它来将程序拷贝到目标（安装）目录。


--backup[=CONTROL]：为每个已存在的目的地文件进行备份。
-b：类似 --backup，但不接受任何参...]]></description><category></category></item><item><title><![CDATA[spec文件知识整理]]></title><link>https://blog.youkuaiyun.com/lzg_zone/article/details/83863509</link><guid>https://blog.youkuaiyun.com/lzg_zone/article/details/83863509</guid><author>lzg_zone</author><pubDate>Thu, 08 Nov 2018 17:17:19 +0800</pubDate><description><![CDATA[rpmbuild目录下各个文件的用途：



spec文件一般包含以下部分：

==================================文件头====================================================

Name: hellorpm                                      #名字为源码tar.gz 包的名字...]]></description><category></category></item><item><title><![CDATA[使用gcc生成动态库及使用动态库的方法]]></title><link>https://blog.youkuaiyun.com/lzg_zone/article/details/83541906</link><guid>https://blog.youkuaiyun.com/lzg_zone/article/details/83541906</guid><author>lzg_zone</author><pubDate>Tue, 30 Oct 2018 15:23:32 +0800</pubDate><description><![CDATA[gcc常用编译选项：


			选项
			
			含义
		-static
			链接静态库，禁止使用动态库
		-shared
			进行动态库编译，链接动态库
		-Ldir
			在动态库的搜索路径中增加dir目录
		-lname
			链接静态库(libname.a)或动态库(libname.so)的库文件
		-fPIC(或fpic)
			生成使用相对地址无关的目标代码
		方法一...]]></description><category></category></item></channel></rss>