<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[SnailDream]]></title><description><![CDATA[I like java and android . ]]></description><link>https://blog.youkuaiyun.com/linfeng24</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; linfeng24]]></copyright><item><title><![CDATA[Android 音视频系列-视频录制]]></title><link>https://blog.youkuaiyun.com/linfeng24/article/details/118540842</link><guid>https://blog.youkuaiyun.com/linfeng24/article/details/118540842</guid><author>linfeng24</author><pubDate>Wed, 07 Jul 2021 10:20:48 +0800</pubDate><description><![CDATA[1、录制前的预览

一般而言，我们在录制之前，都需要预览。

我们来回归下利用Camera2进行预览的步骤：

通过CameraManager获取可用的相机设备列表。
	通过CameraManager拿到对应相机的参数
	调用openCamera打开相机。
	在回调中创建CaptureRequestBuilder与CameraCaptureSession。其中，要将我们的Surface添加到CaptureRequestBuilder中，这里我们还是使用TextureView，通过其SurfaceTextur]]></description><category></category></item><item><title><![CDATA[【音视频】音视频入门基础]]></title><link>https://blog.youkuaiyun.com/linfeng24/article/details/106852485</link><guid>https://blog.youkuaiyun.com/linfeng24/article/details/106852485</guid><author>linfeng24</author><pubDate>Mon, 22 Jun 2020 14:23:30 +0800</pubDate><description><![CDATA[1、音视频学习路线

对于音视频来说，通常包括以下4个方面的知识：

采集：把视频、声音从设备上抽样采集；
	渲染：即播放展示；
	处理：包括去噪、回声消除、混音、特效、转场等；
	传输：上传、直播；
下面先来了解音视频的基本知识

2、音视频封装格式

我们日常所看到的音频视频的后缀格式，比如mp3、avi、rmvb等，它们其实是音视频的封装格式，也就是说，把音频、视频打包成一个统一约定的格式文件，类似于word文档后缀是.word一样；只不过，由于约定的组织、公司标准以及算法侧重点不同，目前有比较多的.]]></description><category></category></item><item><title><![CDATA[细说HTTP笔记1：HTTP的出道故事]]></title><link>https://blog.youkuaiyun.com/linfeng24/article/details/42933259</link><guid>https://blog.youkuaiyun.com/linfeng24/article/details/42933259</guid><author>linfeng24</author><pubDate>Tue, 20 Jan 2015 22:34:31 +0800</pubDate><description><![CDATA[1、出道前的那段时期
1989年，那个时候，我们普通人还没怎么接触过电脑，还不能淘宝（因为那会马云还在杭州教书。。），也不能QQ聊天（马化腾98年才创立腾讯），遇到问题了也不可以百度（李彦宏还在北大读书）。那会，互联网属于很少的一部分人。
 
1990年11月，世界上第一台Web服务器和Web浏览器诞生在CERN（欧洲核子研究组织。。额这个名称确实比较难理解。。核子%>_）手上。然而，那会上]]></description><category></category></item><item><title><![CDATA[弄明白android网络库之Volley listView加载大量图片]]></title><link>https://blog.youkuaiyun.com/linfeng24/article/details/42321395</link><guid>https://blog.youkuaiyun.com/linfeng24/article/details/42321395</guid><author>linfeng24</author><pubDate>Thu, 01 Jan 2015 20:24:55 +0800</pubDate><description><![CDATA[一、加载一张图片
 
Volley是通过
ImageRequest来获取网络上的图片的，指定一个URL，返回一个已经编码号的bitmap。当然它也提供了其他便利特性，比如调整图片大小。使用它它主要的好处是
 Volley的计划线程确保了如图片编码、调整大小等昂贵的操作自动地在一个工作线程完成，不会给主线程带来太多的麻烦和干扰。
 
