当前位置: 首页 > news >正文

Fastjson 使用指南

文章目录

  • Fastjson 使用指南
    • 0 简要说明
      • 为什么要用JSON?用JSON的好处是什么?
      • 为什么要用JSON?
      • JSON好处
    • 1 常用数据类型的JSON格式
      • 值的范围
    • 2 快速上手
      • 2.1 依赖
      • 2.2 实体类
      • 2.3 测试类
    • 3 常见用法
      • 3.1 序列化操作
      • 核心操作
        • 对象转换为JSON串
        • list转换JSON串
        • map转换为JSON串
      • 3.2 反序列化操作
        • JSON串转换为对象
        • JSON串转换为map
        • JSON串转换为list
      • 4 常见问题
        • 4.1 如何处理日期毫秒值问题
        • 4.2 定制化序列化字段
        • 4.3 指定某些字段不序列化
        • 4.4 自定义序列化器
        • 4.5 使用ordinal指定字段的顺序
        • 4.6 序列化起别名
        • 4.7 空值序列化操作处理

w3school
JSON格式化
序列化操作

Fastjson 使用指南

0 简要说明

Fastjson是一个Java语言编写的高性能功能完善的SON库。它采用一种"假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前)ava语言中最快的)SON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。

主要特点:
快速FAST(比其它任何基于Java的解析器和生成器更快,包括jackson)
强大(支持普通DK类包括任意Java Bean Class、Collection、Map、Date或enum)
零依赖(除了DK没有依赖其它任何类库)

为什么要用JSON?用JSON的好处是什么?

1.首先JSON是一种数据格式,我们HTTP请求交互/内容存储到JSON,我们可以替代的方案就是XML,或者直接文本,当然首先是是使用JSON或者XML,其次才是文本,因为您考虑到存储方便也要考虑解析方便。

2.JSON是一个轻量级的数据格式,轻量级是相比较XML等其他复杂的存储格式而言,各个语言都兼容,都有各自解析JSON的组件。

为什么要用JSON?

1.其实用JSON主要是因为它轻量,各个平台语言都支持JSON交互、JSON解析和存储。

2.JSON常用于我们接口交互,前后端交互中,有解析速度快,方便的特点。

3.JSON常用于我们一些配置文件也是因为解析方便,JSON存储数据体积小等特征,而不像XML、PList(也是xml的一种)等格式,定义各种Dom节点(当然复杂的格式还是建议XML)。

JSON好处

1.JSON是大家公认的传输格式,所以学习成本低,程序员之间交流经常会问,您接口返回什么格式?答曰:“JSON”,其实就没啥问题了。

2.各个语言、各个框架(第三方组件)都支持JSON,所以使用上来讲,复用率更高,不用格式转来转去。

3.上面也讲了,体积小、解析速度快。

1 常用数据类型的JSON格式

值的范围

  • Number:数字(整数或浮点数)
  • String:字符串(在双引号中),一定是英文双引号(“”),个别弱语言可以支持单引号。
  • Boolean:逻辑值(true 或 false)
  • Array:数组(在方括号中),一般是在Value位置上。
  • Object:对象(在花括号中),一般是在Value位置上。
  • null:没什么好说的。
{"key":"value"},最简单的JSON 格式。
{"key1":"value1","key2":"value2"},一个JSON中有多个键值对的表达方式。
{"key":["a","b","sojson.com"]},value是一个Array 的JSON格式。
{"sojson":["5年","JSON在线解析","sojson.com",true,1,null]},value是一个Array 的JSON格式,并且这个数组中有多重类型的元素,有String,Boolean,Number,null{"key":{"json":"json for javascript"}},value 是JSONObject的JSON格式。

2 快速上手

2.1 依赖

仓库地址

        <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.51</version></dependency>

https://www.sojson.com/

2.2 实体类

package com.geekmice.springbootselfexercise.domain;import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelIgnore;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;
import java.util.Date;@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserDomain implements Serializable {/*** 用户名*/private String userName;/*** 生日*/private Date birthday;/*** 性别*/private String sex;/*** 地址*/private String address;}

