自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 原子操作之顺序一致

无论操作如何交错执行,至少有一个读取线程会看到两个变量都为true的情况,因此z至少会增加1。这是一个展示C++原子操作和内存顺序的经典示例。

2025-08-11 14:48:55 432

原创 原子操作的内存顺序

原子操作的内存顺序是多线程编程中的一个重要概念,它定义了原子操作之间以及原子操作与非原子操作之间的可见性和排序约束。在C++、Java、Rust等现代编程语言中,原子操作通常支持多种内存顺序选项,允许开发者在性能和正确性之间进行权衡。

2025-08-11 14:46:01 744

原创 在多线程编程里,若要强制两个线程按特定次序访问相同内存区域,可借助多种同步机制达成

在多线程编程里,若要强制两个线程按特定次序访问相同内存区域,可借助多种同步机制达成。下面介绍几种常见方法,并给出 C 语言示例代码。

2025-05-28 16:51:26 395

原创 Redis

RedisTransactioner: 封装了Redis的事务操作,用于在一个事务中执行多个命令,比如MULTI、EXEC。DBConnector: 封装了所有的底层使用到的Redis命令,比如SET、GET、DEL。RedisContext: 封装并保持与Redis的连接,当其销毁时会将其连接关闭。

2025-05-28 15:36:28 242

原创 NetLink

当NetLink类接收到原始的消息后,它会调用NetDispatcher将其解析称nl_onject,并根据消息的类型调用相应的Handler。举个例子,当portsyncd启动时,会创建一个NetLink对象,用来监听Link相关的状态变化,并且会实现NetMsg的接口,对Link相关的消息进行处理。NetLink:封装了NetLink的套接字接口,提供了NetLink消息的接口和接收消息的回调。NetMsg:NetLink消息Handler的基类,仅提供了onMsg的接口,其中没有实现。

2025-05-28 13:30:06 248

原创 无锁编程介绍

原子操作借助硬件支持,在多线程环境下提供了高效且安全的共享数据访问方式。C 语言的 <stdatomic.h> 头文件提供了丰富的原子类型和函数,能帮助开发者实现无锁编程,避免数据竞争和死锁问题。不过,使用原子操作时要深入理解其语义和内存顺序,防止出现并发问题。性能与复杂度平衡:宽松的内存顺序(如 memory_order_relaxed)性能较高,但编程和调试复杂度大;严格的内存顺序(如 memory_order_seq_cst)能简化逻辑,但性能可能受影响。

2025-05-27 15:16:33 1113

原创 [C]存储类别

const只能保证被pc指向的字符串内容不被修改,但是无法保证pc不指向别的字符串。可以用存储期描述对象,所谓存储期是指对象在内存中保留了多长时间。标识符用于访问对象,可以用作用域 (scope )和链接 (linkage )描述标识符,标识符的作用域和链接表明了程序的哪些部分可以使用它。

2025-05-19 11:02:02 698

原创 Web页面请求历程

该DHCP报文被放入一个UDP报文段中,UDP报文段被放入一个IP数据报中,IP数据报再被放入一个以太网中,这个以太网的源MAC地址为(00:22:6B:45:1F:1B),目的地址为(00:16:D3:23:68:8A)4)路由器在它具有MAC地址(00:22:6B:45:1F:1B)的接口接收到该广播以太网帧,该帧中包含DHCP请求,IP数据报被抽取,UDP报文段被分解,DHCP请求报文从此UDP报文段中抽取出来,此时DHCP服务器有了DHCP请求报文。16)最终DNS查询的数据报到达了DNS服务器。

2025-05-18 23:11:36 544

原创 Adapter适配器模式

Adapter适配器模式是一种结构设计模式,用于解决接口不兼容的问题,通过适配器类,可以将一个类的接口转换为客户渴望的另一个接口,从而使原来无法协作的对象能够一起工作。角色和职责:目标接口(Target):定义客户希望使用的接口。被适配者(Adaptee):需要适配的类或接口,其方法不符合客户的需求。适配器(Adapter):实现目标接口优点:复用性:可以在不修改原有代码的情况下复用现有类。灵活性:通过适配器,可以轻松支持新的接口或类。

2025-05-18 20:24:20 570

原创 [C++][shared_ptr] 不要使用get()初始化另一个智能指针或为智能指针赋值

【代码】[shared_ptr] 不要使用get()初始化另一个智能指针或为智能指针赋值。

2025-05-18 19:03:00 200

原创 [C++]explicit关键字

string的构造函数不是explicit的,string构造函数通常接受const char*指针,用于从C字符串创建string对象,这种情况下,隐式转换是有用的,因为用户经常希望直接用字符串字面值来初始化string对象,如果构造函数是explicit,那么每次都需要显示地调用构造函数,增加了代码的复杂度。vector的单参数构造函数是explicit的,单参数构造函数用于指定容器的容量或初始大小,例如,vector v(10)会创建一个包含10个元素的向量。

2025-05-18 18:40:17 184

原创 EVPN工作流程

PE连接CE的接口上配置ESI,PE交互Type 4路由,传播ESI并进行DF选举(当CE多归到多个PE时,选出一个PE向CE转发BUM流量)。PE1到PE2ARP报文携带ESI标签(202)和BUM标签(102),PE2发现标签202,则丢弃报文。PE3生成并通告Type 2路由,其他PE接收到PE3发出的Type 2路由,刷新MAC表项。CP行为完成后,PE1转发ARP广播请求,PE3为DF,PE3转发ARP广播报文到CE2。PE2感知直连CE1,刷新最优的MAC表条目,并生成和通告Type 2路由。

2025-05-14 13:22:30 209

原创 非阻塞I/O操作

