我们在初学Java Web时都做过最简单的认证:定义一个登录Servlet,负责将前端传入的用户名/密码与数据库中的数据比对,如果一致则登录成功,然后将用户信息放入Cookie。随后定义一个Filter,负责取出Cookie中的用户信息进行验证。步入职场后,我们发现实际使用的认证方案其实相当复杂,多
一个简单的拔插式认证框架是什么样的
「Cello Romance」的考古记录
CCTV10科教频道的《讲述》栏目曾经引用过一首罐头音乐,我于2009年左右通过这档栏目听到了这首音乐,不过当时我并知道名字,那时也没有听歌识曲,所以几年来一直无处搜寻,直到2017年暑假,这首音乐出现在了我的网易云音乐日推。但是网易云的音源不知从何而来,网易云上不仅名字是错误的(网易云上的名字为C
Mybatis:TypeHandler、Interceptor的应用案例
TypeHandler、Interceptor是Mybatis中的两种接口。TypeHandler是类型转换器,负责JDBC类型与Java类型之间的转换;Interceptor是拦截器,允许开发者在SQL执行前后添加自己的逻辑。本文为这两种接口分别给出应用案例。 TypeHandler 场景 我们经
BeanFactoryPostProcessor的应用案例
我们都知道BeanFactoryPostProcessor是Spring的扩展点之一,它允许在Bean实例化之前对Bean的定义进行修改,本文结合自身工作经历对其实际应用进行简单讲解。 背景 toB产品一般都要对接甲方的一些系统才能落地,对接方式多种多样,其中一种是甲方以jar包的形式提供相关API
Spring如何注入静态变量
有些时候,我们需要将bean作为静态变量注入到类中,但是Spring本身不支持这么做,本文列举了两种变通的方法。 方法一 @Component public class ConfigManager { private static ConfigMapper configMapper;
Java日志体系摘要
Java存在好几种日志框架,刚学Java以及初入职场时,可能会一头雾水,只知道调用API,而对背后的日志体系与规范完全不了解。Reference中引用的文章就对Java日志体系做了很好的总结,本文结合自身工作经历对其中的知识点做一些简要记录。 Log Facade与Log Implementatio
Maven的重要知识点
初学J2EE时都会学习Maven,但工作后未必需要自己去维护依赖,导致对Maven的认知还仅限于追加dependency标签。工作几年后再系统性地回顾Maven,发现有些知识点至关重要,它们能帮助自己维护依赖时做到有的放矢。 依赖关系 引入依赖前,我们需要清楚应该采用何种依赖关系,虽然大部分依赖的s
CountDownLatch、CyclicBarrier、Phaser的含义与使用场景
CountDownLatch、CyclicBarrier、Phaser都是J.U.C包中控制线程调度的工具类,并且功能上一脉相承又层层递进,它们在一些经典的多线程场景中发挥着重要的作用。 CountDownLatch 含义 CountDownLatch可以简单理解为一个计数器。 其核心思想在于:为主
shell获取本机IP
#!/bin/sh # 获取本机IP,如果是多网卡多IP,则ip之间以","分隔 ip='' ipAddr=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"` ipArray=(
Debian部署screego
环境: Debian10.5 caddy2.x screego1.7.4 所有操作均以root进行 下载screego mkdir /home/screego cd /home/screego wget https://github.com/screego/server/releases/downl