<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Java364102的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Java364102</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Java364102]]></copyright><item><title><![CDATA[程序员怎么样可以快速成为高薪架构师？]]></title><link>https://blog.youkuaiyun.com/Java364102/article/details/124868293</link><guid>https://blog.youkuaiyun.com/Java364102/article/details/124868293</guid><author>Java364102</author><pubDate>Thu, 19 May 2022 17:52:17 +0800</pubDate><description><![CDATA[架构师是一个光芒四射又充满挑战的职业，是许多程序员梦寐以求的职业梦想。Java架构师不仅拥有令人羡慕技术能力，还有让人望尘莫及的薪酬待遇，在普通Java程序员眼里，Java架构师如神一般的存在，其实每个架构师都是从普通程序员一步一步成长起来的，只要肯下功夫，每个程序员都有机会成为架构师。
 程序员晋升架构师，一般分为这四个阶段

初级Java程序员的重心在编写代码、运用框架
中级Java程序员重心在编写代码和框架
高级Java程序员技术攻关、性能调优-
架构师 解决业务和技术问题
如果自己本身的努力，各方面]]></description><category></category></item><item><title><![CDATA[2021年国内一线互联网大厂内部题库Android面试(Java篇)]]></title><link>https://blog.youkuaiyun.com/Java364102/article/details/124524540</link><guid>https://blog.youkuaiyun.com/Java364102/article/details/124524540</guid><author>Java364102</author><pubDate>Sun, 01 May 2022 11:24:00 +0800</pubDate><description><![CDATA[9.进程和线程的区别（猎豹）
简而言之,一个程序至少有一个进程,一个进程至少有一个线程。
线程的划分尺度小于进程，使得多线程程序的并发性高。
另外，进程在执行过程中拥有独立的内存单元，而多个线程共享内存，从而极大地提高了程序的运行效率。
线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行，必须依存在应用程序中，由应用程序提供多个线程执行控制。
从逻辑角度来看，多线程的意义在于一个应用程序中，有多个执行部分可以同时执行。但操作系统并没有将多]]></description><category></category></item><item><title><![CDATA[2020荒诞的一年，35岁程序员现状：我现在房贷车贷家庭]]></title><link>https://blog.youkuaiyun.com/Java364102/article/details/124524517</link><guid>https://blog.youkuaiyun.com/Java364102/article/details/124524517</guid><author>Java364102</author><pubDate>Sun, 01 May 2022 11:22:13 +0800</pubDate><description><![CDATA[为什么造成这一现状？如何解决！
第一、老员工工资比较高
why？
其实在职场中，工作并不是领导不愿意提拔老员工，而是因为老员工的工资确实高得离谱，这是公司领导难以承受的，所以在提拔员工时，有些领导他们甚至会注重那些新员工，并不愿意去看重老员工的能力，毕竟老员工的收入就占了公司用工成本的很大一部分，有些公司老板会隔三差五的劝退老员工，让老员工在职场中没有办法有更稳定的工作状态。
solve
很多人陷入了一个误区，价值和价钱这个是2个概念，你要努 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题]]></description><category></category></item><item><title><![CDATA[2020年Android高级面试题总结（附答案解析）]]></title><link>https://blog.youkuaiyun.com/Java364102/article/details/124510857</link><guid>https://blog.youkuaiyun.com/Java364102/article/details/124510857</guid><author>Java364102</author><pubDate>Sat, 30 Apr 2022 12:04:00 +0800</pubDate><description><![CDATA[答：方法名+参数类型+参数顺序(返回值不是)
2.finalize的工作原理
答：一旦垃圾收集器准备好释放对象占用的存储空间，它首先调用finalize()，而且只有在下一次垃圾收集过程中，才会真正回收对象的内存.所以如果使用finalize()，就可以在垃圾收集期间进行一些重要的清除或清扫工作。此外系统进行垃圾回收时并不保证一定会调用它，所以可以说它和对象被回收没有必然关系。
3.一个对象的创建过程
答:例如有一个Dog类：
1.即使没有static，构造器其实也是静态方法，所以当首次创建Dog时或者D]]></description><category></category></item><item><title><![CDATA[android 获取通讯录并显示listview]]></title><link>https://blog.youkuaiyun.com/Java364102/article/details/124494098</link><guid>https://blog.youkuaiyun.com/Java364102/article/details/124494098</guid><author>Java364102</author><pubDate>Fri, 29 Apr 2022 13:37:07 +0800</pubDate><description><![CDATA[import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import]]></description><category></category></item><item><title><![CDATA[Android 网络性能优化（2）DNS优化]]></title><link>https://blog.youkuaiyun.com/Java364102/article/details/124494058</link><guid>https://blog.youkuaiyun.com/Java364102/article/details/124494058</guid><author>Java364102</author><pubDate>Fri, 29 Apr 2022 13:34:38 +0800</pubDate><description><![CDATA[客户端输入一个网址即域名，到本地DNS服务器


