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

Java工具库——FastJson的40个常用方法

在这里插入图片描述那些想看却没看的书,在心里摆满一个图书馆…

工具库介绍

阿里巴巴的 FastJSON,也被称为 Alibaba FastJSON 或阿里巴巴 JSON,是一个高性能的 Java JSON 处理库,用于在 Java 应用程序中解析和生成 JSON 数据。FastJSON 以其卓越的性能和功能丰富的特点而闻名,并在阿里巴巴的开源项目和其他许多 Java 应用程序中广泛使用。

以下是 FastJSON 的主要特点和功能:

  1. 高性能: FastJSON 的性能非常出色,它被设计成一种极快的 JSON 库,可以在读取和写入 JSON 数据时实现卓越的性能。这使得 FastJSON 成为处理大量 JSON 数据的理想选择。

  2. 丰富的功能: FastJSON 提供了丰富的功能,包括将 Java 对象序列化为 JSON 格式和将 JSON 数据解析为 Java 对象。它支持复杂数据类型,包括嵌套对象、集合、数组等。

  3. 简单易用的 API: FastJSON 提供了简单易用的 API,使开发人员能够轻松地进行 JSON 数据的处理。你可以使用 FastJSON 将对象转换为 JSON 字符串,也可以将 JSON 字符串转换为 Java 对象。

  4. 自定义序列化和反序列化: FastJSON 允许你自定义如何将 Java 对象序列化为 JSON 数据以及如何将 JSON 数据反序列化为 Java 对象。这可以用于处理特定的数据格式或数据结构。

  5. 支持标准规范: FastJSON 支持 JSON 规范(RFC 7159),并能够处理 JSON 格式的各种细节,包括转义字符和特殊字符。

  6. 支持日期格式: FastJSON 具有内置的日期序列化和反序列化功能,可以处理日期数据的格式化和解析。

  7. 兼容性: FastJSON 兼容 Java 标准库中的 JSON API,如 javax.json,使得迁移或替换其他 JSON 库变得相对容易。

  8. 广泛应用: FastJSON 在阿里巴巴的许多产品和项目中广泛使用,包括阿里云和淘宝等。

FastJSON 是一个开源项目,你可以在 GitHub 上找到它的源代码和文档。它的活跃社区和持续的维护使其成为一个受欢迎的 JSON 处理库,适用于各种 Java 应用程序,从小型应用到大型分布式系统。

方法列举

FastJSON(阿里巴巴的 JSON 库)提供了大量的方法来处理 JSON 数据。以下是其中一些常用的方法,每个方法都附带了详细解释和示例代码,以及预期的结果。

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONArray;

1. toJSONString():将 Java 对象序列化为 JSON 字符串。

public static void toJSONStringExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("name", "John");jsonObject.put("age", 30);String jsonString = jsonObject.toJSONString();System.out.println(jsonString);
}

2. parseObject():将 JSON 字符串解析为 Java 对象。

public static void parseObjectExample() {String json = "{\"name\":\"Alice\",\"age\":25}";JSONObject jsonObject = JSON.parseObject(json);String name = jsonObject.getString("name");int age = jsonObject.getIntValue("age");System.out.println("Name: " + name + ", Age: " + age);
}

3. toJSON():将 Java 对象转换为 JSON 对象。

public static void toJSONExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("name", "Alice");jsonObject.put("age", 25);JSONObject json = (JSONObject) JSON.toJSON(jsonObject);System.out.println(json.toJSONString());
}

4. parseArray():将 JSON 数组字符串解析为 Java 数组。

public static void parseArrayExample() {String jsonArray = "[1, 2, 3, 4, 5]";JSONArray intArray = JSON.parseArray(jsonArray);int sum = 0;for (Object num : intArray) {sum += (int) num;}System.out.println("Sum: " + sum);
}

5. toJavaObject():将 JSON 对象转换为指定类型的 Java 对象。

public static class Person {public String name;public int age;
}public static void toJavaObjectExample() {String json = "{\"name\":\"Bob\",\"age\":28}";Person person = JSON.toJavaObject(JSON.parseObject(json), Person.class);System.out.println("Name: " + person.name + ", Age: " + person.age);
}

