课程回顾

JSP的概念

JSP执行流程

JSP和Servlet的关系

区别: Servlet三件事: ①获取数据②调用业务方法③流程控制, JSP侧重数据的展示。

联系: JSP就是Servlet,JSP继承HttpServlet。

EL表达式

${ } 可以访问作用域的数据

综合案例

九大内置对象

什么是内置对象

内置对象是JSP中可以直接使用的对象,普通对象我们需要new创建对象,而内置对象不用创建可以直接使用;内置对象是由服务器创建,传递给JSP页面对象。

九大内置对象

  1. request对象: 获取请求数据 HttpServletRequest
  2. response对象: 响应数据对象 HttpServletResponse
  3. session对象: 会话对象,存储用户的会话信息 HttpSession
  4. application对象: 应用程序 app ,DAMA,application代表整个web应用程序 ServletContext
  5. page对象: 当前页面对象 Object
  6. pageContext对象: 当前页面上下文环境对象 PageContext
  7. exception对象: 表示页面的异常信息 Throwable
  8. config对象: 表示jsp的配置信息, ServletConfig
  9. out对象: 输出数据到浏览器 JspWriter 输出流对象,字符

request对象

获取客户端提交的信息、服务器自身信息;

  • reques.getParamter( “name” ) 获取单个值
  • request.getParameterValues( “ 复选框 “ ) 获取多个值 String[]
  • request.getParameterNames(); 返回 Enumration
  • request.getParameterMap(); 返回Map<String,String[]>
  • request.getContextPath(); 返回web跟路径信息
  • request.getRequestDispatcher(“路径”).forward( request,response ); 转发

response对象

响应对象,向客户端浏览器发送数据。

  • response.sendRedirect( “fail.jsp” ); 重定向
  • response.setContextType( “” ); 设置浏览器响应的内容类型
  • response.setHeader( “key”, “value” );设置响应头信息
  • response.addHeader( “key”, “value” );添加响应头信息
  • response.getOutputStream(); 获取输出字节流对象
  • response.getWriter(); 获取输出字符流对象
  • response.addCookie( cookie ); 添加Cookie信息

session对象

表示客户端和服务器的会话,浏览器和服务器的多次请求和响应。我们购物的过程就是会话,多次和服务器进行交互。

下次课和Cookie一起讲解

application对象

