自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (2)
  • 收藏
  • 关注

原创 OpenGL ES for iOS学习笔记(一)

几个基本概念:帧缓存:内存中用于储存渲染结果的地方,可以有任意数量,分为前帧缓存和后帧缓存,渲染结果被保存在后帧缓存中,需要显示的时候变为前帧缓存,显示完成后前帧缓存又会再次变为后帧缓存。在iOS中前后帧缓存的切换是由系统控制的,用户无法操作。图层:在Core Animation中,同一时刻可以存在任意数量的图层,一幅图对应的帧缓存由多个图层混合而成。GLKit是iOS基于openGL实现的一个框架,目的在于简化openGL的操作,其提供了GLKView和GLKViewController

2020-06-17 16:51:52 328

原创 Node.js基础笔记

1:模块系统JS这门语言最开始是作为浏览器脚本存在的,本身并没有模块系统,模块的划分靠html中的script标签控制,然而node.js将js作为后台开发语言,必须要有模块划分,如果一个文件要将本文件定义的变量和函数暴露出去,可以使用export://文件a.jslet a = 10;function f(){};module.exports = { a:a, f:f}或者module.exports.a = a;module.exports.f = f;如果不涉及函数和数组

2020-06-01 13:08:29 297

原创 JavaScript知识补充

JS作为纯函数式编程语言,理解起来有些不习惯,这里记录下。1:变量声明的三种方式var、let、const在c++、java中,默认情况下,变量声明后都是块作用域,即如下代码是无效的:if(1){ int a = 20;}print(a);用{}包括的部分即是块,a是在块内定义,块外不能调用。但JS不一样,ES5时代,var声明的变量是函数作用域,声明的变量在整个函数内都有效,块并不能限制变量的作用域,这样不可避免就会存在代码污染,于是在ES6时代就有let来表示块作用域的对象。

2020-05-27 00:37:07 222

原创 排序学习PointWise、PairWise、ListWise

