<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[a day a better]]></title><description><![CDATA[每天进步一点点]]></description><link>https://blog.youkuaiyun.com/adayabetter</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; adayabetter]]></copyright><item><title><![CDATA[base_logger_core --- 跨平台 C++ 日志核心库]]></title><link>https://blog.youkuaiyun.com/adayabetter/article/details/162867076</link><guid>https://blog.youkuaiyun.com/adayabetter/article/details/162867076</guid><author>adayabetter</author><pubDate>Tue, 14 Jul 2026 11:52:42 +0800</pubDate><description><![CDATA[base_logger_core：跨平台C++日志库核心设计 该库提供高效安全的跨平台日志解决方案，主要特性包括： 核心架构：采用mmap环形缓冲区实现崩溃安全写入，内置预设字典的deflate压缩优化存储空间 平台适配：支持Android(JNI)、iOS/Swift、HarmonyOS(NAPI)三端，通过平台壳层处理线程和生命周期 性能优化：文件格式设计为64字节头部+数据区，支持环形回绕写入，压缩后短日志体积减少30-45% 开发集成：提供C++11标准API（open/write/flush/cl]]></description><category></category></item><item><title><![CDATA[Python自动化办公提效相关脚本]]></title><link>https://blog.youkuaiyun.com/adayabetter/article/details/156947270</link><guid>https://blog.youkuaiyun.com/adayabetter/article/details/156947270</guid><author>adayabetter</author><pubDate>Wed, 14 Jan 2026 16:54:07 +0800</pubDate><description><![CDATA[本文展示了6个Python自动化办公脚本：1)使用FFmpeg拆分和合并长视频；2)利用jieba和SnowNLP分析文本情感并统计褒贬义词数量；3)批量重命名指定扩展名的文件；4)自动打印指定目录下的所有PDF文件；5)根据文件扩展名分类整理到不同文件夹；6)使用Pillow库处理图像像素。这些脚本涵盖了视频处理、文本分析、文件管理、打印任务和图像处理等常见办公场景，能显著提高工作效率。]]></description><category></category></item><item><title><![CDATA[【前端数据层高可用架构】]]></title><link>https://blog.youkuaiyun.com/adayabetter/article/details/140496949</link><guid>https://blog.youkuaiyun.com/adayabetter/article/details/140496949</guid><author>adayabetter</author><pubDate>Wed, 17 Jul 2024 16:41:28 +0800</pubDate><description><![CDATA[数据在当代业务中的地位是十分重要的，客端程序作为接触用户的门户和唯一入口，数据在后台扮演决定性作用。从某种程度上讲，客端程序可以用如下公式来表达：app 的本质就是将企业的运营数据展示给用户，并且接受用户的交互来实时更新数据。在这个抽象前提之下，数据启动（DataDriven）的架构设计思路就应运而生了。DataDriven 的设计核心就是 app 总是展示能够获取到的最新数据，当数据有变更的时候，及时刷新数据展示给用户。移动设备网络的可用性并不一定总是能得到保证。]]></description><category></category></item><item><title><![CDATA[Android app Java层异常捕获方案]]></title><link>https://blog.youkuaiyun.com/adayabetter/article/details/139962499</link><guid>https://blog.youkuaiyun.com/adayabetter/article/details/139962499</guid><author>adayabetter</author><pubDate>Tue, 25 Jun 2024 16:51:52 +0800</pubDate><description><![CDATA[Android app Java 层 Exception 捕获方案。 在Android app运行中，有时一些无关紧要的异常出现时希望App 不崩溃，能继续让用户操作，可以有效提升用户体验和增加业务价值。]]></description><category></category></item><item><title><![CDATA[Android Native 客户端属性配置系统使用说明]]></title><link>https://blog.youkuaiyun.com/adayabetter/article/details/139961005</link><guid>https://blog.youkuaiyun.com/adayabetter/article/details/139961005</guid><author>adayabetter</author><pubDate>Tue, 25 Jun 2024 16:13:59 +0800</pubDate><description><![CDATA[gradle 官方只支持 命令行和 gradle.properties 中的读取，并不支持 local.properties。属性设置来进行定制化编译，随着项目的迭代，工程结构越发复杂，配置属性越来越多，越来越多的配置使得上手难度越来越大。在构建系统需要读取一个属性变量的时候，会按照图中的顺序依次读取，如果变量不存在的话，最终会读取失败。无论方案一还是方案二，效果都是一样的，无非方案二是一次性的，仅仅在带上这个参数时构建有效。为了尊重传统开发习惯，依然采用 gradle 属性来进行配置。]]></description><category></category></item><item><title><![CDATA[【Android】Dialog弹出软键盘时把布局顶起来的实现]]></title><link>https://blog.youkuaiyun.com/adayabetter/article/details/135529302</link><guid>https://blog.youkuaiyun.com/adayabetter/article/details/135529302</guid><author>adayabetter</author><pubDate>Thu, 11 Jan 2024 15:03:34 +0800</pubDate><description><![CDATA[软键盘和EditText保持一定间距的实现思路，可以设置EditText 的 paddingBottom。]]></description><category></category></item><item><title><![CDATA[包大小检测优化策略]]></title><link>https://blog.youkuaiyun.com/adayabetter/article/details/131962657</link><guid>https://blog.youkuaiyun.com/adayabetter/article/details/131962657</guid><author>adayabetter</author><pubDate>Fri, 28 Jul 2023 11:26:03 +0800</pubDate><description><![CDATA[热启动时间：热启动表示用户在首页按了返回，首页Activity已经Destroy，不过Application仍在内存中存在，对应的进程并没有被杀掉，不包含Application创建过程。热启动时间指在Application仍然存在的情况下，从用户点击桌面图标，到首页内容全部展示出来的时间。冷启动时间：冷启动表示用户首次打开应用，这时进程还没创建，包含了Application创建的过程。冷启动时间指从第一次用户点击Launcher中的应用图标开始，到首页内容全部展示出来的时间。每一次的输出如下所示信息。]]></description><category></category></item><item><title><![CDATA[Android APP逆向分析工具和方法汇总]]></title><link>https://blog.youkuaiyun.com/adayabetter/article/details/131472215</link><guid>https://blog.youkuaiyun.com/adayabetter/article/details/131472215</guid><author>adayabetter</author><pubDate>Fri, 30 Jun 2023 11:06:38 +0800</pubDate><description><![CDATA[Android 逆向分析，受益于移动设备的广泛普及，移动应用近年来得到了蓬勃发展。基于移动设备集成的各类传感器，众多功能丰富的移动应用被开发出来，聚集了大量高价值用户隐私数据，包括用户身份信息、地理位置信息、账户资料信息等。用户在享受移动应用带来便利的同时，其隐私安全也受到了重大威胁。在这样的背景下，移动应用隐私合规检测应运而生。]]></description><category></category></item><item><title><![CDATA[问题定位及解决方案]]></title><link>https://blog.youkuaiyun.com/adayabetter/article/details/130345343</link><guid>https://blog.youkuaiyun.com/adayabetter/article/details/130345343</guid><author>adayabetter</author><pubDate>Mon, 24 Apr 2023 16:41:09 +0800</pubDate><description><![CDATA[Fragment在onCreate时，埋点逻辑才注册生命周期监听，懒加载时，setUserVisibleHint true先于onCreate执行，导致onVisible没有调用到，因此未走TrackUtil.onPageEnter方法，在页面离开时走onPageLeave，没有匹配一对pageEnter和PageLeave，所以不会上报2001页面事件。参考 HomeFragmentV3，懒加载，页面初始化时，未触发onVisible，需要做一次补偿。1.视频沉浸页快速滑动后，必现不能向下划动。]]></description><category></category></item><item><title><![CDATA[Mac AndroidStudio开发环境搭建]]></title><link>https://blog.youkuaiyun.com/adayabetter/article/details/130339399</link><guid>https://blog.youkuaiyun.com/adayabetter/article/details/130339399</guid><author>adayabetter</author><pubDate>Mon, 24 Apr 2023 11:44:07 +0800</pubDate><description><![CDATA[Mac AndroidStudio开发环境搭建。]]></description><category></category></item><item><title><![CDATA[Android自定义ViewPager禁止横向滑动]]></title><link>https://blog.youkuaiyun.com/adayabetter/article/details/129188922</link><guid>https://blog.youkuaiyun.com/adayabetter/article/details/129188922</guid><author>adayabetter</author><pubDate>Thu, 23 Feb 2023 19:59:24 +0800</pubDate><description><![CDATA[自定义ViewPager，复写 canScrollHorizontally 方法，禁止横向滑动。]]></description><category></category></item><item><title><![CDATA[Android 字体大小自适应 二阶贝塞尔曲线动画]]></title><link>https://blog.youkuaiyun.com/adayabetter/article/details/129056247</link><guid>https://blog.youkuaiyun.com/adayabetter/article/details/129056247</guid><author>adayabetter</author><pubDate>Thu, 16 Feb 2023 11:26:56 +0800</pubDate><description><![CDATA[连续调用setSpan时参数Object what不能使用同一个引用。SpannableStringBuilder使用注意。TextView字体大小自适应。否则只有最后一个设置有效。二阶贝塞尔曲线动画效果。]]></description><category></category></item><item><title><![CDATA[Android 富文本 SpannableString 支持网络图ImageSpan]]></title><link>https://blog.youkuaiyun.com/adayabetter/article/details/129056491</link><guid>https://blog.youkuaiyun.com/adayabetter/article/details/129056491</guid><author>adayabetter</author><pubDate>Thu, 16 Feb 2023 11:02:25 +0800</pubDate><description><![CDATA[实现思路： 在文本前加空格占位，使用默认图填充，下载网络图，下载完成时替换默认图。CenterVerticalImageSpan 实现图片在文字中居中效果。图片居中： CenterVerticalImageSpan.java。富文本 SpannableString 支持网络图。]]></description><category></category></item><item><title><![CDATA[关于数据收集的简化思考：结构化View数据自动跟随UI变化而更新]]></title><link>https://blog.youkuaiyun.com/adayabetter/article/details/128204152</link><guid>https://blog.youkuaiyun.com/adayabetter/article/details/128204152</guid><author>adayabetter</author><pubDate>Tue, 06 Dec 2022 16:57:57 +0800</pubDate><description><![CDATA[数据根据UI变化更新，实现思路]]></description><category></category></item><item><title><![CDATA[SharedPreferences工具类 putStringSet 失效问题注意]]></title><link>https://blog.youkuaiyun.com/adayabetter/article/details/127701431</link><guid>https://blog.youkuaiyun.com/adayabetter/article/details/127701431</guid><author>adayabetter</author><pubDate>Sat, 05 Nov 2022 11:36:19 +0800</pubDate><description><![CDATA[SPUtil 工具类实现
1.注意HashSet对象引用为同一个，可能不会触发更新。需要拷贝数据到新的Hashset
2.在putStringSet 调用之前，注意先 clear()，不然已经存在该 key了，value值不会更新。]]></description><category></category></item><item><title><![CDATA[Android多语言资源热更新方案AssetsManager]]></title><link>https://blog.youkuaiyun.com/adayabetter/article/details/127279050</link><guid>https://blog.youkuaiyun.com/adayabetter/article/details/127279050</guid><author>adayabetter</author><pubDate>Wed, 12 Oct 2022 11:34:51 +0800</pubDate><description><![CDATA[动态更新多语言文案AssetsManager]]></description><category></category></item><item><title><![CDATA[一些代码经验分享]]></title><link>https://blog.youkuaiyun.com/adayabetter/article/details/127223888</link><guid>https://blog.youkuaiyun.com/adayabetter/article/details/127223888</guid><author>adayabetter</author><pubDate>Mon, 10 Oct 2022 19:27:12 +0800</pubDate><description><![CDATA[一些Android代码经验分享]]></description><category></category></item><item><title><![CDATA[RecyclerView快速上下滑动，crash原因分析及解决]]></title><link>https://blog.youkuaiyun.com/adayabetter/article/details/125069176</link><guid>https://blog.youkuaiyun.com/adayabetter/article/details/125069176</guid><author>adayabetter</author><pubDate>Tue, 31 May 2022 17:32:56 +0800</pubDate><description><![CDATA[RecyclerView快速上下滑动，crash原因分析及解决

