自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

fanyun的博客

乱世,当辅明君,以养四海之民;盛世,当精己业,共筑中华之梦!!!—— 欢迎各位IT技术爱好者加入技术交流群 :62775887。集思广益,共同进步!...

原创 老程序员解Bug的通用套路

       程序员在很多人的印象里是一份严(ku)谨(bi)的职业,也是一个被搞怪吐槽乐此不疲的职业,程序员们面对复杂的代码敲打电脑时连眉头都不会皱一下,但是有一个词却是他们痛苦的根源,它就是Bug。       记得刚毕业入行时,我们老大派给我和另外一个新来同事的第一件事就是修Bug,要不是在...

2018-06-06 09:25:29 9818 22

原创 C++17新属性详解

C++17的入选特性有:(1).非类型模板参数的 auto      模板参数分为两种,一种是类型模板参数,也是我们用得最多的一种:template <typename T, typename U> auto add(T t, U u) { return t+u...

2018-05-27 21:59:38 27654 2

转载 60个开发者不容错过的免费资源库

文章作者Juan Pablo Sarmiento收集了60个较为实用、高效的工具资源库,可以帮助开发者快速创建各种Web App和移动App。这些资源的特点是:简单、便捷、免费、高效、功能多。当你独自一人需要在短期内构建一个产品的时候,这些起关键作用的工具定会给你留下更深刻的印象。(以下是编译内容...

2018-03-18 20:50:55 587 1

转载 C++大牛的博客

1. C++大牛的博客     Bjarne Stroustrup的博客: Bjarne Stroustrup’s Homepage Bjarne Stroustrup,不认识的可以去面壁了,没有他,就没有我们现在的饭碗。Bjarne Stroustrup是丹麦人,目前任教于T...

2018-01-21 21:37:00 3799 0

原创 如何提高C/C++大型项目的软件质量?

如何提高c/c++大型项目的软件质量?        软件的交付质量一直是我们软件开发项目最为关注的核心问题,那么如何保证软件项目,尤其是大型和超大型软件项目的质量,不管在国内还是国外一直是许多软件企业一直关注和研究的问题。       通常我们会在功能性,可用性,高效性,可测试性,可维护性和可移...

2017-10-01 22:11:55 3870 0

原创 Qt5 中对 C++11 一些新特性的封装详解(二)

1、static_assert        C++11 可通过编译时使用static_assert 来帮助生成更详细的错误信息,在 Qt5 中对应引入了宏 Q_STATIC_ASSERT 和 Q_STATIC_ASSERT_X ,它们可自动判断是否可用 static_assert ,如果不支持则...

2017-08-27 22:00:40 631 0

原创 Qt5 中对 C++11 一些新特性的封装详解(一)

C++11 是现在的 C++ 标准的名称,C++11 为 C++ 语言带来很多新特性。 而 Qt 4.8 是 Qt 首个在其 API 中开始使用一些新的 C++11 特性的版本,我之前写过一篇博文:C++11 in Qt 4.8 描述了这个问题,这里不再罗嗦。 在 Qt5 中,提供更多 C++...

2017-08-27 22:00:12 869 0

原创 C++模板详解

一.C++模板的定义:        模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。 模板是一种对类型进行参数化的工具; 二.使用模板的目的:    能够使得程序员编写与类型无关的代码。比如编写了一个...

2017-05-31 21:19:42 2131 3

原创 Qt的5种常用布局搭建

Qt布局详解:   界面开发首先要对整个界面进行布局,使窗体上的所有的控件必须有一个合适的尺寸和位置。那么做出来的界面才看起来美观。 那么如何对界面进行布局呢?Qt提供了一些类负责排列窗体上的控件,主要有:QHBoxLayout,QVBoxLayout,QGridLayout,QFormLa...

2016-09-30 09:06:16 2898 0

原创 优秀程序设计的18大原则

优秀程序设计的18大原则 1、避免重复原则(DRY - Don’t repeat yourself) 编程的最基本原则是避免重复。在程序代码中总会有很多结构体,如循环、函数、类等等。一旦你重复某个语句或概念,就很容易形成一个抽象体。 2、抽象原则(Abstraction Principle)...

2016-07-11 17:07:57 5568 0

原创 iOS OC中多线程总结

1. 进程(process): 系统中正在运行的一个程序的实例,具有一定的独立功能,是线程的容器。 2.线程(thread): 线程是进程执行的最小单位,一个进程中至少包含一个线程(主线程),进程中任务都在线程中执行(主线程或子线程)。 系统中正在运行的每一个应用程序...

2020-06-27 22:29:14 20 0

原创 iOS 回调方法使用总结

在iOS OC编程中,很多场景都会使用回调,尤其和C、C++代码的数据交互上,使用回调,会很方便。那么在OC中都可以使用那些回调方法呢?总结了以下6种: 一、Block方式 Block是OBJC提供的一种运行时方法机制,由c函数实现,它提供了一种运行时的临时回调机制。 Block对象的声明:...

2020-06-27 22:28:57 23 0

原创 C++11 std::unique_lock与std::lock_guard区别及多线程应用实例

C++多线程编程中通常会对共享的数据进行写保护,以防止多线程在对共享数据成员进行读写时造成资源争抢导致程序出现未定义的行为。通常的做法是在修改共享数据成员的时候进行加锁--mutex。在使用锁的时候通常是在对共享数据进行修改之前进行lock操作,在写完之后再进行unlock操作,进场会出现由于疏忽...

2020-06-27 22:28:48 43 0

原创 Linux pthread_cond_signal函数使用总结

pthread_cond_signal的作用是什么? pthread_cond_signal函数的作用是发送一个信号给另外一个正在处于阻塞等待状态的线程,使其脱离阻塞状态,继续执行.如果没有线程处在阻塞等待状态,pthread_cond_signal也会成功返回。 pthread...

2020-06-27 22:28:35 31 0

原创 iOS tableView的优化处理

iOS 中造成tableView卡顿的原因都有哪些呢? 1).没有使用cell的重用标识符,导致一直创建新的cell 2).cell的重新布局 3).没有提前计算并缓存cell的属性及内容 4).cell中控件的数量过多 5).使用了ClearColor,无背景色,透明度为0 6).更...

