EL表达式和JSTL标签

目录

1. EL表达式

1.1. EL表达式概述

1.2. EL表达式运算

1.3. EL表达式操作对象

1.4. EL表达式内置对象 jsp 9个   11个

1.4.1. 参数隐藏对象

1.4.2. 域隐藏对象

1.4.3. PageContext对象

2. JSTL标签

2.1. JSTL概述

2.1.1. 什么是JSTL

2.1.2. 导入标签库

2.2. JSTL核心库

2.2.1. c:out和c:set

2.2.2. c:if和c:choose

2.2.3. c:forEach

2.3. JSTL格式化标签库

2.3.1. fmt:formatDate

2.3.2. fmt:formatNumber

2.3.3. fmt:parseNumber

2.4. JSTL函数库

2.4.1. 什么EL函数库

2.4.2. 导入函数库

2.4.3. EL函数库介绍


1. EL表达式

1.1. EL表达式概述

        EL(Expression Language)是一门表达式语言,它对应。我们知道在JSP中,表达式会被输出,所以EL表达式也会被输出。

        EL表达式的格式:${…},例如:${1+2}。

        在使用EL表达式时,要求page指令的isELIgnored属性为false。这样JSP在编译成.java时,才不会忽略EL表达式。(因为jsp的真身是Servlet,Servlet在java文件里)

        如果你希望某个EL表达式被JSP编译器忽略,那么可以在EL表达式之前添加“\”,例如:\${1+2}。

1.2. EL表达式运算

我们可以使用EL表达式来进行简单的逻辑运算

运算符

说明

范例

结果

+

${17+5}

22

-

${17-5}

12

*

${17*5}

85

/或div

${17/5}或${17 div 5}

3

%或mod

取余

${17%5}或${17 mod 5}

2

==或eq

等于

${5==5}或${5 eq 5}

TRUE

!=或ne

不等于

${5!=5}或${5 ne 5}

FALSE

小于

