文章目录

  • 一 JSP
    • 1.1 jsp介绍
    • 1.2 jsp相关概念
    • 1.3 jsp脚本
      • 1.3.1 普通脚本
      • 1.3.2 声明脚本
      • 1.3.3 输出脚本
    • 1.4 jsp注释
    • 1.5 jsp指令
      • 1.5.1 include指令(了解)
      • 1.5.2 page指令
      • 1.5.3 taglib指令
    • 1.6 jsp内置对象
    • 1.7 jsp中四大域对象
      • 1.7.1 pageContext域对象
  • 二 el表达式
    • 2.1 el表达式介绍
    • 2.2 el获取域数据基本使用
    • 2.3 el获取复杂域数据
    • 2.4 el表达式执行运算
    • 2.5 el表达式中web对象
  • 三 jstl标签库
    • 3.1 介绍
      • 3.1.1 环境准备
    • 3.2 jstl核心标签
      • 3.2.1 set标签
      • 3.2.2 remove标签
      • 3.2.3 catch标签
      • 3.2.4 if标签
      • 3.2.5 forEach标签
      • 3.2.6 forToken标签
      • 3.2.7 choose标签
      • 3.2.8 ul标签
    • 3.3 jstl综合案例——显示商品信息
      • 3.3.1 准备工作
      • 3.3.2 功能完成
  • 四 jsp模式
    • 4.1 model1模式
    • 4.2 model2模式
  • 五 BeanUtils框架
    • 5.1 开发步骤
    • 5.2 自定义BeanUtils框架
  • 六 mvc设计模式

一 JSP

1.1 jsp介绍

为什么要引入jsp?html文件无法获取java程序中的数据,同时,如果使用Servlet来显示java数据又显得不太合理!综上,需要一门技术,既可以显示页面,同时也可以获取java程序中的数据什么是jspjsp:java server page简单理解为,它就是一个可以获取java数据的html文件。

1.2 jsp相关概念

jsp为什么是一个Servletjsp文件会转义成对应的java文件比如:demo01.jsp转义成demo01_jsp.java,类demo01_jsp会继承于HttpJspPage,HttpJspPage又是Servlet子类,demo01.jsp就是Servletjsp的执行流程浏览器发起请求demo01.jspdemo01.jsp就会转义生成对应demo01_jsp.java在demo01_jsp类中,通过JspWriter类将demo01.jsp中的html标签作为响应正文响应给浏览器进行渲染显示!

1.3 jsp脚本

作用可以在页面上写java代码分类声明脚本:<%! java代码 %> 在jsp对应java类中,生成一个成员变量片段脚本:<% java代码 %>  在jsp对应的java类的_jspService方法中,生成一个局部变量输出脚本::<%= 变量值 %>   向浏览器输出内容,相当于response.getWriter().write()
1.3.1 普通脚本

<% java代码%>

Hello World!<br/><%//jsp使用小脚本嵌入代码out.println("hi");System.out.println("hello");%>
  • 普通脚本可以使用所有java语法,除了定义函数
  • 脚步与脚本之间不可嵌套,脚步与html标签不可嵌套
1.3.2 声明脚本

<%! 定义变量、函数%>

<%! int i=0;%><%! int a,b,c;%><%! Object object = new Object();%><%!//定义方法public void m1(){System.out.println("你好");}%>
  • 声明脚本声明的变量是全局变量
  • 声明脚本的内容必须在偶同脚本中调用
  • 如果声明脚本中的函数具有返回值,可以使用输出脚本调用<%= %>
1.3.3 输出脚本

<%= java表达式%>

<p>今天的日期是:<%=new java.util.Date()%></p>

输出脚本可以输出带有返回值的函数
输出脚本没有“;”

1.4 jsp注释

jsp文件中,既可以有html代码,也可以有java代码
这就意味着,jsp文件中,既可以使用html注释,也可以使用java注释,同时还可以使用jsp注释
html注释   <!-- -->用来注释html代码会将注释内容生成到jsp对应的java文件中通过浏览器查看源代码可以看见
java注释   //用来注释java代码会将注释内容生成到jsp对应的java文件中
jsp注释    <%--  --%>用来注释html代码不会讲注释内容生成到jsp对应的java文件中注释内容不会发送至浏览器甚至不会被编译
 <p>今天的日期是:<%=new java.util.Date()%></p><%--jsp注释在网页中不会被显示--%><!--html注释在网页中会显示-->