a cannedrequest for getting]]></description><category></category></item><item><title><![CDATA[弄明白Android 接口回调机制]]></title><link>https://blog.youkuaiyun.com/linfeng24/article/details/42264715</link><guid>https://blog.youkuaiyun.com/linfeng24/article/details/42264715</guid><author>linfeng24</author><pubDate>Tue, 30 Dec 2014 13:15:07 +0800</pubDate><description><![CDATA[以前对于这个机制理解不够深刻，现在重新整理下思路。
一、建模
我理解的接口回调就是，我这个类实现了一个接口里的方法doSomething，然后注册到你这里，然后我就去做别的事情去了，你在某个触发的时机回头来调用我doSomething的方法。好比，我给你打电话问某个难题，你电话里想不出来，于是说等想到了再回我电话。于是接口回调机制比喻模型如下
 
 
第一步：
首先，你我得约定，这个实]]></description><category></category></item><item><title><![CDATA[HTTP 方法详解]]></title><link>https://blog.youkuaiyun.com/linfeng24/article/details/42193943</link><guid>https://blog.youkuaiyun.com/linfeng24/article/details/42193943</guid><author>linfeng24</author><pubDate>Sat, 27 Dec 2014 16:17:59 +0800</pubDate><description><![CDATA[一、基础篇
所谓HTTP请求方法就是你提前告诉服务器你要进行什么类型的操作，如同你吃饭前先点菜，告诉餐厅要给你准备做什么样的菜。
 
一共有8个类型的方法
 






GET



HEAD



POST



PUT



DELETE



OPTIONS



TRACE


扩展方法]]></description><category></category></item><item><title><![CDATA[弄明白android 网络库之Volley(一)]]></title><link>https://blog.youkuaiyun.com/linfeng24/article/details/42065313</link><guid>https://blog.youkuaiyun.com/linfeng24/article/details/42065313</guid><author>linfeng24</author><pubDate>Sun, 21 Dec 2014 21:59:57 +0800</pubDate><description><![CDATA[1、Volley是什么？
Volley是Google
官方在2013 Android IO大会上推出的新网络通信框架，
一个使得android
网络通信更加容易并且迅速的HTTP库。它并且可以通过开放的AOSP仓库进行使用。
它有以下特性：
（1）自动调度网络请求；
（2）支持多并发的网络连接；
（3）磁盘和内存响应缓存使用标准HTTP缓存特性；
（4）支持请求优先级；
（5）]]></description><category></category></item><item><title><![CDATA[弄明白handler机制]]></title><link>https://blog.youkuaiyun.com/linfeng24/article/details/42012635</link><guid>https://blog.youkuaiyun.com/linfeng24/article/details/42012635</guid><author>linfeng24</author><pubDate>Thu, 18 Dec 2014 21:51:41 +0800</pubDate><description><![CDATA[一、Looper类
首先，你得知道一个类，Looper类，顾名思义，Looper就是循环者的意思，那么Looper类的存在就是为了让一个普普通通的线程变成一个会循环执行的线程，我们可以理解为长生不老药，吃了就能不老。
 
普通的Thread类只需要执行Looper.prepare()方法就可以循环执行了。
prepare()方法是Looper类的静态方法，如下：

public cla]]></description><category></category></item><item><title><![CDATA[弄明白ThreadLocal类]]></title><link>https://blog.youkuaiyun.com/linfeng24/article/details/41988247</link><guid>https://blog.youkuaiyun.com/linfeng24/article/details/41988247</guid><author>linfeng24</author><pubDate>Wed, 17 Dec 2014 21:37:16 +0800</pubDate><description><![CDATA[1、ThreadLocal类的由来
因为有问题，人类就会想法设法的创造一些东西出来解决问题，嗯，这句话同意吧。
假如目前有这么一个问题：有个家庭，三个孩子都想看妈妈买的一本童话书，但是只有一本书，该如何是好？
方法一：家里没钱买第二本了，那就排队看，谁跑得快来到妈妈面前的就先看。后面来晚的，候着等着。等前面的看完再到你。于是
以时间换空间的synchronized
类出现了。
 
