rr的介绍
  request是代表请求,response是响应
执行流程:
  1.浏览器发送请求
  2.服务器接受请求,创建两个对象,将请求信息封装给request,将两个对象发送给对应的servlet
  3.servlet接受请求,调用service方法,生成动态的内容,然后将内容发送给服务器
  4.服务器收到servlet的内容,拆分response,封装成响应信息,返回给浏览器
  5.浏览器解析
rr的体系结构
  在service方法中(servletrequest,servletresponse),两个都是接口
  在httpservlet中,实现了serviece方法,将上面的两个对象进行了强转
  servletrequest===>httpServletRequest
  servletresponse===>httpServletResponse
  这两个也是接口

response:响应
  response的作用:
    若想往浏览器写东西,通过response就可以实现了
  responseapi简介:
    响应的组成:
      响应行 响应头 响应体
    操作响应行
      格式:
        协议/版本 状态码 状态码的说明
         HTTP/1.1 200 OK
    操作状态码:
      setStatus(int)
      sendError(int)
      sendError(int,String)
    操作响应头:
      格式:
        key:value(多个)
    常见的方法:
      setHeader(String key,String value);
      addHeader(String key,String value);

      setIntHeader(String key,int value);
      addIntHeader(String key,int value);

      setDateHeader(String key,long date);
      addDateHeader(String key,long date);
    操作响应体:
      响应体:页面上要展示的内容
      常见的方法:
        getWriter()
        getOutputStream()
  api详解:
    操作响应行:
      格式:
        协议/版本 状态码 状态码的说明
      常见的状态码:
        1xx:请求完成,正在处理
        2xx:响应成功
        3xx:还需浏览器进一步操作
          302:跳转(重定向,和location配合使用)
          304:读缓存
        4xx:用于操作错误
          404:找不到页面
          405:没有提供该方法
        5xx:服务器的错误
          500:异常
      常见的方法:
        void setStatus(int sc):针对1xx 2xx和3xx
        void sendError(int sc):针对4xx 5xx
        void sendError(int sc,String msg):比 上面多了一个错误信息
          例如:response.sendError(404, "一不小心走丢啦"); 直接进入404页面
    操作响应头:
      格式:
        key:value(多个)
      常用的方法:
        void setHeader(String name,String value):设置头信息,若没有设置,则设置;若设置,则覆盖
        void setIntHeader(String name,String value):设置头信息,若没有设置,则设置;若设置,则覆盖
        void setDateHeader(String key,long date):设置头信息,若没有设置,则设置;若设置,则覆盖

        void addHeader(String name,String value):添加头信息,若没有,则设置,若有,则添加
        void addIntHeader(String key,int value):添加头信息,若没有,则设置,若有,则添加
        void addDateHeader(String key,long date):添加头信息,若没有,则设置,若有,则添加

    案例:
      1.重定向(配合302)
        开发中使用
        response.sendRedirect("重定向路径");☆
        例如:
          response.sendRedirect("javaee_day10/loca2");

        (理解)
        //设置状态码
        response.setStatus(302);
        //设置头信息location
        response.setHeader("location", "/javaee_day10/loca2");

public class Location1Servlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置状态码/*response.setStatus(302);//设置头信息locationresponse.setHeader("location", "/javaee_day10/loca2");*///开发中使用response.sendRedirect("/javaee_day10/loca2");System.out.println("我没零钱,你找佳佳吧。。。。");}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}public class Location2Servlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("要多少给多少。。。。。。");}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}

      2.定时刷新
        setHeader("refresh","秒数;url=跳转的路径");
        例如:
          response.setHeader("refresh","3;url=/javaee_day10/refresh2");