1.5 jsp指令

用于指示jsp执行某些操作 、用于指示jsp表现特定行为或效果

 <%@ 指令名称 属性名1="属性值1" 属性名2="属性值2" %>
1.5.1 include指令(了解)

用于将外部引入到jsp文件中

<%@ include file="top.jsp"%>
1.5.2 page指令
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" errorPage="error.jsp" %>
<%@ page isErrorPage="true" %>
contentType="text/html;charset=UTF-8"告诉浏览器应该以utf-8解码响应正文,告诉服务器应该以utf-8对响应正文进行编码language="java"设置jsp页面能够使用的语言,不动!import="java.util.List" 在当前jsp页面中导入List类isELIgnored="false"当前jsp页面不要忽略el表达式,默认就是不忽略errorPage="error.jsp"当前jsp页面发生异常,所要跳转到页面isErrorPage="true"标记当前jsp页面是否是一个错误页面,如果为true那么就可以使用jsp内置对象exception,否则不能使用
1.5.3 taglib指令

在当前jsp页面中导入jstl标签库

<%@taglib prefix="前缀" uri="路径" %>
  • 导入jstl标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

1.6 jsp内置对象

可以在jsp页面上直接使用的对象

内置对象名 描述
page 当前页面对象
java.lang.Object
pageContext 当前页面上下文对
javax.servlet.jsp.PageContext
request 请求对象
javax.servlet.http.HttpServletRequest
response 响应对象
javax.servlet.http.HttpServletResponse
session 会话对象
javax.servlet.http.HttpSession
config ServletConfig对象
javax.servlet.ServletConfig
exception 异常对象
java.lang.Throwable
application ServletContext对象
javax.servlet.ServletContext
out JspWriter对象
javax.servlet.jsp.JspWriter

在jsp对应的java文件中,已经提前声明好了这些内置对象,所以可以直接使用

  • request、response、session
<%
//    String username = request.getParameter("username");
//    System.out.println(username);
//    response.getWriter().write(username);
//    session.setAttribute("msg","hello jsp");application.setAttribute("msg","hello jsp jsp");
%>
<%
//    String msg = (String) session.getAttribute("msg");
//    System.out.println(msg);String msg = (String) application.getAttribute("msg");System.out.println(msg);
%>
<%out.write("i am very happy");
%>

1.7 jsp中四大域对象

域对象:就是可以用来存储数据对象

jsp域对象request    代表整个请求链session  整个会话application 整个web应用pageContext  代表page域,但是jsp中page它的类型是Object,所以操作page域我们使用的是pageContext对象,page域就是指当前页面范围
1.7.1 pageContext域对象
作用获取其他的内置对象操作域操作page域操作request、session、application
  • 获取其他的内置对象

    • 没有获取out内置对象
  <%pageContext.getPage();//获取内置对象pagepageContext.getRequest();//获取内置对象requestpageContext.getResponse();//获取内置对象responsepageContext.getSession();//获取内置对象sessionpageContext.getServletContext();//获取applicationpageContext.getServletConfig();//configpageContext.getException();//exception%>
  • 操作page域

    • 作用范围只在当前页面
 <%//往pageContext域中存储了一个msg变量pageContext.setAttribute("msg" ,"hello page msg");%><%//往pageContext域中存储了一个msg变量Object msg = pageContext.getAttribute("msg");System.out.println(msg);%>
  • 操作其他域
    • request域
    <%//定义变量的意义! 提高复用性! 提高可维护性!//String name : 参数名称//Object value : 参数值//int scope : 操作的域pageContext.setAttribute("msg1","hello page1",PageContext.REQUEST_SCOPE);//请求转发request.getRequestDispatcher("/demo06.jsp").forward(request,response);%><%//变量msg1定义到_jspService方法中Object msg1 = request.getAttribute("msg1");System.out.println("msg1 : "+msg1);Object msg11 = pageContext.getAttribute("msg1", PageContext.REQUEST_SCOPE);System.out.println(msg11);%>
  • session域
    <%pageContext.setAttribute("msg2","hello page2",PageContext.SESSION_SCOPE);%>
  • application域
    <%pageContext.setAttribute("msg3","hello page3",PageContext.APPLICATION_SCOPE);%>