6. toJSONBytes():将 Java 对象序列化为 JSON 字节数组。

public static void toJSONBytesExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("name", "Charlie");jsonObject.put("age", 35);byte[] jsonBytes = JSON.toJSONBytes(jsonObject);String jsonString = new String(jsonBytes);System.out.println(jsonString);
}

7. toJSONStringWithDateFormat():使用指定日期格式将 Java 对象序列化为 JSON 字符串。

public static void toJSONStringWithDateFormatExample() {Date today = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");JSONObject jsonObject = new JSONObject();jsonObject.put("name", "David");jsonObject.put("birthDate", sdf.format(today));String jsonString = JSON.toJSONStringWithDateFormat(jsonObject, "yyyy-MM-dd");System.out.println(jsonString);
}

8. toJSONStringWithFilter():使用过滤器将 Java 对象序列化为 JSON 字符串。

public static class Person {public String name;public int age;
}public static void toJSONStringWithFilterExample() {Person person = new Person();person.name = "Eve";person.age = 40;ValueFilter filter = (object, name, value) -> {if (name.equals("age")) {return null; // 不包括 "age" 字段}return value;};String jsonString = JSON.toJSONString(person, filter);System.out.println(jsonString);
}

9. parse():将 JSON 字符串解析为通用的 java.lang.Object 对象。

public static void parseExample() {String json = "{\"name\":\"Frank\",\"age\":45}";Object object = JSON.parse(json);if (object instanceof JSONObject) {JSONObject jsonObject = (JSONObject) object;String name = jsonObject.getString("name");int age = jsonObject.getIntValue("age");System.out.println("Name: " + name + ", Age: " + age);}
}

10. isValid():检查 JSON 字符串是否合法。

public static void isValidExample() {String validJson = "{\"name\":\"Grace\",\"age\":50}";String invalidJson = "{name\":\"Helen\",\"age\":55}";boolean valid = JSON.isValid(validJson);boolean invalid = JSON.isValid(invalidJson);System.out.println("Valid JSON: " + valid);System.out.println("Invalid JSON: " + invalid);
}

11. getJSONObject():获取 JSON 对象中的子对象。

public static void getJSONObjectExample() {String json = "{\"person\":{\"name\":\"Ivy\",\"age\":60}}";JSONObject jsonObject = JSON.parseObject(json);JSONObject personObject = jsonObject.getJSONObject("person");String name = personObject.getString("name");System.out.println("Name: " + name);
}

12. getJSONArray():获取 JSON 对象中的子数组。

public static void getJSONArrayExample() {String json = "{\"numbers\":[1, 2, 3, 4, 5]}";JSONObject jsonObject = JSON.parseObject(json);JSONArray numbersArray = jsonObject.getJSONArray("numbers");int sum = 0;for (Object num : numbersArray) {sum += (int) num;}System.out.println("Sum: " + sum);
}

13. merge():合并两个 JSON 对象。

public static void mergeExample() {String json1 = "{\"name\":\"Jack\"}";String json2 = "{\"age\":35}";JSONObject jsonObject1 = JSON.parseObject(json1);JSONObject jsonObject2 = JSON.parseObject(json2);jsonObject1.putAll(jsonObject2);System.out.println(jsonObject1.toJSONString());
}

14. size():获取 JSON 对象或数组的元素数量。

public static void sizeExample() {String json = "{\"names\":[\"Mary\",\"Nancy\",\"Oliver\"]}";JSONObject jsonObject = JSON.parseObject(json);JSONArray namesArray = jsonObject.getJSONArray("names");int size = namesArray.size();System.out.println("Array Size: " + size);
}

15. containsKey():检查 JSON 对象是否包含指定的键。

public static void containsKeyExample() {String json = "{\"name\":\"Peter\",\"age\":70}";JSONObjectjsonObject = JSON.parseObject(json);boolean containsAge = jsonObject.containsKey("age");boolean containsEmail = jsonObject.containsKey("email");System.out.println("Contains Age: " + containsAge);System.out.println("Contains Email: " + containsEmail);
}

16. keySet():获取 JSON 对象的键集合。

public static void keySetExample() {String json = "{\"name\":\"Quincy\",\"age\":75}";JSONObject jsonObject = JSON.parseObject(json);Set<String> keys = jsonObject.keySet();for (String key : keys) {System.out.println("Key: " + key);}
}

17. values():获取 JSON 对象的值集合。

public static void valuesExample() {String json = "{\"name\":\"Rachel\",\"age\":80}";JSONObject jsonObject = JSON.parseObject(json);Collection<Object> values = jsonObject.values();for (Object value : values) {System.out.println("Value: " + value);}
}

18. remove():从 JSON 对象中删除指定的键。

public static void removeExample() {String json = "{\"name\":\"Sam\",\"age\":85}";JSONObject jsonObject = JSON.parseObject(json);jsonObject.remove("age");System.out.println(jsonObject.toJSONString());
}

19. clear():清空 JSON 对象中的所有键值对。

public static void clearExample() {String json = "{\"name\":\"Tom\",\"age\":90}";JSONObject jsonObject = JSON.parseObject(json);jsonObject.clear();System.out.println(jsonObject.toJSONString());
}

20. isEmpty():检查 JSON 对象是否为空。

public static void isEmptyExample() {JSONObject jsonObject = new JSONObject();boolean empty = jsonObject.isEmpty();System.out.println("Is Empty: " + empty);
}

21. putAll(Map<? extends String, ? extends V> map): 向 JSON 对象中添加键值对

    public static void putAllExample() {JSONObject jsonObject = new JSONObject();JSONObject additionalData = new JSONObject();additionalData.put("email", "john@example.com");additionalData.put("phone", "123-456-7890");jsonObject.putAll(additionalData);System.out.println(jsonObject.toJSONString());}

22. size(): 获取 JSON 对象的元素数量

    public static void sizeExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("name", "Alice");jsonObject.put("age", 30);int size = jsonObject.size();System.out.println("Size: " + size);}

23. containsValue(Object value): 检查 JSON 对象是否包含指定的值

    public static void containsValueExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("name", "Bob");jsonObject.put("age", 35);boolean containsName = jsonObject.containsValue("Bob");boolean containsGender = jsonObject.containsValue("Male");System.out.println("Contains Name: " + containsName);System.out.println("Contains Gender: " + containsGender);}

