jsp(全部知识点)

news2024/11/26 4:52:11

👌 棒棒有言:也许我一直照着别人的方向飞,可是这次,我想要用我的方式飞翔一次!人生,既要淡,又要有味。凡事不必太在意,一切随缘,缘深多聚聚,缘浅随它去。凡事看淡点看开些,顺其自然,无意于得,就无所谓失。人生,看轻看淡多少,痛苦就远离你多少。

👌 本章简介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

  1. 关系

    • JSP文件在容器中会转换成Servlet执行

    • JSP是对Servlet的一种高级封装。本质还是Servlet

  2. 区别

    • 与Servlet相比:JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println()语句

  3.  

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进行属性的赋值

属性描述
namename属性是必需的。它表示要设置属性的是哪个Bean
propertyproperty属性是必需的。它表示要设置哪个属性
valuevalue属性是可选的。该属性用来指定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地址" />

属性描述
pagepage属性包含的是一个相对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自动创建的对象,可以直接使用

对象名类型说明
requestjavax.servlet.http.HttpServletRequest
responsejavax.servlet.http.HttpServletResponse
sessionjavax.servlet.http.HttpSession由session="true"开关
applicationjavax.servlet.ServletContext
configjavax.servlet.ServletConfig
exceptionjava.lang.Throwable由isErrorPage="false"开关
outjavax.servlet.jsp.JspWriterjavax.servlet.jsp.JspWriter
pageContextjavax.servlet.jsp.PageContext
pagejava.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个隐式对象

隐含对象描述
pageScopepage作用域
requestScoperequest作用域
sessionScopesession作用域
applicationScopeapplication作用域
paramRequest对象的参数,字符串
paramValuesRequest对象的参数,字符串集合
headerHTTP信息头,字符串
headerValuesHTTP信息头,字符串集合
initParam上下文初始化参数
cookieCookie值
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页面中进行分页显示设置

能坚持下来看完的人真了不起,我相信你干什么都会成功。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

窗口置顶工具v2.6.0(截图+贴图)

大家好&#xff0c;很高兴能再次更新版本&#xff0c;距上一年12月份到现在&#xff0c;有差不多两个月没有更新了&#xff0c;主要是年底&#xff0c;工作方面要冲刺&#xff0c;直到上周才有空继续开发置顶工具。 本来想再偷懒一段时间再开发&#xff0c;但最近在工作中经常…

