<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Air723的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Air723</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Air723]]></copyright><item><title><![CDATA[程序员需要达到什么水平才能顺利拿到 20k 无压力？]]></title><link>https://blog.youkuaiyun.com/Air723/article/details/116015855</link><guid>https://blog.youkuaiyun.com/Air723/article/details/116015855</guid><author>Air723</author><pubDate>Thu, 22 Apr 2021 15:59:12 +0800</pubDate><description><![CDATA[2021 届本科，从我和身边同学拿到的offer来看，去一二线大厂的普遍能拿到30w以上，月薪20k上下，甚至有更高的。
说实话，现在技术岗（主要指后端（Java、C++、Go…）之类。
能做到以下几点，拿到一二线大厂offer 20K 上下的薪资非常容易：
算法题
技术面试笔试都考这个，所以Leetcode至少得刷两三百道吧，《剑指offer》所有题目过一遍，搞过ACM当然更好，不刷题的话，那只有挂等着你了，毕竟现在很卷，面试官也只能通过算法题来加大筛选。
在这里也送大家一本帮助我拿到BAT 等一线大厂 ]]></description><category></category></item><item><title><![CDATA[为什么很多程序员不用 switch，而是大量的 if...else if ...？]]></title><link>https://blog.youkuaiyun.com/Air723/article/details/115486853</link><guid>https://blog.youkuaiyun.com/Air723/article/details/115486853</guid><author>Air723</author><pubDate>Wed, 07 Apr 2021 15:28:02 +0800</pubDate><description><![CDATA[这是我从事十余年的程序员师傅在知乎上写的一篇高赞问答：为什么很多程序员不用 switch，而是大量的 if...else if ...？今天搬来给大家做一个分享，有想认识这位大佬的同学可以联系我，哈哈哈哈，是秃子总会发光的~]]></description><category></category></item><item><title><![CDATA[Java小白怎么学？2021年最强版Java工程师成神之路]]></title><link>https://blog.youkuaiyun.com/Air723/article/details/113727080</link><guid>https://blog.youkuaiyun.com/Air723/article/details/113727080</guid><author>Air723</author><pubDate>Sat, 06 Feb 2021 16:53:00 +0800</pubDate><description><![CDATA[这篇文章主要内容包括(干货满满)：学Java有哪些就业方向？数据结构和算法、设计模式、计算机基础、Java 入门、Java 高手进阶、基础框架（SSM）、微服务框架、常用中间件、数据库、分布式架构、必须掌握的工具软件、学习资源网站列表汇总、学习常见问题（FAQ）]]></description><category></category></item><item><title><![CDATA[干货推荐｜Java并发编程核心概念一览，面试必备]]></title><link>https://blog.youkuaiyun.com/Air723/article/details/108010736</link><guid>https://blog.youkuaiyun.com/Air723/article/details/108010736</guid><author>Air723</author><pubDate>Fri, 14 Aug 2020 20:14:26 +0800</pubDate><description><![CDATA[并行相关概念
同步和异步
同步和异步通常来形容一次方法的调用。同步方法一旦开始，调用者必须等到方法结束才能执行后续动作；异步方法则是在调用该方法后不必等到该方法执行完就能执行后面的代码，该方法会在另一个线程异步执行，异步方法总是伴随着回调，通过回调来获得异步方法的执行结果。
并发和并行
很多人都将并发与并行混淆在一起，它们虽然都可以表示两个或者多个任务一起执行，但执行过程上是有区别的。并发是多个任务交替执行，多任务之间还是串行的；而并行是多个任务同时执行，和并发有本质区别。
对计算机而言，如果系统内只有一个]]></description><category></category></item><item><title><![CDATA[Java 新特性前瞻：封印类]]></title><link>https://blog.youkuaiyun.com/Air723/article/details/107985494</link><guid>https://blog.youkuaiyun.com/Air723/article/details/107985494</guid><author>Air723</author><pubDate>Thu, 13 Aug 2020 19:16:16 +0800</pubDate><description><![CDATA[本文要点：
1、即将于 2020 年 9 月发布的 Java SE 15 将引入“封印类（sealed class）”（JEP 360），并将其作为预览特性。
2、封印类是一种类或接口，对哪些类或接口可以扩展它们进行了限制。
3、封印类就像枚举一样，可以捕获领域模型中的可选项，让程序员和编译器可以控制枚举。
4、通过解耦可访问性和可扩展性，封印类有助于创建安全的继承结构，让程序库开发人员既可以公开接口，又能够控制所有的实现。
5、封印类与记录类和模式匹配一起，为以数据为中心的编程模式提供支持。
Java S]]></description><category></category></item><item><title><![CDATA[java线程基础知识整理]]></title><link>https://blog.youkuaiyun.com/Air723/article/details/107647042</link><guid>https://blog.youkuaiyun.com/Air723/article/details/107647042</guid><author>Air723</author><pubDate>Tue, 28 Jul 2020 22:30:01 +0800</pubDate><description><![CDATA[原文链接：https://blog.youkuaiyun.com/weixin_42032770/article/details/107536554?utm_medium=distribute.pc_category.none-task-blog-hot-3.nonecase&amp;depth_1-utm_source=distribute.pc_category.none-task-blog-hot-3.nonecase&amp;request_id=#4.1%E3%80%81%E5%B8%B8%E8%A7%81%]]></description><category></category></item><item><title><![CDATA[Android自定义ViewGroup（ 支持layout_margin属性）]]></title><link>https://blog.youkuaiyun.com/Air723/article/details/107611818</link><guid>https://blog.youkuaiyun.com/Air723/article/details/107611818</guid><author>Air723</author><pubDate>Mon, 27 Jul 2020 14:57:41 +0800</pubDate><description><![CDATA[原文链接：https://blog.youkuaiyun.com/ldld1717/article/details/80458917
3. 支持layout_margin属性
如果我们自定义的布局参数类继承自MarginLayoutParams，就自动支持了layout_margin属性了，我们需要做的就是直接在布局文件中使用layout_margin属性，然后再onMeasure和onLayout中使用margin属性值测量和摆放子控件。需要注意的是我们测量子控件的时候应该调用measureChildWithMarg]]></description><category></category></item><item><title><![CDATA[Android自定义ViewGroup（自定义LayoutParams）]]></title><link>https://blog.youkuaiyun.com/Air723/article/details/107582164</link><guid>https://blog.youkuaiyun.com/Air723/article/details/107582164</guid><author>Air723</author><pubDate>Sat, 25 Jul 2020 17:47:33 +0800</pubDate><description><![CDATA[原文链接：https://blog.youkuaiyun.com/ldld1717/article/details/80458917
2. 自定义LayoutParams
回想一下我们平时使用RelativeLayout的时候，在布局文件中使用android:layout_alignParentRight=“true”、android:layout_centerInParent="true"等各种属性，就能控制子控件显示在父控件的上下左右、居中等效果。
　　在View中有一个mLayoutParams的变量用来保存这个]]></description><category></category></item><item><title><![CDATA[Android自定义ViewGroup（简单实现水平排列效果）]]></title><link>https://blog.youkuaiyun.com/Air723/article/details/107563371</link><guid>https://blog.youkuaiyun.com/Air723/article/details/107563371</guid><author>Air723</author><pubDate>Fri, 24 Jul 2020 16:05:44 +0800</pubDate><description><![CDATA[原文链接：https://blog.youkuaiyun.com/ldld1717/article/details/80458917
1. 简单实现水平排列效果
我们先自定义一个ViewGroup作为布局容器，实现一个从左往右水平排列（排满换行）的效果：
/**
 * 自定义布局管理器的示例。
 */