24. keySet(): 获取 JSON 对象的键集合

public static void keySetExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("name", "Charlie");jsonObject.put("age", 40);Set<String> keys = jsonObject.keySet();for (String key : keys) {System.out.println("Key: " + key);}
}

25. values(): 获取 JSON 对象的值集合

   public static void valuesExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("name", "David");jsonObject.put("age", 45);Collection<Object> values = jsonObject.values();for (Object value : values) {System.out.println("Value: " + value);}}

26. entrySet(): 获取 JSON 对象的键值对集合

public static void entrySetExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("name", "Eve");jsonObject.put("age", 50);Set<java.util.Map.Entry<String, Object>> entrySet = jsonObject.entrySet();for (java.util.Map.Entry<String, Object> entry : entrySet) {System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());}
}

27. putIfAbsent(String key, Object value): 如果不存在键,则向 JSON 对象添加键值对

public static void putIfAbsentExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("name", "Frank");jsonObject.putIfAbsent("age", 55); // 添加 "age" 键jsonObject.putIfAbsent("name", "George"); // 不添加 "name" 键System.out.println(jsonObject.toJSONString());
}

28. put(String key, Object value): 向 JSON 对象添加键值对

   public static void putExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("name", "Helen");System.out.println(jsonObject.toJSONString());}

29. get(Object key) : 获取 JSON 对象中的属性值

public static void getExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("name", "Ian");jsonObject.put("age", 60);String name = jsonObject.getString("name");int age = jsonObject.getIntValue("age");System.out.println("Name: " + name + ", Age: " + age);
}

30. remove(Object key) : 从 JSON 对象中删除指定的键

