自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

人至贱则无敌

个人独立博客: rebootcat.com

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

原创 P2P打洞技术详解

原文:https://rebootcat.com/2021/03/28/p2p_nat_traversal/何为打洞?(what)英文翻译NAT traversal : NAT 穿越NAT Hole Punching : NAT 打孔定义(UDP) 打洞技术是通过中间公网服务器的协助在通信双方的 NAT 网关上建立相关的映射表项,使得双方发送的报文能直接穿透对方的 NAT 网关(防火墙),实现 P2P 直连。洞:所谓的洞就是映射规则,外部能够主动与之通信的规则为何要打洞?(why.

2021-04-03 10:39:10 7166 1

原创 深入浅出paxos

原文https://rebootcat.com/2020/12/05/paxos/

2020-12-13 16:07:54 238

原创 TCP全连接和半连接的问题探讨

个人博客: https://rebootcat.com/2020/11/14/tcp_accept/从何说起说起 tcp 的连接过程,想必 “3次握手4次挥手”是大家广为熟知的知识,那么关于更细节更底层的连接过程也许就很少人能讲清楚了。所以本文会先简单回顾一下 tcp 的 3次握手过程,然后重点聊一下 tcp accept 的过程,涉及到 tcp 半连接队列、全连接队列等的内容。回顾一下3 次握手要了解 3 次握手的过程,可能需要先熟悉一下 tcp 协议的格式:tcp segment .

2020-11-13 23:42:05 1819

原创 博客大事记之迁移博客到香港主机

个人博客:https://rebootcat.com/2020/11/10/move_blog_hk/前言之前其实已经写过一篇博文: 迁移博客到香港虚拟空间,那为什么又要写这篇博客呢?上次其实是把我的博客迁移到一个香港的虚拟空间里,但是不到半年的时间已经出现过 4 次宕机事件,每次持续时间 4~5 小时,阿里云 和 UpTimeRobot 的监控报警报了一大堆,邮箱都快塞满了。想着宕机就宕机吧,至少还能恢复,还能凑合用,结果呢,就在前几天当时购买虚拟空间的官网都 GG 了,管理员跑路了。。。可能.

2020-11-13 23:39:54 428

原创 free not return memory

个人博客:https://rebootcat.com/2020/11/05/free_mem/内存泄露?观察到一台机器上的内存使用量在程序启动之后,持续增长,中间没有出现内存恢复。怀疑是不是出现了内存泄露的问题?然后使用相关的内存分析工具进行了分析:gperfvalgrind (massif)手工标记内存分配释放上述的分析结果均不能很肯定的得出是否内存泄露的结论。那么问题可能出现在哪里呢?程序采用 c++ 编写,大量使用了智能指针以及 new/delete,难道内存没有成功释放?亦或.

2020-11-13 23:37:42 193

原创 Linux上隐藏进程名(初级版)

缘起上一篇博文 模仿nginx修改进程名 中提到了一种修改进程名的方法,就像 nginx 一样,给不同进程命名为 master 以及 worker 等。那么能不能把新进程名设置为空字符串呢?如果能,又会有哪些应用场景呢?答案可能是能的,设置新进程的名字为空,通常用来隐藏进程,用于攻击或者反攻击。prctl 函数上一篇博文 模仿nginx修改进程名 文章末尾提到了 prctl 这个函数,它也可以用来修改进程名。只不过如果单单使用 prctl 来修改进程名的话,使用 ps 或者 top 等工具看到的可

2020-10-31 10:50:40 570

原创 模仿nginx修改进程名

个人博客原文: https://rebootcat.com/2020/10/25/setproctitle/nginx 进程名使用 nginx 的过程中,我们经常看到 nginx 的进程名是不同的,如下:$ ps -ef |grep nginx smaug 1183 1115 0 05:46 pts/2 00:00:00 grep --color=auto nginxroot 14201 1 0 2019 ? 00:00:00 nginx: m.

2020-10-31 10:49:33 605 1

原创 epoll 入门例子 tcp server/client

原文: https://rebootcat.com/2020/09/26/epoll_examples/复习一下上一篇博文 epoll原理深入分析 详细分析了 epoll 底层的实现原理,如果对 epoll 原理有模糊的建议先看一下这篇文章。那么本文就开始用 epoll 实现一个简单的 tcp server/client。本文基于我的 github: https://github.com/smaugx/epoll_examples。epoll 实现范式# create listen socke.

2020-09-25 20:54:57 2461

原创 Epoll原理深入分析