用于高效高光谱图像分类的多尺度上下文感知集成深度 KELM(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 高光谱遥感&#xff0c;作为成像技术与细分光谱技术有机结合的成像光谱遥感&#xff0c;可以获取在可见光到短波红外甚至中红外…

重构之改善既有代码的设计(一)

1.1 何为重构&#xff0c;为何重构 第一个定义是名词形式&#xff1a; 重构&#xff08;名词&#xff09;&#xff1a;对软件内部结构的一种调整&#xff0c;目的是在不改变「软件可察行为」前提下&#xff0c;提高其可理解性&#xff0c;降低修改成本。 「重构」的另一个用…

Bigscreen Beyond头显解析:极致轻量化,显示部分仅127g

近年来&#xff0c;一体机占据了C端VR市场主要地位&#xff0c;其采用低成本、低门槛、无线化设计&#xff0c;对消费者足够友好。尽管如此&#xff0c;PC VR生态也在发展&#xff0c;相比于一体机&#xff0c;PC VR可提供视觉质量更高的VR体验&#xff0c;而且依托于SteamVR生…

LayUI表格渲染实现前后端交互

方法渲染 初始化 table 容器中配置好相应的参数&#xff0c;由 table 模块内部自动对其完成渲染&#xff0c;而无需你写初始的渲染方法。 首先满足&#xff1a; 带有 class"layui-table"的 标签&#xff1b;对标签设置属性lay-data"" 用于配置一些基础参…

索引-性能分析-explain

explain 执行计划 explain 执行计划各字段含义 1&#xff09;id 就是代表 sql 的执行顺序或者表的执行顺序&#xff1b;id相同从上往下执行&#xff0c;id不同&#xff0c;id值越大越先执行&#xff1b;&#xff08;注&#xff1a;有子查询时就会出现sql执行顺序&#xff09;…

【物联网】mqtt初体验

文章目录安装EMQXjava集成添加依赖mqtt配置参数发布组件订阅组件测试接口接口测试最近在了解物联网云平台方面的知识&#xff0c;解除了mqtt协议&#xff0c;只看书籍难免有些枯燥&#xff0c;所以直接试验一下&#xff0c;便于巩固理论知识。 broker服务器操作系统&#xff1a…

Illegal char <:> at index 4

一、现象Java11环境下项目启动时报错&#xff1a;java.nio.file.InvalidPathException: Illegal char <:> at index 4但项目能正常启动、运行。二、解决办法方法1方法2项目路径\.idea\workspace.xml中的PropertiesComponent节点下新增配置&#xff1a;<property name&…

NoSQL(非关系型数据库)与SQL(关系型数据库)的差别

目录 NoSQL(非关系型数据库)与SQL(关系型数据库)的差别 1.数据结构&#xff1a;结构化与非结构化 2.数据关联&#xff1a;关联性与非关联性 3.查询方式&#xff1a;SQL查询与非SQL查询 4.事务特性&#xff1a;ACID与BASE 分析ACID与BASE的含义&#xff1a; 5.存储方式&am…

16- 梯度提升分类树GBDT (梯度下降优化) (算法)

梯度提升算法 from sklearn.ensemble import GradientBoostingClassifier clf GradientBoostingClassifier(subsample0.8,learning_rate 0.005) clf.fit(X_train,y_train) 1、交叉熵 1.1、信息熵 构建好一颗树&#xff0c;数据变的有顺序了&#xff08;构建前&#xff0c…

jvm对象创建与内存解析

1.类加载检查虚拟机遇到一条new指令时&#xff0c;首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用&#xff0c;并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有&#xff0c;那必须先执行相应的类加载过程。new指令对应到语言层面上讲…

【node.js】node.js的安装和配置

文章目录前言下载和安装Path环境变量测试推荐插件总结前言 Node.js是一个在服务器端可以解析和执行JavaScript代码的运行环境&#xff0c;也可以说是一个运行时平台&#xff0c;仍然使用JavaScript作为开发语言&#xff0c;但是提供了一些功能性的API。 下载和安装 Node.js的官…

linux篇【14】:网络https协议

目录 一.HTTPS介绍 1.HTTPS 定义 2.HTTP与HTTPS &#xff08;1&#xff09;端口不同&#xff0c;是两套服务 &#xff08;2&#xff09;HTTP效率更高&#xff0c;HTTPS更安全 3.加密&#xff0c;解密&#xff0c;密钥 概念 4.为什么要加密&#xff1f; 5.常见的加密方式…

裸辞5个月,面试了37家公司,终于找到理想工作了

上半年裁员&#xff0c;下半年裸辞&#xff0c;有不少人高呼裸辞后躺平真的好快乐&#xff01;但也有很多人&#xff0c;裸辞后的生活五味杂陈。 面试37次终于找到心仪工作 因为工作压力大、领导PUA等各种原因&#xff0c;今年2月下旬我从一家互联网小厂裸辞&#xff0c;没想…

linux高级命令之用户相关操作

用户相关操作学习目标能够知道创建用户的命令1. 创建用户命令说明useradd创建(添加)用户useradd命令选项:选项说明-m自动创建用户主目录,主目录的名字就是用户名-g指定用户所属的用户组&#xff0c;默认不指定会自动创建一个同名的用户组创建用户效果图:查看所有用户信息的文件…

nginx-host绕过实例复现

绕过Nginx Host限制第一种处理方法Nginx在处理Host的时候&#xff0c;会将Host用冒号分割成hostname和port&#xff0c;port部分被丢弃。所以&#xff0c;我们可以设置Host的值为2023.mhz.pw:xxx"example.com&#xff0c;这样就能访问到目标Server块&#xff1a;第二种处理…

SpringBoot的定时任务实现--SpringTask

SpringTask是Spring自带的功能。实现起来比较简单。 使用SpringTask实现定时任务有两种方式&#xff1a; 1.注解方式 基于注解 Scheduled Scheduled(cron "*/1 * * * * ?")public void up(){System.out.println("定时任务开启&#xff1a;"System.cu…

想做好项目经理,一定要知道这10句话

早上好&#xff0c;我是老原。有句话说过&#xff1a;“你是怎么过好一天的&#xff0c;就是怎么过好一生的。”这句话&#xff0c;我刚毕业那会没什么感觉&#xff0c;但工作越久&#xff0c;体会越深。你会发现优秀的人有些特质和习惯千篇一律&#xff0c;而普通人&#xff0…

深圳80后男子朋友圈晒情人节,一天收三个不同女子巧克力红包

每年情人节到来的时候&#xff0c;对于广大男同胞来说&#xff0c;都是倍受煎熬的日子&#xff0c;因为不论你怎么去做&#xff0c;都不会落到好处。如果你还没有对象&#xff0c;这个情人节就尴尬了&#xff0c;眼看着别人出入成双成对&#xff0c;自己却落得个孤家寡人。 如果…

微信Android架构历史——模块化架构重构实践

微信Android诞生之初&#xff0c;用的是常见的分层结构设计。这种架构简单、清晰并一直沿袭至今。这是微信架构的v1.x时代。 图1-架构演进 到了微信架构的v2.x时代&#xff0c;随着业务的快速发展&#xff0c;消息通知不及时和Android 2.3版本之前webview内存泄露问题开始突显…