2.3 测试类

    /*** 处理fastjson*/@Testpublic void validateFastJson() {UserDomain user = UserDomain.builder().userName("胡汉三").sex("男").birthday(new Date()).address("123@163.com").build();String userJsonString = JSON.toJSONString(user);log.info("userJsonString : [\n{}\n]", userJsonString);}

14:36:33.649 [main] INFO com.geekmice.springbootselfexercise.NoDaoTest - userJsonString : [
{“address”:“123@163.com”,“birthday”:1691562993337,“sex”:“男”,“userName”:“胡汉三”}
]

在这里插入图片描述

3 常见用法

3.1 序列化操作

序列化:将一个对象编码成一个字节流(I/O),序列化的目的是为了方便数据的传递以及存储到磁盘上(把一个Java对象写入到硬盘或者传输到网路上面的其它计算机,这时我们就需要将对象转换成字节流才能进行网络传输。对于这种通用的操作,就出现了序列化来统一这些格式)。

核心操作

    /*** This method serializes the specified object into its equivalent Json representation. Note that this method works fine if the any of the object fields are of generic type,* just the object itself should not be of a generic type. If you want to write out the object to a* {@link Writer}, use {@link #writeJSONString(Writer, Object, SerializerFeature[])} instead.** @param object the object for which json representation is to be created setting for fastjson* @return Json representation of {@code object}.*/
String jsonString = JSON.toJSONString(obj);

对象转换为JSON串

    /*** 处理fastjson*/@Testpublic void validateFastJson() {log.info("序列化操作开始,对象转换JSON串");UserDomain user = UserDomain.builder().userName("胡汉三").sex("男").birthday(new Date()).address("123@163.com").build();String userJsonString = JSON.toJSONString(user);log.info("userJsonString : [\n\n{}\n\n]", userJsonString);}

14:59:16.377 [main] INFO com.geekmice.springbootselfexercise.NoDaoTest - userJsonString : [

{“address”:“123@163.com”,“birthday”:1691564356144,“sex”:“男”,“userName”:“胡汉三”}

]

list转换JSON串

    /*** 处理fastjson*/@Testpublic void validateFastJson() {log.info("序列化操作开始,list转换JSON串");List<UserDomain> result = Arrays.asList(UserDomain.builder().userName("胡汉三").sex("男").birthday(new Date()).address("123@163.com").build(),UserDomain.builder().userName("笑笑").sex("女").birthday(new Date()).address("345@163.com").build());String listStr = JSON.toJSONString(result);log.info("listStr : [\n\n{}\n\n]" , listStr);}

14:59:16.381 [main] INFO com.geekmice.springbootselfexercise.NoDaoTest - listStr : [

[{“address”:“123@163.com”,“birthday”:1691564356380,“sex”:“男”,“userName”:“胡汉三”},{“address”:“345@163.com”,“birthday”:1691564356380,“sex”:“女”,“userName”:“笑笑”}]

]

map转换为JSON串

    /*** 处理fastjson*/@Testpublic void validateFastJson() {log.info("序列化操作开始,map转换JSON串");HashMap<Object, Object> map = Maps.newHashMap();map.put("name","小三子");map.put("age",10);final String mapStr = JSON.toJSONString(map);log.info("mapStr : [\n\n{}\n\n]" , mapStr);}

14:59:16.398 [main] INFO com.geekmice.springbootselfexercise.NoDaoTest - mapStr : [
{“name”:“小三子”,“age”:10}
]

在这里插入图片描述

3.2 反序列化操作

JSON串转换为对象

        String userJsonString="{\"address\":\"123@163.com\",\"birthday\":1691564927544,\"sex\":\"男\",\"userName\":\"胡汉三\"}";log.info("反序列化开始,JSON串转换对象");UserDomain nonUser = JSON.parseObject(userJsonString, UserDomain.class);log.info("nonUser : [{}]" , nonUser);

15:08:47.859 [main] INFO com.geekmice.springbootselfexercise.NoDaoTest - 反序列化开始,JSON串转换对象
15:08:47.903 [main] INFO com.geekmice.springbootselfexercise.NoDaoTest - nonUser : [UserDomain(id=null, userName=胡汉三, birthday=Wed Aug 09 15:08:47 CST 2023, sex=男, address=123@163.com)]

