- 博客(543)
- 收藏
- 关注
原创 【案例实战】鸿蒙电商应用流量转化率提升翻倍:预加载+AppLinking的增长黑客实践!
我是一名在路上的移动端开发者,正从传统“小码农”转向鸿蒙原生开发的进阶之旅。为了把学习过的知识沉淀下来,也为了和更多同路人互相启发,我决定把探索 HarmonyOS 的过程都记录在这里。
2025-10-21 09:32:08
1133
1
原创 赋能之路:我用一本“活的教科书”,带出了一个鸿蒙王牌战队!
去理解它的手势控制是怎么做的,它的窗口切换逻辑是怎么实现的,它的倍速播放和清晰度选择是如何构建的。它将所有主观的、模糊的、可争论的规范,都变成了客观的、清晰的、不可动摇的准则。那个周五的晚上,我独自一人坐在空无一人的办公室里,看着白板上那张宏伟的架构图,第一次感到了作为“架构师”的孤独和无力。所以,朋友,无论你现在是像我当初一样的“菜鸟”,还是已经小有成就的“老手”,亦或志在千里的“架构师”。“各位,” 我的声音洪亮而坚定,“从今天起,我们团队的开发模式,将围绕这个 App 全面升级。
2025-10-17 22:26:37
5961
原创 架构之光:从一份开源代码中,我窥见鸿蒙大型工程的未来!
作为公司鸿蒙技术专家,"我"长期沉浸在解决具体技术问题的快感中。当CTO提出要为全场景业务设计新架构时,面对从单设备到多端协同的挑战,"我"陷入了架构设计的困境。在绝望之际,通过华为开源的"HMOS代码工坊"项目,获得了模块化分层、跨端适配等关键架构思路。这份官方"活体样本"不仅帮助"我"完成了架构方案设计,更让"我"完成了从技术专家到架构师的蜕变,即将带领团队开启全新的鸿蒙开发征程。
2025-10-17 22:24:23
6300
原创 美学之争:一份“活”的设计稿,让我征服了最挑剔的设计师!
阿杰,” 桃子姐把设计稿推到我面前,眼神里带着不容置疑的坚定,“我们的 App,必须拥有纯正的‘鸿蒙血统’。她开始尝试调整颜色,当她看到顶部的“预览区”里的开关颜色随着她的操作实时变化时,她的眼睛亮了。更让她惊喜的是,当她调整完颜色,右下角的“代码区”里,已经自动生成了对应的色号代码。切换时的动画,不是简单的线性变化,而是一个‘先快后慢’的缓动曲线,时长必须是 280 毫秒,这样才显得‘果断而不突兀’。我写的代码越来越复杂,逻辑越来越混乱,但实现的效果,在桃子姐的“像素眼”下,依然是“差了点意思”
2025-10-17 22:22:59
9740
原创 实习生的“鸿蒙渡劫”:从一行报错到点亮万象!
本文讲述了计算机专业毕业生小林入职星河互联"星语"项目组后的成长经历。从初入职场的不安与挫败,到通过"HMOS代码工坊"APP快速掌握鸿蒙开发技能的转变过程。文章生动展现了新手程序员面对ArkUI布局时的困惑与突破,特别是通过交互式学习工具实现技能跃升的关键转折。最后以小林成功完成首个开发任务为结,传递出技术成长中的坚持与希望。
2025-10-17 22:20:00
6210
原创 说实话,做鸿蒙开发这半年,我就靠它“续命“了!
【摘要】一名Android开发者被迫转型HarmonyOS开发时陷入困境,直到发现华为官方工具"HMOS代码工坊"后迎来转机。该工具提供实时预览的组件库、真实场景的完整样例和工程实践指南,帮助开发者快速解决Grid布局、折叠屏适配、性能优化等难题。通过工具辅助,作者在半年内完成3个应用开发并晋升团队负责人。文章总结了该工具节省时间、提升代码质量等优势,建议开发者系统学习源码并建立知识库。最后强调好工具能大幅降低学习鸿蒙生态的门槛。
2025-10-17 22:16:03
7081
原创 你以为序列化只是存对象?那为什么它能把你系统也“存没了”?
/ 假设新版本新增字段:tag(旧数据没有) private String tag;return id;return tag;"" : tag;// 兼容旧版本:tag 可能为 null if(tag == null) tag = "";// 校验 if(id == null || id . isBlank()) throw new InvalidObjectException("id invalid");} }
2026-05-03 09:00:00
360
原创 你以为 JavaBeans 只是 Getter/Setter?那为什么工具能“读懂”你的组件?
假设我们希望当themeColor} }} }// ... 前面省略 private final List < ThemeChangeListener > themeListeners = new CopyOnWriteArrayList < >();/*同前*/ } public void setThemeColor(String themeColor) {} } }
2026-05-03 00:00:00
375
原创 你还在靠“每隔 5 秒扫一遍目录”来做文件同步?这不是监控,这是自我折磨吧?
我见过最离谱的“文件变更监控”方案:定时任务每 3 秒扫一遍目录,扫到文件就比时间戳,时间戳变了就复制……听起来挺努力,跑起来像打地鼠:CPU 风扇呼呼转,日志刷屏,偶尔还漏文件。你问为啥?因为你在跟操作系统玩“猜我什么时候变”的游戏。让 OS 在文件变更时通知你。当然,它也不是完美的——跨平台差异、事件合并、溢出、递归目录监控都得处理。但只要你写对了,效果真的很爽:改一个文件,系统立刻就知道,“同步系统”才能像个同步系统。🙂你先向某个目录注册“我关心的事件”系统在事件发生时给你一个。
2026-05-02 05:45:00
371
原创 你以为 Random 随便用就行?那你的“随机实验”到底随机给谁看呢?
统计意义上的随机:用于模拟、抽样、A/B、蒙特卡罗安全意义上的随机:用于密钥、token、nonce、盐(salt)很多人把这俩混着用,然后出现一种特别“尴尬但真实”的场面:你用Random生成重置密码 token,结果被人预测出来了。你用做蒙特卡罗,结果性能慢到像在给 CPU 做瑜伽。🧘把 Math / Random / SecureRandom 的边界讲清楚,最后用一个可运行项目把蒙特卡罗实验跑起来。如果你觉得这篇文章对你有帮助,或者有任何想法、建议,欢迎在评论区留言交流!
2026-05-02 00:00:00
387
原创 你还在用 `File` 里那堆“祖传 API”硬写文件操作?都 2026 年了你不嫌累吗?
我先承认:我当年也用写过一堆“看起来能跑、但越看越心虚”的代码。什么返回 null 还得防、路径拼接靠手写斜杠……写到最后像在跟操作系统猜谜。后来我换到不是我变强了,是工具终于像个人了。😂这一篇我按你给的大纲来,从Path到Files文件搜索 + 增量备份工具(含过滤规则、跳过隐藏目录、保留目录结构、可选删除目标多余文件)。全程用人话讲清楚,也给你能直接抄走的代码。如果你觉得这篇文章对你有帮助,或者有任何想法、建议,欢迎在评论区留言交流!
2026-05-01 06:00:00
355
原创 你还敢用 double 算钱?那你是想跟财务对线到天亮吗?
在 Java 里,是二进制浮点数。它适合科学计算、图形、近似值,但它不擅长做“必须一分不差”的事。比如金额、利率、税额、分摊……“怎么少了 0.01?“为什么对账总差一分钱?“用户说我偷钱怎么办?”(这句最要命😨)BigInteger:任意精度整数BigDecimal:精确小数 + 可控舍入如果你觉得这篇文章对你有帮助,或者有任何想法、建议,欢迎在评论区留言交流!我是一个在代码世界里不断摸索的小码农,愿我们都能在成长的路上越走越远,越学越强!✍️ 作者:某个被流“治愈”过的 Java 老兵。
2026-05-01 00:00:00
304
原创 你还在把中文提示写死在代码里吗?等产品说要多语言时,你准备怎么解释?
如果你觉得这篇文章对你有帮助,或者有任何想法、建议,欢迎在评论区留言交流!我是一个在代码世界里不断摸索的小码农,愿我们都能在成长的路上越走越远,越学越强!✍️ 作者:某个被流“治愈”过的 Java 老兵📅 日期:2026-01-07🧵 本文原创,转载请注明出处。
2026-04-30 08:00:00
367
原创 你确定你写的“日志”真能排障吗?还是只是把控制台刷得更热闹?
如果你觉得这篇文章对你有帮助,或者有任何想法、建议,欢迎在评论区留言交流!我是一个在代码世界里不断摸索的小码农,愿我们都能在成长的路上越走越远,越学越强!✍️ 作者:某个被流“治愈”过的 Java 老兵📅 日期:2026-01-07🧵 本文原创,转载请注明出处。
2026-04-30 00:00:00
356
原创 你还在靠日志猜线上发生了啥?为什么不让 JMX 直接“开口说话”?
先确认一下,避免我写偏:你这个“构建一个 JMX 管理的配置服务”,是更偏向Spring Boot 应用内嵌(最常见),还是偏向**纯 Java/应用服务器(Tomcat/WebLogic/JBoss)**那种部署形态?我下面先按“Spring Boot/普通 Java 服务都能用”的写法来,尽量不依赖框架;你回一句“用不用 Spring”,我再把示例升级成你项目最贴近的版本。🙂如果你觉得这篇文章对你有帮助,或者有任何想法、建议,欢迎在评论区留言交流!
2026-04-29 09:58:21
503
原创 你还在 `instanceof` 后面强转吗?Java 的模式匹配不香吗?
你看到了吗?同一件事被写了两遍判断它是不是String然后再强转一次强转这种东西就像你家门口那块松动的地砖:平时没事,一踩就摔。判断成功,变量s自动绑定作用域只在 if 里,不会污染外面少写一行强转,少一份风险我不仅要判断类型,我还要把它当成这个类型来用。instanceof类型模式在 Java 16 成为正式特性(不再是预览)。你如果团队里有人还停在 Java 8……嗯,那你只能继续陪它演“强转的戏”了🥲它不是银弹,也不值得为了“看起来高级”而滥用。
2026-04-29 09:58:04
331
原创 你以为把 `MaxGCPauseMillis` 调小就能“低延迟”?那为什么它反而让你更卡了?
如果你觉得这篇文章对你有帮助,或者有任何想法、建议,欢迎在评论区留言交流!我是一个在代码世界里不断摸索的小码农,愿我们都能在成长的路上越走越远,越学越强!✍️ 作者:某个被流“治愈”过的 Java 老兵📅 日期:2026-01-07🧵 本文原创,转载请注明出处。
2026-04-07 01:00:00
640
原创 你还在用“右键压缩/解压”当成后端能力?那线上归档炸了你准备怎么解释?
压缩这事吧,看起来像个“小工具问题”,但真到线上你就会发现:它一点都不小。归档一堆文件,结果路径被写成绝对路径,解压到哪都带一串奇怪目录;用户传了个 zip,你一解压直接把服务器目录覆盖了(是的,经典 Zip Slip);文件很大,你一口气读进内存,JVM 直接“白屏重启”;想多线程压缩,结果压出来的包顺序乱、还会冲突……所以这篇我按你给的大纲,从 Zip/GZIP/Deflater 到 Jar/Manifest,再到性能缓冲、多线程策略,最后做一个能落地的文件归档工具。
2026-04-07 00:00:00
358
原创 Java注解处理器(APT),一文搞懂!
APT(Annotation Processing Tool)是 Java 编译器在编译阶段提供的一套扩展机制:你写注解(比如@Builder@MyMapper编译时(javac)会调用你写的注解处理器(Processor)读源码结构(类、字段、方法、注解参数)生成新源码.java文件)报编译错误/警告(强制规则)然后编译继续,把你生成的源码一起编译进产物反射:运行时才知道,错误晚爆炸APT:编译期就决定,错误早发现,生成代码更快更稳编译器边编译边让你插一段“工厂流水线”,自动做重复劳动。
2026-04-06 01:00:00
748
原创 你真要迁移到模块化吗?还是只想让 JDK 别再对你吼 “Illegal reflective access” 了?
迁移到模块化后,一个很“香”的收益是:你可以用jlink生成只包含所需模块的自定义运行时镜像。JEP 282 明确将 jlink 定义为“把一组模块及其依赖组装并优化为自定义运行时镜像”的工具。✅先跑起来:应用先在新 JDK 上跑(classpath)✅固定模块名:自家 jar 加✅从边界清晰模块下手:先拆 util/api/model✅反射冲突先止血,但必须列技术债✅依赖传导要显式✅成熟后再 jlink:自定义 runtime-image✅需要兼容多版本才用 MRJAR。
2026-04-06 00:00:00
373
原创 你还把动态代理当“InvocationHandler 小把戏”?那 RPC 的 Stub 到底是怎么“凭空长出来”的?
!!!} }Arrays;!工程建议。
2026-04-05 00:00:00
363
原创 你还在为调个 C 函数写 JNI 胶水代码、配头文件、祈祷别段错误?那 Java 22 的 FFM 你准备装作没看见吗?
JNI 不是不能用,是太容易把项目带进“维护地狱”。一旦你把 C/C++ 胶水写进来,后面就是:平台差异、编译链、崩溃定位、内存释放顺序、线程附加……每一样都能把人磨得没脾气。FFM(Foreign Function & Memory API)就像 Java 终于想明白了:与其让大家继续用 JNI/Unsafe 硬闯,不如给一套纯 Java、类型更安全、性能不拉胯的官方互操作方案。它位于包,通过Linker + MethodHandle 调用外部函数,通过。
2026-04-04 01:00:00
792
原创 你加的锁真是在“保证一致性”吗?还是在把吞吐量按在地上摩擦?
我见过太多团队把锁优化理解成两种极端:“锁?性能杀手!全上无锁!然后写出一堆你看不懂、他也改不动的 CAS 旋转木马,最后靠祈祷上线。“不管三七二十一,synchronized 先包起来!然后系统吞吐像被掐住喉咙,慢得非常有尊严。更现实、更中立的结论是:降低竞争、缩短持锁时间、减少共享、把冲突从一个点摊开。如果你觉得这篇文章对你有帮助,或者有任何想法、建议,欢迎在评论区留言交流!我是一个在代码世界里不断摸索的小码农,愿我们都能在成长的路上越走越远,越学越强!
2026-04-04 00:00:00
363
原创 你真以为“加个日志”必须改业务代码?代理模式不服,你服不服?
在不改原对象代码的前提下,拦一道,做点事,再把调用转发过去。你要办事(调用方法)代理帮你先登记(日志/鉴权/监控)再去真正窗口(目标对象)办完再回来盖章(统计耗时/异常处理)业务代码只想做业务,横切逻辑交给代理来做。如果你觉得这篇文章对你有帮助,或者有任何想法、建议,欢迎在评论区留言交流!我是一个在代码世界里不断摸索的小码农,愿我们都能在成长的路上越走越远,越学越强!✍️ 作者:某个被流“治愈”过的 Java 老兵📅 日期:2026-01-07🧵 本文原创,转载请注明出处。
2026-04-02 21:42:19
24
原创 你都准备上 Java 21 了,还打算把“预览特性”当正式特性用吗?
Java 21 是 **LTS(长期支持)**版本,主打“能上生产、值得上生产”的那种更新。一部分是并发模型的巨大升级(虚拟线程正式转正)一部分是语言表达力增强(模式匹配更完整、未命名变量/模式更简洁)还有一部分是集合与运行时层面的体验改进(比如 Sequenced Collections、分代 ZGC 等)Virtual Threads(虚拟线程)正式版:并发写法会更“像写同步代码”,但吞吐能上一个台阶。一些看起来很甜的语法糖(比如字符串模板、未命名变量)其实是Preview。
2026-04-02 21:42:08
166
原创 你真以为 Java 只能“写代码跑起来”?那字节码为什么还能被你改到“换了个人”?
纯注解处理器(Annotation Processor)本职是生成源码/资源,它并不擅长直接“改已经编译好的 .class”。方案:注解处理器负责“收集信息”,构建阶段任务负责“字节码注入”。这样既符合 Java 编译链的习惯,也不容易跟编译器打架。@Target(ElementType . METHOD) @Retention(RetentionPolicy . CLASS) // 只要进到 class 文件即可 public @interface Timed {
2026-04-02 21:37:35
136
原创 你以为 `parallel()` 一加就更快?那为什么很多时候它反而更慢?
先确认一下:你这里的“大数据处理”是指内存里几十万/几百万条集合处理,还是指IO/数据库/文件流式处理?我下面先按“CPU 密集型集合计算”来写(这是并行 Stream 最适合的场景),IO 场景我会专门提醒哪些千万别并行🙂。如果你觉得这篇文章对你有帮助,或者有任何想法、建议,欢迎在评论区留言交流!我是一个在代码世界里不断摸索的小码农,愿我们都能在成长的路上越走越远,越学越强!✍️ 作者:某个被流“治愈”过的 Java 老兵📅 日期:2026-01-07🧵 本文原创,转载请注明出处。
2026-04-02 21:24:37
130
原创 你以为 `++` 是原子操作?那你敢不敢让 100 个线程一起给你“加一”试试?
在不加锁(或尽量少锁)的前提下,实现对共享变量的原子更新。AtomicLong:原子整型更新(计数、序列):状态开关(是否初始化、是否关闭):引用类型原子更新(比如“无锁替换配置对象”):数组元素原子更新:处理 ABA(后面讲)LongAdder:高并发计数/聚合(更抗压)“我不想用 synchronized 锁住整段代码,但我又必须保证更新是原子的。如果你觉得这篇文章对你有帮助,或者有任何想法、建议,欢迎在评论区留言交流!
2026-04-02 21:24:05
271
原创 你确定服务是“慢”吗?还是其实早就“卡死”了,只是你还没去看线程 dump?
如果你觉得这篇文章对你有帮助,或者有任何想法、建议,欢迎在评论区留言交流!我是一个在代码世界里不断摸索的小码农,愿我们都能在成长的路上越走越远,越学越强!✍️ 作者:某个被流“治愈”过的 Java 老兵📅 日期:2025-08-25🧵 本文原创,转载请注明出处。
2026-04-02 21:23:15
435
原创 你写的“校验”真的是安全校验吗?还是只是在安慰自己“应该没事吧”?
如果你觉得这篇文章对你有帮助,或者有任何想法、建议,欢迎在评论区留言交流!我是一个在代码世界里不断摸索的小码农,愿我们都能在成长的路上越走越远,越学越强!✍️ 作者:某个被流“治愈”过的 Java 老兵📅 日期:2025-08-25🧵 本文原创,转载请注明出处。
2026-04-02 21:23:05
311
原创 你以为写个 for 循环就能跑满 CPU?那 SIMD 的“白嫖性能”你真舍得不要吗?
如果你觉得这篇文章对你有帮助,或者有任何想法、建议,欢迎在评论区留言交流!我是一个在代码世界里不断摸索的小码农,愿我们都能在成长的路上越走越远,越学越强!✍️ 作者:某个被流“治愈”过的 Java 老兵📅 日期:2025-08-25🧵 本文原创,转载请注明出处。
2026-04-02 21:22:17
399
原创 你还在手动点“Build App”发群里?鸿蒙 CI/CD 不自动化你怎么敢发版啊?
👋 你好,欢迎来到我的博客!我是【菜鸟学鸿蒙】 我是一名在路上的移动端开发者,正从传统“小码农”转向鸿蒙原生开发的进阶之旅。为了把学习过的知识沉淀下来,也为了和更多同路人互相启发,我决定把探索 HarmonyOS 的过程都记录在这里。
2026-04-02 21:21:36
392
原创 你还在手动拆 record?Java 21 都能“解构匹配”了,你不心动吗?
BigDecimal;List;Map;如果你觉得这篇文章对你有帮助,或者有任何想法、建议,欢迎在评论区留言交流!我是一个在代码世界里不断摸索的小码农,愿我们都能在成长的路上越走越远,越学越强!✍️ 作者:某个被流“治愈”过的 Java 老兵📅 日期:2025-08-25🧵 本文原创,转载请注明出处。
2026-04-02 21:21:11
335
原创 你真的以为“把中文翻成英文”就叫 i18n?那为啥一到夏令时你系统就开始装死?
国际化(i18n)这东西,很多团队一开始都很自信:“简单啊,不就是搞个吗?德国人看到的数字小数点不对日本用户日期格式怪怪的纽约用户的时间比你早一天夏令时那天你们的定时任务执行了两次(或者一次都没执行)i18n 从来不是翻译,是“让不同地区的人看到对的东西、在对的时间发生对的行为”。这篇我按你给的大纲来,讲Locale的高级用法()、数字和日期格式化、Unicode 的坑(尤其 surrogate)、再到时区/DST 的工程实践,最后落一个“多语言 Web 应用”的实现方案和代码示例。
2026-04-01 21:07:03
614
原创 你还在用 Method.invoke() 跑 ORM?那你是在给 CPU 练心肺吗?
让框架能在运行时处理未知类型。比如 ORM、序列化、DI 容器、RPC 框架……没有反射,它们会难写很多。每次调用/访问都有额外间接层(安全检查、参数装箱、类型适配等)JIT 不容易内联(内联不了,就很难把热路径优化到极致)反射可以有,但要变成“初始化时做一次”,而不是“每次请求都做”。如果你觉得这篇文章对你有帮助,或者有任何想法、建议,欢迎在评论区留言交流!我是一个在代码世界里不断摸索的小码农,愿我们都能在成长的路上越走越远,越学越强!✍️ 作者:某个被流“治愈”过的 Java 老兵。
2026-04-01 21:06:42
401
原创 你真的需要“异步”吗?还是你只是想把问题丢给未来的自己?
很多人上来就问:“异步是不是性能更好?你现在慢,是 CPU 慢,还是在等 IO?如果你在等网络、等数据库、等磁盘——异步/并发能帮你把“等待时间”利用起来。如果你纯 CPU 计算,异步不一定让你更快,甚至可能更乱。🙃让线程别傻等,让系统在高并发下不崩、不堵、不失控。Reactor 是 Reactive Streams 的一个主流实现(Spring WebFlux 就靠它)。Mono<T>:0 或 1 个元素Flux<T>:0 到 N 个元素。
2026-04-01 21:06:29
362
原创 你还在为“高并发 IO”堆线程池、写回调、背 Reactor 吗?Java 21 的虚拟线程不香吗?
如果你觉得这篇文章对你有帮助,或者有任何想法、建议,欢迎在评论区留言交流!我是一个在代码世界里不断摸索的小码农,愿我们都能在成长的路上越走越远,越学越强!✍️ 作者:某个被流“治愈”过的 Java 老兵📅 日期:2026-01-07🧵 本文原创,转载请注明出处。
2026-03-31 02:00:00
444
原创 你还在忍受“JAR 地狱”吗?都 Java 9+ 了,为什么不敢用 JPMS 把它一刀切了?
👋 你好,欢迎来到我的博客!我是【菜鸟不学编程】 我是一个正在奋斗中的职场码农,步入职场多年,正在从“小码农”慢慢成长为有深度、有思考的技术人。在这条不断进阶的路上,我决定记录下自己的学习与成长过程,也希望通过博客结识更多志同道合的朋友。 🛠️ 主要方向包括 Java 基础、Spring 全家桶、数据库优化、项目实战等,也会分享一些踩坑经历与面试复盘,希望能为还在迷茫中的你提供一些参考。 💡 我相信:写作是一种思考的过程,分享是一种进步的方式。
2026-03-30 21:46:06
574
原创 你真的需要“全栈”吗?还是只是想把需求从嘴上落实到线上?
我见过两类“全栈”——一类是“啥都懂一点”,聊起来头头是道,但一到落地就开始“这个得再评估下”。另一类是“脏活累活都干过”,写过页面、踩过接口坑、被数据库慢查询折磨到凌晨两点,最后能把产品拎起来上线。我更偏第二种。不是因为它更酷(其实也挺苦),而是因为:**能交付的人,才有话语权。**你写的代码不是为了“优雅”,而是为了“能用、好用、可维护”。别让架构图比产品更完整。接下来我会用一个真实开发里高频出现的小项目做贯穿案例:✅ 一个“轻量任务管理”应用:支持登录、创建任务、列表分页、完成状态切换。
2026-03-30 21:45:54
148
原创 你真的以为“全栈”就是前端 + 后端随便拼一拼吗?
我用 Next.js 写页面!“我用 Node/Express 搞 API!“我再接个数据库!“最后一键部署,完美!结果三天后发朋友圈:“谁懂啊……cookie 怎么不见了……CORS 为什么又炸了……我只是想做个登录而已啊!!!你看,全栈的坑往往不是“不会写代码”,而是你以为系统是乐高——咔咔一拼就能跑。现实是:它更像装修。你以为买了瓷砖就完事,结果水电没走、地不平、门框还歪。😤全栈到底难在哪?以及怎么用工程化思维把它变简单。
2026-03-30 21:45:41
241
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