- 博客(138)
- 资源 (1)
- 收藏
- 关注
原创 现代大前端是如何编码的?
近几年,大前端越来越流行声明式UI+响应式编程的模式,如React、Vue、Flutter、Compose等,通过分析主流的语言框架的写法,提炼声明式UI+响应式编程的核心。
2025-06-11 08:31:46
536
原创 进入外包,我犯了所有程序员都会犯的错!
前些天有位小伙伴和我吐槽他在外包工作的经历,语气颇为激动又带着深深的无奈。本篇以他的视角,进入他的世界,看看这一段短暂而平凡的经历。
2025-06-04 08:30:00
644
原创 看了Flutter get状态库源码,我调整了编码姿势
本文分析了Flutter状态管理框架get的实现原理。主要内容包括:1) 状态管理的概念,通过StatefulWidget和setState实现基础UI状态管理;2) 观察者模式的设计,UI作为观察者监听数据变化;3) get框架的GetBuilder实现原理,利用Controller作为被观察者,自动触发setState更新UI;4) Obx与obs的响应式配合方式。文章指出get通过封装观察者模式简化了状态管理流程,使开发者只需关注数据变化。
2025-05-28 08:45:00
666
原创 Hibernate,大部分开发者的第一个ORM框架?
本文介绍了ORM(对象关系映射)技术及其在Java中的实现框架Hibernate。ORM通过将数据库表映射为类、行映射为对象、字段映射为属性,简化了数据库操作。Hibernate作为Java中常见的ORM框架,封装了JDBC,使开发者无需直接编写SQL语句,而是通过操作Java对象间接操作数据库。文章详细讲解了如何在IDEA中使用Hibernate进行数据库的增删改查(CRUD)操作,并比较了Hibernate与JDBC的关系,指出Hibernate在JDBC上层封装,提供了更高级的数据库操作方式。最后,文
2025-05-15 08:45:00
598
原创 老王,你可敢对oncall说No否?
这个五一好不容易有五天假期,之前约了几个朋友(老王、老李、不具名家属)假期去爬爬山顺便整点烧烤,选的是小众的山,烧烤器具、材料自个带。主打一个:偷得浮生半日闲。天时地利,就只差人和了。
2025-05-09 08:28:34
114
原创 知难行易:CRUD原来如此轻松
上篇分析了Java Web注册/登录过程,数据存储仅仅存在于内存。而实际的场景肯定是缺不了数据库,因此本篇通过注册/登录过程演示MySQL数据库CRUD过程。
2025-05-07 08:13:16
965
原创 AI助我!三分钟实现丐版前后端注册登录需求
上篇进入了Java Web的世界,本篇将使用Servlet/JSP来实现简单的注册登录功能,当然我们需要与AI结对编程,AI输出框架代码,我们修缮细节即可。Servlet 注解请求路径Servlet 过滤请求Servlet/JSP 转发和重定向Servlet Session保持登录态小结。
2025-04-22 09:01:36
760
原创 离职当晚,我删除了所有同事的微信
这周末约学弟出来撸串,大热天和啤酒最配。学弟化身为话痨,说着他离职后怒删同事微信的事儿,虽然我觉得他有点冲动,但是又隐隐感觉有点爽😂。代入他的视角,走入他的那几年。
2025-04-21 08:33:33
515
原创 糟糕,又得重新认识上古技术--Servlet/JSP
上一篇讲解了,本篇分析如何通过Servlet、JSP快速渲染网页。有些小伙伴可能疑惑了:Servlet、JPS是多古老的技术了,我SpringBoot一梭哈,还在这卷啥呢?其实不然,SpringBoot也是基于Servlet封装的,通过编写简单的Servlet,认识基本原理,后续可以更好地理解SpringBoot,同时也了解Java Web发展历程。
2025-04-15 08:41:53
643
原创 Flutter 打包APK的几种方式
Flutter打包不同于RN,Flutter可以在Android Studio里编写Flutter代码并最终打包为APK,本篇主要阐述涉及到的几种打包方式。
2025-03-31 08:32:17
2014
原创 当上小组长的第3天,我裁掉了2年老员工
这周末和上上公司的小伙伴小酌一杯,获悉了两则消息,一则好消息,一则坏消息。好消息是他晋升了,当了个小组长,管了4个人。坏消息是他需要优化掉组内一个人。征得本人同意,本文以他的视角来回顾这个魔幻的一周。
2025-03-31 08:31:34
909
原创 Look My Eyes 最新IDEA快速搭建Java Web工程的两种方式
用三张图说明:我们手机上的App各式各样,他们的共同点之一是随时能够刷新内容,靠的就是每个App都接上了互联网,可以从网上获取最新内容。对应到代码术语里的是:前端<—>服务端交互。当前最常用的交互协议是TCP/IP,使用的应用层协议是HTTP协议,如下:前端作为Http Client,服务端作为Http Server,共同为用户提供服务。继续演变如下图:客户端引入Http SDK,服务端引用Http SDK,通信交由该SDK负责。
2025-03-31 08:30:42
620
原创 做了违背祖训的决定,开启全栈修炼之路
拧螺丝是门技术活,怎么把多个螺丝组装成产品更是个考验。。平时的学习、工作过程中你可能会关注、接触、实践一些领域。如果说每个领域是个螺丝,那么我们这个系列文章的目的就一起将螺丝装配成产品。
2025-02-17 08:20:23
338
原创 30岁的程序媛,升值加薪与我无缘
上篇讲述了一位老哥的10年搬砖历程,有位小姐姐看了之后比较有感触,希望我能将她的故事也讲讲,看看能否有共鸣的朋友。
2025-01-20 08:08:36
788
原创 不容易,35岁的我还在小公司苟且偷生
前几天和前同事闲时聚餐,约了两个月的小聚终于达成了,程序员行业聚少离多,所幸大家的发量还坚挺着。期间不可避免地聊到了自己的公司、行业状况以及对未来的看法,几杯老酒之后,大家畅所欲言,其中一位老哥侃起了他的职业生涯,既坎坷又无奈,饭后想起来挺有代表性的,征得他同意故记录在此。以下是老哥的历程。
2025-01-09 08:07:17
631
原创 2025年,给想要入行程序员的同学一些科普
如上俩图,一个是iphone的桌面,另一个是windows的桌面,他们上面有很多图标(常见的QQ、微信等),我们点击去就是打开了一个软件。通俗的叫法是软件,潮流点的称呼是应用,专业点的名称是可执行程序在说跨端之前先说说当今最常使用的操作系统有哪些。桌面端就是我们平时使用的PC(台式机、笔记本电脑):Windows:由微软公司开发,是全球使用最广泛的操作系统之一,适用于个人电脑和企业环境,拥有大量的软件支持。
2024-12-30 08:25:18
843
原创 HarmonyOS Next(纯血鸿蒙)它到底像谁
后续再也没有写关于鸿蒙的文章。没错,我确实入坑了鸿蒙,并且成功上架了几款App和元服务,虽然当前的用户量还比较少,但鸿蒙开发的整体流程已然蹚了一遍,是时候来做一些总结了。本篇从应用开发的角度聊聊鸿蒙它像谁?它有哪些不一样的特征?开发者怎么快速入门?
2024-09-25 08:19:24
8023
3
原创 少年,且听我细说 EventLoop/宏任务/微任务是咋玩的?
上篇文章分析了Promise的重要性以及使用上容易犯错的点,本篇将重点分析EventLoop/宏任务/微任务在浏览器和Node.js里的表现。
2024-06-04 08:20:29
723
原创 先撸清楚:并发/并行、单线程/多线程、同步/异步
在编码的过程中经常会遇到并发/并行、同步/异步、单线程/多线程等术语,在分析JS setTimeout/Promise之前先把这些概念厘清。
2024-04-18 08:27:53
2134
1
原创 Android Studio Gradle Windows下隐藏的编译的坑
最近重拾了一个之前的Android项目,发现Gradle死活都无法编译成功。明明前阵子都是好的,代码都没变,Android Studio配置都没变,咋就不行了呢,百思不得其解。
2024-04-10 22:55:51
950
原创 不吹不黑,辩证看待开发者是否需要入坑鸿蒙
自打华为2019年发布鸿蒙操作系统以来,网上各种声音百家争鸣。尤其是2023年发布会公布的鸿蒙4.0宣称不再支持Android,更激烈的讨论随之而来。本文没有宏大的叙事,只有基于现实的考量。
2024-01-01 22:12:45
2503
原创 Android使用Hilt依赖注入,让人看不懂你代码
以手机为例,要组装一台手机,我们需要哪些部件呢?从宏观上分类:软件+硬件。由此我们可以说:手机依赖了软件和硬件。//打电话//软件//硬件FishPhone 依赖了两个对象:分别是Software和Hardware。Software和Hardware是FishPhone的依赖(项)。
2023-10-30 00:57:37
3281
2
原创 Java切换到Kotlin,Crash率上升了?
最近对一个Java写的老项目进行了部分重构,测试过程中波澜不惊,顺利上线后几天通过APM平台查看发现Crash率上升了,查看堆栈定位到NPE类型的Crash,大部分发生在Java调用Kotlin的函数里,本篇将会分析具体的场景以及规避方式。
2023-09-03 18:26:03
923
原创 匿名内部类/Lambda Java和Kotlin谁会导致内存泄漏?
将函数类型当做形参或返回值的函数称为高阶函数。高阶函数在Kotlin里无处不在,是Kotlin简洁写法的一大利器。长生命周期的对象持有短生命周期的对象,导致短生命周期的对象在生命周期结束后没有被及时回收,导致内存无法复用,最终泄漏合理地释放对短生命周期对象的引用代码基本都在正文里,此处就不贴github链接了,有疑惑请评论/私信后续将会继续输出APT/AGP等全系列流程文章,敬请期待。
2023-07-18 00:19:45
706
原创 关于Jetpack DataStore(Proto)的六点疑问
fun ts() {猜猜是否能编过?答案是否定的。因为Kotlin是强类型语言,声明的str为String类型,那么就只能接收String或是子类的值。引申到SharedPreferences和DataStore存储里。sp?. edit {往SP里写入Int类型数据和String类型数据。这里编译会有问题吗?答案是否定的。运行会有问题吗?答案是肯定的。
2023-06-30 09:51:56
299
原创 关于Jetpack DataStore(Preferences)的八点疑问
DataStore是Android上一种轻量级存储方案,依据官方教程很容易就写出简易的Demo。本篇主要是分析关于DataStore(Preferences)使用过程中的一些问题,通过问题寻找本质,反过来能更好地指导我们合理使用DataStore。
2023-05-22 10:24:55
994
原创 Fragment 要你何用?2.0版本
在之前的文章里有分析过Activity、Fragment、View之间的关联,也简单分析了Fragment的原理。
2023-05-20 09:24:04
2126
原创 这一次,让Kotlin Flow 操作符真正好用起来
Kotlin Flow 如此受欢迎大部分归功于其丰富、简洁的操作符,巧妙使用Flow操作符可以大大简化我们的程序结构,提升可读性与可维护性。然而,虽然好用,但有些操作符不太好理解,可惜的是网上大部分文章只是简单介绍其使用,并没有梳理各个操作符的关系以及引入的缘由,本篇将通过关键原理与使用场景串联大部分操作符,以期达到举一反三的效果。
2023-04-28 11:55:04
1028
1
原创 当,Kotlin Flow与Channel相逢
之前的文章已经分析了Flow的相关原理与简单使用,Flow之所以用起来香,Flow便捷的操作符功不可没,而想要熟练使用更复杂的操作符,那么需要厘清Flow和Channel的关系。
2023-04-21 07:56:16
719
2
原创 来吧!接受Kotlin 协程--线程池的7个灵魂拷问
当时偏重于整体原理,对于细节之处并没有过多的着墨,后来在实际的使用过程中遇到了些问题,也引发了一些思考,故记录之。
2023-03-06 08:18:24
1224
原创 狂飙吧,Lifecycle与协程、Flow的化学反应
return CoroutineScope(SupervisorJob() + Dispatchers . IO) } //使用 application . scope . launch {delay(5000) println("协程在全局状态运行1") }构造了全局的协程作用域,当在其它模块拿到Application实例时就可以访问该扩展属性。此种方式的好处:可以方便地自定义协程上下文。
2023-02-23 01:05:42
469
原创 Kotlin SharedFlow&StateFlow 热流到底有多热?
前面分析的都是冷流,冷热是对应的,有冷就有热,本篇将重点分析热流SharedFlow&StateFlow的使用及其原理,探究其"热度"。
2023-02-03 00:11:21
1091
5
原创 Kotlin Flow 背压和线程切换竟然如此相似
上篇分析了Kotlin Flow原理,大部分操作符实现比较简单,相较而言背压和线程切换比较复杂,遗憾的是,纵观网上大部分文章,关于Flow背压和协程切换这块的原理说得比较少,语焉不详,鉴于此,本篇重点分析两者的原理及使用。通过本篇文章,你将了解到:先看自然界的水流:为了充分利用水资源,人类建立了大坝,以大坝为分界点将水流分为上游和下游。而对于Kotlin里的Flow,也有上游(生产者)、下游(消费者)的概念,如:通过collect操作符触发了流,从生产者生产数据(flow闭包),到消费者接收并处理数
2022-12-04 00:04:31
1346
原创 Kotlin Flow啊,你将流向何方?
自然界的流水,从高到低,从上游到下游流动。而对于计算机世界的流:数据的传递过程构成了数据流,简称流此处对数据的处理即为找出其中的偶数。可以看出,原始数据是1~1000,我们对它进行了一些操作:过滤偶数、过滤>500的数。当然还可以进行其它操作,如映射、变换等。原始数据对数据的一系列操作最终的数据把这一系列的过程当做流:从流的方向来观察,我们称原始数据为上流,对数据进行一系列处理后,最终的数据为下流。从流的属性来观察,我们认为生产者在上流生产数据,消费者在下流消费数据。
2022-11-22 00:37:47
843
原创 Kotlin Sequence 是时候派上用场了
Java说:“我从Java8开始就支持Stream(流) API了,可以满足你的需求。”客户不解道:“什么是流?”Java:“流就是一个过程,比如说你之前的需求就可以当做一个流,可以在中途对流做一系列的处理,而后在流的末尾取出处理后的结果,这个结果就是最终的结果。”Kotlin补充道:“老大哥,你说的比较抽象,我举个例子吧。”在一个管道的入口处放入了各种鱼,如草鱼、鲤鱼、鲢鱼、金鱼等,管道允许接入不同的小管道用以筛选不同组合的鱼类。
2022-11-01 12:45:52
825
原创 Android Binder 原理换个姿势就顿悟了(图文版)
Binder机制可谓是Android 知识体系里的重中之重,作为偏底层的基础组件,平时我们很少关注它,而它却是无处不在,也是Android 面试易考察的点之一。网上很多文章,要么知识点比较陈旧,要么源码贴一堆,要么没有成体系地分析,导致读者一知半解,似是而非。本篇将从流程上将Binder通信过一遍,尽量多用图展示。
2022-10-23 22:08:13
1663
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人