- 博客(19)
- 收藏
- 关注
原创 dynamic_cast的几种情况
一览本文目的基类有虚函数基类无虚函数尾语本文目的 最近秋招看到一个有意思的问题,对一个没有虚函数的对象使用dynamic_cast会发生什么情况。想一想平时基本没用过dynamic_cast,于是干脆写点代码验证一下各种情况。首先验证对有虚函数的基类的指针和引用(2种情况),指向基类本身和其派生类(2种情况),一共四种情况的结果。然后验证基类没有虚函数时的这四种情况。基类...
2019-08-05 18:38:40 1795
原创 调用private/protected修饰的虚函数
一览本文目的代码不可行的直接调用可行的指针调用尾语本文目的 前些天面试,被问到一个很有意思的问题:c++中能否调用protected修饰的虚函数,之前没有尝试过,所以只能靠直觉回答:“在技术上,只要知道虚函数表的地址就可以调用,但是不清楚protected保护的机制是具体在哪一个时期起的作用,可能需要一些手段来绕开这个机制。” 我的回答就是这样(自我感觉回答的还是含糊不清楚,...
2019-08-04 15:16:31 1527
原创 三次握手——从完成队列和未完成队列谈起
一览本文目的队列与三次握手状态两个队列大小的指定未完成队列满已完成队列满尾语本文目的 很早之前在看UNP的时候,发现书中对listen函数的第二个参数backlog有所讲解,即关于未完成队列和已完成队列,但不是十分清楚,而且在如今的linux系统中也有些许变化。并且我发现这两个队列才是三次握手的精髓所在,因此本文将对此做一些讲解,如有错误与不足,请多多指正。队列与三次握手状...
2019-07-01 23:31:38 536
原创 x86-64架构下函数调用栈与32位下的不同之处
一览本文目的x86-64下打印参数地址判断参数入栈顺序的做法不合理情况1:函数调用参数从右向左存放到寄存器,又从左到右存放到栈情况2:栈顶不增长,参数存放在栈顶之外参数多于寄存器数量,参数会入栈尾语本文目的 之前,我本想观察函数调用时,栈的细节。顺便验证一下,口口相传的,C/C++从右向左入栈。详情参考之前的文章:C++函数调用栈细节(gdb调试)结果发现了些出乎意料的情况。...
2019-06-19 21:44:07 1305
原创 C++函数调用栈细节(gdb调试)
一览本文目的测试代码汇编代码gdb调试遗留问题尾语本文目的 之前从其他地方看到过,调用函数时,会把下一条指令地址入栈,再把函数入栈,形参从右到左入栈,出栈顺序相反。但是自己一直也没有观察过。所以本文在gcc5.4下,通过GDB调试,把函数调用时的汇编指令的执行,以及相应寄存器的变换展示出来。这样不光对函数调用的细节更清楚,也能熟悉GDB调试的一些功能。ps:本文调试图片较多。...
2019-06-16 20:50:37 1243
原创 C++在gcc下的单继承,多继承,虚继承的内存布局
一览本文目的gcc下不同继承方式的存储模型单继承单继承无重写:单继承重写多重继承多继承无重写:多继承重写:虚继承多重继承无法解决的模型真正的菱形继承尾语本文目的 最近看了《深入探索c++对象模型》,被其中关于虚函数的各种继承的内存结构,绕来绕去,十分纠结。并且在《深入探索c++对象模型》这本书中的的各种结构是大体的策略,可以用来理解,但是gcc编译器中的具体实现比较详细。而网...
2019-06-12 16:54:01 2716 3
原创 C++内存分配粗略概览
一览本文目的内存分配体系尾语本文目的 在C++内存分配方面,会见到很多操作:new、delete、new[]、delete[]、operator new、 operator delete、malloc、 free、 STL里的 allocator、deallocator,甚至linux内核中的 slab allocator、kmalloc、vmalloc。内存分配体系&...
2019-06-06 17:37:00 214
原创 c++多态,为何只能通过指针或引用实现
一览本文目的内存切割尾语本文目的 在c++的多态中,如果一个基类的虚函数被派生类重写,那么把基类的指针指向派生类,就能够通过基类调用被派生类重写的这个虚函数。(对于这点有疑问的,可以看我之前写的C++多态,虚函数,虚函数表,gcc下的单继承,多继承,虚继承的内存布局)。那么如果不用指针或引用会如何? class Animal{ public: ...
2019-05-06 23:26:02 8461 6
原创 Linux条件变量pthread_condition细节(为何先加锁,pthread_cond_wait为何先解锁,返回时又加锁)
一览本文目的为何需要条件变量三个问题传入前锁mutex传入后解锁mutex返回前再次锁mutex尾语本文目的 首先说明,本文重点不在怎么用条件变量。这里我先列出 apue 中对于pthread_cond_wait函数的这么一段话:“ 调用者把锁住的互斥量传给函数,函数然后自动把调用线程放到等待条件的线程列表上,**对互斥量解锁。**这就关闭了条件检查和线程进入休眠状态等待...
2019-05-06 09:42:50 11100 12
原创 muduo中的原子操作
一览本文目的atomic背景gcc __syncc++11内存模型gcc __atomic源码尾语本文目的 在muduo中,考虑到线程安全,自定义了原子操作类AtomicIntegerT,代码中全部采用了gcc的原子操作集合,有两种实现(引入c++11前的__sync和引入c++11后 的__atomic)。不过在c++11的std中也有了atomic实现(c++11之前没有...
2019-04-29 22:42:43 479
原创 RAII手法的互斥锁——muduo中的实现
概览本文目的宏定义部分代码正文尾语 本文目的 在学习muduo网络库时,对里面采用了RAII方法线程安全的互斥锁实现,感到比较精妙,就读了源码,在读源码的过程中,遇到了一些问题,解决这些问题也花费了一些时间。感觉其他人可能也会有相同的问题,于是就顺便把这些问题拿出来,结合源码和自己的理解,写这么一篇博客。 宏定义部分&nb...
2019-04-25 23:37:05 574
原创 单例模式,懒汉饿汉,线程安全,double checked locking的问题
概览本文目的单例饿汉模式懒汉模式线程安全的Singleton实现懒汉普通加锁double checked lockingdouble checked locking 靠不住?静态局部变量实现尾语本文目的 之前在看《Linux多线程服务端编程-使用muduo C++网络库》,看到 2.5 线程安全的Singleton实现 时,里面对单例模式的线程安全有这么一句话, 人们一直认为double c...
2019-04-16 12:55:24 8581
转载 HDMI详解
资料来源:https://www.cnblogs.com/TaigaCon/p/3840653.html最近要用ZYNQ开发版的HDMI做显示,看着硬件管脚和例程只能发呆,于是决心去弄清楚HDMI的工作原理,查找了很多资料,都是碎片化的,不易懂。于是我加以整理,再以初学者(没有接触过任何视频传输接口)的角度在这篇博客里阐述。 对于初学者先了解VGA,再来看HDMI会更容易理解,...
2018-08-19 20:49:36 44755 7
原创 VGA原理详解
部分资料来源:https://www.cnblogs.com/spartan/archive/2011/08/16/2140546.html最近要用ZYNQ开发版的HDMI做一些计算机视觉算法的显示功能,看着硬件管脚和例程只能发呆,于是决心去弄清楚HDMI的工作原理,查找了很多资料,都是碎片化的,不易懂。于是我加以整理,再以初学者(没有接触过任何视频传输接口)的角度在这篇博客里阐述。 ...
2018-08-19 19:51:37 22670 1
转载 FPGA基础-芯片结构
转自https://blog.csdn.net/times_poem/article/details/51351997目前主流的FPGA仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如RAM、时钟管理 和DSP)的硬核(ASIC型)模块。如图1-1所示(注:图1-1只是一个示意图,实际上每一个系列的FPGA都有其相应的内部结构),FPGA芯片主 要由...
2018-07-22 17:18:26 623
转载 FPGA基础-LUT
资料来源:http://wenku.baidu.com/link?url=QoNSMH7pejiuGqV22sKLVTr2zdHxORcr0R3RnOlNuK17164pHfnBtleayAFQn72Ge2wNUPteF8mcqoGpbEIVWbKWImZCXVVkKhd9oFsSmHC转自:https://blog.csdn.net/times_poem/article/detail...
2018-07-22 17:18:15 4287
原创 入手计算机视觉
入手计算机视觉 之前一直在做机器学习相关的算法加速实现,感到单纯的算法不结合实际工程就太过空洞,各种参数(算法的速度和准确度,数据的吞吐率,实现的功耗等)都得不到考验,宛如一手屠龙术。于是前些日子开始做行人检测在ZYNQ板子上的实现。(这部分工作还在进行,完成后会更博)。虽然之前做图片文本检测,接触过目标检测的SSD和各种更快的R-CNN,但是这些都是以神经网络,或者说以CNN为主...
2018-07-22 17:15:31 318
原创 深度学习FPGA实现的阶段性总结
最近做了CNN的卷积层和LS-SVM在ZYNQ7020上的实现。除了输入是由ARM通过AXI总线传输,算法的主要部分都是由PL部分(FPGA)实现的。当然这只是入门的尝试,对于一个深度学习算法,如何在硬件上实现效率最高,还需要进一步的验证(在SOC架构中对算法进行划分还是直接采用高端FPGA实现)。 最开始做的是卷积层的实现,通过学习的例程,使我对整个开发流程有了初步的认识。随着自...
2018-06-26 21:31:59 7188 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人