axiaojikuaipao
码龄11年
求更新 关注
提问 私信
  • 博客:19,880
    社区:125
    20,005
    总访问量
  • 19
    原创
  • 0
    粉丝
  • 0
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
加入CSDN时间: 2015-06-20
博客简介:

axiaojikuaipao的博客

查看详细资料
个人成就
  • 获得3次点赞
  • 内容获得1次评论
  • 获得9次收藏
  • 博客总排名866,251名
创作历程
  • 38篇
    2017年
成就勋章
TA的专栏
  • C++
    28篇
  • linux
    11篇

TA关注的专栏 0

TA关注的收藏夹 0

TA关注的社区 0

TA参与的活动 0

创作活动更多

「谁说嵌入式只是调包和焊板子?」—— 2026嵌入式全栈技术征锋令

谁说嵌入式只会“Ctrl+C 调包”和“拿电烙铁焊板子”?2026嵌入式全栈技术征锋令正式启幕! 本次活动专为硬核硬件/软件开发者打造,无论你是刚玩转裸机外设的萌新,还是精通RTOS调度、死磕底层驱动的行业老手,亦或是执掌系统架构的大神,这里都是你证明实力的舞台! 拒绝表面功夫,每一行代码,都有撬动硬件的力量!晒出你的硬核工程实战,为嵌入式开发者的全栈硬实力正名!

213人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

linux线程同步-条件变量

多线程环境下,如果多个线程对同一共享资源并发访问,那么由于访问资源的时候,由于访问资源的操作的非原子性,可能在向一个buffer写入数据时,另外一个线程也在写入buffer 这时候可能由于两条线程的交替执行的时机的随机性而使得结果每一次运行都不同,这时候就需要操作系统提供的互斥机制来保证某一时刻只有一个线程访问临界区代码,这就是互斥量的语义. 互斥是同步的特殊情况,相当于一个线程告诉另外一个线程,我
原创
博文更新于 2017.10.22 ·
839 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Poll与Epoll 区别总结

1.概述 网上收集了一下poll和epoll的实现原理,写下来以备后验. 2. 从api上面看,select和poll每次调用的时候需要用户自己整理该次调用关注的文件描述符和事件,内核是不会帮助用户维护前面已经关注过的记录. 而epoll是增量式的管理,每次需要告诉内核我现在关心的哪个文件描述符,内核查询以往的记录,整合起来. 打个比方就像出去购物,select和poll老板就不怎么好,每次去的
原创
博文更新于 2017.11.04 ·
6360 阅读 ·
2 点赞 ·
1 评论 ·
7 收藏

modern effective C++ 18

1.概述 该条款是关于智能指针的,unique_ptr主要用来管理互斥的资源,经常用来对C++中的强聚合关系建模,一个类可以把另外一个类当做成员,这样两个类的生命周期完全相同,大类完全掌控了小类的构造和析构,但是该类的内存需求相对较大,可以采用指针来管理类的成员函数,使用RAII在构造中new 在析构时delete,同样可以使用unique_ptr在构造时分配,当类生命周期结束时,会自动调用析构函
原创
博文更新于 2017.12.26 ·
342 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C++ bind

1.概述 function是C++11中对于函数,函数指针,函数对象,lambda表达式等可调用函数的汇总,bind函数将一个普通函数或者成员函数转化为可给function对象赋值的对象,使用这两个函数可以实现C++通用意义上的回调和委托机制.2.bind 函数返回的函数对象赋值给function对象时的要求是,返回值一定要相同,参数类型需要相同,参数个数需要小于等于function函数对象的参数
原创
博文更新于 2017.11.21 ·
357 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

connect系统调用

