<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ansu1912</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ansu1912]]></copyright><item><title><![CDATA[RTMP协议分析及推流过程]]></title><link>https://blog.youkuaiyun.com/ansu1912/article/details/101128781</link><guid>https://blog.youkuaiyun.com/ansu1912/article/details/101128781</guid><author>ansu1912</author><pubDate>Fri, 21 Jun 2019 10:16:00 +0800</pubDate><description><![CDATA[1.RTMP(实时消息传输协议)是Adobe 公司开发的一个基于TCP的应用层协议。
2.RTMP协议中基本的数据单元称为消息（Message）。
3.当RTMP协议在互联网中传输数据的时候，消息会被拆分成更小的单元，称为消息块（Chunk）。

RTMP 握手（Handshake）：


1.握手开始于客户端发送C0、C1块。服务器收到C0或C1后发送S0和S1。2...]]></description><category></category></item><item><title><![CDATA[在Android中使用OpenGL ES开发第（四）节：相机预览]]></title><link>https://blog.youkuaiyun.com/ansu1912/article/details/101128794</link><guid>https://blog.youkuaiyun.com/ansu1912/article/details/101128794</guid><author>ansu1912</author><pubDate>Thu, 20 Jun 2019 14:34:00 +0800</pubDate><description><![CDATA[笔者之前写了三篇Android中使用OpenGL ES入门级的文章，从OpenGL ES的相关概念出发，分析了利用OpenGL ES实现3D绘图的重要的两个步骤：定义形状和绘制形状，简单的绘制了一个三角形。 这里再简单回顾下：Android中使用OpenGL一共会涉及到四个类：
1）Activity——自不用说，Android界面展示的类； 2）GLSurfaceView——Surfa...]]></description><category></category></item><item><title><![CDATA[在Android中使用OpenGL ES开发第（五）节：GLSL基础语法]]></title><link>https://blog.youkuaiyun.com/ansu1912/article/details/101128779</link><guid>https://blog.youkuaiyun.com/ansu1912/article/details/101128779</guid><author>ansu1912</author><pubDate>Thu, 20 Jun 2019 14:31:00 +0800</pubDate><description><![CDATA[一、前期基础储备笔者之前的四篇文综述了Android中使用OpenGL ES绘制基本图形和实现了简单的相机预览，初次接触OpenGL ES开发的读者可能对其中新的概念比较迷惑，尤其是其中的顶点着色器（Vertex Shader）和片元着色器（Fragment Shader），我们知道，在OpenGL中顶点着色器是针对每个顶点执行一次，用于确定顶点的位置。片元着色器是针对每个片元，片元可以...]]></description><category></category></item><item><title><![CDATA[在Android中使用OpenGL ES进行开发第（三）节：绘制图形]]></title><link>https://blog.youkuaiyun.com/ansu1912/article/details/101128791</link><guid>https://blog.youkuaiyun.com/ansu1912/article/details/101128791</guid><author>ansu1912</author><pubDate>Thu, 20 Jun 2019 14:30:00 +0800</pubDate><description><![CDATA[一、前期基础知识储备笔者计划写三篇文章来详细分析OpenGL ES基础的同时也是入门关键的三个点：
①OpenGL ES是什么？与OpenGL的关系是什么？——概念部分
②使用OpenGLES绘制2D/3D图形的第一步：定义图形；——运用部分
③使用OpenGLES绘制出②步骤中定义好的图形：——运用部分，难点所在
通过这三篇文章的分析，就像给万丈高楼垫定了基石，万丈高楼平地起，...]]></description><category></category></item><item><title><![CDATA[在Android中使用OpenGL ES进行开发第（二）节：定义图形]]></title><link>https://blog.youkuaiyun.com/ansu1912/article/details/101128777</link><guid>https://blog.youkuaiyun.com/ansu1912/article/details/101128777</guid><author>ansu1912</author><pubDate>Thu, 20 Jun 2019 14:22:00 +0800</pubDate><description><![CDATA[一、前期基础知识储备笔者计划写三篇文章来详细分析OpenGL ES基础的同时也是入门关键的三个点：
①OpenGL ES是什么？与OpenGL的关系是什么？——概念部分
②使用OpenGLES绘制2D/3D图形的第一步：定义图形；——运用部分
③使用OpenGL ES绘制出②步骤中定义好的图形：——运用部分，难点所在
通过这三篇文章的分析，就像给万丈高楼垫定了基石，万丈高楼平地起...]]></description><category></category></item><item><title><![CDATA[在Android中使用OpenGL ES进行开发第（一）节：概念先行]]></title><link>https://blog.youkuaiyun.com/ansu1912/article/details/101128776</link><guid>https://blog.youkuaiyun.com/ansu1912/article/details/101128776</guid><author>ansu1912</author><pubDate>Thu, 20 Jun 2019 10:37:00 +0800</pubDate><description><![CDATA[一、前期基础是知识储备笔者计划写三篇文章来详细分析OpenGL ES基础的同时也是入门关键的三个点：
①OpenGL ES是什么？与OpenGL的关系是什么？——概念部分
②使用OpenGL ES绘制2D/3D图形的第一步：定义图形；——运用部分
③使用OpenGL ES绘制出②步骤中定义好的图形：——运用部分，难点所在
通过这三篇文章的分析，就像给万丈高楼垫定了基石，万丈高楼平...]]></description><category></category></item><item><title><![CDATA[Git常用命令]]></title><link>https://blog.youkuaiyun.com/ansu1912/article/details/101128788</link><guid>https://blog.youkuaiyun.com/ansu1912/article/details/101128788</guid><author>ansu1912</author><pubDate>Fri, 29 Mar 2019 09:50:00 +0800</pubDate><description><![CDATA[一. 基本命令


