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

【Java干货教程】JSON,JSONObject,JSONArray类详解

一、定义

JSON:就是一种轻量级的数据交换格式,被广泛应用于WEB应用程序开发。JSON的简洁和清晰的层次结构,易于阅读和编写;同时也易于机器解析和生成,有效的提升网络传输效率;支持多种语言,很多流行的语言都对JSON格式有着很友好的支持。

  • JSON对象:就是多个属性被{}括起来的。
  • JSON数组:就是包含了多个JSON对象的一个集合,数组是以数组括号[]括起来的。JSON数组并不一定是要相同的JSON对象的集合,也可以是不同的对象。

JSON、JSON对象、JSON数组的区别 

  • JSON是一种数据结构,类型xml;
  • JSON对象则是对JSON的具体体现;JSON数组则是将多个JSON对象进行存储的一个集合。

这里以fastjson2来进行讲解,不同的jar包对JSON相关的处理有着不同的实现方式,但是大部分方法也都是相同的。

二、fastjson2

2.1、fastjson2简介

fastjson2 是 FASTJSON 项目的重要升级,目标是为下一个十年提供一个高性能的JSON库, fastjson2 性能相比原先旧的 fastjson 有了很大提升,并且 fastjson2 更安全,完全删除autoType白名单,提升了安全性。

中文文档: 

​​​​https://github.com/alibaba/fastjson2/blob/main/README.md

下面是一些常用的方法 

2.2、导入fastjson2依赖

maven如下:pom(本文所有代码仅使用这一个依赖即可):

    <dependencies><dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>2.0.26</version></dependency></dependencies>

需要注意的一点是在使用 fastjson2 时导入的包名是 com.alibaba.fastjson2 ,就像下面这样:

import com.alibaba.fastjson2.JSON;

import com.alibaba.fastjson2.JSONObject;

import com.alibaba.fastjson2.JSONArray;

2.3、json对象与json数组的创建

2.3.1、json对象创建

import com.alibaba.fastjson2.JSONObject;public class Demo {public static void main(String[] args) {JSONObject info = new JSONObject();info.put("name", "张三");info.put("age", "18");info.put("地理", "70");info.put("英语", "60");System.out.println(info);}
}

2.3.2、json数组创建

import com.alibaba.fastjson2.JSONArray;public class Demo {public static void main(String[] args) {JSONArray array = new JSONArray();array.add("1班");array.add("2班");array.add("3班");System.out.println(array);}
}

