<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chenrunhua的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/chenrunhua</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chenrunhua]]></copyright><item><title><![CDATA[照片墙10w以上张照片梳理，照片列表、多选上优化设计及实践]]></title><link>https://blog.youkuaiyun.com/chenrunhua/article/details/123496207</link><guid>https://blog.youkuaiyun.com/chenrunhua/article/details/123496207</guid><author>chenrunhua</author><pubDate>Tue, 15 Mar 2022 11:01:34 +0800</pubDate><description><![CDATA[1. 背景

第一期优化了加载效率，比如合理增加并发线程数，提升快速滑动缩略图等待，因为使用测试账号数据比较少（不超过1W），只对当前测试出现的问题进行点对点上的优化。对大数据的照片，出现新上传的照片显示很慢，多选照片操作卡顿。缺少没有专门针对大数据照片测试，没能发现旧的代码上及加载机制上的问题，导致这块优化缺失，本期专项对大数据照片进行分析及优化，优化前后的效果见末尾屏幕录制的视频所示。



2. 照片墙原有业务流程





整体的业务流程比较多，交互比较繁琐。



3.优化措施

具体优化措施..]]></description><category></category></item><item><title><![CDATA[纪念相册的照片列表模块业务及模块优化]]></title><link>https://blog.youkuaiyun.com/chenrunhua/article/details/120954738</link><guid>https://blog.youkuaiyun.com/chenrunhua/article/details/120954738</guid><author>chenrunhua</author><pubDate>Mon, 25 Oct 2021 16:33:19 +0800</pubDate><description><![CDATA[背景
纪念相册在打开后，列表下拉或上拉，频繁卡顿；在界面停止不动的情况，容易出现概率性崩溃,列表如下







分析
纪念相册主要由2部分组成：头部图片列表动画播放及列表图片组成







优化
根据以上分析的结果来制定优化方案如下所示：







以上的优化的接口可达到以下的目的：

减少80%以上的网络请求次数，降低用户网络流量损耗,提升服务器的单用户可负载能力
	减少80%以上列表刷新次数，大幅降低开辟和销毁新内存次数，降低内存抖动，避免OOM
	消除了列表的卡顿
崩溃没有发生


...]]></description><category></category></item><item><title><![CDATA[照片墙时间轴快速拖动的加载优化]]></title><link>https://blog.youkuaiyun.com/chenrunhua/article/details/119565169</link><guid>https://blog.youkuaiyun.com/chenrunhua/article/details/119565169</guid><author>chenrunhua</author><pubDate>Tue, 10 Aug 2021 11:35:23 +0800</pubDate><description><![CDATA[1. 背景

照片墙的右边有个时间轴，可以快速下滑定位到某天，如下图所示：





快速拖动到某个位置，需要等待9s左右才开始加载第一张图片





2.分析

 在当前界面加载完后，稍微往上拉或下拉时，上面有好几行的预览图已被加载；即快速拖动到某天，但是预览图仍然在加载当前可见区域外的view的预览图；因此是否可以中断当前的所有的加载任务，当时间轴停下来时立马加载当前可见区域预览图？

3.优化

3.1 移动立即停止加载

在时间轴被移动的时候，立即暂停glide的所有加载，这个可以通过调用...]]></description><category></category></item><item><title><![CDATA[Glide及okhttp配置优化，开启多线程大幅提升加载速度]]></title><link>https://blog.youkuaiyun.com/chenrunhua/article/details/119423920</link><guid>https://blog.youkuaiyun.com/chenrunhua/article/details/119423920</guid><author>chenrunhua</author><pubDate>Fri, 06 Aug 2021 11:15:32 +0800</pubDate><description><![CDATA[1. 背景

app的照片墙功能中，满屏是小的图片



加载速度是惨不忍睹



2. 分析




















]]></description><category></category></item><item><title><![CDATA[Glide 4.11.0版本在访问失败的情况下，会二次重试]]></title><link>https://blog.youkuaiyun.com/chenrunhua/article/details/119329961</link><guid>https://blog.youkuaiyun.com/chenrunhua/article/details/119329961</guid><author>chenrunhua</author><pubDate>Wed, 04 Aug 2021 15:46:49 +0800</pubDate><description><![CDATA[1. 背景