在这里插入图片描述

JSON串转换为map

        String mapStr="{\"name\":\"小三子\",\"age\":10}";log.info("反序列化开始,JSON串转换map");Map<Object, Object> nonMap = JSON.parseObject(mapStr, new TypeReference<Map<Object, Object>>() {});log.info("nonMap : [{}]" , nonMap);

15:08:47.903 [main] INFO com.geekmice.springbootselfexercise.NoDaoTest - 反序列化开始,JSON串转换map
15:08:47.906 [main] INFO com.geekmice.springbootselfexercise.NoDaoTest - nonMap : [{name=小三子, age=10}]

在这里插入图片描述

JSON串转换为list

                String listStr ="{\"address\":\"123@163.com\",\"birthday\":1691564927840,\"sex\":\"男\",\"userName\":\"胡汉三\"},{\"address\":\"345@163.com\",\"birthday\":1691564927840,\"sex\":\"女\",\"userName\":\"笑笑\"}"log.info("反序列化开始:JSON串转换为list");List<UserDomain> nonUserList = JSON.parseArray(listStr, UserDomain.class);log.info("nonUserList : [{}]" , nonUserList);

15:08:47.906 [main] INFO com.geekmice.springbootselfexercise.NoDaoTest - 反序列化开始:JSON串转换为list
15:08:47.906 [main] INFO com.geekmice.springbootselfexercise.NoDaoTest - nonUserList : [[UserDomain(id=null, userName=胡汉三, birthday=Wed Aug 09 15:08:47 CST 2023, sex=男, address=123@163.com), UserDomain(id=null, userName=笑笑, birthday=Wed Aug 09 15:08:47 CST 2023, sex=女, address=345@163.com)]]

在这里插入图片描述

4 常见问题

4.1 如何处理日期毫秒值问题

在这里插入图片描述

方案一:使用 @JSONField(format = DateUtils.DATE_FORMAT_10)
format属性指定时间日期格式,只是针对于某几个字段,使用了这个注解有效

方案二:通过代码实现,这种形式所有date类型都是指定时间格式 yyyy-MM-dd

String result = JSON.toJSONStringWithDateFormat(user, com.alibaba.excel.util.DateUtils.DATE_FORMAT_10);

4.2 定制化序列化字段

4.3 指定某些字段不序列化

@JSONField(serialize= false)
在这里插入图片描述

在这里插入图片描述

4.4 自定义序列化器

1 定义

package com.geekmice.springbootselfexercise.serializer;import com.alibaba.fastjson.parser.DefaultJSONParser;
import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
import com.alibaba.fastjson.serializer.JSONSerializer;
import com.alibaba.fastjson.serializer.ObjectSerializer;
import com.alibaba.fastjson.serializer.SerializeWriter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;import java.io.IOException;
import java.lang.reflect.Type;
import java.text.ParseException;
import java.util.Date;
import java.util.Objects;/*** @BelongsProject: spring-boot-self-exercise* @BelongsPackage: com.geekmice.springbootselfexercise.serializer* @Author: pingmingbo* @CreateTime: 2023-08-09  15:59* @Description: TODO* @Version: 1.0*/
@Slf4j
public class MyDateSerializer implements ObjectSerializer, ObjectDeserializer {@Overridepublic void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {// 序列化,// log.info("serializer : [{}]" , serializer); // 数据源// log.info("object : [{}]" , object); // 字段值// log.info("fieldName : [{}]" , fieldName); // 字段名称// log.info("fieldType : [{}]" , fieldType);// 类型if (Objects.isNull(object)) {return;}String dateStr = object.toString();Date date = null;if (StringUtils.isNotBlank(dateStr)) {try {date = DateUtils.parseDate(dateStr, com.alibaba.excel.util.DateUtils.DATE_FORMAT_19);} catch (ParseException e) {log.error("error msg:【{}】", e);throw new IllegalArgumentException(e);}}long time = date.getTime();SerializeWriter writer = serializer.getWriter();writer.writeLong(time);}@Overridepublic <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {return null;}@Overridepublic int getFastMatchToken() {return 0;}
}

2.实体类添加

