<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Simon的专栏]]></title><description><![CDATA[我们心中的恐惧，永远比真正的危险巨大的多。]]></description><link>https://blog.youkuaiyun.com/Jackson_Wen</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Jackson_Wen]]></copyright><item><title><![CDATA[初探 Java 後端開發：解決 macOS 環境下 Spring Boot 項目啟動的各類「坑」]]></title><link>https://blog.youkuaiyun.com/Jackson_Wen/article/details/160182024</link><guid>https://blog.youkuaiyun.com/Jackson_Wen/article/details/160182024</guid><author>Jackson_Wen</author><pubDate>Wed, 15 Apr 2026 14:59:57 +0800</pubDate><description><![CDATA[在 macOS（尤其是 Apple Silicon M1/M2/M3 芯片）環境下進行 Java + Spring Boot + Docker 的聯合開發時，由於系統架構差異與環境配置細節，新手往往會遇到「代碼拉下來卻跑不起來」的窘境。本文將解決過程整理為一份全記錄，涵蓋從環境變量加載到 Docker 跨平台兼容性的核心方案。]]></description><category></category></item><item><title><![CDATA[【開發筆記】修復 macOS 上 JADX 啟動崩潰並實現快速啟動]]></title><link>https://blog.youkuaiyun.com/Jackson_Wen/article/details/156864759</link><guid>https://blog.youkuaiyun.com/Jackson_Wen/article/details/156864759</guid><author>Jackson_Wen</author><pubDate>Mon, 12 Jan 2026 15:59:17 +0800</pubDate><description><![CDATA[在 macOS（尤其是 Sonoma 或更新版本）上使用 Homebrew 安裝  後，執行  經常會遇到  錯誤導致程序崩潰。這是由於默認 JDK 與 macOS 菜單欄渲染機制的兼容性問題引起的。本文提供一個終極解決方案：更換穩定版 JDK 並設置終端別名 (Alias)。1. 安裝穩定的 JDK 環境Homebrew 默認的 OpenJDK 有時過新，建議安裝對 GUI 支持更穩定的 Azul Zulu JDK 21：bash