排序学习 —— 通过机器学习的方法帮助排序最早用于信息检索,比如给定搜索的内容,返回相应的文档,那么如何决定返回文档的顺序呢?这就需要排序学习~PointWise:在PointWise方法下,每个item对应于一个类别,排序问题就可以被看成是一个分类问题。一般来说,每个item会被转化成特征向量,向量里包含一些特征,比如PageRank分数,关键字出现次数等信息,将特征向量输入分类器(...

2019-12-27 21:07:56 1398

原创 tensorflow的一些总结、LSTM图像分类实现

最近论文需要用到深度学习,发现一年没用过的tensorflow,基本上都忘了。这篇文章是北大软微曹健老师的视频笔记基础在tensorflow中,用张量表示数据,用计算图搭建神网络,用会话(session)执行计算图,优化线上的权重,得到模型。张量: n维数组,0阶是标亮、1阶是向量、2阶是矩阵、n阶就是张量了计算图: 搭建神经网络的计算过程,只搭看一个最简单的计算图:import te...

2019-11-24 15:20:51 2530

原创 c++知识盲点总结

1:字节对齐(1)自身对齐值:每种数据类型,都有自己的对齐值,基础数据类型的对齐值就是其字节数,结构体类型的对齐值是其成员变量中对齐值最大的那个。(2)指定对齐:使用 #pragma pack (value) 可以指定对齐值value。举个例子:struct B{ 7 char b; 8 ...

2019-09-27 14:28:19 201

原创 Linux网络编程模型

网络IO模型一共有四种:阻塞IO模型非阻塞IO模型多路IO复用模型异步IO模型1:阻塞IO模型IO执行分为两个阶段:等待数据:比如还没有收到一个完整的TCP包,系统内核就要等待足够的数据到来。拷贝数据:数据准备好了,系统将数据从内核拷贝到用户内存中,然后系统内核返回结果。阻塞式IO要等拷贝数据完成后,进程才接触阻塞状态。大部分的socket接口都是阻塞型的,阻塞状态下,进...

2019-09-16 22:07:00 190

原创 UNIX编程(一)实现最基本的tcp server

1: 先看下客户端和服务端基本的交互流程两个基础结构体:这两个结构体其实是等价的,用于保存socket绑定信息,包括协议族,ip地址,端口。都占用了32个字节(算内存对齐),但 sockaddr 将端口和ip地址写在了一起,保存在 sa_data 中,不便于操作。但操作系统因为遗留问题,所有网络编程接口接收参数都是 sockaddr,因此在定义的时候,会使用 sockaddr_in ,使用的...

2019-09-12 11:35:42 191

原创 小米2019笔试 —— 打印二叉树

#include <iostream>#include <vector>#include <string>#include <deque>#include <stack>using namespace std;stack<char> s;class Node{public: Node* left...

2019-09-07 03:41:55 434

原创 strcat、strcpy、strncpy、memset、memcpy、itoa、atoi的使用和内部实现

1:strcat函数原型:char *strcat(char *__s1, const char *__s2);在使用上要注意 char* a 和 char a[] 的区别,如下方式是错误的:int main{ char* a = "abc"; char b[] = "def"; char* c = strcat(a,b);}因为 a 指向的字符串分配在字符常量区,是不可更改...

2019-09-05 17:11:55 506

原创 iOS的一些知识总结

...

2019-09-03 17:11:42 211

原创 iOS使用信号量实现读写者问题

下面的代码有个问题,写的线程始终不会被调用,原因不明。。。除非把读的线程减少到一个#import "ViewController.h"@interface ViewController (){ dispatch_semaphore_t _mutex; int _count;}@property(strong,nonatomic) NSMutableArray* file;...

2019-09-03 15:29:07 264

原创 使用ffmpeg实现rtmp推流

服务器用的是ngix+rtmp,配置方式见博客:https://blog.csdn.net/goldfish3/article/details/100036059由于我是在本机配置的ngix服务器,所以host是127.0.0.1,如果用的虚拟机,就是虚拟机的ip地址。路径中的rtmplive是ngix配置文件里指定的,room是自己写的路径。代码涉及一些ffmpeg的知识点,这里列一...

2019-08-24 15:15:37 3801

转载 mac下搭建nginx+rtmp 直播服务器(转)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 ...

2019-08-23 13:15:27 398

原创 iOS多线程汇总(NSOperation、GCD、NSThread、p_thread))

简介iOS的多线程api一共有4套,从底层往上,分别是:p_thread :iOS基于unix操作系统,遵循POSIX标准,因此,最底层的多线程接口就是p_thread了。NSThread:基本上可以看成是p_thead的封装。GCD:可以理解为一种线程池化技术的实现。NSOperaion:GCD的封装,使用面向对象的方式管理任务和线程,提供了一些方便的api,代码可读性更高。一:...

2019-08-21 10:23:40 390

原创 ffmpeg初级开发

FFmpeg代码结构:一:日志系统include <libavutil/log.h> //包含库av_log_set_level(AV_LOG_DEBUG) //日志级别,debug级是最低级别的日志了av_log(NULL, AV_LOG_INFO, "...%s\n", op)常用的日志级别:...

2019-08-19 18:10:06 4224

原创 机器学习线性代数:矩阵基础

矩阵是向量的集合,在线性代数中,矩阵代表一组变换或空间。

2019-08-04 14:52:15 454

原创 机器学习基础之线性代数:向量

为什么要学习线性代数?真实的世界是多维度的,单变量不足以描述这个世界。将单变量变为向量,就是线性代数了

2019-07-28 00:39:42 1877

原创 音视频知识基础

一:音频音频压缩技术:1:消除冗余数据2: 哈夫曼无损编码消除冗余数据(心理声学模型)音频冗余信息包括:人耳听觉范围之外的音频信号被掩蔽掉的音频信号掩蔽效应:频域掩蔽:下面的纵轴是分贝数,横轴是声音的频率,线 Threshold in Quiet 之下的部分,表示当前频率下不可听见的声音的范围。大音量如Masker会产生掩蔽效应,这里用线 Masking Thre...