git init 初始化一个Git仓库


git status 查看当前仓库状态


git log &lt;具体id值/-1/–p&gt; (-p具体修改了什么内容) 查看日志,以便确定要回退到哪个版本


git reflog 查看命令历史,以便确定回到未来的哪个版本


二. 增删改查


git add &lt;文...]]></description><category></category></item><item><title><![CDATA[自定义圆形的ProgressBar]]></title><link>https://blog.youkuaiyun.com/ansu1912/article/details/101128774</link><guid>https://blog.youkuaiyun.com/ansu1912/article/details/101128774</guid><author>ansu1912</author><pubDate>Wed, 20 Mar 2019 10:36:00 +0800</pubDate><description><![CDATA[1.自定义圆形的ProgressBar
　　效果图：
　　圆形ProgressBar的样式主要有以下几个，我们这里以progressBarStyleLarge为例进行样式的修改，其他的类似。


&lt;ProgressBar　　android:layout_width="wrap_content"  　　android:layout_height="wrap_con...]]></description><category></category></item><item><title><![CDATA[java 网络通信传输层协议——UDP和TCP]]></title><link>https://blog.youkuaiyun.com/ansu1912/article/details/101128772</link><guid>https://blog.youkuaiyun.com/ansu1912/article/details/101128772</guid><author>ansu1912</author><pubDate>Tue, 19 Feb 2019 11:25:00 +0800</pubDate><description><![CDATA[本文原文由作者“zskingking”发表于：jianshu.com/p/271b1c57bb0b，本次收录有改动。

1、点评


