<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jipengandroid的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jipengandroid</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jipengandroid]]></copyright><item><title><![CDATA[线程池]]></title><link>https://blog.youkuaiyun.com/jipengandroid/article/details/106718882</link><guid>https://blog.youkuaiyun.com/jipengandroid/article/details/106718882</guid><author>jipengandroid</author><pubDate>Fri, 12 Jun 2020 16:30:16 +0800</pubDate><description><![CDATA[线程的创建需要开辟虚拟机栈、本地方法栈、程序计数器等线程私有的内存空间，在线程销毁时需要回收这些系统资源，频繁地创建销毁线程会浪费大量资源，而通过复用已有线程可以更好地管理和协调线程的工作。

线程池主要解决两个问题：
一、 当执行大量异步任务时线程池能够提供很好的性能。
二、 线程池提供了一种资源限制和管理的手段，比如可以限制线程的个数，动态新增线程等。
——《Java并发编程之美》

线程池体系
用一张图来表示线程池体系如下：

解释说明：

Executor 是线程池最顶层的接口，在 Executor]]></description><category></category></item><item><title><![CDATA[synchronized]]></title><link>https://blog.youkuaiyun.com/jipengandroid/article/details/106718772</link><guid>https://blog.youkuaiyun.com/jipengandroid/article/details/106718772</guid><author>jipengandroid</author><pubDate>Fri, 12 Jun 2020 16:28:25 +0800</pubDate><description><![CDATA[synchronized 关键字相信每一位 Java 工程师都不会陌生。而 ReentrantLock 作为大神Doug Lea 编写的 concurrent 包中的重要一员，也在众多项目中发挥重要功能。因为这两者实在是太重要，所以专门使用一课时的内容来对它们做一个详细的比较。后续两课时将会着重介绍它们各自的实现细节与原理。

synchronized

synchronized 可以用来修饰以下 3 个层面：

修饰实例方法；

修饰静态类方法；

修饰代码块。

synchronized修饰实例方法..]]></description><category></category></item><item><title><![CDATA[ClassLoader]]></title><link>https://blog.youkuaiyun.com/jipengandroid/article/details/106718710</link><guid>https://blog.youkuaiyun.com/jipengandroid/article/details/106718710</guid><author>jipengandroid</author><pubDate>Fri, 12 Jun 2020 16:27:23 +0800</pubDate><description><![CDATA[Java 字节码文件（.class）的格式。一个完整的 Java 程序是由多个 .class 文件组成的，在程序运行过程中，需要将这些 .class 文件加载到 JVM 中才可以使用。而负责加载这些 .class 文件的就是本课时要讲的类加载器（ClassLoader）。

Java 中的类何时被加载器加载

在 Java 程序启动的时候，并不会一次性加载程序中所有的 .class 文件，而是在程序的运行过程中，动态地加载相应的类到内存中。

通常情况下,Java 程序中的 .class 文件会在以下 2 ]]></description><category></category></item><item><title><![CDATA[GC 回收机制与分代回收策略]]></title><link>https://blog.youkuaiyun.com/jipengandroid/article/details/106718650</link><guid>https://blog.youkuaiyun.com/jipengandroid/article/details/106718650</guid><author>jipengandroid</author><pubDate>Fri, 12 Jun 2020 16:25:38 +0800</pubDate><description><![CDATA[垃圾回收（Garbage Collection，简写为 GC）可能是虚拟机众多知识点中最为大众所熟知的一个了，也是Java开发者最关注的一块知识点。Java 语言开发者比 C 语言开发者幸福的地方就在于，我们不需要手动释放对象的内存，JVM 中的垃圾回收器（Garbage Collector）会为我们自动回收。但是这种幸福是有代价的：一旦这种自动化机制出错，我们又不得不去深入理解 GC 回收机制，甚至需要对这些“自动化”的技术实施必要的监控和调节。

