自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 访问者设计模式

访问者设计模式: ##被访问者: 有一些稳定的结构对象,提供accept方法供访问者进行访问 ##访问者: 一些访问者,有一个visitor方法实现对对象的访问,不同的对象会做出不同的反应! ##应用 公司年终奖考核: 被访问者有:程序员,产品经理(accept(Visitor)) 访问者:CEO...

2019-07-15 13:29:35 31 0

原创 Cmake杂记

解决什么问题: 很多make工具有不同饭标准和规范,不支持跨平台,如果想跨平台就的为每个平台都写一份makefile,cmake就是用来可以跨平台的编译工具 使用步骤: 1.编写Cmakelist.txt 2.执行make PATH生成Makefile 3.使用make命令进行编译 安装: 编译源...

2019-07-06 10:24:44 61 0

原创 OpenGL ES绘制流程理解

OpenGL ES绘制流程理解

2019-06-04 23:55:20 193 0

原创 IM自定义消息协议安全--密钥协商过程

秘钥协商流程 IM消息自定义消息体设计时要考虑到可能产生的安全问题,如果消息体没有进行加密措施,很容易被抓包截取,消息加密要考虑到各个流程的可能出现的安全性问题! 下面是IM消息加密设计的密钥协商过程: C ...

2018-06-11 10:29:26 632 0

原创 SparseArray实现原理

