首页
学习
活动
专区
工具
TVP
发布

蓝天

专栏作者
526
文章
829036
阅读量
41
订阅数
全链路跟踪系统Skywalking最简安装
Skywalking是一个分布式追踪与监控,由国内开源爱好者吴晟开源,目前已是Apache顶级项目。
一见
2020-11-13
6670
服务网格代理Envoy入门
Envoy入门并不简单,可以说有些陡峭,本文尽可能帮助降低入门门槛。本文内容主要基于Envoy-1.12.2版本,官方链接:
一见
2020-01-15
2.9K1
C++之Lambda研究
本文代码测试环境为“GCC-9.1.0”,有关编译器的安装请参考《安装GCC-8.3.0及其依赖》,适用于“GCC-9.1.0”。
一见
2019-06-04
7540
安装GCC-8.3.0及其依赖
为体验C++17和C++20特性,需安装更新版本的GCC编译器。GCC官网为:https://gcc.gnu.org/,从这里可以下载最新版本的GCC。
一见
2019-05-13
12.4K0
#微码分享#C++变参字符串格式化函数format_string
在C和C++中,变参格式化函数虽然非类型安全,但却十分便利,因为得到广泛使用。对于常见的size_t类型要用“%zu”,ssize_t用”%zd“,int64_t用“% ”PRId64,uint64_t用“% ”PRIu64,long用"%ld",long long用"%lld",示例: const int64_t datetime = INT64_C(20190124144930); printf("datetime: %" PRId64"\n", datetime); 注意在PRId64前保留一个空格,以避免编译警告 format_string源代码链接: https://github.com/eyjian/r3c/blob/master/utils.cpp https://github.com/eyjian/libmooon/blob/master/src/utils/string_utils.cpp format_string源代码:
一见
2019-03-14
1.2K0
#微码分享#AES算法的C++包装类
AES为Advanced Encryption Standard的缩写,中文名:高级加密标准,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准,用来替代DES。基于std::string实现的C++包装类,使用得应用AES算法十分简单。完整源代码链接: https://github.com/eyjian/libmooon/blob/master/include/mooon/utils/aes_helper.h https://github.com/eyjian/libmooon/blob/master/src/utils/aes_helper.cpp aes_helper.h头文件
一见
2019-03-14
1.6K0
同时具备多线程和多进程安全的写日志工具
接口请浏览:https://github.com/eyjian/mooon/blob/master/mooon/include/mooon/sys/log.h 实现头文件请浏览:https://github.com/eyjian/mooon/blob/master/mooon/include/mooon/sys/safe_logger.h 测试代码:https://github.com/eyjian/mooon/blob/master/mooon/test/sys/test_safe_logger.cpp 使用示例: MYLOG_DEBUG("[%d]MMMMM", 2015); 支持自动添加换行符,默认会自动添加换行符,但可以禁止自动添加换行符。还支持自动在行尾添加点号等功能。 下面是实现:
一见
2018-08-10
7720
一个简单的支持MySQL和SQLite3的DB接口
simple_db.zip 相关联代码:https://github.com/eyjian/mooon/tree/master/common_library/include
一见
2018-08-10
6860
Failed connect to github.com:443; No error
任务目标:将线上已有的https://github.com/eyjian/mooon.git克隆到本地的E:\GitHub\mooon目录 问题描述:使用Git的Windows客户端UI工具GitHub执行克隆操作时报错,查看它的日志,难发现问题,于是改用Git的Windows命令行终端Git Shell操作,得到了较为详细的错误信息,基于错误提示解决了问题,过程描述如下。 打开Git Shell,进入本地的E:\GitHub目录,注意不是E:\GitHub\mooon目录,然后执行克隆命令git clone如下: E:\GitHub> git clone https://github.com/eyjian/mooon.git Cloning into 'mooon'... fatal: unable to access 'https://github.com/eyjian/mooon.git/': Failed connect to github.com:443; No error 遇到错误,克隆失败。通过执行telnet github.com 443,发现网络不通,于是想到设置代理,通过baidu找到设置proxy方法: 1) 打开文件.gitconfig,文件位于用户主目录下,执行ls ~即可看到它。假设Win7登录用户名为tom,则位于C:\Users\tom目录下 2)编辑.gitconfig,在文件尾加入以下内容: [http]     proxy = http://www.proxy.com:8080/ [http]顶格写,proxy前保留一个tab,其中www.proxy.com为代理服务器的IP或域名。 完成后,再次执行git clone https://github.com/eyjian/mooon.git,发现成功了。。。 对文件.gitconfig的操作,实际可以借助git命令来完成,而不必直接编辑.gitconfig,对应的子命令是git config --global,如:git config --global user.name "eyjian",则在.gitconfig文件中可以看到如下内容: [user]     name = eyjian 同理,配置proxy命令为:git config --global http.proxy http://www.proxy.com:8080/
一见
2018-08-10
1.9K0
Hadoop(HDFS、YARN、HBase、Hive和Spark等)默认端口表
端口 作用 9000 fs.defaultFS,如:hdfs://172.25.40.171:9000 9001 dfs.namenode.rpc-address,DataNode会连接这个端口 50070 dfs.namenode.http-address 50470 dfs.namenode.https-address 50100 dfs.namenode.backup.address 50105 dfs.namenode.backup.http-address 50090 dfs.namenode.s
一见
2018-08-10
4.2K0
Thrift辅助类,用于简化Thrift编程
CThriftServerHelper用于服务端,CThriftClientHelper用于客户端。 源代码链接:https://github.com/eyjian/mooon/blob/master/mooon/include/mooon/net/thrift_helper.h IDL定义: service PackageManagerService { } 服务端使用示例: CThriftServerHelper _thrift_server_helper; return _thrift_server_helper.serve(FLAGS_package_port, rpc_threads); 客户端使用示例: CThriftClientHelper thrift_client_helper(FLAGS_package_ip, FLAGS_package_port); thrift_client_helper.connect(); // 注意需要处理异常TTransportException/TApplicationException/TException
一见
2018-08-10
1.8K0
Orace开源的异步IO编程库,特点是接口非常简单
官网:https://oss.oracle.com/projects/libaio-oracle/,正如标题所说,非常简单了,不用多解释,请直接看头文件,其中aio_poll类似于poll,重要的结构是aiocb64,类似于epoll_event。 #ifndef _SKGAIO_H #define _SKGAIO_H #define IOCB_CMD_READ        0 #define IOCB_CMD_WRITE        1
一见
2018-08-10
3460
远程执行命令的C++实现CLibssh2
CLibssh2可以帮助实现相当于Linux的ssh命令的功能。CLibssh2基于libssh2库(http://www.libssh2.org)实现,不过libssh2的使用较为复杂,而CLibssh2通过封装提供了简单的接口,即可以代码中实现远程执行命令。 头文件:https://github.com/eyjian/mooon/blob/master/common_library/include/mooon/net/libssh2.h 实现文件:https://github.com/eyjian/mooon/blob/master/common_library/src/net/libssh2.cpp 测试代码:https://github.com/eyjian/mooon/blob/master/common_library/test/net/ut_libssh2.cpp
一见
2018-08-10
2K0
“curl -k”对应的 C++代码
对于“https”,使用curl时可加参数“-k”,它对应的 C/C++ 代码如下:
一见
2018-08-10
1.3K0
不再担心日志文件过大:通用日志滚动脚本
log_rotater.zip #!/bin/sh # https://github.com/eyjian/mooon/blob/master/mooon/shell/log_rotater.sh # Writed by yijian on 2012/7/22 # # Linux自带的工具logrotate使用稍复杂,但功能强大 # # 本脚本功能: # 1) 实现一个通用的按大小的日志滚动 # 2) 要求日志文件扩展名为“.log”,否则请稍修改代码 # 3) 支持处理多个目录下
一见
2018-08-07
1.8K0
WGet使用指南
wget是一个从网络上自动下载文件的自由工具。它支持HTTP,HTTPS和FTP协议,可以使用HTTP代理.
一见
2018-08-07
9750
基于zookeeper的主备切换方法
继承CZookeeperHelper即可快速实现主备切换: https://github.com/eyjian/mooon/blob/master/mooon/include/mooon/net/zookeeper_helper.h zookeeper的ZOO_EPHEMERAL节点(如果ZOO_EPHEMERAL满足不了需求,可以考虑和ZOO_SEQUENCE结合使用),在会话关闭或过期时,会自动删除,利用这一特性可以实现两个或多节点间的主备切换。 实现方法: 1)在进程启动时调用zookeeper_init()初始化: bool X::init_zookeeper() {     // 第一次调用时_clientid总是为NULL,     // 状态为ZOO_EXPIRED_SESSION_STATE时,需要重新调用zookeeper_init,     // 这个时候可传入的_clientid为前一次zookeeper_init()产生的_clientid     // 请注意zookeeper_init()是一个异步调用,返回非NULL并不表示会话建立成功,     // 只有当zk_watcher中的type为ZOO_SESSION_EVENT和state为ZOO_CONNECTED_STATE时,     // 才真正表示会话建立成功。     _zhandle = zookeeper_init(zk_hosts, zk_watcher, 5000, _clientid, this, 0);     if (NULL == _zhandle)     {         MYLOG_ERROR("init zookeeper failed: %s\n", zerror(errno));         return false;     }     MYLOG_INFO("init zookeeper(%s) successfully\n", zk_hosts);     return true; } 2)进入工作之前,先尝试切换成主,只有成功切换成主后才进入work bool X::run() {     while (true)     {         int num_items = 0;         // 备机最简单的方法是每隔一定时间,如1秒就尝试转成master,         // 如果不使用轮询,则可以采用监视_zk_path的方式         mooon::sys::CUtils::millisleep(1000);         // 如果不是master,则尝试转成master,如果转成不成功则继续下一次尝试         if (!is_master() && !change_to_master())             continue;         do_work();     } } bool X::is_master() const {     return _is_master; } bool X::change_to_master() {     static uint64_t log_counter = 0; // 打log计数器,备状态时的日志输出     // ZOO_EPHEMERAL|ZOO_SEQUENCE     // _myip为本地IP地址,可以通过它来判断当前谁是master     // _zk_path值示例:/master/test,注意需要先保证/master已存在     int errcode = zoo_create(_zhandle, _zk_path.c_str(), _myip.c_str(), _myip.size()+1, &ZOO_OPEN_ACL_UNSAFE, ZOO_EPHEMERAL, NULL, 0);     // (-4)connection loss,比如为zookeeper_init()指定了无效的hosts(一个有效的host也没有)     if (errcode != ZOK)     {         _is_master = false;         // 减少为备状态时的日志输出         if (0 == log_counter++ % 600)         {             MYLOG_DEBUG("become master[%s] failed: (%d)%s\n", _zk_path.c_str(), errcode, zerror(er
一见
2018-08-02
1.9K0
编译hbase-1.2.3源代码
确保机器可以正常访问Internet,如能正常访问https://repo.maven.apache.org等,如果是代理方式则需要设置好eclipse和maven的网络配置。
一见
2018-08-02
1.2K0
一种基于Redis的10行代码实现IP频率控制方法
优点:可支持海量访问的频率控制,只需要增加Redis机器,单个Redis节点(只占用一个cpu core)即可支持10万/s以上的处理。 基于IP频率限制是种常见需求,基于Redis可以十分简单实现对IP的频率限制,具体手段为利用Redis的key过期和原子加减两个特性。 以IP作为key,频率为key过期时长,比如限制单个IP在2秒内频率为100,则key过期时长为2秒,基于r3c(a Redis Cluster C++ Client)的实现大致如下:
一见
2018-08-02
5350
Linux后台开发常用工具
pwdx - report current working directory of a process,格式:pwdx pid 内存分析工具 valgrind valgrind辅助工具 qcachegrind 可视化查看valgrind结果 淘宝DBA团队发布的监控脚本,使用perl开发,可以完成对linux系统和MySql相关指标的实时监控 orzdba  取指定进程名的pid pidof 进程名 性能瓶颈查看: perf top -p pid 查看调用栈: pstack pid https://www.percona.com/ 查询程序执行聚合的GDB堆栈跟踪,先进性堆栈跟踪,然后将跟踪信息汇总: pt-pmp -p pid 格式化explain出来的执行计划按照tree方式输出,方便阅读: pt-visual-explain 从log文件中读取插叙语句,并用explain分析他们是如何利用索引,完成分析之后会生成一份关于索引没有被查询使用过的报告: pt-index-usage 其它: vmstat tcpdump 网络数据包分析器   显示包的内容:   tcpdump -i eth1 -n -vv -x -e -s 600 # 仅二进制   tcpdump -i eth1 -n -vv -X -e -s 600 # 二进制和文本   抓包保存到文件供Wireshark分析:   tcpdump -i eth1 -n -vv -X -e -s 600 -w x.cap   抓取192.168.31.1的80端口的包   tcpdump -i eth1 host 192.168.31.1 and port 80   抓取目标IP为192.168.31.1和目标端口为80端口的包   tcpdump -i eth1 dst host 192.168.31.1 and dst port 80 -s 指定显示多少字节的包内容 objdump nm ldd strings iostat 输入/输出统计 ifstat 网络流量实时监控工具 vmstat 虚拟内存统计 sar (System Activity Reporter系统活动情况报告,最为全面的系统性能分析工具之一) iptraf 实时IP局域网监控 iftop 网络带宽监控 htop 进程监控 iotop 磁盘I/O监测工具 fuser 使用文件或文件结构识别进程 lsof 打开文件列表 dmesg slabtop free slurm 查看网络流量 byobu 类似于screen tmux 终端复用工具,类似于screen screen 在多个进程之间多路复用一个物理终端的窗口管理器 dtach 用来模拟screen的detach的功能的小工具 dstat 可以取代vmstat,iostat,netstat和ifstat这些命令的多功能产品 NetHogs 监视每个进程的网络带宽 MultiTail 同时监控多个文档、类似tail Monitorix 系统和网络监控 Arpwatch 以太网活动监控器 Suricata 网络安全监控 Nagios 网络/服务器监控 Collectl 一体化性能检测工具 mtr 网络连通性判断工具,集成了traceroute和ping socat 多功能的网络工具(Socket CAT,netcat加强版) netpipes socket操作 ab wget curl tsung 压力测试工具 siege 压力测试和评测工具 nmon 监控Linux系统性能 psacct 监视用户活动 ncdu 基于ncurses库的磁盘使用分析器 slurm 实时网络流量监控 findmnt 查找已经被挂载的文件系统 saidar 系统数据监控和统计工具 ss 可以替代netstat的网络连接查看工具(socket statistics) ccze 用不同颜色高亮日志协助管理员进行区分和查看分析 netstat 网络统计 ifconfig (ifup ifdown) Linux磁盘相关命令 sfdisk -l sfdisk -s fdisk -l dmesg |grep SCSI dmesg |grep -i raid df -h cat /proc/scsi/scsi hdparm /dev/sda mount 加载一块硬盘 mkfs 创建文件系统 /etc/fstab 文件内容mount命令输出一致 lscpu 查看CPU lspci
一见
2018-08-02
1.4K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档