本地服务器DNS查找域名缓存，如果命中对应的ip地址，则返回该ip，如果没有命中，则发请求给根域名服务器请求解析


根域名解析好后，返回 顶级域名服务器的地址


本地DNS 向顶级域名服务器发送请求。


顶级域名查看缓存，有没有对应ip，如果有直接返回，如果没有，则解析该域名，查找到目标 权威域名服务器的地址


本地DNS 向 权威域名服务器发送请求


权威域名服务器在数据库中查表，返回对应的ip地址


本地DNS服务器 把 ip地址 返回给..]]></description><category></category></item><item><title><![CDATA[Android 来去电监听，电话挂断]]></title><link>https://blog.youkuaiyun.com/Java364102/article/details/124494027</link><guid>https://blog.youkuaiyun.com/Java364102/article/details/124494027</guid><author>Java364102</author><pubDate>Fri, 29 Apr 2022 13:32:43 +0800</pubDate><description><![CDATA[android:enabled=“true”
android:process=“:PhoneListenService”&gt;





public class PhoneStateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CAL]]></description><category></category></item><item><title><![CDATA[Android 广播机制 详解]]></title><link>https://blog.youkuaiyun.com/Java364102/article/details/124493976</link><guid>https://blog.youkuaiyun.com/Java364102/article/details/124493976</guid><author>Java364102</author><pubDate>Fri, 29 Apr 2022 13:29:34 +0800</pubDate><description><![CDATA[从现实生活中理解广播机制
一听到广播我们第一感觉就会联想到小时候村里面的广播，每逢村里有什么活动都是通过广播发送的。收听收音机也是一种广播，在收音机中有很多个广播电台，每个广播电台播放的内容都不相同。接受广播时广播（发送方）并不在意我们（接收方）接收到广播时如何处理。好比我们收听交通电台的广播，电台中告诉我们现在在交通状况如何，但它并不关心我们接收到广播时做如何做出处理，这不是广播应该关心的问题，OK，到这里我们从生活中的一些小例子浅浅的理解了一下广播，那么Android 中的广播是如何操作的呢？
Andr]]></description><category></category></item><item><title><![CDATA[Android “退一步”的布局加载优化]]></title><link>https://blog.youkuaiyun.com/Java364102/article/details/124493948</link><guid>https://blog.youkuaiyun.com/Java364102/article/details/124493948</guid><author>Java364102</author><pubDate>Fri, 29 Apr 2022 13:27:56 +0800</pubDate><description><![CDATA[注意里面有个merger.xml，其中就包含了整个项目所有资源合并后的内容。
我们打开看一眼：
重点关注里面的type=layout的相关标签。
&lt;file name=“activity_main1”
path=“/Users/zhanghongyang/work/TestViewOpt/app/src/main/res/layout/activity_main1.xml”
qualifiers=“” type=“layout” /&gt;
可以看到包含了我们layout文件的路劲，那么我们只要解析这]]></description><category></category></item><item><title><![CDATA[Android —— 自定义View中]]></title><link>https://blog.youkuaiyun.com/Java364102/article/details/124493907</link><guid>https://blog.youkuaiyun.com/Java364102/article/details/124493907</guid><author>Java364102</author><pubDate>Fri, 29 Apr 2022 13:25:38 +0800</pubDate><description><![CDATA[View通过measure来确定大小 measure的作用就是决定View到底有多大。在整个View树种是由View和ViewGroup组成。而measure也分为着两种绘制方式。View的measure只测试自身大小。ViewGroup除了测量自身大小，还负责测量子View的大小。
[](()MeasureSpec的作用
MeasureSpec封装了View的规格尺寸参数，包括View的宽高以及测量模式。
它的高2位代表测量模式（通过mode &amp; MODE_MASK计算），低30位代表尺寸。其中测]]></description><category></category></item><item><title><![CDATA[Android Wear开发步骤]]></title><link>https://blog.youkuaiyun.com/Java364102/article/details/124493881</link><guid>https://blog.youkuaiyun.com/Java364102/article/details/124493881</guid><author>Java364102</author><pubDate>Fri, 29 Apr 2022 13:24:02 +0800</pubDate><description><![CDATA[创建Android Wear 项目，运行