项目使用Glide作为图片加载控件，自定义ModelLoader

2. 问题

在自定义DataFetcher中，发现loadData在失败时，再自动调用这个方法，因此被加载了2次；

原先是在这边添加失败重试的，现在是导致多次调用，重试多次。

3. 排查

3.1在自定义ModelLoader添加log



发现这个方法被调用2次，即加载的任务被加载到队列有2次。

3.2 对比图片加载成功和失败

 在成功加载时，在自定义DataFetcher的方法loadData只被调用一次...]]></description><category></category></item><item><title><![CDATA[照片墙性能分析]]></title><link>https://blog.youkuaiyun.com/chenrunhua/article/details/118553972</link><guid>https://blog.youkuaiyun.com/chenrunhua/article/details/118553972</guid><author>chenrunhua</author><pubDate>Wed, 07 Jul 2021 18:17:38 +0800</pubDate><description><![CDATA[1.背景
移动Android端照片墙跟竞品比较在图片很多的情况，加载的速度及图片显示的比较慢，如下图所示



2.分析
照片墙的显示拆解为2大模块流程，先是分页拉取图片列表，然后拉取可见区域图片的预览图，然后显示。
为了定位到底是哪一步出现问题，下面将进行以下的测试。
2.1列表加载性能


在当前的图片列表的上面添加个文本显示框，加载图片列表就显示其的图片id部分信息，这样可以区分取到底是没有拉取图片列表的还是没有拉取图片的预览图的问题。
...]]></description><category></category></item><item><title><![CDATA[一刻相册反编译及分析]]></title><link>https://blog.youkuaiyun.com/chenrunhua/article/details/118553615</link><guid>https://blog.youkuaiyun.com/chenrunhua/article/details/118553615</guid><author>chenrunhua</author><pubDate>Wed, 07 Jul 2021 17:58:49 +0800</pubDate><description><![CDATA[1.反编译
应用商店下载最新版本一刻相册apk，使用jadx工具反编译
1.1代码信息
1.1.1编程语言使用kotlin，使用okhtt3p作为网络访问库



1.1.2框架
使用谷歌官方的jetpack的mvvm模式



1.2图片加载控件信息
1.2.1 照片墙使用了开源控件glide作为图片加载控件，我们也是使用glide作为图片加载控件


1.2.2照片列表的item的view是自定义并继承ViewGroup


1.3列表加载信息
根据反编译的信息，就看到一个“fetchCloudList]]></description><category></category></item><item><title><![CDATA[HarmonyOS学习资料整理]]></title><link>https://blog.youkuaiyun.com/chenrunhua/article/details/111564509</link><guid>https://blog.youkuaiyun.com/chenrunhua/article/details/111564509</guid><author>chenrunhua</author><pubDate>Tue, 22 Dec 2020 19:10:12 +0800</pubDate><description><![CDATA[HarmonyOS
1.图片圆角功能
https://bbs.elecfans.com/jishu_1998578_1_1.html


2.开发例子
2.1.HarmonyOS-Note
https://github.com/bingoogolapple/HarmonyOS-Note
2.2.RxHarmonyos
https://github.com/gm365066360/RxHarmonyos
2.3.api 手册
https://developer.harmonyos.com/cn/docs/do]]></description><category></category></item><item><title><![CDATA[单例的几个要点]]></title><link>https://blog.youkuaiyun.com/chenrunhua/article/details/108723899</link><guid>https://blog.youkuaiyun.com/chenrunhua/article/details/108723899</guid><author>chenrunhua</author><pubDate>Tue, 22 Sep 2020 09:29:38 +0800</pubDate><description><![CDATA[1.单例的double check lock变量为什么需要使用volatile？

2.内部类实现单例，但是实现的原理是什么？

上面2个点有点迷惑：

摘录个挺好的说明：

https://blog.youkuaiyun.com/mnb65482/article/details/80458571

