▲ 分布式系统
文章平均质量分 75
介绍kafka、Zookeeper等技术的一些底层实现原理,以及工作上遇到的一些相关问题及其解决方案。
优惠券已抵扣
余额抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
内核之道
某大厂资深全栈工程师,专注于『PostgreSQL内核、NVR、AI超脑、智能应用服务器』开发
展开
-
全选并一次性复制MobaXterm终端上十万行的日志打印
有时候MobaXterm终端的日志超过10W+行的打印,而我们刚好需要这些信息,比如将其拷贝到PC上面的Notepad++里面,方便查看、 查找。很显然,我们需要采取一些快捷方式来得到这个效果。原创 2022-11-29 10:36:54 · 4006 阅读 · 3 评论 -
【005】Shell退出状态码
同样,脚本中的函数和脚本本身也会返回一个退出状态码。在脚本或脚本函数中最后一个执行的命令决定了函数的退出状态码值。命令的前一个命名执行的退出状态码。Shell中的每一个命令都会使用一个退出状态码,其值范围是。该命令用来结束一个脚本,并返回一个值(退出状态码),该值会被传递给脚本的父进程。给Shell,结束当前的脚本文件执行。我们可以在Shell终端打印该脚本的退出状态码,其值为。命令保存脚本文件中最后所执行的命令的退出状态码。在前一节中有提到过,Shell退出状态码值范围是。命令,并返回退出状态码。原创 2022-09-14 16:09:28 · 114 阅读 · 0 评论 -
tufao安装出错,提示make: *** [cmake_check_build_system] 段错误(core dumped)
1. 因为最近一个项目的需求,需要在服务端采用tufao作为服务器;因此去官网下载了tufao.tar.gz安装包并进行解压(tar -zxvf tufao.tar.gz);接着 ./configure, 然后执行make,这个时候出现了下面的错误提示:2. 网上有关tufao 的资料实在是太少了,查了好久的资料都没有找到;最终根据自己长久积累的经验,终于解决掉该问题;如下步骤:步骤(1)cmake原创 2017-07-14 18:11:31 · 20660 阅读 · 3 评论 -
详谈ELF文件格式原理(一)
文章目录1. 概述2. 可执行文件是什么1. 概述 本来是准备写一系列关于进程的内存管理、映射过程、堆、栈空间管理以及垃圾回收机制等相关文章,但是在“进程的内存空间布局”这个话题里,如果不清楚可执行文件的格式和底层布局,那么对进程如何加载内存、进程的内存空间布局等理解会带来一些困难。因此,我们先对UNIX平台上面的可执行文件的格式(即可执行文件的内部是如何组织数据)先进行详细的分解,然后再继续深入有关内存的话题。2. 可执行文件是什么 众所周知,当操作系统运行某个程序时候,它必须先将程序原创 2021-06-10 12:43:30 · 379 阅读 · 2 评论 -
Draw.io-专业绘图工具
文章目录1. Draw.io介绍2. Draw.io使用2.1 进入Draw.io2.2 绘制图表3. 绘图样本1. Draw.io介绍 工欲善其事必先利其器。一款优秀而又强大的工具,能够给你的办公效率带来质的飞跃;如果碰巧你也正好是一名Linux爱好者且爱好写博客分享知识,那么这款Draw.io绘图工具将会是为你而量身打造。因为它是跨平台的,兼容Linux、Windows和macOS...原创 2020-02-24 17:58:05 · 5056 阅读 · 0 评论 -
解决双屏同时只能一个工作,另一个黑屏问题
当显卡同时具备一个VGA接口和HDMI接口时候,便可以使用对应接口线来连接到两个屏幕上。正常情况下,当重启机器后,在桌面空白处鼠标右键,选择“屏幕分辨率”,然后在显示器的外观处将会展示当前有两个显示器。 当然实际情况并非总如预期所想,总会因为某些原因而导致设备显示器的不正常运行。比如,我在连接双屏时候,遇到了问题是,两台显示器同时只能有一台是正常工作的,而另外一台,则一直黑屏...原创 2020-04-08 13:52:52 · 61740 阅读 · 0 评论 -
view agent报告桌面正在注销之前的会话, 请稍后重试
文章目录1. 问题描述2. 解决方案3. 修改虚拟桌面显示1. 问题描述 设备断电之后重启,VMware Horizon Clientke客户端登录失败,一直提示下图错误信息。 2. 解决方案 VMware Docs 有下面这一段描述: 注销后,Horizon Agent 无法重新连接到虚拟桌面。Horizon Client 显示以下消息:“Hori...原创 2020-04-09 16:42:39 · 7500 阅读 · 4 评论 -
【002】STL源码获取渠道
文章目录1. gcc源码下载地址2. 下载步骤2.1 进入GCC mirror sites2.2 选择releases目录2.3 gcc所有版本序列2.4 选择对应版本的压缩包文件1. gcc源码下载地址 如果想探究gcc内部某些功能的实现细节,那么一定离不开gcc的源码,截止到2021-04-27,gcc已经发行了11.1.0版本。其下载地址是:GCC mirror sites 。 2. 下载步骤2.1 进入GCC mirror sites 进入gcc镜像站点,点击红色框中的原创 2021-05-08 14:41:25 · 314 阅读 · 0 评论 -
Valgrind-检测内存错误工具
Valgrind是一款Linux上开源且非常优秀的用以“检测内存错误”的工具。其官网是[Valgrind], valgrind官网里有着使用该工具的详细说明文档,而且google上面对该工具使用方式的博客也是不可胜数。因此这里不再对该工具的使用做过多的陈述,仅在此备注下该工具。...原创 2019-05-31 16:31:16 · 516 阅读 · 0 评论 -
后台实现查找附近的人接口
后台实现查找附近的人接口思路: 1.对于两个坐标经度和纬度,都是由移动端返回的数据,后台只需要把数据存入数据库即可 2.建一个数据表与用户表关联 3.判断表里的该用户是否存在经纬度,若不存在,则添加,若存在,则当用户点击查找附近的人时,更新数据库的数据 4.当数据库存在经度纬度时,由移动端传经度,纬度,根据距离公式,计算出距离 5.对距离进行由近及远的排序,对性别进行排序仅此思路,不清楚的原创 2017-04-26 23:20:16 · 1487 阅读 · 2 评论 -
PHP:关于mysql一个表里实现多级评论及评论的回复
1.建表,思路关键 字段:comment_id自增id,comment_date评论时间,comment_content评论内容,t_user_id用户id,t_reply_id回复对象的用户id,t_post_id帖子id(也就是你要评价的这个信息的id,上一级主表的id),type(可能项目中有很多地方要用到,以作区分),task_id(回复的城主的id即comment_id)等自己所需要的...原创 2018-07-12 23:35:50 · 5765 阅读 · 0 评论 -
Qt开发(四) DOM读、写XML
1. XML DOM简介 DOM( Document Object Model 文档对象模型) 是一种用来解析 XML 文档的标准应用程序编程接口,它由万维网(W3C)所开发以及所推荐的标准。DOM 定义了所有文档元素的对象和属性,以及访问它们的方法(接口),它把 XML 文件表示成 内存 中的一棵树。使得我们可以按照需要去遍历这个 DOM 树,同时也可以对其进行修改操作,并且将其 作为 XM...原创 2018-06-30 21:42:12 · 924 阅读 · 0 评论 -
QT Creator格式对齐快捷键
Ctrl+A 全选文本 Ctrl + I 对齐 (不分大小写) 和Visual Studio中的Alt + F8效果相同原创 2017-08-04 14:03:27 · 2523 阅读 · 0 评论 -
Qt开发(七)Qt 开发中编译报错:QIODevice::read: device not open
在编译 使用QXmlStreamReader来读取 XML 代码时,报错提示:QIODevice::read: device not open,表示要读写的设备文件没有打开,于是看了一次代码,发现问题的根源是我打开了file文件,随后关联了QXmlStreamReader对象后,就被我给关闭了。这个和采用 DOM 来读取 XML 还不一样,因为 采用 DOM 来读取 XML的时候,当把这个XML文...原创 2019-08-08 10:31:17 · 42852 阅读 · 6 评论 -
Qt中常用到的快捷键
1.常用快捷键如下:F1 查看帮助F2 跳转到函数定义(和Ctrl+鼠标左键一样的效果)Shift+F2 声明和定义之间切换F4 头文件和源文件之间切换Ctrl+1 欢迎模式Ctrl+2 编辑模式Ctrl+3 调试模式Ctrl+4 项目设置模式Ctrl+5 帮助模式原创 2017-10-08 09:34:36 · 1075 阅读 · 0 评论 -
Qt之去除窗口的标题栏、通过鼠标移动窗口
------------ main.c -------------------#include<QApplication>#include<QWidget>#include<QDebug>#include"mywidget.h"int main(int argc,char **argv){ QApplication app(argc,argv); //功能新的需求:不再使原创 2017-05-24 17:06:59 · 1755 阅读 · 0 评论 -
Qt开发(五)Qt Creater 支持 XML
1. 若在Qt开发中,需要用到 XML,则需要在xxx.pro 文件中 增加 XML。如下: QT += core gui xml原创 2018-07-01 20:54:53 · 643 阅读 · 0 评论 -
Qt开发(二) XML文件的读、写方法分类
1. XML简介(1). XML(eXtensible Markup Language,可扩展标记语言) 是普通用于数据交换和数据存储的一种文本文件格式。它是一种用于语言分析的语言,没有要求专门的标记符、属性或者是条目。类似于 json,主要用来数据交换和存储。2. Qt 对XML文件的支持(包括读、写等) 在 Qt 4.0 中,对于一般的XML数据的处理,Qt 提供了 QtXml 模...原创 2018-06-30 12:31:39 · 403 阅读 · 0 评论 -
Qt开发(六)使用QXmlStreamReader 读取 XML
1. QXmlStreamReader概述1. 在 [ 使用 DOM 读取 XML] 中介绍了如何使用 DOM 文档对象模型的方式来读写 XML的方法。在 Qt 中使用DOM方式来去写 XML文件是非常方便的,但是存在一个缺点,那就是当 XML 文件比较大的时候,使用 DOM 将该 XML 文件内容加载到内存中的时候,会比较占内存空间。因此往往我们使用更多的是 QXmlStreamReader...原创 2018-07-03 00:06:01 · 9050 阅读 · 3 评论 -
Qt Creator支持C++11
1.Qt开发中,经常会用到 C++11 的新特性,为了Qt支持C++11的新特性,需要在 xxxx.pro 文件添加: QMAKE_CXXFLAGS += -std=c++11 或 CONFIG += c++11原创 2018-06-23 14:08:50 · 6337 阅读 · 2 评论 -
Qt开发(三) Qt调试运行提示::-1: error: cannot open output file debug\untitled.exe: Permission denied
在Qt Create 中开发项目时,有时候编译并运行会提示: :-1: error: cannot open output file debug\untitled.exe: Permission denied collect2.exe:-1: error: error: ld returned 1 exit status 其实问题很简单,并不是代码有bug,问题在于同时将一个项目运行...原创 2018-06-30 14:02:46 · 18968 阅读 · 0 评论 -
Qt开发(一) QString类的使用
1. QString概述 开发中,字符串是必不可少的。C++ 中提供两种字符串:传统的 C 语言型以 “\0” 结尾的字符数组和 std::string 类。而在 Qt 开发中,我们更多的是使用Qt专有的 QString 类,相似于 C++ 中的 std::string类,但是又有不同,因为 QString 支持 16位的 Unicode值。开发中使用 QString 时,不用刻意去担心 如何...原创 2018-06-24 19:54:33 · 3480 阅读 · 0 评论 -
Qt之定时器、重绘窗口、窗口缩放、截屏、截图
--------------- MyWidget.h ------------#ifndef MYWIDGET_H#define MYWIDGET_H#include<QMouseEvent>#include <QWidget>class MyWidget : public QWidget{ Q_OBJECTpublic: explicit MyWidget(QWidge原创 2017-05-24 20:00:48 · 1702 阅读 · 2 评论 -
RapidJSON报错: The document root must not be followed by other values.
文章目录1. 问题陈述2. 问题排查3. 问题现象4. 解决方案5. 结论1. 问题陈述 首先, json报文语法格式是正确无误的, 使用json在线工具解析ok. 而且出现的问题现象是: 相同的报文格式, 有的解析成功; 而有的解析失败。比如报文:[ { "name": "lixiaogang5", "sex": "男", "address": "guizhousheng" }] 概率性的某些同格式的json解析失败。解析过程: docume原创 2020-05-12 10:54:21 · 6082 阅读 · 2 评论 -
cJSON_Delete源码剖析
文章目录1. 释放cJSON结构体变量2.3.1. 释放cJSON结构体变量 见名知意, cJSON_Delete 函数用于释放一个cJSON结构体变量所申请的内存空间. 在阅读本章节内容之前, 我强烈推荐你先阅读 cJSON数据组装框架 章节, 这对你理解本节内容有很重要的帮助. 先附上cJSON_Delele函数的内部代码实现:void cJSON_Delete(cJSON *c){ cJSON *next; while (c) { next=c->ne原创 2020-07-17 10:22:10 · 2609 阅读 · 2 评论 -
《JSON必知必会》阅读总结
/************************************************************************* * File Name: json.c * Author: The answer * Function: Other * Mail: [email protected] * Created Time: 20原创 2017-07-11 20:37:04 · 461 阅读 · 0 评论 -
QJSON和curl实现客户端
#include "core.h"#include"cJSON.h"#include"curl/curl.h"string lastError;size_t callBack(char *ptr,size_t size,size_t nmemb,void *userdata){ string& str = *(string*)userdata; int len = size原创 2017-07-16 14:51:07 · 340 阅读 · 0 评论 -
【0172】cJSON开源库剖析
1. 概述 cJSON源码非常简单,即使是最新版本的cJSON,其 cJSON.c文件也仅有 750 多行的代码, cJSON.h文件 200 行代码不到。其.h文件和.c文件总代码量不超过 1000 行,非常简洁,阅读也很轻松。本文着重分析其设计框架和原理。 ...原创 2019-09-25 15:53:27 · 1571 阅读 · 0 评论 -
用QTJSON、curl与QTSQL、tufao来实现客户端与服务端间通信
1.开发平台:linux系统上的qt与vim2.需求:现要实现客户端与服务端之间的通信;服务端采用tufao开源库来作为服务器,同时在服务器上建立一个数据库(采用关系型数据库mysql),用来存储客户端的数据;客户端采用libcurl开源库来发送用户的数据到服务器中,而中间数据包采用json来进行打包,前面的几篇博客已说明json的作用,因此这里不再叙述json的作用;QT很完美的支持了mysql类原创 2017-07-15 19:43:49 · 875 阅读 · 0 评论 -
Qt中的JSON支持
1.Qt中的json 前面2篇博客已经介绍过json是一种基于文本的开放式数据交换标准,易于阅读和解析。它用于表示简单的数据结构和关联数组,称为对象。它与JavaScript相关,但是与语言无关的符号表单。 1.一个对象可以采取两种形式: (1) 名称/值对的集合 ,如: {"name":"tom","age":22,"sex":"man"} (2) 有序的值列表原创 2017-07-15 11:01:43 · 489 阅读 · 0 评论 -
json
1. JSON是一种轻量级的数据交换格式,它简洁并且具有很好的可拓展性,容易阅读,也容易被机器解析,因此JSON成为当前最流行的数据交换格式。JSON格式例子如下:用JSON来描述一个人的属性。{ name: "tom", age: 18, man: true}嵌套对象:{ name:"tom", age:18, mobile:{原创 2017-06-25 19:27:20 · 488 阅读 · 0 评论 -
cJSON组装与解析value为数组["a", "b", "c","d"]
1. 组装JSON中其value为数组的报文#include <stdio.h>#include <string.h>#include <stdlib.h>#include <assert.h>#include "util_cJSON.h"int main(){ char *serialBuf = NULL; cJSON *pRoo...原创 2019-09-12 21:38:30 · 1215 阅读 · 0 评论 -
/bin/zkEnv.sh: Syntax error: “(“ unexpected (expecting “fi“)
1. Zookeeper 执行客户端的启动脚本时,出错提示:/bin/zkEnv.sh: Syntax error: "(" unexpected (expecting "fi"),如下: 2. 解决方案(顺序执行以下几个操作)(1)root@host8:~# cd /bin/(2)root@Ubuntu:/bin# ls -l /bin/sh lrwxrwxrwx 1 roo...原创 2018-08-08 01:32:24 · 4111 阅读 · 0 评论 -
解决Zookeeper无法启动问题
1. 概述 首先,zookeeper的配置(conf/zoo.cfg)是ok的。但是启动Zookeeper服务的时候,不报错,也没有任何提示。然而服务就是起不来,端口(默认2181)也不在线。 使用lsof 或是 netstat -apn | grep 2181查看端口的时候,可以看到zookeeper服务是没有起来的。接着我看了zookeeper.log 日志,可以看到一...原创 2019-09-03 09:50:32 · 4214 阅读 · 1 评论 -
Zookeeper总结
1.zookeeper不适用于:存储海量数据 ——-&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;建议使用数据库和分布式文件系统 2.分布式系统的定义: 分布式系统是同时跨越多个物理主机,独立运行的多个软件组件所组成的系统。 使用分布式原因: 分布式系统能够利用“多处理器“的运算能力(比如“并行复制”) 3....原创 2018-07-30 23:40:59 · 613 阅读 · 0 评论 -
Zookeeper编译动态库 libzookeeper_mt.so
一、Zookeeper下载 Zookeeper官网地址是:https://www.apache.org/dyn/closer.cgi/zookeeper/ [点击进入下载页面] 。选择合适的稳定版本下载。 将下载的文件(比如:zookeeper-3.4.12.tar.gz)上传到Linux服务器的某一个目录下。解压 tar -zxvf zookeeper-3.4.12.tar.gz...原创 2018-11-23 17:14:02 · 4160 阅读 · 0 评论 -
ZooKeeper配置文件zoo.cfg 详解
################################################ 默认基本配置 ################################################ tick时长单位是毫秒,为zookeeper使用的基本时间度量单位,在zookeeper集群中使用的超时时间单位通过tickTime指定tickTime=2000# 对于追随者最初连接...原创 2018-11-24 14:02:03 · 2414 阅读 · 0 评论 -
Zookeeper事务日志控制100M范围测试
一、概述 本文档主要用于记录“测试Zookeeper服务其事务日志大小控制在100M范围内”的数据。Zookeeper分布式服务中,其日志共有3种类型,分别是:log日志、快照和事务日志。Zookeeper 3.4.0版本中,可以通过在配置文件(conf/zoo.cfg)中添加对应的选项从而达到自动清理事务日志的效果。 使用zookeeper提供的客户端工具(共有3种方式连接z...原创 2019-10-15 17:16:01 · 626 阅读 · 0 评论 -
tar 解压文件报错:tar: Error is not recoverable: exiting now
1. 使用tar 解压 Zookeeper官网下载的zookeeper-3.4.10.tar.gz 时候,出现错误提示: gzip: stdin: unexpected end of file zookeeper-3.4.10/src/java/test/org/apache/zookeeper/test/LETest.java zookeeper-3.4.10/src/java/test/...原创 2018-08-08 01:06:06 · 67667 阅读 · 4 评论 -
Ubuntu使用命令安装JDK
在[ linux安装JDK ]一文中讲解了通过下载 JDK 安装包如何来进行jdk服务的安装。在这里说明如何通过 命令 方式来安装jdk服务。 (1)添加ppa(源)sudo add-apt-repository ppa:webupd8team/javasudo apt-get update(2)安装oracle-java-installer sudo apt-get inst...原创 2018-08-08 00:37:14 · 9119 阅读 · 1 评论