1.概述 linux网络编程中,一般是客户端调用connect函数,该函数将引起操作系统的tcp协议向远端的服务器执行三次握手的过程,分为两种情况进行说明,一种是connect的第一个参数文件描述符是非阻塞的.一种是该文件描述符是阻塞的. 2.阻塞情况 当该文件描述符是阻塞的时候,那么connect调用也必然是阻塞的,只有当连接上或者连接失败时返回,意味着connect返回时仅有两种情况,已经
原创
博文更新于 2017.11.16 ·
997 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

Effective 阅读笔记---条款29"为异常安全而努力是值得的"

1.概述 异常安全的函数有两个必要条件; (1)不泄漏任何资源:当异常被抛出时,必须保证资源得到泄漏,解决办法是使用RAII 手法.书中的例子是互斥锁的例子,具体做法是将加锁的操作封装到一个类的构造函数中,而把解锁的操作封装到析构函数中,当发生异常时一定会调用析构函数执行解锁. 再一个是使用智能指针管理堆上的内存,也是RAII手法的使用. (2)不允许数据败坏. 2. 异常安全函数提供以
原创
博文更新于 2017.11.16 ·
279 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Effecitve 阅读笔记--private继承与组合

Effective 条款38和39都是关于has a关系的讨论. 1.private继承则是其中的一种has a 关系. .private继承的语义是implements-in-terms-of. 如果你让一个类private继承另外一个类,你的用意是为了采用父类一些已有的实现,不是因为两个类在任何观念上的关系.private继承纯粹只是一种实现技术,(这就是为什么继承自一个private bas
原创
博文更新于 2017.11.05 ·
344 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Effective C++读书笔记一 条款36 绝对不要重新定义public继承来的non-virtual函数

Effective C++36 never refine inherited non-virtual function1.实验如果违反该条规则会如何#include <iostream> using namespace std;class B{ public: void mf(){ cout<<"base"<<endl; } }; cl
原创
博文更新于 2017.11.05 ·
318 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C++细节点记录

1.概述 看effective C++ 中有一条款倡导const 引用来代替按值来向函数传递参数,总结起来的好处主要有: 避免了对象的拷贝, 引用能够实现多态,能保证在函数中调用到正确的方法.也即是解决了割裂的问题. 然后又介绍了必须返回对象时,不能用引用来传递,给出了一些例子,包括返回栈对象引用,堆对象引用 和静态对象引用等会带来的问题,指出这种情况下必须要返回对象,让编译器进行一些优化工
原创
博文更新于 2017.11.04 ·
274 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C++语言细节点

1.概述 最近写C++代码的时候发现一些小的细节点,写下来加深理解,以后也好查看. 2.C++编译问题 一般不应该在.h文件中声明全局变量,因为如果两个.cpp文件同时include该头文件后,那么就会报重定义问题.但我们确实需要在其他的cpp文件中使用该变量,解决办法是将这些变量定义在a.cpp文件中,在b.h文件中使用extern, 在c.cpp中可以include b.h ,编译好c后
原创
博文更新于 2017.11.02 ·
361 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C++ 使用std::function 和std::bin实现委托

1.概述 C++11提供的function 和bind函数可以为C++的类之间提供委托,function相当于融合了各种函数,函数指针,lamda表达式还有函数对象等可调用,可回调函数. 抽象出它们共有的属性即只要返回值类型和参数类型一样的可调用对象,不管它是函数,函数指针,还是函数对象都可以被function 统一起来.bind函数返回一个匿名的函数对象,对其sizeof运算发现其占用内存.
转载
博文更新于 2017.10.23 ·
1304 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

nginx源码阅读笔记.array和list数据结构

1.概述 nginx中,array和list 的实现 和queue的实现不同,queue的实现是不依赖于具体的结构的,可以申明任何结构体只要该结构体中间含有queue的实例就可以将它们组织起来,那么queue的对象的内存分配需要(用户自己申请),在分配的包含queue的对象时已经分配好, 而list和array 的实现则时初始化一个list或者array, 自定义的结构的内存分配任务交给list
原创
博文更新于 2017.10.18 ·
308 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

nginx数据结构ngx_queue_t

1.概述 nginx为了跨平台底层封装了自己的数据结构,今天学了ngx_queue_t这个数据结构,这个结构实现了双向队列,该双向队列可以应用到任意结构体中把相应的结构体按照队列的方式组织起来.2.代码 /* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. */ #include <ngx_config.h> #include
原创
博文更新于 2017.10.18 ·
440 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

libevent源码阅读笔记

1.概述 libvent是基于事件驱动的开源框架.记录一下看源码学到的东西. 2. 核心结构体.struct event { TAILQ_ENTRY (event) ev_next; TAILQ_ENTRY (event) ev_active_next; TAILQ_ENTRY (event) ev_signal_next; unsigned int min_he
原创
博文更新于 2017.10.18 ·
536 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

libevent数据结构尾队列

1.概述 最近找来libevent的源码学习了一下,看到用宏实现的数据结构甚是惊讶,把其中尾队列的代码copy出来test了一下.个人感觉用宏实现该队列的思想是C++的模板的思想.我自己实现一个队列的思路肯定是写一个队列 中节点的结构体然后针对该结构体实现队列的基本操作.这样的队列只能使用于写好的节点….而libevent实现的版本是不依赖于实际的节点的.换句话说,我们有两个类,一个student
原创
博文更新于 2017.10.17 ·
423 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

linux进程间通信之共享内存

1.概述 共享内存是最快的进程间通信方式,系统在内存中维护一个特殊大小的内存块,进程可以将这快内存使用自己的页表映射到自己的内存空间中,则该内存就可以被两个进程访问实现了通信的功能.而且建立映射关系后传输数据时不用再进入内核,相比于消息队列而言更快. 2.基本数据结构struct shmid_ds { struct ipc_perm shm_perm; /* operation perms */
原创
博文更新于 2017.10.16 ·
235 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

linux进程间通信之信号量

1.概述 以前上课老师说信号量是二十世纪操作系统领域最伟大的发明之一,另外一项技术是虚拟内存.个人感觉linux系统中的锁的机制的实现应该都与信号量相关,先写下来不管对错, 互斥锁感觉就是0 -1 的二元信号量,其实这两者都依赖于底层的原子的操作来帮它们实现p v 操作. 2.linux中信号量有关的数据结构struct sem { short sempid; /* pid of last o
原创
博文更新于 2017.10.16 ·
241 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

linux进程间通信---消息队列

1.概述 消息队列是SYSTEM V实现的进程间通信方式,linux操作系统支持这种通信方式,内核需要为每一个消息队列维护一系列数据结构. 2.消息队列所设计的数据结构struct msg { struct msg *msg_next; /* next message on queue */ long msg_type; char *msg_spot; /* message text addre
原创
博文更新于 2017.10.15 ·
289 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

linux 进程间通信之管道和有名管道

管道经常用于有亲缘关系间的进程间通信,管道pipe借助于文件系统的接口,但其实管道的实现应该不在文件系统中,只是实现了文件系统系统的接口,利用进程在fork时,子进程会继承父进程的进程描述符,实际在fork时,内核中对应的打开的文件的引用计数会增加1,父子进程都可以访问相同的文件. 管道也是一种单向通信的方式,即半双工,父进程关闭读端,子进程关闭写端,则父进程向管道的一端写,子进程会在管道的另外一
原创
博文更新于 2017.10.15 ·
353 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

linux 信号笔记

1.linux信号是一种古老的进程间通信的方式,唯一一种异步通信的方式,信号的默认处理方式一般是结束当前进程如SIGINT,SIGQUIT等,应用进程可以自己控制进程处理的方式和流程. 2.信号的注册 使用signal函数或者sigaction函数注册, 3.信号是不可靠的进程间通信方式,在信号的执行例程中不能被同一种信号打断,但是会被进程接收到的其他信号所打断,#include <stdio.
原创
博文更新于 2017.10.15 ·
446 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多