Epoll 的出现想必能搜到这篇文章的,应该对 select/poll 有一些了解和认识,一般说 epoll 都会与 select/poll 进行一些对比,select、poll 和 epoll 都是一种 IO 多路复用机制。select 的问题select 的问题在于描述符的限制,能监控的文件描述符最大为 FD_SETSIZE,对于连接数很多的场景就无法满足;另外select 还有一个问题是,每次调用 select 都需要从用户空间把描述符集合拷贝到内核空间,当描述符集合变大之后,用户空间和内核空

2020-09-25 20:52:38 2357 7

原创 使用 mkdocs 搭建个人 wiki 站点

原文: https://rebootcat.com/2020/09/20/wiki/why wiki博客通常是用来记录一些完整的文章,每篇文章有一个主题。但是我想把平日里的一些笔记也记录到我的博客里,但笔记是零散的,随时的,不是完整的一个主题。所以打算构建一个 wiki 页面,专门用来存放我的笔记,wiki 页面类似于 维基百科的形式。我的博客采用的是 hexo 构建的,如果打算 DIY 一个类似于 维基百科 的 wiki 页面的话,对于我来说,也许有点难度,毕竟我只会写简单的网页。那么有没有现成.

2020-09-25 20:49:59 1732

原创 迁移博客到香港虚拟空间

原文: https://rebootcat.com/2020/09/20/virtual_space_blog/缘起我的博客一直采用的是 github pages 来托管,中间断断续续的也没怎么管理过,偶尔写几篇博客,所以也就没怎么关心过访问速度,搜索引擎收录等问题。不过我对博客一直还是情有独钟,我觉得像我一样的软件工程师,如果能有个人博客,并且保持一定程度的更新率还是很有必要的。这次迁移主要考虑三个原因:访问速度较慢博客还不支持 https谷歌搜索引擎收录较少github page.

2020-09-25 20:46:08 964 2

原创 Hexo Next 博客添加相册瀑布流

原文:https://rebootcat.com/2020/09/19/nextphotowall/前言一直没有时间来整理下博客搭建的一些事情,现在补上一篇,给 Hexo Next 博客添加一个相册功能,使用瀑布流的方式。原理说明使用 github 作为仓库存储图片文件(图床)使用 jsdelivr 进行图片 CDN 加速优点此种方式的优点是免费,不需要购买其他的对象存储产品;并且使用的是 github 作为图床,图片不会丢失。早期的博文使用的是七牛云的免费存储,结果后来被他们删掉.

2020-09-25 20:42:21 1656 1

原创 cmake教程|cmake入门实战

旧博文,搬到 csdn原文:http://rebootcat.com/2020/09/02/cmake/前言我是一个 linux c++ 开发者,但是一直对 Makefile 的语法很是头痛,每次都记不住,所以每次写 Makefile 都很痛苦,Makefile 里需要你自己编写依赖和推导规则,这个过程能不能简单点呢?对于编译一个 C++ 工程来说,也许需要的就是头文件路径、库路径、编译参数,剩下的东西基本也不重要,这三样足够去编译一个工程了。所以有没有一个工具能简单点的去实现 C++ 项目的构.

2020-09-04 06:45:12 1791

原创 Scons构建C++项目

旧博文,搬到 csdn原文:http://rebootcat.com/2020/08/30/scons/前言我是一个 linux c++ 开发者,但是一直对 Makefile 的语法很是头痛,每次都记不住,所以每次写 Makefile 都很痛苦,Makefile 里需要你自己编写依赖和推导规则,这个过程能不能简单点呢?对于编译一个 C++ 工程来说,也许需要的就是头文件路径、库路径、编译参数,剩下的东西基本也不重要,这三样足够去编译一个工程了。所以有没有一个工具能简单点的去实现 C++ 项目的构.

2020-09-04 06:43:26 1192

原创 自动创建阿里云抢占式实例

旧博文,搬到 csdn原文:http://rebootcat.com/2020/08/24/auto_run_aliyun_spot/aliyun_spot自动创建阿里云抢占式实例。支持一下作者,购买阿里云背景阿里云抢占式实例应该属于阿里云的一种闲置资源利用,性价比非常高,每小时的价格在 0.01 ~ 0.05 每小时,具体根据不同的配置和地域有差别,流量价格小于 1元/G.抢占式实例最高可以以一折的价格购买 ECS 实例,并能稳定持有该实例至少一个小时。一个小时后,当市场价格高于您的出价.