2.3.2、json对象添加到json数组

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;public class Demo {public static void main(String[] args) {JSONObject info1 = new JSONObject();info1.put("name", "张三");info1.put("age", "18");JSONObject info2 = new JSONObject();info2.put("name", "李四");info2.put("age", "19");//把上面创建的两个json对象加入到json数组里JSONArray array = new JSONArray();array.add(info1);array.add(info2);System.out.println(array);}
}

2.4、json对象取值与json数组遍历取值

2.4.1、json对象取值

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;public class Demo {public static void main(String[] args) {JSONArray array = new JSONArray();array.add("1班");array.add("2班");array.add("3班");JSONObject school = new JSONObject();school.put("schoolName", "第一中学");school.put("teacher", "刘梅");JSONObject info = new JSONObject();info.put("name", "张三");info.put("age", "18");info.put("gradle", array);info.put("schoolInfo", school);//从info中取值System.out.println(info.getString("name")); //张三System.out.println(info.getIntValue("age"));//18System.out.println(info.getJSONArray("gradle"));//["1班","2班","3班"]System.out.println(info.getJSONObject("schoolInfo"));//{"schoolName":"第一中学","teacher":"刘梅"}}
}

2.4.2、json数组遍历取值 

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;public class Demo {public static void main(String[] args) {JSONObject info1 = new JSONObject();info1.put("name", "张三");info1.put("age", "18");JSONObject info2 = new JSONObject();info2.put("name", "李四");info2.put("age", "19");JSONArray array = new JSONArray();array.add(info1);array.add(info2);//遍历获取json数组中对象的值for (int i = 0; i < array.size(); i++) {JSONObject json = array.getJSONObject(i);System.out.println(json.getString("name"));System.out.println(json.getString("age"));}}
}

2.5、json对象与字符串的转换 

2.5.1、json对象与字符串的转换

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;public class Demo {public static void main(String[] args) {JSONObject info = new JSONObject();info.put("name", "张三");info.put("age", "18");info.put("地理", "70");info.put("英语", "60");//JSON对象转字符串String str = JSON.toJSONString(info);System.out.println(str);//JSON字符串转JSON对象JSONObject json = JSONObject.parseObject(str);System.out.println(json);}
}

2.5.2、json字符串的字节数组转json对象

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;public class Demo {public static void main(String[] args) {String str = "{\"name\":\"张三\",\"age\":\"18\",\"地理\":\"70\",\"英语\":\"60\"}";byte[] bytes = str.getBytes();JSONObject data = JSON.parseObject(bytes);System.out.println(data);}
}

2.6、json数组与字符串的转换

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;public class Demo {public static void main(String[] args) {String text = "[\"张三\",\"李四\",\"王五\"]";System.out.println(text);//json字符串转json数组JSONArray data = JSON.parseArray(text);//json数组转json字符串String str = JSONArray.toJSONString(data);System.out.println(data);System.out.println(str);}
}

2.7、json字符串转java对象的转换 

Student类如下:

public class Student {public String name;public int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Student(String name, int age) {this.name = name;this.age = age;}
}

2.7.1、json字符串转java对象的转换

import com.alibaba.fastjson2.JSON;public class Demo {public static void main(String[] args) {Student student = new Student("张三", 18);//Student对象转JSON字符串String studentStr = JSON.toJSONString(student);//JSON字符串转Student对象Student data = JSON.parseObject(studentStr, Student.class);System.out.println(studentStr);}
}

2.7.2、java对象转byte数组转换 

import com.alibaba.fastjson2.JSON;public class Demo {public static void main(String[] args) {Student student = new Student("张三", 18);//Student对象转字节数组byte[] text = JSON.toJSONBytes(student);//字节数组转Student对象Student data = JSON.parseObject(text, Student.class);System.out.println(data.getName() + data.getAge());}
}

2.8、json字符串与Map转换 

2.8.1、json字符串转Map

@Testpublic void test05(){String str = "{\n" +"\"gradle\":\"高一\",\n" +"\"number\":\"2\",\n" +"\"people\":[{\"name\":\"张三\",\"age\":\"15\",\"phone\":\"123456\"},\n" +"         {\"name\":\"李四\",\"age\":\"16\",\"phone\":\"78945\"}]\n" +"}";Map<String, Object> map1 = JSONObject.parseObject(str, new TypeReference<Map<String, Object>>() {});Map map2 = JSON.parseObject(str, Map.class);System.out.println(map1);System.out.println(map2);}

2.8.2、Map转json字符串

(注意:如果直接使用JSON.toJSONString(map)转换,因为"测试1"的值为null,转换的结果就会是 {“测试2”:“hello”})

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONWriter;import java.util.HashMap;
import java.util.Map;public class Demo {public static void main(String[] args) {Map<String, String> map = new HashMap<>();map.put("测试1", null);map.put("测试2", "hello");//{"测试2":"hello","测试1":null}String str = JSON.toJSONString(map, JSONWriter.Feature.WriteMapNullValue);System.out.println(str);}
}

如果你使用的是老的fastjson1(下述是简单示例,不可使用),可以像下面这样转换:

Map<String, String> map = new HashMap<>();
map.put("测试1", null);
map.put("测试2", "hello");
String str = JSON.toJSONString(map, SerializerFeature.WriteMapNullValue) ;

2.9、json数组转List

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;import java.util.List;
import java.util.Map;public class Demo {public static void main(String[] args) {String str = "{\n" +"\"gradle\":\"高一\",\n" +"\"number\":\"2\",\n" +"\"people\":[{\"name\":\"张三\",\"age\":\"15\",\"phone\":\"123456\"},\n" +"         {\"name\":\"李四\",\"age\":\"16\",\"phone\":\"78945\"}]\n" +"}";JSONObject strJson = JSONObject.parseObject(str);//获取people数组JSONArray people = strJson.getJSONArray("people");//json数组转ListList<Map> list = people.toJavaList(Map.class);System.out.println(str);}
}

如果你使用的是老的fastjson1,可以像下面这样转换:    

String str = "{\n" +"\"gradle\":\"高一\",\n" +"\"number\":\"2\",\n" +"\"people\":[{\"name\":\"张三\",\"age\":\"15\",\"phone\":\"123456\"},\n" +"         {\"name\":\"李四\",\"age\":\"16\",\"phone\":\"78945\"}]\n" +"}";JSONObject strJson = JSONObject.parseObject(str);//字符串转json对象
String people = String.valueOf(strJson.getJSONArray("people"));
List<Map<String, String>> list = (List<Map<String, String>>) JSONArray.parse(people);

 

参考文章:JSONObject详解(com.alibaba)-fastjson2_com.alibaba.fastjson2-CSDN博客

相关文章:

【Java干货教程】JSON,JSONObject,JSONArray类详解

一、定义 JSON&#xff1a;就是一种轻量级的数据交换格式&#xff0c;被广泛应用于WEB应用程序开发。JSON的简洁和清晰的层次结构&#xff0c;易于阅读和编写&#xff1b;同时也易于机器解析和生成&#xff0c;有效的提升网络传输效率&#xff1b;支持多种语言&#xff0c;很多…...

2023年高级软考系统架构师考题参考

对于一些有实践经验的同学来说&#xff0c;感觉不难&#xff0c;但是落笔到纸面上&#xff0c;就差强人意了&#xff0c;平时这方面要多练习&#xff0c;所想所思要落到纸面上&#xff0c;或者表达清晰让别人听懂&#xff0c;不仅是工作中的一个基本素质&#xff0c;也是个非常…...

【c语言】飞机大战(1)

提前准备好游戏要的素材&#xff0c;可以到爱给网去找&#xff0c;飞机大战我们需要的是一个我方战机图片&#xff0c;一个背景图&#xff0c;三个敌方战机的图&#xff0c;我方战机的图片&#xff0c;敌方战机的图片&#xff0c;并且将图片和.cpp放在同一文件夹下. 这里创建.…...

关于 K8s 的一些基础概念整理

〇、前言 Kubernetes&#xff0c;将中间八个字母用数字 8 替换掉简称 k8s&#xff0c;是一个开源的容器集群管理系统&#xff0c;由谷歌开发并维护。它为跨主机的容器化应用提供资源调度、服务发现、高可用管理和弹性伸缩等功能。 下面简单列一下 k8s 的几个特性&#xff1a; 自…...

Node.js-fs、path、http模块

1.初识Node.js 1.1 什么是Node.js 1.2 Node.js中的JavaScript运行环境 1.3 Node.js可以做什么 Node.js 作为一个JavaScript 的运行环境&#xff0c;仅仅提供了基础的功能和 AP1。然而&#xff0c;基于 ode.s 提供的这些基础能&#xff0c;很多强大的工具和框架如雨后春笋&…...

CentOS 安装WebLogic

1.JDK 安装 cd /home/ mkdir java cd java/ tar -zxvf jdk-8u321-linux-x64.tar.gzvim /etc/profile添加以下内容到 /etc/profile JAVA_HOME/home/java/jdk1.8.0_321 CLASSPATH.:$JAVA_HOME/lib.tools.jar PATH$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH刷新配置…...

Linux命令的操作练习

1.创建ss别名&#xff0c;查看长格式详细信息 alias ssls -l 2.创建ss别名&#xff0c;复制boot文件夹下的内容到data文件夹下 alias sscp -r /boot /data 3.删除别名ss unalias ss 4. 复制test文件夹下的passwd文件到qq文件夹下&#xff0c;并改名为ww cp test/pas…...

杰发科技AC7840——EEPROM初探

0.序 7840和7801的模拟EEPROM使用不太一样 1.现象 按照官方Demo&#xff0c;在这样的配置下&#xff0c;我们看到存储是这样的&#xff08;连续三个数字1 2 3&#xff09;。 使用串口工具的多帧发送功能 看不出多少规律 修改代码后 发现如下规律&#xff1a; 前四个字节是…...

WPF 基础入门(简介)

简介 WPF&#xff08;Windows Presentation Foundation&#xff09;是微软推出的基于Windows 的用户界面框架&#xff0c;属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架&#xff0c;真正做到了分离界面设计人员与开发人员的工作&#xff1b;同时它提供了…...

【Unity动画系统】Animator有限状态机参数详解

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…...

php获取访客IP、UA、操作系统、浏览器等信息

最近有个需求就是获取下本地的ip地址、网上搜索了相关的教程&#xff0c;总结一下分享给大家、有需要的小伙伴可以参考一下 一、简单的获取 User Agent 信息代码: echo $_SERVER[HTTP_USER_AGENT]; 二、获取访客操作系统信息: /** * 获取客户端操作系统信息,包括win10 * pa…...

基于huffman编解码的图像压缩算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 Huffman编码算法步骤 4.2 Huffman编码的数学原理 4.3 基于Huffman编解码的图像压缩 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..…...

python+django网上购物商城系统o9m4k

语言&#xff1a;Python 框架&#xff1a;django/flask可以定制 软件版本&#xff1a;python3.7.7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发工具pycharm/vscode都可以 前端框架:vue.js 系统使用过程主要涉及到管理员和用户两种角色&#xff0c;主要包含个…...

面试题-性能优化

前端项目优化&#xff1a; 一般考虑方面: (挑几点记住) 我们学的: 懒加载: 路由、图片懒加载 骨架屏的使用 压缩文件&#xff1a;可以使用压缩工具&#xff08;如GZIP&#xff09;对页面文件进行压缩&#xff0c;减小文件大小&#xff0c;提高页面加载速度。 减少HTTP请求&a…...

自身文档管理规范

之前在 这里 叙述了 用 sphinx 生成静态网站&#xff0c; 并利用 静态网络托管服务 readthedocs 现在我们有了新的需求&#xff0c;想知道这些东西到底是什么。 过程 过程A &#xff1a; markdown/rst -> html mkdocs sphinx相关&#xff1a; pandoc(不能生成整个网站的h…...

php学习05-常量

常量可以理解为值不变的量。常量值被定义后&#xff0c;在脚本的其他任何地方都不能改变。一个常量由英文字母、下划线和数字组成&#xff0c;但数字不能作为首字母出现。 在PHP中使用define()函数来定义常量&#xff0c;该函数的语法格式如下&#xff1a; define(string cons…...

MFC:如何将JPEG等图片显示到对话框客户区

步骤: 0、打开VS2022创建一个基于对话框的MFC应用&#xff0c;项目名称命名为PicShow&#xff0c;创建完成后将对话框客户区中的"确定"按钮等内容删除&#xff08;具体步骤略&#xff09;。 1、建立菜单栏&#xff1a;文件->打开、退出。具体步骤&#x…...

MIUI解BL锁+刷系统教程

解除BL锁 打开设置找到My device->Detailed info and specs->连点5下MIUI version(进入开发者模式)重新打开设置找到Additional settings->Developer opentions->Mi lock status->Add account and device下载官方解锁工具包&#xff08;miflash_unlock&#xf…...

数据结构和算法笔记3:双指针法(快慢指针)

双指针法&#xff08;快慢指针法&#xff09;在数组、字符串和链表的操作中是非常常见的&#xff0c;这里结合力扣上的题进行可一下梳理&#xff0c;主要的思路是我们要明确快指针指的是什么&#xff0c;慢指针指的是什么。 1. 移除元素类问题 27. 移除元素 要我们移除目标元…...

股票价格预测 | Python实现Autoformer, FEDformer和PatchTST等模型用于股价预测

文章目录 效果一览文章概述环境描述源码设计效果一览 文章概述 Autoformer、FEDformer和PatchTST是一些用于时间序列预测,包括股价预测的模型。它们都是在Transformer模型的基础上进行了改进和扩展,以更好地适应时间序列数据的特点。 Autoformer:Autoformer是一种自适应Tran…...

Git基础学习_p1

文章目录 一、前言二、Git手册学习2.1 Git介绍&前置知识2.2 Git教程2.2.1 导入新项目2.2.2 做更改2.2.3 Git追踪内容而非文件2.2.4 查看项目历史2.2.5 管理分支&#x1f53a;2.2.6 用Git来协同工作2.2.7 查看历史 三、结尾 一、前言 Git相信大部分从事软件工作的人都听说过…...

4.Redis事务

4.Redis事务 文章目录 4.Redis事务是什么&#xff1f;能干嘛&#xff1f;Redis 事务 VS 数据库事务命令总结 是什么&#xff1f; 可以一次执行多个命令&#xff0c;本质是一组命令的集合。一个事务中的所有命令都会序列化&#xff0c;按顺序地串行化执行而不会被其它命令插入&…...

golang 图片加水印

需求&#xff1a; 1&#xff0c;员工签到图片加水印 2&#xff0c;水印文字需要有半透明的底色&#xff0c;避免水印看不清 3&#xff0c;图片宽设置在600&#xff0c;小于600或者大于600都需要等比例修改图片的高度&#xff0c;保持水印在图片中的大小和位置 4&#xff0c;处理…...

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set问题解决方案

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set问题解决方案 当我们使用sudo su切换权限时提示错误&#xff1a; sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set该错误出现原因&#xff1a;是因为/usr/bin/sudo的权限被…...

提升效率:使用注解实现精简而高效的Spring开发

IOC/DI注解开发 1.0 环境准备1.1 注解开发定义bean步骤1:删除原XML配置步骤2:Dao上添加注解步骤3:配置Spring的注解包扫描步骤4&#xff1a;运行程序步骤5:Service上添加注解步骤6:运行程序知识点1:Component等 1.2 纯注解开发模式1.2.1 思路分析1.2.2 实现步骤步骤1:创建配置类…...

全面好用的setting.xml配置

<?xml version"1.0" encoding"UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information…...

八股文打卡day14——计算机网络(14)

面试题&#xff1a;TCP的Keepalive和HTTP的Keep-Alive是一个东西吗&#xff1f; 我的回答&#xff1a; TCP的Keepalive 1.位于TCP/IP模型的传输层。 2.是用来判活的。客户端会向服务器发送一个Keepalive包来判断&#xff0c;这个TCP连接是否还存活着。 HTTP中的Keep-Alive 1.…...

NCNN环境部署及yolov5pt转ncnn模型转换推理

该内容还未完整&#xff0c;笔记内容&#xff0c;持续补充。 〇开发环境版本 vs2022 cmake3.21.1 ncnn20231027发行版 yolov5s v6.2 vunlkan1.2.198.1 Protobuf3.20.0 Opencv3.4.1 一、模型转换 yolov5s v6.2训练的pt模型&#xff0c;直接导出tourchscript&#xff0c…...

selenium模块有哪些用途?

Selenium模块是一个用于Web应用程序测试的模块&#xff0c;具有多种示例用法。以下是一些示例&#xff1a; 1.打开网页并执行一些基本操作&#xff0c;如点击按钮、输入文本等。 定位网页元素并执行操作&#xff0c;例如使用 find_element 方法查找单个元素&#xff0c;使用 f…...

精品Nodejs实现的校园疫情防控管理系统的设计与实现健康打卡

《[含文档PPT源码等]精品Nodejs实现的校园疫情防控管理系统的设计与实现[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; 操作系统&#xff1a;Windows 10、Windows 7、Win…...

爬虫工作量由小到大的思维转变---<第三十五章 Scrapy 的scrapyd+Gerapy 部署爬虫项目>

前言: 项目框架没有问题大家布好了的话,接着我们就开始部署scrapy项目(没搭好架子的话,看我上文爬虫工作量由小到大的思维转变---&#xff1c;第三十四章 Scrapy 的部署scrapydGerapy&#xff1e;-CSDN博客) 正文: 1.创建主机: 首先gerapy的架子,就相当于部署服务器上的;所以…...

python测试工具: 实现数据源自动核对

测试业务需要&#xff1a; 现有A系统作为下游数据系统&#xff0c;上游系统有A1,A2,A3... 需要将A1,A2,A3...的数据达到某条件后&#xff08;比如&#xff1a;A1系统销售单提交出库成功&#xff09;自动触发MQ然后再经过数据清洗落到A系统&#xff0c;并将清洗后数据通过特定…...

要学习openfoam,c++需要掌握到什么程度?

要学习openfoam&#xff0c;c需要掌握到什么程度&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「c的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享给大家&…...

web一些实验代码——Servlet请求与响应

实验4&#xff1a;Servlet请求与响应 1、在页面输入学生学号&#xff0c;从数据库中查询学生信息并显示。 &#xff08;1&#xff09;启动MySQL数据库服务&#xff0c;新建数据库&#xff0c;将student.sql文件导入到新建数据库&#xff08;建立表&#xff0c;并插入3条数据&…...

GPT系列概述

OPENAI做的东西 Openai老窝在爱荷华州&#xff0c;微软投资的数据中心 万物皆可GPT下咱们要失业了&#xff1f; 但是世界不仅仅是GPT GPT其实也只是冰山一角&#xff0c;2022年每4天就有一个大型模型问世 GPT历史时刻 GPT-1 带回到2018年的NLP 所有下游任务都需要微调&#x…...

基于遗传算法的集装箱吊装优化,基于遗传算法的集装箱装卸优化

目录 背影 遗传算法的原理及步骤 基本定义 编码方式 适应度函数 运算过程 代码 结果分析 完整代码下载: 基于遗传算法的集装箱吊装优化,基于遗传算法的集装箱装卸优化(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc991835105/88674652 背影 …...

postgreSQL单机部署

一、环境准备 架构操作系统IP主机名PG版本端口磁盘空间内存CPUsingle 单机centos7192.168.1.10pgserver01PostgreSQL 14.7543350G4G2 1、官网下载源码包 https://www.postgresql.org/download/2、操作系统参数修改 2.1 sysctl.conf配置 vi /etc/sysctl.conf kernel.sysrq …...

思维逻辑题3

题目1&#xff1a; 如果所有A都是B&#xff0c;且某个对象是B&#xff0c;那么它一定是A吗&#xff1f; 答案&#xff1a;不一定&#xff0c;尽管所有A都是B&#xff0c;但还有其他的对象可能也是B。 题目2&#xff1a; 如果A和B都是真&#xff0c;那么以下哪个选项是真&…...

强大的音乐乐谱控件库

2023 Conmajia, 2018 Ajcek84 SN: 23C.1 本中文翻译已获原作者首肯。 简介 PSAM 控件库——波兰音乐文档系统——是用于显示、排版乐谱的强大 WinForm 库&#xff0c;包含用于绘制乐谱的名为 IncipitViewer 控件&#xff0c;乐谱内容可以从 MusicXml 文件读取&#xff0c;或者…...

数据库——简单查询复杂查询

1.实验内容及原理 1. 在 Windows 系统中安装 VMWare 虚拟机&#xff0c;在 VMWare 中安装 Ubuntu 系统,并在 Ubuntu 中搭建 LAMP 实验环境。 2. 使用 MySQL 进行一些基本操作&#xff1a; &#xff08;1&#xff09;登录 MySQL&#xff0c;在 MySQL 中创建用户&#xff0c;…...

java虚拟机内存管理

文章目录 概要一、jdk7与jdk8内存结构的差异二、程序计数器三、虚拟机栈3.1 什么是虚拟机栈3.2 什么是栈帧3.3 栈帧的组成 四、本地方法栈五、堆5.1 堆的特点5.2 堆的结构5.3 堆的参数配置 六、方法区6.1 方法区结构6.2 运行时常量池 七、元空间 概要 根据 JVM 规范&#xff0…...

Hive实战:词频统计

文章目录 一、实战概述二、提出任务三、完成任务&#xff08;一&#xff09;准备数据文件1、在虚拟机上创建文本文件2、将文本文件上传到HDFS指定目录 &#xff08;二&#xff09;实现步骤1、启动Hive Metastore服务2、启动Hive客户端3、基于HDFS文件创建外部表4、查询单词表&a…...

FairyGUI-Cocos Creator官方Demo源码解读

博主在学习Cocos Creator的时候&#xff0c;发现了一款免费的UI编辑器FairyGUI。这款编辑器的能力十分强大&#xff0c;但是网上的学习资源比较少&#xff0c;坑比较多&#xff0c;主要学习方式就是阅读官方文档和练习官方Demo。这里博主进行官方Demo的解读。 从gitee上克隆项目…...

LabVIEW利用视觉引导机开发器人精准抓取

LabVIEW利用视觉引导机开发器人精准抓取 本项目利用单目视觉技术指导多关节机器人精确抓取三维物体的技术。通过改进传统的相机标定方法&#xff0c;结合LabVIEW平台的Vision Development和Vision Builder forAutomated Inspection组件&#xff0c;优化了摄像系统的标定过程&a…...

【Linux】指令(本人使用比较少的)——笔记(持续更新)

文章目录 ps -axj&#xff1a;查看进程ps -aL&#xff1a;查看线程echo $?&#xff1a;查看最近程序的退出码jobs&#xff1a;查看后台运行的线程组fd 任务号&#xff1a;将后台任务提到前台bg 任务号&#xff1a;将暂停的后台程序重启netstat -nltp&#xff1a;查看服务及监听…...

032 - STM32学习笔记 - TIM基本定时器(一) - 定时器基本知识

032 - STM32学习笔记 - TIM定时器&#xff08;一&#xff09; - 基本定时器知识 这节开始学习一下TIM定时器功能&#xff0c;从字面意思上理解&#xff0c;定时器的基本功能就是用来定时&#xff0c;与定时器相结合&#xff0c;可以实现一些周期性的数据发送、采集等功能&#…...

轮廓检测与处理

轮廓检测 先将图像转换成二值 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 灰度图 ret, thresh cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 变为二值&#xff0c;大于127置为255&#xff0c;小于100置为0.使用cv2.findContours(thresh, cv2.RETR_TREE, cv2.…...

跟着LearnOpenGL学习11--材质

文章目录 一、材质二、设置材质三、光的属性四、不同的光源颜色 一、材质 在现实世界里&#xff0c;每个物体会对光产生不同的反应。 比如&#xff0c;钢制物体看起来通常会比陶土花瓶更闪闪发光&#xff0c;一个木头箱子也不会与一个钢制箱子反射同样程度的光。 有些物体反…...

Java guava partition方法拆分集合自定义集合拆分方法

日常开发中&#xff0c;经常遇到拆分集合处理的场景&#xff0c;现在记录2中拆分集合的方法。 1. 使用Guava包提供的集合操作工具栏 Lists.partition()方法拆分 首先&#xff0c;引入maven依赖 <dependency><groupId>com.google.guava</groupId><artifa…...

GLTF编辑器-位移贴图实现破碎的路面

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 位移贴图是一种可以用于增加模型细节和形状的贴图。它能够在渲染时针…...