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

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

2018-06-11 10:29:26

阅读数:214

评论数:0

SparseArray实现原理

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

2018-06-07 16:03:57

阅读数:177

评论数:0

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

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

2018-05-21 22:41:53

阅读数:408

评论数: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

阅读数:248

评论数:0

SQL 常用操作

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

2018-05-03 16:43:52

阅读数:199

评论数:0

leetcode 二叉树遍历

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

2018-03-27 16:10:52

阅读数:90

评论数:0

leetcode 二叉树相关

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

2018-03-27 15:50:43

阅读数:65

评论数:0

leetcode 二分搜索树

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

2018-03-27 11:48:55

阅读数:59

评论数:0

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

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

2018-03-18 12:04:03

阅读数:103

评论数:0

图片显示不完整

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

2018-01-15 20:24:45

阅读数:2224

评论数:0

Glide使用及踩坑日记

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

2018-01-14 14:05:59

阅读数:466

评论数: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

阅读数:1898

评论数:0

LRUCache源码解析

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

2018-01-02 01:04:01

阅读数:89

评论数:0

微信的bug

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

2018-01-01 23:18:20

阅读数:408

评论数:0

AsyncTask源码解析

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

2017-12-06 22:19:53

阅读数:51

评论数: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

阅读数:94

评论数:0

Reverse Integer

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

2017-11-16 09:08:04

阅读数:87

评论数: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

阅读数:68

评论数:0

Add Two Numbers

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

2017-11-13 21:28:05

阅读数:82

评论数: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

阅读数:79

评论数:0

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