2019-07-23 21:25:02 7519 2

原创 vim编辑器的使用

vim和核心理念:让手不离开键盘一:vim的模式1:命令模式拷贝、删除、粘贴等,通过 i/a 等键切换到编辑模式。2:编辑模式编辑字符,通过Esc键进行切换。二:命令创建文件:vim filename保存文件::w关闭::q 使用 cat 可以查看文件内容拷贝:yy/yw 其中yy是拷贝一行,yw是拷贝一个词(词与词之间用空格隔开)粘贴:p删除:dd/dw ...

2019-07-18 19:43:55 179

原创 FFmpeg-主要命令梳理

一:FFmpeg命令分类:二:ffmpeg处理音视频的流程demuxer:解封装,将音视频流进行分离,得到音视频编码后的数据。muxer:封装,将音视频流编码后的数据合于一体。decoder:解码。三:基本信息查询命令四:命令1:录制视频:# -f:指定从使用mac的avfoundation采集数据。# -i:就是input,输入流,后面的1是设备编号,表示屏幕(录屏)i...

2019-07-18 18:44:53 1486

原创 函数对象

函数对象也叫仿函数,本质是使用重载 () 运算符实现的class Person{public: void operator()(){ cout << "hello" << endl; }};int main(){ Person()();}...

2019-06-07 11:24:38 1406

原创 STL中的常用容器

string string 构造函数string();string(const string& str);string(const char* s);string(int n,char c);赋值操作(运算符重载)string& operator=(const char* s);string& operator=(const string& s);...

2019-06-05 17:47:04 1289

原创 c++中的输入和输出

