JSON学习
一、JSON
1.1 简介
JSON:JavaScript Object Notation是一种表示对象的方式
基于JavaScript语言的轻量级的数据交换格式;(即:用来传输数据的一种格式)
现在传输数据的方式更多是采用json的格式,渐渐代替了XML
1.2 JSON的数据表示
JSON采用名值对的方式来表示一个对象的信息
符号 描述 示例 {} 表示对象 {name : ‘书名1’ , price:100} [{},{},{}] 表示对象数组 [ {name : ‘书名1’ , price:100} , {name : ‘书名2’ , price:200} ] 注意:
JSON的本质就是一串字符串,只不过元素(数据)会使用特定的符号标注
键和值之间用 : 隔开
键值对之间用 , 隔开
支持无限层嵌套
ps:{name : ‘Java从入门到精通’ , price:100 , author:{name:‘吴彦祖’ , info:‘从事java20年’}}
‘’ 或 “” 都可以表示字符串
二、序列化和反序列化
序列化:指的是将Java对象转换为JSON字符串的过程,即 Java对象 → JSON字符串
反序列化:指的是将JSON字符串转换为Java对象的过程,即 JSON字符串 → Java对象
三、浏览器中处理JSON
3.1 JSON字符串 → 对象
使用parse函数解析JSON格式字符串
parse函数注意事项(坑):
- 字符串的数据格式:所有属性必须用双引号引住,因为使用JSON.parse需严格遵守JSON规范。
- 单引号与双引号 :使用单引号嵌套双引号的方式 ’ {“name” : “Java从入门到精通” , “price”:“100”} ’
总结:
使用JSON.parse()来解析JSON字符串,需要注意的是被转化的字符串里面的属性要使用引号,并且总体是单引号套双引号的方式,太麻烦了。 如果使用eval() 就可以忽略上述两点需要注意的地方
<script type="text/javascript"> //JSON字符串var jsonStr = '{"name" : "Java从入门到精通" , "price":"100"}';//JSON对象 var jsonObj = JSON.parse(jsonStr);//解析JSON字符串//获取数据 console.log(jsonObj.name);console.log(jsonObj.price);
</script>
使用eval函数解析JSON格式字符串
eval(str):将函数的参数作为JavaScript代码去执行
eval函数注意事项(坑):
使用()包裹JSON字符串
“({name:‘Java从入门到精通’,price:100 , author:{name:‘吴彦祖’ , info:‘从事java20年’}})”
原因:
eval本身的问题。 由于json是以”{}”的方式来开始以及结束的。在JavaScript中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式转化为对象,而不是作为代码来执行。
<script type="text/javascript">//JSON字符串var jsonStr = "({name:'Java从入门到精通',price:100,author:{name:'吴彦祖' , info:'从事java20年'}})";//解析成JSON对象var jsonObj = eval(jsonStr);//获取数据console.log(jsonObj.name);console.log(jsonObj.price);console.log(jsonObj.author.name);console.log(jsonObj.author.info);
</script>
<script type="text/javascript">//JSON字符串var jsonStr1 = "([{name:'Java从入门到精通',price:100,author:{name:'吴彦祖' , info:'从事java20年'}}, {name:'论演技的重要性',price:30,author:{name:'麻生希' , info:'从事电影事业13年'}}])";//解析成JSON对象数组var jsonObj = eval(jsonStr1);//遍历获取数据for(var i = 0;i<jsonObj.length;i++){console.log(jsonObj[i].name);console.log(jsonObj[i].price);console.log(jsonObj[i].author.name);console.log(jsonObj[i].author.info);}
</script>
3.2 对象 → JSON字符串
<script type="text/javascript"> //对象var book = new Object();book.name = "Java从入门到精通";book.price = 100;//将对象转换为JSON字符串var jsonStr = JSON.stringify(book);//打印数据console.log(jsonStr);
</script>
四、Java中处理JSON
如果使用逻辑或Java原生解析类去解析JSON是非常麻烦的
项目中大多数会使用FastJSON和Jackson来操作JSON
五、FastJSON
5.1 简介
FastJson:阿里的开源框架,被不少企业使用,是一个极其优秀的Json框架,使用此框架必须在项目中导入框架包(fastjson-1.1.33.jar)
FastJson对于json格式字符串的解析主要用到了下面三个类:
- JSON:FastJSON的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换
- JSONObject:FastJSON提供的json对象
- JSONArray:FastJSON提供json数组对象
5.2 特点
- FastJson速度快,无论序列化和反序列化,都是当之无愧的fast
- 功能强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
- 零依赖(没有依赖其它任何类库)
5.3 对象 → JSON字符串
public class FastJsonTest01 {@Testpublic void test01(){//对象->json对象Book book = new Book("Java从入门到精通",100);String jsonStr = JSON.tojsonStr(book);System.out.println(jsonStr);}@Testpublic void test02(){//对象->json对象(复杂版本)Book book = new Book("Java从入门到精通",100,new Author("吴彦祖","从事java20年"));String jsonStr = JSON.tojsonStr(book);System.out.println(jsonStr);}@Testpublic void test03(){//对象->json字符串(加过滤器)//匿名内部类PropertyFilter filter = new PropertyFilter(){public boolean apply(Object obj,String name,Object value){if(name.equalsIgnoreCase("price")){//忽略大小写比较return false;}return true;}};Book book = new Book("Java从入门到精通",100,new Author("吴彦祖","从事java20年"));String jsonStr=JSON.tojsonStr(book,filter);System.out.println(jsonStr);}
}
//书本类
public class Book {private String name;private double price;private Author author;public Book() {}public Book(String name, double price, Author author) {this.name = name;this.price = price;this.author = author;}public Book(String name, double price) {this.name = name;this.price = price;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public Author getAuthor() {return author;}public void setAuthor(Author author) {this.author = author;}@Overridepublic String toString() {return "Book[name=" + name + ", price=" + price + ", author=" + author + "]";}
}
//作者类
public class Author {private String name;private String info;public Author() {}public Author(String name, String info) {this.name = name;this.info = info;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getInfo() {return info;}public void setInfo(String info) {this.info = info;}@Overridepublic String toString() {return "Author [name=" + name + ", info=" + info + "]";}
}
5.4 JSON字符串 → 对象
public class FastJsonTest02 {@Testpublic void test01(){//json字符串对象->对象String jsonStr = "{'name':'Java从入门到精通','price':100}";Book book = JSON.parseObject(jsonStr,Book.class);System.out.println(book);}@Testpublic void test02(){//复杂的json字符串->对象String jsonStr = "{'author':{'info':'从事java20年','name':'吴彦祖'},'name':'Java从入门到精通','price':100}";Book book = JSON. parseObject(jsonStr, Book . class);System. out . println(book);}
}
5.5 数组或集合 → JSON字符串
public class FastJsonTest03 {Book book1 = new Book("Java从入门到精通", 100, new Author("吴彦祖","从事java20年"));Book book2 = new Book("论演技的重要性", 30, new Author("麻生希", "从事电影事业13年"));@Testpublic void test01(){//数组->json字符串Book[] books = {book1, book2};String jsonStr = JSON. tojsonStr(books);System.out.println(jsonStr);}@Testpublic void test02() {//List集合->json字符串ArrayList<Book> list = new ArrayList<Book>();list.add(book1);list.add(book2);String jsonStr = JSON.tojsonStr(list);System.out.println(jsonStr);}@Testpublic void test03() {//Map集合-〉json字符串HashMap<String, Book> map = new HashMap<String,Book>();map.put("001", book1);map.put("002", book2);String jsonStr = JSON.tojsonStr(map);System.out.println(jsonStr);}
}
5.6 JSON字符串 → 数组或集合
public class FastJsonTest04 { @Testpublic void test01(){//json字符串->数组String jsonStr = "[{'author':{'info':'从事java20年','name':'吴彦祖'},'name':'Java从入门到精通','price':100},{'author':{'info':'从事电影事业13年','name':'麻生希'},'name':'论演技的重要性','price':30}]";JSONArray parseArray = JSON.parseArray(jsonStr);for(int i = 0;i < parseArray.size();i++){ Book book = parseArray.getObject(i, Book.class);System.out.println(book);}}@Testpublic void test02(){//json字符串->List集合String jsonStr = "[{'author':{'info':'从事java20年','name':'吴彦祖'},'name':'Java从入门到精通','price':100},{'author':{'info':'从事电影事业13年','name':'麻生希'},'name':'论演技的重要性','price':30}]";List<Book> list = JSON.parseArray(jsonStr,Book.class);for(Book book : list){System.out.println(book);}}@Testpublic void test03(){//json字符串->Map集合String jsonStr = "{'001':{'author':{'info':'从事java20年', 'name': '何老师'},"+ "'name':'Java从入门到精通','price':100}, '002':{'author':{'info':'"+"从事电影事业13年','name' :'麻生希'},'name':'论演技的重要性','price' :30}}";@SuppressWarnings("unchecked")Map<String,JSONObject> map = (Map<String, JSONObject>) JSON.parse(jsonStr);Set<Entry<String, JSONObject>> entrySet = map.entrySet();for(Entry<String, JSONObject> entry : entrySet){String key=entry.getKey();Book value = JSON.toJavaObject(entry.getValue(), Book.class);System.out.println(key + "--" + value);}}
}
六、Jackson
6.1 简介
Jackson框架是基于Java平台的一套数据处理工具
解析JSON,依赖jackon的三个核心类库:
jackson-core-2.9.8.jar jackson-annotations-2.9.8.jar
jackson-databind-2.9.8.jar
6.2 特点
使用注解,让JSON解析更加灵活
6.3 对象、集合 → JSON字符串
public class Test01 {@Testpublic void test01() throws JsonProcessingException{//将对象转换为JSON字符串Book book = new Book("Java从入门到精通",100,new Author("吴彦祖","从事java20年"));//使用ObjectMapper来转化对象为JSON字符串ObjectMapper mapper = new ObjectMapper();// 配置mapper忽略空属性mapper.setSerializationInclusion(Include.NON_EMPTY);//将对象转换为JSON字符串String jsonStr = mapper.writeValueAsString(book);System.out.println(jsonStr);}@Testpublic void test02() throws JsonProcessingException{//将集合转换为JSON字符串Book book1 = new Book("Java从入门到精通",100,new Author("吴彦祖","从事java20年"));Book book2 = new Book("论演技的重要性", 30, new Author("麻生希", "从事电影事业13年"));List<Book> list = new ArrayList<>();list.add(book1);list.add(book2);//使用ObjectMapper来转化对象为JSON字符串ObjectMapper mapper = new ObjectMapper();// 配置mapper忽略空属性mapper.setSerializationInclusion(Include.NON_EMPTY);//将对象转换为JSON字符串String jsonStr = mapper.writeValueAsString(list);System.out.println(jsonStr);}
}
6.4 JSON字符串 → 对象、集合
public class Test02 {@Testpublic void test01() throws IOException{//json字符串对象->对象String jsonStr = "{\"name\":\"Java从入门到精通\",\"price\":100.0,\"author\":{\"name\":\"吴彦祖\",\"info\":\"从事java20年\"}}";//ObjectMapper类用序列化与反序列化映射器ObjectMapper mapper = new ObjectMapper();//当反序列化JSON时,未知属性会引起的反序列化被打断,这里我们禁用未知属性打断反序列化功能,//例如:JSON字符串里有10个属性,而我们的bean中只定义了2个属性,其它8个属性将被忽略mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);Book book = mapper.readValue(jsonStr, Book.class);System.out.println(book);}@Testpublic void test02() throws IOException{//json字符串->数组String jsonStr = "[{\"author\":{\"info\":\"从事java20年\",\"name\":\"吴彦祖\"},\"name\":\"Java从入门到精通\",\"price\":100},{\"author\":{\"info\":\"从事电影事业13年\",\"name\":\"麻生希\"},\"name\":\"论演技的重要性\",\"price\":30}]";//ObjectMapper类用序列化与反序列化映射器ObjectMapper mapper = new ObjectMapper();//当反序列化JSON时,未知属性会引起的反序列化被打断,这里我们禁用未知属性打断反序列化功能,//例如:JSON字符串里有10个属性,而我们的bean中只定义了2个属性,其它8个属性将被忽略mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);List<Book> list = mapper.readValue(jsonStr, new TypeReference<List<Book>>() {});for (Book book : list) {System.out.println(book);}}
}
6.5 Jackson注解
public class Test01 {@Testpublic void test01() throws JsonProcessingException{//将对象转换为JSON字符串Book book = new Book("Java从入门到精通",100,new Author("吴彦祖","从事java20年"));//ObjectMapper类用序列化与反序列化映射器ObjectMapper mapper = new ObjectMapper();// 配置mapper忽略空属性mapper.setSerializationInclusion(Include.NON_EMPTY);//将对象转换为JSON字符串String jsonStr = mapper.writeValueAsString(book);System.out.println(jsonStr);}@Testpublic void test02() throws IOException{//json字符串对象->对象String jsonStr = "{\"bookName\":\"Java从入门到精通\",\"price\":100.0,\"author\":{\"name\":\"吴彦祖\",\"info\":\"从事java20年\"}}";//ObjectMapper类用序列化与反序列化映射器ObjectMapper mapper = new ObjectMapper();//当反序列化JSON时,未知属性会引起的反序列化被打断,这里我们禁用未知属性打断反序列化功能,//例如:JSON字符串里有10个属性,而我们的bean中只定义了2个属性,其它8个属性将被忽略mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);Book book = mapper.readValue(jsonStr, Book.class);System.out.println(book);}
}
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;public class Book {@JsonProperty("bookName")//java属性name序列化到JSON字段的名称为bookNameprivate String name;@JsonIgnore//在序列化与反序列化时,忽略price属性private double price;private Author author;@JsonCreator//指定JSON反序列化创建Book对象时调用此构造函数public Book() {}public Book(String name, double price,Author author) {System.out.println("aaa");this.name = name;this.price = price;this.author = author;}public Book(String name, double price) {this.name = name;this.price = price;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public Author getAuthor() {return author;}public void setAuthor(Author author) {this.author = author;}@Overridepublic String toString() {return "Book[name=" + name + ", price=" + price + ", author=" + author + "]";}
}
七、总结
- JSON 格式:
- {} - 对象
- [{},{},{}] - 数组
- JSON可以支持无限层嵌套
- 序列化和反序列化
- 序列化:指的是将对象转换为JSON字符串的过程,即 对象 → JSON字符串
- 反序列化:指的是将JSON字符串转换为对象的过程,即 JSON字符串 → 对象
- 浏览器中处理JSON
- parse():使用单引号嵌套双引号的方式
- eval():使用()包裹JSON字符串
- Java中处理JSON:使用FastJSON和Jackson框架
八、作业
- 创建学生类(Student),属性有String name,int age,char sex,List interest
- 创建该类的对象
- 利用FastJSON解析成JSON字符串
- 利用Jackson解析成JSON字符串,学生属性中的name更改成username
相关文章:
JSON学习
一、JSON 1.1 简介 JSON:JavaScript Object Notation是一种表示对象的方式 基于JavaScript语言的轻量级的数据交换格式;(即:用来传输数据的一种格式) 现在传输数据的方式更多是采用json的格式,渐渐代替了XML 1.2 JSON的数据表示 …...

LabVIEW在中国航天中的应用
LabVIEW是一种系统设计平台及开发环境,由美国国家仪器公司(NI)开发。它在中国航天领域的应用非常广泛,涵盖了测试与测量、数据采集、控制系统设计等多个方面。以下是LabVIEW在中国航天中的几个主要应用实例: 1. 测试…...
编程思维的培养
培养编程思维是成为一名优秀程序员的重要步骤。编程思维不仅仅是写代码的能力,还包括解决问题的思维方式、对复杂系统的理解、代码优化的意识、团队合作的能力等。以下是一些培养编程思维的方法和建议。 1. 学习基础知识 1.1 掌握编程语言 从一门编程语言开始&am…...

Docker笔记-Debian容器内搭建ssh服务
登陆容器之后修改密码: passwd 密码设置完成后安装openssh-server apt-get install openssh-server 修改端口号为50022并添加配置 vim /etc/ssh/sshd_config 修改成 Port 50022 PasswordAuthentication yes PermitRootLogin yes 启动 rootlinux:~# /etc/in…...
爬虫的法律风险是什么?以及合法使用爬虫技术的建议。
爬虫的法律风险是什么? 网络爬虫技术,虽然在数据获取方面具有巨大优势,但其使用过程中可能引发的法律风险也不容忽视。这些风险主要包括违反数据保护法规、侵犯知识产权、构成不正当竞争等。下面将详细探讨网络爬虫的法律风险,并在…...
微信小程序允许相机访问相册
// 允许从相机和相册扫码 // uni.scanCode({ // success: function(res) { // console.log(条码类型: res.scanType); // console.log(条码内容: res.result); …...

AMEYA360 | 江苏润石最新发布12颗车规级模拟芯片
日前江苏润石再度新增12颗通过AEC-Q100 Grade1,满足MSL 1湿敏等级认证的车规级芯片。截止目前,润石科技总计有70颗Grade1 & MSL1的车规级芯片通过认证并进入量产。凭借卓越的产品技术指标和稳定的品质性能不仅展示了公司在车规级模拟芯片领域的技术积…...
PHP表单设计:确保必需字段完整性的最佳实践
在开发网页应用程序时,设计一个具有必需字段的PHP表单是至关重要的。必需字段是用户提交表单时必须填写的信息,它们对于确保数据完整性和准确性至关重要。本文将从多个方面讨论如何在PHP表单中设计必需字段,并探讨确保表单数据完整性的最佳实…...

CentOS 7 安装部署Cassandra4.1.5
一、Cassandra的介绍 Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源,此后࿰…...

【数据结构与算法】对称矩阵,三角矩阵 详解
给出对称矩阵、三角矩阵的节省内存的存贮结构并写出相应的输入、输出算法。 对称矩阵和三角矩阵可以通过特殊的存储结构来节省内存。这种存储结构只存储矩阵的一部分元素,而不是全部元素。 对称矩阵:对于一个n阶对称矩阵,我们只需要存储主对…...

Apache IoTDB 走进东南大学,深入分享项目发展历程与收获
源于高校,回到高校,Apache IoTDB PMC 成员乔嘉林为同学们详细分享行业前瞻、研发历程与心得体会。 01 把领先的数据库知识带到校园 6 月 5 日,东南大学计算机科学与工程学院、软件学院、人工智能学院主办的“拔尖领航系列活动特别策划篇-第二…...

Stable Diffusion AI绘画助力建筑设计艺术创新——城市建筑设计大模型分享
大家好,我是向阳 今天我将针对建筑设计方面的AI大模型进行简单介绍,我们将通过富有想象力的关键词或结合Stable Diffusion 的ControlNet 给原本只有黑白线条的线稿变成彩色的效果图,可能你只需要短短几分钟就可以让黑白线稿变成几种甚至十几种…...

没有 ADetailer,ComfyUI 画图脸崩了怎么办?
我们都知道 SD 的 WebUI 中的面部修复神器是 ADetailer,不过它是 WebUI 的专属插件,在 ComfyUI 中是搜索不到这个插件的,但是并不代表 ComfyUI 就不能使用面部修复功能了,ComfyUI 中也是可以找到平替的。 今天我们就来讲讲在 Com…...

防爆气象仪的工作原理
TH-WFB5矿山气象传感器在矿山安全监测系统中扮演着至关重要的角色,它们能够及时发现异常情况,为矿山的安全运营提供可靠的数据支持。矿山气象传感器能够实时监测矿山环境中的风速、风向、温度、湿度和大气压力等关键气象参数。这些传感器采用先进的传感技…...

深度学习入门5——为什么神经网络可以学习?
在理解神经网络的可学习性之前,需要先从数学中的导数、数值微分、偏导数、梯度等概念入手,从而理解为什么神经网络具备学习能力。 1.数值微分的定义 先从导数出发理解什么是梯度。某一点的导数直观理解就是在该点的切线的斜率。在数学中导数表示某个瞬…...

Integer溢出问题
0. 背景 在刷 LeetCode 时,代码的执行结果与预期出现了偏差,原因是 Int 值超过了允许范围 [ − 2 31 , 2 31 − 1 ] [-2^{31},2^{31}-1 ] [−231,231−1]。工作中从来没有遇到过这种情况,之前的认知是如果 Int 中存储的值超过了允许范围也许…...
软件测试全面指南:提升软件质量的系统流程
一、引言 随着软件行业的飞速发展,确保软件质量、稳定性和用户体验已成为企业竞争的关键。本文档旨在为测试团队提供一套全面的软件测试指南,通过规范测试用例管理、功能测试、接口测试、性能测试及缺陷管理等流程,助力测试团队实现高效、系统…...

《逆贫大叔》:一部穿越时光的温情史诗
《逆贫大叔》:一部穿越时光的温情史诗 在历史的长河中,有些故事能够穿越时光的尘埃,直击人心。《逆贫大叔》就是这样一部作品,它不仅是一部电视剧,更是一段历史的缩影,一次心灵的触动。 背景设定࿱…...

【电机控制】FOC算法验证步骤——PWM、ADC
【电机控制】FOC算法验证步骤 文章目录 前言一、PWM——不接电机1、PWMA-H-50%2、PWMB-H-25%3、PWMC-H-0%4、PWMA-L-50%5、PWMB-L-75%6、PWMC-L-100% 二、ADC——不接电机1.电流零点稳定性、ADC读取的OFFSET2.电流钳准备3.运放电路分析1.电路OFFSET2.AOP3.采样电路的采样值范围…...
如何衡量llm 数据集的多样性
衡量大型语言模型(LLM)数据集的多样性是一个复杂的问题,因为多样性可以从多个角度来考虑。以下是一些常用的方法和指标来评估数据集的多样性: 词汇多样性: 类型-词符比(Type-Token Ratio, TTR)…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

Linux中《基础IO》详细介绍
目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

DAY 45 超大力王爱学Python
来自超大力王的友情提示:在用tensordoard的时候一定一定要用绝对位置,例如:tensorboard --logdir"D:\代码\archive (1)\runs\cifar10_mlp_experiment_2" 不然读取不了数据 知识点回顾: tensorboard的发展历史和原理tens…...

动态规划-1035.不相交的线-力扣(LeetCode)
一、题目解析 光看题目要求和例图,感觉这题好麻烦,直线不能相交啊,每个数字只属于一条连线啊等等,但我们结合题目所给的信息和例图的内容,这不就是最长公共子序列吗?,我们把最长公共子序列连线起…...
raid存储技术
1. 存储技术概念 数据存储架构是对数据存储方式、存储设备及相关组件的组织和规划,涵盖存储系统的布局、数据存储策略等,它明确数据如何存储、管理与访问,为数据的安全、高效使用提供支撑。 由计算机中一组存储设备、控制部件和管理信息调度的…...

未授权访问事件频发,我们应当如何应对?
在当下,数据已成为企业和组织的核心资产,是推动业务发展、决策制定以及创新的关键驱动力。然而,未授权访问这一隐匿的安全威胁,正如同高悬的达摩克利斯之剑,时刻威胁着数据的安全,一旦触发,便可…...
Spring事务传播机制有哪些?
导语: Spring事务传播机制是后端面试中的必考知识点,特别容易出现在“项目细节挖掘”阶段。面试官通过它来判断你是否真正理解事务控制的本质与异常传播机制。本文将从实战与源码角度出发,全面剖析Spring事务传播机制,帮助你答得有…...