why-rust-write-impl-two-T

why-rust-write-impl-two-T 第一个 T 是声明,第二个 T 是使用。 如果不先声明,那么 Rust 就不能确定 T 是泛型还是具体类型,示例如下: struct Foo<T> { x: T }

impl<T> Foo<T> { … ...更多

十二月 20, 2023
你所不知道的c

你所不知道的c 嵌入一個二進位檔案到執行檔 xxd --include blob

uname -a > blob uname -a | wc -c

105

ld -s -r -b binary -o blob.o blob objdump -t blob.o

cat > &#x… ...更多

十二月 20, 2023
C++ 的lambda

C++ 的lambda lambda原型如下: captures mutable exception attribute {body} 其中, captures是在lambda函数体中可以访问的外部变量,有两种默认捕获模式:按值捕获和按引用捕获 params指定表达式的参数 mutable修饰符表示… ...更多

十二月 20, 2023 [c++, lambda] #c++
tcp-nagle

tcp-nagle 1,糊涂窗口综合征(SWS) (1)什么是糊涂窗口综合症(Silly Window Syndrome) 当发送端应用进程产生数据很慢,或接收端应用进程处理接收缓冲区数据很慢,或二者兼而有之;就会使应用进程间传送的报文段很小,特别是有效载荷很小.极端情况下,有效载荷可能只有1个字节… ...更多

十二月 20, 2023
wifi_fuzz

wifi_fuzz iw dev wlan0 info iw dev wlan0 link iw dev mon0 set freq 2437 airmon-ng start wlan0 6 # channel 6 sudo airodump-ng --bssid 6C:72:20:5D:7… ...更多

十一月 27, 2023 [wifi] #802.11
80211_hwsim

80211_hwsim

Build mac80211_hwsim as part of kernel configuration

Load the module

modprobe mac80211_hwsim

Run hostapd (AP) for wlan0

hostapd host… ...更多

十一月 26, 2023 [wifi] #80211
深入理解系统调用

深入理解系统调用 系统调用相关知识 系统调用(system call)利用陷阱(trap),是异常(Exception)的一种,从用户态进⼊内核态。 系统调用具有以下功能和特性: 把用户从底层的硬件编程中解放出来。操作系统为我们管理硬件,⽤户态进程不用直接与硬件设备打交道。 极⼤地提高系统的安全性。… ...更多

十月 25, 2023 [系统调用] #syscalls
linux惊群处理 - thundering herd

linux惊群处理 - thundering herd 惊群的现状 不管是多进程还是多线程,都存在惊群效应,本篇文章使用多进程分析。 在Linux2.6版本之后,已经解决了系统调用accept的惊群效应(前提是没有使用select、poll、epoll等事件通知机制)。 目前Linux已经部分解决了… ...更多

十月 25, 2023 [网络] #net
linux lib include

linux lib include Linux头文件和库文件添加环境变量与GCC编译器添加INCLUDE与LIB环境变量 对所有用户有效在/etc/profile增加以下内容。source /etc/profile 重新执行修改的初始化文件/etc/profile,使只立即生效,而不必注销并重新登录… ...更多

十二月 18, 2022 [gcc] #gcc
常见的各种锁

常见的各种锁 常见的各种锁 1、悲观锁 悲观锁认为自己在使用数据的时候一定有别的线程来修改数据,在获取数据的时候先加锁,确保数据的安全性。 锁实现:关键字synchronized、Lock接口的实现 使用场景:写操作比较多,先加锁可以保证写操作时数据正确 2、乐观锁 乐观锁认为自己在使用数据的时候不… ...更多

十二月 18, 2022 [lock] #lock
vimscript(just record)

vimscript(just record) Table of Contents

目录 1 简介

一个简单的例子:

2 变量 3 表达式 4 条件语句 5 执行一个表达式 6 使用函数

函数

字符串操作: 列表处理: 字典处理: 浮点数计算: 其它计算: 变量: 光标和位置标记位置: 操… ...更多

十二月 02, 2022 [vim] #vim
self_signed_certificate

self_signed_certificate 常用后缀名 格式 说明 .crt .cer 证书(Certificate) .key 密钥/私钥(Private Key) .csr 证书认证签名请求(Certificate signing request) *.pem base64编码文… ...更多

十一月 21, 2022
wireguard_netmaker

wireguard_netmaker Wireguard 新内核一般都已经支持了wireguard,使用如下命令验证 modprobe wireguard dkms status lsmod | grep wireguard modinfo wireguard

如果kernel低于5.6需要自己安… ...更多

十一月 19, 2022 [wireguard] #wireguard
wsl_x11_gui

wsl_x11_gui 不能正常生成Xauthority的临时解决方式 ssh -R X11 forwarding本质上就是通过ssh remote tunnel将本地X server转发到远程, 所以即使远程主机的X11 forwarding是关闭的,我们也可以通过ssh -R转发服务。

wi…

...更多

十一月 17, 2022
进程状态

进程状态 进程状态排查工具 ps -ef ps auxf pstree -aps XXX

记录性能事件,等待大约15秒后按 Ctrl+C 退出

perf record -g

查看报告

perf report

ps -T -p <pid> dstat 1 10 strace … ...更多

十一月 10, 2022 [linux] #linux
内存检测工具asan

内存检测工具asan 内存检测工具asan ASAN(Address-Sanitizier)早先是LLVM中的特性,后被加入GCC 4.8,在GCC 4.9后加入对ARM平台的支持。因此GCC 4.8以上版本使用ASAN时不需要安装第三方库,通过在编译时指定编译CFLAGS即可打开开关。 内存检测工… ...更多

十一月 10, 2022 [c++] #clang #gcc
xv6/risc-v

xv6/risc-v some elf tool elfutils /usr/bin/eu-addr2line /usr/bin/eu-ar – alternative to ar, to create, manipulate archive files /usr/bin/eu-elfcmp /us… ...更多

十月 13, 2022 [OS] #OS #xv6 #jos
Linux动态链接中的PLT和GOT

Linux动态链接中的PLT和GOT PLT & GOT 首先, 我们要知道, GOT和PLT只是一种重定向的实现方式. 所以为了理解他们的作用, 就要先知道什么是重定向, 以及我们为什么需要重定向. 重定向(relocations), 简单来说就是二进制文件中留下的"坑", 预留给外部变量… ...更多

十月 12, 2022 #gcc
终端字体

终端字体 tty UTF TTY终端无法显示中文字符的原因,是内核无法渲染中文字符,我的理解是:因为中文字符的显示模式、宽度与英文字符不同, 默认输出英文字符的framebuffer(帧缓冲区)无法支持中文的完整显示。如果你使用SSH等其它方式,字符并不是由内核渲染输出,所以正常显示了。 让 lin… ...更多

十月 10, 2022 #console