自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

cs的专栏

debug

  • 博客(50)
  • 资源 (1)
  • 收藏
  • 关注

原创 vscode侧边框关掉了怎么打开

就可以显示出来了,例如 :(CodeGeeX不显示主界面)

2024-02-22 13:27:09 398

原创 bpf对内核的观测

bpftrace 总的来说是对线上项目的系统调用的函数的观测,因为这时已经不能往函数里面加log了。相关的开源项目 https://github.com/iovisor/bpftrace

2023-10-20 17:26:16 548

原创 内核编译,进程调度

linux内核编译,了解进程调度

2023-10-20 14:28:33 136

原创 mqtt学习记录

mqtt学习

2023-08-16 17:30:23 233

原创 Nginx环境搭建与系统参数配置

Nginx初探,环境搭建,系统参数配置,理解反向代理

2023-07-21 17:18:39 189

原创 redis主从同步对象模型学习笔记

从redis淘汰策略,持久化方式的优劣分析,存储协议,高可用性(主从复制,哨兵模式,cluster集群)等方面分析redis主从同步。

2023-06-28 17:46:32 366

原创 redis存储原理与数据模型学习笔记

理解一下,如下图,要访问节点12,第一层常规的遍历方法用的次数明显比蓝色箭头用的次数要多。非完美跳表,插入节点会用随机层数的方式,这样第二层对于第三层就可能不会是“每隔一个节点提取一个元素了”,相邻的元素可能会被直接提取到上一层,更高层也是。因为6%4=2, 6%8=6, 当key时2,6的时候,size=4, key%size = 2。ht_table二维指针,这里可以理解为指针数组,对应哈希存储数组 ht 的每一个槽位ht[i] 挂的是一个链表。ht的槽位成对出现,ht[1]是为扩容备用的。

2023-06-24 15:29:36 382

原创 redis源码调试---vscode使用技巧-----C语言跳转到函数定义

,

2023-06-22 17:37:25 1535

原创 redis协议与异步方式学习笔记

EVAL的第二个参数是参数的个数,后面的参数(从第三个参数),表示在脚本中所用到的那些 Redis 键(key),这些键名参数可以在 Lua 中通过全局变量 KEYS 数组,用 1 为基址的形式访问( KEYS[1] , KEYS[2] ,以此类推)。事务是整体同生共死,假如有ABCD四个节点与服务器连接,每一个节点中都可能有事物,其中任意一个节点都有可能宕机,为了保证事物的安全性,怎么办?numkeys 对应上面例子中的1,KEYS[1]表示 score:10001, 可选参数arg没有使用到。

2023-06-22 16:38:30 605

原创 了解redis以及其基本命令

redis 编译安装,认知

2023-06-18 16:26:45 747

原创 理解内存序,指令重排与内存模型

1 多线程同步:当多个线程需要共享一个变量,并且需要确保每个线程对该变量的读操作都能够正确地获取最新值时,可以使用std::memory_order_acquire来确保同步。memory_order_relaxed (松散内存序): 只确保原子性,不具备同步性,顺序不一定,编译器,cpu都可以对ab、ef优化(改变顺序,重排)memory_order_acquire (获得操作): 原子性,同步性,顺序性 与memory_order_release 相反。a,b能否优化到c后面来?

2023-06-10 19:06:30 947

原创 RK android13编译环境搭建与常用编译命令

RK android13编译环境,常用编译命令

2023-06-09 11:19:27 1432 4

原创 理解原子操作与CAS锁

从cpu存储架构上分析原子操作的基本原理

2023-06-08 18:04:36 590

原创 理解分布式锁的实现过程

在分布式系统中,一个应用部署在多台机器当中,在某些场景下,为了保证数据一致性,要求在同一时刻,同一任务只在一个节点上运行,即保证某个行为在同一时刻只能被一个线程执行;在单机单进程多线程环境,通过锁很容易做到,比如mutex、spinlock、信号量等;而在多机多进程环境中,此时就需要分布式锁来解决了;所谓的分布式场景就是:多机器,多网段,通过socket通信。

2023-06-07 17:28:35 229

原创 内存泄漏检测相关内容

通过拦截 malloc,free函数,然后以宏定义的方式,改造malloc, free: malloc的时候根据指针地址写一个文件,free的时候根据指针地址删除这个文件。最后根据留下的文件就可以知道哪个new没有释放内存了。_malloc__FILE____LINE___free__FILE____LINE__方法1的弊端是,最好是用在一个.c文件中,如果文件较多的话就不太适用。

2023-06-05 17:11:09 80

原创 手写C/C++死锁检测

手写C/C++死锁检测,有向图

2023-06-03 15:50:21 775

原创 RK android13光感适配HAL层调用

miscdevice示例

2023-06-02 14:34:27 520

原创 了解一下与epoll媲美的io_uring

io_uring从概念到代码演示

2023-05-20 18:32:33 270

原创 DPDK UDP小程序使用记录

udp 协议栈解析

2023-05-14 19:58:19 117

原创 理解dtsi中的&

dtsi中的 & 的用法

2023-05-11 14:34:59 513

原创 dtsi编译错误

原来是改为收集中。。。

2023-05-08 17:48:31 598

原创 用户态协议栈学习,DKDK基本用法介绍

这里以DPDK为例:(目的是为了获得原始的网络数据,除了DPDK,socket raw,netmap也能获取获取以太网数据)

2023-05-07 19:15:48 583

原创 用ucontext库创建简单的协程

