jsp(全部知识点)
👌 棒棒有言:也许我一直照着别人的方向飞,可是这次,我想要用我的方式飞翔一次!人生,既要淡,又要有味。凡事不必太在意,一切随缘,缘深多聚聚,缘浅随它去。凡事看淡点看开些,顺其自然,无意于得,就无所谓失。人生,看轻看淡多少,痛苦就远离你多少。
👌 本章简介:JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。
👍 作者:get棒棒给个关注呗
👍非常重要 :
如果不介意麻烦动动你们的小手点个关注
目录
一、Servlet响应页面的问题
二、JSP(Java Server Pages)
2.1 概念
2.2 作用
三、JSP开发(重要)
3.1 创建JSP
3.1.1 JSP编写Java代码
3.1.2 访问JSP
3.2 JSP与Servlet
3.3 JSP实现原理
3.3.1 JSP.java源文件存放目录
四、JSP与HTML集成开发
4.1 脚本
4.1.1 普通脚本
4.1.2 声明脚本
4.1.3 输出脚本
4.2 JSP注释
4.2.1 语法规则
4.2.2 注释示例
4.3 JSP指令
4.3.1 page指令
4.3.2 include指定
4.3.3 taglib指令
4.4 动作标签
4.4.1 include
4.4.2 useBean
4.4.3 setProperty
4.4.4 getProperty
4.4.5 forward
4.4.6 param
4.5 内置对象
4.5.1 四大域对象
4.5.2 pageContext对象
4.5.3 pageContext获取其它内置对象
4.5.4 pageContext操作其它内置对象的作用域
4.6 整合
五、EL表达式
5.1 概念
5.2 作用
5.3 EL的应用(获取基本类型、字符串)
5.3.1 EL应用案例
5.3.2 EL和JSP脚本的区别
5.4 EL的应用(获取引用类型)
5.5 EL的应用(获取数组、集合的元素)
5.6 EL的运算符
5.6.1 EL表达式执行运算
5.6.2 empty关键字
5.7 饮食对象
5.7.1 获得应用上下文
5.7.2 获取Cookie对象
六、JSTL标准标签库
6.1 现有问题
6.2 什么是JSTL
6.3 JSTL的作用
6.4 JSTL使用
6.5 核心标签
6.5.1 条件标签if判断
6.5.2 多条件choose判断
6.5.3 迭代foreach
6.5.4 url标签
6.6 整合
七、MVC框架
7.1 MVC概念
7.2 MVC模式详解
7.3 优点
7.4 MVC在框架中应用
7.5 三层架构与MVC
7.5.1 三层架构
7.5.2 MVC与三层架构的区别
八、分页
8.1 概念
8.2 分页实现思路
8.3 分页代码实现步骤
8.3.1 数据库准备
8.3.2 数据库配置文件
8.3.3 PageBean类
8.3.4 创建DAO
8.3.5 EmpDaoImpl实现类
8.3.6 创建Service
8.3.7 Service实现类
8.3.8 ShowAllEmpController实现
8.3.9 showAllEmp.jsp
8.3.10 运行效果图
一、Servlet响应页面的问题
在Servlet学习过程中,服务器端通过Servlet响应客户端页面,不足之处有很多:
-
开发方式麻烦:继承父类、重写方法、配置Web.xml或注解
-
代码修改麻烦:修改代码后需要重新编译、部署、重启服务等
-
显示方式麻烦:通过response对象获取流、使用println("");逐行输出
-
协同开发麻烦:前端负责开发、美化页面,程序员负责编写代码。前端不动Java,程序员不能将所有前端页面内容通过流输出
二、JSP(Java Server Pages)
2.1 概念
简化的Servlet设计,在HTML标签中嵌套Java代码,用以高校开发Web应用的动态网页
2.2 作用
替换显示页面部分的Servlet(使用*.jsp文件替换XxxJSP.java)
三、JSP开发(重要)
3.1 创建JSP
在web目录下创建*.jsp文件(与WEB-INF平级)
3.1.1 JSP编写Java代码
使用<%= %>标签编写Java代码在页面中打印当前系统时间
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>第一个JSP页面</title></head><body><h2>现在时间是:</h2><%=new Date()%></body>
</html>
3.1.2 访问JSP
在浏览地址栏中输入“http://localhost:8080/项目名称/资源名称”访问指定JSP
3.2 JSP与Servlet
-
关系
-
JSP文件在容器中会转换成Servlet执行
-
JSP是对Servlet的一种高级封装。本质还是Servlet
-
-
区别
-
与Servlet相比:JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println()语句
-
-
3.3 JSP实现原理
Tomcat会将xxx.jsp转换成Java代码,进而编译成.class文件运行,最终将运行结果通过response响应给客户端。
3.3.1 JSP.java源文件存放目录
使用IDEA开发工具,Tomcat编译后的JSP文件(Xxx_jsp_class和Xxx_jsp.java)的存放地点:
四、JSP与HTML集成开发
4.1 脚本
脚本可以编写Java语句、变量、方法或表达式
4.1.1 普通脚本
-
语法:
-
<% Java代码 %>
-
-
注意:
-
普通脚本可以使用所有Java语法,除了定义函数
-
脚本与脚本之间不可嵌套,脚本与HTML标签不可嵌套
-
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>第一个JSP页面</title></head><body><%//在jsp页面中编写输出语句
//带你内容在客户端页面out.print("hello jsp");//打印内容在控制台System.out.println("hello java");%>
</body>
</html>
4.1.2 声明脚本
-
语法:
-
<%! 定义变量、函数 %>
-
-
注意:
-
声明脚本声明的变量是全局变量
-
声明脚本的内容必须在普通脚本<% %>中调用
-
如果声明脚本中的函数具有返回值,可以使用输出脚本调用<%= %>
-
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>第一个JSP页面</title></head><body><%-- 声明脚本--%><%!int i = 100;int a,b,c;Object obj = new Object();
//定义方法public void method1() {System.out.println("method1().....");}
public int method2() {return 200;}
public void sum(int num1, int num2) {System.out.println(num1 + num2);}
public int sum(int num1, int num2, int num3) {return num1 + num2 + num3;}%></body>
</html>
4.1.3 输出脚本
-
语法:
-
<%= Java表达式 %>
-
-
注意:
-
输出脚本可以输出带有返回值的函数
-
输出脚本中不能加分号;
-
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>第一个JSP页面</title></head><body><%-- 声明脚本--%><%!int i = 100;int a,b,c;Object obj = new Object();
//定义方法public void method1() {System.out.println("method1().....");}
public int method2() {return 200;}
public void sum(int num1, int num2) {System.out.println(num1 + num2);}
public int sum(int num1, int num2, int num3) {return num1 + num2 + num3;}%>
<%//调用声明脚本中的变量及方法System.out.println("i=" + i);System.out.println("a:" + a + ";b=" + b + ";c=" + c);System.out.println("object:" + obj);
System.out.println("调用方法:");method1();System.out.println(method2());sum(1000, 2000);System.out.println(sum(100, 200, 300));%>
<%--<%=%>会将内容输出在客户端输出脚本不能加分号--%><%=method2()%><%=sum(1000, 2000, 3000)%>
</body>
</html>
4.2 JSP注释
JSP注释主要有2个作用:为脚本代码作注释、为HTML内容作注释
4.2.1 语法规则
语法 | 描述 |
---|---|
<%-- 注释内容 --%> | JSP注释,注释内容不会被发送至浏览器甚至不会被编译 |
<!-- 注释内容 --> | HTML注释,通过浏览器查看网页源代码时可以看见注释内容 |
4.2.2 注释示例
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>第一个JSP页面</title></head><body><%-- 这是jsp注释,在网页中不会被显示,在Java文件中也不会显示--%><!-- 这是HTML注释,在网页源代码中会显示--><p>今天日期是:<%=new Date()%></p></body>
</html>
4.3 JSP指令
JSP指令用来设置与整个JSP页面相关的属性
指令 | 描述 |
---|---|
<%@ page...%> | 定义页面的依赖属性,比如脚本语言、error页面、缓存需求等 |
<%@ include...%> | 包含其他文件 |
<%@ taglib...%> | 引入标签库的定义。可以是自定义标签 |
4.3.1 page指令
(1)page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个page指令。
(2)语法:<%@ page attribute1="value1" attribute2="value2" ... %>
属性 | 描述 |
---|---|
contentType | 指定当前JSP页面的MIME类型和字符编码格式 |
errorPage | 指定当JSP页面发生异常时需要转向的错误处理页面 |
isErrorPage | 指定当前页面是否可以作为另一个JSP页面的错误处理页面 |
impotr | 导入要使用的Java类 |
language | 定义JSP页面所用的脚本语言,默认是Java |
session | 指定JSP页面是否使用session、默认为true立即创建,false为使用时创建 |
pageEncoding | 指定JSP页面的解码格式 |
4.3.2 include指定
(1)通过include指令来包含其他文件
(2)被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是当前JSP文件的一部分,会被同时编译执行(静态包含)
(3)语法:<%@ include file="被包含的JSP路径" %>
(4)可能会有重名的冲突问题。不建议使用
<%@ include file="header.jsp"%> ...... ...... <%@ include file="footer.jsp"%>
4.3.3 taglib指令
(1)引入JSP的标准签库
(2)语法:<%@taglib uri="外部标签库路径" prefix="前缀" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
4.4 动作标签
(1)动作标签指的是JSP页面在运行期间的命令
(2)语法:<jsp:action_name attribute="value" />
4.4.1 include
(1)<jsp:include>动作元素会将外部文件输出结果包含在JSP中(动态包含)
(2)语法:<jsp:include page="相对URL地址" />
(3)前面介绍过的include指令,它是将外部文件的输出代码复制到当前JSP文件中。这里的jsp:include动作不同,是将外部文件的输出结果引入到当前的JSP文件中
属性 | 描述 |
---|---|
page | 包含在页面中的相对地址 |
<jsp:include page="index.jsp"/>
4.4.2 useBean
(1)jsp:useBean 动作用来加载一个将在JSP页面中使用的JavaBean
(2)语法:<jsp:useBean id="name" class="package.className" />
(3)在类载入后,可以通过jsp:setProperty和jsp:getProperty动作来修改和获取bean的属性
<jsp:useBean id="user" class="com.cxyzxc.www.entity.User" />
4.4.3 setProperty
可以在jsp:useBean元素之后使用jsp:setProperty进行属性的赋值
属性 | 描述 |
---|---|
name | name属性是必需的。它表示要设置属性的是哪个Bean |
property | property属性是必需的。它表示要设置哪个属性 |
value | value属性是可选的。该属性用来指定Bean属性的值 |
<jsp:useBean id="user" class="com.cxyzxc.www.entity.User" /> <jsp:setProperty name="user" property="name" value="zhangsan" />
4.4.4 getProperty
jsp:getProperty动作提取指定Bean属性的值,转换成字符串,然后输出
属性 | 描述 |
---|---|
name | 要检索的Bean属性名称、Bean必须已定义 |
property | 表示要提取Bean属性的值 |
<jsp:useBean id="user" class="com.cxyzxc.www.entity.User" />
<jsp:setProperty name="user" property="name" value="zhangsan" />
<jsp:getProperty name="user" property="name" />
4.4.5 forward
(1)jsp:forward动作把请求转到另外页面
(2)语法:<jsp:forward page="相对URL地址" />
属性 | 描述 |
---|---|
page | page属性包含的是一个相对URL |
<jsp:forward page="index.jsp" />
4.4.6 param
(1)在转发动作内部使用,做参数传递
(2)语法:<jsp:param name="" value="" />
<jsp:forward page="index.jsp"><!-- http请求参数传递--><jsp:param name="sex" value="nan" />
</jsp:forward>
4.5 内置对象
由JSP自动创建的对象,可以直接使用
对象名 | 类型 | 说明 |
---|---|---|
request | javax.servlet.http.HttpServletRequest | |
response | javax.servlet.http.HttpServletResponse | |
session | javax.servlet.http.HttpSession | 由session="true"开关 |
application | javax.servlet.ServletContext | |
config | javax.servlet.ServletConfig | |
exception | java.lang.Throwable | 由isErrorPage="false"开关 |
out | javax.servlet.jsp.JspWriter | javax.servlet.jsp.JspWriter |
pageContext | javax.servlet.jsp.PageContext | |
page | java.lang.Object当前对象this | 当前servlet实例 |
4.5.1 四大域对象
JSP有4大作用域对象,存储数据和获取数据的方式一样,不同的是取值的范围有差别。
-
pageContext(javax.servlet.jsp.PageContext)当前JSP页面范围
-
request(javax.servlet.http.HttpServletRequest)一次请求有效
-
session(javax.servlet.http.HttpSession)一次会话有效(关闭浏览器失效)
-
application(javax.servlet.ServletContext)整个Web应用有效(服务器重启或关闭失效)
4.5.2 pageContext对象
-
pageContext对象是javax.servlet.jsp.PageContext类的实例,拥有作用域,用来代表整个JSP页面。
-
当前页面的作用于对象,一旦跳转则失效
-
通过setAttribute("name",value);存储值
-
通过getAttribute("name");获取值
-
用于获取其它8个内置对象或者操作其它对象的作用域
<% pageContext.setAttribute("name",value);//当前页面作用域有效 %>
4.5.3 pageContext获取其它内置对象
4.5.4 pageContext操作其它内置对象的作用域
pageContext对象可以操作其它作用域存储和获取
<%//操作其他作用域存储数据pageContext.setAttribute("name",value);//当前页面有效pageContext.setAttribute("name",value,PageContext.REQUEST_SCOPE);//request作用域pageContext.setAttribute("name",value,PageContext.SESSION_SCOPE);//session作用域pageContext.setAttribute("name",value,PageContext.APPLICATION_SCOPE);//application作用域 %> <%//操作其他作用域获取pageContext.getAttribute("name");//当前页面作用域pageContext.getAttribute("name",PageContext.REQUEST_SCOPE);//request作用域pageContext.getAttribute("name",PageContext.SESSION_SCOPE);//session作用域pageContext.getAttribute("name",PageContext.APPLICATION_SCOPE);//application作用域pageContext.findAttribute("name");//从pageContext、request、session、application依次查找 %>
4.6 整合
将EmpProject项目所有显示页面JSP的Servlet替换为JSP页面,使用脚本进行显示
五、EL表达式
5.1 概念
EL使JSP写起来更简单、简洁。主要用于获取作用域中的数据
5.2 作用
用于替换作用域对象.getAttribute("name");
5.3 EL的应用(获取基本类型、字符串)
-
${scope.name}获取具体某个作用域中的数据
-
${name}获取作用域中的数据,主机查找{pageContext、request、session、application}
5.3.1 EL应用案例
<%//存储在request作用域request.setAttribute("name","zhansgan");request.setAttribute("age",18); %><%-- 获取request作用域中name对应的值,找到就返回,没找到就返回"" --%> ${requestScope.name}<%--从最小作用域逐级查找name对应的值,找到就返回,没找到就返回"" --> ${name}
5.3.2 EL和JSP脚本的区别
-
<%=request.getAttribute() %>没有找到返回null
-
${requestScope.name}没找到返回""
5.4 EL的应用(获取引用类型)
使用EL获取作用域中的对象调用属性时,只能访问对象的get方法,必须遵守命名规范定义
<%Emp emp = new Emp();emp.setName("zhangsan");emp.setAge(20);request.setAttribute("emp",emp); %> <%--调用getName()方法 --%> ${requestScope.emp.name}
5.5 EL的应用(获取数组、集合的元素)
EL可以获取Array、List、Map中的元素,Set由于没有下标,无法直接访问元素,后续可遍历
<%int[] array = {1,2,3,4,5};request.setAttribute("array",array);List<Emp> emps = new ArrayList<Emp>();emps.add(new Emp(1,"zhangsan",2000,20));emps.add(new Emp(2,"lisi",3000,22));emps.add(new Emp(3,"wangwu",4000,24));request.setAttribute("emps",emps);Map<String,String> maps = new HashMap<String,String>();maps.put("CN","中华人民共和国");maps.put("FK","");maps.put("US",""); %>
5.6 EL的运算符
操作符 | 描述 |
---|---|
. | 访问一个Bean属性或者一个映射条目 |
[] | 访问一个数组或者链表的元素 |
+ | 加 |
- | 减或负 |
* | 乘 |
/ or div | 除 |
% or mod | 取模 |
== or eq | 测试是否相等 |
!= or ne | 测试是否不等 |
< or lt | 测试是否小于 |
> or gt | 测试是否大于 |
<= or le | 测试是否小于等于 |
>= or ge | 测试是否大于等于 |
&& or and | 测试逻辑与 |
|| or or | 测试逻辑或 |
! or not | 测试取反 |
empty | 测试是否空值 |
5.6.1 EL表达式执行运算
5.6.2 empty关键字
5.7 饮食对象
EL表达式语言定义了11个隐式对象
隐含对象 | 描述 |
---|---|
pageScope | page作用域 |
requestScope | request作用域 |
sessionScope | session作用域 |
applicationScope | application作用域 |
param | Request对象的参数,字符串 |
paramValues | Request对象的参数,字符串集合 |
header | HTTP信息头,字符串 |
headerValues | HTTP信息头,字符串集合 |
initParam | 上下文初始化参数 |
cookie | Cookie值 |
pageContext | 当前页面的pageContext |
5.7.1 获得应用上下文
5.7.2 获取Cookie对象
六、JSTL标准标签库
6.1 现有问题
-
EL主要是用于作用域获取数据,虽然可以做运算判断,但是得到的都是一个结果,做展示
-
EL不存在流程控制。比如判断。
-
EL对于集合只能做单点访问,不能实现遍历操作。比如循环。
6.2 什么是JSTL
(1)JSTL:全称为Java Server Standard Tag Library
(2)JSP标准标签库(JSTL)是一个JSP标签集合
6.3 JSTL的作用
-
可对EL获取的数据进行逻辑操作
-
与EL合作完成数据的展示
6.4 JSTL使用
-
导入两个jar文件:standard.jar和jstl.jar文件拷贝到/WEB-INF /lib/下
-
在JSP页面引入标签库<%@taglib uri="Oracle Java Technologies | Oracle" prefix="c" >
6.5 核心标签
6.5.1 条件标签if判断
语法:<c:if test="条件"></c:if>
6.5.2 多条件choose判断
语法: <c:choose><c:when test="条件1">结果1</c:when><c:when test="条件2">结果2</c:when>......<c:when test="条件n">结果n</c:when><c:otherwise>结果m</c:otherwise> </c:choose>
6.5.3 迭代foreach
语法: <c:foreach var="变量名" items="集合" begin="起始下标" end="结束下标" step="间隔长度" varstatus="遍历状态"></c:foreach>
6.5.4 url标签
(1)在Cookie禁用的情况下,通过重写URL拼接JESSIONID来传递ID值。便于下一次访问时仍可查到上一次的Session对象
(2)语法:<c:url context='${pageContext.request.contextPath}' value='/xxxController' />
(3)注意:所有涉及到页面跳转或者重定向跳转时。都应该使用URL重写
6.6 整合
将现有EmpProject项目进行整合,使用EL+JSTL替换脚本代码
七、MVC框架
7.1 MVC概念
MVC又称为编程模式,是一种软件设计思想,将数据操作、页面显示、业务逻辑分为三个层级(模块),独立完成,相互调用
-
模型层(Mode)
-
视图(View)
-
控制层(Controller)
7.2 MVC模式详解
MVC并不是Java独有的,现在几乎所有的B/S的结构都采用了MVC模式
-
视图View:视图是用户看到并与之交互的界面,比如HTML(静态资源),JSP(动态资源)等等
-
控制器Controller:控制器即使控制请求的处理逻辑,对请求进行处理,负责流程跳转(转发和重定向)
-
模型Model:对客观世界的一种代表和模拟(业务模拟、对象模拟)
-
7.3 优点
-
低耦合性:模块与模块之间的关联性不强,不与某一种具体实现产生密不可分的关联性
-
高维护性:基于低耦合性,可做到不同层级的功能模块灵活更换、插拔
-
高重用性:相同的数据库操作,可以服务于不同的业务处理。将数据作为独立模块,提高重用性。
7.4 MVC在框架中应用
MVC模式被广泛用于Java的各种框架中,比如Struts2、SpringMVC等都用到了这种思想
7.5 三层架构与MVC
7.5.1 三层架构
View层(表示|页面层)、Service层(业务逻辑层)、DAO层(数据访问层)
7.5.2 MVC与三层架构的区别
-
MVC强调的是视图和业务代码的分离。严格的说MVC其实关注的是Web层。View就是单独的页面,如JSP、HTML等,不负责业务处理,只负责数据的展示。而数据封装到Model里,有Controller负责在V和M之间传递。MVC强调业务和视图分离。
-
三层架构是“数据访问层”、“业务逻辑层”、“表示层”,指的是代码之间的解耦、方便维护和复用。
八、分页
8.1 概念
分页是Web应用程序非常重要的一个技术。数据库中的数据可能是成千上万的,不可能把这么多的数据一次显示在浏览器上面。一般根据每行数据在页面上所占的空间设置每页显示若干行,比如一般20行是一个比较理想的显示状态。
8.2 分页实现思路
对于海量的数据查询,需多少就取多少,显然是最佳的解决方法,假如某个表中有200万条记录,第一页取前20条,第二页取21-40条记录,第三页取41-60条记录,依此类推
SELECT * FROM 表名 LIMIT 0,20;//第一页 SELECT * FROM 表名 LIMIT 20,20;//第二页 SELECT * FROM 表名 LIMIT 40,20;//第三页
8.3 分页代码实现步骤
第一步:确定每页显示的数据数量
第二步:确定分页显示所需的总页数
第三步:编写SQL查询语句,实现数据查询
第四步:在JSP页面中进行分页显示设置
能坚持下来看完的人真了不起,我相信你干什么都会成功。
相关文章:
jsp(全部知识点)
👌 棒棒有言:也许我一直照着别人的方向飞,可是这次,我想要用我的方式飞翔一次!人生,既要淡,又要有味。凡事不必太在意,一切随缘,缘深多聚聚,缘浅随它去。凡事…...
测试开发面试基础题
1.对测试开发的理解 测试开发首先离不开测试,而软件测试是指,在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 而且,现在不仅仅是通过手工测试来发…...
C++——多态|虚函数|重写|虚表
文章目录1. 多态的概念1.1 概念2. 多态的定义及实现2.1多态的构成条件2.2 虚函数2.3虚函数的重写虚函数重写的三个例外:2.4 普通调用和多态调用:2.5 C11 override 和 final2.6 重载、虚函数的覆盖(重写)、隐藏(重定义)的对比3. 抽象类(有关纯虚函数)3.1 …...
IPV4地址详解
文章目录IPV4地址分类编址划分子网无分类编制CIDR路由聚合应用规划(子网划分的细节)定长的子网掩码FLSM变长的子网掩码VLSMIPV4地址 IPV4地址就是给因特网(Internet)上的每一台主机(或路由器)的每一个接口…...
(一)初识Streamlit(附安装)
本入门指南介绍Streamlit的工作原理、如何在您首选的操作系统上安装Streamlit,以及如何创建第一个Streamlit应用程序! 1 安装 1.1 先决条件 Python 3.7 – Python 3.11 **注:我这里使用的是anaconda的虚拟环境,用pycharm编写代…...
【新】华为OD机试 - 斗地主 2(Python)| 刷完获取OD招聘渠道
斗地主 2 题目描述 在斗地主扑克牌游戏中,扑克牌由小到大的顺序为3 4 5 6 7 8 9 10 J Q K A 2 玩家可以出的扑克牌阵型有,单张,对子,顺子,飞机,炸弹等 其中顺子的出牌规则为,由至少 5 张由小到大连续递增的扑克牌组成 且不能包含2 例如:{3,4,5,6,7}、{3,4,5,6,7,8,9,1…...
秒杀项目之消息推送
目录一、创建消费者二、创建订单链路配置2.1 定义RabbitMQ配置类2.2 创建RabbitmqOrderConfig配置类三、如何实现RabbitMQ重复投递机制3.1 开启发送者消息确认模式3.2 消费发送确认3.2.1 创建ConfirmCallBack确认模式3.2.2 创建ReturnCallBack退回模式3.3 创建生产者3.4 创建消…...
【重磅】IEEE33配电网两阶段鲁棒优化调度CCG
目录 1 前言 2基本内容 2.1 配网两阶段鲁棒模型 2.2 求解步骤 3部分程序 4程序结果 5程序链接 1 前言 鲁棒优化是电力系统研究的热点,而两阶段鲁棒和分布鲁棒研究就成为各类期刊(sci/ei/核心)的宠儿,最简单的思路是通过改…...
GPT2代码拆解+生成实例
本文代码来自博客,GPT2模型解析参考 import torch import copy import torch.nn as nn import torch.nn.functional as F from torch.nn.modules import ModuleList from torch.nn.modules.normalization import LayerNorm import numpy as np import os from tqd…...
基于android的即时通讯APP 聊天APP
基于android的即时通讯APP 或者 聊天APP 一 项目概述 该项目是基于Android 的聊天APP系统,该APP包含前台,后台管理系统,前台包含用户通讯录,用户详情,用户聊天服务,用户二维码,发现功能,发现详情 , 个人中心, 个人信…...
【C++】二叉树之力扣经典题目1——详解二叉树的递归遍历,二叉树的层次遍历
如有错误,欢迎指正。 如有不理解的地方,可以私信问我。 文章目录题目1:根据二叉树创建字符串题目实例思路与解析代码实现题目2:二叉树的层序遍历题目思路与解析代码实现题目1:根据二叉树创建字符串 点击进入题目链接—…...
MySQL数据库调优————SQL性能分析
TIPS 本文基于MySQL 8.0 本文探讨如何深入SQL内部,去分析其性能,包括了三种方式: SHOW PROFILEINFORMATION_SCHEMA.PROFILINGPERFORMANCE_SCHEMA SHOW PROFILE SHOW PROFILE是MySQL的一个性能分析命令,可以跟踪SQL各种资源消耗。…...
sql数据库高级编程总结(一)
1、数学函数:操作一个数据,返回一个结果 (1)取上限 ceiling 如果有一个小数就取大于它的一个最小整数 列如9.5 就会取到 10 select code,name,ceiling(price) from car (2)取下限 floor 如果有一个小数就…...
软件工程(5)--喷泉模型
前言 这是基于我所学习的软件工程课程总结的第五篇文章。 迭代是软件开发过程中普遍存在的一种内在属性。经验表明,软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代,在面向对象范型中比在结构化范型中更常见。 一般说来,使用…...
SM2数字签名
文章目录6. 签名流程7. 验签流程实现参考资料6. 签名流程 M’ ZA || Msge Hash(M’),并转为大数;生成随机数k,范围0<k<n;计算kG (x1, y1)r (e x1) mod n, 若r0或(rkn)则重新生成k;s (k-rd) / (1d) mod n&…...
RPA+保险后台部门擦出不一样“火花” | RPA案例
在保险行业中,后台业务线主要是为前台和中台等提供支持,提供公司整体运营服务,包括财务、信息、人力、综合办等。相对于中前台部门,后台部门离核心价值链更远一些,更偏支持部门,其中某些岗位与业务相关度强…...
设备树相关概念的理解
设备树 定义 设备树是描述硬件信息的一种树形结构,设备树文件会在内核启动后被内核解析得到对应设备的具体信息。 树形结构就自然会存在节点,硬件设备信息就存储再设备树中的节点上,即设备节点。而一个设备节点中可以存储硬件的多个不同属性…...
ubuntu20.04下配置深度学习环境GPU
卸载子系统 C:\Users\thzn>wsl --list 适用于 Linux 的 Windows 子系统分发版: docker-desktop (默认) docker-desktop-data Ubuntu-18.04 Ubuntu-22.04 Ubuntu-20.04 C:\Users\thzn>wsl --unregister Ubuntu-18.04 ubuntu 换源 https://www.cnblogs.com/Horizon-asd/p…...
用egg.js来写一个api管理系统(一)
Egg.js是一个基于Node.js的企业级开发框架,非常适合构建API服务。 安装egg.js 首先,您需要安装Node.js和npm(Node Package Manager)。然后,您可以通过运行以下命令来安装Egg.js: npm i egg --save然后&a…...
企业数字化转型和升级:架构设计方法与实践
目录 企业架构整体结构 企业架构的驱动力 企业架构的基本概念 企业架构的发展 企业架构框架理论 主流企业架构框架之对比 企业架构整体结构 图例:企业架构整体结构 企业架构整体结构从战略层、规划层、落地层这三层来分别对应企业架构中 业务、架构和实施的各种重要…...
【LeetCode】环形链表 II [M](链表)
142. 环形链表 II - 力扣(LeetCode) 一、题目 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链…...
Unity之如何实现一个VR任务(剧情)系统
一.前言 最近再做一个VR项目,里面有大量的剧情和VR操作任务。 比如: 1.张三说了什么话,干了什么事,然后,李四又说了什么,做了什么动画,完了之后,场景中某个物体高亮,让我们触摸或者射线点击(pc的话鼠标点击)和其发生交互。 2.我们使用VR手柄或者鼠标与场景中的一个…...
k8s核心概念与kubectl命令行工具的使用
k8s官方文档Kubernetes 文档 | Kubernetes作用:kubernetes用于容器化应用程序的部署,扩展和管理。目标:是让部署容器化应用简单高效。Kubernetes集群架构与组件 Master组件 kube-apiserverkubernetes API,集群的统一入口ÿ…...
【零基础入门前端系列】—无序列表、有序列表、定义列表(四)
一、HTML无序列表 无序列表是一个项目的列表,此列项目使用粗体圆点(典型的小黑圆圈)进行标记。 无序列表使用 <ul> 标签 <ul> <li>Coffee</li> <li>Milk</li> </ul>嵌套结构: <…...
为什么重写equals还要重写hashcode方法
目录equals方法hashCode方法为什么要一起重写?总结面试如何回答重写 equals 时为什么一定要重写 hashCode?要想了解这个问题的根本原因,我们还得先从这两个方法开始说起。 以下是关于hashcode的一些规定: 两个对象相等࿰…...
电子技术——电流镜负载的差分放大器
电子技术——电流镜负载的差分放大器 目前我们学习的差分放大器都是使用的是差分输出的方式,即在两个漏极之间获取电压。差分输出主要有以下优势: 降低了共模信号的增益,提高了共模抑制比。降低了输入偏移电压。提升了差分输入的增益。 由于…...
go面试题
1.json包在使用的时候,结构体里的变量不加tag能不能正常转成json里的字段? 如果变量首字母小写,则为private。无论如何不能转,因为取不到反射信息。如果变量首字母大写,则为public。 不加tag,可以正常转为j…...
攻防世界-Confusion1
题目 访问题目场景 某天,Bob说:PHP是最好的语言,但是Alice不赞同。所以Alice编写了这个网站证明。在她还没有写完的时候,我发现其存在问题。(请不要使用扫描器) 然后结合图片我们知道,这个网址是python写的࿰…...
机器学习实战--梯度下降法进行波士顿房价预测
前言: Hello大家好,我是Dream。 今天来学习一下如何使用机器学习梯度下降法进行波士顿房价预测,这是简单的一个demo,主要展示的是一些小小的思路~ 本文目录:一、波士顿房价预测1.全部的数据可视化2.地理数据可视化3.房…...
黑马】后台管理-项目优化和上线
一。项目优化优化1,加载进度条显示安装一个运行依赖,nprogress然后导包,调用对象展示和隐藏在main中基于拦截器实现展示进度条和隐藏进度条的效果如果触发请求拦截器,证明发起请求,希望展示进度条,如果触发…...
郑州网站推广技术/学历提升
导读:AIoT产业是多种技术融合,赋能各行业的产业,整体市场潜在空间超十万亿元。根据IDC的数据与预测,2019年全球AIoT市场规模达到2264亿美元,预计到2022年达到4820亿美元,2019-2022年复合增长率为28.65%。AI…...
网络推广营销方法/南宁百度seo排名优化软件
分享一个自己写的简单的批量文件上传插件,git地址:https://git.coding.net/lichmama/easyUpload.git 基于jQuery 关于兼容性:支持目前市场上绝大多数的浏览器,IE的话最好选择IE10以上。 该插件很简单,由三个文件组成&a…...
省机关事务局网站建设管理情况/常州seo招聘
1、在测试列表中插入一个多行文本字段,名字叫做Content,如下图: 2、在Content字段里,添加一个Link,如下图: 3、尝试输入Notes格式的Link,如下图: 4、点击OK的时候,弹出消…...
河南两学一做网站/网络营销的概念和特点是什么
1.双击打开“我的电脑”—双击打开“D盘”,单击右键下拉菜中选择“新建”—“文件夹”,右键“新建文件夹”选择“重命名”命名为“练习”,双击打开“练习”文件夹; 右键分别空白处右键下拉菜中选择“新建”—“文件夹”得到“新建文件夹”和“新建文件夹…...
专注苏州网站建设/重庆人力资源和社会保障网官网
Afinal是一个orm、ioc框架,遵循约定大于配置原则,无需任何配置即可完成所有工作,但也可以通过配置达到个人的个性化需求。Afinal提倡代码快速简洁,尽量一行代码完成的事情不会用两行。Afinal里面目前包含了四大组件:Fi…...
如何利用服务器做网站/windows优化大师是官方的吗
需要用到的命令 #查看挂载df -h#磁盘状态查看fdisk -l#磁盘分区fdisk /dev/adb#格式化磁盘或磁盘分区mkfs.ext4 /dev/adb#挂载磁盘mount /dev/adb /data直接说操作 fdisk -l 查看可挂载磁盘 df -h 查看已经挂在的磁盘 如果对磁盘做分区 fdisk /dev/vdb 输入m,可以查…...