当前位置: 首页 > 编程日记 > 正文

multipart request_Request和Response

c15515fc0f5d45d2ae7ae5c553fb1c4d.png

Response讲解

7.1 Response简介

定义辅助 servlet 将响应发送到客户端的对象。servlet 容器创建 ServletResponse 对象,并将它作为参数传递给 servlet 的 service 方法。 要发送 MIME 正文响应中的二进制数据,请使用 #getOutputStream 返回的 ServletOutputStream。要发送字符数据,请使用 #getWriter 返回的 PrintWriter 对象。要混合二进制数据和文本数据,例如要创建 multipart 响应,请使用 ServletOutputStream 并手动管理字符部分。 可使用 #setCharacterEncoding 和 #setContentType 显式指定 MIME 正文响应的 charset,或使用 #setLocale 方法隐式指定它。显式指定优先于隐式指定。如果未指定 charset,则将使用 ISO-8859-1。setCharacterEncoding、setContentType 或 setLocale 方法必须在调用 getWriter 之前,并且必须在提交采用要使用的字符编码的响应之前调用。

7.2 HttpServletResponse介绍

扩展 ServletResponse 接口以提供特定于 HTTP 的发送响应功能。例如,该接口拥有访问 HTTP 头和 cookie 的方法。 客户端向服务器发起的都是HTTP协议操作,所以我们大部分使用HttpServletResponse对象作为直接操作对象!

7.3 HttpServletResponse 常用API介绍

方法名称作用setStatus(int code)设置响应状态码setHeader(name,value)设置响应信息头setCharacterEncoding(String);设置编码格式setContentType(String)设置返回数据mimetypegetWriter()获取字符输出流getOutputStream()获取字节输出流

7.4 设置返回字符编码格式

  • 方案1
    response.setCharacterEncoding()
    设置tomcat编码格式
    <html meta charset=UTF-8 ><body>编写返回的文本内容</body>
    设置浏览器解析文本内容格式
    可以解决返回字符串乱码问题,但是需要将返回的字符串封装到html代码中.操作繁琐!
  • 方案2
    response.setCharacterEncoding()
    response.setHeader("Content-type","text/html;charset=UTF-8")
    方案按相对简单,通过设置响应头告知浏览器解析字符串的编码格式!
  • 方案3
    response.setContentType("text/html;charset=UTF-8")
    利用setContentTyoe这种综合性的写法解决问题!此方法也是开发中常用的方法!方便!

7.5 Response练习

  1. 用户下载服务器图片
    public class DownLoadServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    /**
    * 别人访问我 我给你一张图片
    *
    * 1.获取图片的输入流
    * 2.response的字节输出流
    */
    //1.获取图片或者文件的输入流
    //想要或某个文件 你必须知道绝对路径
    //手段: 项目中的相对路径 去获取绝对路径
    // /吃鸡.jpg
    // /WEB-INF/classes/吃鸡.jpg
    // /WEB-INF/classes/com/itqf/servlet/吃鸡.jpg
    //ServletContext getRealPath 相对路径转成绝对路径
    String path = getServletContext().getRealPath("/吃鸡.jpg");
    System.out.println(path);
    //文件输入流
    FileInputStream stream = new FileInputStream(path);
    //xx/xx/x/x/x/x/x/x/吃鸡.jpg
    //获取文件的名字 /
    //File.separator == /
    String filename = path.substring(path.lastIndexOf(File.separator)+1);
    //IE
    // filename = URLEncoder.encode(filename,"UTF-8");
    //其他
    filename = new String(filename.getBytes("UTF-8"),"ISO-8859-1");
    //设置响应头
    //content-disposition", "attachment;filename="+filename
    //下载用的 attachment下载: filename下载文件的名字
    response.setHeader("content-disposition", "attachment;filename="+filename);
    //根据文件名字的后缀名获取类型
    String mimetype = getServletContext().getMimeType(filename);
    response.setContentType(mimetype); //下载文件的类型
    ServletOutputStream outputStream = response.getOutputStream();
    byte [] buffer = new byte [8*1024];
    int len = 0;
    while((len=stream.read(buffer)) != -1){
    outputStream.write(buffer, 0, len);
    }
    stream.close();
    }
    }
  2. 页面中添加验证码
    1. 项目中添加第三方jar包!validatecode.jar
    2. 创建返回验证码的servlet!