互联网发展至今已经高度发达，而对于互联网应用（尤其即时通讯网专注的即时通讯技术这一块）的开发者来说，网络编程是基础中的基础，只有更好地理解相关基础知识，对于应用层的开发才能做到游刃有余。对于Android程序员来说，如果您觉...]]></description><category></category></item><item><title><![CDATA[移动端实时音视频直播技术详解（一）：开篇]]></title><link>https://blog.youkuaiyun.com/ansu1912/article/details/101128787</link><guid>https://blog.youkuaiyun.com/ansu1912/article/details/101128787</guid><author>ansu1912</author><pubDate>Thu, 24 Jan 2019 09:32:00 +0800</pubDate><description><![CDATA[1、引言
随着互联网用户消费内容和交互方式的升级，支撑这些内容和交互方式的基础设施也正在悄悄发生变革。手机设备拍摄视频能力和网络的升级催生了大家对视频直播领域的关注，吸引了很多互联网创业者或者成熟企业进入该领域。本文由七牛云技术团队原创分享，结合实时流网络 LiveNet 和直播云解决方案的实践，将用七篇文章，更系统化地介绍当下大热的视频直播各环节的关键技术，帮助视频直播创业者们更全面...]]></description><category></category></item><item><title><![CDATA[NDK开发入门终极教程]]></title><link>https://blog.youkuaiyun.com/ansu1912/article/details/101128783</link><guid>https://blog.youkuaiyun.com/ansu1912/article/details/101128783</guid><author>ansu1912</author><pubDate>Fri, 18 Jan 2019 09:41:00 +0800</pubDate><description><![CDATA[0 前言
同NDK技术的渊源始于3年前，使用so文件的时候了解到NDK技术，并且C语言一直是强项，就鼓捣起NDK开发。在AndroidStduio还没推广的年代，基于eclipse搭建NDK开发环境需要安全依赖开发工具，并且调试起来具备难度。随后AndroidStudio也先后支持nkd-build和cmake使用NDK开发。
参见之前的博客：
eclipse下使用NDK...]]></description><category></category></item><item><title><![CDATA[android 缩放平移自定义View 显示图片]]></title><link>https://blog.youkuaiyun.com/ansu1912/article/details/101128770</link><guid>https://blog.youkuaiyun.com/ansu1912/article/details/101128770</guid><author>ansu1912</author><pubDate>Fri, 01 Dec 2017 11:51:00 +0800</pubDate><description><![CDATA[1、背景
现在app中，图片预览功能肯定是少不了的，用户基本已经形成条件反射，看到小图，点击看大图，看到大图两个手指开始进行放大，放大后，开始移动到指定部位~~~
我相信看图的整个步骤，大家或者说用户应该不希望被打断把~~~“我擦，竟然不能放大，什么玩意，卸了~~“ ， "我擦，竟然不能移动，留有何用，卸了~~"。
哈~所以对于图片的预览，一来，我们要让用户爽；二来，我们作为开发者...]]></description><category></category></item><item><title><![CDATA[android 工具库]]></title><link>https://blog.youkuaiyun.com/ansu1912/article/details/101128767</link><guid>https://blog.youkuaiyun.com/ansu1912/article/details/101128767</guid><author>ansu1912</author><pubDate>Fri, 20 Oct 2017 09:05:00 +0800</pubDate><description><![CDATA[https://github.com/xybCoder/AndroidCommon android工具类集合

转载于:https://www.cnblogs.com/laughingQing/p/7697766.html]]></description><category></category></item><item><title><![CDATA[WebView 讲义]]></title><link>https://blog.youkuaiyun.com/ansu1912/article/details/101128780</link><guid>https://blog.youkuaiyun.com/ansu1912/article/details/101128780</guid><author>ansu1912</author><pubDate>Wed, 18 Oct 2017 09:34:00 +0800</pubDate><description><![CDATA[http://reezy.me/p/20170515/android-webview/ （比较全面）


参考
https://developer.android.com/reference/android/webkit/package-summary.html
Fullscreen API 全屏显示网页http://calefy.org/2012/06/03/fulls...]]></description><category></category></item><item><title><![CDATA[java编程之：按位与运算，等运算规则]]></title><link>https://blog.youkuaiyun.com/ansu1912/article/details/101128778</link><guid>https://blog.youkuaiyun.com/ansu1912/article/details/101128778</guid><author>ansu1912</author><pubDate>Wed, 11 Oct 2017 14:19:00 +0800</pubDate><description><![CDATA[按位与运算符（&amp;）
参加运算的两个数据，按二进制位进行“与”运算。
运算规则：0&amp;0=0; 0&amp;1=0; 1&amp;0=0; 1&amp;1=1;
 即：两位同时为“1”，结果才为“1”，否则为0
