羊羽'Blog

0基础带你精通Java对象序列化--以Hessian为例

概述 在高级编程语言的世界中,开发者始终与【object/struct】这类高度抽象的数据结构打交道。然而在分布式架构下,任何服务进程都不是数据孤岛——跨进程数据交换是必然需求。 以Java为例,业务逻辑的输入输出都是【object】。但在RPC场景中,这些对象必须经由网络传输。这里出现了一个根本性矛盾:网络介质(网线/光纤)对面向对象编程(OOP)一无所知,它们只会用光和电忠实地传输扁...

基于RSS构建个性化的资讯平台

背景 作为软件开发工程师,我们需要片刻不停地追踪新技术动态、学习最佳实践。过去几年,我的书签栏里逐渐堆积了感兴趣的、有干货的开发者个人站点。但这种传统方式逐渐暴露出明显痛点: 信息滞后:只能主动想起去点击,容易错过重要更新 管理低效:书签数量膨胀后难以分类检索 阅读分散:需要在多个标签页反复切换 直到我发现RSS(Really Simple Syndication)订阅...

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

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

自定义浏览器书签栏图标

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

Protobuf编解码原理和实践

概述 数据的本质是一串结构化的二进制流,尤其是当我们需要将数据进行【存储】或者【传输】时,毕竟硬盘和网线都只能透明的处理二进制数据,它们可不会面向对象编程! 现代高级编程语言(如Java、Python、JavaScript等)为我们封装了底层复杂性,开发者日常操作的多是高级数据结构: Java中的对象(Object) Golang中的结构体(Struct) Python中...

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

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

给Javaer看的大模型开发指南

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