国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html
内部邀请码:C8E245J (不写邀请码,没有现金送)
国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为中国PE第一股,市值超1000亿元。 

------------------------------------------------------------------------------------------------------------------------------------------------------------------

Web服务器常用配置
1.Web系统采用B/S结构通信的:Browser --- Server
1)浏览器向服务器发送访问目标资源请求(请求)
2)服务器根据请求的目标资源路径,在服务器端进行查找(请求查找)
3)服务器会将查找结果返回给客户端浏览器(响应)
通信结构图:

2.什么是Web服务器?
包括硬件环境和软件环境,在网络中安装web服务器软件的计算机
3.Tomcat服务器安装和配置
1)在Apache官网上下载tomcat服务器
*一般采用zip格式的(可直接解压使用)
2)解压缩tomcat
*不要使用含有空格和中文目录的文件夹
3)启动tomcat之前,配置JAVA_HOME环境变量 ---- 配置JDK安装路径
*注意JAVA_HOME使用下划线
4)启动tomcat服务器
双击bin/startup.bat(如果使用linux双击bin/startup.sh)
输入http://localhost:8080/ 访问tomcat网站主页
5)因为网站通过HTTP协议访问,HTTP协议默认端口80 ---- 修改tomcat服务器启动端口80
修改conf/server.xml
<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />  将8080修改为80
访问localhost:80端口  ----- 省略端口写法 http://localhost访问站点
4.tomcat启动问题
1)窗口一闪然后消失 ----- 编辑startup.bat,在文件末尾加入pause指令,再次运行,读取错误原因,根据原因解决
*JAVA_HOME路径必须是JDK不可以是JRE
2)端口占用问题
发现端口被占用后,通过cmd命令行,查看占用端口进程 ----  netstat –ano
在任务管理器关闭该进程
3)CATALINA_HOME环境变量
指定tomcat安装位置(该环境变量可以不配置) ----  如果配置出错,tomcat将无法启动

5.各种版本对应问题
Tomcat版本    Servlet/JSP版本    JavaEE版本    运行环境
4.1              2.3/1.2            1.3            JDK1.3
5.5              2.4/2.0            1.4            JDK1.4
6.0              2.5/2.1            5.0            JDK5.0
7.0              3.0/2.2            6.0            JDK6.0
Tomcat 支持Servlet和JSP规范,Servlet技术属于JavaEE规范 
* 随着javaEE 版本提升 -- Servlet版本提升 --- 运行Servlet环境Tomcat版本提升 
* tomcat运行需要JDK 环境版本

如果编写 JavaEE5.0工程 需要哪个版本tomcat可以运行? 6.0 7.0

6.Tomcat目录结构
bin --- 存放tomcat启动关闭程序
conf --- 存放tomcat配置文件
lib --- tomcat运行需要jar包
logs --- tomcat日志文件
webapps --- 网站发布目录(所有网站可以发布到该目录)
work --- 存放工程运行时,产生数据文件(JSP翻译Servlet、Session持久化数据)
7.网站的标准目录结构
站点根目录
    -------  静态web资源、jsp
    -------  WEB-INF目录
                  -------  classes目录 (保存,class文件)
                  --------  lib  目录 (当前网站需要jar包) 
                  -------- web.xml (网站配置文件)
* WEB-INF目录不是必须的,没有java动态程序代码, 可以没有WEB-INF 目录
* WEB-INF目录下资源不能被浏览器直接访问
8.网站开发好后,如果想让网站被外界访问,需要将网站发布到 web服务器tomcat上 (虚拟目录映射)
Tomcat发布网站三种方式
原理:
配置<Context>元素
1)配置tomcat/conf/server.xml
在<Host name=”localhost”>内部添加<Context>元素
<Context path="/aa" docBase="C:\AA" /> ---- 为网站配置虚拟目录 /aa ------映射到 c:\AA目录
*修改server.xml 重启tomcat
2)$CATALINA_HOME/conf/[enginename]/[hostname]/xxx.xml
    tomcat/conf/Catalina/localhost/xxx.xml
    在conf下新建Catalina
