- 博客(31)
- 资源 (2)
- 收藏
- 关注
转载 UML图例说明
这篇文章来总结下UML类图,本来不打算讲UML类图的,因为我在学习设计模式的时候,一遇到有关UML的就会自动忽略,一看感觉就很复杂。但是随着学习的深入,发现不掌握UML类图,对设计模式或者某一个框架没有整体的把控。所以与其逃避,不如敢于面对,今天就让我们一起来了解下什么是UML类图。说到UML类图,我们先来看下什么是UML。在维基百科上对它的定义如下:UML即统一建模语言(Unified...
2019-07-03 16:24:56 511
转载 一种绕过Android P对非SDK接口限制的简单方法
去年发布的 Android P上引入了针对非公开API的限制,对开发者来说,这绝对是有史以来最重大的变化之一。前天 Google 发布了 Android Q 的 Beta 版,越来越多的 API 被加入了黑名单,而且 Google 要求下半年 APP 必须 target 28,这意味着现在的深灰名单也会生效;可以预见,在不久的将来,我们要跟大量的 API 说再见了。去年我给出了一种绕过Andr...
2019-06-21 17:28:31 1615 1
转载 flutter多线程
从18年底Flutter1.0正式版发布以来,在国内出现了爆发式增长,包括闲鱼、抖音、今日头条在内的大多数公司,相继接入了Flutter,通过Flutter进行跨平台开发。在使用Flutter的过程中,我们也需要对其一些特性进行研究和掌握,如果只是调用API的话并不能领悟到Flutter的精髓。本篇文章详细讲解了Flutter的多线程,由于笔者是做iOS开发的,并且将Flutt...
2019-05-27 13:27:57 1228
原创 flutter开发过程bug(不断更新)
1.class ListFormState extends State<ListForm> { List<String> products = ["Test1", "Test2", "Test3"]; @override Widget build(BuildContext context) { return new Containe...
2019-05-26 15:53:39 1527 2
翻译 Flutter 核心概念详解
Flutter 核心概念详解: Widget、State、Context 及 InheritedWidget本文涵盖了 Flutter 应用中有关 Widget、State、Context 及 InheritedWidget 的重要概念。因为 InheritedWidget 是最重要且文档缺乏的部件之一,故需特别关注。难度:初学者前言Flutter 中的Widget、State...
2019-05-13 19:53:49 601
原创 Flutter-StatefulWidget和StatelessWidget
对于万物皆Widget的Fultter,同样的事情一般都有多种控件可以实现,太多的选择总是会让人陷入或多或少的选择纠结症和对性能的忧虑上。初次接触Flutter,首先必然要面对的两座大山:StatelessWidget & StatefulWidget。 而在这两个控件的选择上,大部分人给出的解释就是:"就像他们的名字一样,无状态静态的视图展示使用StatelessWidget,而有交...
2019-02-21 11:32:44 695
转载 Flutter事件交互和State管理
先来看看准备界面:image.png 目标是修改图中红色实线框中的喜欢和不喜欢的五角星的修改,以及数字的修改。在修改之前,有必要先了解一些相关的信息。知识点前面简单的提到过,有些Widget是Statful(有状态的),而其他的一些是Stateless(无状态的)。比如继承自StatefulWidget的有Checkbox、Radio、Slider、Form等,这些Wid...
2019-01-29 11:30:50 1594
转载 国内少有的Flutter干货分享:Flutter的原理及美团的实践!
Flutter是Google开发的一套全新的跨平台、开源UI框架,支持iOS、Android系统开发,并且是未来新操作系统Fuchsia的默认开发套件。自从2017年5月发布 第一个版本 以来,目前Flutter已经发布了近60个版本,并且在2018年5月发布了第一个 “Ready for Production Apps” 的Beta 3版本,6月20日发布了第一个 “Release Previe...
2018-12-13 16:05:15 988
原创 flutter架构简介
Flutter应用程序是由一些零散且有关联的控件组成的,那么控件是什么?控件,就是你在屏幕上看到那些东西。例如,一间教室相当于一个屏幕,它里面可以放椅子,也可以放桌子,教室就是一个控件。在这个教室里,放一张桌子,在上面写上“Hello World”这个经典名句,桌子就是一个控件,它上面写有文字。这相当于你在屏幕上放一个Text控件,然后在Text控件的data属性中写上“Hello World”这...
2018-12-11 15:42:33 523
原创 Dart语法(1)
Dart语法文章目录Dart语法Dart语法概要断言介绍内置类型Numbers(数值)StringBooleans(布尔值)Lists(列表),runtimeTypeMapsRunesFunctions(方法)函数闭包typedef方法可作为参数被调用可选参数操作符~/ 除后取整as,is,is!??=???... 级联语法operatorDart语法概要// 定义个方法。printNum...
2018-11-19 07:49:30 1110
原创 车牌识别三种识别方式
HOG特征局部归一化的梯度方向直方图,是一种对图像局部重叠区域的密集型描述符, 它通过计算局部区域的梯度方向直方图来构成特征。参数1(检测窗口)的宽- 参数2(块大小)的宽 结果与参数3(块滑动增量)的余数要为0 高也一样参数4是胞元大小,参数5是梯度方向HOGDescriptor hog(Size(128, 64), Size(16, 16), Size(8, 8), Size(8, ...
2018-11-12 13:43:04 4698
原创 opencv训练人脸
级联分类器 执行训练的时候会输出一系列的参数,其中可以看到:【stageType: BOOST】。boosting算法涉及到弱分类器和强分类器的概念。弱分类器分类正确率较低,但是较容易获得,强分类器分类正确率较高,但是较难获得。只要样本充足,弱学习可以通过一定的组合获得任意精度的强学习。级联分类器就是 N个弱分类器 以级联的方式,从简单到复杂逐步串联而成。 可以用决策树来构建一个简单的弱分...
2018-11-12 13:39:41 865
原创 OpenCV人脸识别基础
OpenCV文章目录OpenCV简介人脸定位VSLBP基本LBP圆形LBP旋转不变LBP等价LBP检测原理简介 OpenCV是一个基于BSD许可开源发行的跨平台计算机视觉库。拥有C++,Python和Java接口,并且支持Windows, Linux, Mac OS, iOS 和 Android系统。实现了图像处理和计算机视觉方面的很多通用算法。模块功能Core核心...
2018-11-12 13:38:07 828
原创 推流封装音频
AAChttps://zh.wikipedia.org/wiki/進階音訊編碼 高级音频编码(Advanced Audio Coding),出现于1997年,基于MPEG-2的音频编码技术,目的是取代MP3格式。2000年,MPEG-4标准出现后,AAC重新集成了其特性,为了区别于传统的MPEG-2 AAC又称为MPEG-4 AAC。相对于mp3,AAC格式的音质更佳,文件更小。AAC的...
2018-11-09 12:14:52 745
原创 NV21与I420编码格式
NV21与I420 Android Camera对象通过setPreviewCallback 函数,在onPreviewFrame(byte[] data,Camera camera)中回调采集的数据就是NV21格式。而x264编码的输入数据却为I420格式。因此,当我们采集到摄像头数据之后需要将NV21转为I420。NV21和I420都是属于YUV420格式。而NV21是一种two-pl...
2018-11-09 11:51:31 6244
原创 Nginx-RTMP配置rtmp
Nginx-RTMPLinux操作:下载nginx wget http://nginx.org/download/nginx-1.15.3.tar.gz解压 tar xvf nginx-1.15.3.tar.gz下载nginx rtmp模块 wget https://codeload.github.com/arut/nginx-rtmp-module/tar.gz/v1.2.1...
2018-11-09 11:47:02 3541
原创 RTMP、X264与交叉编译
RTMP、X264与交叉编译文章目录RTMP、X264与交叉编译RTMPDump交叉编译RTMP视频数据FLV tags 结构视频数据AVC 序列头其他x264交叉编译NALUIDRH.264数据 与HTTP(超文本传输协议)同样是一个基于TCP的Real Time Messaging Protocol(实时消息传输协议)。由Adobe Systems公司为Flash播放器和服务器之间音频、...
2018-11-09 11:45:25 461
原创 ffmpeg音视频开发基础知识
基础知识文章目录基础知识为什么需要压缩为什么可以压缩视频编码格式音频编码格式封装格式流媒体协议YUV简介H.264 I,P,B帧和PTS,DTSFFmpeg核心模块为什么需要压缩● 未经压缩的数字视频的数据量巨大● 存储困难● 传输困难为什么可以压缩● 去除冗余信息空间冗余:图像相邻像素之间有较强的相关性时间冗余:视频序列的相邻图像之间内容相似 编码冗余:不同像素值出现的...
2018-11-09 09:55:37 493
原创 视频原生绘制
视频原生绘制文章目录视频原生绘制ViewSurfaceViewTextureViewSurface与SurfaceTexture码率帧率ANativeWindowViewSurfaceView Activity的View hierachy的树形结构,最顶层的DecorView,也就是根结点视图,在SurfaceFlinger中有对应的Layer。 对于具有SurfaceView的窗口...
2018-11-09 09:55:16 200
原创 Shell脚本
Shell Script文章目录Shell Script变量、字符串、数组与注释传参运算符流程控制函数与输出重定向文章目录Shell Script变量、字符串、数组与注释传参运算符流程控制函数与输出重定向Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。Shell Script(Shell脚本)是一种为Shell编写的脚本程序...
2018-11-09 09:54:53 235
原创 ffmpeg交叉编译
FFmpegndk最新的发布版是r17,如果只能找到r16的下载地址,那只要把这个地址中的16改成17就可以了https://baike.baidu.com/item/ffmpeg/2665727?fr=aladdinFFmpeg是一个开源的音视频处理程序,也可以把它看成一个用于处理音视频的库。如果需要在Android中使用这个库,那就需要进行交叉编译。从官网下载FFmpeg的源码:...
2018-11-09 09:54:43 659 1
原创 CMake与Android版本注意事项
CMake基本配置与注意事项文章目录CMake基本配置与注意事项CMake5.0及以下与6.0及以上的注意事项:Android.mkCMakeCMake 在android studio 2.2及以上,构建原生库的默认工具是 CMake。 CMake是一个跨平台的构建工具,可以用简单的语句来描述所有平台的安装(编译过程)。能够输出各种各样的makefile或者project文件。Cmak...
2018-11-08 17:36:09 3297
原创 CC++编译器与Makefile
编译器与Makefile文章目录编译器与Makefilegcc/g++/clangclanggccg++编译器过程Makefile什么是MakefileMakefile规则变量include文件搜索其他预定义变量自动变量条件语句输出信息Android.mkApplication.mkgcc/g++/clang了解c/c++编译器的基本使用,能够在后续移植第三方框架进行交叉编译时,清楚的了解...
2018-11-08 17:35:16 1207
原创 Linux 文件权限、VIM、防火墙
Linux 文件权限、VIM、防火墙文章目录Linux 文件权限、VIM、防火墙SSH连接环境变量权限更改文件所属更改文件权限su和sudo包管理器VI/VIMiptables防火墙CentOS vs Ubuntu: Which one is better for a serverhttps://linux.cn/article-8141-1.htmlSSH连接无论是mac还是wi...
2018-11-08 17:18:01 395
原创 JNI
JNI编程文章目录JNI编程第一个JNI程序JNI数据类型C/C++反射Java反射方法反射属性JNI引用局部引用全局引用弱引用JNI_OnLoad动态注册native线程调用JavaJNI是一种本地编程接口。它允许运行在JAVA虚拟机中的JAVA代码和用其他编程语言,诸如C语言、C++、汇编,写的应用和库之间的交互操作。第一个JNI程序#引入jni头文件支持include_dire...
2018-11-08 17:16:11 260
原创 多线程与智能指针
C++线程与智能指针文章目录C++线程与智能指针线程C++11线程POSIX线程线程属性分离线程调度策略与优先级线程同步条件变量智能指针shared_ptrweak_ptrunique_ptr自定义智能指针部分C++11、14特性nullptr类型推导基于范围的 for 循环Lambda作业(后面FFmpeg直播播放器课程的队列工具类)线程线程,有时被称为轻量进程,是程序执行的最小单元。...
2018-11-08 17:14:23 3236 1
原创 C++容器、类型转换、异常与文件流操作
C++容器、类型转换、异常与文件流操作文章目录C++容器、类型转换、异常与文件流操作容器序列式容器/顺序容器向量(vector)列表 (list)双端队列(deque)栈(stack)队列(queue)优先队列(priority_queue )关联式容器集合(set)键值对(map)红黑树类型转换const_caststatic_castdynamic_castreinterpret_castc...
2018-11-08 17:12:33 446
原创 cpp面向对象
面向对象编程文章目录面向对象编程类常量函数友元友元函数友元类静态成员重载函数函数重载操作符重载继承多态虚函数模板函数模板类模板(泛型类)类C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,用户定义的类型。class Student { int i; //默认 privatepublic: Student(int i,in...
2018-11-08 17:00:06 740
原创 结构体、共用体与C++基础1
结构体、共用体与C++基础1文章目录结构体、共用体与C++基础11、结构体字节对齐2、共用体3、C++输出函数符号兼容引用字符串C字符串字符串操作C++ string类命名空间1、结构体结构体是C编程中一种用户自定义的数据类型,类似于Java的JavaBean//Student 相当于类名//student和a 可以不定义,表示结构变量,也就Student类型的变量struct S...
2018-11-08 16:56:57 177
原创 c基础-指针、函数与预处理器
指针、函数、预处理器文章目录指针、函数、预处理器1、指针解引用指针运算数组和指针const char *, char const *, char * const,char const * const多级指针多级指针的意义2、函数函数的位置函数参数传值调用引用调用可变参数函数指针3、预处理器常用预处理器宏作业:手写sprintf1、指针指针是一个变量,其值为地址。声明指针或者不再使用后都要...
2018-11-08 16:53:52 240
原创 c初探:数据类型、格式化、数组与指针
c初探:数据类型、数组、内存布局、指针c与c++C语言是一门通用计算机编程语言,广泛应用于底层开发。c语句是面向过程的语言,c++是面向对象的语言,C++对c进行扩展。c是c++的子集,c++是c的超集,所以大部c语言程序都可以不加修改的拿到c++下使用。1、基本数据类型1.**signed**----有符号,可修饰char、int。Int是默认有符号的。 2.unsigne...
2018-11-08 16:44:38 227
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人