public class RefreshServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");response.setHeader("refresh","3;url=/javaee_day10/refresh2");response.getWriter().write("定时跳转");}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}public class Refresh2Servlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");response.getWriter().write("定时跳转成功");}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}

    

    操作响应体:
      网页展示的信息
      常用的方法:
        PrintWriter getWriter():字符输出流
        ServletOutputStream getOutputStream():字节流
      乱码的解决方案:
        1.设置响应流的编码(需要手动更改浏览器的字符编码)
          response.setCharacterEncoding("utf-8");
        2.响应头信息(不仅设置响应流的编码,而且告诉浏览器用什么编码打开,但是太长)
          setHeader("content-Type","text/html;charset=utf-8");
        3.设置响应流的编码,而且告诉浏览器用什么编码打开
          response.setContentType("text/html;charset=utf-8");☆
        4.<meta http-equiv="Content-Type" content="text/html;charset=utf-8">

       注意:
        两个流是互斥的。
        若是自己编写的内容使用字符流,若是别人的东西使用字节流。

public class PrintServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置响应编码(需要手动更改浏览器的字符编码)//response.setCharacterEncoding("utf-8");//设置响应头(不仅设置编码,而且告诉浏览器用什么编码,但是太长)//response.setHeader("content-type", "text/html;charset=utf-8");
        response.setContentType("text/html;charset=utf-8");PrintWriter writer=response.getWriter();writer.print("<table border='1'>");writer.print("<tr>");writer.print("<td>用户名</td>");writer.print("<td>password</td>");writer.print("</tr>");writer.print("<tr>");writer.print("<td>张三</td>");writer.print("<td>123abc</td>");writer.print("</tr>");writer.print("</table>");//nServletOutputStream os=response.getOutputStream();//System.out.println(os);
    }protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}

      案例:验证码(不用掌握)