双重锁懒汉模式(Double Check Lock)






	public class SingleTon{
	
	
	private static SingleTon INSTANCE = null;
	
	
	.]]></description><category></category></item><item><title><![CDATA[整理下工作中遇到特殊的业务、难点解决]]></title><link>https://blog.youkuaiyun.com/chenrunhua/article/details/108594286</link><guid>https://blog.youkuaiyun.com/chenrunhua/article/details/108594286</guid><author>chenrunhua</author><pubDate>Tue, 15 Sep 2020 11:59:43 +0800</pubDate><description><![CDATA[最近被面说说工作亮点，我当时是一时懵逼，瞬间脑袋空白，这次要稍微整理下自己工作遇到相对比较大问题及解决方法，免得二次还是出现这个情况：



1.大图浏览，后台list加载；

背景：



显示的时刻列表如上，当前列表是每天最多10张图片信息，当点击某一张图片进入大图浏览时，要按照顺序（按照时刻从该点开始进行所有的图片浏览）；进入大图时，只有这天的10张图片信息；

实现的所有图片步骤是：

1）根据点击的图片所属的日期及这天的索引，在时间轴（从服务器拉去的时间轴，有日期对应这天的数量的列表），计算这张.]]></description><category></category></item><item><title><![CDATA[pjsip相关学习]]></title><link>https://blog.youkuaiyun.com/chenrunhua/article/details/108404022</link><guid>https://blog.youkuaiyun.com/chenrunhua/article/details/108404022</guid><author>chenrunhua</author><pubDate>Fri, 04 Sep 2020 14:54:38 +0800</pubDate><description><![CDATA[1.pjsip项目git

https://github.com/pjsip/pjproject

2.pjsip环境搭建

 1)客户端

 PC windows

 https://www.microsip.org/downloads

 Android

https://github.com/mahmudur85/PjDroid/tree/master/PjDroid

2）服务端

https://github.com/sxcong/pjsipvideo_demo/tree/mast...]]></description><category></category></item><item><title><![CDATA[Android Studio包名大写导致dex找不到路径的类的问题]]></title><link>https://blog.youkuaiyun.com/chenrunhua/article/details/106646561</link><guid>https://blog.youkuaiyun.com/chenrunhua/article/details/106646561</guid><author>chenrunhua</author><pubDate>Tue, 09 Jun 2020 17:10:10 +0800</pubDate><description><![CDATA[背景：

 app壳工程，引入第二个组件工程，报错如下：



解决过程：

在排查中发现AndroidManifest.xml的包名最后一段名字有大写，是包名与路径不符合的不符合的问题。


]]></description><category></category></item><item><title><![CDATA[flutter学习记录]]></title><link>https://blog.youkuaiyun.com/chenrunhua/article/details/102969415</link><guid>https://blog.youkuaiyun.com/chenrunhua/article/details/102969415</guid><author>chenrunhua</author><pubDate>Fri, 08 Nov 2019 11:17:46 +0800</pubDate><description><![CDATA[1.flutter异步任务及单任务模式理解：

深入理解Flutter多线程：https://blog.youkuaiyun.com/LiuXiaoZhuang_优快云/article/details/89577878

2.future then理解：

Flutter进阶篇（4）-- Flutter的Future异步详解：https://www.jianshu.com/p/c0e30769ea7e

...]]></description><category></category></item><item><title><![CDATA[Android 使用 HTTPS SSLProtocolException sslv3]]></title><link>https://blog.youkuaiyun.com/chenrunhua/article/details/102561643</link><guid>https://blog.youkuaiyun.com/chenrunhua/article/details/102561643</guid><author>chenrunhua</author><pubDate>Tue, 15 Oct 2019 11:09:14 +0800</pubDate><description><![CDATA[之前转载的文章并没有解决问题，继续排查

Android的盒子系统19在https下访问发生了握手失败，失败的log如下：