方]]></description><category></category></item><item><title><![CDATA[算法之逆序对问题求解]]></title><link>https://blog.youkuaiyun.com/linfeng24/article/details/39211293</link><guid>https://blog.youkuaiyun.com/linfeng24/article/details/39211293</guid><author>linfeng24</author><pubDate>Thu, 11 Sep 2014 21:02:09 +0800</pubDate><description><![CDATA[题目：   给出一列数，a1， a2，....到 an，求它的逆序对数。逆序对就是 下标 i 比 j小，但是值 ai 却比 a j大。n 可以高大 10万。 
思路：
（1）穷举，肯定不现实的，因为n 可以高达10万，肯定超时；
（2）考录分治法，受到归并排序的启发，能不能不断划分数组到最小，然后合并时统计 逆序对数。划分和递归都和归并排序没什么区别，问题在合并时如何统计。
合并左右两个数]]></description><category></category></item><item><title><![CDATA[Android 是怎么启动一个Acitivity的?]]></title><link>https://blog.youkuaiyun.com/linfeng24/article/details/39082385</link><guid>https://blog.youkuaiyun.com/linfeng24/article/details/39082385</guid><author>linfeng24</author><pubDate>Fri, 05 Sep 2014 16:26:43 +0800</pubDate><description><![CDATA[可以把启动过程分为client端和server端。
一、client端在启动一个Activity时进行的工作
备注：我个人理解，client端指的是相对后台ActivityManagerService
进程来说的前台用户可见的进程，如在界面启动某一个Activity的就是Laucher进程。这里则以从home桌面启动一个Activity来分析启动过程：
（1）Launcher
这个进程的]]></description><category></category></item><item><title><![CDATA[剑指offer之重建二叉树]]></title><link>https://blog.youkuaiyun.com/linfeng24/article/details/39051151</link><guid>https://blog.youkuaiyun.com/linfeng24/article/details/39051151</guid><author>linfeng24</author><pubDate>Thu, 04 Sep 2014 13:39:42 +0800</pubDate><description><![CDATA[1、题目
   很简单，知道yike]]></description><category></category></item><item><title><![CDATA[《HTTP权威指南》笔记之 网络状态码]]></title><link>https://blog.youkuaiyun.com/linfeng24/article/details/38706829</link><guid>https://blog.youkuaiyun.com/linfeng24/article/details/38706829</guid><author>linfeng24</author><pubDate>Wed, 20 Aug 2014 15:20:41 +0800</pubDate><description><![CDATA[状态码分为五大类，
（1）100
 ~ 199 信息性状态码





状态码


含义


原因短语




100


说明服务器收到了请求的初始部分，请客户端继续发送


Continue




101


说明服务器正在根据客户端的指定，将协议转换成为 Update首部所列的协议


Switching Protoc]]></description><category></category></item><item><title><![CDATA[以另一种位图的思想来解决一道OJ题目]]></title><link>https://blog.youkuaiyun.com/linfeng24/article/details/38613049</link><guid>https://blog.youkuaiyun.com/linfeng24/article/details/38613049</guid><author>linfeng24</author><pubDate>Sat, 16 Aug 2014 14:33:19 +0800</pubDate><description><![CDATA[前言：
以前所接触到的位图的思想都是以1位的形式去存储某个数出现的次数是1次还是0次。常见的例子不外乎在《编程珠玑》上的开篇例子里，1千万个数的排序统计，用1.25M的内存空间就可以达到遍历一遍输入数据而排序好的目的。这种思想是通用的么？也就是说，假如输入数据不再是0次或者1次，而是2次或者更多的时候，如何再次用上这种思想呢？请看下面题目


题目：
输入一个数组，数组有int类型整数若]]></description><category></category></item><item><title><![CDATA[理解用setTag 和 Viewholder 来优化listView]]></title><link>https://blog.youkuaiyun.com/linfeng24/article/details/38563629</link><guid>https://blog.youkuaiyun.com/linfeng24/article/details/38563629</guid><author>linfeng24</author><pubDate>Thu, 14 Aug 2014 20:31:14 +0800</pubDate><description><![CDATA[在说 setTag
和getTag之前，我们先说下 Viewholder，它不是Android
开发固定的API，而是谷歌Demo中推荐的设计方法。Viewholder对象它一般包括listview子项里所有的组件，convertView是空的，在Viewholder里存储对列表子项每个组件的id应用，通过setTag方法，把这个带有view引用的对象附加在View上，如此，当listView]]></description><category></category></item><item><title><![CDATA[快速排序为什么快？]]></title><link>https://blog.youkuaiyun.com/linfeng24/article/details/38429055</link><guid>https://blog.youkuaiyun.com/linfeng24/article/details/38429055</guid><author>linfeng24</author><pubDate>Fri, 08 Aug 2014 01:20:01 +0800</pubDate><description><![CDATA[这是曾经思考过的问题，
它为什么叫快速排序呢？思考无果，然后忘记了，然后昨天被问起，自然想不出很好的答案。直到，看到了《暗时间》上有这个问题的答案。
 