public class CodeServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 使用java图形界面技术绘制一张图片int charNum = 4;int width = 30 * 4;int height = 30;// 1. 创建一张内存图片BufferedImage bufferedImage = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);// 2.获得绘图对象Graphics graphics = bufferedImage.getGraphics();// 3、绘制背景颜色
        graphics.setColor(Color.YELLOW);graphics.fillRect(0, 0, width, height);// 4、绘制图片边框
        graphics.setColor(Color.BLUE);graphics.drawRect(0, 0, width - 1, height - 1);// 5、输出验证码内容
        graphics.setColor(Color.RED);graphics.setFont(new Font("宋体", Font.BOLD, 20));// 随机输出4个字符Graphics2D graphics2d = (Graphics2D) graphics;// String s = "ABCDEFGHGKLMNPQRSTUVWXYZ23456789";String s = "\u7684\u4e00\u4e86\u662f\u6211\u4e0d\u5728\u4eba\u4eec\u6709\u6765\u4ed6\u8fd9\u4e0a\u7740\u4e2a\u5730\u5230\u5927\u91cc\u8bf4\u5c31\u53bb\u5b50\u5f97\u4e5f\u548c\u90a3\u8981\u4e0b\u770b\u5929\u65f6\u8fc7\u51fa\u5c0f\u4e48\u8d77\u4f60\u90fd\u628a\u597d\u8fd8\u591a\u6ca1\u4e3a\u53c8\u53ef\u5bb6\u5b66\u53ea\u4ee5\u4e3b\u4f1a\u6837\u5e74\u60f3\u751f\u540c\u8001\u4e2d\u5341\u4ece\u81ea\u9762\u524d\u5934\u9053\u5b83\u540e\u7136\u8d70\u5f88\u50cf\u89c1\u4e24\u7528\u5979\u56fd\u52a8\u8fdb\u6210\u56de\u4ec0\u8fb9\u4f5c\u5bf9\u5f00\u800c\u5df1\u4e9b\u73b0\u5c71\u6c11\u5019\u7ecf\u53d1\u5de5\u5411\u4e8b\u547d\u7ed9\u957f\u6c34\u51e0\u4e49\u4e09\u58f0\u4e8e\u9ad8\u624b\u77e5\u7406\u773c\u5fd7\u70b9\u5fc3\u6218\u4e8c\u95ee\u4f46\u8eab\u65b9\u5b9e\u5403\u505a\u53eb\u5f53\u4f4f\u542c\u9769\u6253\u5462\u771f\u5168\u624d\u56db\u5df2\u6240\u654c\u4e4b\u6700\u5149\u4ea7\u60c5\u8def\u5206\u603b\u6761\u767d\u8bdd\u4e1c\u5e2d\u6b21\u4eb2\u5982\u88ab\u82b1\u53e3\u653e\u513f\u5e38\u6c14\u4e94\u7b2c\u4f7f\u5199\u519b\u5427\u6587\u8fd0\u518d\u679c\u600e\u5b9a\u8bb8\u5feb\u660e\u884c\u56e0\u522b\u98de\u5916\u6811\u7269\u6d3b\u90e8\u95e8\u65e0\u5f80\u8239\u671b\u65b0\u5e26\u961f\u5148\u529b\u5b8c\u5374\u7ad9\u4ee3\u5458\u673a\u66f4\u4e5d\u60a8\u6bcf\u98ce\u7ea7\u8ddf\u7b11\u554a\u5b69\u4e07\u5c11\u76f4\u610f\u591c\u6bd4\u9636\u8fde\u8f66\u91cd\u4fbf\u6597\u9a6c\u54ea\u5316\u592a\u6307\u53d8\u793e\u4f3c\u58eb\u8005\u5e72\u77f3\u6ee1\u65e5\u51b3\u767e\u539f\u62ff\u7fa4\u7a76\u5404\u516d\u672c\u601d\u89e3\u7acb\u6cb3\u6751\u516b\u96be\u65e9\u8bba\u5417\u6839\u5171\u8ba9\u76f8\u7814\u4eca\u5176\u4e66\u5750\u63a5\u5e94\u5173\u4fe1\u89c9\u6b65\u53cd\u5904\u8bb0\u5c06\u5343\u627e\u4e89\u9886\u6216\u5e08\u7ed3\u5757\u8dd1\u8c01\u8349\u8d8a\u5b57\u52a0\u811a\u7d27\u7231\u7b49\u4e60\u9635\u6015\u6708\u9752\u534a\u706b\u6cd5\u9898\u5efa\u8d76\u4f4d\u5531\u6d77\u4e03\u5973\u4efb\u4ef6\u611f\u51c6\u5f20\u56e2\u5c4b\u79bb\u8272\u8138\u7247\u79d1\u5012\u775b\u5229\u4e16\u521a\u4e14\u7531\u9001\u5207\u661f\u5bfc\u665a\u8868\u591f\u6574\u8ba4\u54cd\u96ea\u6d41\u672a\u573a\u8be5\u5e76\u5e95\u6df1\u523b\u5e73\u4f1f\u5fd9\u63d0\u786e\u8fd1\u4eae\u8f7b\u8bb2\u519c\u53e4\u9ed1\u544a\u754c\u62c9\u540d\u5440\u571f\u6e05\u9633\u7167\u529e\u53f2\u6539\u5386\u8f6c\u753b\u9020\u5634\u6b64\u6cbb\u5317\u5fc5\u670d\u96e8\u7a7f\u5185\u8bc6\u9a8c\u4f20\u4e1a\u83dc\u722c\u7761\u5174\u5f62\u91cf\u54b1\u89c2\u82e6\u4f53\u4f17\u901a\u51b2\u5408\u7834\u53cb\u5ea6\u672f\u996d\u516c\u65c1\u623f\u6781\u5357\u67aa\u8bfb\u6c99\u5c81\u7ebf\u91ce\u575a\u7a7a\u6536\u7b97\u81f3\u653f\u57ce\u52b3\u843d\u94b1\u7279\u56f4\u5f1f\u80dc\u6559\u70ed\u5c55\u5305\u6b4c\u7c7b\u6e10\u5f3a\u6570\u4e61\u547c\u6027\u97f3\u7b54\u54e5\u9645\u65e7\u795e\u5ea7\u7ae0\u5e2e\u5566\u53d7\u7cfb\u4ee4\u8df3\u975e\u4f55\u725b\u53d6\u5165\u5cb8\u6562\u6389\u5ffd\u79cd\u88c5\u9876\u6025\u6797\u505c\u606f\u53e5\u533a\u8863\u822c\u62a5\u53f6\u538b\u6162\u53d4\u80cc\u7ec6";Random random = new Random();//session中要用到String msg="";int x = 5;for (int i = 0; i < 4; i++) {int index = random.nextInt(132);String content = String.valueOf(s.charAt(index));msg+=content;double theta = random.nextInt(45) * Math.PI / 180;//让字体扭曲graphics2d.rotate(theta, x, 18);graphics2d.drawString(content, x, 18);graphics2d.rotate(-theta, x, 18);x += 30;}//放入sessionrequest.getSession().setAttribute("session_code", msg);// 6、绘制干扰线
        graphics.setColor(Color.GRAY);for (int i = 0; i < 5; i++) {int x1 = random.nextInt(width);int x2 = random.nextInt(width);int y1 = random.nextInt(height);int y2 = random.nextInt(height);graphics.drawLine(x1, y1, x2, y2);}// 释放资源
        graphics.dispose();// 图片输出 ImageIOImageIO.write(bufferedImage, "jpg", response.getOutputStream());}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}}

