<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Leonchen1024]]></title><description><![CDATA[Only the Paranoid Survive]]></description><link>https://blog.youkuaiyun.com/chenlinfeng772885775</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chenlinfeng772885775]]></copyright><item><title><![CDATA[Android 依赖管理]]></title><link>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/135482534</link><guid>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/135482534</guid><author>chenlinfeng772885775</author><pubDate>Wed, 10 Jan 2024 08:30:00 +0800</pubDate><description><![CDATA[由于一个项目多个 module 中都会涉及到许多的依赖项,并且依赖的版本不同可能也会导致问题.所以衍生了很多的版本管理方法.这里介绍一个 kotlin 代码管理的方式。]]></description><category></category></item><item><title><![CDATA[Android 11 文件存储机制更新适配]]></title><link>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/135135764</link><guid>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/135135764</guid><author>chenlinfeng772885775</author><pubDate>Fri, 22 Dec 2023 08:45:00 +0800</pubDate><description><![CDATA[Android 逐渐收拢了存储机制的权限,增加了分区存储功能并不断完善.]]></description><category></category></item><item><title><![CDATA[Software architecture thinking]]></title><link>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/126260923</link><guid>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/126260923</guid><author>chenlinfeng772885775</author><pubDate>Tue, 10 Oct 2023 10:58:32 +0800</pubDate><description><![CDATA[关键组件组件之间的关系(结构)和交互忽略了组件中与组件之间交互无关的信息从另一个组件可以观察到的组件行为组件和结构背后的基本原理。]]></description><category></category></item><item><title><![CDATA[聪明人用方格记事本]]></title><link>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/115416333</link><guid>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/115416333</guid><author>chenlinfeng772885775</author><pubDate>Sat, 03 Apr 2021 15:10:18 +0800</pubDate><description><![CDATA[文章目录背景为什么要用方格记事本传统笔记经常出现的几个问题乱记型笔记过度肥胖型笔记小笔记填鸭式笔记问题总结好的笔记要有哪些要素怎么使用方格笔记本利用方格线来进行排版使用笔记本三法则不要急着抄写先要想好记录的目的和如何发挥这个作用再记笔记多问几个为什么横向使用笔记本使用大的笔记本可以培养思维能力多使用图表来表达大量练习,大量舍弃笔记的类型记忆笔记思考型笔记传达型笔记About Me
背景
这本书介绍了如何使用方格笔记本来进行记事的方法,对一些记事本的问题点做出了总结.
为什么要用方格记事本
传统笔记经常出现的]]></description><category></category></item><item><title><![CDATA[深入 Spring IoC - 3 Bean 概览]]></title><link>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/110207253</link><guid>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/110207253</guid><author>chenlinfeng772885775</author><pubDate>Thu, 26 Nov 2020 22:27:08 +0800</pubDate><description><![CDATA[深入 Spring IoC - 3 Bean 概览
文章目录深入 Spring IoC - 3 Bean 概览Bean 概览Bean命名在 bean 定义外定义别名Bean 实例化使用构造函数实例化通过静态工厂方法实例化通过实例工厂方法来实例化判断一个bean 的运行时类型
Bean 概览
Spring IoC 容器可以管理多个bean.这些bean是通过你提供的配置元数据生成的(比如,是用XML&lt;bean/&gt; 定义).
在容器内部,这些bean定义表示为 BeanDefinition 对象, ]]></description><category></category></item><item><title><![CDATA[深入 Spring IoC - 2 容器概览]]></title><link>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/108742818</link><guid>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/108742818</guid><author>chenlinfeng772885775</author><pubDate>Tue, 22 Sep 2020 22:32:05 +0800</pubDate><description><![CDATA[深入 Spring IoC - 2 容器概览
文章目录深入 Spring IoC - 2 容器概览容器概览配置元数据XML 表示实例化容器组合基于XML 的配置元数据Groovy Bean 定义 DSL使用容器About Me
容器概览
ApplicationContext 接口就可以代表 Spring IoC 容器. 容器通过配置元数据来获取应该管理那些对象.我们可以使用 XML,Java 注解或者Java代码来表示配置元数据.通过这些方式我们可以表示出应用中的组成对象和他们之间的依赖关系.
Spring]]></description><category></category></item><item><title><![CDATA[深入 Spring IoC - 1.1 总概览]]></title><link>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/108742690</link><guid>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/108742690</guid><author>chenlinfeng772885775</author><pubDate>Tue, 22 Sep 2020 22:30:31 +0800</pubDate><description><![CDATA[深入 Spring IoC - 1.1 总概览
文章目录深入 Spring IoC - 1.1 总概览概述IoC 容器BeansAbout Me
概述
Inversion of Control (IoC,控制反转) IoC 更多内容,这是一个设计原则,可以减少程序的耦合度.而IoC通常是和 dependency injection (DI,依赖注入) 一起出现的,可以说DI是实现IoC原则的一种主要方式.通过从外部注入依赖到使用者,使得控制创建依赖的职责反转到了外部,使得代码的耦合度减少,灵活度和扩展能力得]]></description><category></category></item><item><title><![CDATA[Trie]]></title><link>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/107647101</link><guid>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/107647101</guid><author>chenlinfeng772885775</author><pubDate>Tue, 28 Jul 2020 22:38:16 +0800</pubDate><description><![CDATA[文章目录应用替换其他数据结构字典表达术语索引算法排序全文检索实现Bitwise triesCompressing triesExternal memory trieAbout Me
Trie ,也叫做 digital tree(数字树) 有时候也是 radix tree(基数树) 或者 prefix tree(前缀树) (因为他们可以通过前缀进行搜索) 是一种 search tree - 一种用来存储通常键为 strings 的dynamic set 或者 associative array  有序的 tr]]></description><category></category></item><item><title><![CDATA[依赖注入]]></title><link>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/106534059</link><guid>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/106534059</guid><author>chenlinfeng772885775</author><pubDate>Wed, 03 Jun 2020 22:21:55 +0800</pubDate><description><![CDATA[依赖注入
文章目录依赖注入概述为什么需要依赖注入细节组成结构实现方式代码示例优点缺点About Me
概述
依赖注入(Denpendecy Injection ,DI) 通常和 控制反转(Inverse of Control,IoC) 一起出现.它是实现IoC的主要手段之一.通过依赖注入类可以不关心自身的依赖应该如何构造,而是由注入器代理这个职责,将类需要的依赖构建好后注入到类里.可以达到分离关注点,分离调用方和依赖,提高可复用性和可维护性.
为什么需要依赖注入
为什么需要依赖注入呢? 这和为什么需要IoC]]></description><category></category></item><item><title><![CDATA[IoC 控制反转]]></title><link>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/106533361</link><guid>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/106533361</guid><author>chenlinfeng772885775</author><pubDate>Wed, 03 Jun 2020 22:02:05 +0800</pubDate><description><![CDATA[IoC 控制反转
文章目录IoC 控制反转概述实现方法依赖注入(dependency injection)依赖查找(dependency lookup)服务定位器模式(service locator pattern)使用模板方法设计模式扩展其他应用About Me
概述
控制反转（Inversion of Control，缩写为IoC）,它是软件开发中的一种设计原则,可以降低代码的耦合度,使得程序更加的模块化,更易于扩展.
为什么叫做控制反转?又为什么能够降低代码的耦合度呢?
在常规的开发过程中,很多时候一]]></description><category></category></item><item><title><![CDATA[Gradle Kotlin DSL]]></title><link>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/104833137</link><guid>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/104833137</guid><author>chenlinfeng772885775</author><pubDate>Fri, 13 Mar 2020 08:01:37 +0800</pubDate><description><![CDATA[文章目录我觉得你们可以先看最后的彩蛋再决定是不是要看为什么选择 Gradle Kotlin DSL开始1. 修改settings.gradle2. 修改项目 build.gradle3. 修改module 的 build.gradle彩蛋!!!!!!!!About Me
首发地址点这里
我觉得你们可以先看最后的彩蛋再决定是不是要看
强烈推荐先看文章最后的彩蛋!!!
为什么选择 Gradle Kot...]]></description><category></category></item><item><title><![CDATA[LeetCode 6. ZigZag Conversion]]></title><link>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/104357176</link><guid>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/104357176</guid><author>chenlinfeng772885775</author><pubDate>Mon, 17 Feb 2020 14:02:15 +0800</pubDate><description><![CDATA[[Chinese ver]
6. ZigZag Conversion
字符串"PAYPALISHIRING"是通过一个如下给定行数的锯齿模式书写的:(你可能想要使用一个固定的字体来更好的显示它)
P   A   H   N
A P L S I I G
Y   I   R

然后一行一行的读取这个字符串:“PAHNAPLSIIGYIR”
编写代码实现获取一个字符串然后根据给出的行数来实现这个锯齿转换...]]></description><category></category></item><item><title><![CDATA[开始使用 Navigation]]></title><link>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/97689290</link><guid>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/97689290</guid><author>chenlinfeng772885775</author><pubDate>Mon, 29 Jul 2019 22:11:30 +0800</pubDate><description><![CDATA[文章目录开始使用依赖引入创建一个导航图Navigation Editor添加一个 NavHost 到 activity通过 xml 添加一个NavHostFragment添加目的地到导航图从现有的 activity 或 Fragment 中添加目的地创建一个新的Fragment目的地从 DialogFragment 中创建一个目的地占位目的地解析目的地设置一个屏幕作为起始目的地连接目的地导航到目的...]]></description><category></category></item><item><title><![CDATA[Navigation 指南]]></title><link>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/97687805</link><guid>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/97687805</guid><author>chenlinfeng772885775</author><pubDate>Mon, 29 Jul 2019 21:58:35 +0800</pubDate><description><![CDATA[文章目录ReferenceAbout Me
由于官网暂时没有中文版本,所以在这里根据内容抽空做了一些中文的版本.
原文首发于 https://leonchen1024.com/2019/07/04/Navigation/#more
Navigation 是用来管理你的app中内容的跳转,返回等操作.它主要包含了以下三个部分:

Navigation graph : 一个 xml 资源包含了所有的导...]]></description><category></category></item><item><title><![CDATA[LRU 缓存的魔力]]></title><link>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/96196795</link><guid>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/96196795</guid><author>chenlinfeng772885775</author><pubDate>Tue, 16 Jul 2019 22:44:53 +0800</pubDate><description><![CDATA[原文首发于 https://leonchen1024.com/2018/12/23/S1ep1-The-macgic-of-LRU-Cache/
场景
假设这么一个情况,当你需要多次展示同一个图片的时候,如果你重复从硬盘中加载图片的话,那么会造成资源的浪费,甚至可能会OOM.
这个时候我们可以使用 cache 来避免这种情况,我们只从硬盘中加载一次到内存中,然后在需要的时候反复使用这个照片.
但是...]]></description><category></category></item><item><title><![CDATA[贪婪算法 详解]]></title><link>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/91355945</link><guid>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/91355945</guid><author>chenlinfeng772885775</author><pubDate>Sun, 09 Jun 2019 19:11:03 +0800</pubDate><description><![CDATA[贪婪算法(Greedy Algorithm)也叫算贪心法,贪婪法.它是一个遵循启发式解决问题的算法范式.它的核心思想就是通过在每一步的选择中都选用当前步骤下最优的选择,期望结果是最优的算法.如 旅行推销员问题.贪婪算法尤其适用于有最优子结构的问题中,最优子结构的意思是局部的最优解可以导出全局的最优解.贪婪算法与动态规划 的不同在于贪婪算法对每一个子问题都作出选择,不能回退;动态规划则会保存以前的运算结果,根据以前的结果对当前进行选择,可以回退.贪婪算法可以解决一些最优化(如最大值最小值等)问题,比如求图中的]]></description><category></category></item><item><title><![CDATA[APP 版本控制]]></title><link>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/90631735</link><guid>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/90631735</guid><author>chenlinfeng772885775</author><pubDate>Tue, 28 May 2019 07:38:29 +0800</pubDate><description><![CDATA[文章目录设置版本信息统一配置ReferenceAbout Me
版本管理是app的一个重要部分，他主要的用途有：

让用户了解当前的版本信息，了解升级或者降级信息等
不同的版本可能提供的服务和功能有所差别，版本信息可以给我们一个标志来识别当前版本可提供的服务和功能。

原文首发于 https://leonchen1024.com/2018/04/13/APP-Version-Control/
设置...]]></description><category></category></item><item><title><![CDATA[LeetCode 5.最长的回文字符串]]></title><link>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/86546195</link><guid>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/86546195</guid><author>chenlinfeng772885775</author><pubDate>Fri, 18 Jan 2019 20:43:39 +0800</pubDate><description><![CDATA[LeetCode 5.最长的回文字符串
原文地址
给定一个字符串s,找出其中最长的回文格式的子字符串。你可以假设长度的最大值为1000.
Example:
Input: &quot;babad&quot;

Output: &quot;bab&quot;

Note: “aba” is also a valid answer.
Example:
Input: &quot;cbbd&quot;

Output: &quot;bb&quot;

一开始以为palindrome是重...]]></description><category></category></item><item><title><![CDATA[Binary Search(二分搜索)]]></title><link>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/83828350</link><guid>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/83828350</guid><author>chenlinfeng772885775</author><pubDate>Wed, 07 Nov 2018 17:43:31 +0800</pubDate><description><![CDATA[二分搜索(binary search),也叫做 折半搜索(half-interval search),对数搜索(logarithmic search),对半搜索(binary chop),是一种在有序数组中查找某一特定元素的搜索算法.
二分搜索有几个变体.特别是,分散层叠(fract...]]></description><category></category></item><item><title><![CDATA[LeetCode 4. Median of Two Sorted Arrays]]></title><link>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/78236873</link><guid>https://blog.youkuaiyun.com/chenlinfeng772885775/article/details/78236873</guid><author>chenlinfeng772885775</author><pubDate>Sat, 14 Oct 2017 21:05:19 +0800</pubDate><description><![CDATA[[Chinese ver]4. Median of Two Sorted Arrays这里有两个有序数组nums1和nums2，他们各自的大小为m和n. 
找到这两个数组的中间值，总的时间复杂度应该为O(log (m+n)).Example 1:
nums1 = [1, 3]
nums2 = [2]
 中间值是 2.0Example 2:
nums1 = [1, 2]
nums2 = [3, 4]]]></description><category></category></item></channel></rss>