在《暗时间》里，作者刘未然并没有直接给出答案，而是先说了两个游戏，猜数字和称球。这两个问题都很好理解，并且不难解答。然而，令我豁然开朗的是，他们指向了同一个思想，分而治之！把问题不断切割一半又一半，直到答案水落石出。
 
回到正题，我们]]></description><category></category></item><item><title><![CDATA[为什么接口中的成员变量非得是public static final？]]></title><link>https://blog.youkuaiyun.com/linfeng24/article/details/38406625</link><guid>https://blog.youkuaiyun.com/linfeng24/article/details/38406625</guid><author>linfeng24</author><pubDate>Wed, 06 Aug 2014 21:03:58 +0800</pubDate><description><![CDATA[前言，这是今天面试的时候被问到的一个题目。我没有答得很完整。好惭愧。
两年来一直做项目，却没有好好留点时间静下心来思考什么是这样，那么以后自己做出来的产品想必会存在漏洞，因为我对有些事情欠缺完整的思考。知道是缺点了，便要改。
 
为什么接口中的成员变量非得是public static final的呢？
 
首先明白一个原理，就是接口的存在意义。接口就是为了实现多继承的抽象类，是一种高度抽]]></description><category></category></item><item><title><![CDATA[java垃圾回收算法]]></title><link>https://blog.youkuaiyun.com/linfeng24/article/details/38348969</link><guid>https://blog.youkuaiyun.com/linfeng24/article/details/38348969</guid><author>linfeng24</author><pubDate>Sat, 02 Aug 2014 15:49:24 +0800</pubDate><description><![CDATA[（1）引用计数法
这是最经典和最古老的一种，它的工作原理是为每个对象配备一个计数器，只有这个对象被引用了，引用计数器就加1，当引用失效时，计数器减一，只要计数器为0，意味着不再被使用，于是该对象就可以被回收了。
优点：实现简单；
缺点：无法处理循环引用情况。即有应该被回收的垃圾对象A、B，他们互相引用，除此之外无其他引用，然而他们计数器值不是0，因此无法回收，从而造成内存泄漏。
 
（2]]></description><category></category></item><item><title><![CDATA[算法笔记之堆排序]]></title><link>https://blog.youkuaiyun.com/linfeng24/article/details/38323353</link><guid>https://blog.youkuaiyun.com/linfeng24/article/details/38323353</guid><author>linfeng24</author><pubDate>Thu, 31 Jul 2014 21:03:38 +0800</pubDate><description><![CDATA[一、对堆排序的相关了解
1、堆排序的运行时间是 O(nlogn)
；
2、定义：
堆heap是一棵具有以下属性的二叉树——
（1）它是一棵完全二叉树；
（2）每个结点大于或等于它的任意一个孩子。
 
备注：完全二叉树的定义——除了最后一层没填满以及最后一层的叶子都是偏左放置的，其他层都是满的二叉树！
             

3、二叉堆有两种：最大堆和最小堆。在堆排序中我]]></description><category></category></item><item><title><![CDATA[LeetCode 之 two Sum寻找两个相加之和为给定值的两个数]]></title><link>https://blog.youkuaiyun.com/linfeng24/article/details/38176675</link><guid>https://blog.youkuaiyun.com/linfeng24/article/details/38176675</guid><author>linfeng24</author><pubDate>Sun, 27 Jul 2014 19:48:14 +0800</pubDate><description><![CDATA[题目

Given an array of integers, find two numbers such thatthey add up to a specific target number.

The function twoSum should return indices of the twonumbers such that they add up to the target,]]></description><category></category></item></channel></rss>