request:请求
  若想获取浏览器发送过来的请求信息,通过request即可。
  requestapi简介:
    组成部分:
      请求行 请求头 请求体
    操作请求行:
      格式:
        请求方式 请求资源路径 协议/版本
        GET /javaee_day10/print HTTP/1.1
      常用的方法:
        getMethod()
        getRequestURI()
        getProtocol()
        getQueryString()
    操作请求头:
      格式:
        key:value(多个)
      常用的方法:
        getHeader(key)
        getHeaders(key)
        getIntHeader(key)
        getDateHeader(key)
    操作请求体:
      String getParameter(key)
      String [] getParameterValues(key)
      Map<String,String[]> getParameterMap()
      Enumeration getParameterNames()
  api详解:
    操作请求行:
      格式:
        请求方式 请求资源路径 协议/版本
        GET /javaee_day10/print HTTP/1.1
    常用的方法:
      String getMethod():获取请求方式☆
      String getRequestURI():获取请求路径,不包括参数
      String getQueryString():以一个字符串形式返回所有的参数
      String getProtocol():协议/版本

      StringBuffer getRequestURL():请求的路径,不包括参数
      String getRemoteAddr():获取ip地址
      String getContentPath():获取项目名☆☆☆

    请求方式:
      post和get区别:
        1.get请求会把参数追加到地址栏中,post不会
        2.get请求参数的大小有限制,post没有
        3.get请求相对post来说不安全
        4.post有请求体,get请求没有

public class RowServlet extends HttpServlet {/**   *操作请求行   *   */protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//请求方式         getString method=request.getMethod();//uri    /javaee_day10/rowString uri=request.getRequestURI();//版本/协议    HTTP/1.1String p=request.getProtocol();//请求参数         nullString q=request.getQueryString();System.out.println(method);System.out.println(uri);System.out.println(p);System.out.println(q);System.out.println("---------------");//http://localhost:8080/javaee_day10/rowString url=request.getRequestURL().toString();//ipString ip=request.getRemoteAddr();///javaee_day10String path=request.getContextPath();System.out.println(url);System.out.println(ip);System.out.println(path);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}

    操作请求头:
      格式:
        key:value(多个)
      常用的方法:
        String getHeader(String name):返回单一的值 ☆
        Enumeration getHeaders(String name):返回的一个key对应的多个值 hobby=eat hobby=sleep
        Enumeration getHeaderNames():返回的是所有的请求头的key

        int getIntHeader(String name):返回int
        long getDateHeader(String name)

public class HeaderServlet extends HttpServlet {/**   *操作请求头    */  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取单一的值String ref=request.getHeader("referer");System.out.println(ref);System.out.println("----------------s");//获取所有的值Enumeration names=request.getHeaderNames();while(names.hasMoreElements()){System.out.println(names.nextElement());}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}

案例:

模拟防盗链:(操作请求头)
public class RefererServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取referer头String ref=request.getHeader("referer");//判断if(ref==null){System.out.println("地址栏输入的可放过。。。");}else if(ref.startsWith("http://localhost")){System.out.println("自己玩的挺好。。。。");}else if(ref.startsWith("183.67.249.242")){System.out.println("亲们点的");}else{System.out.println("来源不详,阻止");}}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {}
}

