
轻量级组件
文章平均质量分 93
sp42a
What the web can be
展开
-
轻量级二维码生成器
提起 Java 的二维码生成器,相信大家都会想起 ZXing(Zebra Crossing),可是当笔者搜索 ZXing 的替代时候,却发现难以替代——原本想着有没有几个类简简单单地就可以实现二维码生成的,却几乎没有,倒是其他语言例如 JavaScript 就有原生生成二维码的,而且 Java 更多的,是基于 ZXing 的封装方案。当然了,单凭笔者自身的水平,写是不可能自己去写一个出来的——顶多只能学习、观摩别人开源的,进一步再加以封装而已。原创 2024-06-20 14:46:50 · 505 阅读 · 0 评论 -
轻量级 S3 协议存储客户端
目前大家一般不会把二进制文件直接放在应用服务器上,而是存在“对象存储”的方案中,例如亚马逊的 AWS,阿里云的 OSS、Cloudflare R2 等。AWS 是最早的始作俑者,因此其 S3 协议也近乎标准化,各大厂商的对象存储方案都实现该协议。基本上各家都有提供方便的 SDK 可以用快速调用 S3 服务,不过其中的原理并不是太复杂,笔者一时“手痒”就想打造自己的 S3 客户端。原创 2024-04-13 17:38:24 · 3588 阅读 · 0 评论 -
轻量级角色权限组件
本文采用“用户+角色+权限”的模式设计一个简明的权限组件,力求清晰易维护、易扩展。该组件基于 Spring 后端与 Vue 前端的框架,并给出实际可运行的代码。虽然设计这组件的时候,是打算独立、不耦合的组件,但完整的功能外延还是涉及外部模块,于是最终成品来说,它的相关依赖也离不开 AJ-IAM,属于笔者 AJ-IAM 用户系统的一部分。尽管如此,更重要的是,笔者想借此文来分享“角色-权限”的设计思维与实际应用,以飨读者。原创 2024-02-20 15:33:14 · 1071 阅读 · 0 评论 -
轻量级 HTTP 请求组件
Apache HttpClient 是著名的 HTTP 客户端请求工具——现在我们模拟它打造一套简单小巧的请求工具库, 封装 Java 类库里面的 HttpURLConnection 对象来完成日常的 HTTP 请求,诸如 GET、HEAD、POST 等等,并尝试应用 Java 8 函数式风格来制定 API。原创 2024-01-11 22:03:48 · 1477 阅读 · 0 评论 -
轻量级的资源授权:基于 OAuth 规范
感觉 OAuth 太负盛名了,以至于后来在 OIDC 反而难以企及前辈 OAuth。倒是大家谈论比较多的是 JWT(例如),——实际谈 JWT 就是在实现 OIDC,反而 OIDC 大家不怎么爱谈!但我们要知道的是,真正诠释这些的,做点单点登录的,——是 OIDC 规范,JWT 只是 OIDC 规范下的一种 Token 协议,再说句难听的,如果 JWT 不满足或者有问题,换别的 Token 实现规则也行。原创 2023-11-18 15:51:08 · 278 阅读 · 0 评论 -
轻量级 Java 日志组件
日志记录功能在开发中很常用,不仅可以记录程序运行的细节,方便调试,也可以记录用户的行为,是框架中不可或缺的组件。为最大程度复用现有的组件,我们就地取材使用了 JDK 自带的 JUL()作为日志组件,并对其进行功能上的增强。这是笔者 17 年的时候就研究过了(见博客时至今日,感觉还是使用 Slf4J API 的人群多,顺应潮流,决定打造兼容 Slf4J 风格的整合,使用上也更便捷,可结合 Lombok 强大的功能,在类身上施加一个注解即可。原创 2023-11-18 15:50:20 · 491 阅读 · 0 评论 -
轻量级 FTP 组件
小巧玲珑的 FTP Java 组件,剥离自 JDK原创 2023-11-13 21:44:41 · 252 阅读 · 0 评论 -
轻量级 SSO 方略:基于 OIDC 规范(二)
介绍了 SSO 相关的基础数据,这样有了 ClientId 和密钥后,我们就要准备客户端这边的代码。客户端当前指的便是一个网站(也就是 RP),这个网站要求有会员功能,典型地网站导航上通常会有“注册”或“登录”的链接。假设我们这是最简单的网站,采用 Servlet Session 本地记录用户凭证。本身这个网站设计用户的模块,得通过 SSO 完成用户登录。另外我们还要准备一个登录页面,简单的例子如下。这个页面存在 SSO 中心(也就是 OP)的,而不是客户端的。原创 2023-11-13 21:43:27 · 716 阅读 · 0 评论 -
轻量级 SSO 方略:基于 OIDC 规范(一)
OIDC 是 OpenID Connect,见官网介绍。OIDC 为用户身份认证提供了明确的规范指南,以方便我们更好地设计一个 SSO 产品。原创 2023-10-29 00:58:18 · 510 阅读 · 0 评论 -
轻量级邮件发送组件:基于 Socket/SMTP 协议的浅层封装
Java 发送邮件组件,大家第一时间想到的就是 JavaMail。JavaMail 本身也不大,才 500kb 的 jar 包,足够轻量级。而今天为大家介绍的,可以说“羽量级”,核心一个类就可以发送邮件了,除了依赖 JDK 无须依赖什么。如果我们了解 SMTP 协议以及 Socket 的简单使用,就知道其中过程并不复杂——实质都是基于文本的协议交互。原创 2023-11-03 13:44:47 · 336 阅读 · 0 评论 -
轻量级仿 Spring Boot=嵌入式 Tomcat+Spring MVC
SpringBoot 嵌入了 Web 容器如 Tomcat/Jetty/Undertow,——这是怎么做到的?我们以 Tomcat 为例子,尝试调用嵌入式 Tomcat。为了说明如何打造轻量级的 SpringBoot,本文分为“嵌入式 Tomcat”、“增强 SpringMVC”和“打包/部署”三个小节来介绍。原创 2023-10-25 18:12:41 · 1058 阅读 · 0 评论 -
轻量级导出 Excel 标准格式
一般业务系统中都有导出到 Excel 功能,其实质就是把数据库里面一条条记录转换到 Excel 文件上。Java 常用的第三方类库有 Apache POI 和阿里巴巴开源的 EasyExcel 等。另外也有通过 Web 模板技术渲染 Excel 文件导出,这实质是 MVC 模式的延伸,数据转为成不同的视图罢了。原创 2023-10-20 23:06:37 · 1621 阅读 · 0 评论 -
轻量级 Bean 实体校验器
利用 Spring 自带校验器结合 JSR 注解实现轻量级的 Bean 实体校验器。轻捷、简单、很容易上手,也容易扩展。三个核心类`ValidatorInitializing`、`ValidatorImpl`、`ValidatorEnum`去掉注释不超过共200行源码实现 10多m 的 Hibernate Validator 多数功能。原创 2023-08-20 12:14:52 · 269 阅读 · 0 评论 -
轻量级 Spring Task 任务调度可视化管理
大家都知道 Spring Scheduler 好用和怎么用,但它没有一个像 XXL-Job 有个后台界面的,好像不太完整,于是笔者打算为 Spring Scheduler 提供一个可视化的操作界面,虽然赶不上 XXL-Job 那么强大,但也算弥补其中缺失的一环。它支持在线监控执行的任务、支持动态修改任务状态、暂停/恢复任务,以及终止运行中任务。另外本组件的特色就是非常简单,或者说“轻量级”,只有两个主要的类和一个前端静态 html 组成,Java 的话总共不超过 500 行代码。原创 2023-08-12 10:24:16 · 1627 阅读 · 5 评论