是ServletContext对象,全局的对象,服务器加载web应用创建该对象,服务器卸载web应用则停止;服务器停止该对象销毁。声明周期伴随web应用,所以不适合存储大量数据,会一直占用服务器内存。

  • application.setAttribute( “key”, “value" );
  • application.getAttribute(“key”);
  • application.getAttributeNames();//获取所有的属性名
  • application.removeAttribute( “key” ); 删除属性
  • application.getRealPath( “image/00.jpeg” );获取文件的真实路径
  • application.getContextPath();获取web应用的项目名称
  • application.getResourceAsStream( “/WEB-INF/classes/jdbc.properties” ); //注意: classes/config/jdbc.properties

page对象

page代表当前页面对象,类型是Object的,该对象没有特殊的方法,都是Object对象的方法。

这个对象就是页面实例的引用。它可以被看做是整个JSP页面的代表。page 对象就是this对象的同义词。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
out.println( page );
%>
</body>
</html>

pageContext对象

pageContext对象表示页面的环境,用来代表整个JSP页面;这个对象存储了request对象和response对象的引用。application对象,config对象,session对象,out对象可以通过访问这个对象的属性来导出。

pageContext对象也包含了传给JSP页面的指令信息,包括缓存信息,ErrorPage URL,页面scope等。

PageContext类定义了一些字段,包括PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE, APPLICATION_SCOPE。它也提供了40余种方法,有一半继承自javax.servlet.jsp.JspContext 类。

pageContext作用域方法

  • pageContext.setAttribute(“key”,”value")
  • pageContext.getAttribute( “key” )
  • pageContext.getAttribute( “key”, 作用域 )
  • pageContext.getAttributeNamesInScope(作用域)
  • pageContext.removeAttribute(“key”)

exception对象

显示异常信息,

a.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" errorPage="ex.jsp" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
out.println(5/0);
%>
</body>
</html>

b.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" isErrorPage="true" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>错误页面</title>
</head>
<body>
错误信息: <%=exception.getMessage() %>
</body>
</html>

config对象

ServletConfig类型,获取配置信息,

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
Config对象: <br/>获取ServletName:<%=config.getServletName() %><br/>
获取ServletContext对象: <%=config.getServletContext().getContextPath() %><br/></body>
</html>

out对象

向客户端浏览器输出数据的。out对象是 javax.servlet.jsp.JspWriter 类的实例,用来在response对象中写入内容。

  • out.println(); 支持各种数据类型的输出
  • out.flush(); 刷新缓冲区
  • out.close(); 关闭输出流
  • out.write(); 输出数据

四大作用域对象

作用域: pageContext 当前页面 < request 请求 < session 会话 < application对象

page.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
out.println( page );
pageContext.setAttribute("name", "赵敏");
pageContext.setAttribute("age", 30, PageContext.REQUEST_SCOPE);
request.setAttribute("req_address", "四川峨眉山峨眉派");
session.setAttribute("ses_money", 10000);
application.setAttribute("app", "信阳绿茶-毛尖");
%>
<h1>取值</h1>
pageContext的默认作用域:  <%=pageContext.getAttribute("name") %><br/>
pageContext的指定作用域: <%=pageContext.getAttribute("age", PageContext.REQUEST_SCOPE) %><br/>
request的作用域: <%=request.getAttribute("req_address") %><br/>
session的作用域: <%=session.getAttribute("ses_money") %><br/>
application的作用域:<%=application.getAttribute("app") %><%
//response.sendRedirect("show.jsp");
request.getRequestDispatcher("show.jsp").forward(request, response);
%></body><br/>
</html>

show.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><h1>取值</h1>
pageContext的默认作用域:  <%=pageContext.getAttribute("name") %><br/>
pageContext的指定作用域: <%=pageContext.getAttribute("age", PageContext.REQUEST_SCOPE) %><br/>
request的作用域: <%=request.getAttribute("req_address") %><br/>
session的作用域: <%=session.getAttribute("ses_money") %><br/>
application的作用域:<%=application.getAttribute("app") %>
</body>
</html>

总结:

  • pageContext 默认设置属性是当前页面,不管是转发还是重定向都不可以获取
  • pageContext.setAttribute(“age”, 30, PageContext.REQUEST_SCOPE); 指定作用域转发可以获取,重定向不可以
  • request作用域: 转发可以,重定向不可以
  • session作用域: 转发和重定向都可以,但是仅限当前客户端浏览器
  • application作用域: 都可以获取,可以存储共享数据,在线人数,到监听器时讲解案例

EL表达式详解

EL Express Language 表达式语言, ${ } 用来简化JSP页面的编码,JSP技术是用来显示数据,但是还有大量的JAVA代码,如何优化、简化java代码,EL是一种方案、另一种方案JSTL。

EL 可以访问四大作用域的对象,并且支持访问对象的属性以及数组、集合类。也支持常见的算术运算符,+ - * /等等。EL表达式的应用场景:

  1. 获取变量的值
  2. 获取对象的属性值
  3. 获取数组的元素
  4. 获取集合的元素
  5. 获取执行表达式

1、获取变量的值

按照page → request → session → application的作用域顺序依次查找,找到即返回,最终找不到返回null。还可以指定作用域:

属性范围 EL中的名称
page pageScope,例如${pageScope.username}表示在page作用域查找变量username,找不到返回null
request requestScope
session sessionScope
application applicationScope
package com.ujiuye.controller;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.ujiuye.serivce.UserService;
import com.ujiuye.serivce.impl.UserServiceImpl;
@WebServlet("/userServlet")
public class UserServlet  extends HttpServlet {private static final long serialVersionUID = 1L;private UserService userService = new UserServiceImpl();@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.获取变量的值: 变量可以是自己定义的、可以是外界传入的、可以是数据库的String name = "胡一刀";String age  = request.getParameter("age");int count = userService.getCount();request.setAttribute("name", name);request.setAttribute("age", age);request.setAttribute("count", count);request.getRequestDispatcher("el.jsp").forward(request, response);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}

2、获取对象的属性值

语法: ${ 对象名.属性名 } 访问getter方法

package com.ujiuye.controller;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.ujiuye.entity.User;
import com.ujiuye.serivce.UserService;
import com.ujiuye.serivce.impl.UserServiceImpl;
@WebServlet("/userServlet")
public class UserServlet  extends HttpServlet {private static final long serialVersionUID = 1L;private UserService userService = new UserServiceImpl();@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.获取变量的值: 变量可以是自己定义的、可以是外界传入的、可以是数据库的String name = "胡一刀";String age  = request.getParameter("age");int count = userService.getCount();request.setAttribute("name", name);request.setAttribute("age", age);request.setAttribute("count", count);//2、获取对象的属性值String userCode = request.getParameter("userCode");User user = userService.findById(userCode);request.setAttribute("u", user);request.getRequestDispatcher("el.jsp").forward(request, response);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}

el.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>访问变量的值</h1>
自定义变量: ${name }, 传入参数变量: ${age }, 数据库数据: ${count } <br/>
<h1>访问对象的值</h1>
userCode: ${u.userCode },loginCode: ${u.loginCode },userName:${u.userName }<br/>
</body>
</html>

3、获取数组的元素

//3、获取集合的元素,数组也可以
String [] citys = {"北京市","上海市","杭州市","郑州市"};
List<String> list = new ArrayList<>();
list.add("张无忌");
list.add("赵敏");
list.add("小昭");
List<User> ulist = userService.findAll();
request.setAttribute("list", list);
request.setAttribute("ulist", ulist);
request.setAttribute("citys", citys);

el.jsp

<h1>访问数组的值</h1>
数组: ${citys[0]}, ${citys[1]}, ${citys[2]},
<h1>访问集合List的值</h1>
普通数据: list[0]=${list[0]}, list[1] = ${list[1] },list[2]= ${list[2]},list[3] = ${list[3]}<br/>
对象数据: userList: ${ulist[0].userName} , ${ulist[1].userName}

4、获取集合的元素

//4.获取Map的数据
Map<String, String> map1 = new HashMap<String, String>();
map1.put("k1", "白眉鹰王");
map1.put("k2", "灭绝师太");
request.setAttribute("m1", map1);
Map<String,User> map2 = new HashMap<String, User>();
map2.put("uk", user);
request.setAttribute("m2", map2);

el.jsp

<h1>访问map中的数据</h1>
简单Map: k1 =  ${m1.k1 }, k2 = ${m1.k2}<br>
对象Map: ${m2.uk.userName } === ${m2.uk.password }

5、获取执行表达式

//5.计算表达式的值
String sex = null;
request.setAttribute("sex", sex);
request.getRequestDispatcher("el.jsp").forward(request, response);

el.jsp

<h1>访问表达式的值</h1>
5>3 ${ 5 > 3 }  <br/>empty判断字符串是否为null或者长度为0: ${empty sex };

JSTL标签库

JSTL: jsp standard tag library java标准标签库; 提供一组标准标签,也是用来简化java代码的编写。EL不能进行逻辑判断,不能进行if,for循环。例如我们要在页面显示List集合,还要写java代码,如何简化,使用JSTL。搭建开发环境:

  1. 添加jar包: jstl1.2.jar
  2. 在JSP页面引入标签库 <%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %> taglib指令
    1. prefix 标签库的前缀,可以自定义,一般core标签prefix是c
    2. format格式化标签: <%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %>

JSTL标签库包括如下一组标签:

  1. core 核心标签: 最常用的
  2. fmt 格式化标签: 常用的
  3. function 标签: 函数标签,主要是处理String的方法,字符串截取,次常用
  4. sql 标签:数据库标签,可以在jsp页面直接访问数据库,不符合三层结构,一般不用
  5. xlm 标签: 处理XML文件或者数据, 很少用

说明:开发模式是前后端分离的,前端工程师用HTML Vue;不用JSP技术,所以有B站up主说JSP可以淘汰了,但是JSP是我们理解现代开发模式的基础,所以还有必要了解,JSP需要Tomcat环境,前后端分离之后,前端工程师不用Tomcat开发,所以就没法用JSP,都是Vue。通过发送AJAX请求获取数据,axios是一个发送请求的JavaScript库。

core核心标签

通用标签: c:set c:out c:remove

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:set var="name" value="张三丰" scope="request"></c:set>
<c:set var="age" value="65" scope="request"></c:set>
<c:remove var="age"/>
姓名:<c:out value="${name}"></c:out><br/>
年龄:<c:out value="${age}"></c:out>
</body>
</html>

条件标签: c:if c:choose

LoginServlet.java

package com.ujiuye.controller;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.ujiuye.entity.User;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取用户名和密码,调用业务类,返回User对象User user = new User();user.setUserName("admin");request.setAttribute("u", user);request.getRequestDispatcher("jstl.jsp").forward(request, response);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}

jstl.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>c:if标签</h1><c:if test="${ empty u }">
<h3>用户登录</h3>
<form action="userServlet?flag=login" method="post">
用户账号: <input type="text" name="username"/><br/>
用户密码: <input type="text" name="password"/><br/>
<input type="submit" value="登录"/>
</form>
</c:if>
<c:if test="${! empty u }">
<h3>欢迎登录${u.userName}</h3>
</c:if>
</body>
</html>

迭代标签: c:forEach

LoginServlet.java

package com.ujiuye.controller;import java.io.IOException;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.ujiuye.entity.User;
import com.ujiuye.serivce.UserService;
import com.ujiuye.serivce.impl.UserServiceImpl;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {private UserService userService = new UserServiceImpl();@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取用户名和密码,调用业务类,返回User对象User user = new User();user.setUserName("admin");request.setAttribute("u", user);List<User> list = userService.findAll();request.setAttribute("list", list);request.getRequestDispatcher("jstl.jsp").forward(request, response);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}

jstl.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
#t1{border: 1px solid #000;width: 1000px;border-collapse: collapse;
}#t1 tr td, #t1 tr th{border: 1px solid #000;
}
</style>
</head>
<body>
<h1>c:forEach遍历</h1>
<table id="t1"><tr><th>用户号码</th><th>用户编码</th><th>登录账号</th><th>用户姓名</th><th>用户密码</th><th>电子邮箱</th></tr><c:forEach items="${list}" var="u" varStatus="s"><tr <c:if test="${s.index % 2 == 0 }" > style="background-color:#CCCCFF" </c:if>   ><td> ${s.index }</td><td> ${u.userCode } </td><td> ${u.loginCode } </td><td> ${u.userName }</td><td> ${u.password }</td><td> ${u.email } </td></tr></c:forEach>
</table>
</c:if>
</body>
</html>