public class CodeServlet extends HttpServlet {

/**
* The doGet method of the servlet. <br>
* This method is called when a form has its tag value method equals to get
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.设置生成规则
/**
* width:验证码的宽度 px 像素
* height: px
* codeCount:生成验证码有几个数
* lineCount:有几根线
*/
ValidateCode code = new ValidateCode(200, 50, 6, 20);
//2.获取生成的验证码的字符串值
System.out.println(code.getCode()); //获取正确值
//3.响应写回验证图片
code.write(response.getOutputStream());
}
}

    1. 页面中使用当前servlet

<!DOCTYPE html>
<html>
<head>
<title>login.html</title>
<meta name="keywords" content="keyword1,keyword2,keyword3">
<meta name="description" content="this is my page">
<meta name="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
<form action="/Day11_Response1/servlet/LoginServlet" method="post">
<input type="text" name="username" placeholder="请输入账号!" />
<input type="submit" value="登录"/>
</form>
<img src="/Day11_Response1/servlet/CodeServlet" οnclick="changeCodes()" alt="验证码" title="验证码"/>
<a href="javascript:changeCodes()" >看不清?</a>
<script type="text/javascript">
function changeCodes(){
var img= document.getElementsByTagName("img")[0];
img.src = "/Day11_Response1/servlet/CodeServlet?r="+Math.random();
}
</script>
</body>
</html>

####第八章 Request讲解

8.1 ServletRequst介绍

定义将客户端请求信息提供给某个 servlet 的对象。servlet 容器创建 ServletRequest 对象,并将该对象作为参数传递给该 servlet 的 service 方法。

8.2 HttpServletRequest介绍

HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息。

小结: 同响应相同,客户端请求协议都是基于HTTP所以我们选用HttpServletRequest来操作用户发送过来的请求的数据!

8.3 HttpServletRequest常用API

//获取请求路径相关参数
getRequestURL方法返回客户端发出请求时的完整URL。
getRequestURI方法返回请求行中的资源名部分。
getQueryString 方法返回请求行中的参数部分。
getRemoteAddr方法返回发出请求的客户机的IP地址
getRemoteHost方法返回发出请求的客户机的完整主机名
getRemotePort方法返回客户机所使用的网络端口号
getLocalAddr方法返回WEB服务器的IP地址。
getLocalName方法返回WEB服务器的主机名
getMethod得到客户机请求方式
//获取请求头信息
getHead(name)方法 
getHeaders(String name)方法 
getHeaderNames方法 
//获取请求正文参数
getParameter(name)方法
getParameterValues(String name)方法
getParameterNames方法 
getParameterMap方法  //做框架用,非常实用
getInputStream

8.4 获取请求数据练习

           //1.测试获取请求行数据的方法和请求头的方法//1.获取请求行的方法//获取请求方式String method = request.getMethod();//获取请求的url String url = request.getRequestURL()+"";//获取uri String uri = request.getRequestURI();//获取请求的参数  getString query = request.getQueryString();//获取请求人的id String ip = request.getRemoteAddr();//获取请求的主机名String host = request.getRemoteHost();System.out.println(method+" url:"+url+" uri:"+uri+" query:"+query+" ip:"+ip+" host:"+host);//获取请求信息//全部输出  //post fixString header = request.getHeader("user-agent");if (header.contains("firefox")) {}//获取所有请求的namesEnumeration<String> headerNames = request.getHeaderNames();while (headerNames.hasMoreElements()) {String name = (String) headerNames.nextElement();//根据name获取keysEnumeration<String> headers = request.getHeaders(name);while (headers.hasMoreElements()) {String key = (String) headers.nextElement();System.out.println(name+"--->"+key);}}

8.5 封装请求参数

  • 将数据封装到实体类上
    创建一个对应的实体类!
    实体类要变量命名和变量类型都有相应的要求,要求变量名跟提交参数的key相同,变量跟参数类型形同!
