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

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} ]

注意:

  1. JSON的本质就是一串字符串,只不过元素(数据)会使用特定的符号标注

  2. 键和值之间用 : 隔开

  3. 键值对之间用 , 隔开

  4. 支持无限层嵌套

    ps:{name : ‘Java从入门到精通’ , price:100 , author:{name:‘吴彦祖’ , info:‘从事java20年’}}

  5. ‘’ 或 “” 都可以表示字符串

二、序列化和反序列化

序列化:指的是将Java对象转换为JSON字符串的过程,即 Java对象 → JSON字符串

反序列化:指的是将JSON字符串转换为Java对象的过程,即 JSON字符串 → Java对象

三、浏览器中处理JSON

3.1 JSON字符串 → 对象

使用parse函数解析JSON格式字符串

parse函数注意事项(坑):

  1. 字符串的数据格式:所有属性必须用双引号引住,因为使用JSON.parse需严格遵守JSON规范。
  2. 单引号与双引号 :使用单引号嵌套双引号的方式 ’ {“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格式字符串的解析主要用到了下面三个类:

  1. JSON:FastJSON的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换
  2. JSONObject:FastJSON提供的json对象
  3. JSONArray:FastJSON提供json数组对象
5.2 特点
  1. FastJson速度快,无论序列化和反序列化,都是当之无愧的fast
  2. 功能强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
  3. 零依赖(没有依赖其它任何类库)
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 + "]";}
}

七、总结

  1. JSON 格式:
    • {} - 对象
    • [{},{},{}] - 数组
  2. JSON可以支持无限层嵌套
  3. 序列化和反序列化
    • 序列化:指的是将对象转换为JSON字符串的过程,即 对象 → JSON字符串
    • 反序列化:指的是将JSON字符串转换为对象的过程,即 JSON字符串 → 对象
  4. 浏览器中处理JSON
    • parse():使用单引号嵌套双引号的方式
    • eval():使用()包裹JSON字符串
  5. Java中处理JSON:使用FastJSON和Jackson框架

八、作业

  1. 创建学生类(Student),属性有String name,int age,char sex,List interest
  2. 创建该类的对象
  3. 利用FastJSON解析成JSON字符串
  4. 利用Jackson解析成JSON字符串,学生属性中的name更改成username

相关文章:

JSON学习

一、JSON 1.1 简介 JSON&#xff1a;JavaScript Object Notation是一种表示对象的方式 基于JavaScript语言的轻量级的数据交换格式;&#xff08;即:用来传输数据的一种格式&#xff09; 现在传输数据的方式更多是采用json的格式&#xff0c;渐渐代替了XML 1.2 JSON的数据表示 …...

LabVIEW在中国航天中的应用

​LabVIEW是一种系统设计平台及开发环境&#xff0c;由美国国家仪器公司&#xff08;NI&#xff09;开发。它在中国航天领域的应用非常广泛&#xff0c;涵盖了测试与测量、数据采集、控制系统设计等多个方面。以下是LabVIEW在中国航天中的几个主要应用实例&#xff1a; 1. 测试…...

编程思维的培养

培养编程思维是成为一名优秀程序员的重要步骤。编程思维不仅仅是写代码的能力&#xff0c;还包括解决问题的思维方式、对复杂系统的理解、代码优化的意识、团队合作的能力等。以下是一些培养编程思维的方法和建议。 1. 学习基础知识 1.1 掌握编程语言 从一门编程语言开始&am…...

Docker笔记-Debian容器内搭建ssh服务

登陆容器之后修改密码&#xff1a; passwd 密码设置完成后安装openssh-server apt-get install openssh-server 修改端口号为50022并添加配置 vim /etc/ssh/sshd_config 修改成 Port 50022 PasswordAuthentication yes PermitRootLogin yes 启动 rootlinux:~# /etc/in…...

爬虫的法律风险是什么?以及合法使用爬虫技术的建议。

爬虫的法律风险是什么&#xff1f; 网络爬虫技术&#xff0c;虽然在数据获取方面具有巨大优势&#xff0c;但其使用过程中可能引发的法律风险也不容忽视。这些风险主要包括违反数据保护法规、侵犯知识产权、构成不正当竞争等。下面将详细探讨网络爬虫的法律风险&#xff0c;并在…...

微信小程序允许相机访问相册

// 允许从相机和相册扫码 // uni.scanCode({ // success: function(res) { // console.log(条码类型&#xff1a; res.scanType); // console.log(条码内容&#xff1a; res.result); …...

AMEYA360 | 江苏润石最新发布12颗车规级模拟芯片

日前江苏润石再度新增12颗通过AEC-Q100 Grade1&#xff0c;满足MSL 1湿敏等级认证的车规级芯片。截止目前&#xff0c;润石科技总计有70颗Grade1 & MSL1的车规级芯片通过认证并进入量产。凭借卓越的产品技术指标和稳定的品质性能不仅展示了公司在车规级模拟芯片领域的技术积…...

PHP表单设计:确保必需字段完整性的最佳实践

在开发网页应用程序时&#xff0c;设计一个具有必需字段的PHP表单是至关重要的。必需字段是用户提交表单时必须填写的信息&#xff0c;它们对于确保数据完整性和准确性至关重要。本文将从多个方面讨论如何在PHP表单中设计必需字段&#xff0c;并探讨确保表单数据完整性的最佳实…...

CentOS 7 安装部署Cassandra4.1.5

一、Cassandra的介绍 Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发&#xff0c;用于储存收件箱等简单格式数据&#xff0c;集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源&#xff0c;此后&#xff0…...

【数据结构与算法】对称矩阵,三角矩阵 详解

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

Apache IoTDB 走进东南大学,深入分享项目发展历程与收获

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

Stable Diffusion AI绘画助力建筑设计艺术创新——城市建筑设计大模型分享

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

没有 ADetailer,ComfyUI 画图脸崩了怎么办?

我们都知道 SD 的 WebUI 中的面部修复神器是 ADetailer&#xff0c;不过它是 WebUI 的专属插件&#xff0c;在 ComfyUI 中是搜索不到这个插件的&#xff0c;但是并不代表 ComfyUI 就不能使用面部修复功能了&#xff0c;ComfyUI 中也是可以找到平替的。 今天我们就来讲讲在 Com…...

防爆气象仪的工作原理

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

深度学习入门5——为什么神经网络可以学习?

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

Integer溢出问题

0. 背景 在刷 LeetCode 时&#xff0c;代码的执行结果与预期出现了偏差&#xff0c;原因是 Int 值超过了允许范围 [ − 2 31 , 2 31 − 1 ] [-2^{31},2^{31}-1 ] [−231,231−1]。工作中从来没有遇到过这种情况&#xff0c;之前的认知是如果 Int 中存储的值超过了允许范围也许…...

软件测试全面指南:提升软件质量的系统流程

一、引言 随着软件行业的飞速发展&#xff0c;确保软件质量、稳定性和用户体验已成为企业竞争的关键。本文档旨在为测试团队提供一套全面的软件测试指南&#xff0c;通过规范测试用例管理、功能测试、接口测试、性能测试及缺陷管理等流程&#xff0c;助力测试团队实现高效、系统…...

《逆贫大叔》:一部穿越时光的温情史诗

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

【电机控制】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 数据集的多样性

衡量大型语言模型&#xff08;LLM&#xff09;数据集的多样性是一个复杂的问题&#xff0c;因为多样性可以从多个角度来考虑。以下是一些常用的方法和指标来评估数据集的多样性&#xff1a; 词汇多样性&#xff1a; 类型-词符比&#xff08;Type-Token Ratio, TTR&#xff09;…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...