方亮的专栏

方亮的专栏

Golang反射机制的实现分析——reflect.Type方法查找和调用

        在《Golang反射机制的实现分析——reflect.Type类型名称》一文中,我们分析了Golang获取类型基本信息的流程。本文将基于上述知识和经验,分析方法的查找和调用。(转载请指明出于breaksoftware的csdn博客) 方法 package main impo...

2019-01-08 20:19:06

阅读数:283

评论数:0

Golang反射机制的实现分析——reflect.Type类型名称

        现在越来越多的java、php或者python程序员转向了Golang。其中一个比较重要的原因是,它和C/C++一样,可以编译成机器码运行,这保证了执行的效率。在上述解释型语言中,它们都支持了“反射”机制,让程序员可以很方便的构建一些动态逻辑。这是C/C++相对薄弱的环节,而Gol...

2019-01-08 20:09:44

阅读数:97

评论数:0

C++拾取——Linux下实测布隆过滤器(Bloom filter)和unordered_multiset查询效率

        布隆过滤器是一种判定元素是否存在于集合中的方法。其基本原理是使用哈希方法将数据映射到一个很长的向量上。在维基百科上,它被称为“空间效率和查询时间都远远超过一般的算法”的方法。由于它只保存散列的数据,所以对于很长的数据有着良好的压缩特性,这个是个不争的事实(可以参见《布隆过滤器 (B...

2018-12-26 20:26:02

阅读数:120

评论数:1

Gin源码解析和例子——中间件(middleware)

        在《Gin源码解析和例子——路由》一文中,我们已经初识中间件。本文将继续探讨这个技术。(转载请指明出于breaksoftware的csdn博客)         Gin的中间件,本质是一个匿名回调函数。这和绑定到一个路径下的处理函数本质是一样的。         再以Engin...

2018-12-03 18:38:08

阅读数:173

评论数:0

Gin源码解析和例子——路由

        Gin是一个基于golang的net包实现的网络框架。从github上,我们可以看到它相对于其他框架而言,具有优越的性能。本系列将从应用的角度来解析其源码。(转载请指明出于breaksoftware的csdn博客)         本文我们将分析其路由的原理。先看个例子(源于gi...

2018-11-30 23:48:42

阅读数:930

评论数:0

Colly源码解析——结合例子分析底层实现

        通过《Colly源码解析——框架》分析,我们可以知道Colly执行的主要流程。本文将结合http://go-colly.org上的例子分析一些高级设置的底层实现。(转载请指明出于breaksoftware的csdn博客) 递归深度         以下例子截取于Basic ...

2018-11-28 22:04:59

阅读数:353

评论数:0

Colly源码解析——框架

        Colly是一个使用golang实现的数据抓取框架,我们可以使用它快速搭建类似网络爬虫这样的应用。本文我们将剖析其源码,以探析其中奥秘。(转载请指明出于breaksoftware的csdn博客)         Collector是Colly的核心结构体,其中包含了用户对框架行为...

2018-11-27 19:08:21

阅读数:221

评论数:0

并行计算——OpenMP加速矩阵相乘

        OpenMP是一套基于共享内存方式的多线程并发编程库。第一次接触它大概在半年前,也就是研究cuda编程的那段时间。OpenMP产生的线程运行于CPU上,这和cuda不同。由于GPU的cuda核心非常多,可以进行大量的并行计算,所以我们更多的谈论的是GPU并行计算(参见拙文《浅析GP...

2018-10-22 21:47:22

阅读数:419

评论数:0

C++拾取——使用stl标准库实现排序算法及评测

        今天看了一篇文章,讲各种语言的优势和劣势。其中一个观点:haskell非常适合写算法,因为使用者不用去关心具体的计算机实现,而只要关注于操作语义。这让它在专心研究算法的人中非常受欢迎。所以很多时候,语言的争论没有太多的意义,有意义的是它适不适合某些场景或者某些人。(转载请指明出于b...

2018-10-18 22:00:17

阅读数:574

评论数:2

C++拾取——使用stl标准库简化代码

        代码是思想的表达。阅读代码是一个猜测、求证的过程。这个过程非常费脑,所以人们都不喜欢啰啰嗦嗦的表达方式。于是在相同认知水平下,简洁高效的表达是喜闻乐见的。本文将抛砖引玉,通过一些案例讲解如何去简化代码。(转载请指明出于breaksoftware的csdn博客) 关系数列 等差数...

2018-10-12 13:17:48

阅读数:161

评论数:0

C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——遍历和删除

      相关环境和说明在《C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——插入》已给出。本文将分析各个容器中遍历和查找的性能。(转载请指明出于breaksoftware的csdn博客) 遍历 从前往后 traversal_b...

2018-10-06 01:17:46

阅读数:258

评论数:0

C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——删除

        相关环境和说明在《C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——插入》已给出。本文将分析从头部、中间和尾部对各个容器进行删除的性能。(转载请指明出于breaksoftware的csdn博客) 删除 头部删除 元素...

2018-10-06 00:41:25

阅读数:176

评论数:0

C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——插入

        操作系统是Windows10 64bit,编译器是 Microsoft Virtual Studio Community 10。编译产出是64位测试程序。(转载请指明出于breaksoftware的csdn博客)         因为加入测量,就会导致误差。我已经尽量将环境影响降...

2018-10-05 23:59:58

阅读数:152

评论数:0

C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——遍历和查找

        相关环境和说明在《C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——插入》已给出。本文将分析各个容器中遍历和查找的性能。(转载请指明出于breaksoftware的csdn博客) 遍历 从前往后 元素个数>15000...

2018-10-05 21:21:25

阅读数:215

评论数:0

C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——删除

        相关环境和说明在《C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——插入》已给出。本文将分析从头部、中间和尾部对各个容器进行删除的性能。(转载请指明出于breaksoftware的csdn博客) 删除 头部删除 元素个数&...

2018-10-05 17:06:08

阅读数:153

评论数:0

C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(ubuntu g++)——插入

        操作系统是ubuntu 18.04.1 server amd64,gcc是 7.3.0。编译产出是64位测试程序。(转载请指明出于breaksoftware的csdn博客)         因为加入测量,就会导致误差。我已经尽量将环境影响降低,但是还是难免有误差。大家可以通过文后...

2018-10-05 17:05:57

阅读数:159

评论数:0

bug诞生记——隐蔽的指针偏移计算导致的数据错乱

        C++语言为了兼容C语言,做了很多设计方面的考量。但是有些兼容设计产生了不清晰的认识。本文就将讨论一个因为认知不清晰而导致的bug。(转载请指明出于breaksoftware的csdn博客) class Base { public: Base() = default; ...

2018-09-28 21:20:42

阅读数:149

评论数:0

一套使用注入和Hook技术托管入口函数的方案

        工作中,我们可能会经常使用开源项目解决一些领域中的问题。这种“拿来主义”是一种“专业人干专业事”的思想,非常实用。(转载请指明出于breaksoftware的csdn博客)         一般场景下,我们都是把开源项目代码编译到我们自己的项目中。这样的“融合”,就相当于让两个项...

2018-09-28 01:59:14

阅读数:282

评论数:2

ffmpeg api的应用——提取视频图片

        这些年来,“短视频”吸引了无数网民的注意。相对于丰富有趣的内容,我们码农可能更关心其底层技术实现。本系列文章将结合ffmpeg,讲解几则视频处理案例。(转载请指明出于breaksoftware的csdn博客)         “短视频”都是以“文件"的形式保存于...

2018-09-20 19:34:23

阅读数:373

评论数:0

bug诞生记——const_cast引发只读数据区域写违例

        对于C++这种强类型的语言,明确的类型既带来了执行的高效,又让错误的发生提前到编译期。所以像const这类体现设计者意图的关键字,可以隐性的透露给我们它描述的对象的使用边界。它是我们的朋友,我们要学会和它相处,而不是改变它。(转载请指明出于breaksoftware的csdn博客)...

2018-09-11 23:39:13

阅读数:154

评论数:0

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