- 博客(60)
- 收藏
- 关注
原创 ktor:ktor-server.routing.RoutingResolveTrace
摘要:RoutingResolveTrace是Ktor框架中用于调试路由匹配过程的工具类。RoutingResolveTraceEntry记录单个路由节点的匹配尝试,包含当前路由节点、处理的URL段索引和匹配结果。RoutingResolveTrace则记录整个请求的路由匹配全过程,包括遍历的所有路由、匹配成功/失败情况、候选路由及最终选择,用于分析请求为何命中或未命中特定路由。这两个类共同构成了Ktor路由系统的调试追踪机制。
2025-12-25 10:30:00
152
原创 ktor:ktor-server.routing.RoutingResolveResult
RoutingResolveResult 路由解析结果摘要 RoutingResolveResult表示HTTP请求在路由树中的匹配结果,包含匹配状态、成功/失败原因。其核心抽象属性parameters存储路径参数(如/users/{id}中的id值)。设计上采用强约束:失败结果(Failure)的parameters会抛出异常,防止误用未匹配成功的参数。Failure类额外包含失败原因(reason)和错误状态码(errorStatusCode)。这种设计强制开发者只在路由匹配成功时才能访问参数,确保逻辑
2025-12-25 10:30:00
197
原创 ktor:ktor-shared.events.Events
Ktor的Events模块实现了订阅-发布模式,包含三个核心功能:订阅事件(subscribe)、取消订阅(unsubscribe)和触发事件(raise)。它使用EventDefinition作为事件唯一标识,EventHandler作为事件处理逻辑。内部通过线程安全的CopyOnWriteHashMap存储事件与处理程序链表的映射关系,订阅时添加处理程序到链表末尾,取消时移除对应节点,触发事件时顺序执行所有处理程序并在最后统一抛出异常。该设计确保了事件处理的安全性和可靠性。
2025-12-24 10:30:00
268
原创 ktor:ktor-server.routing.RoutingRoot
摘要 RoutingRoot是Ktor框架中的根路由节点类,继承自RoutingNode并实现Routing接口。主要功能包括: 提供路由追踪功能,帮助调试路由解析问题 实现路由拦截器逻辑,处理请求路由匹配 包含路由执行逻辑,构建并执行请求处理管道 作为插件安装到Ktor应用中,提供路由生命周期事件监控 该类封装了Ktor路由系统的核心功能,包括路由解析、请求处理和事件通知机制。
2025-12-24 10:30:00
156
原创 tcp基础知识
本文摘要: TCP协议核心机制解析,涵盖三次握手/四次挥手、流量控制、拥塞控制等关键技术点。重点分析了TIME_WAIT状态的双重作用:确保最后一个ACK可靠送达(2MSL等待)和防止旧连接数据污染新连接。同时解释了半连接队列满时丢弃第三次握手ACK的设计考量(安全性和资源保护)。其他内容包括滑动窗口、延时确认、重传机制等TCP核心功能,为网络协议学习提供了系统性的技术参考。
2025-12-23 10:30:00
1266
原创 socket前置知识
一个套接字由:ip地址和port决定。**IP 数据包的服务类型(Type of Service,TOS)**是 IPv4 头部中的一个字段,用来告诉网络设备(如路由器)该数据包希望获得怎样的传输服务。最初的 TOS 字段包含 8 位,含义如下:后来 TOS 被替代为两个新的概念:简而言之:告诉网络“我是什么类型的流量,你应该怎么处理我”。主要作用包括:路由器和交换机根据 DSCP 对流量进行分类、队列管理,实现 QoS。例如:不同类型的业务可放入不同的队列,实现:运营商、企业网络常使用 DSCP 来:EC
2025-12-23 10:30:00
1027
原创 util.attributes
摘要 Attributes.kt 定义了两个核心概念:AttributeKey 和 Attributes 接口。AttributeKey 是一个泛型类,用于以类型安全的方式访问属性,包含名称和类型信息,其中名称不能为空。Attributes 接口则提供了一个类型化的属性映射机制,通过 AttributeKey 来访问存储的值。该设计强调类型安全和诊断可读性。
2025-12-22 14:22:33
150
原创 其他Pipeline
本文简要介绍了Kotlin中几种Pipeline衍生的子类,包括服务端的ApplicationReceivePipeline(处理传入内容)和ApplicationSendPipeline(服务器响应发送),以及客户端的HttpReceivePipeline、HttpRequestPipeline和HttpResponsePipeline。这些管道类分别用于处理不同方向的网络通信数据流。
2025-12-22 14:21:08
104
原创 util.pipline.Pipeline
本文介绍了pipeline架构的核心概念和工作原理。Pipeline将复杂请求处理划分为多个有序阶段,通过PipelinePhaseRelation确定阶段顺序,支持动态插入阶段。Pipeline管理阶段和拦截器注册,PhaseContent封装具体阶段逻辑。PipelineContext控制执行流程,提供proceed()和proceedWith()方法进行流程控制。SuspendFunctionGun实现了协程式的阶段执行机制,确保拦截器有序执行。整体架构通过阶段划分、顺序控制和拦截器机制。
2025-12-22 14:18:56
993
原创 趣味编程之Dagger和Hilt——依赖注入兄弟俩
——一个关于“代码解耦”与“开发效率”的江湖故事2012年,Dagger横空出世,凭借编译时依赖注入的独门绝技,成为Java界的“解耦大师”。它的核心哲学是:“依赖关系必须清晰,代码生成绝不手软!”但Dagger的硬核操作也让开发者叫苦不迭:程序员吐槽:“写Dagger配置比写业务代码还累,简直是‘配置地狱’!”2020年,谷歌推出Hilt,口号是:“让依赖注入像点外卖一样简单!”对比示例:程序员真香:“Hilt让我从Dagger的‘配置苦力’变成‘甩手掌柜’!”经典对决场景:决策树:第四章:兄弟合
2025-04-20 19:01:41
883
原创 分布式系统大揭秘:你的代码如何在银河系开分公司?
深夜加班的程序员小王突然拍桌:”我的单机程序跑得比博尔特还快,为什么一上生产环境就像树懒上树?这里每个服务都是独立星球,网络延迟比外卖还玄学,而你要做的,是让整个银河系协同工作!" class="reference-link">深夜加班的程序员小王突然拍桌:”我的单机程序跑得比博尔特还快,为什么一上生产环境就像树懒上树?这里每个服务都是独立星球,网络延迟比外卖还玄学,而你要做的,是让整个银河系协同工作!今天打比赛之后实在没时间写了(其实出去玩了😋),诶呀,写不了文章真难受啊(😋)
2025-04-19 23:18:25
449
原创 代码魔法师的最爱:为什么开发者对Linux爱得深沉?
如果编程世界有一场"开发者真爱度"评选,Linux大概会戴着标志性的企鹅头套,抱着吉他唱:“我不过是个平平无奇的系统,却让全球码农为我痴狂~🎸” 这个诞生于1991年的开源系统,究竟施了什么魔法让程序员们欲罢不能?在这里,没有科技巨头的围墙花园,只有一群相信"代码即自由"的理想主义者。用dmesg | tail -20调出系统日记,配合strace进行代码级侦探,每个BUG都是让你升级技能的NPC。错误代码:0x80070005”。这种"我的系统我做主"的自由度,让Windows的蓝屏都显得像是行为艺术。
2025-04-19 22:30:47
347
原创 趣味编程之操作系统趣谈
下一秒,你被吸入代码漩涡,睁开眼时发现自己站在一个巨大的数据过山车前——轨道上飞驰着二进制信号,内存条像摩天轮般旋转,而文件系统正用机械臂在硬盘迷宫里抓娃娃…
2025-04-18 19:32:46
455
原创 Linux之基础命令
掌握这些基础命令后,你已经可以完成Linux系统的大部分日常操作。建议在终端中多实践,结合man命令深入学习参数细节。后续可逐步探索Shell脚本、软件包管理(aptyum)和系统服务管理(systemctl),进一步提升Linux技能!
2025-04-18 19:26:59
721
原创 趣味编程之分布式系统:负载均衡的“雨露均沾“艺术
此篇文章由Deepseek大力支持😋“羊肉卷走3号桌!“肥牛卷去7号!“虾滑优先给VIP区!我蹲在传菜口的监控屏幕前,看着机器人服务生们忙而不乱地穿梭。突然间,1号机器人电量告急,5号机器人卡在传菜电梯里,而新来的8号机器人还在门口迷路…这场景像极了上周线上事故——某个微服务节点突然宕机,整个系统雪崩。老板拍着我的肩膀说:“看见没?咱们这后厨,就是个活生生的负载均衡系统。
2025-04-17 19:04:26
812
原创 趣味编程之写给goroutine的情书
你手一抖打翻了咖啡,突然想起七年前那个雨夜——当其他语言还在用笨重的线程谈着异地恋时,Go轻轻在你耳边说:“我的并发,是轻到能刻在蒲公英上的情诗。
2025-04-16 12:32:53
383
原创 趣味编程之让Android升空的Jetpack
你戴着虚拟现实头盔,眼前的控制台上闪烁着「Android系统发射准备中」。你猛拍控制台,却发现代码库里堆满了陈旧的Activity和乱飞的匿名回调。。"这是谷歌宇航局最新研发的火箭引擎,"机械臂递来一份《星际开发指南》,“它能用Kotlin粒子加速代码,用Compose合金重构UI,还能自动清理太空垃圾(内存)。
2025-04-16 12:31:13
451
原创 趣味编程之一生都在内存泄露的C++
你百思不得其解——明明鱼食包装上写着"高性能颗粒饲料(new)",却没人告诉你每次投喂后要清理鱼便便(delete)。多年后你成为技术总监,在给新人培训时笑道:“C++程序员分两种——正在内存泄漏的,和以为自己没泄漏的。” 台下传来弱弱的提问:“那…当你的程序像气球一样飘向256TB内存占用时,终于明白:指针就像前任的心,你以为紧紧攥着,其实早就不知道丢在哪个函数栈里了。那是我们写给内存的情书,是永不消逝的电波,是…圣彼得擦了擦汗:“见谅,最近C++程序员来得太多,天堂的服务器每天都在内存泄漏。
2025-04-16 12:30:09
422
原创 Go之defer关键字:优雅的资源管理与执行控制
场景推荐做法资源释放必须使用defer错误恢复结合panic/recover使用返回值修改仅在命名返回值时使用高频循环避免使用defer,手动释放资源性能敏感代码权衡可读性与性能损耗核心价值代码简洁性:将清理逻辑与主逻辑解耦异常安全性:确保资源在任何执行路径下释放可维护性:集中管理关键操作警示避免在defer中执行耗时操作注意闭包变量捕获的时机问题警惕循环中积累大量defer调用通过合理运用defer,开发者可以编写出更健壮、更易维护的Go代码。建议结合。
2025-04-15 12:55:35
541
原创 趣味编程之C与Java:编程界的“父与子”恩怨录
从Android开发到大数据(Hadoop)、再到云原生(Kubernetes),用JVM生态证明:“安全与性能可兼得!“Java就像C++的孪生兄弟,只不过一个在工地开挖掘机(C++),一个在写字楼喝星巴克(Java)。詹姆斯·高斯林(James Gosling)看着C家族的内斗,默默种下一棵。” —— 于是C++诞生,给C披上了**C++反怼:“你那指针野性难驯,新人学三天就哭着转行!C老爹怒斥:“你搞的这些虚头巴脑的OOP,性能比我的。(Java曾用名),决心打造一个。
2025-04-14 12:57:37
483
原创 趣味编程之Spring的白学之路
— 每个Java程序员都逃不过的“真香定律”时,突然想起小学作文题:《我的理想》——突然理解《圣经》中“要有光”的真谛——你信心满满打开Eclipse,却被。,冷笑:“呵,年轻人不讲武德!结果发现事务根本没生效!某天你试图自定义一个。
2025-04-13 16:56:45
913
原创 go之为什么学go?
我们都知道有些大厂企业之中,go其实占了挺大的一部分。比如我们熟知的字节跳动,bilibili。在云服务行业,混的风生水起的docker也是go的大儿子。为什么go会如此的强大,发展的如此的快,这个语言到底好在了哪?我们都知道,go的出现比较的早,可以说是现代编程语言了。在他之前出来的c、java、python等等都是不原生支持多核并发的,都是处理单核的。go的成功有着自己得天独厚的优势,因为那个年代,多核cpu已经能够生产了,所以go是原生就支持高并发的。
2025-04-12 18:26:19
522
原创 kotlin协程的使用之协程作用域的类型
这篇文章主要讲的是协程作用域的使用,我所熟知的几个协程作用域有——viewmodelscope、lifecyclescope、GlobalScope、MainScope、supervisorscope、runBlocking以及自定义CoroutineScope。在kotlin中提供了一个更加直观的,便捷的满足Android开发工作者的IO异步请求操作——协程。此篇文章仅对各个作用域的特点进行讲解,不对协程上下文有太多解释哈🤪。
2025-04-11 11:18:33
523
原创 kotlin音乐app之自定义点击缩放组件Shrink Layout
这initxy啥的我都注释了,ai生成的没啥用感觉。在摁下去的时候,也就是dawn,只有一个缩小的动画,其实这里没改写好,perform Click这里可能因为有这个我滑动的时候才会一直触发点_吧(这里省略一字),还请大佬指点啦。上图,视频最后app崩溃是因为我用了redis并且把redi后端中转api部署到了我的myredisapi.com,但是我的代码没放在云上面,或者docker里就崩了。为了丰富用户的体验感,再点击一个item的时候都喜欢能够得到一些反馈,这样,为了能够得到反馈,我写了个缩放布局,
2025-04-11 01:09:30
571
原创 kotlin音乐之自定义唱片组件(简单版本)
是进行了jotkin的一个构造方法的重载,在源码中AppcompatImageView是java代码,在其中有多个构造函数。这个动画的好处在于,你在构造此动画的时候,直接输入rotation字符串就能实现围绕中心点的旋转,特别的方便。再看apply中,因为apply的使用提供了一个this的对象,所以对于属性的赋值更加的方便。这几个控制方法没什么好说的,属性动画非常的贴心把动画的开始、暂停、重启、结束和取消都给我们了。其中,duration表示一次动画的时间为10000毫秒,也就是转一圈为10秒钟。
2025-04-11 00:14:22
1362
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