协程是一种轻量级的线。协程在程序运行时由程序员显式控制调度的,可以在同一个线程中实现多个协程之间的切换,从而实现并发执行的效果。比较经典的理解是:“用同步的方法,做着异步的事情”。协程避免了线程切换所带来的开销,在一些性能要求高、资源限制多的场合就特别的适用。协程上下文ucontext_t,里面包含了程序计数器、栈指针、寄存器等信息,它们表示了一个协程的运行状态。通过ucontext_t的简单封装,即可验证 “保存和恢复上下文” 来实现协程的切换的过程。

2023-04-28 15:57:03 489

原创 pinctrl dts学习笔记

一组gpio需要配置不同的状态,/ 输入上拉// 输出16ma, 怎么在dts中配置呢?代码中如何调用呢?

2023-04-27 16:55:58 363

原创 用wireshark抓tcp三次握手

用wirechark抓tcp三次握手。服务端的ip:192.168.1.91,起动一个简单tcp服务器reactor。点击连接,这里就完成了三次握手。

2023-04-27 14:43:13 318

原创 编译错误整理

这个错误通常是因为在代码中使用了未完整定义的结构体类型,导致编译器无法确定其大小。在这种情况下,无法使用sizeof运算符来计算结构体的大小。要解决这个问题,需要包含相应的头文件或在代码中定义完整的结构体类型。例如,在使用sockaddr_in结构体之前,需要在代码中包含头文件。

2023-04-27 09:22:24 1334

原创 20230422 2.2.3 Posix API与网络协议栈的一些认知

POSIX(Portable Operating System Interface)API是一组操作系统接口标准,旨在为不同的Unix操作系统提供一致的编程界面。它包括了许多常见的操作系统服务,如进程管理、文件管理、网络通信等。POSIX API由IEEE制定和管理,其标准编号为IEEE 1003。许多现代的操作系统都支持POSIX API,包括Linux、Mac OS X和Solaris等。

2023-04-25 10:30:54 133

原创 Reactor学习,从数据结构,内存分配,概念上分析

reactor可以用下面的结构体去抽象,它包含epoll的fd, zv_connect_t *block的数量(需要动态分配内存),然后它指向 zv_connblock_s链表的表头int epfd;int blkcnt;// 这里是指针,指向block的头 } zv_reactor_t;现在初始化它,假设有1024个block。

2023-04-23 22:13:38 77

原创 理解链表的内存分配

链表内存分配,字节对齐,malloc

2023-04-22 09:15:12 144

原创 ubuntu挂载硬盘

在home目录下创建一个名为“mnt”的新目录,用于挂载硬盘。

2023-04-21 14:24:08 852

原创 ubuntu内核降级相关

参考https://www.cnblogs.com/minseo/p/13065321.html在 /etc/apt/sources.list 的末尾加上然后更新之,apt-get updateapt-cache search linux-image > kernel_list.log打开 kernel_list.log ,找到你的目标 linux-image-5.4.0-42-generic,然后就可以安装了:apt install -y linux-image-5.4.0-42-generi

2023-04-19 09:36:10 355

原创 网络字节序

ntohs和htons是两个函数,用于将网络字节序(大端模式)和主机字节序(小端模式)之间进行转换。

2023-04-15 19:41:38 58

原创 select poll epoll学习记录

select poll epoll学习记录。

2023-04-12 16:20:17 45

原创 智能指针 reset weakptr

C++智能指针,reset(), weak_prt, shared_ptr

2023-04-09 12:14:44 229

原创 智能指针reset()

当使用reset函数时,智能指针的引用计数会相应地减少1。如果减少后引用计数变为0,则表示该资源不再被使用,可以安全地删除资源。当参数为空指针时,reset()会释放原来指针所管理的资源,同时将指针置为空。当参数为非空指针时,reset()函数接受一个可选参数,这个参数可以是一个指向新对象的指针,也可以是一个空指针。reset()会先释放原来指针所管理的资源,然后将指针重新指向新对象,此时此刻,如果有其它智能指针也指向它,只是计数减一。

2023-04-09 08:44:59 1516 2

原创 如何学习设计模式

如何学习设计模式

2023-04-05 12:31:00 36

原创 认识 std::async

std::async函数是异步执行的,它将任务提交到线程池中执行,线程池中的线程数量有限, 所以多个std::async的执行顺序和执行次数不确定,可能会出现乱序情况和多次执行的情况。因此,如果多个std::async函数的执行顺序很重要,可以使用std::future对象的wait()或者wait_for()方法来等待其它任务完成后再获取结果。此外,std::async函数的执行结果也不确定何时返回,需要通过调用std::future对象的get()方法来获取执行结果,认识 std::async。

2023-04-04 14:19:52 116

原创 vscode error LNK2019: 无法解析的外部符号 main,函数 “int __cdecl invoke_main(void)“ (?invoke_main@@YAHXZ) 中引用了该符

invoke_main@@YAHXZ) 中引用了该符号 [G:\c++\customer\vs_code\retry2\build\retry2_async.vcxproj][build] G:\c++\customer\vs_code\retry2\build\Debug\retry2_async.exe : fatal error LNK1120: 1 个无法解析的外部命令 [G:\c++\customer\vs_code\retry2\build\retry2_async.vcxproj]

2023-04-03 15:03:07 874

原创 序列化与反序列化

【代码】C/C++序列化与反序列化

2023-03-31 22:12:21 59

原创 无锁队列的理解

C++11 用原子操作实现无锁队列

2023-03-31 16:05:01 83

win7 超级终端

windows 7 超级终端绿色版,可以用来输入AT命令,用于软件调试。

2018-09-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除