Java开发中JSON的应用与处理详解
Java与JSON
关于 JSON,最重要的是要理解它是一种数据格式,不是一种编程语言**。虽然具有相同的语法形式,但
JSON 并不从属于 JavaScript。而且,并不是只有 JavaScript 才使用
JSON,毕竟 JSON 只是一种数据格式。很多编程语言都有针对 JSON
的解析器和序列化器。
JSON
是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量。
对象(object):一个对象包含一系列非排序的键/值对,一个对象以
{开始,并以 }结束。每个键/值对之间使用
:分区。多个键值对之间通过 ,
分割。需要注意的是JSON 的键是一个 String 类型的字符串
img
值(value):可以是双引号括起来的字符串(string)、数值(number)、true、false、
null、对象(object)或者数组(array)。这些结构可以嵌套使用。
JSON 值的格式
ECMAScript 5 定义了一个原生的 JSON 对象; JSON对象包含两个方法:
用于解析...
Dcoker part5-Docker将容器提交为新镜像和容器相关内容
Docker Commit 命令
Docker
中用于将容器的修改提交为新镜像的命令,当我们对运行中的容器进行了配置修改、软件安装等操作后,可以通过该命令将这些变更固化为一个新的镜像,以便后续复用或分发。
基本语法
如下命令可以允许我们将容器的当前状态保存为一个新的镜像。当我们在容器中安装了新软件或修改了配置,需要保存这些更改的时候,我们可以把该镜像打包为一个容器进行发布。
1docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
CONTAINER:要提交的容器 ID
或名称。
REPOSITORY[:TAG](可选):新镜像的名称和标签,格式为仓库名:标签名。
常用参数
参数
作用
-a, --author
指定镜像作者,如--author "ergoutree"。
-c, --change
在提交时添加 Dockerfile
指令(如CMD、ENV),会应用到新镜像中。
-m, --message
添加提交信息,类似 Git...
Docker part4-镜像的分层概念和镜像结构
Ubuntu容器说明
回顾一下,容器只不过是一个正在运行的进程,它还应用了一些附加的封装功能,以使其与主机和其他容器保持隔离。而镜像包含运行应用程序所需的所有内容——代码或二进制文件、运行时、依赖项以及所需的任何其他文件系统对象。
实际上在实际使用中,我们使用镜像创建容器,非常像使用一个新的系统镜像(这里的镜像包含了运行程序的所有内容)来安装系统(创建容器)
有镜像才能创建容器,这是根本前提
那么这些容器的关系是什么情况,如下图
image-20250708171232253
推荐 Ubuntu,因为 CentOS 太大了
貌似现在你在 Ubuntu 装 docker,就会自带一个 Ubuntu 的镜像上的 Ubuntu
容器
Docker镜像加载原理
镜像基本
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件,这个打包好的运行环境就是
image 镜像文件。只有通过这个镜像文件才能生成 Docker...
Docker part3-Docker常用命令
Docker 帮助类命令
1docker --help
功能:显示 Docker
命令行工具的全局帮助信息,包括所有可用的子命令列表,以及如何使用 Docker
命令的基本语法结构。
示例:在终端输入
docker --help,会输出类似以下内容:
image-20250708144835613
1docker COMMAND --help
功能:显示具体某个 Docker
子命令的帮助信息,比如想了解 docker run
命令的详细用法和参数说明,就可以使用 docker run --help
。它会列出该命令的语法格式、各个参数的含义、以及一些使用示例。
示例:执行
docker run --help,输出内容会包含:
image-20250708144953099
1docker help
功能:与 docker --help...
Docker part1-Docker理念与架构理解
了解docker的前生 LXC
LXC为Linux
Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。
Linux Container提供了在单一可控主机节点上支持多个相互隔离的 server
container 同时执行的机制。Linux Container有点像
chroot,提供了一个拥有自己进程和网络空间的虚拟环境,但又有别于虚拟机,因为lxc是一种操作系统层次上的资源的虚拟化。
docker并不是LXC替代品,docker底层使用了LXC来实现,LXC将linux进程沙盒化,使得进程之间相互隔离,并且能够控制各进程的资源分配。
在LXC的基础之上,docker提供了一系列更强大的功能。
而docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,这是
LXC...
Java8新特性-Stream流的全面讲解
什么是Stream流
Java 8 引入的 Stream API
是一个革命性的特性,它为集合操作提供了一种更高效、更简洁的方式。配合同版本的lambda表达式的出现,我们操作集合(Collection)提供了极大的便利。Stream
是 Java 8
中处理集合数据的抽象概念,它不是一个数据结构,而是一个来自数据源的元素队列并支持聚合操作。
Stream 将要处理的元素集合看作一种流,在流的过程中,借助 Stream API
对流中的元素进行操作,比如:筛选、排序、聚合等。
Stream
允许你以声明式方式处理数据集合,将复杂的数据处理任务转化为一系列简单的操作链。
这里的流指的是一系列元素的序列,它可以在一次遍历的过程中逐个处理这些元素。在Java中,流是对数据的抽象,可以操作各种不同类型的数据源,如集合、数组、文件等。
Stream可以由数组或集合创建,对流的操作分为两种:
中间操作,每次返回一个新的流,可以有多个。(筛选 filter、映射
map、排序 sorted、去重组合...
Docker part2-Docker的安装和使用
Docker简介
简而言之,Docker
是一个可供开发者通过容器(container)来构建,运行和共享应用(application)的平台。用容器来部署应用被称为集装箱化(containerization)。
Docker
就像一个盒子,里面可以装很多物件,如果需要某些物件,可以直接将该盒子拿走,而不需要从该盒子中一件一件的取。
Docker中文社区、Docker中文文档
Docker 包括三个基本概念:
镜像(Image)
Docker的镜像概念类似于虚拟机里的镜像(比如.ISO文件),是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。
例如:一个镜像可以包含一个完整的...
理解Java Lambda表达式的使用
Lambda表达式概述
Lambda表达式是 Java8
正式引入的一种语法,它的本质上是一个匿名函数,是对匿名函数的简写形式,它可以被传递给方法或存储在变量中,提供了一种清晰简洁的方式来表示一个接口的单个方法。
我们可以把
Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递),因为Lambda
表达式支持函数式编程范式,它允许开发人员传递行为而不是具体的值,这简化了代码结构和流程控制。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升;
而且它极大地增强了 Java
的编程模型,尤其在处理集合和流时,我们接下来在学习 Stream Api 和在
Spring 中异常处理与响应构建,Bean定义与条件配置等时候都需要用到
Lambda表达式
让我们通过一个具体例子看Lambda表达式如何简化代码:
传统匿名内部类写法:
123456Comparator<String> comparator = new Comparator<String>() { @Override public...
Java枚举类型及其深入理解
关于枚举类型
什么是枚举类型
枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型
一般在实现枚举一些多次会被使用的常量时候,可以使用定义常量的方式,也就是
fianl int
枚举模式,这样的定义方式并没有什么错,但它存在许多不足,如在类型安全和使用方便性上并没有多少好处,如果存在定义int值相同的变量,混淆的几率还是很大的,编译器也不会提出任何警告
例如星期中每天的枚举
123456789101112131415// 不使用枚举类public class DayWeek { public static final int MONDAY =1; public static final int TUESDAY=2; public static final int WEDNESDAY=3; public static final int THURSDAY=4; public static final int FRIDAY=5; public static final int SATURDAY=6; ...
概率论与数理统计部分习题选做
随机事件和概率部分
题目1:古典概型
一个箱子里装有8个不同编号的红球、6个不同编号的白球和4个不同编号的黑球。现从中无放回地抽取4个球,求满足以下条件的概率:
抽取的4个球中,红球、白球、黑球至少各有1个。
已知抽取的4个球中至少有2个红球,求恰好有2个红球的概率。
解答:
设 抽取的4个球中,红球、白球、黑球至少各有1个 为事件 X
而,从8 + 6 + 4 = 18个球中无放回抽取4个球的组合数,根据组合数公式$C(n,k)=\frac{n!}{k!(n -
k)!}$,可得总样本数为 $$
C(18,4)=\frac{18!}{4!(18 -
4)!}=\frac{18\times17\times16\times15}{4\times3\times2\times1}=3060
$$ 而事件 X 可以分成如下三种情况讨论
“2红1白1黑” 的组合数为 $$
C(8,2)\times C(6,1)\times C(4,1)=\frac{8!}{2!(8 -
2)!}\times\frac{6!}{1!(6 -...