2020-06-27 22:28:24 17 0

原创 Linux内核线程优先级的三种调度策略

Linux内核三种调度策略: (1).SCHED_OTHER 分时调度策略 (2).SCHED_FIFO 实时调度策略,先到先服务。一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃。 (3).SCHED_RR实 时调度策略,时间片轮转。当进程的时间片用完,系统将重新...

2020-06-27 22:28:12 66 0

原创 iOS OC的strong, weak, assign, copy区别

(1).strong表示指向并拥有该对象。其修饰的对象引用计数会增加1。该对象只要引用计数不为0则不会被销毁。当然强行将其设为nil可以销毁它。 (2).weak表示指向但不拥有该对象。其修饰的对象引用计数不会增加。无需手动设置,该对象会自行在内存中销毁。 (3).assign主要用于修饰基本...

2020-06-27 22:27:59 18 0

原创 Linux 互斥量、线程锁使用总结

在多线程编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。 每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻, 只能有一个线程访问该对象。 互斥锁也叫线程锁,线程锁可以保证,在任意时刻,只有一个线程访问该对象。同一时间只有一个线程访...

2020-06-27 22:27:50 21 0

原创 Linux select()函数详解

一.Select 函数详细介绍 Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、 accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到...

2020-06-27 22:27:35 28 0

转载 iOS 保持界面流畅的技巧

这篇文章会非常详细的分析 iOS 界面构建中的各种性能问题以及对应的解决思路,同时给出一个开源的微博列表实现,通过实际的代码展示如何构建流畅的交互。 Index演示项目屏幕显示图像的原理卡顿产生的原因和解决方案CPU 资源消耗原因和解决方案GPU 资源消耗原因和解决方案AsyncDisplayK...