    // @JSONField(ordinal = 7,format = DateUtils.DATE_FORMAT_10)@JSONField(ordinal = 7,serializeUsing = MyDateSerializer.class)private String testStrDate;

3.测试类使用

        log.info("序列化操作开始,对象转换JSON串");TempData user = TempData.builder().userName(null).sex("男").birthday(new Date()).address("123@163.com").logTime(new Date()).registerTime(new Date()).testStrDate("2023-08-09 23:22:21").score(new BigDecimal("2384.23")).build();// 字符串类型字段为null,不进行序列化String userJsonString = JSON.toJSONString(user, SerializerFeature.WriteNullListAsEmpty,SerializerFeature.WriteNullStringAsEmpty,SerializerFeature.WriteNullNumberAsZero,SerializerFeature.WriteNullBooleanAsFalse);log.info("userJsonString : [\n\n{}\n\n]", userJsonString);

21:18:42.724 [main] INFO com.geekmice.springbootselfexercise.NoDaoTest - userJsonString : [

{“id”:0,“username”:“”,“sex”:“男”,“address”:“123@163.com”,“logTime”:“2023-08-09 21:18:42”,“registerTime”:1691587122488,“testStrDate”:1691594541000,“score”:2384.23}

]

4.5 使用ordinal指定字段的顺序

package com.geekmice.springbootselfexercise.domain;import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.util.DateUtils;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFilter;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;
import java.util.Date;/*** @BelongsProject: spring-boot-self-exercise* @BelongsPackage: com.geekmice.springbootselfexercise.domain* @Author: pingmingbo* @CreateTime: 2023-08-07  09:53* @Description: Easy Excel 导入导出对应的实体类* @Version: 1.0*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class TempData implements Serializable {private static final long serialVersionUID = 611155229642304781L;/*** 忽略这个字段*/private Long id;/*** 用户名*/@JSONField(name = "username",ordinal = 1)private String userName;/*** 生日*/@JSONField(format = DateUtils.DATE_FORMAT_10,serialize = false,ordinal = 2)private Date birthday;/*** 性别*/@JSONField(ordinal = 3)private String sex;/*** 地址*/@JSONField(ordinal = 4)private String address;@JSONField(ordinal = 5)private Date registerTime;
}

4.6 序列化起别名

@JSONField(name = "username", ordinal = 3)
@ExcelProperty(value = {"父级", "用户名"}, index = 0)
@JSONField(name = "username")
private String userName;

16:04:28.708 [main] INFO com.geekmice.springbootselfexercise.NoDaoTest - result : [{“address”:“123@163.com”,“logTime”:“2023-08-09”,“registerTime”:“2023-08-09”,“sex”:“男”,“username”:“胡汉三”}]

在这里插入图片描述

4.7 空值序列化操作处理

SerializerFeature描述
WriteNullListAsEmpty将Collection类型字段的字段空值输出为[]
WriteNullStringAsEmpty将字符串类型字段的空值输出为空字符串 “”
WriteNullNumberAsZero将数值类型字段的空值输出为0
WriteNullNumberAsZero将Boolean类型字段的空值输出为false
        log.info("序列化操作开始,对象转换JSON串");TempData user = TempData.builder().userName(null).sex("男").birthday(new Date()).address("123@163.com").logTime(new Date()).registerTime(new Date()).testStrDate("2023-07-18 23:22:21").build();// 字符串类型字段为null,不进行序列化String userJsonString = JSON.toJSONString(user, SerializerFeature.WriteNullListAsEmpty,SerializerFeature.WriteNullStringAsEmpty,SerializerFeature.WriteNullNumberAsZero,SerializerFeature.WriteNullBooleanAsFalse);

20:42:40.253 [main] INFO com.geekmice.springbootselfexercise.NoDaoTest - 序列化操作开始,对象转换JSON串
20:42:40.664 [main] INFO com.geekmice.springbootselfexercise.NoDaoTest - userJsonString : [

{“id”:0,“username”:“”,“sex”:“男”,“address”:“123@163.com”,“logTime”:“2023-08-09 20:42:40”,“registerTime”:1691584960267,“testStrDate”:1689693741000,“score”:0}

]

