<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LinChengChun的博客]]></title><description><![CDATA[一个自我反思与升华的地方]]></description><link>https://blog.youkuaiyun.com/LinChengChun</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LinChengChun]]></copyright><item><title><![CDATA[[JetPack] LiveData源码解析]]></title><link>https://blog.youkuaiyun.com/LinChengChun/article/details/110054788</link><guid>https://blog.youkuaiyun.com/LinChengChun/article/details/110054788</guid><author>LinChengChun</author><pubDate>Tue, 24 Nov 2020 11:11:43 +0800</pubDate><description><![CDATA[1. 背景 官网LiveData
笔者在开发一款即时通讯和音视频应用时，发现需要花费很大的力量去处理系统组件之间的数据传递，稍微有点不注意，就会出现状态错乱不同步的问题，影响用户体验，也给系统稳定性带来了许多影响。因此，在我们2.0版本的重构过程中，毅然决定引入LiveData，经过实践证明，其是一种优秀的解决方案，很适合处理此类问题，但也有一些细节需要注意，因此有了这篇文章，希望可以记录下来。

1.1 定义

数据持有类
感知组件生命周期
数据能够被观察者所观察

1.2 使用 LiveData 的优势]]></description><category></category></item><item><title><![CDATA[Android Styling System 知识体系]]></title><link>https://blog.youkuaiyun.com/LinChengChun/article/details/109310999</link><guid>https://blog.youkuaiyun.com/LinChengChun/article/details/109310999</guid><author>LinChengChun</author><pubDate>Tue, 27 Oct 2020 15:40:15 +0800</pubDate><description><![CDATA[Android Styling System1. 背景2. 主题背景与样式的区别2.1 主题背景 != 样式2.1.1 共同点2.1.2 不同点2.2 样式2.2.1 样式里面有什么2.2.2 使用方法2.2.3 范围2.3 主题背景2.3.1 什么是主题背景？2.3.2 使用方法2.3.3 范围3.常见的主题背景属性3.1 还可以使用哪些主题背景属性的功能呢？3.2 命名空间3.3 如何自定义一个主题背景3.3.1 在 attrs.xml 中定义主题背景属性:3.3.2 在不同的主题背景中使用不同的值:3]]></description><category></category></item><item><title><![CDATA[[JetPack] androidx.lifecycle库中ViewModel的新旧版本API差异]]></title><link>https://blog.youkuaiyun.com/LinChengChun/article/details/108973564</link><guid>https://blog.youkuaiyun.com/LinChengChun/article/details/108973564</guid><author>LinChengChun</author><pubDate>Fri, 09 Oct 2020 10:04:32 +0800</pubDate><description><![CDATA[1.背景
谷歌官方的JetPack框架给开发者带来了丰富、好用的接口组件，很大程度上提升了应用质量和开发效率。但在开发过程中，笔者遇到一个问题，从截图(如下)上面可以看到，旧版本的API被添加了Deprecated，也就是 不给推荐使用。

2.ViewModelProviders接口构造ViewModel的实现原理

查看 ViewModelProviders.of(this) 方法

    @Deprecated
    @NonNull
    @MainThread
    public stat]]></description><category></category></item><item><title><![CDATA[我的 HarmonyOS入门笔记]]></title><link>https://blog.youkuaiyun.com/LinChengChun/article/details/108594333</link><guid>https://blog.youkuaiyun.com/LinChengChun/article/details/108594333</guid><author>LinChengChun</author><pubDate>Tue, 15 Sep 2020 10:20:35 +0800</pubDate><description><![CDATA[我的 HarmonyOS 入门笔记