异常日志：
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position

--------- beginning of crash
05-31 16:03:37.218 E/AndroidRuntime(21081): FATAL EXCEPTION: main
05-31 16:03:37.218 E/AndroidRuntime(21]]></description><category></category></item><item><title><![CDATA[《设计模式之美》学习理解总结]]></title><link>https://blog.youkuaiyun.com/adayabetter/article/details/124943250</link><guid>https://blog.youkuaiyun.com/adayabetter/article/details/124943250</guid><author>adayabetter</author><pubDate>Tue, 24 May 2022 14:24:14 +0800</pubDate><description><![CDATA[越抽象、越顶层、越脱离具体某一实现的设计，越能提高代码的灵活性，越能应对未来的需求变化。好的代码设计，不仅能应对当下的需求，而且在将来需求发生变化的时候，仍然能够在不破坏原有代码设计的情况下灵活应对。]]></description><category></category></item><item><title><![CDATA[2022 开源轮子学习笔记]]></title><link>https://blog.youkuaiyun.com/adayabetter/article/details/122383993</link><guid>https://blog.youkuaiyun.com/adayabetter/article/details/122383993</guid><author>adayabetter</author><pubDate>Sat, 08 Jan 2022 18:09:54 +0800</pubDate><description><![CDATA[2022 开源轮子学习笔记

OKHttp


总结：
OkHttp的内部实现通过一个责任链模式完成，将网络请求的各个阶段封装到各个链条中，实现了各层的解耦。

参考：
https://juejin.cn/post/6844904087788453896
https://blog.piasy.com/2016/07/11/Understand-OkHttp/index.html

...]]></description><category></category></item></channel></rss>