相关文章:

Fastjson 使用指南

文章目录 Fastjson 使用指南0 简要说明为什么要用JSON&#xff1f;用JSON的好处是什么&#xff1f;为什么要用JSON&#xff1f;JSON好处 1 常用数据类型的JSON格式值的范围 2 快速上手2.1 依赖2.2 实体类2.3 测试类 3 常见用法3.1 序列化操作核心操作对象转换为JSON串list转换J…...

阿里云内容审核服务使用(图片审核)

说明&#xff1a;在项目中&#xff0c;我们经常会对用户上传的内容&#xff08;如文字、图片&#xff09;等资源内容进行审核&#xff0c;审核包括两方面&#xff0c;一方面是内容与描述不符&#xff0c;一方面是违反法律法规。本文介绍使用阿里提供的内容审核服务&#xff0c;…...

git撤回最近一次push操作

git push -f origin HEAD^:branch_name其中&#xff0c;branch_name 是你想要撤回 push 操作的分支的名称。 这个命令将会强制推送到远程仓库&#xff0c;将远程分支回滚到上一个提交&#xff08;HEAD^ 意味着上一个提交&#xff09;。这样做会丢失最近一次 push 的更改&#…...

2000-2022年上市公司环境不确定性(原始数据+测算代码+测算结果)

2000-2022年上市公司环境不确定性指数&#xff08;含原始数据 代码和计算结果&#xff09; 1、时间&#xff1a;2000-2022年 2、指标&#xff1a;gupiao代码、名称、日期、年份、总资产净利润率ROA、营业收入、上市日期、成立日期、行业代码、年末是否ST或PT、行业、EU未调整…...

网络基本概念

目录 一、IP地址 1. 概念 2. 格式 3. 特殊IP 二、端口号 1.概念 2. 格式 3.注意事项 三、 协议 1. 概念 2. 作用 四、协议分层 1. 网络设备所在分层 五、封装与分用 六、客户端和服务器 1. 客户端与服务器通信的过程 一、IP地址 1. 概念 IP地址主要用于标识网络主机.其他网络…...

2.安装Docker-ce

