愿星光伴随你左右


  • 首页

  • todo

  • 思考

  • life

  • food

  • OS

  • lua

  • redis

  • Golang

  • C

  • TCP/IP

  • ebpf

  • p4

  • OpenVPN

  • IPSec

  • L2TP

  • DNS

  • distributed

  • web

  • OpenWRT

  • 运维

  • Git

  • 鸟哥的私房菜

  • IT杂谈

  • 投资

  • About Me

  • 友情链接

  • FTP

  • 搜索
close

__attribute__((packed))详解

时间: 2024-01-24   |   分类: IT     |   阅读: 2893 字 ~6分钟

attribute((packed))详解

1. attribute ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个功能是跟操作系统没关系,跟编译器有关,gcc编译器不是紧凑模式的,我在windows下,用vc的编译器也不是紧凑的,用tc的编译器就是紧凑的。例如:

在TC下:struct my{ char ch; int a;} sizeof(int)=2;sizeof(my)=3;(紧凑模式)

在GCC下:struct my{ char ch; int a;} sizeof(int)=4;sizeof(my)=8;(非紧凑模式)

阅读全文 »

GDB的调试原理

时间: 2024-01-23   |   分类: IT     |   阅读: 1356 字 ~3分钟

GDB是如何实现的,对于这个问题,在面试中也遇到过一次,我真的不懂,只能整理一下文章和资料

img

当我们启动gdb程序之后,会执行下面的操作:

  • :通过fork()系统调用创建一个新的进程。
  • :在新的子进程中在执行下述操作:ptrace(PTRACE_TRACEME,0,0,0);
  • :在子进程中通过execv()系统调用加载用于执行的可执行文件
NAME
       ptrace - process trace
SYNOPSIS
       #include <sys/ptrace.h>
       long ptrace(enum __ptrace_request request, pid_t pid,
                   void *addr, void *data);
DESCRIPTION
       The  ptrace()  system  call provides a means by which a parent process may observe and control the execution of another process,
       and examine and change its core image and registers.  It is primarily used to implement breakpoint  debugging  and  system  call
       tracing.

       The  parent  can initiate a trace by calling fork(2) and having the resulting child do a PTRACE_TRACEME, followed (typically) by
       an exec(3).  Alternatively, the parent may commence trace of an existing process using PTRACE_ATTACH.

       While being traced, the child will stop each time a signal is delivered, even if the signal is being ignored.  (The exception is
       SIGKILL, which has its usual effect.)  The parent will be notified at its next wait(2) and may inspect and modify the child pro-
       cess while it is stopped.  The parent then causes the child to continue, optionally  ignoring  the  delivered  signal  (or  even
       delivering a different signal instead).

       When  the parent is finished tracing, it can terminate the child with PTRACE_KILL or cause it to continue executing in a normal,
       untraced mode via PTRACE_DETACH.

       The value of request determines the action to be performed

attatch动作

img

阅读全文 »

为什么pthread_cond_wait需要互斥锁mutex作为参数

时间: 2024-01-22   |   分类: IT     |   阅读: 3691 字 ~8分钟

为什么pthread_cond_wait需要互斥锁mutex作为参数

pthread_cond_wait需要互斥锁mutex作为参数的原因:当前线程执行pthread_cond_wait时,一定是处于某个临界区,正在访问共享资源,存在一个mutex与该临界区相关联。因此,在阻塞前,必须释放mutex;被唤醒后,需要再次获得mutex。

阅读全文 »

TCP 三次握手四次挥手

时间: 2024-01-22   |   分类: ip   tcpip     |   阅读: 2653 字 ~6分钟

TCP连接的建立(三次握手)

最开始的时候客户端和服务器都是处于CLOSED状态。主动打开连接的为客户端,被动打开连接的是服务器。

TCP服务器进程先创建传输控制块TCB,时刻准备接受客户进程的连接请求,此时服务器就进入了LISTEN(监听)状态; TCP客户进程也是先创建传输控制块TCB,然后向服务器发出连接请求报文,这是报文首部中的同部位SYN=1,同时选择一个初始序列号 seq=x ,此时,TCP客户端进程进入了 SYN-SENT(同步已发送状态)状态。TCP规定,SYN报文段(SYN=1的报文段)不能携带数据,但需要消耗掉一个序号。 TCP服务器收到请求报文后,如果同意连接,则发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号是ack=x+1,同时也要为自己初始化一个序列号 seq=y,此时,TCP服务器进程进入了SYN-RCVD(同步收到)状态。这个报文也不能携带数据,但是同样要消耗一个序号。 TCP客户进程收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1,自己的序列号seq=x+1,此时,TCP连接建立,客户端进入ESTABLISHED(已建立连接)状态。TCP规定,ACK报文段可以携带数据,但是如果不携带数据则不消耗序号。 当服务器收到客户端的确认后也进入ESTABLISHED状态,此后双方就可以开始通信了。

阅读全文 »

Ubuntu 20.04 升级到 Ubuntu 22.04

时间: 2024-01-22   |   分类: 运维     |   阅读: 1290 字 ~3分钟

重要提醒:

  1. 不建议直接在生产环境进行升级
  2. 升级前一定要做好数据备份

一、Ubuntu 22.04 升级前准备

除非你是物理服务器,以及没有用过奇奇怪怪定制或修改的内核的 KVM 构架的 VPS 和云主机,否则升级大版本更新内核是有一定机率导致 Grub 加载失败的,切记备份重要数据!

阅读全文 »

NAT 简介

时间: 2024-01-22   |   分类: ip   tcpip     |   阅读: 3655 字 ~8分钟

什么是NAT?

NAT是一种地址转换技术,它可以将IP数据报文头中的IP地址转换为另一个IP地址,并通过转换端口号达到地址重用的目的。NAT作为一种缓解IPv4公网地址枯竭的过渡技术,由于实现简单,得到了广泛应用。

阅读全文 »

彭州自驾一日游

时间: 2024-01-22   |   分类: 生活   旅游   life     |   阅读: 861 字 ~2分钟

提前准备

  • 天气
  • 路线规划-尽量走高速,为后续春节跑长途做准备
  • 大致的时间安排-中午,晚上在外吃

温馨提示

  • 拍照需要好的天气,最好是晴天前往

参考规划图

网友对景点的大致介绍

三圣寺:寺中散养着鹿🦌跟孔雀🦚,春天赏樱花、玉兰;秋天赏枫叶、银杏。殿额为“义昭千古”为清光绪所题。

阅读全文 »

川北环线旅游攻略

时间: 2024-01-19   |   分类: 生活   旅游   life     |   阅读: 1571 字 ~4分钟

img

川北一线地图

**路线总览:**汶川+松潘+黄龙+九寨沟+黄河九曲第一湾+若尔盖+月亮湾+红原+毕棚沟+都江堰

**总里程数:**1400公里

**行程用时:**7天

阅读全文 »
5 6 7 8 9 10 11 12 13

日志
分类
标签
RSS 订阅
GitHub
© 2009 - 2025
粤ICP备2021068940号-1 粤公网安备44011302003059
0%