<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[csdn_aiyang的博客]]></title><description><![CDATA[业精于勤荒于嬉，行成于思毁于随。]]></description><link>https://blog.youkuaiyun.com/csdn_aiyang</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; csdn_aiyang]]></copyright><item><title><![CDATA[Android 性能优化(七)：APK安装包体积优化]]></title><link>https://blog.youkuaiyun.com/csdn_aiyang/article/details/137863819</link><guid>https://blog.youkuaiyun.com/csdn_aiyang/article/details/137863819</guid><author>csdn_aiyang</author><pubDate>Wed, 17 Apr 2024 11:36:44 +0800</pubDate><description><![CDATA[移动 App 特别关注投放转化率指标，而 App 包体积是影响用户新增的重要因素，而 App 的包体积又是影响投放转化率的重要因素。新业务超过要总裁审批，一般在平台组都卡掉了。]]></description><category></category></item><item><title><![CDATA[Android 属性动画及自定义3D旋转动画]]></title><link>https://blog.youkuaiyun.com/csdn_aiyang/article/details/137546479</link><guid>https://blog.youkuaiyun.com/csdn_aiyang/article/details/137546479</guid><author>csdn_aiyang</author><pubDate>Tue, 09 Apr 2024 13:07:53 +0800</pubDate><description><![CDATA[属性动画框架，基本可以实现所有的视图动画效果。