在Catalina下新建 localhost
在localhost下 新建 bb.xml 
<Context docBase="C:\BB" /> --- 为什么不需要写path --- 虚拟目录就是文件名bb ,path默认/bb
*添加bb.xml,不用重启tomcat
*推荐第二种写法(不需要重启服务器,而且出错不会影响其它工程运行),尽量不要使用第一种
3)将网站复制到tomcat/webapps
*不用重启tomcat
*tomcat会根据文件夹名称,自动生成虚拟路径
9.虚拟目录?
当浏览器访问网站采用访问路径 /aa /bb /abc ----- 这些路径不一定是服务器真实存在目录,只是浏览器在访问这些路径时,映射到指定网站跟目录
10.WAR包制作?
先用压缩软件将网站制作xx.zip --- 重命名 xx.wat ---- 复制war到tomcat/webapps
11. Tomcat Manager 使用 (程序员管理已经发布到tomcat网站)
*conf/tomcat-users.xml  加入
<role rolename="manager"/>
<user username="tomcat" password="s3cret" roles="manager"/>
* 重启服务器 
* 这个功能默认不要开启 (安全问题)

12.域名解析完整过程图:

在tomcat内部同时 架设多个网站 --- 百度网站、谷歌网站 
* 虚拟主机技术  ---- 在tomcat中配置 <Host> 元素 
1)搭建tomcat中网站 --- baidu
2)在c盘 新建虚拟主机目录 baidu , 在虚拟主机目录中新建网站根目录 main , 将百度网站复制main 目录中
3)在tomcat中新建

<Host>
Host name="www.baidu.com" appBase="C:\baidu"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>

* 重启tomcat
4)修改本机hosts文件 
* win7 系统 ,将hosts文件复制到桌面修改,改后复制回去 
192.168.1.145   www.baidu.com
5)将c:\baidu\main 网站根目录 配置为缺省虚拟目录

<Context path="" docBase="main" /> 

----- 配置缺省虚拟目录 /main 省略 
http://www.baidu.com/baidu.htm ---- 访问本机百度 
6)将main目录 baidu.htm 配置 网站欢迎页面 
新建WEB-INF目录 下新建web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<welcome-file-list>
<welcome-file>baidu.htm</welcome-file>
</welcome-file-list>
</web-app>

hosts应用
1、限制用户上网 ,网站禁止访问
2、软件破解

13.缺省虚似主机 DefaultHost 
<Engine name="Catalina" defaultHost="localhost"> ----- 一个tomcat中可以配置多台虚拟主机,但是只有一台虚拟主机。客户端可以直接通过ip访问
http://www.baidu.com ---- 客户端通过域名访问
http://192.168.1.145 ---- 通过ip访问

只有缺省虚拟主机可以通过ip访问

14. MyEclipse 整合 tomcat 进行 web 程序开发 
1)配置myeclipse 内部tomcat 插件
配置tomcat6 在 window - preferences -- tomcat6 
检查JDK 版本是否符合
Launch 默认采用 debug model 
2)将tomcat插件设置为enable  浏览tomcat目录后 配置ok
3)在MyEclipse中通过插件 tomcat6 --- start  实际上 运行tomcat/bin/startup.bat 
4)在console窗口 查看tomcat日志 
* tomcat6 --- stop server 正常关闭tomcat  调用 tomcat/bin/shutdown.bat 
* 如果直接点击 myeclipse console 窗口 红色按钮 --- 强行停止tomcat

应用:
在myeclipse中编写一个web工程
1)创建web project
context root url 默认工程名 
Javaee 规范版本 
* 在使用javaee5 规范版本时,默认支持jstl技术
2)新建html 将html编辑器 设置 html editor 
window -- preference ---- general ---- editor --- File Associations 
3)发布工程到tomcat 
原理:将当前web工程复制tomcat/webapps 
* 修改 发布虚拟目录名称 --- 右键工程属性 --- myeclipse ---web ----修改Web Context-root

HTTP协议
1.HTTP协议特征
1)基于TCP传输协议
OSI七层网络体系结构
TCP是传输层协议
HTTP是应用层协议,基于TCP协议

TCP特征:三层握手
例如
A给B说话:能听到我说话吗?
B回应:我能听到,能听到我说话吗?
A回应:我也能听到

确保通信畅通 ----  数据传输不允许丢包
A给B发数据,如果B没有回应,A选择重新发送 ----- 超时
2)默认端口80
3)基于请求 – 响应模式的协议
先请求,在出现响应 ----- 请求和响应一一对应

2.两个实验
实验一 : 通过telnet 连接服务器,进行协议操作 
XP 自动安装telnet 
win7 系统 安装telnet插件 
* telnet 采用 传输层连接原理方式  通信内容必须严格按照应用层协议 
语法:telnet ip port 
1、 cmd> telnet localhost 80 
2、手动输入HTTP协议请求 
telnet乱码解决:ctrl+] 回车
3、输入协议内容
GET / HTTP/1.0
HOST: localhost
回车