一、删除之前安装的docker(若之前未安装过&#xff0c;此步骤省略…) 进入centos根目录执行以下命令&#xff08;\ 是linux系统种命令换行符&#xff0c;如果命令过长&#xff0c;可以用\来换行&#xff09; yum remove docker \ docker-client \ docker-client-latest \ doc…...

Redis-2

Redis 持久化 Redis 为了保证效率&#xff0c;数据缓存在了内存中&#xff0c;但是会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件中&#xff0c;以保证数据的持久化。总的目的把数据保存到硬盘&#xff0c;有 RDB 和 AOF 两种。 RDB 持久化方案: RDB 是一…...

一分钟了解下Java追随和适应云原生的手段之Java Native Build(JNB)

文章首发地址 为了解决在云原生环境中&#xff0c;Java应用启动慢的问题&#xff0c;出现了很多派系&#xff0c;如拯救派&#xff0c;让应用在原有基础上启动更快&#xff08;一般都是用资源换时间&#xff09;&#xff0c;还有就是革命派&#xff0c;Java向Golang学习&#x…...

Flutter iOS 与 flutter 相互通信

在混合开发中避免不了通信&#xff0c;简单记录一下&#xff0c;Flutter iOS工程与Flutter 之间相互通信。 Flutter中通过Platform Channel实现Flutter和原生端的数据传递&#xff0c;是怎么进行数据通信&#xff0c;以及怎么配置&#xff0c;下面一一进行详解。 FlutterMetho…...

OpenCV和PIL图像对象转换

OpenCV和PIL&#xff08;Python Imaging Library&#xff09;都是常用的Python图像处理库。它们都有自己的图像对象类型&#xff0c;因此在使用它们时需要进行相应的转换。 下面是OpenCV图像对象和PIL图像对象之间的转换方法&#xff1a; 将OpenCV图像对象转换为PIL图像对象&…...

IDEA的实用快捷键大全

目录 1.常规快捷键 1.1通用类 1.2注释类 1.3操作类 1.4展开与关闭 2.智能补全类快捷键 3.程序结构类快捷键 4.统一操作快捷键 1.常规快捷键 1.1通用类 像 Ctrl C 复制&#xff0c; Ctrl V 粘贴&#xff0c; Ctrl S保存文件&#xff0c; Ctrl X剪切&#xff0c;这种…...

04-6_Qt 5.9 C++开发指南_QListWidget和QToolButton

文章目录 1. 实例简介2. 源码2.1 混合式界面设计2.2 mainwindow.h2.3 mainwindow.cpp 1. 实例简介 Qt 中用于项 (Item)处理的组件有两类&#xff0c;一类是 Item Views&#xff0c;包括 QListView、QTreeView、QTableView、QColumnView 等;另一类是 Item Widgets&#xff0c;包…...

笔试错题不熟悉 积累

【2022】小米秋招笔试-运维开发-卷2 DNS 域名解析的默认端口是 53 常用服务端口号集合&#xff08;超全&#xff09;&#xff01;&#xff01;&#xff01; Redis中遍历所有Key&#xff0c;以下哪种方式对Redis服务影响最小? SCAN 每次执行都只会返回少量元素&#xff0c;…...

Adb发送特定广播给App和App获取权限的命令

最近在做Autostart&#xff0c;但是没有bench R1环境 目前在模拟器上调试&#xff0c;需要调试自定义的广播和获取悬浮窗权限&#xff08;因为这个app需要在开机未启动app的情况启动服务区获取传感器信号然后全局弹窗&#xff09;。 需要先adb root adb remount 1.发送广播给…...

字节C++后端面试总结

字节的面经,技术栈是 C++ 后端。 计算机网络 UDP和TCP区别 先说了概念一个是面向连接的基于字节流的可靠连接,一个是不需要连接的基于数据报的不可靠传输 然后说了几个小点,比如首部长度、应用场景、服务对象什么的。 补充: 还有一个很重要的点:UDP 的实时性比 TCP 好…...

el-select 分页加载

el-select 分页加载 el-select 分页懒加载监听的指令——loadMore指令的使用 el-select 分页懒加载 针对数据量大的选择器&#xff0c;需要分页从后端接口获取数据&#xff0c;前端监听选择器下拉框的滚动事件&#xff0c;当往下滚动至底部一定位置时&#xff0c;调接口 监听…...

QColorDialog

QColorDialog 颜色类 QColor颜色对话框API简单的使用 QColorDialog类是QDialog的子类, 通过这个类我们可以得到一个选择颜色的对话框窗口 颜色类 QColor 关于颜色的属性信息, 在QT框架中被封装到了一个叫QColor的类中。 各种颜色都是基于红, 绿, 蓝这三种颜色调配而成的, 并…...

Linux部署Zabbix主机监控

192.168.136.55 服务端 192.168.136.56 客户端 一、服务端 1.1 安装lamp环境 #关闭防火墙以及SELINUX systemctl disable firewalld systemctl stop firewalld sed -i s/SELINUXenforcing$/SELINUXdisabled/g /etc/selinux/config setenforce 0设置yum源 yum install epe…...

【IC萌新虚拟项目】功能覆盖率文件合入与功能覆盖率收集

关于整个虚拟项目,请参考: 【IC萌新虚拟项目】Package Process Unit项目全流程目录_尼德兰的喵的博客-CSDN博客 前言 上一篇文章我们已经完成了测试点的相关指导,在工程目录下看到一份推荐的测试点分解文档。当然这只是一种参考,大家可以按照自己的理解进行测试点分解,并…...

同步辐射散射数据处理分析方法及实验过程

同步辐射散射数据处理分析方法及过程 同步辐射散射测试是一种先进的材料表征技术&#xff0c;已广泛应用于材料科学、生物学、化学等领域。同步辐射散射技术利用同步辐射光源产生的高亮度辐射&#xff0c;通过散射实验来研究样品的结构、形态和动态行为。 同步辐射散射处理分析…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...