public class CustomLayout extends ViewGroup {
      private static final String TAG = "CustomLayout";
 
    pu]]></description><category></category></item><item><title><![CDATA[源码分析篇 - Android绘制流程窗口启动流程分析]]></title><link>https://blog.youkuaiyun.com/Air723/article/details/107498717</link><guid>https://blog.youkuaiyun.com/Air723/article/details/107498717</guid><author>Air723</author><pubDate>Tue, 21 Jul 2020 21:03:26 +0800</pubDate><description><![CDATA[原文转载：https://www.cnblogs.com/tiger-wang-ms/p/6517048.html
源码分析篇 - Android绘制流程（一）窗口启动流程分析
Activity、View、Window之间的关系可以用以下的简要UML关系图表示，在这里贴出来，比较能够帮组后面流程分析部分的阅读。

一、Activity的启动流程
在startActivity()后，经过一些逻辑流程会通知到ActivityManagerService（后面以AMS简称），AMS接收到启动acitivty的请求]]></description><category></category></item><item><title><![CDATA[Android ART]]></title><link>https://blog.youkuaiyun.com/Air723/article/details/107473137</link><guid>https://blog.youkuaiyun.com/Air723/article/details/107473137</guid><author>Air723</author><pubDate>Mon, 20 Jul 2020 21:00:46 +0800</pubDate><description><![CDATA[转载：https://www.jianshu.com/p/bdb6c29aca83
在了解 Android 运行时之前，我们需要了解什么是运行时环境以及一些基本概念，即 Java 虚拟机（JVM）和 Dalvik 虚拟机（DVM）的功能。
什么是运行时？
简单来说，运行时就是一个供操作系统使用的系统，它负责将你用高级语言（比如 Java）编写的代码转换成 CPU/处理器能够理解的机器码。
运行时由你的程序运行时所执行的指令构成，尽管本质上它们不属于程序代码的任何一部分。
CPU （或者更通用的说法电脑）只能]]></description><category></category></item><item><title><![CDATA[区块链的java实现]]></title><link>https://blog.youkuaiyun.com/Air723/article/details/107429190</link><guid>https://blog.youkuaiyun.com/Air723/article/details/107429190</guid><author>Air723</author><pubDate>Sat, 18 Jul 2020 15:04:52 +0800</pubDate><description><![CDATA[原文地址：http://java-lang-programming.com/en/articles/29

