万物之中, 希望至美.

CentOS 7 编译最新的 wireshark/tshark 3.2.7 安装包

系统环境 Docker CentOS 7.5.1804 编译步骤 1. 安装 CentOS epel yum 仓库 yum install -y epel-release 2. 下载 Wireshark 源码并解压 # 下载源码 wget https://github.com/wireshark/wireshark/archive/v3.2.7.tar.gz # 解压 tar -xzf wireshark-3.2.7.tar.gz 3. 安装编译所需工具 yum install -y libgcrypt-devel glib2-devel qt-devel qt5-qtbase-devel qt5-linguist qt5-qtmultimedia-devel qt5-qtsvg-devel libcap-devel libcap-ng-devel gnutls-devel krb5-devel libxml2-devel lua-devel lz4-devel snappy-devel spandsp-devel libssh2-devel bcg729-devel libmaxminddb-devel sbc-devel libsmi-devel libnl3-devel libnghttp2-devel libssh-devel libpcap-devel c-ares-devel redhat-rpm-config rpm-build gtk+-devel gtk3-devel desktop-file-utils portaudio-devel rubygem-asciidoctor docbook5-style-xsl docbook-style-xsl systemd-devel python34 cmake3 git gcc gcc-c++ flex bison doxygen gettext-devel libxslt cmake 4. Wireshark 源码 git 管理 # 进入到解压后的 Wireshark 源码目录 cd wireshark-3.2.7 # 初始化 git git init # 提交 git add . git commit -m "First commit." 5. 编译 rpm 安装包 cmake3 ./ make rpm-package......

iptables 端口转发

iptables 工作在 OSI 七层模型的二、三、四层,操作的是 Linux 内核中的 netfilter。 netfilter的工作流程大致就是 “当一个数据包到达 Linux 的网络接口(网卡)的时候,对这个数据包进行处理”,而 iptables 可以改变或者控制这个数据包的处理过程。 netfilter 内部分为三个表:filter、nat、mangle,每个表都有不同的操作链(Chains): 在 nat(网络地址翻译表,Network Address Translation)中,也就是用以实现地......

Shadowsocks-libev搭配v2ray-plugin使用

最近自己搭的梯子用着总是不太稳定,顺带 ShadowsocksX-NG 客户端可以使用 v2ray-plugin 插件了,于是就整了个插件来抗干扰下,这里记录下操作流程方便以后使用。

......

MongoDB查询写入优化

最近项目在MongoDB写入数据这块有瓶颈,以此记录一下优化过程中的技巧。

......

优秀的调试工具:ipdb

ipdb(IPython debugger), 与 pdb 类似, 是一款集成了 IPython 的 Python 代码命令行调试工具,支持 Tab 键补全语法高亮等。

......

Celery 4.2 内存泄漏问题

在使用 Celery 4.2 版本时,遇到了内存泄漏问题,话不多说先上运行环境: Python 版本:2.7.5 Celery 版本:4.2.2 系统:CentOS AsyncTask 的内存泄漏 开发环境跑了一段时间之后,出现发布任务的 service 内存占用很高,而且会出现任务发布不了的情况。但发布任务的 service 并没有做什么太过复杂的操作,经过分析之后,将问题定位在了 chord 函数中会使用了 apply_async 来插入大量的 task。 复现 写了一个简单的测试脚本来测试 chord : # -*- coding: utf-8 -*- import resource from celery import Celery, chord backend_url = 'redis://redis:6379/1' broker_url = 'pyamqp://rabbitmq:5672//?heartbeat=30' app = Celery('task',......

Python 如何流式读取大文件

几乎所有人都知道,在 Python 里读取文件有一种“标准做法”:首先使用 with open(fine_name) 上下文管理器的方式获得一个文件对象,然后使用 for 循环迭代它,逐行获取文件里的内容。

......

MySQL如何在给定场景下为一个用户授权?

如何定义 MySQL 数据库账号?

  • 用户名的组成:用户名@可访问控制列表

    • 用户名:5.7版本以前,用户名最大只有16个字节;之后的版本为 32 个字节

    • 可访问控制列表:用户可以从哪些服务器上对数据库进行访问

      1. %:代表可以从所有外部主机进行访问
      2. 192.168.1.%:可以从 192.168.1 网段进行访问
      3. localhost:DB 服务器本地访问
  • 使用 CREATE USER 命令建立用户

......

通过list()和[]创建空列表的差异

我们想创建一个空列表,可以使用如下两种方式:

# option A
empty_list = list()

# option B
empty_list = []

但你有没有想过它们之间在效率上会不会有什么不同呢?我们应该优先使用哪种方式呢?

......

Huey 每日定时任务的坑

最近别人推荐了个轻量级任务队列 Huey,然后我就去试了下,挺好用的,但却碰了文档未说明的坑。

......