• 等级
  • 410532 访问
  • 57 原创
  • 0 转发
  • 9650 排名
  • 636 评论
  • 355 获赞

C++ 笔记 —— 实现一个环形阻塞队列

实现原理环形阻塞队列,顾名思义,首先,它是一个队列,然后,它应当是一个环形,并且它是会进行阻塞的。但是根据我们的常识,内存地址是用一个longlongint来存储的,我们存储的数据的地址无法绕成一个环,所以我们想要成环的话,需要我们自己去处理。如上图,相比环状实现的来说,数据在内存中的存储更接近线性实现那样。线性实现和环形实现中,我们都记录着队头、队尾。如果是一个内存中,数据可以存储为环...

2019-03-31 12:18:35

MVP变换矩阵推导及C++实现

在进行图像处理时,经常会用到矩阵,尤其在游戏中,基本都会存在一个Camera的概念,实际上,这个Camera一般就是矩阵或者是对矩阵的封装。一个4x4矩阵,可以将平移、旋转、缩放等变换操作包含在内。但是为了便于理解与控制,这个最终的矩阵,往往是由一系列便于理解的参数来运算得出的。而Model-View-Projection变换模型就是最常用,一般来说,我们并不比去实现它们,因为有太多的工具类可以直...

2019-01-13 01:53:24

C++ 笔记——字符串自定义加密处理

根据惯例,先放定义。加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。加密算法非常多,常见的加密算法有MD5、AES、Base64、DES等等。但是此篇博客记录的加密算法和上述加密算法无关,主要记录的是按照个人喜好对字符串做处理的简单方法。字符串编码一段字符串,把所有的a变成c,把c变成d,把d变成a,我们可以把这...

2018-12-31 15:41:23

Ubuntu 18.04 + CUDA 9.2 + cuDNN 7.1.4 + Caffe2 安装

安装Ubuntu18.04Ubuntu18.04的安装参考官网步骤,很容易安装。我在安装的时候比较坎坷,拿到了一个有问题的U盘,写入ISO后,启动一直启动不了。主要步骤如下:1.下载系统。2.下载Rufus工具,也可以是其他的,只要能刻录光盘就行。然后把下载的UbuntuISO文件写入U盘。3.写好U盘后,查上电脑,选择从U盘启动。一般是开机按F12来选择启动方式。...

2018-06-30 23:38:15

面向对象的程序设计读书笔记

程序开发中面向对象的一些相关的读书笔记。面向对象概念相关面向对象的三大特性:继承、封装和多态。继承,共性放到父类,特性放到子类。封装,对象有一个明确的边界,声明公开,实现隐藏,实现的更改,对对象的使用没有影响。多态,子类的对象可以放到父类的引用中,子类的方法可以覆盖父类的公有非final、或者protected方法。方法可以同名重载。每个对象都包含它能进行操作所需要的所有信息,这个特性称为封装,因

2017-10-17 23:33:02

音视频及FFMpeg概念篇

音视频编解码概念音视频格式有很多种,我们所熟知的音频文件有wav、mp3等,视频格式有mp4、3gp、rmvb、avi、mov等等。这些格式并不是只是文件的后缀不同,而是文件中的内容有很大的不同,哪怕这个媒体文件播放起来我们看起来觉得它们是一模一样的。另外,我们看到的电影或者视频片段,它往往是由两个或者两个以上的流组成的,比如声音流、视频流、字幕等。甚至声音也有左声道、右声道什么的。那么这

2017-10-06 22:53:36

Android Camera增加自定义图像处理并录制MP4

在我的一篇博客AndroidCameraAPI/Camera2API相机预览及滤镜、贴纸等处理中,介绍了如何给相机增加滤镜贴纸的方法,也就是自定义图像处理。而另外一篇博客Android硬编码——音频编码、视频编码及音视频混合介绍了一种编码录制MP4的方法,虽然两者结合就能实现Camera增加自定义图像处理并录制MP4的功能,但是实际上如果自定义的处理稍微复杂一些,或者录制720p或者1080

2017-10-03 14:19:28

Android利用硬解硬编和OpenGLES来高效的处理MP4视频

最近工作中遇到一个问题,就是要对视频增加视频特效,实现类似于抖音的效果,抖音的效果由其他同事实现,我的工作重心在视频的处理,特效的集成。按照之前的思路很快就实现了这个功能,但是实际应用到项目中时却遇到各种问题。于是就有了这篇博客。遇到的问题说是各种问题,特效方便的不管,我所遇到的视频处理的问题主要为以下两个方面:处理过程耗时较长。因为处理的时候是按照之前的思路,用MediaCod

2017-09-10 20:16:12

STM32F103+RTT从零开始(二)——RTT系统中点亮LED

上一篇博客简单说了下如何使用Keil创建STM32F103的工程,并且完成了LED点亮,及让LED等闪烁的功能,那是诸多同学学习单片机的起手式。本篇博客继续上一篇博客的内容,依旧是点亮LED,不同的是,这次点亮LED等,是在RT-Thread操作系统中进行的。创建工程创建一个Keil工程,芯片依旧选择STM32F103C8T6,然后在ManageRun-TimeEnvironment对话框中选择

2017-08-27 01:53:32

STM32F103+RTT从零开始(一)——点亮LED

最近心血来潮,打算重新捡起老本行,结果发现很多都忘记了。干脆重新开始学习,并做个从零开始的笔记了。STM32系列MCUSTM32系列芯片包括F0/F1/F2/F3/F4/F7/L0/L1/L4/H7等系列芯片芯片。不同系列的芯片适用于不同的应用场景。F0/L0基于ARMCortex®-M0,F1/F2/L1系列基于ARMCortex®-M3,F3/F4/L4系列基于ARMCortex®-M