相比属性动画，视图动画一个非常大的缺陷就是不具备交互性。当某个元素发生视图动画后，其响应事件的位置还依然在动画前的地方，所以视图动画只能做普通的动画效果，避免交互发生，且效率较高使用方便。]]></description><category></category></item><item><title><![CDATA[JAVA 并发编程之死锁的产生及避免]]></title><link>https://blog.youkuaiyun.com/csdn_aiyang/article/details/137543522</link><guid>https://blog.youkuaiyun.com/csdn_aiyang/article/details/137543522</guid><author>csdn_aiyang</author><pubDate>Tue, 09 Apr 2024 12:10:24 +0800</pubDate><description><![CDATA[死锁可以理解为，在多线程并发竞争资源的环境下，在各自拥有锁的情况下，又去尝试获取对方的锁，从而造成的一种阻塞的现象，若无外力作用，它们都将一直阻塞下去。我们都知道 ，join方法的作用是阻塞线程，即当前线程等待挂起的线程执行结束，才继续执行。如果线程自身调用了调用join()这个方法，表示，自身挂起自身，那么线程将一直在阻塞。①互斥条件：一个资源只能被一个线程占有，当这个资源被占用后其他线程就只能等待。②不可剥夺条件：当一个线程不主动释放资源时，此资源一直被拥有线程占有。]]></description><category></category></item><item><title><![CDATA[Hybrid混合开发 和 JSBridge 的使用]]></title><link>https://blog.youkuaiyun.com/csdn_aiyang/article/details/137521224</link><guid>https://blog.youkuaiyun.com/csdn_aiyang/article/details/137521224</guid><author>csdn_aiyang</author><pubDate>Mon, 08 Apr 2024 21:53:40 +0800</pubDate><description><![CDATA[JSBridge 简单来讲，主要是 给 JavaScript 提供调用 Native 功能的接口，让混合开发中的『前端部分』可以方便地使用平台的地图定位、相册、摄像头等 Native 功能。
实际上，JSBridge 就像其名称中的『Bridge』的意义一样，是 Native 和非 Native 之间的桥梁，它的核心是 构建 Native 和非 Native 间消息通信的通道，而且是“双向通信”的通道。]]></description><category></category></item><item><title><![CDATA[JAVA JVM内存模型和GC分配和回收]]></title><link>https://blog.youkuaiyun.com/csdn_aiyang/article/details/137355540</link><guid>https://blog.youkuaiyun.com/csdn_aiyang/article/details/137355540</guid><author>csdn_aiyang</author><pubDate>Thu, 04 Apr 2024 23:27:18 +0800</pubDate><description><![CDATA[JVM是（Java Virtual Machine）Java虚拟机的缩写。JVM是一个虚构出来的计算机，是通过在实际的计算机上仿真模拟各种计算机功能来实现的。​在Java程序运行时，所有的到JVM中才能执行代码逻辑。不是直接和操作系统交互，需要jvm通过java类库解释给操作系统。​。]]></description><category></category></item><item><title><![CDATA[JAVA 并发编程之AQS排队同步框架]]></title><link>https://blog.youkuaiyun.com/csdn_aiyang/article/details/137142015</link><guid>https://blog.youkuaiyun.com/csdn_aiyang/article/details/137142015</guid><author>csdn_aiyang</author><pubDate>Fri, 29 Mar 2024 16:58:38 +0800</pubDate><description><![CDATA[基于一个FIFO（先进先出）队列 和 一个同步状态（state）来实现线程的排队和同步。当线程尝试获取同步状态时，如果同步状态已经被其他线程占用，则将当前线程包装成一个节点（Node）并入队等待，否则直接获取同步状态。同时，AQS会确保只有队列中第一个节点的线程才能获取同步状态，其他节点需要等待前面的节点释放同步状态。]]></description><category></category></item><item><title><![CDATA[Java 并发编程之volatile可见性，原子操作线程不安全]]></title><link>https://blog.youkuaiyun.com/csdn_aiyang/article/details/137147397</link><guid>https://blog.youkuaiyun.com/csdn_aiyang/article/details/137147397</guid><author>csdn_aiyang</author><pubDate>Fri, 29 Mar 2024 15:44:34 +0800</pubDate><description><![CDATA[原子操作：线程在工作内存的赋值指令assign，传输到仓库store，最后write写入主内存，这三步操作是一个整理，中间不会中断，就好像直接操作主存一样。使用volatile后，线程对变量原子操作值被修改了，会根据缓存一致性协议通知其他线程的缓存副本过期。在修饰的变量，在系统汇编的代码里会生成lock前缀，表示指令在多核CPU情况下，在当前处理器将缓存数据写回到系统主内存时，会引起其他CPU缓存了该内存地址的数据无效。按照原子性操作， 3、4是线程2的原子操作， 5、6、7是线程1的原子操作。]]></description><category></category></item><item><title><![CDATA[Android 性能优化(六)：启动优化的详细流程]]></title><link>https://blog.youkuaiyun.com/csdn_aiyang/article/details/137059758</link><guid>https://blog.youkuaiyun.com/csdn_aiyang/article/details/137059758</guid><author>csdn_aiyang</author><pubDate>Wed, 27 Mar 2024 14:31:29 +0800</pubDate><description><![CDATA[业内常见的app启动过程阶段一般分为「启动阶段」和「首刷阶段」。启动阶段：指用户点击icon到见到app的首页，起点为的Activity的()。首刷阶段：指用户见到app的首页到首页列表内容展现起点为Activity的onCreate，终点列表的onAttachedToWindow()。为了确保启动优化量化指标的数据能稳定和完整。启动过程中App退后台用户未登录场景特殊场景下的开屏广告，比如有复杂的联动动效站外push、deeplink拉起。]]></description><category></category></item><item><title><![CDATA[Android Kotlin（六）协程的并发问题]]></title><link>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136886663</link><guid>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136886663</guid><author>csdn_aiyang</author><pubDate>Fri, 22 Mar 2024 19:42:32 +0800</pubDate><description><![CDATA[我们知道，在 Java 中最简单的同步方式是 synchronized、Atomic、Lock等同步手段。因为是Java 的锁是阻塞式的，会影响协程的非阻塞式特性，所以在 Kotlin 协程中，不推荐使用 Java 中的同步锁。Mutex 是一个接口，lock() 方法是一个挂起函数，支持挂起和恢复，这是一个非阻塞式同步锁。虽然 Kotlin 协程是基于 Java 线程的，但是它已经脱离了 Java 原本的范畴。此时，这10个协程运行在不同的线程中，可能会出现并发问题，最终结果小于、等于10000。]]></description><category></category></item><item><title><![CDATA[Flutter Widget：State 状态管理]]></title><link>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136874587</link><guid>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136874587</guid><author>csdn_aiyang</author><pubDate>Wed, 20 Mar 2024 15:35:08 +0800</pubDate><description><![CDATA[无论是在 React/Vue/Flutter 中讨论的问题和解决的思想都是一致的。的状态应该被谁管理？Widget本身？父 Widget？都会？还是另一个对象？如复选框的选中状态、滑块的位置如颜色、动画接下来，我们将通过例子说明管理状态的不同方式：创建一个盒子，当点击它时，盒子背景会在绿色与灰色之间切换。状态_active确定颜色：绿色为true，灰色为false。]]></description><category></category></item><item><title><![CDATA[Flutter 初始Widget&State 简单应用案例分析]]></title><link>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136852586</link><guid>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136852586</guid><author>csdn_aiyang</author><pubDate>Tue, 19 Mar 2024 21:30:18 +0800</pubDate><description><![CDATA[本系列文章主要整理Flutter的知识汇总，由浅入深，从Widget的搭建到其中的原理。本文还是围绕Widget在开发中应用和理解。关于Flutter环境配置和首次创建可以参考前面文章。]]></description><category></category></item><item><title><![CDATA[Flutter Widget：StatefulWidget&StatelessWidget&State]]></title><link>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136840879</link><guid>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136840879</guid><author>csdn_aiyang</author><pubDate>Tue, 19 Mar 2024 19:12:32 +0800</pubDate><description><![CDATA[Widget 将是构建Flutter应用的基石，在Flutter开发中几乎所有的对象都是一个 Widget。在Flutter中的widget 不仅表示UI元素，也表示一些功能性的组件，如：手势 、主题Theme等。而原生开发中的控件通常只是指UI元素。Flutter 中是通过 Widget 嵌套 Widget 的方式来构建UI和进行事件处理的。所以记住，。类继承自即“诊断树”；：一个 widget 可以对应一个或多个Element；与oldWidget的和key同时相等时就会用new widget去更新。]]></description><category></category></item><item><title><![CDATA[Flutter 核心原理 - UI 框架（UI Framework）]]></title><link>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136711975</link><guid>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136711975</guid><author>csdn_aiyang</author><pubDate>Thu, 14 Mar 2024 22:33:54 +0800</pubDate><description><![CDATA[Flutter 它提供了一套Dart API，然后在底层通过OpenGL这种跨平台的绘制库（内部会调用操作系统API）实现了一套代码跨多端。由于Dart API也是调用操作系统API，所以它的性能接近原生。]]></description><category></category></item><item><title><![CDATA[操作系统（Android&IOS）图像绘图的基本原理]]></title><link>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136718840</link><guid>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136718840</guid><author>csdn_aiyang</author><pubDate>Thu, 14 Mar 2024 19:11:43 +0800</pubDate><description><![CDATA[各个平台几乎所有用于开发GUI（图形用户接口）框架的，编程语言都会在操作系统提供的API之上再封装一层，将操作系统原生API封装在一个编程框架和模型中，然后定义一种简单的开发规则来开发GUI应用程序。像素的颜色是有RGB三基色组成，比如1600万即2的24次方，即每个基本色（R、G、B）深度扩展至8 bit(位)，颜色深度越深，所能显示的色彩更加丰富靓丽。但是对于应用开发者来说，直接调用这些操作系统提供的API是比较复杂和低效的，因为操作系统提供的API往往比较基础，直接调用需要了解API的很多细节。]]></description><category></category></item><item><title><![CDATA[Flutter 开发中踩坑笔记总汇]]></title><link>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136712805</link><guid>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136712805</guid><author>csdn_aiyang</author><pubDate>Thu, 14 Mar 2024 15:48:56 +0800</pubDate><description><![CDATA[本篇主要是收集汇总开发过程中遇到的小困惑，都是些比较常见的问题。后续开发中遇到，也会持续更新在这里。]]></description><category></category></item><item><title><![CDATA[移动端研发技术的进化历程]]></title><link>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136666459</link><guid>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136666459</guid><author>csdn_aiyang</author><pubDate>Wed, 13 Mar 2024 18:59:06 +0800</pubDate><description><![CDATA[移动端研发技术主要分为原生开发和跨平台开发。本章主要介绍一下移动开发技术一步一步发展的进化历程。]]></description><category></category></item><item><title><![CDATA[Android Kotlin（五）数据流StateFlow和LiveData]]></title><link>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136660097</link><guid>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136660097</guid><author>csdn_aiyang</author><pubDate>Tue, 12 Mar 2024 20:36:47 +0800</pubDate><description><![CDATA[在协程中，与仅返回单个值的挂起函数相反，数据流可按顺序发出多个值。数据流以协程为基础构建，可提供多个值。数据流是可通过异步方式进行计算处理的一组数据序列。所发出值的类型必须相同。]]></description><category></category></item><item><title><![CDATA[Android Kotlin知识汇总（四）Kotlin 协程实践]]></title><link>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136658188</link><guid>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136658188</guid><author>csdn_aiyang</author><pubDate>Tue, 12 Mar 2024 18:35:17 +0800</pubDate><description><![CDATA[Kotlin 协程是一种并发设计模式，可以在 Android 平台上让异步代码像阻塞代码一样易于使用。协程可大幅简化后台任务管理，例如网络调用、本地数据访问等任务的管理。简单来说，协程就是一种轻量级的非阻塞的线程工具API，可以用同步的方式写出异步的代码，优雅地切换线程和处理回调地狱。线程在进程中，协程在线程中。所有源文件都必须编码为 UTF-8。]]></description><category></category></item><item><title><![CDATA[Android Kotlin知识汇总（三）Kotlin 协程]]></title><link>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136633084</link><guid>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136633084</guid><author>csdn_aiyang</author><pubDate>Tue, 12 Mar 2024 16:01:27 +0800</pubDate><description><![CDATA[Kotlin 协程让异步代码像阻塞代码一样易于使用。协程可大幅简化后台任务管理，例如网络调用、本地数据访问等任务的管理。本主题介绍如何使用 Kotlin 协程解决以下问题，从而让您能够编写出更清晰、更简洁的应用代码。]]></description><category></category></item><item><title><![CDATA[Android Kotlin知识汇总（二）代码最佳实践]]></title><link>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136631550</link><guid>https://blog.youkuaiyun.com/csdn_aiyang/article/details/136631550</guid><author>csdn_aiyang</author><pubDate>Mon, 11 Mar 2024 19:38:58 +0800</pubDate><description><![CDATA[本主题重点介绍 Kotlin 语言在 Android 开发过程中最有用的一些方面。同时是我们普遍遵循的清晰硬性规则，而避免给出真人或工具无法简明地遵循的建议。所有源文件都必须编码为 UTF-8。]]></description><category></category></item></channel></rss>