二 el表达式

2.1 el表达式介绍

el(expression language),是由jsp内置提供
el表达式用来替换jsp脚本

作用向页面输出数据获取web对象
格式   ${表达式}

如果page指令中isELIgnored=“true”,jsp页面就不会解析执行el表达式,会原样显示

2.2 el获取域数据基本使用

  • 获取page域数据
  <%pageContext.setAttribute("msg1","hello page1");%>${pageScope.msg1}
  • 获取request域数据
  <%request.setAttribute("msg1","hello page1");%>${requestScope.msg1}
  • 获取session域数据
  <%session.setAttribute("msg1","hello page1");%>${sessionScope.msg1}
  • 获取application域数据
  <%application.setAttribute("msg1","hello page1");%>${applicationScope.msg1}

2.3 el获取复杂域数据

  • 获取数组
  <%//数组静态初始化String[] msgs = {"tom","steve","barry"};pageContext.setAttribute("msgs",msgs);%><%--jsp输出脚本--%><%=((String[])pageContext.getAttribute("msgs"))[0]%>${msgs[1]}
  • 获取List集合
  <%List<String> msgs1 = new ArrayList<>();msgs1.add("kate");msgs1.add("jay");request.setAttribute("msgs1",msgs1);%><%=((List<String>)request.getAttribute("msgs1")).get(0)%>${msgs1[1]}
  • 获取map集合
  <%HashMap<String,Object> map = new HashMap<>();map.put("username","jerry");map.put("age",16);session.setAttribute("map",map);%><%=((HashMap<String,Object>)session.getAttribute("map")).get("username")%>${map.age}
  • 获取java对象
  <%User user = new User();user.setId(1);user.setUsername("alex");user.setPassword("123456");application.setAttribute("user",user);%><%=((User)application.getAttribute("user")).getUsername()%>${user.password}

2.4 el表达式执行运算

  • 算术运算
  +-*/:div%:mod
  • 关系运算
  > : gt>= : ge< : lt<= : le== : eq!= : ne
  • 逻辑运算
  && : and|| : or!  : not
  • 三元运算
${num1 gt num2 ? "num1大于num2" : "num1不大于num2"}

2.5 el表达式中web对象

  • 11个web对象
el表达式 说明
pageScope
(常用)
是page域对象,获取pageContext域属性
requestScope
(常用)
获取request域属性
sessionScope
(常用)
获取session域属性
applicationScope
(常用)
获取application域属性
param 对应参数,它是一个Map,其中key是参数,value是参数值,适用于单值的参数
相当于request.getParameter()
paramValues 对应参数,她是一个Map,其中key是参数,value是多个参数值,适用于多值的参数
相当于request.getParameterValues()
header 对应请求头,它是一个Map,其中key表示头名称,value是单个头值,适用于单值的请求头
获取单个请求头值
headerValues 对应请求头,它是一个Map,其中key表示头名称,value是多个头值,适用于多值的请求头
获取一组请求头的值
initParam 获取初始化参数,获取web.xml中内的参数
cookie
(常用)
用于获取cookie
Map<String,Cookie>,其中key是cookie的name,value是cookie对象
pageContext
(常用)
相当于pageContext对象,获取jsp九大内置对象
应用场景:获取当前项目路径${pageContext.request.contextPath}

三 jstl标签库

3.1 介绍

jstl (java standard tag libarary),jsp标签库,它是apache对el表达式的扩展
和el表达式结合使用,可以让功能更加强

3.1.1 环境准备
  • 导入jar包
  • 在jsp页面导入jstl标签库
    • 使用taglib指令
   <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

3.2 jstl核心标签

3.2.1 set标签

向域对象(page域、request域、session域、application域)中存储数据

var:参数名称
scope:域
value:参数值
  <c:set var="msg" scope="request" value="hello jstl"></c:set>${msg}
3.2.2 remove标签

移除域对象中的数据

var:参数名称
scope:域
  <c:remove var="msg" scope="request"></c:remove>${msg}<br>
3.2.3 catch标签

捕获jsp页面的异常,相当于try…catch

var:声明异常对象名称,比如:var="e" ,变量e就可以接收异常对象
  <c:catch var="e"><%int num = 1 / 0;%></c:catch>${e}<br>
3.2.4 if标签

条件判断