实验二  : 安装Httpwatch
完成访问web页面时 http协议数据包 抓取 
3.查看网络连接过程中 http协议内容
请求内容
GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*
Accept-Language: zh
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Host: localhost
Connection: Keep-Alive

响应内容
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
ETag: W/"7347-1184876416000"
Last-Modified: Thu, 19 Jul 2007 20:20:16 GMT
Content-Type: text/html
Content-Length: 7347
Date: Sat, 09 Jun 2012 07:02:35 GMT

<?xml version="1.0" encoding="ISO-8859-1"?>

...
4.HTTP和HTML关系?
HTTP通信协议,规定数据传输格式
HTML网页设计语言,静态网页数据
HTTP 传输格式、 HTML传输内容
5.HTTP/1.0、HTTP/1.1区别?
在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源
HTTP1.1协议,运行客户端与web服务器建立连接后,在一个连接上获取多个web资源
6.一个web页面中,使用img标签引用了三幅图片,当客户端访问服务器中的这个web页面时,客户端总共会访问几次服务器,即向服务器发送了几次HTTP请求?
*三幅图片地址是否相同
如果三幅图片地址都不相同 --- 4次请求

HTTP请求
请求完整格式包括三个部分:请求行、头信息、请求体
1.请求行:请求中第一行信息 --- 包括三个部分  请求方式、资源路径、HTTP协议版本
例如:GET / HTTP/1.1
HTTP请求方式有七种:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
常用两种:GET、POST
1)客户端网页哪些是GET方式请求?哪些是POST请求
GET方式:1、用户直接在浏览器上手动输入url地址 2、<a href="url"></a> 
3、<form method="get">   *form表单默认提交方式就是get
POST方式:1、<form method="post">
2)GET提交方式和POST提交方式区别?
GET提交方式后携带数据有大小限制1K,提交数据在url上显示
*http://localhost/day04/url?username=zhangsan 格式 url?name=value&name=value&name=value... 
以?分隔url和参数,参数采用键值对格式,多个参数使用&符号分隔
POST数据在请求体重,不再url上显示,没有数据大小限制
*uesrname=zhangsang 请求体和信息头直接存在一个空行
2.头信息
Accept: text/html,image/*   ----- 客户端可以接收文件类型 text/html->HTML文件 image/* 任意格式图片
Accept-Charset: ISO-8859-1 ----- 客户端可以识别编码字符集
Accept-Encoding: gzip ----- 客户端可以识别压缩数据格式,gzip是一种压缩格式
Accept-Language:zh-cn ----- 客户端浏览器语言
Host: www.itcast.com:80  ----- 访问服务器地址 
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT ----- 该请求的资源在客户端保存最后访问时间(缓存有关)
Referer: http://www.itcast.com/index.jsp ---- 上一次请求访问页面
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) ---- 客户端浏览器类型版本 
Connection: close/Keep-Alive    ---- 该请求连接后,连接是保持还是关闭 1.0关闭 1.1保持
Date: Tue, 11 Jul 2000 18:23:51 GMT ---- 请求时间
3.请求体:存放客户端提交post请求数据
key=value&key=value&key=value ....  
例如:username=sss
4.Referer防止客户盗链数据
eg:模拟浏览器访问服务器获得refererServlet当中信息
1)URL连接 --- HTTP协议
2)Socket连接 --- TCP协议

eg:

package cn.lsl.servlet;

import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class RefererServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String referer = request.getHeader("referer"); //获得头信息
response.setContentType("text/html;charset=gbk");
if(referer == null || !referer.startsWith("http://localhost")){
//盗链
response.getWriter().println("盗链!");
return;
}else{
response.getWriter().println("XX网站欢迎您。。。。");
}
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
} }

直接输入网址,则会被当做盗链
从该网站的某个页面点进去则能正常访问

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head> <body>
<a href="referer">link</a>
</body>
</html>

模拟客户端,绕过防盗链逻辑,获得需要信息

package cn.lsl.servlet;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection; public class URLTest {
public static void main(String[] args) throws Exception {
//创建URL对象
URL url = new URL("http://localhost:8080/HTTPTest/referer");
//链接目标资源
URLConnection connection= url.openConnection();
connection.addRequestProperty("referer", "http://localhost/index.jsp");
//获得网站输入流
InputStream in = connection.getInputStream();
byte[] buf = new byte[1024];
in.read(buf); //将流数据读取buf中
for(byte b : buf){
System.out.write(b);
}
System.out.flush();
}
}

HTTP响应
响应数据 分为三个部分:状态行、头信息、响应体
1.状态行分为三个部分:HTTP协议版本、状态码、描述信息
例如:HTTP/1.1 200 OK
100~199 Informational 请求信息不足,还需要其他信息才能处理
200~299 Success 请求处理成功
300~399 Redirection 服务器已经处理完毕,客户端还需要进一步动作
400~499 Client Error 客户端错误
500~599 Server Error 服务器端错误

200 请求处理成功 302 客户端进行重定向 304 客户端访问资源没有被修改后,客户端访问本地缓存
404 访问资源不存在 500 服务器内部出错
2.响应头
Location: http://www.it315.org/index.jsp ---- 重定向地址 结合302一起使用
*重定向两次请求,两次响应
Server:apache tomcat ----- 服务器类型 
Content-Encoding: gzip ---- 设置响应数据压缩格式
*如果响应数据经过压缩,传输体积更小,性能更好
例如:
在没有压缩情况下,13605字节 http://localhost/docs/
如何设置tomcat压缩
*通过设置tomcat/conf/server.xml设置响应数据压缩
<Connector port="80" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" compressableMimeType="text/html,text/xml,text/plain" compression="on"/>
清楚浏览器缓存,重启tomcat
4244字节 http://localhost/docs
Content-Length: 80  ----- 响应数据长度
Content-Language: zh-cn  ----- 响应数据语言
Content-Type: text/html; charset=GB2312  ----- 响应数据类型
*数据类型采用Mime协议规定类型  html文件 ---- text/html、jpg文件 ---- image/jpeg
*在tomcat/conf/web.xml中查看文件mime类型
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT  ----- 和请求头信息If-Modified-Since一起使用,控制服务器缓存
* ETag: W/"13397-1184876416000" tomcat生成Etag 13397文件大小 1184876416000文件最后修改时间(精确毫秒)
* 客户端下次请求时通过If-None-Match 携带刚刚 Etag信息
Refresh: 1;url=http://www.it315.org ----- 网页自动跳转
Content-Disposition: attachment; filename=aaa.zip ----- 文件下载时指定文件附件名称
控制该程序在客户端不缓存(以下三个一起使用)
Expires: -1 
Cache-Control: no-cache  
Pragma: no-cache  
*对于动态程序,经常修改,禁止浏览器缓存内容
Connection: close/Keep-Alive   ---- 响应后连接是否关闭
Date: Tue, 11 Jul 2000 18:23:51 GMT --- 响应时间
3.响应体
通常为HTML文件内容 --- 如果设置响应体进行gzip压缩,看到gzip压缩内容

重定向:

eg:

package cn.lsl.servlet;

import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class RedirectServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setStatus(302);
response.setHeader("Location", "index.jsp"); //重定向index.jsp
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
} }

设置浏览器不缓存

eg:

package cn.lsl.servlet;

import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class NoCacheServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//需要三句禁止缓存,防止浏览器兼容问题
response.setDateHeader("expires", -1);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.getWriter().println("aabbcc");
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
} }

通过HTTP协议Range头信息,实现断点下载功能
在连接服务器目标资源进行下载过程中,传递Range头信息,指定下载目标资源部分内容  ---  实现断点下载功能
断点下载:使用URL类模拟客户端访问WebRoot/info.txt,下载文件中内容

package cn.lsl.servlet;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection; public class RangeTest {
//通过Range头信息实现断点下载
public static void main(String[] args) throws Exception {
URL url = new URL("http://localhost:8080/HTTPTest/info.txt");
URLConnection connection = url.openConnection();
//通过addRequestProperty添加头信息,Range实现断点下载
connection.addRequestProperty("Range", "bytes=100-");
InputStream in = connection.getInputStream();
OutputStream out = new FileOutputStream("download.txt");
byte[] buf = new byte[1024];
int len;
while((len = in.read(buf)) != -1){
out.write(buf, 0, len);
}
in.close();
out.close();
}
}

Tomcat服务器常用配置和HTTP简介的更多相关文章

  1. JavaEE:Tomcat服务器常用配置和HTTP简介

    Web服务器常用配置1.Web系统采用B/S结构通信的:Browser --- Server1)浏览器向服务器发送访问目标资源请求(请求)2)服务器根据请求的目标资源路径,在服务器端进行查找(请求查找 ...

  2. Tomcat服务器的配置

    本地安装的Tomcat服务器版本是 Apache Tomcat/7.0.42 启动 localhost 使用Tomcat的前提是安装了jdk,我在本地安装了jdk7.Tomcat服务器的文件目录为F: ...

  3. 整合Solr到Tomcat服务器,并配置IK分词

    好久没有接触新东西了,最新开始熟悉solr,实例展示单机环境solr整合. 整合方案一 1.下载Tomcat与solr并解压 Tomcat解压后磁盘路径为D:\program files\Tomcat ...

  4. jaee开发起步:tomcat服务器的配置

    1.将下载下来的apache-tomcat-6.0.13.zip解压到任意文件夹. (打开tomcat官网,选择下载tomcat6.x.zip版本的tomcat不需要安装,直接解压并配置一下环境变量就 ...

  5. Tomcat服务器中配置多个域名,访问不同的web项目

    先说一下在本地电脑怎么实现: 想要在一个tomcat下访问两个web项目时,可以通过添加虚拟host的方式来解决. 详细步骤如下: 1.将两个项目打包放入tomcat的webapps目录下: 2.修改 ...

  6. tomcat的常用配置

    1.解決get请求的中文乱码问题 解决办法: 首先找到tomcat路径下的apache-tomcat-7.0.52\conf文件夹,打开server.xml文件,编辑如下内容: <Connect ...

  7. tomcat的常用配置方法

    1.tomcat配置某个站点的欢迎页面的方法 2.tomcat配置虚拟目录的方法 3.tomcat配置虚拟主机的方法

  8. 启动tomcat服务器,配置CATALINA_HOME和JAVA_HOME

    遇到很多次运行startup.bat后,一个窗口一闪而过的问题,但是从来没去纠正怎样修改配置才是正确的,现在从网上查阅的资料整理如下:tomcat在启动时,会读取环境变量的信息,需要一个CATALIN ...

  9. Nginx-Http服务器常用配置

    #运行用户 user nobody; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 #error_log logs/error.log; ...

随机推荐

  1. 关于PHP的十大误解 你中了几个?

    作为开发人员,你常常会在网上看到不使用XX的理由之类的新闻.而作为最受欢迎的开源服务器端脚本语言,PHP也难逃这样的命运.殊不知,金无足赤.人无完人,再流行的语言都会存在缺点,或者是误解,因此,有些开 ...

  2. 函数(Functions)

      概念: 下面是蛮经典的解释: What Good are Functions? You might have considered the situation where you would li ...

  3. caffe简易上手指南(三)—— 使用模型进行fine tune

    之前的教程我们说了如何使用caffe训练自己的模型,下面我们来说一下如何fine tune. 所谓fine tune就是用别人训练好的模型,加上我们自己的数据,来训练新的模型.fine tune相当于 ...

  4. NFC(13)使用Android Beam技术传输文件

    注意 Android Beam技术传输文件时nfc只负责连接两个手机,而传输文件实际是用蓝牙模块.且目前接收文件功能只是系统完成,不用自写个接收程序. 传输文件相关的重要api 从Android4.1 ...

  5. Redis文档

    http://manual.csser.com/redis/connection/auth.html

  6. PHP内置的Web Server的使用

    自PHP5.4之后 PHP内置了一个Web 服务器. 让我们来看看php Web Server的简单使用: 启动php Web Server php -S localhost:8080 通过 php ...

  7. android MIPI屏 导航栏丢失

    /**************************************************************************** * android MIPI屏 导航栏丢失 ...

  8. Hibernate4.x之入门篇

    Hibernate作为一个优秀的持久化框架.ORM框架.在日常的Java开发中常常用到.本文主要通过一个简单的例子来介绍下Hibernate4.x的入门知识. 新建一个Java项目,并加入Hibern ...

  9. iOS开发之UILabel

    UILabel是iOS开发中常用的一个组件,主要用来显示内容. UILabel的主要使用如下: /*尺寸*/ CGRect labelRect = CGRectMake(100, 100, 80, 4 ...

  10. CF GYM 100703I Endeavor for perfection

    题意:有n个学习领域,每个领域有m个课程,学习第i个领域的第j个课程可以获得sij个技能点,在每个领域中选择一个课程,要求获得的n个技能点的最大值减最小值最小,输出符合要求的策略. 解法:尺取法.将课 ...