public static void removeExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("name", "Jack");jsonObject.put("age", 65);jsonObject.remove("age");System.out.println(jsonObject.toJSONString());
}

31. putOnce(String key, Object value) : 如果不存在键,则向 JSON 对象添加键值对

  public static void putOnceExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("name", "Kathy");jsonObject.putOnce("age", 70); // 添加 "age" 键jsonObject.putOnce("name", "Laura"); // 不添加 "name" 键System.out.println(jsonObject.toJSONString());}

32. putAll(JSONObject m) : 将另一个 JSON 对象中的键值对添加到当前 JSON 对象

public static void putAllJSONObjectExample() {JSONObject jsonObject1 = new JSONObject();jsonObject1.put("name", "Mike");JSONObject jsonObject2 = new JSONObject();jsonObject2.put("age", 75);jsonObject2.put("email", "mike@example.com");jsonObject1.putAll(jsonObject2);System.out.println(jsonObject1.toJSONString());
}

33. getInteger(String key): 获取 JSON 对象中的整数属性值

public static void getIntegerExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("age", "80"); // 存储为字符串int age = jsonObject.getInteger("age"); // 解析为整数System.out.println("Age: " + age);
}

34. getLong(String key) : 获取 JSON 对象中的长整数属性值

  public static void getLongExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("age", "90"); // 存储为字符串long age = jsonObject.getLong("age"); // 解析为长整数System.out.println("Age: " + age);}

35. getShort(String key) : 获取 JSON 对象中的短整数属性值

public static void getShortExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("age", "100"); // 存储为字符串short age = jsonObject.getShort("age"); // 解析为短整数System.out.println("Age: " + age);
}

36. getByte(String key) : 获取 JSON 对象中的字节属性值

public static void getByteExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("age", "110"); // 存储为字符串byte age = jsonObject.getByte("age"); // 解析为字节System.out.println("Age: " + age);
}

37. getFloat(String key): 获取 JSON 对象中的浮点数属性值

 public static void getFloatExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("height", "175.5"); // 存储为字符串float height = jsonObject.getFloat("height"); // 解析为浮点数System.out.println("Height: " + height);}

38. getDouble(String key) : 获取 JSON 对象中的双精度浮点数属性值

public static void getDoubleExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("weight", "65.5"); // 存储为字符串double weight = jsonObject.getDouble("weight"); // 解析为双精度浮点数System.out.println("Weight: " + weight);
}

39. getBoolean(String key): 获取 JSON 对象中的布尔属性值

public static void getBooleanExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("isStudent", "true"); // 存储为字符串boolean isStudent = jsonObject.getBoolean("isStudent"); // 解析为布尔值System.out.println("Is Student: " + isStudent);
}

40. getBigDecimal(String key): 获取 JSON 对象中的 BigDecimal 属性值

public static void getBigDecimalExample() {JSONObject jsonObject = new JSONObject();jsonObject.put("price", "99.99"); // 存储为字符串java.math.BigDecimal price = jsonObject.getBigDecimal("price"); // 解析为 BigDecimalSystem.out.println("Price: " + price);
}

相关文章:

Java工具库——FastJson的40个常用方法

那些想看却没看的书&#xff0c;在心里摆满一个图书馆… 工具库介绍 阿里巴巴的 FastJSON&#xff0c;也被称为 Alibaba FastJSON 或阿里巴巴 JSON&#xff0c;是一个高性能的 Java JSON 处理库&#xff0c;用于在 Java 应用程序中解析和生成 JSON 数据。FastJSON 以其卓越的性…...

基于ssm的宠物医院管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…...

RocketMQ学习笔记(一)

RocketMQ学习笔记 消息中间件应用场景 应用解耦削峰填谷数据分发 常见的消息中间件 ActiveMQ&#xff1a;Apache出品&#xff0c;比较老的一个开源的消息中间件&#xff0c;以前在中小企业应用广泛Kafka&#xff1a;Apache软件基金会开发的一个开源流处理平台&#xff0c;由…...

JavaScript-2-菜鸟教程

