自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 iOS ViewController跳转和返回

视图控制器iOS和android的视图控制器的逻辑类似 应用程序用一个栈来管理视图跳转到下一个视图let nextView = CameraViewControll()self.present(nextView, animated:true, completion:nil)回到上一个视图self.dismiss(animated: true, completi...

2018-06-25 11:42:08 2285

原创 C++11 : auto

autoauto 关键字的作用是自动类型推导一般来说new一个类的代码是这样的:class test;test *testCtx = new test();指针的类型test必须被声明为new的类class的类型或是它的基类class的类型C++11引入auto后new一个类的代码可以这么写:auto *testCtx = new test();auto的推导还可以应对比...

2018-06-24 00:45:05 384

原创 C++分割字符串

按关键字分割字符串 1. 按关键字分割成vector<string>实现#include <iostream>#include <vector>#include <string>using namespace std;vector<string> split(const string &src, c...

2018-06-14 09:28:54 835

原创 C/C++初始化和去初始化函数

init/deinit初始化/去初始化函数根据作用域可以分为几种不同的应用情形 1. 全局初始化/去初始化 这一次运行程序只做这一次初始化/去初始化 2. 模块初始化/去初始化 每次加载/卸载这个模块都调用一次初始化/去初始化全局初始化以ffmpeg为例 需要首先调用av_register_all接口注册所支持的编解码器等等一般只需要程序运行时注册一次 程序...

2018-06-10 16:24:21 14055 1

原创 mac ffmpeg ffplay工具安装

ffmpeg & ffplay通过brew快速安装工具 brew install ffmpeg --with-sdl2网上能找到的安装命令 brew install ffmpeg --with-ffplay已经被弃用通过此命令不能成功安装工具...

2018-06-08 09:45:04 5637

原创 python引用另一个py的函数

引用test.py的函数testafrom test import testatesta() 或者import testtest.testa()

2018-05-31 21:01:21 1747

原创 C/C++ #define的作用域

#define#define macro的作用域有点类似于C/C++全局静态变量编译器处理宏的时机是预处理阶段 编译器按文本顺序处理 遇到宏时就定义一个宏变量假设这种情况void test() {#define MACRO 1}int main() {#ifdef MACRO// do some thing#endif}main函数也是看得到MACRO宏的 因...

2018-05-24 16:00:27 9055

原创 Git合并分支:解决冲突

Git合并分支基于某个版本的代码开发新特性 一般都是创建一个新分支进行特性的修改git checkout -b feature_xxxgit add xxx.xxx //做出修改git commit -s -m "[feature]:xxx xxx" //提交修改新功能开发完毕之后 将这个分支合并到原分支中git checkout master //切换回原分支git mer...

2018-05-18 17:25:33 1023 1

原创 ssh长连接和自动输入密码

ssh两个ssh的实用小功能 长连接和脚本输入密码长连接修改本地的ssh配置文件vim /etc/ssh/sshd_config增加 TCPKeepAlive yes自动输入密码利用系统工具expect自动交互编辑ssh连接脚本#!/usr/bin/expect#ssh服务器spawn ssh -luser xxx.xxx.xxx.xx#服务器返回...

2018-05-18 11:23:38 1045

原创 cmake跨平台工程应用

cmake跨平台C/C++项目可能需要支持的系统:iOS Android Linux Windows使用场景:某个C/C++的功能库,需要能够在不同平台的项目中应用。 C/C++功能库需要能方便的生成多个平台下的库 一次编写到处编译cmake工程目录结构一个常见的cmake工程目录结构应当是这样的.├── CMakeLists.txt //顶层cmake文件...

2018-05-16 21:09:04 646

原创 git忽略除指定文件/指定后缀名文件外的文件

.gitignore忽略指定文件外的文件举例 忽略当前src目录下除了a.cpp以外的文件src/!a.cpp忽略指定后缀名文件外的文件举例 忽略当前src目录下除了cpp以外的文件src/*[!cpp]提交.gitignoregit规则中默认不提交忽略文件 如果要加入版本控制中则强制提交git add -f .gitignore...

2018-05-11 19:28:18 5262

原创 ios项目第三方库管理工具pod

podpod是mac下的第三方类库管理工具 类似于ubuntu的apt-get工具这个工具可以帮助用户管理工程中引入的第三方类库 非常便捷当在工程中需要引入比较大型的类库时 可能需要不断的编译引入类库的依赖 使用pod却可以一步到位 让工具帮助我们做这个事情比较遗憾的是pod仅在ios和mac开发里支持android中类似的对应工具是maven linux上则有apt-get y...

2018-04-24 11:28:13 699

原创 ios持续更新UI

ios UI更新ios更新UI要求在主线程中进行 在子线程中更新UI将报错且不会起效假设有这么一种情况 UI需要持续的更新 for (;;) { // 更新UI}但这样做会阻塞主线程 并不是一个理想的做法如果这样dispatch_async(queue, ^(){ for (;;) { // 更新UI }});不阻塞主线程 但块切分到了子...

2018-04-19 11:46:50 526

原创 ios程序结构

application结构程序都存在入口C/C++程序的入口通常都是int main(int argc, char **argv)(编译器指定)android程序存在main activity(AndroidManifest.xml指定) ios程序的入口是int main(int argc, char * argv[]);通常程序的入口main.m是这样的#import "A...

2018-04-14 15:13:14 843

原创 Metal语法

Metal SyntaxMetal语法从C++14派生而来 支持其中的大部分特效(部分特性如lambda等不支持)同时在C++的基础上增加了部分的矩阵等GPU编程常用特性的支持。Vector向量类型基础类型+数字后缀: 1. float4 四维向量 假设用float4向量来表示rgba的一个像素 float4 pixel(1.0,2.0,3.0,4.0...

2018-04-12 22:04:06 1306

原创 ios陀螺仪和加速度计

CoreMotionios通过CoreMotion框架操作陀螺仪和加速度计#import <CoreMotion/CoreMotion.h>陀螺仪和加速度计的操作方法有push和pull两种push方式是陀螺仪每次更新数据通知用户pull方式则是用户需要时去申请陀螺仪数据push方式CMMotionManager *manger = [[CMMotio...

2018-04-12 09:48:00 687

原创 Metal入门概念

MetalMetal是ios系统的渲染/异构计算的框架和OpenGL一样具有利用GPU加速渲染的功能 并且能和OpenCL一样利用GPU做异构计算Metal的优势就在于整合了渲染和异构计算 在一个统一的框架上提供多种需求Android上可能需要OpenGL+OpenCL来实现的功能 IOS只需要Metal就可以做到Metal的使用也比OpenCL要便捷一些 在工程中创建的met...

2018-04-10 18:02:50 2616

原创 OpenCL入门概念

OpenCLOpenCL将CPU和GPU组合利用起来做并构运算GPU的优势在于同时进行多个运算for(int i = 0; i < 5; i++) //do some thingCPU执行以上循环的实现是串行运算5次 顺序是0 1 2 3 4GPU执行以上循环的实现是并行运算一次 同时执行0 1 2 3 4和OpenGL的原理有些类似 OpenCL也分为host和...

2018-04-10 14:49:25 652

原创 匿名函数

匿名函数匿名函数是没有名字的函数 是高级语言发展出来的新特性一些实现了匿名函数的高级语言: 1. C++ : lambda表达式(C++11) 2. Java :lambda表达式(Java8) 3. object-c :块匿名函数的好处在于精简程序的设计在代码的逻辑中,可能存在一些只需要调用一次或几次的函数C语言中的做法是命名一个函数来实现它 但这样显得太繁琐引入匿名函...

2018-04-09 21:20:36 961

原创 Android:Service服务

ServiceService是Android的四大组件之一(Activity Service BroadCastReceiver ContentProvider),负责完成没有UI情况下的工作.Service和Activity有些类似 都在application的主线程中运行区别在于service不依赖于ui 即使退出当前的ui界面 服务也可以继续运行.Service != Th...

2018-03-27 15:51:59 181

原创 Android动态申请权限

权限为了系统的安全性 android限制了一些比较敏感的操作比如拨打电话、读写外部磁盘等在AndroidManifest.xml中 应用会声明用到的权限但是在Android6.0以后 想要获取到权限 还需要在系统设置中配置android sdk也提供了相应的接口来在代码中申请权限.权限申请代码1. 判断并申请public void requestPower()...

2018-03-27 11:52:59 320

原创 Object-C property生成变量存取方法

@propertyproperty关键字 用于简化代码C++类中常见的做法class test{public: void setVal(int val) { mVal = val; } int getVal() { return mVal; }private: int mVal;}通过接口访问对象的属性...

2018-03-20 15:55:32 252

原创 Object-C调用类内方法

指向自身的指针C++类存在指向自身的指针this 以及指向基类的指针super(仅VC++中支持)OC通用有指向自身的指针self 以及指向基类的指针super调用类内方法写法为 [self call];调用类内的call方法等同于C++的 this->call();...

2018-03-18 23:02:45 3429

原创 数据结构:优先队列

优先队列(priority_queue)优先队列具备队列的通用特性:先进先出(FIFO)元素由队列尾部插入 出队列的元素则具有当期那队列中最高的优先级优先队列这种模型 被应用于os的多任务轮转当可以执行任务时 任务队列中优先级最高的任务被弹出实现为了保证队列的push和pop的效率 内部的优先级队列应该用堆排序// 任务struct priority_tas...

2018-03-16 17:59:58 282

原创 Object-C 函数参数语法

Object-C函数参数Object-C的函数参数语法比较特别通常的编程语言比如Java和C++ 都是void p_fun_test(int array, int size);shell的函数参数则是匿名的 通过$1这样的数字来表示不同顺序上的参数function p_fun_test{ echo $1}而Object-C的函数参数 要稍微特别一点单函数参数的情况下:...

2018-03-15 20:56:50 4488

原创 插入排序算法

插入排序插入排序向一个有序的数据队列中插入一个数 要求插入后数据序列任然有序.排序思想将一个待排序的数字 按顺序从后往前插入已排序的队列中.和扑克牌的插牌过程是一致的:左手牌是有序牌堆 右手取牌插入左手牌中 并维持左手牌的规律C/C++实现void insert_sort_test(int *a, int size) { assert(a != NULL); ...

2018-03-15 20:28:22 122

原创 opencv入门使用

opencvopencv是开源的计算机视觉库 可以用于图像处理的应用和学习mac opencv环境安装1. opencv的安装 brew install opencv2. xcode配置 1. 配置头文件搜索路径 xcode工程配置 -> Build Settings->Search Paths ->User He...

2018-03-14 15:55:31 199

原创 C/C++ 备份函数的指针参数

指针参数在C/C++代码中常见这样的写法void p_ptr_test(char *ptr) { char *p = ptr; // ...}函数参数传入一个指针参数时 会复制一个指针来操作 而不直接操作指针参数函数参数C/C++函数的参数是变量的复制值 对于指针参数来说 复制的变量指向的地址不变void p_ptr_test(char *ptr) ...

2018-03-09 14:10:24 404

原创 美图 C/C++工程师 面试总结

技术面试上周去美图公司面试C++工程师 有两位面试官一位面试官问了一些数据结构相关的问题 另一位面试官则问了一些项目相关的问题交流比较顺畅 和他们的交流也反馈给我一些信息 原来工作中有些地方可以做的更好比如代码的耗时点的评估问到数据结构时 面试官问了我这样一个问题1. 求两个二叉树的子节点的最低公共父节点? 这个问题当时我是这样回答的:递归向上寻找父节点 每一个父节点又各自...

2018-03-05 00:12:32 1915 5

原创 C++前向声明(解决类的互相包含问题)

类的互相包含假设有两个类#include "B.h"class A {private: B *b;};#include "A.h"class B {private: A *a;};编译时编译器会提示类A或类B未定义 这是由于两个类互相引用对方造成类似先有鸡还是先有蛋的问题 编译器无法正常的按顺序编译代码前向声明C/C++支持前向声明 ...

2018-02-27 22:02:11 519

原创 Git 查看某次commit的内容

Git show知道commit id的情况下:1. 获取commit id git log 2. 查看commit内容 git show commit_id查看最近n次提交的修改 git log -p -n指定n为1则可以查看最近一次修改的内容...

2018-02-27 10:20:15 76548

原创 WebRTC 连接Linux端和Android端

跨平台连接WebRTC的通常连接流程:http://blog.csdn.net/qq_21358401/article/details/79190561WebRTC SDP协议:http://blog.csdn.net/qq_21358401/article/details/79341031连接不同平台的PeerConnection的流程和通常流程没有什么区别.但很容易遇到这些...

2018-02-26 21:13:42 1551 1

原创 Git添加空目录

Git add 空目录提交工程时需要为Cmake保留一个空的build目录 用于构建编译工程. Git默认忽略空目录 所以直接 git add build不会生效这里利用一个小技巧:1 .开头的文件在linux下被视为隐藏文件2 .gitignore文件可以指定git的忽视文件所以在build目录下添加一个.gitignore文件1. touch build/.gitig...

2018-02-26 20:53:58 2567

原创 Git commit生成patch

Git commit每一个git的commit都会带有一个commit idgit log可以显示出当前分支内所有的提交历史 从最近的提交到最旧的提交每一个提交的commit id类似这样 commit 88f07a5607f19360fb339234fe82976e5dde3ca7id相当于提交的身份证 通过id区分不同的commitGit Diff将某个提交...

2018-02-26 17:09:48 10626

原创 数据结构:二叉搜索树

bst二叉搜索树(Binary Search Tree)可以用来解决数据的查找问题.链表,队列等线性数据结构可以存储数据 但在数据的查找,排序方面效率不高二叉搜索树则兼具了数据的存储和查找,能用来解决涉及数据查找的问题二叉树的原理和实现:http://blog.csdn.net/qq_21358401/article/details/79329523二叉搜索树和...

2018-02-24 20:45:28 218

原创 内部类:Java和C++的不同实现

内部类内部类是在一个类中定义的另一个类Java和C++都支持这么做,且内部类和继承是不同的,这两种行为在内存排布上截然不同.举C++为例:继承:class Derived : public Base {xxx};内部类:class Derived {public: class Base { xxx };};同样是在内存中实例化一个对象 De...

2018-02-24 17:56:04 344

原创 冒泡排序算法

普通排序算法最简单的排序算法(升序):假设有n个数据1. 比较前后两个数a和b 如果 a > b 则交换a和b的位置2. 重复比较 1和2 2和3 直到 n-1和n为止3. 循环重复上诉流程n次代码实现void sort(int *a, int size) { for (int i = 0; i < size; size++) { for (i...

2018-02-24 00:08:07 222

原创 不实践 = 知识快速消退

知识的遗忘晚上研究了一会object-c编程 发现因为过年 中途几天没有接触object-c前几天研究的语法居然陌生了不少 自己写的代码都不知道怎么回事了看来不经常的使用某项技术 知识很容易快速的遗忘 应当时时学习多写代码多思考 才能不断进步....

2018-02-23 20:05:03 158

原创 object-c 单例模式

单例模式通常C++或Java实现单例模式的方法是这样的:C++:class test {public: test *getInstance() { if(!mSelf) { mSelf = new test(); } return mSelf; }private: test *mSel...

2018-02-23 19:59:51 398

原创 堆排序算法

堆排序堆排序利用了二叉树的结构二叉树的原理和实现:http://blog.csdn.net/qq_21358401/article/details/79329523堆排序的大致过程:1. 排序选出n个数中最大的一个2. 在剩下的n-1个数中继续排序选最大的一个3. 知道只剩下一个最小的数堆堆排序用到的堆并非不是管理内存的堆栈,这里的堆指的是一种完全二叉树(叶节点只...

2018-02-23 17:43:19 142

SDL2.02版本源代码

SDL2.02版本 实测可以编译和链接

2016-11-02

Qt4摄像头视频采集

JPEG格式视频采集,其他格式需要自行修改videodevice中的采集格式

2016-08-08

空空如也

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

TA关注的人

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