本文转自 https://lvwenhan.com/sort/tech-epic 中“软件工程师需要了解的网络知识:从铜线到 HTTP”的一系列文章。

前言

写作目标

本文面向中国互联网界众多的“应用软件工程师”,确切地说,面向 web 后端工程师(Java、PHP),web 前端工程师,移动开发工程师(iOS、Android)。本文将从铜线讲起,一路讲到 HTTP,为大家剖析出一个真实的“网络”。

写作由来

阅读全文 »

xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。

其官网为:https://xmake.io

xmake 基础

创建项目

xmake 可以使用 create 选项创建一个 xmake 项目,例如创建一个名为 helloxmake 的项目。

阅读全文 »

Android Studio 修改 .android .gradle .AndroidStudio 文件夹位置

.android 文件夹的修改

首先,需要添加一个系统的环境变量 ANDROID_SDK_HOME 模拟器环境变量

默认情况下,模拟器会将配置文件存储在 $HOME/.android/ 下,将 AVD 数据存储在 $HOME/.android/avd/ 下。您可以通过设置以下环境变量来替换默认设置。

ANDROID_EMULATOR_HOME 设置特定于用户的模拟器配置目录的路径。默认位置是 $ANDROID_SDK_HOME/.android/
ANDROID_AVD_HOME 设置包含所有 AVD 特定文件的目录的路径,这些文件大多由非常大的磁盘映像组成。默认位置是 $ANDROID_EMULATOR_HOME/avd/。如果默认位置的磁盘空间不足,您可能需要指定新位置。
阅读全文 »

堆的数据结构和管理策略

空表

空闲堆块的块首中包含一对重要的指针,这对指针用于将空闲堆块组织成双向链表。按照堆块的大小不同,空表总共被分为 128条。

块表

环境配置

安装 VS2019 选择 使用 C++ 的桌面开发 ,并选择 对 VS2017(v141) 工具的 C++ Window XP 支持[已弃用] 组件,如下图所示。

安装 gitnodejs , 并加入环境变量。

安装 python3.8 ,安装目录为 C:\Program Files (x86)\Python 3.8\ ,安装选项如下图所示。

阅读全文 »

本文主要参考 https://www.linuxprobe.com/gcc-how-to.html

GCC 汇编语法

Linux 上的 GNU C 编译器 GCC ,使用 AT&T/UNIX 汇编语法。在这里,我们将使用 AT&T 语法 进行汇编编码。AT&T 语法和 Intel 语法的差别很大。

源操作数和目的操作数顺序

AT&T 语法的操作数方向和 Intel 语法的刚好相反。

阅读全文 »

转载:https://github.com/NanXiao/gnu-linux-proc-pid-intro

/proc/[pid]/auxv
/proc/[pid]/cmdline
/proc/[pid]/comm
/proc/[pid]/cwd
/proc/[pid]/environ
/proc/[pid]/exe
/proc/[pid]/fd
/proc/[pid]/latency
/proc/[pid]/limits
/proc/[pid]/maps
/proc/[pid]/root
/proc/[pid]/stack
/proc/[pid]/statm
/proc/[pid]/status
/proc/[pid]/syscall
/proc/[pid]/wchan

auxv

/proc/[pid]/auxv包含传递给进程的ELF解释器信息,格式是每一项都是一个unsigned long长度的ID加上一个unsigned long长度的值。最后一项以连续的两个0x00开头。举例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# hexdump -x /proc/2948/auxv
0000000 0021 0000 0000 0000 0000 1a82 7ffd 0000
0000010 0010 0000 0000 0000 dbf5 1fc9 0000 0000
0000020 0006 0000 0000 0000 1000 0000 0000 0000
0000030 0011 0000 0000 0000 0064 0000 0000 0000
0000040 0003 0000 0000 0000 2040 4326 7f4a 0000
0000050 0004 0000 0000 0000 0038 0000 0000 0000
0000060 0005 0000 0000 0000 0009 0000 0000 0000
0000070 0007 0000 0000 0000 f000 4303 7f4a 0000
0000080 0008 0000 0000 0000 0000 0000 0000 0000
0000090 0009 0000 0000 0000 8e67 4327 7f4a 0000
00000a0 000b 0000 0000 0000 0000 0000 0000 0000
00000b0 000c 0000 0000 0000 0000 0000 0000 0000
00000c0 000d 0000 0000 0000 0000 0000 0000 0000
00000d0 000e 0000 0000 0000 0000 0000 0000 0000
00000e0 0017 0000 0000 0000 0000 0000 0000 0000
00000f0 0019 0000 0000 0000 3de9 1a80 7ffd 0000
0000100 001f 0000 0000 0000 4fe5 1a80 7ffd 0000
0000110 000f 0000 0000 0000 3df9 1a80 7ffd 0000
0000120 0000 0000 0000 0000 0000 0000 0000 0000
0000130
阅读全文 »

动态调试送给最好的 TA

如果手机系统是 android 10 以上,那么需要 IDA 的版本大于 7.3,并且需要设置 IDA_LIBC_PATH 的环境变量。

1
2
$ export IDA_LIBC_PATH=/apex/com.android.runtime/lib/bionic/libc.so   # 32 位
$ export IDA_LIBC_PATH=/apex/com.android.runtime/lib64/bionic/libc.so # 64 位

开启手机的调试模式

💡 推荐使用下列方式开启调试模式。

阅读全文 »

本文主要记录 git 使用过程中需要搜索的一些命令。

基础篇

配置 git 用户名和邮箱

1
2
3
git config --global user.name "你的名字"

git config --global user.email “邮箱@邮箱.com”

这里的名字和邮箱决定了你在创建 commit 时的作者信息,与 git 托管平台的账号和邮箱没有关系。github 只认邮箱,也就是说 user.email 决定了在 github 的网页上要显示谁的用户名和头像。

阅读全文 »
0%