##1.背景
本文主要介绍如何入门HarmonyOS。分为三部分：概念、源码下载、源码编译、Hello World。
##2.概念 官网
HarmonyOS是一款“面向未来”、面向全场景（移动办公、运动健康、社交通信、媒体娱乐等）的分布式操作系统。在传统的单设备系统能力的基础上，HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念，能够支持多种终端设备。
##2.1 分布式操作系统
##2.2 分布式理念
##2.3 系统能力
##2.4 终端形态
#]]></description><category></category></item><item><title><![CDATA[如何理解Linux系统SSH协议和原理]]></title><link>https://blog.youkuaiyun.com/LinChengChun/article/details/64930163</link><guid>https://blog.youkuaiyun.com/LinChengChun/article/details/64930163</guid><author>LinChengChun</author><pubDate>Tue, 05 Mar 2019 14:31:45 +0800</pubDate><description><![CDATA[一、基础概念

1、概念：ssh，全称叫Secure Shell，由IETF的网络工作小组（Network Working Group）所制定；SSH为一项创建在应用层和传输层基础上的安全协议。

2、传统网络服务程序缺点：rsh/ftp/telnet 在网络上用明文传送数据、用户帐号和用户口令，很容易受到中间人（man-in-the-middle）攻击方式的攻击。

3、SSH安全协议的优点：专...]]></description><category></category></item><item><title><![CDATA[Android硬编解码MediaCodec使用笔记]]></title><link>https://blog.youkuaiyun.com/LinChengChun/article/details/80219503</link><guid>https://blog.youkuaiyun.com/LinChengChun/article/details/80219503</guid><author>LinChengChun</author><pubDate>Sun, 06 May 2018 22:30:56 +0800</pubDate><description><![CDATA[一、MediaCodec介绍

MediaCodec类可以用来访问底层媒体编解码器，即编码器/解码器的组件。 它是Android底层多媒体支持架构的一部分（通常与MediaExtractor，MediaSync，MediaMuxer，MediaCrypto，MediaDrm，Image，Surface和AudioTrack一起使用）。 
 
In broad terms, a codec proc...]]></description><category></category></item><item><title><![CDATA[时间复杂度与常见排列算法]]></title><link>https://blog.youkuaiyun.com/LinChengChun/article/details/80215095</link><guid>https://blog.youkuaiyun.com/LinChengChun/article/details/80215095</guid><author>LinChengChun</author><pubDate>Sun, 06 May 2018 15:39:55 +0800</pubDate><description><![CDATA[一、时间复杂度概念



1、时间复杂度概念

提到时间复杂度，第一时间想到的是算法，简单说，算法就是你解决问题的方法，而你用这个方法解决这个问题所执行的语句次数，称为语句频度或者时间频度，记为T(n)。

什么是时间复杂度，算法中某个函数有n次基本操作重复执行，用T(n)表示。 
现在有某个辅助函数f(n),使得当n趋近于无穷大时，T（n)/f(n)的极限值为不等于零的常数，则称f(n)是T(n...]]></description><category></category></item><item><title><![CDATA[Gradle日常开发技巧总结]]></title><link>https://blog.youkuaiyun.com/LinChengChun/article/details/80215064</link><guid>https://blog.youkuaiyun.com/LinChengChun/article/details/80215064</guid><author>LinChengChun</author><pubDate>Sun, 06 May 2018 15:37:49 +0800</pubDate><description><![CDATA[一、基础概念篇



1、Gradle：是一个工具，同时它也是一个编程框架。使用这个工具可以完成app的编译打包等工作。

通过安装Gradle插件让系统能支持运行Gradle。安装AS后就已经帮我安装了Gradle插件。但Gradle插件是独立于Android Studio运行的。



2、Gradle version：配置文件路径==&amp;gt;youProject/gradle/wrapper...]]></description><category></category></item><item><title><![CDATA[Linux常用命令]]></title><link>https://blog.youkuaiyun.com/LinChengChun/article/details/80034860</link><guid>https://blog.youkuaiyun.com/LinChengChun/article/details/80034860</guid><author>LinChengChun</author><pubDate>Sat, 21 Apr 2018 23:16:34 +0800</pubDate><description><![CDATA[本文档主要为了记录和总结Linux环境各个常用命令用法。每一个命令分三部分罗列，包括命令功能作用、命令参数与格式、常用命令及其功能。只是为了查找方便，进行知识整合。

