【基础知识】
文章平均质量分 74
基础犹如冰山浮于海上之奥妙
rtoax
行百里者半九十
展开
-
PCI Express 版本及吞吐量对照表
PCIe传输速率和可用带宽(吞吐量)计算___Sunny__的博客-CSDN博客_pcie速率与带宽原创 2023-02-07 15:41:39 · 1541 阅读 · 0 评论 -
C library function - strftime()
C library function - strftime()C library function - strftime(), The C library function size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr) formats the time represented in the structure tihttps://www.tutorialspoint.com/c转载 2022-05-25 19:22:27 · 222 阅读 · 0 评论 -
void _mm_clflush(void const*_P)
/** * File: _mm_clflush.c * Author: Rong Tao <rongtao@???.cn> * Date: 2022.05.06 * * _mm_clflush() will flush cacheline if vars in cache. * * Refs: * https://www.codenong.com/52525886/ * https://zhuanlan.zhihu.com/p/242740319 */#include.原创 2022-05-07 14:52:50 · 1017 阅读 · 0 评论 -
理解 CRLF,LF - CR(Carriage Return),LF(Line Feed)
理解 CRLF,LF - 简书CRLF, LF 是用来表示文本换行的方式。CR(Carriage Return) 代表回车,对应字符 '\r';LF(Line Feed) 代表换行,对应字符 '\n'。由...https://www.jianshu.com/p/ec9564fe1c2bCRLF, LF 是用来表示文本换行的方式。CR(Carriage Return) 代表回车,对应字符 '\r';LF(Line Feed) 代表换行,对应字符 '\n'。由于历史原因,不同的操作系统文本使用的换行符各不相转载 2022-05-06 15:15:13 · 577 阅读 · 1 评论 -
ELF重定位:Relocation Sections
Relocation Sections (Linker and Libraries Guide) https://docs.oracle.com/cd/E19120-01/open.solaris/819-0690/6n33n7fct/index.html目录Relocation Sections (Linker and Libraries Guide) https://docs.oracle.com/cd/E19120-01/open.solaris/819-0690/6n33n7fct/inde转载 2022-03-14 13:06:13 · 889 阅读 · 0 评论 -
CentOS录屏快捷键
开启/停止: Ctrl + Alt + Shift + R 开始后右上角会显示要给小红点,说明正在录制。原创 2022-02-11 14:37:00 · 1207 阅读 · 1 评论 -
centos-stream-9安装chrome谷歌浏览器
https://linuxconfig.org/how-to-install-google-chrome-browser-on-linuxhttps://linuxconfig.org/how-to-install-google-chrome-browser-on-linux安装$ wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm$ sudo dnf localinstall ./goo原创 2022-02-01 17:11:20 · 1387 阅读 · 0 评论 -
AutoFDO自动反馈式优化
AutoFDO自动反馈式优化_zhou1519的专栏-CSDN博客_autofdohttps://blog.csdn.net/zhou1519/article/details/84139499什么是AutoFDO?AutoFDO是指基于程序性能分析工具的反馈式编译优化。不同于传统的基于程序插桩的反馈式编译优化,AutoFDO可以对以优化过的程序进行性能分析,并利用程序的性能信息指导编译器对程序进行再次优化。这意味着AutoFDO可以部署在真实的产品线上,利用程序在生产环境的性能信息对程序进行更精准的转载 2022-02-01 15:34:42 · 953 阅读 · 0 评论 -
PXE服务器配置
https://www.bilibili.com/video/BV1xL4y1t7CE/原创 2022-01-27 16:32:21 · 3454 阅读 · 0 评论 -
virt-install安装虚拟机,qcow2文件和ISO文件不要放到/home目录中
#!/bin/bashvirt-install --virt-type=kvm \ --name centos-stream-9.0 \ --memory 8192 \ --vcpus 8 \ --os-type=linux \ --os-variant=centos8 \ --cdrom=/home/isos/CentOS-Stream-9-20220107.0-aarch64-dvd1.iso \ --network=bridge=br0,model=virtio \ --grap.原创 2022-01-19 15:08:14 · 1116 阅读 · 3 评论 -
rpm Query formats
rpm.org - Query formatsHome Documentation Download Community Contribute AboutQuery formatsAs it is impossible to please everyone with one style of query output, RPM allows you to specify what information should be printed during a query operation转载 2022-01-12 15:22:49 · 478 阅读 · 0 评论 -
常见RPM,YUM,DNF指令
常见RPM,YUM,DNF指令荣涛2021年12月2日文档修改日志日期修改内容修改人备注2021年12月2日创建荣涛下载dnf# 下载源码RPM包,这将下载 glibc-xxxx.src.rpm$ dnf download --source glibc# 下载RPM包,这将下载 glibc-xxxx.rpm$ dnf download glibc# 查看URL$ dnf download --url glibc安装dnf# 安装$ dn原创 2021-12-12 13:32:27 · 999 阅读 · 0 评论 -
推荐一个看ELF文件的软件 010Editor
当然需要添加“插件”当然,这里应该不叫插件,叫做模板。原创 2021-09-18 20:51:34 · 639 阅读 · 1 评论 -
ASN.1编解码与编程
ASN.1编解码与编程荣涛2021年8月23日2386499836@qq.com1. 概述ASN.1 – Abstract Syntax Notation dot one,抽象记法1。数字1被ISO加在ASN的后边,是为了保持ASN的开放性,可以让以后功能更加强大的ASN被命名为ASN.2等,但至今也没有出现。ASN.1描述了一种对数据进行表示、编码、传输和解码的数据格式。它提供了一整套正规的格式用于描述对象的结构,而不管语言上如何执行及这些数据的具体指代,也不用去管到底是什么样的应用程原创 2021-08-23 11:42:36 · 3637 阅读 · 1 评论 -
SHA-3的获胜者:keccak - 在 3GPP TS 35.231、FIPS 202 和 SP 800-185 中标准化
https://keccak.team/keccak.html目录技术细节标准实例Keccak是一种通用的加密函数。最著名的是散列函数,但它也可用于身份验证、(经过身份验证的)加密和伪随机数生成。它的结构是极其简单的海绵结构,内部使用了创新的Keccak-f 密码排列。在被选为 SHA-3 竞赛的获胜者后,Keccak已在移动电话 (TUAK) 的3GPP TS 35.231以及 NIST 标准FIPS 202和SP 800-185 中进行了标准化。因此,它受到了广泛的公众监督和第三方.翻译 2021-07-01 13:38:16 · 336 阅读 · 0 评论 -
printf 格式字符串的 正则化表达式
https://github.com/Rtoax/test/blob/master/c/glibc/regex/printf-format-arg-split.c原创 2021-06-15 17:43:21 · 519 阅读 · 4 评论 -
What is Write-Combined memory | 合并写
Write-Combining can batches writes to the same cache line so they can be transferred in a single bus clock.The data will be combined and stored in the write combine buffer, and then write is in burst mode.By combining small individual memory transfe...转载 2021-06-14 13:39:39 · 1428 阅读 · 3 评论 -
RFC 8998: ShangMi (SM) Cipher Suites for TLS 1.3
https://www.rfc-editor.org/rfc/rfc8998.html转载 2021-05-30 17:07:07 · 2425 阅读 · 1 评论 -
glibc: Parsing a Template String 如何解析printf格式化
https://www.gnu.org/software/libc/manual//html_node/Parsing-a-Template-String.html#:~:text=12.10%20Parsing%20a%20Template%20String%20You%20can%20use,the%20user%E2%80%99s%20program%2C%20which%20could%20cause%20a%20crash.原创 2021-05-28 15:18:15 · 414 阅读 · 0 评论 -
The C10K problem
http://www.kegel.com/c10k.html目录The C10K problemContentsRelated SitesBook to Read FirstI/O frameworksI/O Strategies1. Serve many clients with each thread, and use nonblocking I/O andlevel-triggeredreadiness notification2. Serve many cli..转载 2021-05-27 08:02:59 · 508 阅读 · 1 评论 -
如何证明CPU的乱序执行(Out-of-order Execution)?
代码/** * 证明CPU乱序执行,并使用内存屏障消除乱序执行的影响 * rtoax 荣涛 * 2021年5月26日 */#include <stdio.h>#include <pthread.h>#ifdef HAVE_BARRIERstatic void inline mrwbarrier() { asm volatile("mfence":::"memory"); }static void inline mrbarrier() { ...原创 2021-05-26 10:14:14 · 1571 阅读 · 0 评论 -
记一次pthread_key_create导致的__nptl_deallocate_tsd段错误
__nptl_deallocate_tsdrtoax2021年5月25日记一次由于pthread_key_create导致的__nptl_deallocate_tsd。版本:glibc-2.17完整示例代码1. 简介#include <pthread.h>int pthread_key_create(pthread_key_t *key, void (*destructor)(void*));其中destructor为析构函数,它将在__nptl_deallocat原创 2021-05-25 16:30:08 · 1201 阅读 · 0 评论 -
SIMD 编程的优势与SIMD指令:SSE/AVX 与编程demo
资源:https://download.csdn.net/download/Rong_Toa/18745608《Benefits of SIMD Programming | SIMD的优势》目录SIMD指令编程demo正常代码一次循环计算4次使用SSE指令使用AVX指令性能对比更多参考SIMD指令编程demo本文更新于 2018.10.24本demo主要使用矩阵相乘, 演示了Intel SSE和AVX内部指令(intrinsics)的显式使用, 并对比了使用g转载 2021-05-15 15:20:54 · 1202 阅读 · 0 评论 -
Benefits of SIMD Programming | SIMD的优势
资源:https://download.csdn.net/download/Rong_Toa/18745608目录简介背景数据布局在 Ticker Tape 中实施 SIMD 优化点积示例未来展望更多文章/资源简介Ticker Tape 是一种技术演示,旨在鼓励开发人员在粒子系统中执行更为复杂的操作。参与该演示的开发人员会运用大量技术,来提高包括多线程和针对英特尔® SIMD 流指令扩展(SSE)的优化等在内的性能。请访问:/zh-cn/articles/ticker转载 2021-05-15 15:17:26 · 577 阅读 · 0 评论 -
GDB watch的使用
GDB watch的使用rtoax2021年3月由于寄存器限制,GDB最多支持4个watchpoint。1. 准备工作先看一眼gdb watch帮助信息:Set a watchpoint for an expression.Usage: watch [-l|-location] EXPRESSIONA watchpoint stops execution of your program whenever the value ofan expression changes.If -原创 2021-03-30 16:58:00 · 2201 阅读 · 0 评论 -
Linux Jump Label(x86)
Jump LabelRToax2021年3月27日1. Jump LabelThe kernel is filled with tests whose results almost never change. A classic example is tracepoints, which will be disabled on running systems with only very rare exceptions. There has long been interest in opt原创 2021-03-28 11:44:59 · 917 阅读 · 3 评论 -
Linux 原生异步 IO 原理与使用
目录什么是异步 IO?Linux 原生 AIO 原理Linux 原生 AIO 使用什么是异步 IO?异步 IO:当应用程序发起一个 IO 操作后,调用者不能立刻得到结果,而是在内核完成 IO 操作后,通过信号或回调来通知调用者。异步 IO 与同步 IO 的区别如 图1 所示:从上图可知,同步 IO 必须等待内核把 IO 操作处理完成后才返回。而异步 IO 不必等待 IO 操作完成,而是向内核发起一个 IO 操作就立刻返回,当内核完成 IO 操作后,会通过信号的方式通知应.原创 2021-03-27 17:23:54 · 680 阅读 · 0 评论 -
x86 calling conventions
http://en.wikipedia.org/wiki/X86_calling_conventionsx86 calling conventionsFrom Wikipedia, the free encyclopediaThis article describes thecalling conventionsused onx86architecture chips.Calling conventions describe the interface of called co...转载 2021-03-26 12:24:51 · 197 阅读 · 0 评论 -
Linux用户程序的编译链接与加载启动过程
Linux用户程序的编译链接与加载启动过程rtoax2021年3月1. 程序的编译链接1.1. 介绍如果我们打开维基百科的 链接器 页,我们将会看到如下定义:在计算机科学中,链接器(英文:Linker),是一个计算机程序,它将一个或多个由编译器生成的目标文件链接为一个单独的可执行文件,库文件或者另外一个目标文件如果你曾经用 C 写过至少一个程序,那你就已经见过以 *.o 扩展名结尾的文件了。这些文件是目标文件。目标文件是一块块的机器码和数据,其数据包含了引用其他目标文件或库的数据和函原创 2021-03-23 17:25:25 · 3159 阅读 · 1 评论 -
Linux内核构建与开发
Linux内核构建与开发rtoax2021年3月1. Linux 内核的构建1.1. 介绍我不会告诉你怎么在自己的电脑上去构建、安装一个定制化的 Linux 内核,这样的资料太多了,它们会对你有帮助。本文会告诉你当你在内核源码路径里敲下 make 时会发生什么。当我刚刚开始学习内核代码时,Makefile 是我打开的第一个文件,这个文件看起来真令人害怕 ????。那时候这个 Makefile 还只包含了 1591 行代码,当我开始写本文时,内核已经是 4.2.0 的第三个候选版本 了。这原创 2021-03-23 11:50:06 · 874 阅读 · 6 评论 -
Documentation/CodingStyle:process/coding-style.rst
[rongtao@localhost Documentation]$ reset && cat process/coding-style.rst.. _codingstyle:Linux kernel coding style=========================This is a short document describing the preferred coding style for thelinux kernel. Coding style is ..原创 2021-03-23 11:47:04 · 769 阅读 · 0 评论 -
Redis的碎片整理功能只有在使用jemalloc的时候才支持
《内存分配器ptmalloc,jemalloc,tcmalloc调研与对比》《ptmalloc、tcmalloc与jemalloc内存分配器对比分析》在编译过程使用宏HAVE_DEFRAG 来决定是否使用内存碎片整理,但是这里的整理不是对所有的内存分配器都支持,当宏定义HAVE_DEFRAG 在编译过程中被定义时,activeDefragCycle函数体才不为空,/* Perform incremental defragmentation work from the serverCr...原创 2021-03-23 10:03:41 · 685 阅读 · 0 评论 -
LLVM 核心类简明示例
《带有LLVM的eBPF组件》《The LLVM Compiler Infrastructure | LLVM编译器基础设施》《LLVM每日谈 | 知乎》《LLVM 核心类简明示例》目录LLVM 核心类简明示例 : llvm::Value && llvm::Type && llvm::Constantllvm::Valuellvm:Typellvm::ConstantLLVM 核心类简明示例 : llvm::Value &&a.转载 2021-03-21 15:03:44 · 968 阅读 · 0 评论 -
LLVM每日谈 | 知乎
llvm是什么?llvm是low level virtual machine的简称,其实是一个编译器框架。llvm随着这个项目的不断的发展,已经无法完全的代表这个项目了,只是这种叫法一直延续下来。 llvm是一个开源的项目。它最早的时候是Illinois的一个研究项目,主要负责人是Chris Lattner,他现在就职于Apple. Apple 目前也是llvm项目的主要赞助者之一。 llvm的主要作用是它可以作为多种语言的后端,它可以提供可编程语言无关的优化和针对很多种CPU的代码生成功能。此外l转载 2021-03-20 17:07:29 · 780 阅读 · 0 评论 -
The Ninja build system
The Ninja build systemv1.10.2,Nov2020Introduction Philosophical overview Design goals Comparison to Make Using Ninja for your project Running Ninja Environment variables Extra tools Writing your own Ninja files Conceptual over...转载 2021-03-19 17:17:41 · 923 阅读 · 0 评论 -
The LLVM Compiler Infrastructure | LLVM编译器基础设施
https://llvm.org/LLVM项目是模块化和可重用的编译器及工具链技术的集合。尽管名称如此,LLVM与传统虚拟机关系不大。名称“ LLVM”本身不是缩写。它是项目的全名。LLVM最初是伊利诺伊大学的一个研究项目,目的是提供一种基于SSA的现代编译策略,该策略能够支持任意编程语言的静态和动态编译。从那时起,LLVM逐渐发展成为一个由多个子项目组成的总体项目,其中许多子项目已用于各种商业和开源项目的生产中,并广泛用于学术研究。LLVM项目中的代码已根据“具有LLVM例外的Apache 2..原创 2021-03-19 16:41:48 · 445 阅读 · 8 评论 -
JIT:Just-In-Time Compilation Documentation(libgccjit.so)
https://gcc.gnu.org/onlinedocs/jit/libgccjitThis document describeslibgccjit, an API for embedding GCC inside programs and libraries.There are actually two APIs for the library:a pure C API:libgccjit.h a C++ wrapper API:libgccjit++.h. This i...原创 2021-03-19 16:02:51 · 307 阅读 · 2 评论 -
使用valgrind对gperftools(tcmalloc)进行内存泄漏和越界检测
使用valgrind对gperftools(tcmalloc)进行内存泄漏和越界检测RToax2020年12月1. 问题引入在《内存分配器ptmalloc,jemalloc,tcmalloc调研与对比》中已经对几种内存分配器进行了性能比较,其中tcmalloc(gperftools)性能较为突出。在编译应用程序时添加-ltcmalloc选项,就可以把源glibc的malloc等内存分配函数重定向到gperftools中。但是,若产生了内存泄漏和内存越界问题,使用gperftools原生的ppro原创 2021-03-18 15:34:08 · 2008 阅读 · 8 评论 -
TCP/IP:TCP SYN Flood攻击原理与实现
TCP协议是 TCP/IP 协议栈中一个重要的协议,平时我们使用的浏览器,APP等大多使用 TCP 协议通讯的,可见 TCP 协议在网络中扮演的角色是多么的重要。TCP 协议是一个可靠的、面向连接的流协议,由于 TCP 协议是建立在 IP 协议这种面向无连接的协议,所以 TCP 协议必须自己来维护连接的状态。三次握手过程TCP 协议通过一种名为 三次握手 的过程来建立客户端与服务端的连接,三次握手 过程的原理如图1:图一 三次握手过程建立连接三次握手过程如下: 客户端...转载 2021-03-14 14:24:52 · 1588 阅读 · 0 评论 -
Redis 多线程网络模型
作者:allanpan,腾讯 IEG 后台开发工程师,公众号:远赴星辰。目录导言Redis 有多快?Redis 为什么快?Redis 为何选择单线程?Redis 真的是单线程?Redis 多线程网络模型总结导言在目前的技术选型中,Redis 俨然已经成为了系统高性能缓存方案的事实标准,因此现在 Redis 也成为了后端开发的基本技能树之一,Redis 的底层原理也顺理成章地成为了必须学习的知识。Redis 从本质上来讲是一个网络服务器,而对于一个网络服务器来说.转载 2021-03-07 21:31:54 · 649 阅读 · 2 评论