2020-06-27 22:26:46 71 0

原创 iOS开发-OC、Swift、C、C++ 混合编程

OC、Swift、C、C++可以互相调用,也可以混合编程,只需要注意一些规则和配置即可。 mm文件中的C++,其实是objective c++,并不算严格意义上的C++ cpp文件可以在xcode中直接编译 swift不支持C++混编,也不能调用C++的类或者函数,得用OC包一层。倒是可以调...

2020-05-31 15:53:44 50 0

原创 iOS 开发常见崩溃分析

abort(): 函数首先解除进程对SIGABRT信号的阻止,然后向调用进程发送该信号。abort()函数会导致进程的异常终止除非SIGABRT信号被捕捉并且信号处理句柄没有返回 CorruptMalloc: 堆内存腐化,也就是说默认分配的内存地址很小,但是使用时却超过我们分配的空间(默...

2020-05-31 15:17:35 55 0

原创 Mac OSX下Xcode创建C++动态库

Mac Pro下创建C++动态库,网上资料很多,此处也是按部就班的操作记录。 1.创建Xcode工程 2、选择Other(其他),类似Visual Studio中创建工程一样,选择Empty,输入工程名字,创建一个空的工程,类似VS的空工程。 3、在空的工程中添加项目,选择File-...

2020-05-31 15:17:24 49 0

原创 创建第一个iOS项目

创建第一个iOS应用程序;创建一个心的Xcode项目。 2.选择iOS下的single view app创建工程 3.填写工程配置信息,包括应用程序名称、组织名称和公司标识符 4.创建成功 创建成功后设置team,可以参考 Xcode真机测试(无需开发者账号)。 ...

2020-05-31 15:16:54 58 0

原创 OC的三大特性详解

跟C++一样,OC也是面向对象语言,因此它也拥有面向对象语言一般共同的三大特性:封装、继承和多态。 一、封装 封装就是对类中的一些字段,方法进行保护,不被外界所访问到,有一种权限的控制功能。封装的好处:过滤不合理的值,屏蔽内部的赋值过程,让外界不必关注内部的细节。 例如set...

2020-05-31 15:16:37 102 0

转载 iOS基本语法总结

1.IOS中类声明的文件叫做接口文件,以.h命名。 2.类定义的文件叫做实现文件,以.m命名。 3.#import是文件包含的内容。 4.声明对象类名*对象名 * 表示对象是对类的一个引用 5.为对象分配空间 对象名=[类名alloc] alloc消息是定义在类方法中的 6.为对象...

2020-05-31 15:16:18 40 0

原创 iOS的同步异步,串行并行

iOS中的异步和同步: dispatch_async(异步)和dispatch_sync(同步): 决定有没有开子线程的能力,而不是指会不会开子线程。queue 决定有没有并发的能力。开子线程我就并发,不开就串行。 dispatch_async(异步)有开子线程能力。 dispatch_s...

2020-05-30 22:13:56 46 0

原创 iOS的单例模式详解

单例设计模式确切的说就是一个类只有一个实例,有一个全局的接口来访问这个实例。当第一次载入的时候,它通常使用延时加载的方法创建单一实例。 苹果大量的使用了这种方法。例子: [UIApplication sharedApplication], [UIScreen mainScreen], [...

2020-05-30 22:13:15 54 0

原创 OC简介及基本语法(二)

OC是一门面向对象的开发语言,而C语言是面向过程的,因此在开发思想上要把面向过程和面向对象好好区分开来,体会其中的不同之处。面向过程关注的是解决问题需要哪些步骤,而面向对象关注的是解决问题需要哪些对象。 1. 类的设计 在C语言中完整的写一个函数需要函数的声明和定义(也就是实现),而O...

2020-05-30 22:12:49 33 0

原创 OC简介及基本语法(一)

1.什么是OC? Objective-C简称Obj-C或者OC,Objective的意思就是面向对象的。OC其实就是在C语言的基础之上,封装了一层面向对象的语法,他并不是一门全新的编程语言。OC是Mac OS X系统和iOS系统的主要开发编程语言。C程序的源文件的后缀名为.c,OC程序的源文件是...

2020-05-30 22:12:23 45 0

原创 HEVC编码原理

对视频执行编码操作后,原始视频数据会被压缩成三种不同类型的视频帧: I帧,P帧,B帧. I帧:关键帧.完整编码的帧.可以理解成是一张完整画面,不依赖其他帧 P帧:参考前面的I帧或P帧,即通过前面的I帧与自己记录的不同的部分可以形成完整的画面.因此,单独的P帧无法形成画面. B帧:参考前面的I...

2020-04-28 22:37:55 116 0

原创 RTSP协议详解

RTSP(Real Time Streaming Protocol,实时流协议),是由Real Network和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议。RTSP提供一种可扩展的框架,能够提供可控制的,按需 传输的实时数据,比如音频和视频文件。源数据可以包括现场数...

2020-04-28 22:37:30 80 0

原创 从H264/H265码流中获取宽、高及帧率

在做码流分析时,图像分辨率、帧率这类的基本信息,当然不可少。本文介绍如何从NAL中计算到图像宽、高,还有分辨率。 一、从码流获得宽、高 1、H264 宽高可从SPS字段计算得到,公式如下: Width = (pic_width_in_mbs_minus1+1)*16; Height = ...

2020-04-28 22:37:09 76 0

原创 获取HEVC视频的ParameterSets

获取ParameterSets HEVC视频存放SPS,PPS的数据结构与H264类似 官方定义参考https://lists.matroska.org/pipermail/matroska-devel/2013-September/004567.html HEVCDecoderConfig...

2020-04-28 22:36:50 58 0

原创 H265码流分析(二)

上篇主要介绍了H265的基本构成。现在看下Nalu type类型判断方式 int type = (code & 0x7E)>>1; 类型判断方式为“00 00 00 01”后的一个字节右移一个位,下面是几种主要类型: 0x40 >> 1 , 得到0x20,十进...

2020-04-28 22:36:32 117 0

原创 H265码流分析(一)

H.265标准围绕H.264编码标准,保留原有的某些技术,同时对一些技术进行改进,编码结构大致上和H.264的架构类似。这里着重讲一下两者编码格式的区别。 同H.264一样,H.265也是以NALU的形式组织起来。而在NALU header上,H.264的HALU header是一个字节...

2020-04-28 22:36:20 185 0

原创 RTCP、TCP、UDP三种协议对比

RTP位于UDP之上,UDP虽然没有TCP那么可靠,并且无法保证实时业务的服务质量,需要RTCP实时监控数据传输和服务质量,但是,由于UDP的传输时延低于TCP,能与视频和音频很好匹配。因此,在实际应用中,RTP/RTCP/UDP用于音频/视频媒体,而TCP用于数据和控制信令的传输。 ...

2020-04-28 22:36:06 126 0

原创 靠谱的HEVC方案-软编解码器

一、解码器: 1. 著名的ffmpeg,内置有HEVC解码器,其中代码基本是来自openHEVC项目 FFmpeg 但是ffmpeg的HEVC解码器并不保证包含openHEVC项目的最新代码 2. openHEVC,解码器框架完全是基于ffmpeg框架开发的,所以很容易集成到ffmpeg里...

2020-04-28 22:35:44 212 0

原创 FFmpeg解码H264视频流

解码H264视频流数据,支持输出RGB24或YUV420格式,非解码视频文件; 代码如下: FFmpegVideoDecoder.h #include <libavcodec/avcodec.h> /** 视频流解码器初始化 @param ctx 解码参数结构体AVCo...

2020-03-29 22:16:18 129 0

原创 opencv 获取rtsp流媒体视频

在opencv3.2.0+vs2015的环境下,是可以使用opencv读取rtsp流的. 代码如下: #include"stdafx.h" #include<opencv2/opencv.hpp> #include<iostream> usin...

2020-03-29 21:59:13 868 0

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