1、查看目录所占空间大小 
du    &amp;lt;目录路径&amp;gt;    &amp;lt;参数&amp;gt; 
du -h    // 罗列当前目录各个子目录所占空间大小，并显示单位为 kb/mb/gb等等 
du /opt -h    // 罗列...]]></description><category></category></item><item><title><![CDATA[Android不同系统版本的悬浮窗权限问题]]></title><link>https://blog.youkuaiyun.com/LinChengChun/article/details/79362278</link><guid>https://blog.youkuaiyun.com/LinChengChun/article/details/79362278</guid><author>LinChengChun</author><pubDate>Sat, 24 Feb 2018 15:29:34 +0800</pubDate><description><![CDATA[Android悬浮窗权限问题



一、悬浮窗适配的两种方法：

1、按照正规的流程，如果系统没有赋予 APP 弹出悬浮窗的权限，就先跳转到权限授权界面，等用户打开该权限之后，再去弹出悬浮窗，比如 QQ 等一些主流应用就是这么做得； 
2、利用系统的漏洞，绕过权限的申请，简单粗暴；不建议使用，因为兼容性有待商榷。 
3、大脑模糊区域：悬浮窗与对话框权限是不同的，是不一样的。



二、不同系统版本...]]></description><category></category></item><item><title><![CDATA[librtmp开源库与android平台编译记录]]></title><link>https://blog.youkuaiyun.com/LinChengChun/article/details/78962664</link><guid>https://blog.youkuaiyun.com/LinChengChun/article/details/78962664</guid><author>LinChengChun</author><pubDate>Wed, 03 Jan 2018 16:29:14 +0800</pubDate><description><![CDATA[一、编写目的为了记录编译librtmp开源库过程遇到的问题，帮助后来人提供参考，希望本文能为大家提供参考。
二、简介(官方介绍)The Real-Time Messaging Protocol (RTMP) is used for streaming multimedia content across a TCP/IP network. This API provides most client f]]></description><category></category></item><item><title><![CDATA[Android JNI模板与读取系统属性笔记]]></title><link>https://blog.youkuaiyun.com/LinChengChun/article/details/78952925</link><guid>https://blog.youkuaiyun.com/LinChengChun/article/details/78952925</guid><author>LinChengChun</author><pubDate>Tue, 02 Jan 2018 16:17:53 +0800</pubDate><description><![CDATA[一、编写目的本文主要提供一个简单可用的 jni 模板，便于在APK中编写native代码。通过记录，希望能对jni学习有一个更深的认识。
二、APP中的jni模板1、jni文件在项目中的截图2、详细步骤1)、在src/main/ 层，创建jni目录用于存放，native代码2)、增加Android.mk# Android.mk for check is rightful boardLOCAL_PAT]]></description><category></category></item><item><title><![CDATA[个人技术发展方向]]></title><link>https://blog.youkuaiyun.com/LinChengChun/article/details/76038753</link><guid>https://blog.youkuaiyun.com/LinChengChun/article/details/76038753</guid><author>LinChengChun</author><pubDate>Mon, 24 Jul 2017 22:04:09 +0800</pubDate><description><![CDATA[今天看到一篇文章，里面有一段话，我想对于现在的我很有感触。