2019-10-14 10:24:43.344----3809:pool-3-thread-1----b----catch IOException : javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtoc...]]></description><category></category></item><item><title><![CDATA[Android 使用 HTTPS 问题解决（SSLHandshakeException）]]></title><link>https://blog.youkuaiyun.com/chenrunhua/article/details/102554066</link><guid>https://blog.youkuaiyun.com/chenrunhua/article/details/102554066</guid><author>chenrunhua</author><pubDate>Mon, 14 Oct 2019 18:41:40 +0800</pubDate><description><![CDATA[title
			date
			categories
			tags
		
			Android 5.0以下TLS1.x SSLHandshakeException
			
			
			2016-11-30 12:17:02 -0800
			
			
			
						Android
						
					
			
			
						Android
						
						
				...]]></description><category></category></item><item><title><![CDATA[Android ijk视频播放器使用TextureView问题]]></title><link>https://blog.youkuaiyun.com/chenrunhua/article/details/100141462</link><guid>https://blog.youkuaiyun.com/chenrunhua/article/details/100141462</guid><author>chenrunhua</author><pubDate>Thu, 29 Aug 2019 16:53:44 +0800</pubDate><description><![CDATA[在视频播放器添加了个菜单，能多次在系统播放器和ijk播放器切换，但是在二次切换ijk播放器出问题：TextureView二次切换初始化时不会回调SurfaceTextureListener。

 原有的ijk播放器的流程是在布局中声明TextureView，然后设置SurfaceTextureListener；估计是在初始化后，不能再二次绑定；

 因此，可以在布局声明个容器，动态new个...]]></description><category></category></item><item><title><![CDATA[Glide 加载优化]]></title><link>https://blog.youkuaiyun.com/chenrunhua/article/details/90482449</link><guid>https://blog.youkuaiyun.com/chenrunhua/article/details/90482449</guid><author>chenrunhua</author><pubDate>Thu, 23 May 2019 18:08:19 +0800</pubDate><description><![CDATA[Android一般情况使用Glide加载图片，但是使用不注意就会有些问题：比较大的list的图片列表快速滚动，当前的图片需要等前面的加载才可以加载，分析如下：

1. listview的item中使用glide加载图片，当有需要对加载图片二次处理使用重新simpleTarget,然后给into,如下所示


      Glide.with(mContext).load("http...]]></description><category></category></item><item><title><![CDATA[外部应用使用FLAG_ACTIVITY_NEW_TASK启动activity问题]]></title><link>https://blog.youkuaiyun.com/chenrunhua/article/details/86169729</link><guid>https://blog.youkuaiyun.com/chenrunhua/article/details/86169729</guid><author>chenrunhua</author><pubDate>Wed, 09 Jan 2019 18:55:59 +0800</pubDate><description><![CDATA[问题描述：

   外部应用使用Intent.FLAG_ACTIVITY_NEW_TASK，启动桥接的activity切换对应的功能界面显示时，第一次能启动对应的activity，在没有退出的情况下，第二次启动时，这个activity的生命周期并没再调用；

解决：

   因为外面不能使用广播功能，因此只有在桥接的activity收到的情况下，发出广播，收到的广播里再启动目标的activity，...]]></description><category></category></item><item><title><![CDATA[TextView 文字不能滚动问题]]></title><link>https://blog.youkuaiyun.com/chenrunhua/article/details/84990145</link><guid>https://blog.youkuaiyun.com/chenrunhua/article/details/84990145</guid><author>chenrunhua</author><pubDate>Thu, 13 Dec 2018 16:04:05 +0800</pubDate><description><![CDATA[现象：

  TextView 布局中原来是gone不可见状态，设置可见状态时，并设置select（true）时，文字不能滚动；

解决：

  textView设置为Visiable后，不能马上设置为select（true），延迟执行select（true）即可解决。...]]></description><category></category></item><item><title><![CDATA[爬sobooks电子书并把电子书的信息记录到mysql中]]></title><link>https://blog.youkuaiyun.com/chenrunhua/article/details/84679015</link><guid>https://blog.youkuaiyun.com/chenrunhua/article/details/84679015</guid><author>chenrunhua</author><pubDate>Sat, 01 Dec 2018 22:09:46 +0800</pubDate><description><![CDATA[使用python3+selenium+chromeDriver爬sobooks的电子，记录书的信息（书名，作者，描述，出版时间等），转存到自己的百度云盘

环境：安装xmapp，下载chrome对应的chromeDriver.exe放到python安装目录下及安装python连接mysql的插件：pymysql

以下为配置文件：config.json

1.百度云的账号及密码

  &quot;baidu...]]></description><category></category></item></channel></rss>