乘法口诀表

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>c:ForEach乘法口诀表</h1>
<c:forEach begin="1" end="9" step="1" var="i"><c:forEach var="j" begin="1" end="${i}" step="1">${j} * ${i} = ${j*i}&nbsp;&nbsp;&nbsp;&nbsp; </c:forEach><br>
</c:forEach>
</body>
</html>

遍历Map

//c:forEach遍历map
Map<String, String> map1 = new HashMap<String, String>();
map1.put("k1", "白眉鹰王");
map1.put("k2", "灭绝师太");
request.setAttribute("m1", map1);User u1 = new User("周芷若","zhouzhiruo@163.com");
User u2 = new User("小昭","xiaozhao@sohu.com");
Map<String, User> map2 = new HashMap<String, User>();
map2.put("u1", u1);
map2.put("u2", u2);
request.setAttribute("m2", map2);request.getRequestDispatcher("jstl.jsp").forward(request, response);

jstl.jsp

<h1>c:forEach遍历Map集合</h1>
<h4>遍历普通Map</h4>
<c:forEach var="entry" items="${m1}">
${entry.key }---->${entry.value }<br/>
</c:forEach>
<h4>遍历对象Map</h4>
<c:forEach var="u" items="${m2}">
${u.key}---${u.value.userName }---${u.value.email }<br/>
</c:forEach>