public class JavaBean {private String username;private String password;private String sex;private String [] hobby;//getter/setter 
}  

原生方式进行解析

            //表单的name值和value值//key  name值  value  values值Map<String, String[]> parameterMap = request.getParameterMap();JavaBean bean = new JavaBean();Set<Entry<String, String[]>> entrySet = parameterMap.entrySet();for (Entry<String, String[]> entry : entrySet) {//entry map中的一条//username password sexString key = entry.getKey();String[] value = entry.getValue();try {PropertyDescriptor descriptor = new PropertyDescriptor(key, JavaBean.class);Method set = descriptor.getWriteMethod();/*** 参数:哪个对象的set方法* password username sex*/if (value.length == 1) {set.invoke(bean, value[0]);}else{set.invoke(bean, (Object)value);}} catch (IntrospectionException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
  • 使用Apache BeanUtils进行快速映射
    1.导入beanutils对应jar包!
    2.映射
BeanUtils.populate(bean2, request.getParameterMap());   
System.out.println(bean2);

8.6 Servlet如何处理HTTP协议

Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的HttpServletRequest对象、和代表响应的HttpServletResponse对象。
HttpServletRequest和HttpServletResponse对象即然代表请求和响应,那我们要获取客户端提交过来的数据,只需要找HttpServletRequest对象就行了。要向客户端输出数据,只需要找HttpServletResponse对象就行了

8.6.1 HttpServletRequest

HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息
获得客户端信息getRequestURL方法返回客户端发出请求时的完整URL。getRequestURI方法返回请求行中的资源名部分。getQueryString 方法返回请求行中的参数部分。getPathInfo方法返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头。getRemoteAddr方法返回发出请求的客户机的IP地址。getRemoteHost方法返回发出请求的客户机的完整主机名。getRemotePort方法返回客户机所使用的网络端口号。getLocalAddr方法返回WEB服务器的IP地址。getLocalName方法返回WEB服务器的主机名。
获得客户端请求头getHeader(string name)方法:获取指定名称的String值getHeaders(String name)方法:获取指定名称的Enumeration值getHeaderNames()方法:获取所有的请求消息头的名称
获得客户机端请求参数(客户端提交的数据)
getParameter(String)方法(常用):获取指定参数的值
getParameterValues(String name)方法(常用):获取指定参数的所有的值
getParameterNames()方法(不常用):获取所有的请求参数
getParameterMap()方法(编写框架时常用):获取所有的请求参数和对应的值

代码如下所示:

/*** Servlet implementation class RequestServlet* 演示request的各种常用方法*/
@WebServlet("/RequestServlet")
public class RequestServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public RequestServlet() {super();// TODO Auto-generated constructor stub}
​/*** @see 处理GET请求*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//编码格式//request.setCharacterEncoding("UTF-8");//获取参数方法System.out.println(request.getParameter("name"));System.out.println(Arrays.toString(request.getParameterValues("name")));System.out.println(request.getParameterMap());System.out.println(request.getParameterNames());//获取请求方法System.out.println("getMethod--->"+request.getMethod());//获取远程ip地址System.out.println(request.getRemoteAddr());//获取远程端口号System.out.println(request.getRemotePort());System.out.println(request.getRemoteHost());System.out.println(request.getRemoteUser());System.out.println("getRequestURL:"+request.getRequestURL());System.out.println("getContextPath:"+request.getContextPath());System.out.println("getServletPath--->"+request.getServletPath());System.out.println("getServerName--->"+request.getServerName());Enumeration<String> ets=request.getHeaderNames();while (ets.hasMoreElements()) {String key=ets.nextElement();System.out.println("请求消息头:key="+key+"---值:"+request.getHeader(key));}}
​/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub//doGet(request, response);}
}

8.6.2 HttpServletResponse

HttpServletResponse对象代表服务器的响应。这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法。
向客户端(浏览器)发送响应头的相关方法:addDateHeader:把给定的名字和日期值加入到响应的头部 addHeader:给定的名字和和数值加到响应的头部addIntHeader:将给定的名字和整数值加到一个相应的头部containsHeader:是否指定的响应消息头部已被设置过了setDateHeader:设置带有给定的名字和数值的响应消息头  setHeader:设置带有给定的名字和数值的响应消息头setIntHeader:设置带有给定的名字和整数值的响应消息头setContentType:设置响应内容的格式addCookie:新增Cookie
设置状态响应码:
setStatus:设置Http协议的状态响应码
负责向客户端(浏览器)发送数据的相关方法:
getOutputStream:获取输出字节流向客户端写出内容
getWriter:获取输出字符流向客户端写出内容
URL重定向:
encodeURL:可以对url进行重定向,也就是将JSESSIONID传递

代码如下所示:

/*** Servlet implementation class ResponseServlet* 演示response常用的方法*/
@WebServlet("/ResponseServlet")
public class ResponseServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public ResponseServlet() {super();// TODO Auto-generated constructor stub}
​/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//编码格式//request.setCharacterEncoding("");//设置请求内容的编码格式response.setCharacterEncoding("UTF-8");//设置响应数据的编码格式response.setStatus(404);//设置状态响应码//设置响应内容的类型和编码格式response.setContentType("text/html;charset=UTF-8");//response.getOutputStream();//获取打印字符流PrintWriter pw=response.getWriter();pw.println("困了");pw.println("站起来");pw.close();System.out.println("OK");}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}
}

相关文章:

SharePoint 客户端经常弹出Windows验证登录框问题

场景描述&#xff1a; Site工作人员UserA创建了一个Task&#xff0c;并且Assign给UserB。UserB接到来自Task List的邮件通知。这时UserA发现Assign的人错了&#xff0c;重新修改Task Item&#xff0c;将任务重新Assign给另外一个用户UserC&#xff0c;并且同时收回了UserB的访问…

SkFlattenable /Registrar/

/** \class SkFlattenableSkFlattenable is the base class for objects that need to be flattenedinto a data stream for either transport or as part of the key to thefont cache.*/ class SK_API SkFlattenable : public SkRefCnt {}以SkFlattenable为基类的对象是&…

启动 ServiceFabric Windows服务报1053

Remote Procedure Call (RPC) Locator和 Windows Firewall是否启动。 以管理员身份运行PowerShell&#xff0c;输入Unregister-ScheduledTask FabricCounters&#xff0c;然后输入Y。 到这一步基本OK了 右下角reset sf后查看是否存在 X:\SfDevCluster\Data\ImageStoreShare 文件…

Spring基础面试题(一)

Spring是什么&#xff1f;Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架&#xff0c;目的是用于简化企业应用程序的开发&#xff0c;它使得开发者只需要关心业务需求。常见的配置方式有三种&#xff1a;基于XML的配置、基于注解的配置、基于…

C#线程间操作无效: 从不是创建控件 XX 的线程访问它

转自&#xff1a;http://www.arasplm.net/index.php/zh/community/myblog/c-xx-.html 前些天做的要使用到线程的项目&#xff0c;现在和大家分享一下感受&#xff01; 以下面小列子为例&#xff0c;给出这个问题的解决办法。下面的列子是以一个计数器为列讲解的。 public Form1…

boost安装_【环境搭建】源码安装Boost

写C的话boost是必不可少的&#xff0c;本文将boost的安装过程用写成脚本&#xff0c;直接一行命令解决整个编译安装过程&#xff1a;sudo bash boost-linux-installer.sh下面是boost-linux-installer.sh的内容&#xff1a;#!/usr/bin/env bash

css新闻列表优化-突破思维新方法更利于搜索引擎

效果图如下&#xff1a; 也许你会认为这个是很简单的&#xff0c;呵呵那是因为一般写这个列表的时候用的都是时间写在前面&#xff0c;标题写在后面&#xff0c;那样对于显示来说是先有时间后有标题的&#xff0c;对搜索引擎不是很友好。 老方法大概是这样的&#xff1a; html代…

STL使用记录

1&#xff0c;map 对map实在不熟。。。赶紧记录一下用法吧。 后来再发现新的用法再补充吧 定义&#xff1a; map<int, int> m; 其中的int可以为自定义的任何类型。 m[key值类型的变量] value值&#xff1b; 但是注意如果key值是自定义的结构体的话&#xff0c;一定要重载…

Linux tcpdump命令详解与Wireshark

简介 用简单的话来定义tcpdump&#xff0c;就是&#xff1a;dump the traffic on a network&#xff0c;根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过…

dubbo yml配置_利用springboot+dubbo,构建分布式微服务,全程注解开发(一)

随着互联网的发展&#xff0c;网站应用的规模不断扩大&#xff0c;常规的垂直应用架构已无法应对&#xff0c;分布式服务架构以及流动计算架构势在必行&#xff0c;亟需一个治理系统确保架构有条不紊的演进。一、先来一张图说起 Dubbo&#xff0c;相信大家都不会陌生&#xff0…

treeview 保持选中状态

发现当treeview控件失去焦点的时候&#xff0c;会丢失选中状态的指示&#xff08;条目的蓝色背景&#xff09;。如果想要保持&#xff0c;只要设置treeview的一个属性即可&#xff1a; this.treeView1.HideSelection false; 但是&#xff0c;发现阴影很浅&#xff0c;但是聊胜…

1-2-Active Directory 域服务准备概述

参照: http://technet.microsoft.com/zh-cn/library/gg398869.aspx Active Directory 域服务准备概述 上一次修改主题&#xff1a; 2010-12-09 要为 Microsoft Lync Server 2010 部署准备 Active Directory 域服务 (AD DS)&#xff0c;必须按照特定顺序执行三个步骤。 下表介绍…

iOS----------拨打电话的3种方式

iOS实现拨打电话的方式&#xff1a;方法一、requestWithURL&#xff0c;此方法拨打前弹出提示NSMutableString * string [[NSMutableString alloc] initWithFormat:"tel:%","136****0000"];UIWebView * callWebview [[UIWebView alloc] init];[callWebvi…

linux命令 iperf-网络性能测试工具

iperf命令是一个网络性能测试工具。iperf可以测试TCP和UDP带宽质量。iperf可以测量最大TCP带宽&#xff0c;具有多种参数和UDP特性。iperf可以报告带宽&#xff0c;延迟抖动和数据包丢失。利用iperf这一特性&#xff0c;可以用来测试一些网络设备如路由器&#xff0c;防火墙&am…

SearchHit转成java对象_Java开发中最常犯的10个错误,你中招了吗?

http://www.programcreek.com/2014/05/top-10-mistakes-java-developers-make/阅读目录Array转ArrayList判断一个数组是否包含某个值在循环内部删除List中的一个元素HashTable与HashMap使用集合原始类型(raw type)访问级别ArrayList和LinkedList可变与不可变父类和子类的构造方…

hdu1160FatMouse's Speed(DP)

http://acm.hdu.edu.cn/showproblem.php?pid1160 1A 破题敲了一个多小时 最长上升子序列和最长下降子序列合起来 并把路径保留下来 题中是可以打乱顺序去找的 先按W上升或S下降排下序 再按最升和最降做 View Code 1 #include <iostream>2 #include<cstdio>3 #inc…

五、springcloud之客户端负载均衡Ribbon

一、简介 在微服务架构中&#xff0c;业务都会被拆分成一个独立的服务&#xff0c;服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式&#xff1a; 一种是ribbonrestTemplate&#xff0c; 另一种是feign。 ribbon是一个负载均衡客户端&#xff0c;可以很好…

fiddler 抓取winform wcf包

修改客户端配置<system.net> <defaultProxy> <proxy bypassonlocal"false" usesystemdefault"true" /> </defaultProxy> </system.net> 最好使用机器名替换 localhost 2 fiddler 过滤设置 3 查看抓包数据 fiddler 抓包官方说…

dhcp报文_动态地址分配DHCP,IP地址管理方式及分配原则,一分钟了解下

一、DHCP简介DHCP(Dynamic Host Configuration Protocol&#xff0c;动态主机配置协议)用来为网络设备动态地分配 IP地址等网络配置参数。DHCP 采用客户端/服务器通信模式&#xff0c;由客户端向服务器提出请求分配网络配置参数的申请&#xff0c;服务器返回为客户端分配的 IP …

不同浏览器的怪癖小结【转】

1.在设置div top,left是必须一起设置&#xff0c;否则对象消失 ,说明层postion设为fixed document.getElementById("mydiv").style.top10"px"; document.getElementById("mydiv").style.left10"px"; 在chrome下测试没有这个问题 2.获取…

成长必经的低谷已经来了么?

90年出生的我,已经在IT里面走了2年了.小时候出生在一个村落.后来一直在城市中生活着. 一开始学习时,对自己的未来充满着希望,如今,却在找工作中,不断的徘徊. 其实一开始想学习的是编写程序.这源于我一开始对网络的认识.那时候第一次接触到了电脑,记得是一台联想的台式机器,慢慢…

Go指南练习_错误

源地址 https://tour.go-zh.org/methods/20 一、题目描述 从之前的练习中复制 Sqrt 函数&#xff0c;修改它使其返回 error 值。 Sqrt 接受到一个负数时&#xff0c;应当返回一个非 nil 的错误值。复数同样也不被支持。 创建一个新的类型 type ErrNegativeSqrt float64 并为其实…

java基础编程题(1)

1、 题目&#xff1a;打印出杨辉三角形&#xff08;要求打印出10行如下图&#xff09; 11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1...... package com.jzq.test1;/*** 题目&#xff1a;打印出杨辉三角形&#xff08;要求打印出10行如下图&#x…

poj_2762,弱连通

http://poj.org/problem?id2762 这题是求弱连通 弱连通就是无向图强连通&#xff08;基图是有向图&#xff09; 思路&#xff1a;先targan缩点&#xff0c;然后这些点求最长链 也就是这些点&#xff08;缩点&#xff09;在一棵树上&#xff0c;这棵树的深度应该为强连通分量个…

tp数组转为json_数据存储—JSON

JSON文件存储JSON全称JavaScript Object Notation&#xff0c;也就是JavaScript对象标记&#xff0c;它通过对象和数组的组合来表示数据。1、对象和数组对象&#xff1a;在JavaScript中是使用花括号{}包裹起来的内容&#xff0c;数据结构为{key&#xff1a;value&#xff0c;ke…

VMWARE HOST-ONLY方式共享上网

在HOST-ONLY网络模式下&#xff0c;虚拟系统的网卡连接到宿主计算机的VMware Network Adapter VMnet1网卡上。如果要让VMware的虚拟机可以访问外网&#xff0c;则主系统必须共享网络连接。 具体操作步骤如下&#xff1a; 1. 通过网络连接&#xff0c;打开拨号连接的属性&#x…

tensorflow基于csv数据集实现多元线性回归并预测

#coding:utf8 import tensorflow as tf from sklearn import linear_model from sklearn import preprocessing import numpy as npdef read_data(file_queue):the function is to get features and label (即样本特征和样本的标签&#xff09;数据来源是csv的文件&#xff0c;…

ab测试nginx Nginx性能优化

转自&#xff1a;https://www.cnblogs.com/nulige/p/9369700.html 1.性能优化概述 在做性能优化前, 我们需要对如下进行考虑 1.当前系统结构瓶颈 观察指标压力测试2.了解业务模式 接口业务类型系统层次化结构3.性能与安全 性能好安全弱安全好性能低2.压力测试工具 1.安装压力测…

jedis使用_网易架构师心得:Springboot下使用redis踩过的坑

点击?蓝色“ 深入原理”&#xff0c;关注并“设为星标”技术干货&#xff0c;第一时间推送首先总结了redis服务端单线程工作模型&#xff0c;redis四种部署方式及使用场景&#xff0c;然后从源码的角度上&#xff0c;分析springboot在jedis和lettuce客户端下使用redis的一些坑…

【URAL】1091 Tmutarakan Exams

题意&#xff1a;取k个不同的数&#xff0c;每个数不超过s&#xff0c;问种数。 若kx1,kx2,...,kx3满足条件&#xff0c;则x1,x2,...,x3必然满足条件。 因此枚举素数容斥&#xff0c;2*3*5*7>50&#xff0c;所以枚举之多三层。 1 #include<cstdio>2 #include<cstri…