SparseArray SparseArray原理: SparseArray采用两个数组,用来存放key以及value值的,核心思想是通过折半查找来找到key对应的位置,然后取出值,或者插入值! 二分查找 static int binarySearch(int[] array, int...

2018-06-07 16:03:57 690 0

原创 YV12,YU12,NV12,NV21,YVU420,I420,YUV420P,YUV420SP

最近在做手机相机视频采集,需要采集视频数据然后转换成相应的格式进行传输,对一些存储格式做了一些了解,总结如下: WHY YUV RGB类似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只...

2018-05-21 22:41:53 1440 0

原创 SQL 高级语法

复制表数据 复制表结构以及数据: create table new as select * from old 复制数据到一个相同的表: insert into sametable select * from old 只复制表结构: create table new as ...

2018-05-03 18:12:22 446 0

原创 SQL 常用操作

SQL语句 关键字 DISTINCT 用来返回唯一不同的列 select distinct name from student; where 有条件的选取数据,对于文本值,使用单引号,数值不用引号! select * from person where age=2...

2018-05-03 16:43:52 394 0

原创 leetcode 二叉树遍历

二叉树遍历 二叉树遍历:前序,中序,后序遍历,层序遍历,可以用递归或者队列,栈来实现! 层序遍历 /** * 102. Binary Tree Level Order Traversal * 利用队列实现层序遍历二叉树 * 思路: * 1.将根节点入队列 * 2.如果队列非空,...

2018-03-27 16:10:52 293 0

原创 leetcode 二叉树相关

求根节点到叶节点的数字之和 /** * 129. Sum Root to Leaf Numbers * 求根节点到叶节点的数字之和 * 递归出口,叶节点 * @param root * @return */ public int sumNumbers(TreeNode root) {...

2018-03-27 15:50:43 102 0

原创 leetcode 二分搜索树

二分搜索树 二分搜索树势一颗典型的二叉树,二分搜索树根节点的值大于左孩子节点的值,小于右孩子节点的值,插入/删除/查找的时间复杂度都是log(n) 二叉搜索树的创建,插入,删除 创建,插入 /** * 思路: * 首先初始化第一个节点,然后第二个节点要插入树中需要找到要插入位...

2018-03-27 11:48:55 122 0

原创 状态模式/Android状态机/微信多人语音

最近在做类似微信多人语音,视频聊天功能,用到了Android的状态机,借此写写自己的理解 状态模式 对状态模式的理解: 不同的状态对应不同的行为,当一个对象的状态改变了,那么该对象的行为也随之改变!通过将状态封装成一个类,然后去控制对象的行为,这就是状态模式! 解决什么问题: 一个事物...

2018-03-18 12:04:03 285 0

原创 图片显示不完整

记录一个bug 最近遇到一个非常难搞的问题,花了蛮长的时间才算解决了,这里记录一下自己的解决过程! 图片显示一半 我们的APP里面偶尔出现图片只加载了一部分的问题,但是其他用户显示是正常的,也不算必现,就是偶尔听用户报一下,之前也没有太过关注这个bug了,没有及时去处理,作为了一个遗留问...

2018-01-15 20:24:45 3974 1

原创 Glide使用及踩坑日记

Glide使用及踩坑日记 背景 项目中使用的是之前的ImageLoader,这个图片加载库很久没有维护了,决定使用Glide替换掉ImageLoader 使用Glide Glide的优点 1.Glide的API使用非常的方便,支持链式调用,支持各种形式源的图片 2.默认使用R...

2018-01-14 14:05:59 794 0

原创 JNI DETECTED ERROR IN APPLICATION: java_object == null

记录一个问题,在调用一个j ni方法的时候报了一个错误,错误日志如下:01-02 10:29:26.288 20617-20617/? A/art: art/runtime/java_vm_ext.cc:470] JNI DETECTED ERROR IN APPLICATION: java_ob...

2018-01-02 15:29:31 6697 0

原创 LRUCache源码解析

LruCache源码解析LruCache通常用来做图片缓存,通过LRU算法来缓存图片,我们来看源码是怎么实现!构造方法public LruCache(int maxSize) { if (maxSize <= 0) { throw new IllegalArgumen...

2018-01-02 01:04:01 127 0

原创 微信的bug

记录一个微信的bug(请允许我说一段废话)Android是基于Linux的一个开放,开源的系统,使得成千上万的开发者投入其中,开源的一个弊端就是开发商对Android系统做了各种各样的定制,对我们开发者来说,有可能导致相同的代码在不同版本,不同厂商的手机表现形式不一样,需要对具体机型做适配!(正文...

2018-01-01 23:18:20 546 0

原创 AsyncTask源码解析

AsyncTask的使用AsyncTask是一个轻量级的异步线程类,主要用于异步加载数据并同时更新UI的操作,非常方便,使用也非常简单:“` @Override protected void onPreExecute() { super...

2017-12-06 22:19:53 79 0

原创 String to Integer (atoi)

class Solution { public int myAtoi(String str) { if (str == null) { return 0; } str = str.trim(); if (&...

2017-11-16 23:16:16 129 0

原创 Reverse Integer

/** * 将整数倒转 * 思路: * 1.将该数依次%10,并将结果保存起来,将改数/10 * 2.判断溢出问题 * @param x * @return ...

2017-11-16 09:08:04 124 0

原创 Longest Substring Without Repeating Characters

static class Solution { public static int lengthOfLongestSubstring(String s) { if (s== null || s.length() == 0) { return 0; ...

2017-11-14 22:33:51 95 0

原创 Add Two Numbers

思路:/** * 解决思路: * 1.判断链表是否为空 * 2.判断链表是否相等 * 3.相加的时候判断两个值之和是否大于10 * */ package com.example.lib2;public class myClass {static class ListNode { ...

2017-11-13 21:28:05 114 0

原创 1. Two Sum

题目Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would hav...

2017-11-12 23:28:15 107 0

原创 Android 进程保活措施

保活的重要性对于一些需要存活时间较长的应用来说,进程保活是非常重要的,比如IM类型的APP为了收发消息的实时性,就需要APP能够更多的存活,不容易被系统杀掉,或者在被杀掉之后也能够起来,这就需要我们开发者做一些保活措施!一些措施1.提高进程优先级对于普通APP而言,提高APP的优先级(比如添加通知...

2017-10-16 23:32:38 204 0

原创 FFMPEG 压缩视频文件

视频压缩这篇文章我们通过FFMPEG的filter通过指定文件的分辨率将文件进行压缩,压缩的流程如下:1.打开视频文件 2.解复用 3.解码 4.编码 5.复用代码1.打开视频文件//打开输入文件,初始化输入流int OpenInput(string inputUrl) { pktCoun...

2017-10-15 15:28:49 1866 1

原创 Android 通过Fidder进行抓包

最近集成Glide的时候要看Glide的缓存是否生效,需要抓包APP是否发送了Http请求,可以通过设置网络代理,使用Fidder根据进行抓包分析,具体配置参照抓包配置

2017-10-15 14:38:41 222 0

原创 Mac环境下编译Android平台的ffmpeg

在Mac环境下编译Android平台的ffmpeg之前在Linux平台上编译过ffmpeg,具体可参考这篇文章点我 记得之前在Linux环境下编译的时候除了各种问题,各种不顺利,跳过了啦一些坑之后,这次在Mac环境下面就顺利的多了,一共花了10来分钟就编译完成!步骤1.安装NDK环境1.下载ND...

2017-10-05 17:11:41 378 0

原创 FFMPEG Filter相关API

最近在学习向视频添加文字,添加水印等功能,需要用到ffmpeg里面的滤镜,即filter,但是对api不是很熟悉,也不会用,下面对filter一些常用的api做一个记录!向视频添加水印以再视频中添加水印为例,filter有它相应的使用流程,大概可以分为几个步骤:1.创建graph及其上下文 ...

2017-09-24 22:59:39 287 1

原创 FFMPEG常用API

最近开始集中学习使用FFMpeg,对一些常用的api有了一个大致的了解,下面做个记录以备忘!FFMPEG处理流程FFMPEG的函数使用成千上万,不容易记住,但是如果知道她的使用流程的话,那就方便记住的多了! 在我理解的流程如下:1.打开并且初始化输入流(AVFormatContext): ...

2017-09-16 09:53:43 2802 0

原创 Window下ffmpeg项目搭建

ffmpeg环境搭建搭建步骤1.ffmpeg下载资源可以到官网去下载较新版本的资源shared:共享库,包括ffmpeg.exe,ffplay.exe,ffprobe.exe可执行文件,以及对应的8个dll动态链接库!dev:开发库,包含头文件,以及8个对应的lib库!2.Winodws下开发环境...

2017-08-31 22:53:06 201 0

原创 Android电量优化

最近领导老是反映说我们的APP耗电要比以前厉害一些,排在耗电量的首位,上黑名单了,需要进行电量优化!经过一段时间的研究,自己做了一部分的总结!电量优化的工具battery-historienbattery-historien是google开源的电量检测分析的工具,由于很多APP开发者对电量这快关注...

2017-04-23 20:40:11 7651 1

原创 Keytools Https双向认证(Android通用)

Https认证: 单向认证:保证服务器是可信任的,可以安全的访问的! 客户端拿到服务器的证书,通过CA认证信任,然后取出公钥,加密对称密钥传给服务器,服务器用自己的私钥解密得到对称密钥,后续使用该对称密钥加解密数据! 双向认证:客户端和服务器都是可以互相信任的! 客户端向服务...

2017-04-15 23:44:24 2428 0

原创 Android LibJpeg图片压缩

Android的图片压缩Android的图片压缩的几种方式:质量压缩,尺寸压缩,采样率压缩,通过NDK调用libjpeg库进行压缩!质量压缩通过设置bitmap options属性,降低图片的质量,但是像素不会减少 public static void compressImageToFile...

2017-03-25 22:58:44 1017 0

原创 WebRtc Build for Android

webrtc编译自己动手编译了webrtc,这里做个简单的笔记。记录自己编译webrtc的过程以及遇到的坑!编译环境Ubantu14.04 由于Webrtc源码非常的大,vpn下载源码不太稳定,特别慢,而且容易断开!所以买一个不被墙的ubantu云主机,运行稳定,速度飞快!NDK环境wg...

2017-03-18 22:36:19 672 0

原创 重温数据结构之四——队列与堆栈

队列与堆栈队列与堆栈是非常常见的数据结构,队列是先进先出,先进来的放在对头,后进来的排在队尾,堆栈相反,是先进后出,先进来的放在栈底,后进的放在栈顶!队列队列的实现非常的简单。可以用链表或者数组来实现,但是用链表会更加高效一点,因为使用数组来实现,由于长度是固定的,可能需要不停的开辟空间,开销相对...

2017-03-16 00:37:16 285 0

原创 重温数据结构三——LinkedList

我们知道java里面的LinkedList的底层数据结构也是基于链表的,我们下面就来看看源码的具体实现思路:public class LinkedList<E> extends AbstractSequentialList<E> implements Lis...

2017-03-14 22:34:58 228 0

原创 重温数据结构一

数据结构数据结构: 数据之间存在的一个或者多种的特定的关系元素的集合!分类根据数据对象的数据元素之间的关系,分类为逻辑结构与物理结构 逻辑结构:1.集合结构 2.线性结构 3.树形结构 4.图形结构 物理结构:1.顺序存储结构: 内存地址是连续的,比如:ArrayList 2.链式存储...

2017-03-13 23:09:58 166 0

原创 C语言几个常用的函数

有几个函数我是经常用到,但是老师分不清楚具体参数的含义,下面做个记录:memsetextern void *memset(void *buffer, int c, int count); 将buffer区域的前count个字节设置成字符cchar *s="Golden Global Vi...

2017-03-02 22:00:28 294 0

原创 重温数据结构之链表二——C语言实现

链表链表属于线性表的一种,不同于顺序表数据的内存地址是连续的,我们就在该数据结构上加一个属性,指向前后数据的内存地址,这样就将数据一串一串的连起来了,这就是链表!链表分类链表是有一系列的内存地址不连续的节点组成的,每个节点有两部分组成:数据域,指针域。数据域表示存储的数据,指针域指向另外一个节点,...

2017-03-02 21:45:40 211 0

原创 Nginx服务器配置首页

Nginx安装完成之后,在nginx.conf可以配置首页! 在server配置自己的默认首页!server 61 { // 监听端口,默认是80,为了不与HTTP端口冲突,最好改下 62 listen 80 default_server; ...

2017-03-01 12:57:44 203 0

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