2020-09-04 06:41:40 1817

原创 valgrind massif 分析内存问题

旧博文,搬到 csdn原文:http://rebootcat.com/2020/06/16/valgrind_massif_memory_analysing/Valgrind Massifvalgrind 是什么,这里直接引用其他人的博客:Valgrind是一套Linux下,开放源代码(GPLV2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类.

2020-09-04 06:39:57 2467 3

原创 浅谈几种区块链网络攻击以及防御方案之其它网络攻击

旧博文,搬到 csdn原文:http://rebootcat.com/2020/04/16/network_attack_of_blockchain_other_attack/写在前面的话自比特币诞生到现在,比特币(网络)经历过大大小小非常多次的攻击,尤其在比特币诞生之初的几年,并且随着比特币价格的一路飙涨,黑客针对比特币网络的攻击就一直没有停止过。据估算,目前大约有 350 ~ 400 万比特币永久丢失,价值大约 240 ~ 280 亿美元。当然其中不只有由于黑客的攻击导致的丢失,毕竟比特币最初.

2020-09-04 06:36:59 1216

原创 浅谈几种区块链网络攻击以及防御方案之拒绝服务攻击

旧博文,搬到 csdn原文:http://rebootcat.com/2020/04/14/network_attack_of_blockchain_ddos_attack/写在前面的话自比特币诞生到现在,比特币(网络)经历过大大小小非常多次的攻击,尤其在比特币诞生之初的几年,并且随着比特币价格的一路飙涨,黑客针对比特币网络的攻击就一直没有停止过。据估算,目前大约有 350 ~ 400 万比特币永久丢失,价值大约 240 ~ 280 亿美元。当然其中不只有由于黑客的攻击导致的丢失,毕竟比特币最初的.

2020-09-03 22:31:52 1939

原创 浅谈几种区块链网络攻击以及防御方案之女巫攻击

旧博文,搬到 csdn原文:http://rebootcat.com/2020/04/13/network_attack_of_blockchain_sybil_attack/写在前面的话自比特币诞生到现在,比特币(网络)经历过大大小小非常多次的攻击,尤其在比特币诞生之初的几年,并且随着比特币价格的一路飙涨,黑客针对比特币网络的攻击就一直没有停止过。据估算,目前大约有 350 ~ 400 万比特币永久丢失,价值大约 240 ~ 280 亿美元。当然其中不只有由于黑客的攻击导致的丢失,毕竟比特币最初.

2020-09-03 22:30:32 2417

原创 浅谈几种区块链网络攻击以及防御方案之日蚀攻击

旧博文,搬到 csdn原文:http://rebootcat.com/2020/04/12/network_attack_of_blockchain_eclipse_attack/写在前面的话自比特币诞生到现在,比特币(网络)经历过大大小小非常多次的攻击,尤其在比特币诞生之初的几年,并且随着比特币价格的一路飙涨,黑客针对比特币网络的攻击就一直没有停止过。据估算,目前大约有 350 ~ 400 万比特币永久丢失,价值大约 240 ~ 280 亿美元。当然其中不只有由于黑客的攻击导致的丢失,毕竟比特币.

2020-09-03 22:29:12 1562 1

原创 python采集bandwidth信息

旧博文,搬到 csdn原文:http://rebootcat.com/2018/05/21/analyze_bandwidth/python脚本采集bandwidth经常要做一些 linux 系统上的性能分析或者采集 cpu/mem/bandwidth 上报到监控系统。分享一个我平常常用到的 bandwidth 采集脚本,原理是分析 /proc/net/dev 文件, 脚本如下:#!/usr/bin/env python#-*- coding:utf-8 -*-#脚本探测网卡流入带宽,循环.

2020-09-03 22:24:26 327

原创 python采集cpu信息

旧博文,搬到 csdn原文:http://rebootcat.com/2018/05/20/analyze_cpu/python脚本采集cpu经常要做一些 linux 系统上的性能分析或者采集 cpu/mem/bandwidth 上报到监控系统。分享一个我平常常用到的 cpu 采集脚本,原理是分析 /proc/stat 文件, 脚本如下:#!/usr/bin/env python# -*- coding:utf8 -*-import timeimport copyclass Cpu.

2020-09-03 22:23:03 522

原创 一键安装python3环境

旧博文,搬到 csdn原文:http://rebootcat.com/2018/04/15/python3_in_a_box/一键安装python3环境由于现在逐步转移到 python3 进行开发,但是很多机器并没有预装 python3 环境,所以需要安装。所以分享一个我常用的,一键安装 python3.7 的脚本:#!/bin/shwhich python3if [ $? -eq 1 ]then echo "no python3 found, will try to inst.