上一节课我介绍了 Java 内存运行时区域的各个部分，其]]></description><category></category></item><item><title><![CDATA[jvm和dvm]]></title><link>https://blog.youkuaiyun.com/jipengandroid/article/details/106718551</link><guid>https://blog.youkuaiyun.com/jipengandroid/article/details/106718551</guid><author>jipengandroid</author><pubDate>Fri, 12 Jun 2020 16:23:57 +0800</pubDate><description><![CDATA[之前有很多人将 Java 的内存分为堆内存（heap）和栈内存（Stack），这种划分方式在一定程度上体现了这两块区域是 Java 工程师最关注的内存区域。但是其实这种划分方式并不完全准确。

Java 的内存区域划分实际上远比这复杂：Java 虚拟机在执行 Java 程序的过程中，会把它所管理的内存划分为不同的数据区域。下面这张图描述了一个 HelloWorld.java 文件被 JVM 加载到内存中的过程：

HelloWorld.java 文件首先需要经过编译器编译，生成 HelloWorld....]]></description><category></category></item><item><title><![CDATA[关于三级菜单的实现方式]]></title><link>https://blog.youkuaiyun.com/jipengandroid/article/details/79046400</link><guid>https://blog.youkuaiyun.com/jipengandroid/article/details/79046400</guid><author>jipengandroid</author><pubDate>Fri, 12 Jan 2018 17:22:42 +0800</pubDate><description><![CDATA[近日产品提出一个要一个三级菜单列表的功能，网上也一些资源，但是并不能满足需求。有4种实现思路：
（1）最常见的是两个expandlistview相互嵌套，亲身检测，比较繁琐，代码也不够简洁，而且会有三级惨淡测绘高度失效的情况.
（2）使用一个recycleview，自己来维护数据集合，亲测，这种方式两层的数据格式时，还是可以接受的，但是三层的时候，维护数据的复杂度就不是一个量级，比较复杂。
]]></description><category></category></item><item><title><![CDATA[关于视频播放横竖屏切换不再重复oncreat函数]]></title><link>https://blog.youkuaiyun.com/jipengandroid/article/details/78872843</link><guid>https://blog.youkuaiyun.com/jipengandroid/article/details/78872843</guid><author>jipengandroid</author><pubDate>Fri, 22 Dec 2017 14:18:58 +0800</pubDate><description><![CDATA[网上的办法都是很老的了，感叹Android的碎片化!

最新的设置AndroidManifest.xml中Activity的android:configChanges=”keyboardHidden|orientation|screenSize”




Android4.0以上需设置screenSize才有效果.




2.2,2.3--->这些只需设置keyboard]]></description><category></category></item><item><title><![CDATA[关于基础百度地图和地图导航的bug问题]]></title><link>https://blog.youkuaiyun.com/jipengandroid/article/details/56832214</link><guid>https://blog.youkuaiyun.com/jipengandroid/article/details/56832214</guid><author>jipengandroid</author><pubDate>Fri, 24 Feb 2017 10:02:33 +0800</pubDate><description><![CDATA[关于百度地图导航中，在未获得基础地图的情况下，出现的bug闪退]]></description><category></category></item><item><title><![CDATA[关于android studio debug签名]]></title><link>https://blog.youkuaiyun.com/jipengandroid/article/details/54572735</link><guid>https://blog.youkuaiyun.com/jipengandroid/article/details/54572735</guid><author>jipengandroid</author><pubDate>Mon, 16 Jan 2017 13:06:18 +0800</pubDate><description><![CDATA[上面出现的情况是应为没有给系统配置java环境导致的，因为android studio运行的时候，不需要手动添加jdk的环境，它自己可以找到jdk路径，但是在申请第三方开发账号的时候，例如百度地图开发，需要sha1数字签名的时候会出现keytool不是内部命令，所以需要配置java环境




配置完jdk环境之后，可以拿到debug数字签名了]]></description><category></category></item><item><title><![CDATA[关于okhttp的取值问题]]></title><link>https://blog.youkuaiyun.com/jipengandroid/article/details/53690562</link><guid>https://blog.youkuaiyun.com/jipengandroid/article/details/53690562</guid><author>jipengandroid</author><pubDate>Fri, 16 Dec 2016 10:59:36 +0800</pubDate><description><![CDATA[关于okhttp]]></description><category></category></item></channel></rss>