(转)HttpServletResquest对象
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。
1. Request 常用方法
1.1 获得客户机信息
1 getRequestURL方法返回客户端发出请求时的完整URL。
2 getRequestURI方法返回请求行中的资源名部分。
3 getQueryString 方法返回请求行中的参数部分。
4 getPathInfo方法返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头。
5 getRemoteAddr方法返回发出请求的客户机的IP地址。
6 getRemoteHost方法返回发出请求的客户机的完整主机名。
7 getRemotePort方法返回客户机所使用的网络端口号。
8 getLocalAddr方法返回WEB服务器的IP地址。
9 getLocalName方法返回WEB服务器的主机名。
实例:通过request对象获取客户机信息
1 package gacl.request.study;
2 import java.io.IOException;
3 import java.io.PrintWriter;
4 import javax.servlet.ServletException;
5 import javax.servlet.http.HttpServlet;
6 import javax.servlet.http.HttpServletRequest;
7 import javax.servlet.http.HttpServletResponse;
8 /**
9 * @author10 * 通过request对象获取客户端请求信息
11 */
12 public class RequestDemo01 extends HttpServlet {
13
14 public void doGet(HttpServletRequest request, HttpServletResponse response)
15 throws ServletException, IOException {
16 /**
17 * 1.获得客户机信息
18 */
19 String requestUrl = request.getRequestURL().toString();//得到请求的URL地址
20 String requestUri = request.getRequestURI();//得到请求的资源
21 String queryString = request.getQueryString();//得到请求的URL地址中附带的参数
22 String remoteAddr = request.getRemoteAddr();//得到来访者的IP地址
23 String remoteHost = request.getRemoteHost();
24 int remotePort = request.getRemotePort();
25 String remoteUser = request.getRemoteUser();
26 String method = request.getMethod();//得到请求URL地址时使用的方法
27 String pathInfo = request.getPathInfo();
28 String localAddr = request.getLocalAddr();//获取WEB服务器的IP地址
29 String localName = request.getLocalName();//获取WEB服务器的主机名
30 response.setCharacterEncoding("UTF-8");//设置将字符以"UTF-8"编码输出到客户端浏览器
31 //通过设置响应头控制浏览器以UTF-8的编码显示数据,如果不加这句话,那么浏览器显示的将是乱码
32 response.setHeader("content-type", "text/html;charset=UTF-8");
33 PrintWriter out = response.getWriter();
34 out.write("获取到的客户机信息如下:");
35 out.write("<hr/>");
36 out.write("请求的URL地址:"+requestUrl);
37 out.write("<br/>");
38 out.write("请求的资源:"+requestUri);
39 out.write("<br/>");
40 out.write("请求的URL地址中附带的参数:"+queryString);
41 out.write("<br/>");
42 out.write("来访者的IP地址:"+remoteAddr);
43 out.write("<br/>");
44 out.write("来访者的主机名:"+remoteHost);
45 out.write("<br/>");
46 out.write("使用的端口号:"+remotePort);
47 out.write("<br/>");
48 out.write("remoteUser:"+remoteUser);
49 out.write("<br/>");
50 out.write("请求使用的方法:"+method);
51 out.write("<br/>");
52 out.write("pathInfo:"+pathInfo);
53 out.write("<br/>");
54 out.write("localAddr:"+localAddr);
55 out.write("<br/>");
56 out.write("localName:"+localName);
57 }
58
59 public void doPost(HttpServletRequest request, HttpServletResponse response)
60 throws ServletException, IOException {
61 doGet(request, response);
62 }
63
64 }
1.2 获得客户机请求头
1 getHeader(string name)方法:String
2 getHeaders(String name)方法:Enumeration
3 getHeaderNames()方法
实例:
package gacl.request.study;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author
* 获取客户端请求头信息
* 客户端请求头:
*
*/
public class RequestDemo02 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");//设置将字符以"UTF-8"编码输出到客户端浏览器
//通过设置响应头控制浏览器以UTF-8的编码显示数据
response.setHeader("content-type", "text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
Enumeration<String> reqHeadInfos = request.getHeaderNames();//获取所有的请求头
out.write("获取到的客户端所有的请求头信息如下:");
out.write("<hr/>");
while (reqHeadInfos.hasMoreElements()) {
String headName = (String) reqHeadInfos.nextElement();
String headValue = request.getHeader(headName);//根据请求头的名字获取对应的请求头的值
out.write(headName+":"+headValue);
out.write("<br/>");
}
out.write("<br/>");
out.write("获取到的客户端Accept-Encoding请求头的值:");
out.write("<hr/>");
String value = request.getHeader("Accept-Encoding");//获取Accept-Encoding请求头对应的值
out.write(value); Enumeration<String> e = request.getHeaders("Accept-Encoding");
while (e.hasMoreElements()) {
String string = (String) e.nextElement();
System.out.println(string);
}
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
} }
1.3 获得客户机请求参数(客户端提交的数据)
1 getParameter(String)方法(常用)
2 getParameterValues(String name)方法(常用)
3 getParameterNames()方法(不常用)
4 getParameterMap()方法(编写框架时常用)
实例:
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
3 <html>
4 <head>
5 <title>Html的Form表单元素</title>
6 </head>
7 <fieldset style="width:500px;">
8 <legend>Html的Form表单元素</legend>
9 <!--form表单的action属性规定当提交表单时,向何处发送表单数据,method属性指明表单的提交方式,分为get和post,默认为get-->
10 <form action="${pageContext.request.contextPath}/servlet/RequestDemo03" method="post">
11 <!--输入文本框,SIZE表示显示长度,maxlength表示最多输入长度-->
12 编 号(文本框):
13 <input type="text" name="userid" value="NO." size="2" maxlength="2"><br>
14 <!--输入文本框,通过value指定其显示的默认值-->
15 用户名(文本框):<input type="text" name="username" value="请输入用户名"><br>
16 <!--密码框,其中所有输入的内容都以密文的形式显示-->
17 密 码(密码框):
18 <!-- 表示的是一个空格-->
19 <input type="password" name="userpass" value="请输入密码"><br>
20 <!--单选按钮,通过checked指定默认选中,名称必须一样,其中value为真正需要的内容-->
21 性 别(单选框):
22 <input type="radio" name="sex" value="男" checked>男
23 <input type="radio" name="sex" value="女">女<br>
24 <!--下拉列表框,通过<option>元素指定下拉的选项-->
25 部 门(下拉框):
26 <select name="dept">
27 <option value="技术部">技术部</option>
28 <option value="销售部" SELECTED>销售部</option>
29 <option value="财务部">财务部</option>
30 </select><br>
31 <!--复选框,可以同时选择多个选项,名称必须一样,其中value为真正需要的内容-->
32 兴 趣(复选框):
33 <input type="checkbox" name="inst" value="唱歌">唱歌
34 <input type="checkbox" name="inst" value="游泳">游泳
35 <input type="checkbox" name="inst" value="跳舞">跳舞
36 <input type="checkbox" name="inst" value="编程" checked>编程
37 <input type="checkbox" name="inst" value="上网">上网
38 <br>
39 <!--大文本输入框,宽度为34列,高度为5行-->
40 说 明(文本域):
41 <textarea name="note" cols="34" rows="5">
42 </textarea>
43 <br>
44 <!--隐藏域,在页面上无法看到,专门用来传递参数或者保存参数-->
45 <input type="hidden" name="hiddenField" value="hiddenvalue"/>
46 <!--提交表单按钮,当点击提交后,所有填写的表单内容都会被传输到服务器端-->
47 <input type="submit" value="提交(提交按钮)">
48 <!--重置表单按钮,当点击重置后,所有表单恢复原始显示内容-->
49 <input type="reset" value="重置(重置按钮)">
50 </form>
51 <!--表单结束-->
52 </fieldset>
53 </body>
54 <!--完结标记-->
55 </html>
56 <!--完结标记-->
在服务器端使用getParameter方法和getParameterValues方法接收表单参数,代码如下:
1 package gacl.request.study;
2 import java.io.IOException;
3 import java.text.MessageFormat;
4 import javax.servlet.ServletException;
5 import javax.servlet.http.HttpServlet;
6 import javax.servlet.http.HttpServletRequest;
7 import javax.servlet.http.HttpServletResponse;
8 /**
9 * @author gacl
10 * 获取客户端通过Form表单提交上来的参数
11 */
12 public class RequestDemo03 extends HttpServlet {
13
14 public void doGet(HttpServletRequest request, HttpServletResponse response)
15 throws ServletException, IOException {
16 //客户端是以UTF-8编码提交表单数据的,所以需要设置服务器端以UTF-8的编码进行接收,否则对于中文数据就会产生乱码
17 request.setCharacterEncoding("UTF-8");
18 /**
19 * 编 号(文本框):
20 <input type="text" name="userid" value="NO." size="2" maxlength="2">
21 */
22 String userid = request.getParameter("userid");//获取填写的编号,userid是文本框的名字,<input type="text" name="userid">
23 /**
24 * 用户名(文本框):<input type="text" name="username" value="请输入用户名">
25 */
26 String username = request.getParameter("username");//获取填写的用户名
27 /**
28 * 密 码(密码框):<input type="password" name="userpass" value="请输入密码">
29 */
30 String userpass = request.getParameter("userpass");//获取填写的密码
31 String sex = request.getParameter("sex");//获取选中的性别
32 String dept = request.getParameter("dept");//获取选中的部门
33 //获取选中的兴趣,因为可以选中多个值,所以获取到的值是一个字符串数组,因此需要使用getParameterValues方法来获取
34 String[] insts = request.getParameterValues("inst");
35 String note = request.getParameter("note");//获取填写的说明信息
36 String hiddenField = request.getParameter("hiddenField");//获取隐藏域的内容
37
38 String instStr="";
39 /**
40 * 获取数组数据的技巧,可以避免insts数组为null时引发的空指针异常错误!
41 */
42 for (int i = 0; insts!=null && i < insts.length; i++) {
43 if (i == insts.length-1) {
44 instStr+=insts[i];
45 }else {
46 instStr+=insts[i]+",";
47 }
48 }
49
50 String htmlStr = "<table>" +
51 "<tr><td>填写的编号:</td><td>{0}</td></tr>" +
52 "<tr><td>填写的用户名:</td><td>{1}</td></tr>" +
53 "<tr><td>填写的密码:</td><td>{2}</td></tr>" +
54 "<tr><td>选中的性别:</td><td>{3}</td></tr>" +
55 "<tr><td>选中的部门:</td><td>{4}</td></tr>" +
56 "<tr><td>选中的兴趣:</td><td>{5}</td></tr>" +
57 "<tr><td>填写的说明:</td><td>{6}</td></tr>" +
58 "<tr><td>隐藏域的内容:</td><td>{7}</td></tr>" +
59 "</table>";
60 htmlStr = MessageFormat.format(htmlStr, userid,username,userpass,sex,dept,instStr,note,hiddenField);
61
62 response.setCharacterEncoding("UTF-8");//设置服务器端以UTF-8编码输出数据到客户端
63 response.setContentType("text/html;charset=UTF-8");//设置客户端浏览器以UTF-8编码解析数据
64 response.getWriter().write(htmlStr);//输出htmlStr里面的内容到客户端浏览器显示
65 }
66
67 public void doPost(HttpServletRequest request, HttpServletResponse response)
68 throws ServletException, IOException {
69 doGet(request, response);
70 }
71 }
在服务器端使用getParameterNames方法接收表单参数,代码如下:
1 Enumeration<String> paramNames = request.getParameterNames();//获取所有的参数名
2 while (paramNames.hasMoreElements()) {
3 String name = paramNames.nextElement();//得到参数名
4 String value = request.getParameter(name);//通过参数名获取对应的值
5 System.out.println(MessageFormat.format("{0}={1}", name,value));
6 }
在服务器端使用getParameterMap方法接收表单参数,代码如下:
1 //request对象封装的参数是以Map的形式存储的
2 Map<String, String[]> paramMap = request.getParameterMap();
3 for(Map.Entry<String, String[]> entry :paramMap.entrySet()){
4 String paramName = entry.getKey();
5 String paramValue = "";
6 String[] paramValueArr = entry.getValue();
7 for (int i = 0; paramValueArr!=null && i < paramValueArr.length; i++) {
8 if (i == paramValueArr.length-1) {
9 paramValue+=paramValueArr[i];
10 }else {
11 paramValue+=paramValueArr[i]+",";
12 }
13 }
14 System.out.println(MessageFormat.format("{0}={1}", paramName,paramValue));
15 }
2. request接收表单提交中文参数乱码问题
2.1 以POST方式提交表单中文参数的乱码问题
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2
3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4 <html>
5 <head>
6 <title>request接收中文参数乱码问题</title>
7 </head>
8 <body>
9 <form action="<%=request.getContextPath()%>/servlet/RequestDemo04" method="post">
10 用户名:<input type="text" name="userName"/>
11 <input type="submit" value="post方式提交表单">
12 </form>
13 </body>
14 </html>
此时在服务器端接收中文参数时就会出现中文乱码,之所以会产生乱码,就是因为服务器和客户端沟通的编码不一致造成的,因此解决的办法是:在客户端和服务器之间设置一个统一的编码,之后就按照此编码进行数据的传输和接收。
1 public void doPost(HttpServletRequest request, HttpServletResponse response)
2 throws ServletException, IOException {
3 /**
4 * 客户端是以UTF-8编码传输数据到服务器端的,所以需要设置服务器端以UTF-8的编码进行接收,否则对于中文数据就会产生乱码
5 */
6 request.setCharacterEncoding("UTF-8");
7 String userName = request.getParameter("userName");
8 System.out.println("userName:"+userName);
9 }
2.2 以GET方式提交表单中文参数的乱码问题
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2
3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4 <html>
5 <head>
6 <title>request接收中文参数乱码问题</title>
7 </head>
8
9 <body>
10 <form action="${pageContext.request.contextPath}/servlet/RequestDemo04" method="get">
11 姓名:<input type="text" name="name"/>
12 <input type="submit" value="get方式提交表单">
13 </form>
14 </body>
15 </html>
注意,对于以get方式传输的中文数据,通过request.setCharacterEncoding("UTF-8");这种方式是解决不了中文乱码问题,对于以get方式传输的数据,request即使设置了以指定的编码接收数据也是无效的,默认的还是使用ISO8859-1这个字符编码来接收数据,客户端以UTF-8的编码传输数据到服务器端,而服务器端的request对象使用的是ISO8859-1这个字符编码来接收数据,服务器和客户端沟通的编码不一致因此才会产生中文乱码的。解决办法:在接收到数据后,先获取request对象以ISO8859-1字符编码接收到的原始数据的字节数组,然后通过字节数组以指定的编码构建字符串,解决乱码问题。代码如下:
1 public void doGet(HttpServletRequest request, HttpServletResponse response)
2 throws ServletException, IOException {
3 /**
4 *
5 * 对于以get方式传输的数据,request即使设置了以指定的编码接收数据也是无效的,默认的还是使用ISO8859-1这个字符编码来接收数据
6 */
7 String name = request.getParameter("name");//接收数据
8 name =new String(name.getBytes("ISO8859-1"), "UTF-8") ;//获取request对象以ISO8859-1字符编码接收到的原始数据的字节数组,然后通过字节数组以指定的编码构建字符串,解决乱码问题
9 System.out.println("name:"+name);
10 }
3. 以超链接形式传递中文参数的乱码问题
客户端想传输数据到服务器,可以通过表单提交的形式,也可以通过超链接后面加参数的形式,例如:
1 <a href="${pageContext.request.contextPath}/servlet/RequestDemo05?userName=gacl&name=张三">点击</a>
点击超链接,数据是以get的方式传输到服务器的,所以接收中文数据时也会产生中文乱码问题,而解决中文乱码问题的方式与上述的以get方式提交表单中文数据乱码处理问题的方式一致,如下所示:
1 String name = request.getParameter("name");
2 name =new String(name.getBytes("ISO8859-1"), "UTF-8");
另外,需要提的一点就是URL地址后面如果跟了中文数据,那么中文参数最好使用URL编码进行处理,如下所示:
1 <a href="${pageContext.request.contextPath}/servlet/RequestDemo05?userName=zhangsanl&name=<%=URLEncoder.encode("张三", "UTF-8")%>">点击</a>
4. 提交中文数据乱码问题总结
4. 1 如果提交方式为post,想不乱码,只需要在服务器端设置request对象的编码即可,客户端以哪种编码提交的,服务器端的request对象就以对应的编码接收,比如客户端是以UTF-8编码提交的,那么服务器端request对象就以UTF-8编码接收(request.setCharacterEncoding("UTF-8"))
4. 2 如果提交方式为get,设置request对象的编码是无效的,request对象还是以默认的ISO8859-1编码接收数据,因此要想不乱码,只能在接收到数据后再手工转换,步骤如下:
1).获取获取客户端提交上来的数据,得到的是乱码字符串,data="???è?????"
String data = request.getParameter("paramName");
2).查找ISO8859-1码表,得到客户机提交的原始数据的字节数组
byte[] source = data.getBytes("ISO8859-1");
3).通过字节数组以指定的编码构建字符串,解决乱码
data = new String(source, "UTF-8");
通过字节数组以指定的编码构建字符串,这里指定的编码是根据客户端那边提交数据时使用的字符编码来定的,如果是GB2312,那么就设置成data = new String(source, "GB2312"),如果是UTF-8,那么就设置成data = new String(source, "UTF-8")
5. Request对象实现请求转发
5.1 请求转发的基本概念
请求转发:指一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理。
请求转发的应用场景:MVC设计模式,在Servlet中实现请求转发的两种方式:
(1). 通过ServletContext的getRequestDispatcher(String path)方法,该方法返回一个RequestDispatcher对象,调用这个对象的forward方法可以实现请求转发。
例如:将请求转发的test.jsp页面
1 RequestDispatcher reqDispatcher =this.getServletContext().getRequestDispatcher("/test.jsp");
2 reqDispatcher.forward(request, response);
(2). 通过request对象提供的getRequestDispatche(String path)方法,该方法返回一个RequestDispatcher对象,调用这个对象的forward方法可以实现请求转发。
例如:将请求转发的test.jsp页面
1 request.getRequestDispatcher("/test.jsp").forward(request, response);
request对象同时也是一个域对象(Map容器),开发人员通过request对象在实现转发时,把数据通过request对象带给其它web资源处理。例如:请求RequestDemo06 Servlet,RequestDemo06将请求转发到test.jsp页面
1 package gacl.request.study;
2
3 import java.io.IOException;
4 import javax.servlet.ServletException;
5 import javax.servlet.http.HttpServlet;
6 import javax.servlet.http.HttpServletRequest;
7 import javax.servlet.http.HttpServletResponse;
8
9 public class RequestDemo06 extends HttpServlet {
10
11 public void doGet(HttpServletRequest request, HttpServletResponse response)
12 throws ServletException, IOException {
13
14 String data="大家好,我是孤傲苍狼,我正在总结JavaWeb";
15 /**
16 * 将数据存放到request对象中,此时把request对象当作一个Map容器来使用
17 */
18 request.setAttribute("data", data);
19 //客户端访问RequestDemo06这个Servlet后,RequestDemo06通知服务器将请求转发(forward)到test.jsp页面进行处理
20 request.getRequestDispatcher("/test.jsp").forward(request, response);
21 }
22
23 public void doPost(HttpServletRequest request, HttpServletResponse response)
24 throws ServletException, IOException {
25 doGet(request, response);
26 }
27 }
test.jsp页面代码如下:
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2
3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4 <html>
5 <head>
6 <title>Request对象实现请求转发</title>
7 </head>
8
9 <body>
10 使用普通方式取出存储在request对象中的数据:
11 <h3 style="color:red;"><%=(String)request.getAttribute("data")%></h3>
12 使用EL表达式取出存储在request对象中的数据:
13 <h3 style="color:red;">${data}</h3>
14 </body>
15 </html>
request对象作为一个域对象(Map容器)使用时,主要是通过以下的四个方法来操作
- setAttribute(String name,Object o)方法,将数据作为request对象的一个属性存放到request对象中,例如:request.setAttribute("data", data);
- getAttribute(String name)方法,获取request对象的name属性的属性值,例如:request.getAttribute("data")
- removeAttribute(String name)方法,移除request对象的name属性,例如:request.removeAttribute("data")
- getAttributeNames方法,获取request对象的所有属性名,返回的是一个,例如:Enumeration<String> attrNames = request.getAttributeNames();
5.2 请求重定向和请求转发的区别
一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理,称之为请求转发/307。
一个web资源收到客户端请求后,通知浏览器去访问另外一个web资源进行处理,称之为请求重定向/302。
(转)HttpServletResquest对象的更多相关文章
- JavaWeb温习之HttpServletResquest对象
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息. 1 ...
- servlet中的HttpServletRequest对象
HttpServletRequest对象表示客户端浏览器发起的请求,当客户端浏览器通过HTTP协议访问服务器时,Tomcat会将HTTP请求中的所有信息解析并封装在HttpServletRequest ...
- Struts2(七) Struts2访问Servlet的API
当接受表单参数,向页面保持数据时.要用到Struts访问Servlet 的API .下面只做参考,有错误或不同意见可以发送邮箱2440867831@qq.com .建议大家看struts文档,源代码 ...
- (四)Decorator设计模式解决GET/POST请求的乱码问题(转)
一.Decorator设计模式 1.1.Decorator设计模式介绍 当某个对象的方法不适应业务需求时,通常有2种方式可以对方法进行增强: 编写子类,覆盖需增强的方法. 使用Decorator设计模 ...
- JAVAEE_Servlet_14_HttpServletRequest接口以及常用方法(一)
HttpServletRequest接口 * javax.servlet.http.HttpServletRequest 接口 * 继承关系 HttpServletRequest---继承---> ...
- 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑
阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
- 探究javascript对象和数组的异同,及函数变量缓存技巧
javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...
- Asp.Net WebApi核心对象解析(下篇)
在接着写Asp.Net WebApi核心对象解析(下篇)之前,还是一如既往的扯扯淡,元旦刚过,整个人还是处于晕的状态,一大早就来处理系统BUG,简直是坑爹(好在没让我元旦赶过来该BUG),队友挖的坑, ...
随机推荐
- Improved robustness of reinforcement learning policies upon conversion to spiking neuronal network platforms applied to Atari Breakout game
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! arXiv:1903.11012v3 [cs.LG] 19 Aug 2019 Neural Networks, 25 November 2 ...
- python安装numpy、scipy、gensim以及报错unable to import 'smart_open.gcs', disabling that module处理
首先,安装gensim库,必须先安装numpy+mkl和scipy 安装顺序是依次安装numpy+kml.scipy.gensim,根据自己Python下载的版本进行下载 如果你的库里面有numpy. ...
- python自动化测试中的数据驱动unittest+ddt
ddt是一个unittest的插件,用来实现uniitest的数据驱动 本文以python自动化测试中的数据驱动为原则,记录学习ddt的过程 一.数据的传递规则
- [PyTorch 学习笔记] 3.1 模型创建步骤与 nn.Module
本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson3/module_containers.py 这篇文章来看下 ...
- springboot-ssm的pom.xml
springboot-ssm的pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&qu ...
- 数字电路基础(三)TTL与非门输入端接电压表的示数
如下图所示,当ui输入低电平,电压表示数为0.3v,当ui输入高电平时,电压表示数为1.4v,分析如下 当ui=0.3 此时VT1导通,电流都从输入端流出,VT1的基极电位被钳位在1.0v(Ub1=0 ...
- Infinite Inversions(树状数组+离散化)
思路及代码参考:https://blog.csdn.net/u014800748/article/details/45420085 There is an infinite sequence cons ...
- Ubuntu 20.04 手动安装 sublime_text 并建立搜索栏图标(解决 Ubuntu 20.04 桌面图标无法双击打开问题)
下载sublime_text_3离线程序包 wget https://download.sublimetext.com/sublime_text_3_build_3211_x64.tar.bz2 #x ...
- 关于移动端的文本框获取焦点时导致fixed或absolute定位的按钮被手机键盘顶上去的问题
var win_h = $(window).height();//关键代码 window.addEventListener('resize', function () { if($(window).h ...
- 小程序开发-使用npm包
微信小程序引用npm包 微信小程序官方支持使用npm包,地址为 https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html 实 ...