<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[AndroidYingZi的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/AndroidYingZi</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; AndroidYingZi]]></copyright><item><title><![CDATA[Android混淆从入门到精通]]></title><link>https://blog.youkuaiyun.com/AndroidYingZi/article/details/121019063</link><guid>https://blog.youkuaiyun.com/AndroidYingZi/article/details/121019063</guid><author>AndroidYingZi</author><pubDate>Thu, 28 Oct 2021 17:21:42 +0800</pubDate><description><![CDATA[简介
作为Android开发者，如果你不想开源你的应用，那么在应用发布前，就需要对代码进行混淆处理，从而让我们代码即使被反编译，也难以阅读。混淆概念虽然容易，但很多初学者也只是网上搜一些成型的混淆规则粘贴进自己项目，并没有对混淆有个深入的理解。本篇文章的目的就是让一个初学者在看完后，能在不进行任何帮助的情况下，独立写出适合自己代码的混淆规则。
说在前面
这里我们直接用Android Studio来说明如何进行混淆，Android Studio自身集成Java语言的ProGuard作为压缩，优化和混淆工具，配]]></description><category></category></item><item><title><![CDATA[从零开始分析lnstantrun源码]]></title><link>https://blog.youkuaiyun.com/AndroidYingZi/article/details/121014178</link><guid>https://blog.youkuaiyun.com/AndroidYingZi/article/details/121014178</guid><author>AndroidYingZi</author><pubDate>Thu, 28 Oct 2021 14:52:02 +0800</pubDate><description><![CDATA[背景
Android Studio 2.0 中引入的 Instant Run 是 Run 和 Debug 命令的行为，可以大幅缩短应用更新的时间。尽管首次构建可能需要花费较长的时间，Instant Run 在向应用推送后续更新时则无需构建新的 APK，因此，这样可以更快地看到更改，曾经是Android开发人员的开发的利器，现在已被废弃，用Apply changes替代。但我们仍然可以学习它的源码，提升自己的开发技术。
使用
instant-run加载更新有三种方式hot swap，cold swap,war]]></description><category></category></item><item><title><![CDATA[hook入门篇]]></title><link>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120940611</link><guid>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120940611</guid><author>AndroidYingZi</author><pubDate>Sun, 24 Oct 2021 20:55:27 +0800</pubDate><description><![CDATA[#引子

Hook技术在android开发领域算是一项黑科技，那么一个新的概念进入视线，我们最关心的3个问题就是，它是什么，有什么用，怎么用
本系列将由浅入深 手把手讲解这三大问题
本文是第一篇，入门篇

#正文大纲

#####一.  hook的定义
#####二.  实用价值
#####三.  前置技能
#####四.  Hook通用思路
#####五.  案例实战
#####六.  效果展示


#Demo地址
https://github.com/18598925736/OnClickListene]]></description><category></category></item><item><title><![CDATA[简单概述Serverless]]></title><link>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120926519</link><guid>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120926519</guid><author>AndroidYingZi</author><pubDate>Sat, 23 Oct 2021 21:19:55 +0800</pubDate><description><![CDATA[Serverless是计算的趋势，它使诸如Web应用程序之类的代码执行与维护服务器以运行该代码的需求脱钩。 创建，供应和维护服务器上运行的应用程序的操作开销（传统意义上）非常重要。 减少或消除这项工作可以帮助组织管理成本并为员工腾出时间。 Serverless还提供了创新的计费模型和更容易的可扩展性。
在《Serverless是什么？》中，作者Mike Roberts和John Chapin指出了使Serverless变得独一无二的核心见解：
使用完全Serverless的应用程序，您不再需要将架构的任何部]]></description><category></category></item><item><title><![CDATA[简单概述Serverless]]></title><link>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120886089</link><guid>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120886089</guid><author>AndroidYingZi</author><pubDate>Thu, 21 Oct 2021 14:33:16 +0800</pubDate><description><![CDATA[Serverless是计算的趋势，它使诸如Web应用程序之类的代码执行与维护服务器以运行该代码的需求脱钩。 创建，供应和维护服务器上运行的应用程序的操作开销（传统意义上）非常重要。 减少或消除这项工作可以帮助组织管理成本并为员工腾出时间。 Serverless还提供了创新的计费模型和更容易的可扩展性。
在《Serverless是什么？》中，作者Mike Roberts和John Chapin指出了使Serverless变得独一无二的核心见解：
使用完全Serverless的应用程序，您不再需要将架构的任何部]]></description><category></category></item><item><title><![CDATA[初始synchronized关键字的偏向锁、轻量锁、重量锁]]></title><link>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120865867</link><guid>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120865867</guid><author>AndroidYingZi</author><pubDate>Wed, 20 Oct 2021 14:39:37 +0800</pubDate><description><![CDATA[背景
作为一名Java程序员，synchronized关键字在我们的日常编码中肯定是不可或缺的，可是我们在用synchronized的时候真的明白它做了什么吗？
我们可能听到过synchronized性能差，应该用ReentrantLock之类balabala的话，这句话在jdk1.6版本之前是没有错的，因为synchronized关键字在jdk1.6之前只有一种加锁方式——重量锁，重量锁内部在进行系统调用时会使线程由用户态变为内核态，结束系统调用后又会由内核态变回用户态，这两种状态间切换是影响性能的，所以]]></description><category></category></item><item><title><![CDATA[从零开始分析lnstantRun源码]]></title><link>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120854925</link><guid>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120854925</guid><author>AndroidYingZi</author><pubDate>Tue, 19 Oct 2021 21:17:34 +0800</pubDate><description><![CDATA[背景
Android Studio 2.0 中引入的 Instant Run 是 Run 和 Debug 命令的行为，可以大幅缩短应用更新的时间。尽管首次构建可能需要花费较长的时间，Instant Run 在向应用推送后续更新时则无需构建新的 APK，因此，这样可以更快地看到更改，曾经是Android开发人员的开发的利器，现在已被废弃，用Apply changes替代。但我们仍然可以学习它的源码，提升自己的开发技术。
使用
instant-run加载更新有三种方式hot swap，cold swap,war]]></description><category></category></item><item><title><![CDATA[Activity的启动模式，你了解多少]]></title><link>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120845098</link><guid>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120845098</guid><author>AndroidYingZi</author><pubDate>Tue, 19 Oct 2021 14:06:29 +0800</pubDate><description><![CDATA[题目：Activity的启动模式，区别
这道题想考察什么？

启动模式是什么？
启动模式如何设置？
Activity的启动模式区别？
应用场景以及那些注意的点？

考察的知识点

启动任务，返回栈，启动模式的概念
启动模式设置方法以及区别
亲和性，多个任务
启动模式应用场景以及那些坑

考生应该如何回答


我们可以先讲一下从应用启动涉及到的activity堆栈流程以及四种启动模式概念
一个应用由多个Activity构成，多个Activity构成了任务，系统以栈方式进行管理任务（也就是管理多个Activit]]></description><category></category></item><item><title><![CDATA[Activity的启动模式]]></title><link>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120830355</link><guid>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120830355</guid><author>AndroidYingZi</author><pubDate>Mon, 18 Oct 2021 17:14:43 +0800</pubDate><description><![CDATA[题目：Activity的启动模式，区别
这道题想考察什么？

启动模式是什么？
启动模式如何设置？
Activity的启动模式区别？
应用场景以及那些注意的点？

考察的知识点

启动任务，返回栈，启动模式的概念
启动模式设置方法以及区别
亲和性，多个任务
启动模式应用场景以及那些坑

考生应该如何回答


我们可以先讲一下从应用启动涉及到的activity堆栈流程以及四种启动模式概念
一个应用由多个Activity构成，多个Activity构成了任务，系统以栈方式进行管理任务（也就是管理多个Activit]]></description><category></category></item><item><title><![CDATA[谈谈架构中的限流与计数器的实现方式]]></title><link>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120820060</link><guid>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120820060</guid><author>AndroidYingZi</author><pubDate>Mon, 18 Oct 2021 09:19:06 +0800</pubDate><description><![CDATA[1. 先谈谈Nginx分流
对，要考虑限流先得假设访问量达到了一定得程度，再高并发得前提下，请求过多很有可能导致某天服务器承受不了导致死机。
在这个前提下，我相信你最先想到的一定是nginx，使用nginx分流让所有的请求不要直接到达某一个服务器，当并发量继续上升的时候，我提供更多的服务器视乎就能解决问题了，这想法看上去很对，而且很多行业就是这么做的，比如下面的nginx配置文件，很简单，我相信你一看就能懂
#user  nobody;

worker_processes  1;

events {
   ]]></description><category></category></item><item><title><![CDATA[Android 热修复核心原理，ClassLoader类加载]]></title><link>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120783439</link><guid>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120783439</guid><author>AndroidYingZi</author><pubDate>Fri, 15 Oct 2021 14:57:41 +0800</pubDate><description><![CDATA[[TOC]Android前沿技术探讨：ClassLoader在热修复中的应用
​	又在写bug？这句话虽然是句玩笑话，但是也正因为我们是人不是神，但也不能面面俱到，什么都考虑完美，出现bug是不可避免的。那么对于android我们出现了Bug怎么办？
​	早期遇到Bug我们一般会紧急发布了一个版本。然而这个Bug可能就是简简单单的一行代码，为了这一行代码，进行全量或者增量更新迭代一个版本，未免有点大材小用了。而且新版本的普及需要时间，而且如果这次的新版本又有个小问题，怎么办？
​	那么为了解决这一个问题，热]]></description><category></category></item><item><title><![CDATA[IO框架学习]]></title><link>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120765274</link><guid>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120765274</guid><author>AndroidYingZi</author><pubDate>Thu, 14 Oct 2021 15:31:37 +0800</pubDate><description><![CDATA[Java IO的学习是一件非常艰巨的任务。

它的挑战是来自于要覆盖所有的可能性。不仅存在各种I/O源端还有想要和他通信的接收端（文件/控制台/网络链接），而且还需要以不同的方式与他们进行通信（顺序/随机存取/缓冲/二进制/字符/行/字 等等）这些情况综合起来就给我们带来了大量的学习任务，大量的类需要学习。
我们要学会所有的这些java 的IO是很难的，因为我们没有构建一个关于IO的体系，要构建这个体系又需要深入理解IO库的演进过程，所以，我们如果缺乏历史的眼光，很快我们会对什么时候应该使用IO中的哪些类.]]></description><category></category></item><item><title><![CDATA[apk瘦身之旅，你了解多少]]></title><link>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120742691</link><guid>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120742691</guid><author>AndroidYingZi</author><pubDate>Wed, 13 Oct 2021 14:33:29 +0800</pubDate><description><![CDATA[我们完成一个app后，都需要生成一个apk，然后上线，而apk的大小也一定程度的影响了用户是否愿意下载你的这个app，所以也就有了apk瘦身这门艺术。
目录

apk的结构
图片压缩

导入矢量图
适配问题
Tint 着色器


动态库移除

so库的相关知识点
ABI


结束语

apk的结构
既然要对一个apk瘦身，首先我们就得知道apk格式的文件内容。实际上一个apk文件就是一个zip包，我们只需要将后缀改为zip，然后进行解压就可以看到里面的内容了。下面我们来看下它里面的文件以及作用：
apk包含]]></description><category></category></item><item><title><![CDATA[对于Handler是怎么进行线程通信，它的原理又是什么，你了解多少？]]></title><link>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120725564</link><guid>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120725564</guid><author>AndroidYingZi</author><pubDate>Tue, 12 Oct 2021 16:24:53 +0800</pubDate><description><![CDATA[题目：Handler怎么进行线程通信，原理是什么？
首先我们要知道这道题想考察什么？

是否熟悉Handler的基本用法
是否熟悉Handler消息机制的运行流程
是否明白Handler进行线程通信的原理

考察的知识点

利用Handler进行线程切换的基本流程
Handler消息机制涉及到的类以及之间的关系
Handler是怎样做到线程通信的

考生应该如何回答


先说一下Handler机制的运行流程，以及涉及到的类之间的关系
Handler消息机制主要涉及到四个类：Handler、Looper、Me]]></description><category></category></item><item><title><![CDATA[前端性能优化的常用手段]]></title><link>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120706192</link><guid>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120706192</guid><author>AndroidYingZi</author><pubDate>Mon, 11 Oct 2021 16:30:56 +0800</pubDate><description><![CDATA[反正，前端性能优化就是很重要，不好好学习怎么进阶到20K+的薪水啊？！
性能优化方面一直有所关注，但如果不去对自己所负责的项目进行一下回锅，实践实践，优化优化，总会有点“书上得来终觉浅”的感觉吧！
从最开始的CSS放到&lt;head&gt;里面、js放到&lt;/body&gt;前面、使用雪碧图等，到后面的静态资源压缩、合并以及使用iconfont代替小图标，再到最近实践的gzip压缩、设置HTTP Header缓存字段…
gzip压缩、设置ETag等，早就在《高性能网站建设指南》那两本书中看过，但我一直]]></description><category></category></item><item><title><![CDATA[字节跳动面试官：让所有Android面试者头皮发麻的问题，你知道几个？]]></title><link>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120679026</link><guid>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120679026</guid><author>AndroidYingZi</author><pubDate>Sat, 09 Oct 2021 21:23:56 +0800</pubDate><description><![CDATA[太难了
网页中输入url，到渲染整个界面的整个过程，以及中间用了什么协议？
1）过程分析：主要分为三步

DNS解析。用户输入url后，需要通过DNS解析找到域名对应的ip地址，有了ip地址才能找到服务器端。首先会查找浏览器缓存，是否有对应的dns记录。再继续按照操作系统缓存—路由缓存—isp的dns服务器—根服务器的顺序进行DNS解析，直到找到对应的ip地址。
客户端（浏览器）和服务器交互。浏览器根据解析到的ip地址和端口号发起HTTP请求，请求到达传输层，这里也就是TCP层，开始三次握手建立连接。服务器]]></description><category></category></item><item><title><![CDATA[真香警告！Alibaba珍藏版Android框架体系架构手写文档，刷起来]]></title><link>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120678702</link><guid>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120678702</guid><author>AndroidYingZi</author><pubDate>Sat, 09 Oct 2021 20:38:40 +0800</pubDate><description><![CDATA[谈起Android框架体系架构，我先提个问：什么是Android框架体系架构 ？
Android系统构架是安卓系统的体系结构，android的系统架构和其操作系统一样，采用了分层的架构，共分为四层，从高到低分别是Android应用层，Android应用框架层，Android系统运行库层和Linux内核层。
Android系统构架主要应用于ARM平台，但不仅限于ARM，通过编译控制，在X86、MAC等体系结构的机器上同样可以运行。
而今天咱要聊的就是Alibaba珍藏版 Android框架体系架构 手写文档，]]></description><category></category></item><item><title><![CDATA[为什么越来越多的程序员感觉工作没有动力、职业发展没有希望，迷茫和中年危机等现象普遍发生？]]></title><link>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120642286</link><guid>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120642286</guid><author>AndroidYingZi</author><pubDate>Thu, 07 Oct 2021 21:51:18 +0800</pubDate><description><![CDATA[热度还蛮高
歧视？
现在，确实有很多“专业”程序员歧视非科班出身的程序员。其中主要原因是，非科班出身的程序员缺少某些必要的课程和训练，因而会在团队合作时产生一些困扰。
既然知道这个原因，那么“非科班”的，只要补足这些课程和训练就好。
比起科班生非科班缺哪些？
很多人认为“程序员就是学一门编程语言”，其实这是远远不够的。参考了几所知名大学的计算机本科课程，以及我的个人经验，归纳如下：
1.高等数学： 重点在矩阵、离散数学、逻辑学、统计学以及微积分；
2.编程语言： 2或3门编程语言的基础，常见的包括C++和J]]></description><category></category></item><item><title><![CDATA[收集几十位大厂面试者的面试题及见解-Redis模块]]></title><link>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120528467</link><guid>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120528467</guid><author>AndroidYingZi</author><pubDate>Tue, 28 Sep 2021 14:54:08 +0800</pubDate><description><![CDATA[一 Redis基本数据类型
1.1 Redis中数据类型有哪些？底层实现是什么？不同的数据类型运用到什么场景？
String、hash、list、set、sorted_set/zset
hash 底层是hash表实现的数据存储。
list 能存储多个数据，按照插入顺序排序，底层使用双向链表实现。
set 和hash存储结构完全相同，仅存储键值，不存储value。且键值不允许重复。存储大量数据，且快速查询。
zset 是字典（dict） + 跳表（skiplist），数据比较少的时候用ziplist编码结构存]]></description><category></category></item><item><title><![CDATA[收集几十位大厂面试者的面试题及见解-Netty模块]]></title><link>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120516993</link><guid>https://blog.youkuaiyun.com/AndroidYingZi/article/details/120516993</guid><author>AndroidYingZi</author><pubDate>Mon, 27 Sep 2021 22:15:03 +0800</pubDate><description><![CDATA[HTTPS和HTTP是什么关系？HTTPS加密流程是什么？Websocket项目中如何集成SSL?阿里云如何进行HTTPS开发。
一 HTTP和HTTPS概述
1.1 HTTP协议


概述
HTTP的第一个版本只能传输超文本标记语言(HTML)文件，因此被称为超文本传输协议。


特征


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fdcCBwup-1632746705151)(//upload-images.jianshu.io/upload_images/25117]]></description><category></category></item></channel></rss>