例如：3&amp;5 即 0000 0011 &amp; 0000 0101 = 0000 0001 因此，3&amp;5...]]></description><category></category></item><item><title><![CDATA[深入理解OkHttp源码（三）——网络操作]]></title><link>https://blog.youkuaiyun.com/ansu1912/article/details/101128765</link><guid>https://blog.youkuaiyun.com/ansu1912/article/details/101128765</guid><author>ansu1912</author><pubDate>Sun, 20 Aug 2017 15:19:00 +0800</pubDate><description><![CDATA[这篇博客侧重于了解OkHttp的网络部分，包括Socket的创建、连接，连接池等要点。OkHttp对Socket的流操作使用了Okio进行了封装，本篇博客不做介绍，想了解的朋友可以参考拆轮子系列：拆Okio。
OkHttp中关于网络的几个概念
下面的主要翻译自OkHttp的官方文档，查看原文.
URL
URLs（比如https://github.com/square/okht...]]></description><category></category></item><item><title><![CDATA[深入理解OkHttp源码（二）——获取响应]]></title><link>https://blog.youkuaiyun.com/ansu1912/article/details/101128762</link><guid>https://blog.youkuaiyun.com/ansu1912/article/details/101128762</guid><author>ansu1912</author><pubDate>Wed, 09 Aug 2017 02:10:00 +0800</pubDate><description><![CDATA[首先先看一张流程图，该图是从拆轮子系列：拆 OkHttp 中盗来的，如下： 
 
在上一篇博客深入理解OkHttp源码（一)——提交请求中介绍到了getResponseWithInterceptorChain()方法，本篇主要从这儿继续往下讲解。
getResponseWithInterceptorChain方法
private Response getResponseWithI...]]></description><category></category></item><item><title><![CDATA[深入理解OkHttp源码（一）——提交请求]]></title><link>https://blog.youkuaiyun.com/ansu1912/article/details/101128775</link><guid>https://blog.youkuaiyun.com/ansu1912/article/details/101128775</guid><author>ansu1912</author><pubDate>Sun, 06 Aug 2017 23:37:00 +0800</pubDate><description><![CDATA[本篇文章主要介绍OkHttp执行同步和异步请求的大体流程。主要流程如下图： 
 
主要分析到getResponseWidthInterceptorChain方法，该方法为具体的根据请求获取响应部分，留着后面的博客再介绍。  
Dispatcher类
Dispatcher类负责异步任务的请求策略。首先看它的部分定义：
public final class Dispatcher...]]></description><category></category></item><item><title><![CDATA[synchronized与static synchronized 的区别]]></title><link>https://blog.youkuaiyun.com/ansu1912/article/details/101128760</link><guid>https://blog.youkuaiyun.com/ansu1912/article/details/101128760</guid><author>ansu1912</author><pubDate>Fri, 09 Jun 2017 10:53:00 +0800</pubDate><description><![CDATA[1.synchronized与static synchronized 的区别 synchronized是对类的当前实例进行加锁，防止其他线程同时访问该类的该实例的所有synchronized块，注意这里是“类的当前实例”， 类的两个不同实例就没有这种约束了。那么static synchronized恰好就是要控制类的所有实例的访问了，static synchronized是...]]></description><category></category></item><item><title><![CDATA[Java高阶回调,回调函数的另一种玩法]]></title><link>https://blog.youkuaiyun.com/ansu1912/article/details/101128758</link><guid>https://blog.youkuaiyun.com/ansu1912/article/details/101128758</guid><author>ansu1912</author><pubDate>Wed, 12 Apr 2017 15:18:00 +0800</pubDate><description><![CDATA[工具类package com.sctek;import java.lang.reflect.Field;import android.os.CountDownTimer;import android.util.Log;/** * 自定义倒计时类 * 当时间剩下2分钟时，开始红白交替闪动，当时间只剩下1分钟时加快闪动频率 * * @author YeXiubiao 2012-01-02 *...]]></description><category></category></item></channel></rss>