自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 libgo基础组件分析(一)

文章目录侵入式双向链表TSQueueHookSListAttributeMethodSList(SList && other)void append(SList &&other)void erase(T *ptr)SList cut(std::size_t n)iteratorTSQueueAttributeMethodvoid front(T *&out)void next(T *ptr, T *&out)T *pop()void push(SList &a

2021-07-21 14:00:42 735

原创 Task协程任务分析

文章目录TaskAttributemethodTask本节进行Task协程任务的分析,Task为libgo的调度单位,也就是协程,每次go func()就会创建出一个Task,整个Task类的结构比较简单,我们先来看一下Task的UML类图,分析下整个结构Task类图:我们可以看到Task继承了TSQueueHook和SharedRefObject这两个基类,这两个基类是libgo的基础组件,用来实现队列,无锁队列,引用计数,智能指针等,这些基础组件我们在之后章节再进行分析。Attribute

2021-07-18 02:27:45 324

原创 线段树、树状数组

文章目录如何查找积分排在第k位的猎头区间统计问题线段树线段树的构建插入数据如何查找积分排在第k位的猎头假设猎聘网有10万名招聘猎头,每个猎头都可以通过做任务来累积积分,然后通过积分来下载候选人的简历,假设读者是猎聘网的一名工程师,请思考一下如何在内容中存储这个10万名猎头的ID和积分信息,才能支持以下几个操作根据猎头ID快速查找、删除和更新猎头的积分信息获取积分处于某个区间的猎头的ID列表按照积分从高到低的顺序,查找积分排在第K位的猎头ID按照积分从高到低的顺序,查询某个猎头排在第几位1.

2021-07-13 02:14:58 209

原创 设计原则——开闭原则

文章目录开闭原则开闭原则开闭原则(Open Closed Princeple) : 软件实体(模块、类、方法等)应该对扩展开放,对修改关闭。添加一个新的功能应该是在已有代码基础上扩展代码(新增模块、类、方法等),而非修改已有代码(修改模块、类、方法等)我们举一个例子来解释一下,这是一段API接口监控告警的代码,其中AlertRule存储告警规则,可以自由设置,Notification是告警通知类,支持邮件、短信、微信、手机等多种通知渠道。NotificationEmergencyLevel 表示

2021-06-27 16:17:31 215

原创 设计原则——单一职责原则

文章目录单一职责原则单一职责的应用判断类的设计是否符合单一职责单一职责原则单一职责(Single Responsibility Principle)指的是: 一个类或者一个模块只负责完成一个职责。这个原则描述的对象有两个,一个是类(class),一个是模块(module)模块的概念:模块可以看成比类增加抽象的概念,类也可以看成模块模块可以看成比类更加粗粒度的代码块,模块中可以包含多个类单一职责的定义非常简单,一个类只负责一个职责或者功能,不能设计大而全的类,而是要设计粒度小、功能单一的类。如

2021-06-27 14:58:18 111

原创 UMl类图基础

文章目录类类类(class)是指具有相同属性,方法,和关系的对象的抽象,封装了数据和行为,具有封装、继承、多态等三大特性.在UML中,类使用包含类名、属性和操作且带有分隔符的矩形来表示。类名(name)属性(attribute)是指类的特性,即类的成员变量...

2021-06-24 12:48:57 922

原创 c++11多线程

文章目录线程创建线程基本用法互斥量条件变量异步操作线程创建           使用std::thread创建线程,只需要提供函数或者仿函数即可,std::thread使用了可变参数模板,可以传递任意个参数函数参数,但是函数的返回值会被忽略           示例:#include <iost

2021-06-09 19:32:18 1304

原创 c++值类型详解

文章目录C++11值类型C++11值类型          C++11中的值类型主要分为两类:glvalue广义左值,rvalue右值,它们两都是复合类型,都含有xvalue将亡值这种类型,而glvalue包含lvalue左值, rvalue包含prvalue純右值,          如下图所示:&n

2021-06-07 20:37:33 685

原创 c++同步日志打印

文章目录c++11实现Tracec++17实现Trace完整代码使用案例在我们日常开发中,有时需要进行调试输出一些日志来查看程序运行的结果,若使用C库函数printf函数,我们要知道对应的变量是何类型,而且printf函数并不能输出c++的类.若我们要使用std::cout,又会显得代码很长,使用起来很不方便,所以我们封装一个简单的同步日志模块c++11实现Trace我们使用c++11的可变参数模板来实现,这样就可以很方便的打印多个参数,提高我们的编程效率,再用不用写一堆std::cout<&l

2021-06-03 21:33:50 322

原创 c/c++函数调用原理分析

c/c++函数调用原理分析1.x86_64寄存器2.栈3.函数调用过程分析1.x86_64寄存器          x86_64 的寄存器有16个64位寄存器,分别是:%rax, %rbx, %rcx, %esi, %edi, %rbp, %rsp, %r8, %r9, %r10, %r11, %r12,%r13, %r14, %r15。%rax 作为函数返回值使用的。%rsp 栈指针寄存器,指向栈

2021-04-28 19:35:56 524

空空如也

空空如也

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

TA关注的人

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