提供完美的解决方案

调试器工作原理(一):基础篇

我将为大家展示 Linux 中调试器的主要构成模块 - ptrace 系统调用。这篇文章所有代码都是基于 32 位 Ubuntu 操作系统。值得注意的是,尽管这些代码是平台相关的,将它们移植到其它平台应该并不困难。

深入解析面向数据的哈希表性能

最近几年中,面向数据的设计已经受到了很多的关注 —— 一种强调内存中数据布局的编程风格,包括如何访问以及将会引发多少的 cache 缺失。由于在内存读取操作中缺失所占的数量级要大于命中的数量级,所以缺失的数量通常是优化的关键标准。这不仅仅关乎那些对性能有要求的 code-data 结构设计的软件,由于缺乏对内存效益的重视而成为软件运行缓慢、膨胀的一个很大因素。

使用 AWS 的 GO SDK 获取区域与终端节点信息

最新发布的 GO 的 SDK v1.6.0 版本,加入了获取区域与终端节点信息的功能。它可以很方便地列出区域、服务和终端节点的相关信息。可以通过 github.com/aws/aws-sdk-go/aws/endpoints 包使用这些功能。

深入理解 sudo 与 su 之间的区别

两个命令的最大区别是:sudo 命令需要输入当前用户的密码,su 命令需要输入 root 用户的密码。另外一个区别是其默认行为。sudo 命令只允许使用提升的权限运行单个命令,而 su 命令会启动一个新的 shell,同时允许使用 root 权限运行尽可能多的命令,直到明确退出登录。

pyinotify:在 Linux 中实时监控文件系统更改

Pyinotify 是一个简单而有用的 Python 模块,它可用于在 Linux 中实时监控文件系统更改。 作为一名系统管理员,你可以用它来监视你感兴趣的目录的更改,如 Web 目录或程序数据存储目录及其他目录。

NMAP 常用扫描简介(二)

之前我们介绍过两种扫描类型 PING 扫描 和 UDP 扫描,这篇文章将介绍最后剩下的两种常用扫描类型:TCP SYN 扫描和 TCP Connect() 扫描。