字符串 可以使用 索引 位置访问字符串中的每个字符 可以使用内置属性 length 来计算字符串的长度 var txt "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var sln txt.length;<script>var x "John"; // x是一个字符串// 使用 new 关键字将字符…...

发布开源项目到 jitpack

--- theme: github highlight: a11y-dark --- # 发布项目到 jitpack ## *(Gradle7.x 的版本已不适用 android-maven 的方法发布)* ## 1.在要发布android module下的 build.grdle 添加,多个module就添加多个 plugins{ id maven-publish } task sourceJar(type: Jar) { …...

TeeChart for .NET 2023.10.19 Crack

TeeChart.NET 的 TeeChart 图表控件提供了一个出色的通用组件套件&#xff0c;可满足无数的图表需求&#xff0c;也针对重要的垂直领域&#xff0c;例如金融、科学和统计领域。 数据可视化 数十种完全可定制的交互式图表类型、地图和仪表指示器&#xff0c;以及完整的功能集&am…...

代码随想录算法训练营第三十四天 | LeetCode 860. 柠檬水找零、406. 根据身高重建队列、452. 用最少数量的箭引爆气球

代码随想录算法训练营第三十四天 | LeetCode 860. 柠檬水找零、406. 根据身高重建队列、452. 用最少数量的箭引爆气球 文章链接&#xff1a;柠檬水找零 根据身高重建队列 用最少数量的箭引爆气球 视频链接&#xff1a;柠檬水找零 根据身高重建队列 …...

完美解决configure: error: APR not found. Please read the documentation.

目录 一、问题&#xff1a; 二、原因&#xff1a; 三、解决方法&#xff1a; 一、问题&#xff1a; ./configure 出现如下问题&#xff1a; configure: error: APR not found. Please read the documentation. 二、原因&#xff1a; 配置&#xff1a;错误&#xff1a;找不…...

Jenkins部署失败:JDK ‘jdk1.8.0_381‘ not supported to run Maven projects

Jenkins部署报错&#xff1a;JDK ‘jdk1.8.0_381’ not supported to run Maven projects提示使用的jdk有问题&#xff0c;启动的jdk版本不能满足项目启动。 登录Jenkins管理页面&#xff0c;系统管理——全局工具配置——JDK安装配置满足条件的JDK版本&#xff0c;保存配置&…...

xml导出pdf简单实现

1. 引入依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>8.0.1</version> </dependency>2. 代码实现 import com.itextpdf.kernel.geom.PageSize; import com.itextpdf.ker…...

JAVAEE初阶相关内容第十六弹--网络编程

写在前 这一节的内容首先是对十五弹&#xff08;UDP回显服务器&#xff09;进行简单的改进&#xff0c;在这基础上开始介绍TCP流套接字编程。 目录 写在前 1.改进回显服务器 1.1完整代码实现 1.2运行输出结果 2.TCP流套接字编程 2.1ServerSocketAPI 2.2SocketAPI 3.TC…...

Python---练习:使用for循环嵌套实现打印九九乘法表

思考&#xff1a; 外层循环主要用于控制循环的行数&#xff0c;内层循环用于控制列数。 基本语法&#xff1a; # 外层循环 for i in 序列1:# 内层循环for j in 序列2:循环体 序列1 序列2 &#xff0c;就可以是range(1, 10) -----也就是从1&#xff0c;到9。 参考while循环…...

mac安装并使用wireshark

mac安装并使用wireshark 1 介绍 我们在日常开发过程中&#xff0c;遇到了棘手的问题时&#xff0c;免不了查看具体网络请求情况&#xff0c;这个时候就需要用到抓包工具。比较著名的抓包工具就属&#xff1a;wireshark、fildder。我这里主要介绍wireshark。 2 安装 以mac安装为…...

torch张量的降维与升维

文章目录 一、降维和升维未完待续.... 一、降维和升维 squeeze和unsqueeze是torch张量常用的降维与升维的一种方式&#xff0c;但这种方式只能增添或减少大小为1的维度&#xff0c;如下&#xff1a; x1 torch.randn(1, 8, 256, 256) x1 torch.squeeze(x1,dim0) print(x1.sh…...

八大排序算法(C语言版)之插入排序