test :编写条件
  <c:set var="num" value="2" scope="request"></c:set><c:if test="${num == 1}">num 等于 1</c:if><c:if test="${num != 1}">num 不等于 1</c:if>
3.2.5 forEach标签

遍历集合或数组

begin:开始
end:结束
step:步数
var:元素名称
items:集合/数组
varStatus:元素状态对象first:是否是第一个元素last:是否是最后一个元素current:当前元素index“:当前脚标
  <!-- 基本使用 --><c:forEach begin="1" end="10" step="3" var="num">${num}</c:forEach><%List<String> strs  = new ArrayList<>();strs.add("aaa");strs.add("bbb");strs.add("ccc");request.setAttribute("strs",strs);%><!-- 相当于普通for循环 --><c:forEach begin="0" end="${strs.size() - 1}" step="1" var="i">${strs[i]}</c:forEach><!-- 相当于增强for循环 --><c:forEach var="str" items="${strs}" varStatus="status">${str}<br>${status.current} -- ${status.index} -- ${status.first} -- ${status.last}<br></c:forEach>
3.2.6 forToken标签

分割字符串

items:要分割的字符串
delims:分割的规则
var:分割产生的元素
  <%String msg1 = "aaa--bbb--ccc";request.setAttribute("msg1",msg1);%><c:forTokens items="${msg1}" delims="--" var="sonMsg">${sonMsg}</c:forTokens>
3.2.7 choose标签

<c:choose>标签与switch语句功能一样,用于在众多选项中做出选择

<c:choose><c:when test="条件1">结果1</c:when><c:when test="条件2">结果2</c:when><c:when test="条件3">结果3</c:when><c:otherwise>结果4</c:otherwise>
</c:choose>
3.2.8 ul标签

<c:ul>标签将URL格式化为一个字符串,然后存储在变量中
自动重写URL,var属性用于存储格式化后的URL

<c:ul value='${pageContext.request.contextPath}/xxxController' var="myurl"/>

3.3 jstl综合案例——显示商品信息

3.3.1 准备工作
  • 导入jar包

  • ProductDao

  public class ProductDaoImpl implements ProductDao {@Overridepublic List<Product> selectProductList() throws Exception {return new QueryRunner(JDBCUtils.getDataSource()).query("select * from tb_product",new BeanListHandler<Product>(Product.class));}}
  • ProductServlet
  @WebServlet(name = "ProductServlet" ,urlPatterns = "/selectProductList")public class ProductServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {ProductDao productDao = new ProductDaoImpl();try {List<Product> productList = productDao.selectProductList();System.out.println(productList);} catch (Exception e) {e.printStackTrace();}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}}
3.3.2 功能完成
  • productList.jsp
  <table border="1px" cellspacing="0px" cellpadding="10px" width="500px" height="200px"><tr><td>ID</td><td>名称</td><td>单价</td><td>数量</td><td>小计</td></tr><%--循环之前,总价为0--%><c:set var="total" value="0" scope="page"></c:set><c:forEach items="${productList}" var="product"><%--forEach标签,循环一次就是一个小计!--%><tr><td>${product.id}</td><td>${product.name}</td><td>${product.price}</td><td>${product.count}</td><td>${product.price * product.count}</td></tr><c:set var="total" value="${total + product.price * product.count}" scope="page"></c:set></c:forEach><%--循环之后,计算出总价--%><tr><td colspan="5" align="right">总价:${total}元</td></tr></table>

四 jsp模式

分类model1模式   jsp+javaBeanmodel2模式   jsp+javaBean+Servlet

4.1 model1模式