概述
MerkleTree被广泛的应用在比特币技术中，本文旨在通过代码实现一个简单的MerkleTree，并计算出Merkle tree的 TreeRoot。
Merkle Tree 是一种数据结构，用于验证在计算机之间和之间存储，处理和传输的任何类型的数据。
目前，Merkle树的主要用途是确保从对等网络中接收的数据块未受损和未改变，和检查其他对等网络没有撒谎发送假数据块。
Merkle Tree应]]></description><category></category></item><item><title><![CDATA[Android插件化技术入门]]></title><link>https://blog.youkuaiyun.com/Air723/article/details/107417958</link><guid>https://blog.youkuaiyun.com/Air723/article/details/107417958</guid><author>Air723</author><pubDate>Fri, 17 Jul 2020 21:21:00 +0800</pubDate><description><![CDATA[原文链接：https://www.jianshu.com/p/b6d0586aab9f
插件化概述
提到插件化，就不得不提起方法数超过65535的问题，我们可以通过Dex分包来解决，同时也可以通过使用插件化开发来解决。插件化的概念就是由宿主APP去加载以及运行插件APP。
下面是一些插件化的优势：
在一个大的项目里面，为了明确的分工，往往不同的团队负责不同的插件APP，这样分工更加明确。
各个模块封装成不同的插件APK，不同模块可以单独编译，提高了开发效率。
解决了上述的方法数超过限制的问题。
可以通过上线]]></description><category></category></item><item><title><![CDATA[iOS中集成ijkplayer视频直播框架]]></title><link>https://blog.youkuaiyun.com/Air723/article/details/107395096</link><guid>https://blog.youkuaiyun.com/Air723/article/details/107395096</guid><author>Air723</author><pubDate>Thu, 16 Jul 2020 22:16:36 +0800</pubDate><description><![CDATA[原文链接：https://www.jianshu.com/p/1f06b27b3ac0
ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明, 但是个人觉得还是不够详细, 在这里详细的讲一下在 iOS 中如何集成ijkplayer, 即便以前从没有接触过, 按着下面做也可以集成成功!
一. 下载ijkplayer
ijkplayer下载地址:https://github.com/Bilibili/ijkplayer
下载完成后解压, 解压]]></description><category></category></item><item><title><![CDATA[Android附近：如何集成Android和Android的东西]]></title><link>https://blog.youkuaiyun.com/Air723/article/details/107370932</link><guid>https://blog.youkuaiyun.com/Air723/article/details/107370932</guid><author>Air723</author><pubDate>Wed, 15 Jul 2020 21:52:41 +0800</pubDate><description><![CDATA[原文链接：https://www.jianshu.com/p/37c86d5a9093
本文将探讨如何使用Android Nearby，展示如何集成Android和Android Things。我们可以使用几种策略来集成Android和Android Things。Android Nearby技术就是其中之一。Android提供了一组API，可以简化两个不同设备之间的数据交换。一个有趣的方面是Android Nearby也支持iOS操作系统。
• Android Nearby是一项支持三种不同策略来集成An]]></description><category></category></item><item><title><![CDATA[Android 夜间模式的三种实现]]></title><link>https://blog.youkuaiyun.com/Air723/article/details/107348155</link><guid>https://blog.youkuaiyun.com/Air723/article/details/107348155</guid><author>Air723</author><pubDate>Tue, 14 Jul 2020 21:37:16 +0800</pubDate><description><![CDATA[原文链接：https://juejin.im/post/5f07d6bff265da22a8515691
实现夜间模式有很多种方式，经过多次尝试，算是找到了一种性价比较高的方式。
主题方式
这是最正统的方式，但工作量巨大，因为要全局替换 xml 布局中所有硬编码的色值，将其换成主题色。然后通过换主题达到换肤的效果。
窗口方式
是不是可以在所有界面上罩一个半透明的窗口，就好像戴墨镜看屏幕一样。虽然这是换肤方案的“退而求其次”，但也是能达到不刺眼的效果:
open class BaseActivity : Ap]]></description><category></category></item></channel></rss>