${3

TRUE

>或gt

大于

${3>5}或${3 gt 5}

FALSE

小于等于

${3

TRUE

>=或ge

大于等于

${3>=5}或${3 ge 5}

FALSE

&&或and

并且

${true&&false}或${true and false}

FALSE

!或not

${!true}或${not true}

FALSE

||或or

或者

${true||false}或${true or false}

TRUE

empty

是否为空

${empty “”},可以判断字符串、数组、集合的长度是否为0,为0返回true。empty还可以与not或!一起使用。${not empty “”}

TRUE

 

<h1>EL表达式运算测试</h1>
<p>\${1+1}</p>
<p>${2-1}</p>
<p>${2*3}</p>
<p>${9/3}</p>
<p>${9%3}</p>
<p>${9 div 3}</p>
<p>${9 mod 3}</p><p>${9 == 3}  ${"a" eq "a"}</p>
<p>${9 != 3}  ${"a" ne "a"}</p>
<p>${9 > 3}  ${9 < 3}</p>
<p>${9 lt 3}  ${9 gt 3}</p>
<p>${9 >= 3}  ${9 <= 3}</p>
<p>${9 >= 3 && 10 >= 3}  ${9 <= 3 and 8 <= 3}</p>
<p>${ !(9 >= 33)}  ${not (9 <= 3) }</p>
<p>${9 >= 3 || 10 >= 3}  ${9 <= 3 or 3 <= 8}</p>
<p>${not empty ""} </p>
<p>${empty null} </p>

1.3. EL表达式操作对象

        Ø 操作变量和常量:${name}、${8}; java  jspj存在java片段的

        Ø 操作List和数组:${list[0]}、${arr[0]};

        Ø 操作bean的属性:${person.name}、${person[‘name’]},对应person.getName()方法;

        Ø 操作Map的值:${map.key}、${map[‘key’]},对应map.get(key)。

1.4. EL表达式内置对象 jsp 9个   11个

        在EL表达式中,无需创建就可以使用的对象称之为EL隐藏(隐含、内置)对象。在EL中一共有11个隐藏对象,它们都与Map(key-value)相似。其中10个是Map,一个是 PageContext;

1.4.1. 参数隐藏对象

        Ø param:param是Map类型!param对象可以用来获取参数,与request.getParameter()方法相同。Url  key   

        注意,在使用EL获取参数时,如果参数不存在,返回的是空字符串,而不是null。这一点与使用request.getParameter()方法是不同的。

        Ø paramValues:paramValues是Map类型,当一个参数名,对应多个参数值时可以使用它。

        Ø header:header是Map类型,用来获取请求头。

        Ø headerValues:headerValues是Map类型。当一个请求头名称,对应多个值时,使用该对象,这里就不在赘述。

        Ø initParam:initParam是Map类型。它对应web.xml文件中的参数。

        Ø cookie:cookie是Map类型,其中key是Cookie的名字,而值是Cookie对象本身。

1.4.2. 域隐藏对象

        使用EL表达式最为常用的就是获取域对象中保存的数据。例如:${pageScope.xxx},表示获取在pageContext保存的数据。当然${pageScope[‘xxx’]}是相同的!

        pageScope:pageScope是Map类型,${pageScope.xxx}的功能相等与pageContext.getAttribute(“xxx”)。两者的区别在于,前者在数据不存在时返回空字符串,而后者返回null。

        Ø requestScope:requestScope是Map类型,装载了request对象中的所有数据;

        Ø sessionScope:sessionScope是Map类型,装载了session对象中的所有数据;

        Ø applicationScope:applicationScope是Map类型,装载了application对象中的所有数据;

        

        当EL中给出的不是隐藏对象时,表示在四个域中查找数据。例如:${a},表示

Ø 在${pageScope.a}中查找,如果找到就返回;

Ø 在${requestScope.a}中查找,如果找到就返回;

Ø 在${sessionScope.a}中查找,如果找到就返回;

Ø 在${applicationScope.a}中查找,如果找到就返回,找不到就返回空字符串。

1.4.3. PageContext对象

        pageContext:pageContext是PageContext类型!可以使用pageContext对象调用getXXX()方法,例如pageContext.getRequest,可以${pageContext.request}。

Expression

说明

${pageContext.request.queryString}

pageContext.getRequest().getQueryString();

${pageContext.request.requestURL}

pageContext.getRequest().getRequestURL();

${pageContext.request.contextPath}

pageContext.getRequest().getContextPath();

${pageContext.request.method}

pageContext.getRequest().getMethod();

${pageContext.request.protocol}

pageContext.getRequest().getProtocol();

${pageContext.request.remoteUser}

pageContext.getRequest().getRemoteUser();

${pageContext.request.remoteAddr}

pageContext.getRequest().getRemoteAddr();

${pageContext.session.new}

pageContext.getSession().isNew();

${pageContext.session.id}

pageContext.getSession().getId();

${pageContext.servletContext.serverInfo}

pageContext.getServletContext().getServerInfo();


2. JSTL标签

2.1. JSTL概述

2.1.1. 什么是JSTL

        JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问。既然是第三方的东西,那么就需要导包。但是如果你使用的是MyEclipse,那么MyEclipse会帮你导包的。

2.1.2. 导入标签库

        导入标签库需要使用taglib指令!

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fun" uri="http://java.sun.com/jsp/jstl/functions" %>

        这东西不用去背,可以把光标放到uri属性位置上,使用Alt+/来查看uri列表,找到其中包含jstl,并且包含core的就是了。

2.2. JSTL核心库

2.2.1. c:out和c:set

Ø c:out

         <c:out value=”aaa”/>输出aaa字符串常量

         <c:out value=”${aaa}”/>与${aaa}相同

         <c:out value=”${aaa}” default=”xxx”/>当${aaa}不存在时,输出xxx字符串

         <c:out value="${a }" default="xxx" escapeXml="false"/>当escapeXml为false,不会转换"<"、“>”。这可能会受到JavaScript攻击。

Ø c:set

        <c:set var=”a” value=”hello”/> 在pageContext中添加name为a,value为hello的数据。

         <c:set var=”a” value=”hello” scope=”session”/>在session中添加name为a,value为hello的数据。

2.2.2. c:if和c:choose

Ø c:if

        if标签的test属性必须是一个boolean类型的值,如果test的值为true,那么执行if标签的内容,否则不执行。

Ø c:choose

        choose标签对应Java中的if/else if/else结构

        when标签的test为true时,会执行这个when的内容。

        当所有when标签的test都为false时,才会执行otherwise标签的内容

2.2.3. c:forEach

        forEach当前就是循环标签了,可以进行

        基本遍历:

        下面例子中设置域变量i,初始值为1,结束值为10。即i的值从1遍历到10,包含10。

<c:forEach begin="1" end="10" var="i">    <c:out value="${i}"/>
</c:forEach>

遍历数组:

<c:forEach items="${strs}" var="str">    <c:out value="${str}"/><br>
</c:forEach>

遍历集合: 

<%    List<String> strs = new ArrayList<String>();    strs.add("A");    strs.add("B");    strs.add("C");    strs.add("D");    request.setAttribute("strs",strs);
%>
<c:forEach items="${strs}" var="str">    <c:out value="${str}"/><br>
</c:forEach>

 遍历Map:

<%    Map<String,String> map = new HashMap<String,String>();    map.put("username","txjava");    map.put("password","tx123456");    map.put("age","20");    map.put("address","中国");    request.setAttribute("users",map);
%>
<c:forEach items="${users}" var="user">    <c:out value="${user.key}"/>:<c:out value="${user.value}"/><br>
</c:forEach>

 

varStatus:

        forEach标签还有一个属性:varStatus,这个属性用来指定接收“循环状态”的变量名,例如:<forEach varStatus=”vs” …/>,这时就可以使用vs这个变量来获取循环的状态了。

        current当前这次迭代的(集合中的)项

        index当前这次迭代从 0 开始的迭代索引

        count当前这次迭代从 1 开始的迭代计数

        first用来表明当前这轮迭代是否为第一次迭代的标志

        last用来表明当前这轮迭代是否为最后一次迭代的标志

<%    List<String> users = new ArrayList<String>();    users.add("A");    users.add("B");    users.add("C");    users.add("D");    request.setAttribute("users",users);
%>
<table border="1">        
<tr>            <td>index</td>            <td>count</td>            <td>first</td>            <td>last</td>            <td>value</td>        
</tr>    
<c:forEach items="${users}" var="user" varStatus="vs">        
<tr>            
<td> <c:out value="${vs.index}"/></td>            
<td> <c:out value="${vs.count}"/></td>            
<td> <c:out value="${vs.first}"/></td>            
<td> <c:out value="${vs.last}"/></td>            
<td> <c:out value="${user}"/></td>        
</tr>    
</c:forEach>
</table>

 

        如果对集合进行遍历,没有输出结果,那么请检查你的EL表达式内的变量名称是否正确

2.3. JSTL格式化标签库

        导入标签库需要使用taglib指令!

        <%@ taglib prefix="fmt" uri="Oracle Java Technologies | Oracle"%>\

2.3.1. fmt:formatDate

value

要显示的日期

type

DATE, TIME, 或 BOTH

date

dateStyle

FULL, LONG, MEDIUM, SHORT, 或 DEFAULT

default

timeStyle

FULL, LONG, MEDIUM, SHORT, 或 DEFAULT

default

pattern

自定义格式模式

timeZone

显示日期的时区

默认时区

var

存储格式化日期的变量名

显示在页面

scope

存储格式化日志变量的范围

页面

2.3.2. fmt:formatNumber

属性

描述

是否必要

默认值

value

要显示的数字

type

NUMBER,CURRENCY,或 PERCENT类型

Number

pattern

指定一个自定义的格式化模式用与输出

currencyCode

货币码(当type="currency"时)

取决于默认区域

currencySymbol

货币符号 (当 type="currency"时)

取决于默认区域

groupingUsed

是否对数字分组 (TRUE 或 FALSE)

TRUE

maxIntegerDigits

整型数最大的位数

minIntegerDigits

整型数最小的位数

maxFractionDigits

小数点后最大的位数

minFractionDigits

小数点后最小的位数

var

存储格式化数字的变量

Print to page

scope

var属性的作用域

page

2.3.3. fmt:parseNumber

属性

描述

是否必要

默认值

value

要解析的数字

Body

type

NUMBER,,CURRENCY,或 PERCENT

number

parseLocale

解析数字时所用的区域

默认区域

integerOnly

是否只解析整型数(true)或浮点数(false)

FALSE

pattern

自定义解析模式

timeZone

要显示的日期的时区

默认时区

var

存储待解析数字的变量

Print to page

scope

var属性的作用域

page

使用方式如下:

<%@ page import="java.util.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<html><body><%    Date date1 = new Date();    Double num1 = 12345.4567;    pageContext.setAttribute("date1",date1);    pageContext.setAttribute("num1",num1);%><p>日期格式化 (1): <fmt:formatDate type="time" value="${date1}" /></p><p>日期格式化 (2): <fmt:formatDate type="date" value="${date1}" /></p><p>日期格式化 (3): <fmt:formatDate type="both" value="${date1}" /></p><p>日期格式化 (4): <fmt:formatDate type="both" dateStyle="short" timeStyle="short" value="${date1}" /></p><p>日期格式化 (5): <fmt:formatDate type="both" dateStyle="medium" timeStyle="medium" value="${date1}" /></p><p>日期格式化 (6): <fmt:formatDate type="both" dateStyle="long" timeStyle="long" value="${date1}" /></p><p>日期格式化 (7): <fmt:formatDate pattern="yyyy-MM-dd" value="${date1}" /></p><hr><p>格式化数字 (1): <fmt:formatNumber value="${num1}" type="currency"/></p><p>格式化数字 (2): <fmt:formatNumber type="number" maxIntegerDigits="3" value="${num1}" /></p><p>格式化数字 (3): <fmt:formatNumber type="number" maxFractionDigits="3" value="${num1}" /></p><p>格式化数字 (4): <fmt:formatNumber type="number" groupingUsed="false" value="${num1}" /></p><p>格式化数字 (5): <fmt:formatNumber type="percent" maxIntegerDigits="3" value="${num1}" /></p><p>格式化数字 (6): <fmt:formatNumber type="percent" minFractionDigits="10" value="${num1}" /></p><p>格式化数字 (7): <fmt:formatNumber type="percent" maxIntegerDigits="3" value="${num1}" /></p><p>格式化数字 (8): <fmt:formatNumber type="number" value="${num1}" pattern="0.00‰"/></p><p>格式化数字 (9): <fmt:formatNumber type="number" value="${num1}" pattern="0.00%"/></p><p>美元 :    <fmt:setLocale value="en_US"/>    <fmt:formatNumber value="${num1}" type="currency"/></p></body><hr><fmt:parseNumber var="i" type="number" value="${num1}" /><p>数字解析 (1) : <c:out value="${i}" /></p><fmt:parseNumber var="i" integerOnly="true" type="number" value="${num1}" /><p>数字解析 (2) : <c:out value="${i}" /></p>
</html>

使用效果如下:

2.4. JSTL函数库

2.4.1. 什么EL函数库

        EL函数库是由第三方对EL的扩展,我们现在学习的EL函数库是由JSTL添加的。下面我们会学习JSTL标签库。

        EL函数库就是定义一些有返回值的静态方法。然后通过EL语言来调用它们!当然,不只是JSTL可以定义EL函数库,我们也可以自定义EL函数库。

        EL函数库中包含了很多对字符串的操作方法,以及对集合对象的操作。例如:${fn:length(“abc”)} 会输出3,即字符串的长度。

2.4.2. 导入函数库

        因为是第三方的东西,所以需要导入。导入需要使用taglib指令!

        <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

2.4.3. EL函数库介绍

Ø String toUpperCase(String input)

Ø String toLowerCase(String input):

Ø int indexOf(String input, String substring)

Ø boolean contains(String input, String substring):

Ø boolean containsIgnoreCase(String input, String substring)

Ø boolean startsWith(String input, String substring):

Ø boolean endsWith(String input, String substring)

Ø String substring(String input, int beginIndex, int endIndex):

Ø String substringAfter(String input, String substring)

Ø substringBefore(String input, String substring):

Ø String escapeXml(String input)

Ø String trim(String input):

Ø String replace(String input, String substringBefore, String substringAfter)

Ø String[] split(String input, String delimiters):

Ø int length(Object obj)

Ø String join(String array[], String separator):

使用方式:

<%    String[] strs = {"a", "b","c"};    List list = new ArrayList();    list.add("a");    pageContext.setAttribute("arr", strs);    pageContext.setAttribute("list", list);
%>
${fn:length(arr) }
<br/>
<!--3-->${fn:length(list) }
<br/>
<!--1-->${fn:toLowerCase("Hello") }
<br/> 
<!-- hello -->${fn:toUpperCase("Hello") }
<br/> 
<!-- HELLO -->${fn:contains("abc", "a")}
<br/>
<!-- true -->${fn:containsIgnoreCase("abc", "Ab")}
<br/>
<!-- true -->${fn:contains(arr, "a")}
<br/>
<!-- true -->${fn:containsIgnoreCase(list, "A")}
<br/>
<!-- true -->${fn:endsWith("Hello.java", ".java")}
<br/>
<!-- true -->${fn:startsWith("Hello.java", "Hell")}
<br/>
<!-- true -->${fn:indexOf("Hello-World", "-")}
<br/>
<!-- 5 -->${fn:join(arr, ";")}
<br/>
<!-- a;b;c -->${fn:replace("Hello-World", "-", "+")}
<br/>
<!-- Hello+World -->${fn:join(fn:split("a;b;c;", ";"), "-")}
<br/>
<!-- a-b-c -->${fn:substring("0123456789", 6, 9)}
<br/>
<!-- 678 -->${fn:substring("0123456789", 5, -1)}
<br/>
<!-- 56789 -->${fn:substringAfter("Hello-World", "-")}
<br/>
<!-- World -->${fn:substringBefore("Hello-World", "-")}
<br/>
<!-- Hello -->${fn:trim("     a b c     ")}
<br/>
<!-- a b c -->${fn:escapeXml("<html></html>")}
<br/> 
<!-- <html></html> -->

展示效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/26838.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PhotoShop学习01

了解Photoshop 这里省略了Photoshop的软件安装&#xff0c;请自行查找资源下载。 1.打开图片 下图为启动photoshop后出现的界面&#xff0c;我们可以通过创建新文件或打开已有文件来启用photoshop的工作界面。 可以通过左边的按钮进行新文件的创建或打开已有文件。 也可以点…

LabVIEW虚拟弗兰克赫兹实验仪

随着信息技术的飞速发展&#xff0c;虚拟仿真技术已经成为教学和研究中不可或缺的工具。开发了一种基于LabVIEW平台开发的虚拟弗兰克赫兹实验仪&#xff0c;该系统不仅能模拟实验操作&#xff0c;还能实时绘制数据图形&#xff0c;极大地丰富了物理实验的教学内容和方式。 ​ …

【TI毫米波雷达】DCA1000的ADC原始数据C语言解析及FMCW的Python解析2D-FFT图像

【TI毫米波雷达】DCA1000的ADC原始数据C语言解析及FMCW的Python解析2D-FFT图像 文章目录 ADC原始数据C语言解析Python的2D-FFT图像附录&#xff1a;结构框架雷达基本原理叙述雷达天线排列位置芯片框架Demo工程功能CCS工程导入工程叙述Software TasksData PathOutput informati…

【数据结构】堆与二叉树

一、树的概念 1.1 什么是树&#xff1f; 树是一种非线性的数据结构&#xff0c;其由 n 个 ( n > 0 ) 有限节点所组成的一个有层次关系的集合。之所以称其为树&#xff0c;是因为其逻辑结构看起来像是一颗倒挂的树。 在树中&#xff0c;有一个特殊的节点称为根节点&#xf…

从零开始开发纯血鸿蒙应用之语音朗读

从零开始开发纯血鸿蒙应用 〇、前言一、API 选型1、基本情况2、认识TextToSpeechEngine 二、功能集成实践1、改造右上角菜单2、实现语音播报功能2.1、语音引擎的获取和关闭2.2、设置待播报文本2.3、speak 目标文本2.4、设置语音回调 三、总结 〇、前言 中华汉字洋洋洒洒何其多…

8 SpringBoot进阶(上):AOP(面向切面编程技术)、AOP案例之统一操作日志

文章目录 前言1. AOP基础1.1 AOP概述: 什么是AOP?1.2 AOP快速入门1.3 Spring AOP核心中的相关术语(面试)2. AOP进阶2.1 通知类型2.1.1 @Around:环绕通知,此注解标注的通知方法在目标方法前、后都被执行(通知的代码在业务方法之前和之后都有)2.1.2 @Before:前置通知,此…

人大金仓国产数据库与PostgreSQL

一、简介 在前面项目中&#xff0c;我们使用若依前后端分离整合人大金仓&#xff0c;在后续开发过程中&#xff0c;我们经常因为各种”不适配“问题&#xff0c;但可以感觉得到大部分问题&#xff0c;将人大金仓视为postgreSQL就能去解决大部分问题。据了解&#xff0c;Kingba…

Deepseek 模型蒸馏

赋范课堂&#xff1a; https://www.bilibili.com/video/BV1qUN8enE4c/

经验分享:用一张表解决并发冲突!数据库事务锁的核心实现逻辑

背景 对于一些内部使用的管理系统来说&#xff0c;可能没有引入Redis&#xff0c;又想基于现有的基础设施处理并发问题&#xff0c;而数据库是每个应用都避不开的基础设施之一&#xff0c;因此分享个我曾经维护过的一个系统中&#xff0c;使用数据库表来实现事务锁的方式。 之…

【前端基础】1、HTML概述(HTML基本结构)

一、网页组成 HTML&#xff1a;网页的内容CSS&#xff1a;网页的样式JavaScript&#xff1a;网页的功能 二、HTML概述 HTML&#xff1a;全称为超文本标记语言&#xff0c;是一种标记语言。 超文本&#xff1a;文本、声音、图片、视频、表格、链接标记&#xff1a;由许许多多…

MongoDB—(一主、一从、一仲裁)副本集搭建

MongoDB集群介绍&#xff1a; MongoDB 副本集是由多个MongoDB实例组成的集群&#xff0c;其中包含一个主节点&#xff08;Primary&#xff09;和多个从节点&#xff08;Secondary&#xff09;&#xff0c;用于提供数据冗余和高可用性。以下是搭建 MongoDB 副本集的详细步骤&am…

Hive-06之函数 聚合Cube、Rollup、窗口函数

1、Hive函数介绍以及内置函数查看 内容较多&#xff0c;见《Hive官方文档》 https://cwiki.apache.org/confluence/display/Hive/LanguageManualUDF 1&#xff09;查看系统自带的函数 hive> show functions; 2&#xff09;显示自带的函数的用法 hive> desc function…

CSS定位详解

1. 相对定位 1.1 如何设置相对定位&#xff1f; 给元素设置 position:relative 即可实现相对定位。 可以使用 left 、 right 、 top 、 bottom 四个属性调整位置。 1.2 相对定位的参考点在哪里&#xff1f; 相对自己原来的位置 1.3 相对定位的特点&#xff1…

[Lc滑动窗口_1] 长度最小的数组 | 无重复字符的最长子串 | 最大连续1的个数 III | 将 x 减到 0 的最小操作数

目录 1. 长度最小的字数组 题解 代码 ⭕2.无重复字符的最长子串 题解 代码 3.最大连续1的个数 III 题解 代码 4.将 x 减到 0 的最小操作数 题解 代码 1. 长度最小的字数组 题目链接&#xff1a;209.长度最小的字数组 题目分析: 给定一个含有 n 个 正整数 的数组…

MySQL 事务笔记

MySQL 事务笔记 目录 事务简介事务操作事务四大特性并发事务问题事务隔离级别总结 事务简介 事务&#xff08;Transaction&#xff09;是数据库操作的逻辑单元&#xff0c;由一组不可分割的SQL操作组成。主要用于保证&#xff1a; 多个操作的原子性&#xff08;要么全部成功…

数据结构秘籍(四) 堆 (详细包含用途、分类、存储、操作等)

1 引言 什么是堆&#xff1f; 堆是一种满足以下条件的树&#xff1a;&#xff08;树这一篇可以参考我的文章数据结构秘籍&#xff08;三&#xff09;树 &#xff08;含二叉树的分类、存储和定义&#xff09;-CSDN博客&#xff09; 堆中的每一个结点值都大于等于&#xff08…

【网络安全 | 渗透测试】GraphQL精讲一:基础知识

未经许可,不得转载, 文章目录 GraphQL 定义GraphQL 工作原理GraphQL 模式GraphQL 查询GraphQL 变更(Mutations)查询(Queries)和变更(Mutations)的组成部分字段(Fields)参数(Arguments)变量别名(Aliases)片段(Fragments)订阅(Subscriptions)自省(Introspecti…

EMQX中不同端口对应的接入协议

使用tcp接入时应使用mqtt://IP:1883 使用ws接入时应使用ws://IP:8083

2020年蓝桥杯Java B组第二场题目+部分个人解析

#A&#xff1a;门牌制作 624 解一&#xff1a; public static void main(String[] args) {int count0;for(int i1;i<2020;i) {int ni;while(n>0) {if(n%102) {count;}n/10;}}System.out.println(count);} 解二&#xff1a; public static void main(String[] args) {…

数据结构:反射 和 枚举

目录 一、反射 1、定义 2、反射相关的类 3、Class类 &#xff08;2&#xff09;常用获得类中属性相关的方法&#xff1a; &#xff08;3&#xff09;获得类中注解相关的方法&#xff1a; &#xff08;4&#xff09;获得类中构造器相关的方法&#xff1a; &#xff08;…