jsp处理请求业务处理操作数据库显示数据javaBean封装数据
优点:开发简单
缺点:维护难,代码几乎都在jsp中
<%@ page import="org.apache.commons.dbutils.QueryRunner" %>
<%@ page import="util.JDBCUtils" %>
<%@ page import="org.apache.commons.dbutils.handlers.BeanListHandler" %>
<%@ page import="bean.Product" %>
<%@ page import="java.util.List" %>
<%@ page import="java.security.interfaces.RSAKey" %><%--Created by IntelliJ IDEA.User: EVA_01Date: 2020/4/28 0028Time: 15:13To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>jsp的model1模式</title>
</head>
<body>
<%//请求处理//业务处理//操作数据库List<Product> productList = new QueryRunner(JDBCUtils.getDataSource()).query("select * from tb_product", new BeanListHandler<Product>(Product.class));System.out.println(productList);pageContext.setAttribute("productList",productList);
//    request.getRequestDispatcher("/productList1.jsp").forward(request, response);
%><table border="1px" cellspacing="0px" cellpadding="10px" width="500px" height="200px"><tr><td>ID</td><td>名称</td><td>单价</td><td>数量</td><td>小计</td></tr><%--循环之前,总价为0--%><c:set var="total" value="0" scope="page"></c:set><c:forEach items="${productList}" var="product"><%--forEach标签,循环一次就是一个小计!--%><tr><td>${product.id}</td><td>${product.name}</td><td>${product.price}</td><td>${product.count}</td><td>${product.price * product.count}</td></tr><c:set var="total" value="${total + product.price * product.count}" scope="page"></c:set></c:forEach><%--循环之后,计算出总价--%><tr><td colspan="5" align="right">总价:${total}元</td></tr></table>
</body>
</html>

4.2 model2模式

servlet处理请求业务处理操作数据库jsp显示数据javaBean封装数据
优缺点维护方便,开发人员各司其职,有利于我们进行分工操作比较适合开发一些比较复杂项目,因为它的很多组件可以重用。开发难度增大,对开发人员要求比较高

五 BeanUtils框架

可以将请求参数封装到java对象中

5.1 开发步骤

  • 导包
        Map<String, String[]> map = request.getParameterMap();User user = new User();System.out.println(user);try {BeanUtils.populate(user,map);System.out.println(user);} catch (Exception e) {e.printStackTrace();}

页面上的name属性值要和java对象中的属性名一致

5.2 自定义BeanUtils框架

  • MyBeanUtils
public class MyBeanUtils {  /*** 将map集合中的请求参数值封装到对象t中* @param t* @param map : 键:参数名称;值:一组参数值。* @param <T>*/public static<T> void populate(T t , Map<String,? extends Object> map ){Class<?> clazz = t.getClass();Field[] fields = clazz.getDeclaredFields();for (Field field : fields) {String fieldName = field.getName();String methodName = "set"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);System.out.println(methodName);//获取对应的set方法try {Class<?> type = field.getType();Method method = clazz.getMethod(methodName, type);if (null != method) {//第二个参数:请求参数的值//id、username、password、ageObject object = map.get(fieldName);if (null != object) {String[] strs = (String[]) object;if (type.getName().equals("java.lang.Integer")) {method.invoke(t,Integer.parseInt(strs[0]));} else {method.invoke(t,strs[0]);}}}} catch (Exception e) {//                e.printStackTrace();throw new MyNoSuchMethodException("field " + fieldName + " there is no setter method!!!");}}}}
  • MyNoSuchMethodException
  public class MyNoSuchMethodException extends RuntimeException{public MyNoSuchMethodException() {}public MyNoSuchMethodException(String message) {super(message);}public MyNoSuchMethodException(String message, Throwable cause) {super(message, cause);}public MyNoSuchMethodException(Throwable cause) {super(cause);}public MyNoSuchMethodException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {super(message, cause, enableSuppression, writableStackTrace);}}


六 mvc设计模式

它是一种软件设计典范,用一种业务逻辑,数据,界面分离的方式来组织代码,将业务逻辑聚集 到一个部件中,方便程序的重复使用,提高我们的开发效率

jsp的model2模式是mvc设计模式的一种

  • 业务分工
m:   model   数据封装
v:  view    显示页面,即视图层 数据的显示 jsp
c:  controller  控制层,用于业务处理,而业务处理包含:处理请求、业务逻辑、操作数据库
存在的弊端c中的代码太多,职责不单一!需要使用到三层结构
  • 三层结构
web层:处理请求
service层:业务逻辑,业务层
dao层:操作数据库,持久层

JSP动态网页设计与JavaWeb编程相关推荐

  1. php动态网站开发 唐四薪 答案,ASP动态网页设计与Ajax技术 (唐四薪谭晓兰) pdf扫描版_IT教程网...

    <asp动态网页设计与ajax技术>全面介绍了asp动态网页设计与ajax技术,采用asp作为开发环境结合基于jquery的ajax技术,显著降低了ajax的入门难度.在叙述有关原理时安排 ...