输入 cincin代表缓冲区,先来看一个常用的例子int main(){ char input[1024]; char c; cout << "input:" << endl; while (cin.peek() != '\n') { cin >> input; cout << in...

2019-05-29 13:22:13 385

原创 c++中的类型转换和异常捕获

类型转换静态类型转换 static cast可以用于基础数据类型和父子数据类型之间的转换,如果是不是上面两种形式,就不允许转换动态类型转换 dynamic cast只有发生多态的情况,才可以使用,其他情况都不能使用class Father{};class Son:public Father{};int main(int argc, const char * argv[]) { ...

2019-05-28 13:34:26 354

原创 c语言基础补全

大学学了c之后,一直没有好好复习过,一些特性和语法都忘了,这里总结下。1:typedf的用法给已知类型取别名struct Person{ char name[64]; int age;}typedf struct Person myPerson;typedf struct Person{ char name[64]; int age;}myPerson;同样是给已...

2019-05-27 16:50:51 1239

原创 c++第七天(模板)

泛型可以使用class关键字声明,也可以使用 typenametemplate<class T>void myswap(T& a, T& b){ T tmp = a; a = b; b = tmp;}int main(){ int a=0,b=20; //调用泛型的时候,会使用自动类型推导 myswap(a,b);}函数模板...

2019-05-27 13:27:51 166

原创 c++第六天(多态)

一般来说,在其他语言中,多态就是父类指针指向了子类对象但是对于c++来说,对象不一定是在堆区,还有可能在栈区,那么这时候的多态会是什么样的呢?多态和虚函数c++中的多态分为 静态多态 和 动态多态静态多态:实质上就是函数重载一般说的多态实质上指的是 动态多态先来看一个例子class Father{public: void who(){ cout <...

2019-05-26 17:31:20 140

原创 c++第五天(继承相关)

继承继承模式:java和oc好像都没有这个概念,准确的说,java和oc中的继承都相当于c++的公有继承。c++不愧是所有语言的爸爸继承中构造函数的调用顺序先调用父类构造函数再调用子类构造函数但是,所谓 儿子不能决定父亲的生死,子类无法继承父类的构造和析构函数。class Animal{private:string name;int age;public: An...

2019-05-26 13:53:13 182

原创 c++第四天(运算符重载)

运算符重载运算符重载有两种方式使用类的成员函数使用全局函数class Person{public: int age = 0; Person(){}; Person(int age):age(age){}; //使用类的成员函数进行运算符重载 Person operator+(Person& p){ Person tmp; ...

2019-05-17 22:44:19 186

原创 c++第三天:

静态成员变量:

2019-05-16 15:53:43 147

原创 c++第二天

宏的缺陷和内联函数:由于宏会直接对调用的位置进行替换,因此会引出一系列问题#define ADD(x,y) x+y#define COMPARE(a,b) ((a)<(b))?(a):(b)int main(){ int res = ADD(1,2) * 3; //结果是7,1 + 2 * 3 = 7 int a=10,b=20; int res2 = COMPARE(++...

2019-05-12 22:18:54 186

原创 c++第一天

一:最简单的 hello worldinclude <iostream>using namespace std;int main(){ cout << "hello world" << endl; return EXIT_SUCCESS; //其实就是0}二:cpp中使用c函数如果想在cpp文件中使用c语言函数,需要加上如下几行(vs上需要,...

2019-05-12 13:37:47 228

原创 iOS之autoreleasepool详解

所有app的入口都是一个main函数int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); }}可以发现:整个 iOS 的应用都是包含在一个...

2019-04-27 21:09:42 3701 1

原创 iOS之Runloop

RunLoop的概念:一般来说,一个线程只能执行一个任务,任务执行完成就会退出,有时候,我们需要这样一种机制,让线程能随时处理事件,但不会退出,通常来说,代码逻辑如下:function loop() { initialize(); do { var message = get_next_message(); process_message(mes...

2019-04-27 16:59:03 608

原创 iOS音频视频开发

数字音频概念介绍将模拟信号数字化,需要三个步骤:采样:在时间轴上对信号进行数字化。量化:在幅度上对每个采样进行数字化,如使用16bit的二进制信号来表示声音的一个采样,16bit所表示的范围是 [-32768,32767],共有65536个可能取值。编码:对采样结果进行储存。音频裸数据格式——脉冲编码调制数据PCM,描述一段PCM数据一般需要以下几个概念:量化格式:如在CD中,为1...

2019-04-23 22:10:44 1187

原创 排序算法总结

O(n^2)为什么要学习O(n^2)的排序算法?编码简单,易于实现在某些特殊情况,简单的算法更有效简单算法的思想衍生出复杂的排序算法(如插入排序 -> 希尔排序)作为子过程,改进更复杂的排序算法选择排序template<typename T>void selectSort(T arr[], int len){ for (int i = 0; i &lt...

2019-04-23 11:29:11 270

原创 iOS中的各种锁

1:互斥锁测试代码使用3个线程,每个线程加1w次,测试各个互斥锁的性能注意使用锁的时候,不要将锁声明为 @property,这样会生成set方法和get方法,每次加锁都会调用get方法,这样降低了锁的性能#import <mach/mach_time.h>dispatch_group_t group = dispatch_group_create(); dispat...

2019-04-21 22:41:07 228

原创 iOS进程间通信

对于app来说,一个运行的app对应于一个进程,进程间通信就是app通信通信方式1:url scheme这个是iOS app通信最常用到的通信方式,App1 通过openURL 的方法跳转到 App2,并且在URL中带上想要的参数,有点类似http的get请求那样进行参数传递。这种方式是使用最多的最常见的,使用方法也很简单只需要源App1在info.plist中配置 LSApplication...

2019-04-21 15:52:55 444

原创 iOS runtime

runtime是oc的c语言实现objective c代码编译,先要转变为c语言,然后再进行汇编和编译的操作将oc转化为c的,就是由runtime实现的。下面是类、对象、方法、方法列表在c语言中的实现(删除了宏定义部分)//对象struct objc_object { Class isa OBJC_ISA_AVAILABILITY;};//类(也叫类对象,类在编译期间用于创...

2019-04-19 14:35:54 165

禹晶数字图像处理.zip

禹晶数字图像处理 ppt,国内比较经典的教材,个人觉得比冈萨雷斯那本容易理解。

2019-08-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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