    操作请求体:
      常用的方法:
        String getParameter(String name):返回的是指定参数的单一值☆
        String[] getParameterValues(String name):返回的指定参数的所有值☆
        Map<String,String[]> getParameterMap():将所有的参数和值通过map的形式返回☆

        Enumeration getParameterNames():返回的所有参数的名称
        post提交 请求体中的格式:
          username=lisi&password=moujinling&hobby=eat&hobby=play
      请求乱码:
        原因:
          参数会使用utf-8进行编码,但是提交到tomcat7服务器用的是iso8859-1进行解码。所以出现乱码
        解决:
          先使用iso8859-1进行编码,然后通过utf-8进行解码。
        方案:
          1.get和post通用的方法
            new String(username.getBytes("iso8859-1"),"utf-8");
          2.针对于post请求,可以使用如下代码
            request.setCharacterEncoding("utf-8"); 设置从request中取得的值或从数据库中取出的值

案例:(表单提交)

  获取请求参数:

    假如index.jsp中有超链接:<a href="/javaee_day10/param?username=zhangsan&password=1234&hobby=eat&hobby=sleep">请求参数</a></br>

public class ParamServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException {request.setCharacterEncoding("utf-8");//获取usernameString username=request.getParameter("username");System.out.println(username);System.out.println("--------------");//获取hobbyString[] hobby=request.getParameterValues("hobby");System.out.println(Arrays.toString(hobby));System.out.println("---------------");//获取所有的参数和值Map<String,String[]> map=request.getParameterMap();Set<String> keySet=map.keySet();Iterator<String>  it=keySet.iterator();while(it.hasNext()){String key=it.next();String [] value=map.get(key);for(int i=0;i<value.length;i++){System.out.println(key+":::"+map.get(key)[i]);}}System.out.println("------------");//获取所有的参数名称(枚举)Enumeration names=request.getParameterNames();while(names.hasMoreElements()){System.out.println(names.nextElement());}}protected void doPost(HttpServletRequest request, HttpServletResponse response){}
}

  

  域对象:request
    常用方法:
      xxxAttribute()
    生命周期:
      从一次请求开始,到响应结束之前
    请求转发:
      request.getRequestDispatcher("内部路径").forward(request,response);
    内部路径的写法:
      配置文件里的servlet的路径

请求转发和重定向的区别:
  1.请求转发是服务器内部跳转,地址栏不会发生改变。
    重定向地址栏会发生改变
  2.请求转发,只有一次请求,一次响应。
    重定向,有两次请求,两次响应
  3.请求转发存在request域对象,可以共享数据
    重定向不存在request域
  4.请求转发只能在服务器内部跳转,简单说,只能访问本站内资源。
    重定向可以访问站外资源,也可以访问站内资源
  5.请求转发是有request发起的,request.getRequestDispatcher().forward()
    重定向是由response发起的,response.sendRedirect();
  6.请求转发与 重定向时路径写法不一样。
    重定向要跳转的路径是从浏览器法切,是浏览器端路径,写法:/工程名/资源
    请求转发是服务器内部跳转,这时它与浏览器无关,写法:/资源

案例(理解请求转发):

public class Dis1Servlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//提示信息System.out.println("你借多少"+request.getParameter("money")+"....稍等");request.setAttribute("借钱人", "滔滔");//我找佳佳借钱request.getRequestDispatcher("/dis2").forward(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {}
}public class Dis2Servlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(request.getParameter("money"));System.out.println("借给你1000"+request.getAttribute("借钱人"));}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {}
}

请求包含:Servlet(源组件)把其他Web组件(目标组件)生成的响应结果包含到自身的响应结果中;

public class IncludeServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.getRequestDispatcher("/1.html").include(request, response);request.getRequestDispatcher("/2.html").include(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {}
}

转载于:https://www.cnblogs.com/syj1993/p/8419976.html

