【JDK新特性】JDK和Springboot各版本新特性介绍
目录
参考资料
以下是一些较新版本的JDK的主要新特性介绍:
-
JDK 8:
- Lambda 表达式:引入了函数式编程的概念,使得代码更简洁、可读性更强。
- Stream API:提供了一种高效处理集合数据的方式,支持并行处理。
- 默认方法(Default Methods):接口可以包含具有默认实现的方法。
- 方法引用(Method References):通过方法的引用来直接调用现有的方法。
- 新的日期和时间 API:
java.time
包提供了更好的日期和时间处理功能。
-
JDK 9:
- 模块化系统(Java Platform Module System):引入了模块化的概念,将代码划分为一组相互依赖的模块。
- JShell:交互式编程工具,可以在命令行中实时执行Java代码。
- 私有接口方法(Private Interface Methods):接口中可以定义私有方法,以减少重复代码。
- 改进的 Stream API:新增了一些对 Stream API 的改进和优化。
- 改进的 Try-With-Resources:可以在 try-with-resources 语句中使用资源的匿名子类。
-
JDK 10:
- 局部变量类型推断(Local Variable Type Inference):可以使用
var
关键字声明局部变量。 - 应用类数据共享(Application Class-Data Sharing):通过共享类元数据来减少启动时间和内存占用。
- 并行全垃圾回收器(Parallel Full GC):在并行方式下执行 Full GC,减少停顿时间。
- 局部变量类型推断(Local Variable Type Inference):可以使用
-
JDK 11:
- HTTP/2 客户端:提供了对 HTTP/2 协议的支持。
- 单文件源代码启动(Single-File Source-Code Launching):可以直接通过
java
命令运行单个源文件。 - 建议使用的 G1 垃圾回收器(Epsilon Garbage Collector):一个不进行垃圾回收的垃圾回收器,用于性能测试和调优。
- 改进的 AOT 编译(Ahead-of-Time Compilation):针对特定平台生成本机代码以提高性能。
-
JDK 12:
- Switch 表达式(Switch Expressions):扩展了
switch
语句的用法,使其支持表达式形式。 - 新增
teeing()
收集器:可以将一个数据流分成两个分支,并在这两个分支上执行不同的操作。 - Shenandoah 垃圾回收器(Shenandoah Garbage Collector):一种低暂停时间的垃圾回收器,适用于大型堆场景。
- Switch 表达式(Switch Expressions):扩展了
-
JDK 13:
- ZGC 垃圾回收器(Z Garbage Collector):一种低暂停时间的垃圾回收器,适用于大型堆场景。
switch
表达式改进:扩展了switch
表达式的用法,使其更加灵活。- 新增
text blocks
功能:提供了一种更方便地编写多行字符串的方式。
-
JDK 14:
- 改进的 Switch 表达式(Improved Switch Expressions):扩展了
switch
表达式的用法,使其更加灵活和易于使用。 record
类型:一种新的类类型,用于定义不可变数据对象。null
安全性增强:引入了新的方法来帮助处理null
值。
- 改进的 Switch 表达式(Improved Switch Expressions):扩展了
-
JDK 15:
- 改进的 GC 算法(Improved GC Algorithms):提高了垃圾回收的效率和性能。
- 改进的 Switch 表达式(Improved Switch Expressions):扩展了
switch
表达式的用法,使其更加灵活和易于使用。 - 新增
sealed classes
功能:提供了一种限制类继承关系的方式。
-
JDK 16:
- 改进的 GC 算法(Improved GC Algorithms):提高了垃圾回收的效率和性能。
- 新增
Records
功能的扩展:提供了更多的功能来帮助处理不可变数据对象。 - 新增
Pattern Matching for instanceof
功能:简化了instanceof
操作符的使用。
- JDK 17:
- 基于事件的垃圾回收器(Event-based Garbage Collector):使用事件驱动的方式进行垃圾回收,减少停顿时间。
- 预期要求(Expected Parameters):允许在接口方法中声明参数的预期要求,以提高代码的可读性和错误检测。
- 允许弱加密算法(Allowing Weak Cryptographic Algorithms):允许在特定情况下使用一些弱加密算法。
- JDK 18:
- 向量 API(Vector API):提供了一种面向向量计算的编程模型,以提高并行计算的性能。
- 改进的垃圾回收器(Improved Garbage Collectors):继续优化和改进垃圾回收器,提供更好的性能和吞吐量。
- 增强的安全性功能(Enhanced Security Features):引入了一些新的安全功能,提供更好的数据保护。
当然,下面是一些较新版本的 Spring Boot 的主要特性介绍:
-
Spring Boot 1.1:
- 对 Java 8 新特性的支持:Spring Boot 1.1 开始提供对 Java 8 的 Lambda 表达式和函数接口的支持。
- 自动配置的 Thymeleaf:提供了自动配置的 Thymeleaf 模板引擎,在 Spring MVC 应用程序中更轻松地使用 Thymeleaf。
- 嵌入式 Groovy Console:提供了嵌入式 Groovy Console,使得开发人员可以在应用程序运行时执行 Groovy 代码。
-
Spring Boot 1.2:
- DevTools 模块:提供了一组开发者工具,例如自动重启、LiveReload、远程调试等,提高了开发人员的效率。
- 配置文件的加密支持:提供了对配置文件的加密支持,确保敏感信息的安全性。
- 对 Groovy 的支持:Spring Boot 1.2 开始支持使用 Groovy 编写 Spring 应用程序,通过 Groovy DSL 可以更轻松地定义 Spring Bean。
-
Spring Boot 1.3:
- Spring Cloud 集成:Spring Boot 1.3 开始与 Spring Cloud 进行了深度集成,方便了构建微服务应用程序。
- 对 YAML 配置的支持:Spring Boot 1.3 开始支持使用 YAML 文件作为配置文件,比传统的 .properties 配置文件更易读。
- 重构的 Actuator:Actuator 端点进行了重构,提高了性能和可扩展性。
-
Spring Boot 1.4:
- 对 Kotlin 的支持:Spring Boot 1.4 开始支持使用 Kotlin 编写 Spring 应用程序,包括自动配置、扩展函数等。
- 自动配置的 JdbcTemplate:Spring Boot 1.4 引入了自动配置的 JdbcTemplate,方便了对数据库的访问。
- Spring Security 的自动化配置:提供了更多的安全功能和自动化配置选项,使得开发人员可以更轻松地保护应用程序。
-
Spring Boot 2.0:
- 对 Java 8 的全面支持:Spring Boot 2.0 开始完全支持 Java 8,并利用其新特性,例如函数式编程和 Stream API。
- 自动配置的 HTTP/2 支持:Spring Boot 2.0 支持使用自动配置来启用和配置基于 HTTP/2 的通信。
- 响应式编程支持:引入了对响应式编程模型的支持,包括 WebFlux 模块和 Reactor 库。
-
Spring Boot 2.1:
- Micrometer 支持:引入了 Micrometer 库,用于度量和监控应用程序的指标,例如 CPU 使用率、内存使用量等。
- 更好的 Kotlin 支持:Spring Boot 2.1 对 Kotlin 提供了更好的支持,包括自动配置、扩展函数等。
- Web 安全性增强:提供了更多的配置选项和功能,用于增强 Web 应用程序的安全性。
-
Spring Boot 2.2:
- Web 安全性的自动化端点保护:引入了自动化端点保护的功能,可以轻松地保护和限制暴露的端点。
- 增强的 Actuator:Actuator 端点得到了增强,提供了更多的监控和管理功能。
- 函数式 Web 框架支持:提供了对函数式编程风格的 Web 开发的支持,简化了处理请求和响应的流程。
-
Spring Boot 2.3:
- 集成 OpenTelemetry:引入了 OpenTelemetry 的集成,用于分布式追踪和监控。
- 自动配置的 RSocket 支持:提供了对 RSocket 协议的自动配置和支持。
- Kubernetes 支持的 Liveness 和 Readiness 探针:增加了对 Kubernetes 的 Liveness 和 Readiness 探针的支持。
-
Spring Boot 2.4:
- 引入了全新的构建工具:Spring Boot 2.4 开始使用 Gradle 6 和 Maven 3.6 作为构建工具。
- 数据库初始化改进:提供了更好的数据库初始化和迁移支持,包括 Flyway 和 Liquibase 的集成。
- 集成 Hazelcast IMDG:提供了与 Hazelcast In-Memory Data Grid(IMDG)的集成。
这些是一些主要的 Spring Boot 版本的特性介绍,每个版本都有更多的改进和新增功能。您可以查阅官方文档以获取更详细的信息。
参考资料
【Java基础系列】JDK新特性-CSDN博客
JDK8,JDK11,JDK17,JDK21及中间版本主要更新特性_jdk版本-CSDN博客
重磅!Spring Boot 2.7 正式发布,一大波新特性,看完我彻底躺平了。。-CSDN博客
【SpringBoot】一、SpringBoot3新特性与改变详细分析_springboot新特性-CSDN博客
探索SpringBoot 3.1的惊艳新特性_springboot3.1.0-CSDN博客
相关文章:
【JDK新特性】JDK和Springboot各版本新特性介绍
目录 参考资料 以下是一些较新版本的JDK的主要新特性介绍: JDK 8: Lambda 表达式:引入了函数式编程的概念,使得代码更简洁、可读性更强。Stream API:提供了一种高效处理集合数据的方式,支持并行处理。默认…...
tomcat剖析:开篇
一、简介 本专栏为解析tomcat的专栏,用于一步步的从构建到执行,再到剖析tomcat的内部构造,然后再加上自己的理解,从0到1去认识我们日常开发中不可或缺的web容器,希望对之后的软件设计能够有所启示。 二、步骤 2.1构…...
华为路由器:DHCP配置
在大型企业网络中,会有大量的主机获取IP地址等网络参数。如果采用手工配置,则工作量大不好管理,若用户擅自更改网络参数,则容易导致IP冲突。 因此使用动态主机配置协议(DHCP)可以减少管理员的工作量&#x…...
(企业 / 公司项目)微服务OpenFeign怎么实现服务间调用?(含面试题)
Feign: 远程调用组件使用步骤,理解上面的图 后台系统中, 微服务和微服务之间的调用可以通过Feign组件来完成. Feign组件集成了Ribbon负载均衡策略(默认开启的, 使用轮询机制),Hystrix熔断器 (默认关闭的, 需要通过配置文件进行设置开启) 被调用的微服务…...
数据结构:图文详解 树与二叉树(树与二叉树的概念和性质,存储,遍历)
目录 一.树的概念 二.树中重要的概念 三.二叉树的概念 满二叉树 完全二叉树 四.二叉树的性质 五.二叉树的存储 六.二叉树的遍历 前序遍历 中序遍历 后序遍历 一.树的概念 树是一种非线性数据结构,它由节点和边组成。树的每个节点可以有零个或多个子节点…...
DM工作笔记-在windows下对DM7进行库还原恢复
提供了这些备份数据 在windows平台上,将这些备份数据还原到新库中。 首先实例得先停掉: 使用的软件console.exe: 重要步骤:①获取备份;②还原;③恢复 记住DMAP方式这个不要勾选,然后再获取备份…...
STM32软硬件CRC测速对比
硬件CRC配置 以及软硬件CRC速度对比 使用CUBEMX配置默认使用的是CRC32,从库中可以看出这一点 HAL库提供了以下两个计算函数 HAL_CRC_Accumulate(CRC_HandleTypeDef *hcrc, uint32_t pBuffer[], uint32_t BufferLength); 这个函数用于在已有的CRC校验结果的基础上累积…...
第九部分 图论
目录 例 相关概念 握手定理 例1 图的度数列 例 无向图的连通性 无向图的连通度 例2 例3 有向图D如图所示,求 A, A2, A3, A4,并回答诸问题: 中间有几章这里没有写,感兴趣可以自己去学,组合数学跟高中差不多,…...
如何用java实现对java虚拟机的性能监控?
要使用Java实现对Java虚拟机(JVM)的性能监控,可以使用Java Management Extensions(JMX)来获取和监控JVM的各种指标。以下是一个简单的示例代码,演示如何使用JMX监控JVM的内存使用情况: import …...
电路设计(7)——窗口比较器的multism仿真
1.功能设计 构建一个窗口比较器的电路,在输入电压大于3.5v,小于0.8v时,蜂鸣器报警,输入电压在0.8v到3.5v之间时,不报警。 整体电路如下: 2.设计思路 在输入端,采取电阻分压的方式,输…...
前端已死?探讨人工智能与低代码对前端的影响
文章目录 每日一句正能量前言前端行业究竟是好是坏?数字化转型的当下前端工程师该何去何从? 想要入行前端先认清这三个事实 后记 每日一句正能量 人的结构就是相互支撑,众人的事业需要每个人的参与。 前言 随着人工智能和低代码的崛起&#…...
树莓派,opencv,Picamera2利用舵机云台追踪人脸(PID控制)
一、需要准备的硬件 Raspiberry Pi 4b两个SG90 180度舵机(注意舵机的角度,最好是180度且带限位的,切勿选360度舵机)二自由度舵机云台(如下图)Raspiberry CSI 摄像头 组装后的效果: 二、项目目…...
uniapp中推出当前微信小程序
uni.exitMiniProgram() 通过代码直接退出当前小程序 uni.exitMiniProgram({success: function() {console.log(退出小程序成功);},fail: function(err) {console.log(退出小程序失败, err);} })...
AndroidStudio无法新建aidl文件解决办法
我用的 AS 版本是 Android Studio Giraffe | 2022.3.1 Build #AI-223.8836.35.2231.10406996, built on June 29, 2023 右键新建 aidl 文件, 提示 (AIDL File)Requires setting the buildFeatures.aidl to true in the build file 解决办法 修改 app 的 build.…...
java爬虫(jsoup)如何设置HTTP代理ip爬数据
目录 前言 什么是HTTP代理IP 使用Jsoup设置HTTP代理IP的步骤 1. 导入Jsoup依赖 2. 创建HttpProxy类 3. 设置代理服务器 4. 使用Jsoup进行爬取 结论 前言 在Java中使用Jsoup进行网络爬虫操作时,有时需要使用HTTP代理IP来爬取数据。本文将介绍如何使用Jsoup设…...
ZooKeeper Client API 安装及使用指北
下载 wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.4-beta/zookeeper-3.5.4-beta.tar.gz解压 tar -zxf zookeeper-3.5.4-beta.tar.gz安装 cd zookeeper-3.5.4-beta/src/c/ ./configure make sudo make install到 make 这一步大概率会出现报错:…...
本机ping不通虚拟机
windows下finall shell连不上虚拟机了,之前是可以的,然后ping虚拟机,发现也ping不通,随后到处找问题。 在本地部分,控制面板 ——>网络和Internet——>网络连接 , 可以看到 VMnet1和Vmnet8虽然都是已…...
Linux cfdisk命令
Linux cfdisk命令用于磁盘分区。 cfdisk是用来磁盘分区的程序,它十分类似DOS的fdisk,具有互动式操作界面而非传统fdisk的问答式界面,您可以轻易地利用方向键来操控分区操作。 语法 cfdisk [-avz][-c <柱面数目>-h <磁头数目>-…...
实用学习网站和资料
github:https://github.com/GitHubDaily/GitHubDaily Linux操作手册: GitHub - abarrak/linux-sysops-handbook: Essentials of Linux system administration. 从零开始制作一个操作系统: GitHub - ruiers/os-tutorial-cn: 从零开始编写一个操作系统…...
【已解决】c++qt如何制作翻译供程序调用
本博文源于笔者正在编写的工具需要创建翻译文件,恰好将qt如何进行翻译,从零到结果进行读者查阅,并非常推荐读者进行收藏点赞,因为步步都很清晰,堪称胎教式c制作,而且内容还包括如何部署在windows下。堪称值…...
DPDK单步跟踪(3)-如何利用visual studio 2019和visual gdb来单步调试dpdk
准备工作 因为时间的关系,我想到哪说到哪,可能没那么高的完成度。 但其实有心的人,看到这个标题,就关了本文自己能做了。 why和how to build debug version DPDK,见前两篇。这里我们准备开始。 首先,你有一台linux机…...
Python爬虫---解析---BeautifulSoup
BeautifulSoup简称:bs4 作用:解析和提取数据 1. 安装:pip install bs4 或pip install bs4 -i https://pypi.douban.com/simple(使用国内镜像下载) 注意:需要安装在python解释器相同的位置,例如…...
Argument list too long when copying files
for i in /path/to/dir/*; do cp "$i" /path/to/other/dir/; done...
configure
configure 配置软件./configure --prefix$PWD/output CCaarch64-linux-gcc --hostaarch64-linux --enable-shared --enable-staticconfig.sub 文件 这个文件用于确定主机系统的类型,并返回与该系统相关的标识符。它包含一系列 shell 函数,用于检测主机…...
HOJ 项目部署-前端定制 默认勾选显示标签、 在线编辑器主题和字号大小修改、增加一言功能 题目AC后礼花绽放
# 项目拉取地址: https://gitee.com/himitzh0730/hoj.git # 切换到hoj-vue目录执行以下命令 #安装依赖 npm install #运行服务 npm run serve #修改代码后构建项目到dist文件夹,到服务器docker-compose.yml中修改hoj-frontend文件映射即可 npm run build…...
Scikit-Learn线性回归(二)
Scikit-Learn线性回归二:多项式回归 1、多项式回归2、多项式回归的原理3、Scikit-Learn多项式回归3.1、Scikit-Learn多项式回归API1、多项式回归 线性回归研究的是一个自变量与一个因变量之间的回归问题。在实际应用中,并不是所有的情景都符合线性关系,大多数情况都是非线性…...
07 Vue3框架简介
文章目录 一、Vue3简介1. 简介2. 相关网站3. 前端技术对比4. JS前端框架5. Vue核心内容6. 使用方式 二、基础概念1. 创建一个应用2. 变量双向绑定(v-model)3. 条件控制(v-if)4. 数组遍历(v-for)5. 绑定事件…...
前端八股文(js篇)
一.强制类型转换规则 首先需要了解隐式转换所调用的函数。 当程序员显示调用Boolean(value),Number(value),String(value)完成的类型转换,叫做显示类型转换。 当通过new Boolean&…...
windows+ubuntu离线安装翻译软件有道词典
背景: 某些情况下,需要在无法连接互联网的电脑上翻译单词,句子以及段落,就需要能离线安装和翻译的翻译软件,具备一定的词库量,目前找到了《有道词典》。 windows 亲测,无法联网的win10中安装…...
DevC++ easyx实现视口编辑,在超过屏幕大小的地图上画点,与解决刮刮乐bug效果中理解C语言指针的意义
继上篇文案, DevC easyx实现地图拖动,超过屏幕大小的巨大地图的局部显示在屏幕的方法——用悬浮窗的原理来的实现一个视口-CSDN博客 实现了大地图拖动,但是当时野心不止,就想着一气能搓啥就继续搓啥,看着地图移动都搓…...
Kali Linux—借助 SET+MSF 进行网络钓鱼、生成木马、获主机shell、权限提升、远程监控、钓鱼邮件等完整渗透测试(一)
社会工程学—世界头号黑客凯文米特尼克在《欺骗的艺术》中曾提到,这是一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等心理陷阱进行诸如欺骗、伤害等危害手段。 SET最常用的攻击方法有:用恶意附件对目标进行 E-mail 钓鱼攻击、Java Applet攻…...
时间与时间戳转换及android和ios对时间识别的区别
注意: "2021-05-01 12:53:59.55" 时间对象在 ios 中会出现 NaN-NaN1-NaN 需要将对象格式化为:"2021/05/01 12:53:59.55" 可同时兼容 android 和 ios。 //将某时间转时间戳 /* var time new Date("2021-05-01 12:53:59.55&qu…...
飞天使-k8s知识点7-kubernetes升级
文章目录 验证新版本有没有问题需要安装的版本微微 1.20.6.0kubeadm upgrade plan 验证新版本有没有问题 查看可用版本的包 现有的状态 查看版本 yum list kubeadm --showduplicates |grep 1.20 yum list kubelet --showduplicates |grep 1.20 yum list kubectl --showduplic…...
【Unity游戏制作】游戏模型导入之前需要注意的三个基本点
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:Uni…...
三列布局 css
实现如下图的三列布局: .box {width:1400px;margin:0 auto;padding-bottom:40px;> .left {float:left;width:180px;margin-top:100px;text-align:center;}> .center {float:left;margin-top:100px;margin-left:130px;item-box {float:left;text-align:left;…...
Android开发之生命周期(App、Activity)
在Android开发中,应用程序(App)和活动(Activity)的生命周期是非常重要的概念。它们各自都有一系列的生命周期方法,这些方法会在特定的时刻被系统自动调用,以便于开发者对应用或活动进行相应的操…...
利用html2Canvas将表格下载为html
给到我的需求是点击按钮时请求后端接口,根据后端返回的数据,生成表格,并将表格的内容直接下载为html,如下图。 平常做的下载都是后端返回二进制流,这次前端做下载那就必须把页面先画出来,因为下载下来的表格在页面上是不显示的&a…...
《Git快速入门》Git分支
1.master、origin、origin/master 区别 首先搞懂git分支的一些名称区别: master : Git 的默认分支名字。它并不是一个特殊分支、跟其它分支完全没有区别。 之所以几乎每一个仓库都有 master 分支,是因为 git init 命令默认创建它,…...
HarmonyOS应用性能与功耗云测试
性能测试 性能测试主要验证HarmonyOS应用在华为真机设备上运行的性能问题,包括启动时长、界面显示、CPU占用和内存占用。具体性能测试项的详细说明请参考性能测试标准。 性能测试支持Phone和TV设备,包格式包括Hap/App。 前提条件 已注册华为开发者帐号&a…...
【AI】人工智能本地环境集成安装
目录 1、基础安装 1.1 GPU安装 1.1.1 GPU版本支持 1.1.2 下载CUDA 1.1.3安装CUDA 1.1.4配置环境变量 1.1.5检测CUDA是否安装成功 1.2 CUDNN安装 1.2.1 下载CUDNN 1.2.2 添加配置 1.2.3验证结果 2、pytorch安装...
主流级显卡的新选择,Sparkle(撼与科技)Intel Arc A750兽人体验分享
▼前言 对于玩家而言,英特尔独显的出现不仅打破了NVIDIA与AMD双雄天下的局面,而且旗下的Arc A系列显卡还拥有不俗的做工性能以及颇具优势的价格,无论是升级或者是装新机都非常合适。如果要在Arc A系列当中选一个性能不俗,能够满足…...
BI 商业数据分析能够给企业带来什么改变?
时下,随着中国企业数据整合应用的意识不断提高,BI 商业数据分析的应用驶入飞速发展的“快车道”。BI 商业智能利用数据分析技术与业务场景联系起来,通过一系列思维方法、指标体系及工具模型来支持市场分析、产品优化、客户洞察,从…...
模式识别与机器学习-特征选择和提取
模式识别与机器学习-特征选择和提取 特征选择一些距离测度公式独立特征的选择准则一般特征的散布矩阵准则 离散K-L变换 谨以此博客作为复习期间的记录。 常见分类问题的流程,数据预处理和特征选择提取时机器学习环节中最重要的两个流程。这两个环节直接决定了最终性…...
嵌入式——RTC闹钟Alarm
开发流程 配置RTC时钟设置RTC闹钟配置RTC闹钟中断实现中断函数RTC闹钟初始化 // 闹钟外部中断 exti_flag_clear(EXTI_17); exti_init(EXTI_17,EXTI_INTERRUPT,EXTI_TRIG_RISING);// 重置闹钟 rtc_alarm_disable(RTC_ALARM0);rtc_alarm_struct ras; ras.alarm_mask = RTC_ALARM…...
【linux】线程控制
线程控制 1.创建线程2.线程终止3.线程等待4.线程分离5.对线程的简单封装 喜欢的点赞,收藏,关注一下把! 进程概念上篇文章已经讲完了,下面我们就来说说线程控制。 我们使用的接口是pthread线程库,也叫做原生线程库给我…...
Swift学习笔记第三节:Set类型
1、代码 import Foundationvar set1: Set<Int> [1, 2, 3, 4, 3] print("定义1: \(set1)") var set2 Set(1...4) print("定义2: \(set2)") print("长度: \(set2.count)") print("是否为空: \(set2.isEmpty)") set1.insert(99)…...
【前端】安装指定版本的nodejs
先安装curl sudo apt install curl以下是 Nodejs 18.x的安装,一行代码搞定 &&\ 的意思是前面的命令执行无误后,再执行后面代码 curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - &&\ sudo apt-get install -y node…...
多商户小程序开源商城源码 打造微信商城新零售网店
一款易于二次开发的商城小程序,使用php、thinkphp6、vue、element-ui和uniapp技术栈进行开发。 该商城小程序内置多商户商城和分销商城,包括小程序商城、H5商城、公众号商城、PC商城和App, 支持多种分销模式、拼团、砍价、秒杀、优惠券、活…...
云仓酒庄的品牌雷盛红酒LEESON分享干红是纯葡萄酿造的吗?
干红是一种葡萄酒的简称,全称是干型红葡萄酒。葡萄酒按含残糖量分为干型、半干型、半甜型和甜型。无论什么型的酒,只要是葡萄酒,那就是葡萄酿造的。 云仓酒庄的品牌雷盛红酒LEESON分享干红是葡萄酒的一种,而葡萄酒却不止干红一种…...
PHP函数学习总结
version_compare(比较php版本) 用法: version_compare(string $version1, string $version2, ?string $operator null): int|bool//示例 $result version_compare(PHP_VERSION, 8.0.0) > 0 ? ok : fail;echo $result;// 输出ok证明当…...