【工具类:FastJsonRedisSerializer】
工具类:FastJsonRedisSerializer
- 依赖
- yml文件
- FastJsonRedisSerializer.java
依赖
<!-- 主要用于处理 JSON 数据的序列化和反序列化--><!-- 序列化:将对象转换为一种可以存储或传输的格式(如 JSON、XML、二进制等)。这样可以将对象的状态保存到文件中,或通过网络发送到其他系统。--><!-- 反序列化:将序列化后的数据重新转换为对象的过程。这使得程序能够读取存储的数据并将其恢复为原来的对象形式。--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.53</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
yml文件
jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8
FastJsonRedisSerializer.java
package com.nnutc.common.utils;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.parser.ParserConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.SerializationException;import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;/*** FastJsonRedisSerializer 是一个使用 FastJSON 库进行对象序列化和反序列化的 RedisSerializer 实现类。** @param <T> 被序列化和反序列化的对象类型*/
public class FastJsonRedisSerializer<T> implements RedisSerializer<T> {public static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;private final Class<T> clazz; // 被序列化对象的类类型static {// 启用 FastJSON 的自动类型支持ParserConfig.getGlobalInstance().setAutoTypeSupport(true);}/*** 构造函数,接受一个 Class<T> 类型的参数** @param clazz 被序列化对象的类类型*/public FastJsonRedisSerializer(Class<T> clazz) {this.clazz = clazz;}/*** 序列化方法,将对象转换为字节数组** @param t 被序列化的对象* @return 序列化后的字节数组* @throws SerializationException 如果序列化失败*/@Overridepublic byte[] serialize(T t) throws SerializationException {if (t == null) {return new byte[0]; // 如果对象为 null,返回空字节数组}try {return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(DEFAULT_CHARSET);} catch (Exception e) {throw new SerializationException("序列化对象失败: " + t, e);}}/*** 反序列化方法,将字节数组转换为对象** @param bytes 要反序列化的字节数组* @return 反序列化得到的对象* @throws SerializationException 如果反序列化失败*/@Overridepublic T deserialize(byte[] bytes) throws SerializationException {if (bytes == null || bytes.length == 0) {return null; // 如果字节数组为 null 或空,返回 null}try {String json = new String(bytes, DEFAULT_CHARSET); // 将字节数组转换为 JSON 字符串return JSON.parseObject(json, clazz); // 使用 FastJSON 将 JSON 字符串解析为指定类型的对象} catch (Exception e) {throw new SerializationException("反序列化字节数组失败: " + bytes, e);}}
}相关文章:
【工具类:FastJsonRedisSerializer】
工具类:FastJsonRedisSerializer 依赖yml文件FastJsonRedisSerializer.java 依赖 <!-- 主要用于处理 JSON 数据的序列化和反序列化--><!-- 序列化:将对象转换为一种可以存储或传输的格式(如 JSON、XML、二进制等)…...
Spring Cloud Alibaba-(6)Spring Cloud Gateway【网关】
Spring Cloud Alibaba-(1)搭建项目环境 Spring Cloud Alibaba-(2)Nacos【服务注册与发现、配置管理】 Spring Cloud Alibaba-(3)OpenFeign【服务调用】 Spring Cloud Alibaba-(4)Sen…...
芯科科技2024年Works With开发者大会登陆上海,物联网和人工智能的变革性融合带来无限精彩
谷歌、三星等生态大厂将带来重磅演讲和圆桌讨论,亦可切身体验多样化无线技术实作 中国,北京 – 2024年9月25日 – 安全、智能无线连接技术领域的全球领导厂商Silicon Labs(亦称“芯科科技”,NASDAQ:SLAB)&a…...
华为OD机试 - 匿名信(Python/JS/C/C++ 2024 E卷 100分)
华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…...
Python习题 208:将二维列表数组转置
(编码)将以一下二维列表类型的数组 matrix 进行转置(注:不能用内置标准库及三方库)。 matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] 转置结果 [[1, 4, 7], [2, 5, 8], [3, 6, 9]] matrix = [[1, 2, 3],[4...
STM32F407HAL库输出互补PWM波以及死区时间计算
互补PWM波配置 STM32F407VET6的高级定时器TIM1、TIM8可以生成互补的PWM波,用HAL库配置非常方便。 我们使用高级定时器TIM1,选择一个通道(我这里选择通道二),然后选择PWM Generation CH2 CH2N。这里N的意思是互补&…...
matlab-对比两张图片的RGB分量的差值并形成直方图
%对比两张图片的RGB分量的差值并形成直方图,改个路径就能用,图片分辨率要一致 close all; clear all; clc; I1imread(E:\test\resources\image\1.jpg); I2imread(E:\test\resources\image\2.jpg); R1I1(:,:,1); G1I1(:,:,2); B1I1(:,:,3); R2I2(:,:,1…...
SpringBoot集成Matlab软件实战
在项目中处理矩阵等复杂数据结构的时候,可以用Matlab程序来运行,其优点是很多的。 专用工具箱和强大的矩阵运算能力:MATLAB 拥有强大的数学工具箱和优化工具箱,适合处理大规模矩阵运算以及水文模型的率定。MATLAB 的 Optimization…...
Java---异常及处理
一.异常 1.概念 程序的非正常执行。高级语言都有异常处理机制(C,Java) 2.一般处理异常的方法 Scanner sc new Scanner(System.in);System.out.println("请输入一个数字:");String s sc.nextLine();if (s.matches("[0-9]&qu…...
【开源免费】基于SpringBoot+Vue.JS网上购物商城(JAVA毕业设计)
本文项目编号 T 041 ,文末自助获取源码 \color{red}{T041,文末自助获取源码} T041,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计 六、核…...
添加vscode插件C/C++ snippets,快速生成LVGL .c/.h文件模版
文章目录 一、安装插件二、在安装目录下添加c.json和cpp.json文件①在 C:/Users/yourname/AppData/Roaming/Code/User/snippets/ 目录下创建 c.json 并填入如下内容:②在 C:/Users/yourname/AppData/Roaming/Code/User/snippets/ 目录下创建 cpp.json 并填入如下内容…...
ee trade:如何辨别足金真假
足金,顾名思义,就是含金量非常高的黄金,通常指含金量等于或大于 99% 的黄金,俗称 “二九金”。它在金饰界拥有着不可撼动的地位,深受消费者喜爱。那么,如何判断足金的真假,才能买到货真价实的足…...
GCC使用入门
文章目录 GCC简介单个文件编译过程预处理(Preprocessing)编译(Compilation)汇编(Assembly)链接(Linking) 多文件编译过程头文件搜索路径三种不推荐的方法两种推荐的方法 库文件静态库文件创建和使用静态库链接顺序 动态库文件创建和使用动态库 Warning编译选项调试信息(-g)编译…...
CSS3 字体
CSS3 字体 CSS3字体是网页设计和开发中的一个重要方面,它允许设计师使用各种字体来增强网页的视觉效果和用户体验。在本文中,我们将探讨CSS3字体的基本概念、特性、使用方法以及最佳实践。 1. CSS3字体基本概念 CSS3字体是指使用CSS3样式表来控制网页…...
LeetCode题练习与总结:为运算表达式设计优先级--241
一、题目描述 给你一个由数字和运算符组成的字符串 expression ,按不同优先级组合数字和运算符,计算并返回所有可能组合的结果。你可以 按任意顺序 返回答案。 生成的测试用例满足其对应输出值符合 32 位整数范围,不同结果的数量不超过 10^…...
金融科技革命:API接口开放平台,畅通金融服务之路
金融科技是近年来蓬勃发展的领域,它利用先进的技术手段来改善和创新金融服务。在金融科技的革命中,API接口开放平台扮演着重要的角色,它通过提供统一的接口服务,让金融机构和其他行业能够更方便地进行数据交换和合作。本文将以挖数…...
Java8后新特性介绍
1.接口私有方法(Java9) 在Java9之前,interface接口只能定义abstract抽象方法和default默认方法。如果有多个默认方法使用了相同的处理逻辑,那只能写重复代码,或者再单独建个类进行调用。Java9解决了此类问题ÿ…...
Arthas monitor(方法执行监控)
文章目录 二、命令列表2.3 monitor/watch/trace/stack/tt 相关2.3.1 monitor(方法执行监控)举例1:监控demo.MathGame类,并且每5S更新一次状态。 二、命令列表 2.3 monitor/watch/trace/stack/tt 相关 使用场景: monit…...
语言的副作用
副作用产生于表达式中有至少一处计算,且其中全部或部分计算会影响表达式其他项,这可能产生副作用。编译器的优化很可能凸显副作用。 赋值 副作用并非都是有害的,比如基本的赋值 a b, 对a而言是产生副作用,但完成了赋值要求。 序…...
centos磁盘逻辑卷LVM创建
centos磁盘逻辑卷LVM创建 一、磁盘逻辑卷LVM说明二、centos磁盘使用情况三、LVM安装指南1.LVM工具安装1. yum list lvm2. yum search lvm3. yum search pvcreate4. yum list lvm25. yum install lvm2 2.创建物理卷2.1磁盘情况查看2.2创建物理卷(PV) 3.创…...
【AI工具篇】10款免费AI聊天与绘画神器:从GPT到Stable Diffusion的全方位体验
1. GPT机器人:全能型AI助手 这款工具可以说是AI领域的瑞士军刀,既能陪你聊天又能帮你画画。我实测下来最惊艳的是它直接集成了GPT-4模型,要知道很多收费工具都还在用3.5版本。打开应用就像有个学霸朋友随时待命——上周我写项目方案卡壳时&am…...
雀魂智能辅助:从零构建你的AI麻将教练系统
雀魂智能辅助:从零构建你的AI麻将教练系统 【免费下载链接】Akagi A helper client for Majsoul 项目地址: https://gitcode.com/gh_mirrors/ak/Akagi 想在雀魂对局中获得实时AI分析与策略指导?雀魂智能辅助系统通过深度学习技术,为玩…...
OpenClaw智能剪贴板:GLM-4.7-Flash增强复制粘贴功能
OpenClaw智能剪贴板:GLM-4.7-Flash增强复制粘贴功能 1. 为什么我们需要更聪明的剪贴板 作为一个每天要和大量文本打交道的技术写作者,我经常陷入这样的困境:从网页复制的内容带着乱七八糟的格式,从PDF摘录的段落夹杂着换行符和乱…...
Apache Arrow Rust社区与生态:参与开源项目的最佳路径
Apache Arrow Rust社区与生态:参与开源项目的最佳路径 【免费下载链接】arrow-rs Apache Arrow Rust: 一个Rust语言实现的Apache Arrow数据交换格式,可用于高效地在不同计算引擎之间传输和操作大规模数据。它支持多种数据类型和编码方式,并提…...
【无线通信】基于统计信道的低复杂度旋转和位置优化为6D可移动天线无线通信附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...
IT运维监控/可观测性
?? 前言:为什么选择 OpenClaw 对接企业微信? 在2026年的企业数字化办公浪潮中,OpenClaw(曾用名 Clawdbot、Moltbot)已成长为国内领先的开源AI自动化代理工具。凭借其“自然语言驱动、插件化拓展、多平台无缝集成”的…...
开发效率翻倍:用快马智能推荐最佳排序算法,告别性能焦虑
今天想和大家分享一个提升开发效率的实用技巧——如何快速找到最适合当前场景的排序算法。作为开发者,我们经常需要处理各种排序需求,但面对不同规模、不同特征的数据集时,如何选择最优算法往往让人头疼。 数据准备阶段 在实际项目中…...
避免踩坑:Unity中Resources.LoadAll的正确使用姿势(含multiple模式Sprite处理)
Unity资源加载进阶:Resources.LoadAll与Sprite图集高效处理指南 在Unity开发中,资源加载是每个项目都无法绕开的核心环节。特别是当处理包含多张小图的Sprite图集时,很多开发者会陷入性能陷阱和功能误区。本文将深入剖析Resources.LoadAll的正…...
短剧小程序源码:打造你的专属短剧平台
温馨提示:文末有资源合作获取方式~一、市场前景:千亿蓝海,风口正当时“昨晚又为一部短剧熬夜了!”这已成为当代年轻人的日常。3分钟一集,连续反转,极致爽点——短剧正以惊人的速度占领我们的碎片…...
从零到一:基于GitHub Pages与Jekyll搭建你的专属学术主页
1. 为什么选择GitHub Pages Jekyll搭建学术主页? 作为一个长期在学术界摸爬滚打的老兵,我见过太多同行花大价钱购买服务器和维护网站,结果最后因为各种技术问题半途而废。直到我发现GitHub Pages和Jekyll这对黄金组合,才真正找到…...