  2. 【JavaWeb - 网页编程】八 JSP 动态网页技术

    第八章 JSP 动态网页技术 创作日期:2021-12-27 8.1 JSP 介绍         JSP(全称JavaServer Pages)是一种动态网页技术标准.JSP部署于网络服务器上,可以 ...

  3. [渝粤教育] 西南科技大学 动态网页设计(JSP) 在线考试复习资料

    动态网页设计(JSP)--在线考试复习资料 一.单选题 1.下面关于通过JDBC访问数据库哪项说明正确? A.对数据库操作一定要驱动程序 B.对数据库操作一定要DriverManager.getCon ...

  4. 【渝粤题库】陕西师范大学164111 Java及JSP动态网页编程与应用 作业 (高起专)

    <JAVA与JSP动态网页编程与应用>作业 一.单选题 1.以下哪项都是关键字( ) A.package privati protect throw B. false final fina ...

  5. web实验报告——JSP动态网页编程

    实验报告 一. 基本思路及实验结果(记录各种运行情况或页面的运行效果): 1.使用TOMCAT服务器配置jsp应用 1)打开TOMCAT/webapps子目录,创建一web应用(如myweb),将ex ...

  6. PHP+MYSQL实现个人博客网站,PHP动态网页设计

    效果展示: 开发环境: 网站前台:html+div+css+js 动态技术:PHP+MYSQL 开发环境:PHPSTUDY(兼容XAMPP,WAMP,APPSERV,Laragon)等,了解区别 数据 ...

  7. JSP动态网页技术基本知识点总结

    今天学习了JSP动态网页技术的基本用法 1. 动态页面技术(  jsp )    what is jsp?  java server page   java服务器页面技术.        jsp包括了 ...

  8. 论文 计算机动态网页的制作,计算机动态网页设计中多元素应用网页设计论文(范文1)...

    <计算机动态网页设计中多元素应用[网页设计论文].doc>由会员分享,可免费在线阅读全文,更多与<计算机动态网页设计中多元素应用[网页设计论文]>相关文档资源请在帮帮文库(ww ...

  9. 计算机动态网站毕业论文,动态网页设计——花之家 毕业论文

    动态网页设计--花之家 毕业论文 (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 本科毕业论文 年 级 11 秋 专 业 计算机科学 ...

最新文章

  1. 我共享的资源,有四个上了首页的排行榜。
  2. HP QC IE11不支持( win7 64位 无法安装)解决方法
  3. 2018.1.21 数论笔记
  4. JZTK项目 驾照题库项目servlet层得到的json字符串在浏览器中 汉字部分出现问号?无法正常显示的解决方法
  5. 前端技术周刊 2019-01-21:跨端开发的三条路线
  6. java数据结构- - - -栈
  7. [Firefox] 方便实用的firefox 插件
  8. spring框架Annotation之CRUD
  9. 拓端tecdat|GIS遥感数据可视化评估:印度河流域上部的积雪面积变化
  10. 一次新业务接入联调及上线支持的出差经验小结
  11. android mp4视频下载测试地址亲测有效
  12. 新路由3 新3 NewifiD2 hanwck的老毛子固件
  13. Metric模块源码解析
  14. android恢复删除文件,如何恢复手机删除的文件
  15. raisecom msg融合网关成都电信实战分享
  16. ue4 android 插件,基于ijkplayer封装的UE4安卓播放器插件
  17. HATETRIS:故意跟你作对的俄罗斯方块游戏
  18. PPT文件不能打印是什么原因
  19. 通过python调用海康威视工业摄像头并进行图像存储,同时使用opencv实时图像显示(数据流问题已解决)
  20. 微观经济学--第4章 供给与需求的市场力量

热门文章

  1. 怎么隐藏回收站?3个方法轻松隐藏回收站!
  2. Trust Nobody
  3. 凯撒密码的自动化破解方法(适用于英文文本)
  4. mysql 游戏服务器设计_网络游戏服务器数据库设计和实现.doc
  5. “大数据拓客“破解企业市场拓展难题
  6. 墨客linux工具,Releases
  7. 两种禁止USB autosuspend的方法
  8. 卷积神经网络在图像识别上的应用介绍(一)
  9. XQuartz2.7.7 For Mac Download 实现在MAC平台执行exe文件
  10. 典型的Top K算法_找出一个数组里面前K个最大数