非阻塞I/O操作是一种I/O操作模式,在这种模式下,应用程序在发出I/O请求后不会立即等待操作完成,而是继续执行其他任务。当I/O操作完成或可以进行时,系统会通知应用程序。这种操作模式可以提高程序的效率和响应能力,因为它允许程序在等待I/O操作完成时继续处理其他工作。

2025-04-17 19:12:44 370

原创 批量操作的优点

在某些情况下,批量操作可以确保数据的一致性,因为所有的操作要么全部成功,要么全部失败。:通过减少单个操作的次数,批量操作可以降低系统的负载,提高系统的稳定性和响应速度。:在多线程环境中,批量操作可以减少对共享资源的访问次数,从而降低锁的竞争。总之,批量操作是一种有效的优化手段,可以在许多不同的场景中提高性能和效率。:在数据传输过程中,批量操作可以减少数据包的数量,提高数据传输效率。:批量操作可以减少单个操作的开销,从而提高系统的整体吞吐量。:批量分配内存可以减少内存碎片,提高内存使用效率。

2025-04-17 18:48:31 346

原创 一个完整的初学者指南,子网划分

8.8.8.810.0.15.30Why?/24!No sense!!THAT’S IT!

2024-08-09 11:02:53 918

原创 二叉搜索树(Binary Search Tree)

二叉搜索树的查找过程和次优二叉树类似,通常采取二叉链表作为存储结构。每次插入新的节点时,只需改动某个节点的指针,不必移动其他节点。搜索、插入、删除的复杂度等于树的高度,期望情况下为O(log n),最坏情况下退化为偏斜二叉树。二叉搜索树相比于其他数据结构的优势在于查找、插入的时间复杂度较低。它是一种基础性数据结构,常用于构建更为抽象的数据结构,如集合、多重集、关联数组等。对于可能形成偏斜二叉树的问题,可以使用平衡树来改良,如AVL树、红黑树等,以维持搜索、插入、删除的时间复杂度在O(log n)。

2024-06-30 20:28:41 343

原创 802.1Q

802.1Q is a networking standard that defines virtual LANs (VLANs) on an Ethernet network [1]. VLANs are logical networks that share a single physical connection using 802.1Q tagged frames. This standard allows for the segmentation and isolation of network

2024-06-28 10:36:19 879

原创 TPID (Tag Protocol Identifier)

TPID stands for Tag Protocol Identifier. It is a 16-bit field used in IEEE 802.1Q tagged frames to identify the frame as an IEEE 802.1Q-tagged frame [2]. The TPID field is located at the same position as the EtherType field in untagged frames and is used t

2024-06-28 10:34:18 690

原创 EVPN (Ethernet VPN)

EVPN, or Ethernet VPN, is a technology that enables the connection of dispersed customer sites using a Layer 2 virtual bridge. It allows for the deployment of multiple EVPNs within a service provider network, providing network connectivity to customers whi

2024-06-26 10:37:24 1111

原创 ARP (Address Resolution Protocol)

ARP stands for Address Resolution Protocol. It is a communication protocol used for discovering the link layer address, such as a MAC address, associated with a given internet layer address, typically an IPv4 address [2]. ARP plays a critical role in the I

2024-06-26 10:36:13 928

原创 MPLS (Multiprotocol Label Switching)

MPLS, which stands for Multiprotocol Label Switching, is a networking technology used in computer networks to route traffic efficiently. It is a protocol that operates at a layer between traditional definitions of OSI Layer 2 (data link layer) and Layer 3

2024-06-26 10:35:15 638

原创 BGP (Border Gateway Protocol)

BGP, which stands for Border Gateway Protocol, is a crucial protocol used in computer networks to determine the best routes for data transmission on the internet [1]. It is an Internet Engineering Task Force (IETF) standard and is considered the most scala

2024-06-26 10:33:34 912

原创 IS-IS (Intermediate System to Intermediate System)

IS-IS, which stands for Intermediate System to Intermediate System, is a routing protocol designed for efficient information transfer within a computer network or a group of connected devices. It operates by determining the best route for data through a pa

2024-06-26 10:32:16 1151

原创 Segment routing

Segment routing is a source-based routing technique that simplifies traffic engineering and management across network domains [3]. It allows for complete control over the forwarding paths by encoding the routing path in the packet header as an ordered list

2024-06-25 19:56:46 701

转载 你可能从没真正理解 MPLS !

隧道另一端的接收服务提供商路由器将该 VPN 标签映射到特定客户,从而使该客户的流量在逻辑上与任何其他客户(甚至是使用完全相同的私有 IP 的客户)分开。标签只出现在网络的服务提供商部分。一种是“三层VPN”(有时称为L3VPN、IPVPN或VPNv4),服务提供商了解每个站点的LAN范围,并在自己的网络中发布它们,将它们标记为属于特定客户VPN。连接服务提供商站点:大型服务提供商可以将较小服务提供商的两个站点连接在一起,使两个站点看起来像是合二为一,而较大的服务提供商则充当这些站点之间的隐形隧道。

2024-06-25 13:23:30 157

原创 OSPF(开放最短路径优先)

OSPF (Open Shortest Path First) is a routing protocol used in IP networks. It is based on the Shortest Path First (SPF) algorithm and falls into the category of interior gateway protocols (IGPs). OSPF operates within a single autonomous system (AS) and is

2024-06-25 10:22:36 628

原创 [Effective C++]34.Differentiate between inheritance of interface and inheritance of implementation

effective

2022-11-29 13:09:52 311

原创 [Effective C++]31.Minimize compilation dependencies between files

effective

2022-11-28 13:06:56 437

空空如也

空空如也

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

TA关注的人

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