马士兵servletjsp视频教程——第二部分jsp笔记及源代码、servlet和jsp的通信
当时学servlet和jsp时,主要还是看马士兵的视频然后结合下面的这些笔记和源代码进行
当然自己也有记笔记,但是没他们整理的有条理,特此转载下!
1.最简单的JSP
HelloWorld.jsp
<html>
<head>
<title>Hello</title>
<body>
<%
out.println("Hello World!");
%>
</body>
</head>
</html>
---------------------------------------------------------------------------------------------------------------------------------------
2.JSP中的全局变量和局部变量
AccessCounts.jsp
<html>
<head>
<title>JSP Declaration</title>
</head>
<body>
<%!
// 全局变量
int accessCount = 0;
%>
<%
// 局部变量
int accessCount2 = 0;
%>
<h2>AccessCount:
<br>Overall Variable:<%= ++accessCount %>
<br>Local Variable:<%= ++accessCount2 %>
</h2>
</body>
</html>
测试结果:访问同一页面,每刷新一次,accessCount增1,accessCount2不变(每次出现一个新的局部变量)。
----------------------------------------------------------------------------------------------------------------------------------
3.注释、当前页面从URL中取背景色参数
BGColor.jsp
<html>
<head>
<title>Color Testing</title>
</head>
<!--
HTML注释
客户端可以看见
-->
<%--
JSP注释
客户端看不见
--%>
<%
//注释2
/*
注释3
*/
// 将请求中参数bgColor的值拿过来,假如没有传这个参数,则值为null
String bgColor = request.getParameter("bgColor");
boolean hasColor;
if(bgColor != null) {
hasColor = true;
} else {
hasColor = false;
bgColor = "white";
}
%>
<!--显示背景色-->
<body bgcolor="<%= bgColor%>">
<h2 align="center">Color Testing</h2>
<%
if(hasColor) {
out.println("You supplied a backgroud color of " + bgColor + ".");
} else {
out.println("Use Default backgroud color of white");
}
%>
</body>
</html>
-----------------------------------------------------------------------------------------------------------------------------
4.表达式
Expressions.jsp
<html>
<head>
<title>JSP Expressions</title>
</head>
<!--表达式-->
<body>
<h2>JSP Expressions</h2>
<UL>
<!--获取当前本地时间-->
<LI>Current Time:<%= new java.util.Date().toLocaleString() %>
<LI>Your HostName:<%= request.getRemoteHost() %>
<!--获取当前页面的SessionID-->
<LI>Your Session Id:<%= session.getId() %>
<LI>The <code>testParam</code> from parameter:<%= request.getParameter("testParam") %>
</UL>
</body>
</html>
----------------------------------------------------------------------------------------------------------------------------------------
5.@page指示语句的测试
TestDirective.jsp
<%@page import="java.util.*" %>
<%@page contentType="text/html;charset=gb2312" %>
<!--@page指示语句的测试-->
<!--将当前系统时间转变成我们本地常用的形式输出-->
<%= new Date().toLocaleString() %>
<br><br>
<%
out.println("你好!");
%>
--------------------------------------------------------------------------------------------------------------------------------
6.错误页跳转测试
①TestErr.jsp
<%@page errorPage="ErrPage.jsp" %>
<!--如果本页面出错则跳转到ErrPage.jsp页面-->
<%
String str = "123abc";
int i = Integer.parseInt(str);
out.println("str= " + str + ",i= " + i);
%>
②ErrPage.jsp
<%@page contentType="text/html;charset=gb2312" %>
<%@page isErrorPage="true" %>
<!--本页面是个错误信息显示页-->
<html>
<body text="red">
错误信息:<%= exception.getMessage()%>
</body>
</html>
-----------------------------------------------------------------------------------------------------------------------------
7.include指令”%@ include file“和include动作指令“jsp:include page”
前者是先包含进来再编译执行;后者是先各自编译执行再包含进来
①include.jsp
<html>
<head>
<title>include test</title>
</head>
<body bgcolor="white">
<font color="red">
The current time and date are:<br>
<!--先将date.jsp的内容包含进来,再一起进行转换、编译和执行-->
<%@include file="date.jsp" %><br>
<!--先将date.jsp进行转换、编译和执行,再将结果包含进来-->
<jsp:include page="date.jsp" flush="true" />
</font>
</body>
</html>
②date.jsp
<%@page import="java.util.*" %>
<%--a string representation of this date, using the locale conventions.--%>
<%= (new Date()).toLocaleString() %>
说明:以下转载自网络 http://blog.matrix.org.cn/rudy541/entry/200708162
jsp中两种包含文件的区别:
相同点:两者逗能包含一个页面
不同点:
区别1:
<jsp:include page="b.jsp" />(先执行,后包含)
此标签表示法:能动态区别加进来的是动态页面还是静态页面
对于静态页面则直接将资源包含(仅取其文本)。
对于动态页面则先处理各自资源,之后将处理过的结果包含在一起。
<%@ include file="b.jsp">
此指令表示:静态地包含页面,不管其内容如何,不过是静态页面还是动态页面都首先将页面的内容先加进来。
然后一起处理,再将所有内容发给客户端。
实例挑战:
有b.jsp页面
<%int i = 10 ;%>
<%=i%>
主界面a.jsp也有<%int i = 100 ;%> <%=i%>
如果是加载<%@ include file="b.jsp">,则是先包含后执行,就会发现报错,i被重新定义,
但如果是加载<jsp:include page="b.jsp" />则是先执行结果,然后将结果包括到主页面。不会报错。
区别2:
<jsp:include page="b.jsp" />可以分开写成:
<jsp:include page="b.jsp" >
<jsp:param name="参数名" value="参数值"/>
</jsp:include>
这样就可以传递参数。
----------------------------------------------------------------------------------------------------------------------
8.两个数的乘除运算
①Compute.html
<html>
<head>
<title>Compute</title>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
</head>
<!--两个数的乘除运算-->
<body bgcolor="#FFFFFF">
<div align="center">
<form method="post" action="Compute.jsp">
<p>选择要做的运算:
<input type="radio" name="compute" value="division" checked>
除法
<input type="radio" name="compute" value="multiplication">
乘法
</p>
<p>被除数(被乘数)
<input type="text" name="value1">
除数(乘数)
<input type="text" name="value2">
</p>
<p>
<input type="submit" name="Submit" value="计算结果">
</p>
</form>
</div>
</body>
</html>
②Compute.jsp
<%@page language="java" %>
<%@page contentType="text/html;charset=gb2312" %>
<%
// 将Compute.html页面输入的要进行计算的两个变量拿过来
String value1 = request.getParameter("value1");
String value2 = request.getParameter("value2");
%>
<% if("division".equals(request.getParameter("compute"))) { %>
<!--进行除法计算,把两个参数v1和v2先传到divide.jsp,再那边编译运行,然后把结果拿到这边显示出来-->
<jsp:include page="divide.jsp" flush="true">
<jsp:param name="v1" value="<%=value1%>"/>
<jsp:param name="v2" value="<%=value2%>"/>
</jsp:include>
<% } else { %>
<!--直接把multiply.jsp拿过来,跟本页面一起编译执行-->
<%@include file="multiply.jsp" %>
<% } %>
③multiply.jsp
<%@page contentType="text/html;charset=gb2312" %>
<html>
<head>
<title>Multiply</title>
</head>
<%--进行乘法计算的JSP--%>
<body bgcolor="#FFFFFF">
<center>
<h1>
<%
try{
float multiplicand = Float.parseFloat(request.getParameter("value1"));
float multiplicator = Float.parseFloat(request.getParameter("value2"));
double result = multiplicand*multiplicator;
out.println(multiplicand + "*" + multiplicator +" = " + result);
} catch(Exception e) {
out.println("不合法的乘数或被乘数");
}
%>
</h1>
</center>
</body>
</html>
④divide.jsp
<%@page contentType="text/html;charset=gb2312" %>
<html>
<head>
<title>Divide</title>
</head>
<%--进行除法计算的JSP--%>
<body bgcolor="#FFFFFF">
<center>
<h1>
<%
try{
float divident = Float.parseFloat(request.getParameter("v1"));
float divisor = Float.parseFloat(request.getParameter("v2"));
double result = divident/divisor;
%>
<%= result%>
<%
} catch(Exception e) {
out.println("不合法的除数或被除数");
}
%>
</h1>
</center>
</body>
</html>
----------------------------------------------------------------------------------------------------------------------------------
9.jsp:forward和response.sendRedirect
①最简单的jsp:forward
forward.jsp
<html>
<head>
<title>Forward Example</title>
</head>
<!--最终显示的是forforward.jsp中的内容-->
<body bgcolor=red>
Welcome to forward.jsp
<%--直接跳转到forforward.jsp,这两个jsp用的是同一个request--%>
<jsp:forward page="forforward.jsp" />
</body>
</html>
forforward.jsp
<html>
<head>
<title>forforward.jsp</title>
</head>
<body bgcolor=blue>
Welcome<br>
Here is forforward.jsp
</body>
</html>
②jsp:forward和response.sendRedirect的比较
forward1.jsp
<html>
<head>
<title>Forward Example</title>
</head>
<body bgcolor=red>
Welcome to forward1.jsp
<jsp:forward page="forforward1.jsp" >
<jsp:param name="name" value="m" />
<jsp:param name="oldName" value='<%= request.getParameter("name")%>' />
<jsp:param name="roles" value="manager" />
</jsp:forward>
</body>
</html>
forforward1.jsp:和forward1.jsp使用的是同一个request(服务器跳转)
<html>
<head>
<title>forforward1.jsp</title>
</head>
<body bgcolor=blue>
Welcome<br>
Here is forforward1.jsp<br>
<%= request.getParameter("name")%>
<%= request.getParameter("oldName")%>
<%= request.getParameter("roles")%>
<%= request.getParameter("address")%>
</body>
</html>
测试结果:
访问http://localhost:8888/test/forward/forward1.jsp?name=yyg&address=34527144231
结果:
Welcome
Here is forforward1.jsp
m yyg manager 34527144231
此时页面URL还是forward1.jsp,并没有跳转到forforward1.jsp,给用户的感觉还是刚才的页面在为自己服务。
说明:m 和manager 是forward1.jsp中传过来的;而yyg 和34527144231 是在URL中通过request传过来的。并且forward1.jsp中也没有address属性,这也从另一个角度说明了这两个jsp使用的是同一个request。
test.jsp:和forward1.jsp使用的是不同的request
说明:访问过http://localhost:8888/test/forward/test.jsp后,页面跳转成http://localhost:8888/test/forward/forforward1.jsp
这个过程中客户和服务器之间产生了两个request,并且test.jsp后跟参数并不能传递到forforward1.jsp(原因也很明显:两次是不同的request)
<%
response.sendRedirect("forforward1.jsp");
%>
---------------------------------------------------------------------------------------------------------------------------------------------
10.jsp:useBean
①CounterBean.java
package bean;
import java.io.Serializable;
/**
* 一个很普通的JavaBean
* @author jukey
*
*/
public class CounterBean implements Serializable {
private int count = 0;
public CounterBean() {}
public int getCount() {
count++;
return count;
}
public void setCount(int count) {
this.count = count;
}
}
②test.jsp:JSP往JavaBean中设置值,从JavaBean中拿值
<%@page import="bean.*" %>
<%--
<%
// 下面这个语句等同于<jsp:useBean id="cb" class="bean.CounterBean"></jsp:useBean>
CounterBean cb = new CounterBean();
%>
--%>
<jsp:useBean id="cb" class="bean.CounterBean">
</jsp:useBean>
<font color="red" size="5">
<%--将bean中存储的值拿出来--%>
<%= cb.getCount()%>
</font>
<!--往bean中存值-->
<jsp:setProperty name="cb" property="count" value="25" />
<%--cb.setCount(25)--%>
<!--往bean中取值-->
<jsp:getProperty name="cb" property="count" />
<%--cb.getCount()--%>
以下是Bean的4种作用范围的测试:
③page有效(仅涵盖使用JavaBean的页面)
PageBean.jsp
<jsp:useBean id="counterBean" scope="page" class="bean.CounterBean" />
<html>
<body>
<h3>CounterBean scope="page" Example</h3>
<b>count:</b> <%= counterBean.getCount()%>
<%--上下两句效果一样--%>
<jsp:getProperty name="counterBean" property="count"/>
</body>
</html>
④request有效(有效范围仅限于使用JavaBean的请求)
RequestBean.jsp
<jsp:useBean id="counterBean" scope="request" class="bean.CounterBean" />
<%--
bean.CounterBean counterBean = request.getAttribute("counterBean");
if(counterBean == null) {
counterBean = new bean.CounterBean();
request.setAttribute("counterBean",counterBean);
}
--%>
<html>
<body>
<h3>CounterBean scope="request" Example</h3>
<!--往当前request对应的bean中设置-->
<% counterBean.setCount(100); %>
<%--和RequestBean2.jsp用的是同一个request,也是同一个counterBean对象--%>
<!--测试结果是101-->
<jsp:forward page="RequestBean2.jsp" />
<%--和RequestBean2.jsp用的不是同一个request,也不是同一个counterBean对象--%>
<!--访问RequestBean.jsp,跳转到RequestBean2.jsp,因为和当前request不是同一个request-->
<!--则产生一个新的request,产生一个新的bean对象,测试结果是1而不是101-->
<%-- response.sendRedirect("RequestBean2.jsp"); --%>
</body>
</html>
RequestBean2.jsp
<jsp:useBean id="counterBean" scope="request" class="bean.CounterBean" />
<html>
<body>
<h3>CounterBean scope="request" Example</h3>
<b>count:</b> <%= counterBean.getCount()%>
</body>
</html>
⑤Session有效(有效范围在用户整个连接过程中,整个会话阶段均有效)
SessionBean.jsp
<jsp:useBean id="counterBean" scope="session" class="bean.CounterBean" />
<%--
// 这一段java代码等同于上面这句JSP语句
bean.CounterBean counterBean = session.getAttribute("counterBean");
if(counterBean == null) {
counterBean = new bean.CounterBean();
session.setAttribute("counterBean",counterBean);
}
--%>
<html>
<body>
<h3>CounterBean scope="session" Example</h3>
<b>count:</b> <%= counterBean.getCount()%>
</body>
</html>
SessionBean2.jsp
<jsp:useBean id="counterBean" scope="session" class="bean.CounterBean" />
<html>
<body>
<h3>CounterBean scope="session" Example</h3>
<b>count:</b> <%= counterBean.getCount()%>
</body>
</html>
⑥application有效(有效范围涵盖整个应用程序,也就是对整个网站都有效)
可用于作为首页访问量的计数器
ApplicationBean.jsp
<jsp:useBean id="counterBean" scope="application" class="bean.CounterBean" />
<html>
<body>
<h3>CounterBean scope="application" Example</h3>
<b>count:</b> <%= counterBean.getCount()%>
</body>
</html>
ApplicationBean2.jsp
<jsp:useBean id="counterBean" scope="application" class="bean.CounterBean" />
<html>
<body>
<h3>CounterBean scope="application" Example</h3>
<b>count:</b> <%= counterBean.getCount()%>
</body>
</html>
----------------------------------------------------------------------------------------------------------------------
11.jsp:setProperty和jsp:getProperty
①SaleEntry.jsp
<html>
<head>
<title>Using jsp:setProperty</title>
</head>
<!--销售条目(单行:商品编号、单价、数量、总价)-->
<body>
<table border=5 align="center" >
<tr><th class="title">
Using jsp:setProperty
</table>
<jsp:useBean id="entry" class="bean.SaleEntry" />
<%--从JSP向JavaBean中设值--%>
<!--通过param指定表单元素的名称,通过property指定bean的属性名称,由此建立两个变量的关联-->
<jsp:setProperty name="entry" property="itemID" value="<%= request.getParameter("itemID")%>" />
<jsp:setProperty name="entry" property="numItems" param="numItems" />
<jsp:setProperty name="entry" property="discountCode" param="discountCode" />
<br>
<table border=1 align="center" >
<tr class="colored">
<th>Item ID<th>Unit Price<th>Number Ordered<th>Total Price
<tr align="right">
<%--Jsp从JavaBean中取值--%>
<td><jsp:getProperty name="entry" property="itemID" />
<td>$<jsp:getProperty name="entry" property="itemCost" />
<td><jsp:getProperty name="entry" property="numItems" />
<td>$<jsp:getProperty name="entry" property="totalCost" />
</table>
</body>
</html>
②SaleEntry.java
package bean;
public class SaleEntry {
private String itemID = "unknown";
// 折扣
private double discountCode = 1.0;
private int numItems = 0;
public double getDiscountCode() {
return discountCode;
}
public void setDiscountCode(double discountCode) {
this.discountCode = discountCode;
}
public String getItemID() {
return itemID;
}
public void setItemID(String itemID) {
this.itemID = itemID;
}
public int getNumItems() {
return numItems;
}
public void setNumItems(int numItems) {
this.numItems = numItems;
}
// 获取单价
public double getItemCost() {
double cost;
if("a1234".equals(itemID)) {
cost = 12.99 * getDiscountCode();
} else {
cost = -99;
}
return roundToPennies(cost);
}
// 计算到分位
public double roundToPennies(double cost) {
return (Math.floor(cost * 100) / 100.0);
}
// 计算总价格
public double getTotalCost() {
return (getItemCost() * getNumItems());
}
}
-------------------------------------------------------------------------------------------------------------------------------------
12.HTML页面输入内容,提交给JSP文件,JSP将这些内容存入JavaBean,再从JavaBean中拿出来显示。
中间有个中文乱码的处理问题。
①SayHelloBean.html
<html>
<head>
<title>数据输入</title>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
</head>
<body bgcolor="#FFFFFF">
<div align="center" >
<p>请输入数据</p>
<form method="post" action="SayHelloBean.jsp" >
<p>姓名
<input type="text" name="name">
性别
<select name="sex">
<option value="先生">先生</option>
<option value="女士">女士</option>
</select>
</p>
<p>
<input type="submit" name="Submit" value="提交">
</p>
</form>
<p> </p>
<p> </p>
</div>
</body>
</html>
②SayHelloBean.jsp
<%@page language="java" import="bean.HelloBean;" %>
<%@page contentType="text/html;charset=gb2312" %>
<%--先将传过来的request中的字符编码格式设置成gbk,再取内容--%>
<% request.setCharacterEncoding("gbk"); %>
<jsp:useBean id="hello" class="bean.HelloBean" scope="request" >
<%--通过*来设置所有属性和输入参数之间的关联,struts中大量运用--%>
<jsp:setProperty name="hello" property="*" />
</jsp:useBean>
<html>
<head>
<title>HelloBean</title>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
</head>
<body bgcolor="#FFFFFF">
<p> </p>
<p align="center" >
<font size="4">欢迎
<font color="#0000FF">
<b>
<%--转码(终结解决方案):将hello对象中name属性的值用ISO8859_1编码格式以字节数组拿出,再转化成gbk格式---%>
<%--= new String(hello.getName().getBytes("ISO8859_1"),"gbk")--%>
</b>
</font>
<%--转码(终结解决方案):将hello对象中sex属性的值用ISO8859_1编码格式以字节数组拿出,再转化成gbk格式---%>
<%--= new String(hello.getSex().getBytes("ISO8859_1"),"gbk")--%>
</font>
</p>
<jsp:getProperty name="hello" property="name" />
<jsp:getProperty name="hello" property="sex" />
</body>
</html>
③HelloBean.java
package bean;
public class HelloBean {
private String name = "";
private String sex = "";
public HelloBean() {}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
Servlet和JSP的通信
(1)从JSP调用Servlet可用<jsp:forward>,请求信息自动转到Servlet
FromJspToServlet.jsp
<html>
<body bgcolor="green">
<!-- Forward to a servlet, 这个servlet存放在web-inf的servlet目录下 -->
<jsp:forward page="/servlet/ServletToJSP" />
</body>
</html>
(2)从Servlet调用JSP可以使用RequestDispatcher接口的forward(req, resp)方法,请求信息需要显示传递
ServletToJSP.java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletToJSP extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置属性并将它分发给/servlet_jsp/ServletUseJsp.jsp处理
resp.setContentType("text/html;charset=gb2312");
req.setAttribute("servletName", "ServletToJSP");
// RequestDispatcher getRequestDispatcher(String path):
// Returns a RequestDispatcher object that acts as a wrapper for the resource located at the given path.
getServletConfig().getServletContext().getRequestDispatcher("/servlet_jsp/ServletUseJsp.jsp").forward(req, resp);
}
}
(3)ServletUseJsp
<%@page contentType="text/html;charset=gb2312" %>
<html>
<meta context="text/html;charset=gb2312">
<head>
<title>Servlet使用JSP</title>
</head>
<body bgcolor="gray">
<h2>Servlet使用JSP的例子</h2>
<h2>这个页面是被Servlet调用的</h2>
</body>
</html>
说明:以上相互调用也可以直接使用sendRedirect
马士兵servletjsp视频教程——第二部分jsp笔记及源代码、servlet和jsp的通信相关推荐
- 马士兵oracle安装视频教程,马士兵oracle视频教程笔记
第一课:客户端 1. Sql Plus(客户端),命令行直接输入:sqlplus,然后按提示输入用户名,密码. 2. 从开始程序运行:sqlplus,是图形版的sqlplus. 3. http://l ...
- B站 马士兵Python 入门基础版 - 课程笔记
视频传送门:https://www.bilibili.com/video/BV1wD4y1o7AS 记得三连 文章目录 print的规则 数字类型 类型转换 Python中的运算符 链式赋值 参数赋值 ...
- B站马士兵python入门基础版详细笔记(6)
前言: 这篇文章是B站学习python入门基础班的视频的第五 六章内容,主要讲述的是列表,主要包括列表的创建,以及他的元素的增.删.查.改操作命令. 一.列表的初始化 为什么要使用列表? 列表就好比C ...
- B站马士兵python入门基础版详细笔记(4)
前言: 这篇文章是B站学习python入门基础班的视频的第四章内容,主要讲述的是if-else语句,但是不包括循环结构,循环结构在下一章笔记中有记叙 一.顺序结构 什么是顺序结构呢?比如说 '''把大 ...
- java 马士兵 io 代码分析_学习笔记-马士兵java- (IO初步)流
1. Java 流式输入/输出原理: a. 在JAVA程序中,对于数据的输入/输出操作以"流"(stream)方式进行:J2SDK 提供了各种各样的"流"类,用 ...
- 马士兵老师的多线程高并发笔记
用户态与内核态 JDK早期,synchronized 叫做重量级锁, 因为申请锁资源必须通过kernel, 系统调用 ;hello.asm ;write(int fd, const void *buf ...
- 马士兵高并发(一)笔记
一. 1.synchronized关键字锁定的是对象不是代码块,demo中锁的是object对象的实例(堆内存中) 2.锁定的对象有两种情况:①类的实例 ②类的字节码(.class) 3.关于线程安全 ...
- 【JSP笔记】第三章 JSP内置对象【上】
2019独角兽企业重金招聘Python工程师标准>>> 1.内置对象简介:JSP内置对象是WEB容器创建的一组对象,不使用new关键就可以是用的对象. <% out.print ...
- 【JSP笔记】第四章 JSP内置对象【下】
2019独角兽企业重金招聘Python工程师标准>>> 1.什么是session 表示客户端与服务器的一次会话. Web中的session指用户浏览网站时,从进入网站到浏览器关闭的这 ...
- 马士兵坦克大战学习笔记(一)
java初学者对于马士兵坦克大战的个人学习笔记及代码问题总结(第一阶段), 1.系统自动初始化了Graphics g参数 2.设计原则:高内聚,低耦合: 一个模块中的各元素之间的紧密程度越高,内聚性越 ...
最新文章
- 交叉熵比平方损失函数的优点
- 安装node-sass时出现的错误解决方案(Mac自用,也可以借鉴)
- Java命令行界面(第27部分):cli-parser
- 4-1MapReduce概述
- 用css3制作一个搜索框效果
- 网友直呼太贵!华为nova 8系列发布:麒麟985+66W快充
- 突击计划——求n的阶乘
- JS--对象的特性之一---继承性
- 计算机操作if函数,if函数怎么用【处理攻略】
- python将电视剧按收视率进行排序_2019电视剧收视率排行榜
- 干货 | 硬件设计基础60问
- 编译原理:代码生成(pcode),C语言实现
- 几百块的投影仪靠谱吗?性能怎么样?
- English trip V1 - 3.What Would you Like? Teacher:Lamb Key: would like to
- VMware安装后界面显示为英文
- 《物联网实战指南》读书笔记
- Deep Learing 记录:电影评论分类——二分类问题
- 如何让标书脱颖而出?
- 福特收购一家小型机器人公司 加速自动驾驶汽车研发
- Kafka The Definitive Guide
热门文章
- envi精度评定_利用ArcGIS+envi实现遥感分类精度评价(分层抽样法),ArcGISENVI,评估,的...
- Snipaste安装教程及软件(截图工具)
- 物联网 毕业设计——方案选择
- 【基础】PNP三极管导通条件____很具代表性
- 锂电池及其安全使用浅析《原创》
- 几何画板 html5,几何画板菜单栏
- 抓取scrapy中文文档 第一个Scrapy项目实现
- 怎么把多个excel表格合成一个_「Excel」合并多个表格,可以快速搞定啦
- python补考卷子_1819级计算机专业补考(python程序设计)_章节测验,期末考试,慕课答案查询公众号...
- 无人机系统测试软件,无人机航测软件(pix4D)