八大排序详解 目录&#xff1a;一、排序的概念1.1 排序的概念1.2 排序的应用 二、直接插入排序三、希尔排序四、排序算法复杂度及稳定性分析 目录&#xff1a; 八大排序算法&#xff1a; #mermaid-svg-7qCaGEYz0Jyj9dYw {font-family:"trebuchet ms",verdana,arial,…...

Linux系统安装redis并配置为服务

一、Linux环境 1、下载 官网提供的源码下载地址&#xff1a; https://github.com/redis/redis/archive/7.0.5.tar.gz 2、将源码上传至服务器 3、解压缩 # 将解压缩后的文件放置在同目录的source文件夹下 tar -zxvf redis-7.0.5.tar.gz -C ./source4、编译安装 对源码进行编…...

DDIO和DMA有什么区别

DDIO 和 DMA 的区别 DDIO (Data Direct I/O Technology) 主要应用: 主要用于网卡和CPU之间的数据传输。工作原理: 通过CPU的Last Level Cache (LLC) 直接与外部网卡交换数据&#xff0c;绕过了主存储器。优点: 减少了CPU和网卡等待内存的时间。提高了数据包的处理速度。减少了…...

【MATLAB源码-第58期】基于蛇优化算法(SO)和粒子群优化算法(PSO)的栅格地图路径规划最短路径和适应度曲线对比。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 粒子群算法 (Particle Swarm Optimization, PSO) 1. 算法概述 粒子群算法是一种基于群体智能的优化算法&#xff0c;模拟鸟群觅食的行为。算法中的每个粒子代表问题的一个可能解&#xff0c;并且具有位置和速度两个属性。粒…...

nlp与知识图谱代码解读

词嵌入 简单原理 我们要给一群14岁的孩子讲解词嵌入。可以使用一些比喻和生活中的例子&#xff1a; 老师&#xff1a; 你们还记得玩乐高积木的时候&#xff0c;每个积木块代表了一个特定的事物或形状吗&#xff1f;现在&#xff0c;想象一下&#xff0c;每个词都像是一个乐高…...

Redis设计与实现(3)字典

Redis的字典使用哈希表作为底层实现&#xff0c;一个哈希表里面可以有多个哈希表节点&#xff0c;而每一个哈希表节点就保存了字典中的一个键值对 redis字典所使用的哈希表由dict.h/dictht typedef struct dictht{//哈希表数组dictEntry **table;//哈希表大小unsigned long si…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践

在 Kubernetes 集群中&#xff0c;如何在保障应用高可用的同时有效地管理资源&#xff0c;一直是运维人员和开发者关注的重点。随着微服务架构的普及&#xff0c;集群内各个服务的负载波动日趋明显&#xff0c;传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...

高防服务器价格高原因分析

高防服务器的价格较高&#xff0c;主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因&#xff1a; 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器&#xff0c;因此…...

[特殊字符] 手撸 Redis 互斥锁那些坑

&#x1f4d6; 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作&#xff0c;想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁&#xff0c;也顺便跟 Redisson 的 RLock 机制对比了下&#xff0c;记录一波&#xff0c;别踩我踩过…...

Docker、Wsl 打包迁移环境

电脑需要开启wsl2 可以使用wsl -v 查看当前的版本 wsl -v WSL 版本&#xff1a; 2.2.4.0 内核版本&#xff1a; 5.15.153.1-2 WSLg 版本&#xff1a; 1.0.61 MSRDC 版本&#xff1a; 1.2.5326 Direct3D 版本&#xff1a; 1.611.1-81528511 DXCore 版本&#xff1a; 10.0.2609…...

基于谷歌ADK的 智能产品推荐系统(2): 模块功能详解

在我的上一篇博客&#xff1a;基于谷歌ADK的 智能产品推荐系统(1): 功能简介-CSDN博客 中我们介绍了个性化购物 Agent 项目&#xff0c;该项目展示了一个强大的框架&#xff0c;旨在模拟和实现在线购物环境中的智能导购。它不仅仅是一个简单的聊天机器人&#xff0c;更是一个集…...