2017-08-22 23:42:35

用树莓派改装电风扇及实现Android遥控

最近天气很热,我租的房子又没有空调,基本上风扇一开就是一晚上,结果经常起床后发现口干舌燥的。我觉得这肯定是因为整晚吹风扇搞的,不管是不是,反正我觉得就是了。不开风扇吧,热!开风扇吧,早上起来不舒服,怎么办呢?能不能让风扇吹一会停一会这样的吹呢?让手机来当遥控器来控制风扇?加上语音控制?我看了下我那吃灰半年多的树莓派,觉得应该让它动一动了。硬件准备首先,电扇是必须的,树莓派吃灰了半年,也该工作工作了。

2017-08-06 22:57:29

Android OpenGLES2.0(十八)——轻松搞定Blend颜色混合

Blend是OpenGL中的一个非常重要的部分,它可以让每个输出的源和目的颜色以多种方式组合在一起,以呈现出不同的效果,满足不同的需求。

2017-08-03 10:37:43

RGBA、YUV色彩格式及libyuv的使用

最近一段时间因为工作的需要,要使用到libyuv。因为之前写录制视频的时候,也要用到rgb转yuv,自己结合网上的资料做了个实现,记录了点笔记,现在索性一起整理下。常用的色彩格式常见的色彩格式主要分为两类,一类是RGBA系列,一类是YUV系列。RGBA系列首先就是rgba系列的格式,RGBA色彩主要用于色彩的显示和描述。常见的有RGBA/ARGB/BGRA/ABGR/RGB/BGR。这些格式都比较好

2017-07-29 20:53:47

AI:一个全新的时代

时间进入1956年,达特茅斯夏季会议召开,人工智能的概念正式被确定下来。至今,它已经有六十多岁了,几经起伏,却依然非常年轻,正在不断的蓬勃发展着。  以前以为人工智能就是《宝莱坞机器人之恋》的七弟、就是《机器人总动员》的瓦力和伊娃,就像小时候,总以为程序员就是在命令行模式下霹雳啪啦敲一敲,三分钟就能入侵飞机入侵汽车一样。后来上大学开始接触编程,才终于知道想象和现实的差距,却依旧为自己能写程序,控制电

2017-07-27 22:51:01

让IjkPlayer支持插入自定义的GPU滤镜

最近因为工作的原因,需要提供一个将我们的AiyaEffectsSDK插入到IjkPlayer中的示例,就不得不好好看了下IjkPlayer的代码。在IjkPlayer中并没有提供设置自定义GPU滤镜的接口,所以最后只能自己动手,以求丰衣足食了。不得不说,Bilibili开源的这个IjkPlayer播放器的确非常强大,代码设计的非常清晰,仔细看看,能学到不少东西。IjkPlayer源码获取及编译方法源

2017-07-15 15:58:33

打油诗——和代码的青春七年

车马停啸禁鸣笛,惊觉高考正当期。遥记七载前尘里,朝朝起舞在闻鸡。寒窗苦读五千日,无谓旰食又宵衣。常叹双亲辛劳苦,学富五车累何惜。命途波澜起二度,百万同台争高低。汗流浃背心忐忑,唯恐临考遇宕机。有幸求学进江理,辞别湖广入江西。军训完毕见教授,始信至此上大一。初识编程坠云雾,雾里看花亦着迷。程序惊艳贪吃蛇,项目驱动五子棋。白日尽归实验室,夜来关门入微机。三周入门C语言,月旬画虎会画皮

2017-06-25 15:09:27

GLSurfaceView的简单分析及巧妙借用

学习在Android中使用OpenGLES,就不得不提到一个控件:GLSurfaceView。本篇博客将介绍GLSurfaceView的基本使用、GLSurfaceView的源码的简单分析,以及使用GLSurfaceView渲染图像到SurfaceView/TextureView或者PBuffer上等。关于GLSurfaceViewGLSurfaceView继承了SurfaceView,实现了Sur

2017-06-25 14:59:39

CMake入门笔记

什么是CMakeCMakeCMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是CMake的组态档取名为CMakeLists.txt。Cmake并不直接建构出最终的软件,而是产生标准的建构档(如Unix的Makef

2017-06-12 15:39:02

和代码的青春七年

前两天,看到CSDN官方博客上的征文《从高考到程序员》。一瞬间,从高考到现在,七年的光景涌现在心头。从离家进入江西理工,到现在流落深圳。从对编程一无所知,到现在成为一个“资深”老码农。也从一个学生,成为一个社会工作者。无论身份还是心态,都发生巨大的变化。七年后的今天,没变的,可能就是一如既往的贫穷。这个贫穷,不仅是说物质,更多的是于知识。  是的,在程序猿的道路上越走越远,学到的东西越多。可是正是因

2017-06-11 19:06:12

Android OpenGLES2.0(十七)——球形天空盒VR效果实现

在3D游戏中通常都会用到天空盒,在3D引擎中也一般会存在天空盒组件,让开发者可以直接使用。那么天空盒是什么?天空盒又是如何实现的呢?本篇博客主要介绍如何在Android中利用OpenGLES绘制一个天空盒,并实现VR效果。天空盒、天空穹、天空球和VR虽然大多数人知道这些东西是啥,但是我觉得我还是有必要把他们的定义“搬”过来,万一有人不知道呢。天空盒(SkyBox)是放到场景中的一个立方体,经常是

2017-05-29 17:44:23

博客专家

湖广午王

关注
  • 中国
奖章
  • 专栏达人
  • 持之以恒