三层结构

数据访问层

业务逻辑层

表示层

综合案例: 单表增删改查

按照三层结构实现。

第2阶段 第16讲 JSP核心技术(下)相关推荐

  1. 深度学习笔记 | 第16讲:语音识别——一份简短的技术综述

    原标题:深度学习笔记 | 第16讲:语音识别--一份简短的技术综述 大家好!又到了每周一狗熊会的深度学习时间了.在上一讲中,小编给大家介绍了经典的 seq2seq,以及著名的注意力模型,并且小编在这些 ...

  2. 小啊呜产品读书笔记001:《邱岳的产品手记-08》第15讲 产品案例分析:Mimo与LearnPython的导学之趣 第16讲 在内部产品中找到产品经理的价值

    小啊呜产品读书笔记001:<邱岳的产品手记-08>第15讲 产品案例分析:Mimo与LearnPython的导学之趣 & 第16讲 在内部产品中找到产品经理的价值 一.今日阅读计划 ...

  3. 斯坦福NLP名课带学详解 | CS224n 第16讲 - 指代消解问题与神经网络方法(NLP通关指南·完结)

    作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/36 本文地址:https://ww ...

  4. 【图学院】区块链与密码学全民课堂第1-6讲:分叉大战

    导语:本课堂用通俗易懂的系列内容为大家呈现区块链与密码学领域相关知识.这里有知识也有故事,从感兴趣到有乐趣,全民课堂等你来学. 这个系列中的课程内容首先从比特币着手进行入门介绍,再延伸至区块链的相关技 ...

  5. Python编程系列教程第16讲——拷贝自身到系统目录

    分享知识,分享快乐,收获友谊,收获财富! 大家好,我是数字雨,QQ:798033502 http://itbook.taobao.com/ 今天给大家带来的教程是<Python编程系列教程第16 ...

  6. [OfficeExcel] OfficeExcel2010 第16讲 文本处理函数

    王佩丰老师OfficeExcel2010 16讲 文本处理函数 学习笔记 使用文本截取字符串 获取文本中的信息 关于身份证 使用文本截取字符串 Left函数:从左往右取LEFT(text,[num_c ...

  7. python自动化办公百度云_用Python自动办公 做职场高手全16讲 完整版 视频教程

    python这门编程最近可是非常火,不是俗谚有说"人生苦短,我用python".这是有道理的,一是它相对于其他语言,更简单易上手,二是功能可大,可以爬虫,可以写工具. 这里分享给大 ...

  8. 灵魂课程 | 《冯雪 | 怎科学减肥16讲》

    最痛苦的事,不是失败,是我本可以! 目录 灵魂课程 | <冯雪 | 怎科学减肥16讲> 00 | 发刊词:一次就能成功的完成方案 0.1 作者介绍 0.2 说明 0.3 关于减肥的三个认知 ...

  9. 20到50之间是3的倍数php,小学三年级奥数-第16讲-数字趣谈(教)

    学科教师辅导讲义 学员编号:年级:三年级课时数:3 学员姓名:辅导科目:奥数学科教师:授课主题第16讲-数字趣谈 授课类型T同步课堂P实战演练S归纳总结 教学目标尝试使用探索法和分类统计法解决自然数列 ...

最新文章

  1. Linux环境程序栈溢出原理
  2. 大江大海2018: 冲浪科技之巅不可错过的十大数字前沿趋势
  3. 【转】[你必须知道的.NET]第二十一回:认识全面的null
  4. nodejs实战案例(Express框架+mongoDB)——(1)——前言
  5. 初探swift语言的学习笔记二(可选类型?和隐式可选类型!)
  6. 查询DB中每个表占用的空间大小
  7. 诗与远方:无题(二十四)
  8. java项目经验案例_PLC与POE结合项目经验案例总结
  9. 索引 | 学堂原创推文汇总-v1
  10. SSI指令使用详解(转)
  11. MPAndroidChart 2.15使用记录
  12. 关于“多目的地址的pix防火墙nat”的总结
  13. cad线性标注命令_CAD中线性标注的快捷键是什么?
  14. 使用运放构建电压跟随器
  15. Android开发环境搭建笔记总结
  16. 免费SSL证书和付费SSL证书有什么区别?
  17. matlab遗传算法外卖配送优化(新的约束条件)【matlab优化算法十六】
  18. javascript常见的设计模式
  19. 15.真实感图形——光照与明暗+光线跟踪+纹理映射+辐射度方法+阴影
  20. 【leetcode-sql】1082-1084、1097

热门文章

  1. hive sql 转化为 MR 的流程博客
  2. SSL证书是如何保证网站安全的
  3. 新手交换友链要警惕的7个问题
  4. pytorch unfold记录
  5. know everything about something
  6. 根据数据使用arcGIS画分级图
  7. JDK 软件国际化概述
  8. 10:有一门课不及格的学生
  9. Windows Server 2022 简体中文版、英文版下载 (updated Jun 2022)
  10. 服务器安全基线检查(Python)代码执行