下载Android Wear SDK
下载穿戴设备SDK需要使用SDK&nbsp;Manager来进行下载，打开Android&nbsp;Studio后，点击工具栏上的&nbsp;图标，打开SDK&nbsp;Manager。勾选需要下载的包，点击下载即可。SDK更新建议使用这种[方法更新](()或者直接百度 “SDK更新”，下载速度很快。

注意：如果后期SDK推出更高版本，建议下载最高版的前一个版本。既保证了使用新技术又可以避免最新版本带来的问题
创建设备模拟.]]></description><category></category></item><item><title><![CDATA[Android Studio编译错误：Error while generating the main dex list]]></title><link>https://blog.youkuaiyun.com/Java364102/article/details/124493848</link><guid>https://blog.youkuaiyun.com/Java364102/article/details/124493848</guid><author>Java364102</author><pubDate>Fri, 29 Apr 2022 13:22:27 +0800</pubDate><description><![CDATA[这个是开了multidex的，如果你没开multidex, 可能不是这个错误，但是也是一个dex error的错误，出现这个错误的根本原因一般是项目中出现了重复的java类导致冲突。
所谓的“项目中出现了重复的java类”一般包括下面几种情况：


libs下的jar包或者aar包跟build.gradle中添加的远程依赖包重复，例如：libs下面放了一个gson.jar, 而build.gradle中又添加了implementation "com.google.code.gson:gson:2.8.2"，]]></description><category></category></item><item><title><![CDATA[Android Studio—PullToRefresh 框架]]></title><link>https://blog.youkuaiyun.com/Java364102/article/details/124493820</link><guid>https://blog.youkuaiyun.com/Java364102/article/details/124493820</guid><author>Java364102</author><pubDate>Fri, 29 Apr 2022 13:20:39 +0800</pubDate><description><![CDATA[之后到layout中改变刷新布局