3.request response相关推荐

  1. 【错误记录】Android Studio 配置 GitHub 报错 ( Can‘t login using given credentials: Request response: 401 Una )

    文章目录 一.报错信息 二.解决方案 一.报错信息 使用账号密码配置 , 出现如下错误 ; Can't login using given credentials: Request response: ...

  2. Filter若不写chain.doFilter(request,response)原Servlet路径代码不会被执行

    为什么80%的码农都做不了架构师?>>>    Filter如果不写chain.dofilter(request,response) 那么对应的Servlet URL 是不会执行的. ...

  3. 【Servlet】Request/Response/Cookie/Session中常用方法

    #1.Request package com.tcb.servlet;import java.io.IOException; import javax.servlet.ServletException ...

  4. request,response传入线程值会变为null

    request,response传入Thread线程值会变为null Exception in thread "Thread-21" java.lang.NullPointerEx ...

  5. request.getRequestDispatcher().forward(request,response)和response.sendRedirect()的区别

    在进行web开发时,跳转是最常见的,今天在这里来学习下2种跳转: 第一种是request.getRequestDispatcher().forward(request,response): 1.属于转 ...

  6. chain.doFilter(request,response)含义

    过滤器的生命周期一般都要经过下面三个阶段: 初始化 当容器第一次加载该过滤器时,init() 方法将被调用.该类在这个方法中包含了一个指向 Filter Config 对象的引用.我们的过滤器实际上并 ...

  7. response.sendRedirect(url)与request.getRequestDispatcher(url).forward(request,response)的区别

    response.sendRedirect(url)跳转到指定的URL地址,产生一个新的request,所以要传递参数只有在url后加参数,如: url?id=1. request.getReques ...

  8. Request Response

    目录 1. Request和Response的概述 2. Request对象 2.1 Request继承体系 2.2 Request获取请求数据 2.2.1 获取请求行数据 2.2.2 获取请求头数据 ...

  9. JavaWeb - Request Response

    Request & Response 1,Request和Response的概述 为什么运行项目后默认打开index.html - 是因为 tomcat 配置文件中事先配好了 ==Reques ...

最新文章

  1. linux空间共享Windows
  2. centos6.8无法安装锐速的解决方法
  3. 使用CoreOS及Docker搭建简单的SaaS云平台
  4. 和AI机器人Alice的一段聊天记录
  5. APNIC IP 库
  6. 桌面显示激活windows_愚蠢的怪胎技巧:如何在桌面上显示Windows版本
  7. Winfrom实现圆角设计
  8. RBSP、SODB、EBSP三者的区别和联系 SPS: sequence parameter sets
  9. 怎么把一个网页作为背景套在另一个网页上_设计科技公司网站背景的六个小技巧...
  10. 羊车门问题python程序_用Python实现羊车门问题
  11. Comparable 与 Comparator
  12. 面试题 35 : 复杂链表的复制
  13. 作为曾经Oracle的一员,谈谈老东家的此次裁员
  14. 史上最简明八皇后问题分析与套路总结
  15. PHP电子合同对接流程,电子合同订立程序步骤
  16. 【应急类漏洞】Linux下变种DDG挖矿病毒紧急通告及处置方法
  17. 使用EXCEL计算并绘制MACD指标
  18. 【元宇宙经济学】元宇宙经济的四要素
  19. 搭建一整套电销机器人系统需要哪些技术和资源
  20. 微型计算机中i3或i5一般指的是,酷睿i5一共有几代(i3和i5办公差别大吗)

热门文章

  1. JavaEE学习笔记之Servlet
  2. 【SpringMVC】基本概念
  3. pycharm设置编写的脚本页面长行实现自动换行(windows版)
  4. 最新Spring整合MyBatis详解教程
  5. 自动驾驶QNX,Linux,Autosar概述
  6. PyTorch数据加载处理
  7. MindInsight训练可视整体设计介绍
  8. TensorRT原理图示
  9. 使用NVIDIA GRID vPC支持视频会议和算力工具
  10. Java 遍历map