2020-09-03 22:16:19 1666 1

原创 破解微信 DB, 导出 Mac 微信聊天记录

旧博文,搬到 csdn原文:http://rebootcat.com/2018/03/05/export_mac_wechat/前头的话最近由于手机内存告急,打算对手机进行一下瘦身。其中手机微信占用了将近 5G,这个简直太可怕了,于是打算把微信聊天记录备份到电脑上。本来备份就备份了,也没啥好说的,不过突发奇想想知道 Mac Wechat 把聊天记录备份到哪了?或者说平常聊天的数据放在哪里了?能不能把这些聊天记录导出成 txt 文件呢?于是就有了这篇文章。导出微信聊天记录为txt导出微信聊天记.

2020-09-03 22:14:36 21317 4

原创 辩证看待 iostat

title: 辩证看待 iostatdate: 2018/01/16 11:23:58tags:iostatdiskstatssysstatblktracecategories:linux磁盘comments:旧博文,搬到 csdn原文:http://rebootcat.com/2018/01/16/using-iostat-dialectically/前言经常做系统分析会接触到很多有用的工具,比如 iostat,它是用来分析磁盘性能、系统 I/O 的利器。本文将重.

2020-09-03 22:11:41 197

原创 微信跳一跳高分辅助踩坑

最近挺火的微信跳一跳最近新版微信的『跳一跳』小程序着实火了一把,也把小程序这个概念再次推波助澜了一波,看来以后小程序这个入口会有大作为。张小龙:一个好的 APP 应该是用完即走的。这句话对用户来说是个好消息,对其他创业者来说却可能会招来恶语相向。现在这个时代的步伐越来越快,大家好像都很忙,时间越来越珍贵。如果以后微信真的把小程序这个入口做好了,我觉得对于用户来说,是件好事,当然前提是做好了,比如安全性啥的,比如不会被外挂啥的!现在中午,吃完饭没事大家都会高呼 “来一波!来一波!”,就是微信小游戏

2020-09-03 22:03:12 699

原创 使用docker制作hexo镜像

个人博客:戳我,戳我 前面的话前面几篇博客陆续记录了我使用coding仓库备份博客网站源码,以及构建了hexo的docker镜像,也提到了使用daocloud进行自动化构建hexo博客的功能。这篇博文就是记录使用daocloud持续化构建hexo博客的折腾。前面的折腾如下:使用coding私有仓库多终端编写博客使用docker制作hexo镜像daocloud其实我是很喜欢简单粗暴的,直接

2017-01-03 09:39:59 3706

原创 hessiancpp编译和使用(C++版)

个人博客:戳我,戳我许下的承诺前两篇博客Hessian通信案例(java)和Hessian源码分析(java)介绍了Java版的hessian的使用以及源码分析。当时也说过打算写一下C++版的hessian的使用和源码分析,现在就是兑现承诺的时候了。其实我项目中实际用到的是C++版的hessian,java版的hessian是我最初接触用来理解hessian,并进行联调测试的部分。hessian的

2016-12-22 14:40:33 2204 1

原创 Hessian源码分析(java)

先扯一扯前一篇博文Hessian通信案例(java)简单实现了Java版的Hessian客户端和服务端的通信,总体看来,实现起来比较简单,整个基于Hessian的远程调用过程也显得很方便。但是知其然还要知其所以然,Hessian的底层是怎么实现远程调用的?是怎么序列化的?又是怎么反序列化的?又是如何通信的?还记得吗下面这段代码你还记得吗?String url = "http://localhost:

2016-12-22 14:36:13 2300

原创 Hessian通信案例(java)

简述Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,主要用作面向对象的消息通信。 GXP中的hessian插件在于提供一种hessian报文与xml报文之间的转换规则,用户可以轻易的采用hessian插件(hessian_pack && hessian_unpack)

2016-12-16 14:27:48 2328 2

原创 体验Remix——安卓电脑

第一次听说Android-X86以前玩唱吧的时候接触过PC上的安卓模拟器,不过这个只是一个软件,效果毕竟不好,想要把电脑变成安卓手机,还差远了。然后,前段时间一直纠结要不要换个手机,我现在的华为小6已经跟我差不多3年时间了,虽然中间换了好几次系统,但是感觉依然不太流畅了,可能毕竟硬件条件限制。但是又用不起苹果啊,遂想电脑能不能变成安卓手机呢?果然,首先发现了android-x86 download