[](()3 使用
==============================================================
插入PullToRefreshListView
&lt;RelativeLayout xmlns:android=“http://schemas.android.com/apk/res/android”
xmlns:tools=“http://schemas.android.co...]]></description><category></category></item><item><title><![CDATA[Android 程序员的技术栈大全]]></title><link>https://blog.youkuaiyun.com/Java364102/article/details/124470777</link><guid>https://blog.youkuaiyun.com/Java364102/article/details/124470777</guid><author>Java364102</author><pubDate>Thu, 28 Apr 2022 11:59:18 +0800</pubDate><description><![CDATA[操作系统


Unix / Linux


Windows


[数据结构与算法](()


[Java](()


[Java 基础](()


[面向对象思想](()


[类和接口](()


[注解与反射](()


[泛型](()


[多线程](()


[多线程通信](()


[volatile / synchronized](()


[await / notify / notifyAll](()


[线程池](()


[线程池入门 Callable 和 Future](()


..]]></description><category></category></item><item><title><![CDATA[Android 支持库迁移到AndroidX]]></title><link>https://blog.youkuaiyun.com/Java364102/article/details/124470761</link><guid>https://blog.youkuaiyun.com/Java364102/article/details/124470761</guid><author>Java364102</author><pubDate>Thu, 28 Apr 2022 11:57:37 +0800</pubDate><description><![CDATA[android.useAndroidX=true，表示主工程使用AndroidX形式。
android.enableJetifier=true，表示针对主工程中使用到的三方库，也会自动执行AndroidX的替换过程。
同时，在自动执行三方库的替换时，出下了如下报错信息：
ERROR: Unable to resolve dependency for ‘:MyCorn@prodDebug/compileClasspath’: Failed to transform file ‘fingerprint-1.1.]]></description><category></category></item><item><title><![CDATA[Android 实现水印背景效果]]></title><link>https://blog.youkuaiyun.com/Java364102/article/details/124470737</link><guid>https://blog.youkuaiyun.com/Java364102/article/details/124470737</guid><author>Java364102</author><pubDate>Thu, 28 Apr 2022 11:55:55 +0800</pubDate><description><![CDATA[/**


同步设置水印字体大小（单位：px）



@param textSize 字体大小(默认:42px)


*/
void setSyncTextSize(int textSize) {
if (mSync) {
setTextSize(30);
}
}
/**


设置水印字体是否粗体



@param textBold 是否粗体(默认:false)


*/
publi 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源	徽信搜索公众号【编程进阶路】]]></description><category></category></item><item><title><![CDATA[Android 基础与底层机制面试题]]></title><link>https://blog.youkuaiyun.com/Java364102/article/details/124470708</link><guid>https://blog.youkuaiyun.com/Java364102/article/details/124470708</guid><author>Java364102</author><pubDate>Thu, 28 Apr 2022 11:54:06 +0800</pubDate><description><![CDATA[[](()2. 是否使用过本地广播，它和全局广播有什么差别？
引入本地广播的机制是为了解决安全性的问题：
1） 正在发送的广播不会脱离应用程序，比用担心 app 的数据泄露；
2） 其他的程序无法发送到我的应用程序内部，不担心安全漏洞。（比如：如何做一个杀 不死的服务—监听火的 app 比如微信、友盟、极光的广播，来启动自己。）
3） 发送本地广播比发送全局的广播高效。（全局广播要维护的广播集合表 效率更低。 全局广播，意味着可以跨进程，就需要底层的支持。）
本地广播不能用静态注册。----静态注册：可以做]]></description><category></category></item><item><title><![CDATA[Android 关于CPU类型的so文件兼容问题（ABI）]]></title><link>https://blog.youkuaiyun.com/Java364102/article/details/124470674</link><guid>https://blog.youkuaiyun.com/Java364102/article/details/124470674</guid><author>Java364102</author><pubDate>Thu, 28 Apr 2022 11:52:26 +0800</pubDate><description><![CDATA[可以看到，只生成了我们指定CPU架构的so文件，包的大小也减少了5.3MB。
Android CPU架构在当前市场的占有率
Android目前支持7种ABIs：mips, mips64, X86, X86–64, arm64-v8a, armeabi, armeabi-v7a

arm64-v8a: 第8代、64位ARM处理器，目前主流版本。
armeabi-v7a: 第7代及以上的 ARM 处理器，2011年15月以后的生产的大部分Android设备，现在以arm64-v8a为多。
armeabi: 第.]]></description><category></category></item><item><title><![CDATA[Android 中的“后台无效动画“行为分析]]></title><link>https://blog.youkuaiyun.com/Java364102/article/details/124470587</link><guid>https://blog.youkuaiyun.com/Java364102/article/details/124470587</guid><author>Java364102</author><pubDate>Thu, 28 Apr 2022 11:48:14 +0800</pubDate><description><![CDATA[我们把这份 Trace 上的 cpu 部分全选，然后下面按照 Wall Duration 排序，可以发现网易新闻后台动画执行时间最长。应用已经在后台且不可见的时候，还在这么频繁地工作，占用 CPU 资源，消耗电量，实在是不应该。

抓对应的 MethodTrace 来看，就是在做动画，没有进行关闭 ，动画依旧在每一帧进行 onAnimationUpdate 的回调 ，可以看到这里是因为使用了 Airbnb 的&nbsp;[Lottie](()&nbsp;库导致的，动画没有关闭，所以还是一直在做触发

[](]]></description><category></category></item><item><title><![CDATA[Android —— 自定义View中]]></title><link>https://blog.youkuaiyun.com/Java364102/article/details/124470538</link><guid>https://blog.youkuaiyun.com/Java364102/article/details/124470538</guid><author>Java364102</author><pubDate>Thu, 28 Apr 2022 11:46:07 +0800</pubDate><description><![CDATA[UNSPECIFIED：未指定模式不对子View的尺寸进行限制。


AT_MOST：最大模式对应于wrap_content属性，父容器已经确定子View的大小，并且子View不能大于这个值。


EXACTLY：精确模式对应于match_parent属性和具体的数值，子View可以达到父容器指定大小的值。


对于每一个View，都会有一个MeasureSpec属性来保存View的尺寸规格信息。在View测量的时候，通过makeMeasureSpec来保存宽高信息，通过getMode获取测量模式，通过..]]></description><category></category></item></channel></rss>