2. 修正啟動指令經測試，指定  環境變量可以完美解決菜單欄衝突導致的]]></description><category></category></item><item><title><![CDATA[使用 adb shell 命令检查手机上 App的APK大小]]></title><link>https://blog.youkuaiyun.com/Jackson_Wen/article/details/155543222</link><guid>https://blog.youkuaiyun.com/Jackson_Wen/article/details/155543222</guid><author>Jackson_Wen</author><pubDate>Wed, 03 Dec 2025 23:19:21 +0800</pubDate><description><![CDATA[在 Android 开发或测试过程中，有时我们需要快速获取已安装应用在设备上的实际 APK 文件大小，而无需连接 Android Studio 或使用其他复杂工具。确保你的电脑已经安装了 Android Debug Bridge (ADB) 工具，并且已通过 USB 连接线将手机与电脑连接，并开启了 USB 调试模式。命令并结合应用的包名，来获取 APK 文件在设备存储中的绝对路径。（用于显示详细信息）和上一步得到的完整路径，来查看文件的大小。首先，你需要知道你想要查询的应用的准确包名。]]></description><category></category></item><item><title><![CDATA[通过ADB获取Android应用的SHA1签名]]></title><link>https://blog.youkuaiyun.com/Jackson_Wen/article/details/155542638</link><guid>https://blog.youkuaiyun.com/Jackson_Wen/article/details/155542638</guid><author>Jackson_Wen</author><pubDate>Wed, 03 Dec 2025 22:54:16 +0800</pubDate><description><![CDATA[通过ADB获取应用的SHA1签名是一个简单但强大的技术。掌握这个方法不仅能帮助开发者配置各种服务，还能在安全分析和问题排查中发挥重要作用。建议将常用命令封装为脚本，提高工作效率。]]></description><category></category></item><item><title><![CDATA[macOS 上安装与配置apksigner (读取APK签名的工具)]]></title><link>https://blog.youkuaiyun.com/Jackson_Wen/article/details/155542074</link><guid>https://blog.youkuaiyun.com/Jackson_Wen/article/details/155542074</guid><author>Jackson_Wen</author><pubDate>Wed, 03 Dec 2025 22:06:55 +0800</pubDate><description><![CDATA[本文介绍了在macOS上安装apksigner工具来读取APK签名信息的完整流程。主要内容包括：1)确认或安装Android SDK；2)通过sdkmanager安装指定版本的Build-Tools；3)将apksigner加入系统PATH环境变量；4)验证安装结果；5)使用apksigner命令读取APK的SHA-1/SHA-256签名指纹。最后提供了一个一键式安装脚本，方便快速完成环境配置。适用于已安装Android Studio或仅需命令行工具的用户场景。]]></description><category></category></item><item><title><![CDATA[解决 GitLab Token 轮换后 SourceTree 认证失败问题]]></title><link>https://blog.youkuaiyun.com/Jackson_Wen/article/details/154445996</link><guid>https://blog.youkuaiyun.com/Jackson_Wen/article/details/154445996</guid><author>Jackson_Wen</author><pubDate>Wed, 05 Nov 2025 16:00:57 +0800</pubDate><description><![CDATA[GitLab 令牌轮换后的认证问题通常是由于系统或应用程序缓存了旧凭证所致。通过更新远程 URL、清理系统凭证或在 SourceTree 中重新配置仓库，可以有效地解决这一问题。]]></description><category></category></item><item><title><![CDATA[如何在 Mac 上显示隐藏文件？]]></title><link>https://blog.youkuaiyun.com/Jackson_Wen/article/details/142550454</link><guid>https://blog.youkuaiyun.com/Jackson_Wen/article/details/142550454</guid><author>Jackson_Wen</author><pubDate>Thu, 26 Sep 2024 10:52:22 +0800</pubDate><description><![CDATA[这将列出当前目录中的所有文件，包括隐藏文件。这将切换隐藏文件的显示状态。]]></description><category></category></item><item><title><![CDATA[在Mac电脑上安装adb环境]]></title><link>https://blog.youkuaiyun.com/Jackson_Wen/article/details/142549247</link><guid>https://blog.youkuaiyun.com/Jackson_Wen/article/details/142549247</guid><author>Jackson_Wen</author><pubDate>Thu, 26 Sep 2024 10:49:56 +0800</pubDate><description><![CDATA[当你在命令行输入或，那么说明你的 Mac 上没有安装 ADB（Android Debug Bridge），或者它没有添加到你的路径中。]]></description><category></category></item><item><title><![CDATA[Kotlin协程最佳实践]]></title><link>https://blog.youkuaiyun.com/Jackson_Wen/article/details/140571551</link><guid>https://blog.youkuaiyun.com/Jackson_Wen/article/details/140571551</guid><author>Jackson_Wen</author><pubDate>Sat, 20 Jul 2024 15:07:02 +0800</pubDate><description><![CDATA[【代码】Kotlin协程最佳实践。]]></description><category></category></item><item><title><![CDATA[在不同场景下使用Coroutine协程并遵循结构化并发]]></title><link>https://blog.youkuaiyun.com/Jackson_Wen/article/details/140567693</link><guid>https://blog.youkuaiyun.com/Jackson_Wen/article/details/140567693</guid><author>Jackson_Wen</author><pubDate>Sat, 20 Jul 2024 14:46:04 +0800</pubDate><description><![CDATA[结构化并发（Structured Concurrency）是Kotlin协程中的一个强大特性，它允许协程以一种更安全和结构化的方式运行。它可以确保协程生命周期与作用域 (scope) 紧密关联，这种模式可以帮助避免内存泄漏，并确保在父作用域取消时，所有子协程也会被正确地取消。]]></description><category></category></item><item><title><![CDATA[kotlin中常见的创建协程的方式]]></title><link>https://blog.youkuaiyun.com/Jackson_Wen/article/details/140565657</link><guid>https://blog.youkuaiyun.com/Jackson_Wen/article/details/140565657</guid><author>Jackson_Wen</author><pubDate>Sat, 20 Jul 2024 10:51:28 +0800</pubDate><description><![CDATA[会阻塞当前线程直到协程完成。它通常用于测试或简单的同步操作，但应避免在主线程（如UI线程）使用。用于改变当前协程的执行上下文，比如切换到不同的调度器。它不直接启动协程，但可以与。这是最常见的启动协程的方式，通常用于不需要返回结果的协程。这种方式允许你更细粒度地控制协程的启动和取消。用于启动一组协程，当其中一个协程失败时，其他协程不受影响。用于创建一个消息传递协程，它接收消息并处理它们。，它可以发送多个值，并且接收者可以接收这些值。对象，可以用来管理协程的生命周期。当需要从协程中返回结果时，可以使用。]]></description><category></category></item><item><title><![CDATA[安卓屏幕信息基础知识复习]]></title><link>https://blog.youkuaiyun.com/Jackson_Wen/article/details/130996199</link><guid>https://blog.youkuaiyun.com/Jackson_Wen/article/details/130996199</guid><author>Jackson_Wen</author><pubDate>Thu, 01 Jun 2023 21:34:01 +0800</pubDate><description><![CDATA[在Android中，像素（px）、分辨率、密度（dpi）和尺寸之間存在著密切的關係。**像素（px）**是屏幕上顯示圖像的最小單位。每個像素都可以顯示一種顏色，多個像素組合在一起可以顯示複雜的圖像。是指屏幕上像素的數量。它通常表示為寬度和高度的乘積，例如1920x1080。分辨率越高，屏幕上可以顯示的細節就越多。**密度（dpi）**是指屏幕上每英寸的像素數量。它用於衡量屏幕的清晰度。密度越高，同樣大小的圖像就會顯得更清晰。是指屏幕的物理大小。它通常以英寸為單位表示。]]></description><category></category></item><item><title><![CDATA[Gradle版本、Gradle插件版本和AndroidStudio版本之间的对应关系]]></title><link>https://blog.youkuaiyun.com/Jackson_Wen/article/details/130671443</link><guid>https://blog.youkuaiyun.com/Jackson_Wen/article/details/130671443</guid><author>Jackson_Wen</author><pubDate>Sun, 14 May 2023 18:55:03 +0800</pubDate><description><![CDATA[有时候碰到gradle版本死活下载不下来，还会报Gralde Sync Issues,有可能是你的Gradle Wrapper版本和Gradle插件版本、AndroidStudio版本不匹配。Gradle版本和Gradle插件版本之间存在一定的对应关系。Gradle Wrapper是用来指定项目使用的Gradle版本，Gradle插件则是用来构建Android应用程序的。下表列出了各个 Android Studio 版本所需的 Android Gradle 插件版本。要指定Gradle插件版本，请在。]]></description><category></category></item><item><title><![CDATA[Vue富文本英文换行时单词被切断的问题]]></title><link>https://blog.youkuaiyun.com/Jackson_Wen/article/details/128148484</link><guid>https://blog.youkuaiyun.com/Jackson_Wen/article/details/128148484</guid><author>Jackson_Wen</author><pubDate>Fri, 02 Dec 2022 15:10:03 +0800</pubDate><description><![CDATA[问题：英文文本换行时单词被切断。]]></description><category></category></item><item><title><![CDATA[npm ERR冲突报错或本地node环境被污染的解决办法]]></title><link>https://blog.youkuaiyun.com/Jackson_Wen/article/details/127924899</link><guid>https://blog.youkuaiyun.com/Jackson_Wen/article/details/127924899</guid><author>Jackson_Wen</author><pubDate>Fri, 18 Nov 2022 16:18:30 +0800</pubDate><description><![CDATA[不小心安装了其他第三方包，导致npm err报错，项目无法运行。]]></description><category></category></item><item><title><![CDATA[Git commit校验工具commitlint的配置与使用]]></title><link>https://blog.youkuaiyun.com/Jackson_Wen/article/details/127921063</link><guid>https://blog.youkuaiyun.com/Jackson_Wen/article/details/127921063</guid><author>Jackson_Wen</author><pubDate>Fri, 18 Nov 2022 15:45:39 +0800</pubDate><description><![CDATA[因为commitizen只支持英文，如果我想要支持中文指令和emoji，那么就必须安装可自定义的cz适配器了。]]></description><category></category></item><item><title><![CDATA[Vue代码规范]]></title><link>https://blog.youkuaiyun.com/Jackson_Wen/article/details/127423754</link><guid>https://blog.youkuaiyun.com/Jackson_Wen/article/details/127423754</guid><author>Jackson_Wen</author><pubDate>Thu, 20 Oct 2022 14:48:38 +0800</pubDate><description><![CDATA[认识代码规范一、命名规范二、编码规范2.0 Vue项目目录规范2.1 Vue基础知识2.2 html规范2.3 css规范2.4 javascript规范三、注释规范四、其他先来思考两个问题：如果你是一个经验丰富的前端开发，你一定接触过这样的老项目：变量名是 abc，fds 这种随意起的，或者是 name1, name2 这种带数字起名，这样的变量不加注释，鬼都不知道它是干什么的。这类代码就是一种典型的不规范代码。这样的代码除了让我们开发人员情绪暴躁，最重要的问题是，它极大的降低了团队协作的效率和程序质量。]]></description><category></category></item><item><title><![CDATA[使用vue-pdf 实现pdf在线预览并且自定义预览框高度]]></title><link>https://blog.youkuaiyun.com/Jackson_Wen/article/details/127058165</link><guid>https://blog.youkuaiyun.com/Jackson_Wen/article/details/127058165</guid><author>Jackson_Wen</author><pubDate>Tue, 27 Sep 2022 11:30:24 +0800</pubDate><description><![CDATA[我们尝试给这个组件再写一个pdf-preview的class 将设置高度为100%发现不生效。然后运行程序，这时候你会发现，pdf预览图并不能铺满你的容器框。组件的canvas标签里面把高度写死成。]]></description><category></category></item><item><title><![CDATA[Warning: Your Flutter application is created using an older version of the Android embedding.]]></title><link>https://blog.youkuaiyun.com/Jackson_Wen/article/details/126556385</link><guid>https://blog.youkuaiyun.com/Jackson_Wen/article/details/126556385</guid><author>Jackson_Wen</author><pubDate>Sat, 27 Aug 2022 13:35:49 +0800</pubDate><description><![CDATA[【代码】Warning: Your Flutter application is created using an older version of the Android embedding.]]></description><category></category></item><item><title><![CDATA[Git代码合并+解决冲突]]></title><link>https://blog.youkuaiyun.com/Jackson_Wen/article/details/125429604</link><guid>https://blog.youkuaiyun.com/Jackson_Wen/article/details/125429604</guid><author>Jackson_Wen</author><pubDate>Thu, 23 Jun 2022 19:04:56 +0800</pubDate><description><![CDATA[将功能分支  合并到master分支
2.   将feature-login分支合并到master

3.   解决冲突
git在merge的时候处理冲突的方法就是它把两边的冲突都保留了下来。
用和以及这样的符号进行分隔，我们简单介绍一下其中的含义。后面跟着的内容是HEAD指针指向的节点的代码，也就是我们当前所处的分支master分支当中冲突的代码，这些代码的内容一直到结束。
从开始一直到最后是我们合并进来的分支的代码。手动合并的方法很简单，就是我们选择我们要保留的代码，然后再把>>>>>, ======,]]></description><category></category></item></channel></rss>