羊羽'Blog

一头扎进代码的汪洋大海...

借助Java APT去除样常见样板代码

概述 Coding过程中会遇到大量重复的的样板代码,有没有什么办法可以去掉这些样板代码呢? 本文将结合实际案例给出针对性的解决方案。 空校验:lombok.NonNull 一个合格的coder,多少是得有点【被迫害妄想】症状才行。 这种症状的体现在:不信任任何【输入】!在对输入进行逻辑处理前一定要先进行完整性校验,尤其是null。 这种心态就会导致代码...

自定义浏览器书签栏图标

背景 很多时候我们会把常用书签放到书签栏,但是书签栏就那么大空间,为了装下更多常用书签来快捷访问,我们希望只在书签栏显示网站图标,不带网站标题。 只需要把书签名称置空就可以了。 但是这个又带来一个问题:我们公司的网站大部分都统一用【公司黑标】来做网站图标,放到书签栏就是一堆一样的图标,没有区分度! 比如上面,一个是【APM】书签,一个【玄麟】书签。是不是分不清谁是谁? ...

0成本搭建独立技术博客网站

概述 作为开发者,你是不是每天都会在查阅资料的时候浏览别人那些设计精美、内容硬核的独立技术博客?看着别人分享的代码解析、架构思考、开源项目,是否也曾想过——“我也该有一个这样的博客网站” ? 别再犹豫了!零成本、零服务器、零运维 ,只需一点代码和Markdown,你就能拥有一个高速、自由、完全可控的技术博客。用Jekyll 生成静态页面,用GitHub Pages 托管全球访问,无需担心...

给Javaer看的大模型开发指南

概述 伴随着大模型的性能提升、成本下降,在Web在线对话场景以外,大模型也越来多的被集成到传统业务场景。 在大模型API交互模式、业务集成模式经百家争鸣后已趋于稳定的背景下,Spring作为Java生态里的OSS巨头也下场为LLM提供生态支持,于近期释出 spring-ai 正式版。 需要说明的是,Spring-AI 所提供的能力并不神秘,业务上也不是必须用Spring-AI不可。但是...

浅析Git文件存储原理

概述 近一段时间由于工作涉及到编程式的集成、驱动Git,不得不对Git的一些原理进行了一些探究。考虑到Git是SCM领域事实上的垄断者,那么我的探究对于其他人肯定也有重要的参考意义。因此,本文希望整理一下相关的内容抛砖引玉的带大家了解下Git文件存储原理。 Git仓库布局 Git仓库在文件系统上呈现的就是一个普通的目录,但是目录下有一个【Git Database】,这个【Git Dat...

浅析微服务RPC框架

概述 在云原生与分布式架构深度演进的当下,微服务间基于RPC(Remote Procedure Call)的进程间通信已成为现代系统设计的核心范式。以Spring Cloud、Dubbo、gRPC为代表的各类开源框架,通过封装序列化、服务发现、负载均衡等底层逻辑,构建了高度抽象的API编程界面。这种”本地调用即远程”的设计哲学,使得开发者甚至无需感知TCP/IP握手、HTTP/2流式传输或...

浅析Java类隔离规避依赖冲突的实现原理

本文转载自笔者发表于【得物技术】微信公众号的同名文章(这里) 导语 随着业务规模增长、业务逻辑演进,项目工程的依赖树(二方依赖、三方依赖)变得愈发复杂。随之而来的便是【依赖冲突】问题。 当几个软件包对相同的共享包或库有依赖性,但它们依赖于不同的、不兼容的共享包版本时,就会出现依赖性问题。如果共享包或库只能安装一个版本,用户可能需要通过获得较新或较旧版本的依赖包来解决这个问题...

浅析JVM invokedynamic指令和Java Lambda语法

本文转载自笔者发表于【得物技术】微信公众号的同名文章(这里) 1. 导语 尽管近年来JDK的版本发布愈发敏捷,当前最新版本号已经20+,但是日常使用中,JDK8还是占据了统治地位。 你发任你发,我用Java8:【Jetbrains】2023 开发者生态系统现状 JDK8如此旺盛的生命力,与其优异的兼容性、稳定性和足够日常开发使用的语言特性有极大的关系,这其中最引人...

代码整洁之道-Spring声明式异步

导语 尽管JDK1.4版本(2002年)就提供了NIO机制用于进行非阻塞的网络读写,但是由于历史惯性或者屏蔽复杂度、降低使用心智,业务迭代过程中重度依赖的核心网络资源如JDBC、Redis、RPC都是以BIO的形式透出API。 因此,各个微服务为提升事务吞吐、降低事务延迟,都不约而同的在项目中维护了大量线程池进行精细化的异步调度。 典型代码 @Component public c...

非标类型导致Dubbo接口出入参异常的本质

本文转载自笔者发表于【得物技术】微信公众号的同名文章(这里) 概述 笔者支持过程中多次发现诡异的Dubbo接口异常问题,抓耳挠腮最后定位到代码上和代码外的原因,事后只感觉脑瓜子嗡嗡的。考虑到这不是第一次,也绝不会是最后一次出现类似问题,下面笔者将尽可能详细的梳理、总结一下该问题的现象和本质。 问题是什么? 在DubboRPC+Protostuff序列化场景下,如果DTO中的字...