2016-06-11 12:51:06 1150

原创 我的个人博客搭建记录

前言本篇博客旨在备忘,并记录了自己折腾了3,4天后顺利搭建自己的个人博客过程中碰到的一部分问题。搭建个人独立博客有很多种方法,我暂时采用的是基于github Pages的免费博客,博客框架采用hexo静态博客框架。采用此方案的原因,是因为基于github+hexo的博客很多,碰到了什么问题也有很多解决办法。当对一个事情或事物不太熟悉的时候,尽量采用受众比较多的,无关乎随大流,无关乎跟风。这让我想起了

2016-06-11 12:49:39 3052 2

原创 定义自己的rm command

rm 是一个很危险的命令,别人一直说,我并没有在意,直到有一天一个不小心,忘记当前目录的位置,手贱的使用了rm命令,结果花了半天也没有把那些重要资料给恢复过来。所以还是有必要给自己定义一个不那么危险的rm命令。自定义rm命令myrm() { Recycle = /tmp/$(`date +%Y%m%d`); mkdir -p $Recycly; mv $@ $Recycle && echo "mo

2016-06-11 12:47:51 621

原创 我的vim捣鼓之路

从大二的时候就开始接触Linux了,从而也接触了vi,对的,当时对这些还不太了解,不知道还有个vim,真的觉得入门不简单,网上关于vim对比其他Editor的学习曲线,看了令人生畏。那时候用的也不多,所以一直处于裸奔状态,只会基本的操作,这里推荐我比较喜欢的一个博客网站酷壳中的一篇博文简明vim练级攻略。这篇博文基本上把日常使用vim的90%的命令概括了,裸奔也就够了.

2016-06-11 12:45:22 6592

原创 回归——同步更新github.io

回归已经有好长时间没写博客了,可能我比较懒,不太乐于分享,我觉得这个是一个很不好的习惯。但我坚信:Sharing changes the world! 最近搭建了自己的个人独立博客,基于Github Pages的,所以打算以后同步更新我的博客到CSDN。坚持我觉得坚持挺重要的,希望自己能坚持下来写博客。不为别的,就为了记录。Github.io我的博客 Email: linuxcode2niki@g

2016-06-11 12:39:29 1709

转载 C语言编程技巧-signal(信号机制)

http://blog.sina.com.cn/s/blog_6a1837e90100v1vc.html

2015-08-24 17:07:18 1197

转载 计算程序运行时间(time_t, clock_t)

转载自:http://blog.chinaunix.net/uid-23208702-id-75182.html 计算程序运行时间(time_t, clock_t)-whyliyi-ChinaUnix博客 我们有时需要得到程序的运行时间,但我们也要知道,根本不可能精确测量某一个程序运行的确切时间 ­[3] ,文献 [4] 中说的很明白,现摘录如 下。 我们平时常用的测量运行时间的方法并不是那

2015-07-27 14:07:36 2403

转载 关于Blocking IO, Non-Blocking IO 和 Asynchronous I/O的理解

文章写得很详细很清楚了,对我的理解帮助很大。 转载自:http://www.cnblogs.com/whyandinside/archive/2012/03/04/2379234.html。概括来说,一个IO操作可以分为两个部分:发出请求、结果完成。如果从发出请求到结果返回,一直Block,那就是Blocking IO;如果发出请求就可以返回(结果完成不考虑),就是non-blocking IO;

2015-07-23 09:30:30 2618

转载 select函数详解

转载自http://www.cnblogs.com/hnrainll/archive/2011/05/05/2038186.html和http://lobert.iteye.com/blog/1768502。select函数总结 阻塞方式block,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回。使用Select就可以完成非阻塞non

2015-07-22 21:47:23 1461

原创 64位win7安装vs2010出现“组件安装失败...”等问题的解决方法

如题,公司发了新电脑,安装的是64位win7 ,我原来的本本安装的是32位的win7,当时安装vs2010的时候并没有那么多事,这次安装却真是让我蛋疼至极。先后下了3个vs的安装包,中文版的,有专业版的,有旗舰版的,但是总是碰到了如下的问题“…组件安装失败…”,相信我,我找了很多网上的方法没有成功,什么卸载.net frame*,再手动安装啊,什么win7打sp1啦,什么什么的,都没有用,我都试过,

2015-07-22 09:25:35 14835 1

空空如也

空空如也

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

TA关注的人

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