学习技术不外乎以下两个方向：
1、广度：整个使用链条有哪些环节构成的？每个环节的作用是什么？都有哪些类似的可替代方案？它们之间有什么区别？各自优劣点是什么？。。。
2、深度：这个【技术、产品】的本质是什么？都能做什么？运行原理是什么？底层是如何实现的？可以做怎样的改进？。。。
不管你在做什么工作，都应该先把自己每天都要用的核心]]></description><category></category></item><item><title><![CDATA[如何对应用进行Android系统签名和常用adb命令总结]]></title><link>https://blog.youkuaiyun.com/LinChengChun/article/details/73468149</link><guid>https://blog.youkuaiyun.com/LinChengChun/article/details/73468149</guid><author>LinChengChun</author><pubDate>Mon, 19 Jun 2017 15:38:11 +0800</pubDate><description><![CDATA[如何对应用进行Android系统签名和常用adb命令总结一、非系统APP应用添加系统权限的两种方法：
应用场景：系统权限（AndroidManifest.xml中manifest节点中加入android:sharedUserId=”android.uid.system”这个属性）
方法一：将APP工程放置到系统源码环境，进行编译，并打包到系统ROM包里面；则默认具有系统权限；
方法二：利用系统的签名]]></description><category></category></item><item><title><![CDATA[21分钟入门MySQL笔记]]></title><link>https://blog.youkuaiyun.com/LinChengChun/article/details/73467478</link><guid>https://blog.youkuaiyun.com/LinChengChun/article/details/73467478</guid><author>LinChengChun</author><pubDate>Mon, 19 Jun 2017 14:44:34 +0800</pubDate><description><![CDATA[概念：Relational Database Management System，关系型数据库
登录到MySQL：mysql -h 主机名 -u 用户名 -p
创建一个数据库：create database 数据库名 [其他选项]; 
create database samp_db character set gbk; // 设置编码格式
选择所要操作的数据库： 
1、登陆时指定：mysql -D]]></description><category></category></item><item><title><![CDATA[C++：string类型与char*类型转换方法]]></title><link>https://blog.youkuaiyun.com/LinChengChun/article/details/73467393</link><guid>https://blog.youkuaiyun.com/LinChengChun/article/details/73467393</guid><author>LinChengChun</author><pubDate>Mon, 19 Jun 2017 14:38:09 +0800</pubDate><description><![CDATA[string类型与char*类型转换方法string 是c++标准库里面其中一个，封装了对字符串的操作；把string转换为char* 有3中方法；利用string类的 data()方法
string str="abc";
char *p=str.data();
printf("%s\n", p); // 输出abc
利用string类的 c_str()方法
string str="abc";
ch]]></description><category></category></item><item><title><![CDATA[EasyNVR 使用记录]]></title><link>https://blog.youkuaiyun.com/LinChengChun/article/details/68240764</link><guid>https://blog.youkuaiyun.com/LinChengChun/article/details/68240764</guid><author>LinChengChun</author><pubDate>Wed, 29 Mar 2017 23:40:41 +0800</pubDate><description><![CDATA[一、简介(引用官方描述) 
EasyNVR能够通过简单的摄像机通道配置、存储配置、云平台对接配置、CDN配置等，将传统监控行业里面的高清网络摄像机IP Camera、NVR、移动拍摄设备接入到EasyNVR，EasyNVR能够将这些视频源的音视频数据采集到设备端，进行全平台终端直播、录像存储、录像检索和录像回放。并且EasyNVR能够将视频源的直播数据对接到第三方视频平台、CDN网络，实现互联网]]></description><category></category></item><item><title><![CDATA[Ubuntu(linux) 下编译ffmpeg 记录]]></title><link>https://blog.youkuaiyun.com/LinChengChun/article/details/54862686</link><guid>https://blog.youkuaiyun.com/LinChengChun/article/details/54862686</guid><author>LinChengChun</author><pubDate>Sat, 04 Feb 2017 13:56:40 +0800</pubDate><description><![CDATA[ffmpeg是基于Linux开发的，所以在linux系统(Ubuntu)上编译ffmpeg其实很简单。下面介绍如何在Ubuntu上编译基本的ffmpeg库(不带其他扩展的解码编码库)。


1、下载ffmpeg源代码
ffmpeg官网链接：https://ffmpeg.org/
ffmpeg下载链接：git clone https://git.ffmpeg.org/ffmpeg.git]]></description><category></category></item></channel></rss>