Web 阶段梳理(2019.1.9)
1.servletconfig对象:servlet自己的配置对象
在servlet里通过this.get方法获得;
可以将web.xml里的servlet 配置信息传给servlet使用
2.ServletContext对象:上下文对象;
用来让Servlet与容器对话;
所有本项目的Servlet 和jsp 都共用一个ServletContext
这个对象可以取到web.xml里的context 配置信息;
ServletContext对象通常叫做application,域对象,有范围的对象,可以再范围内任意的放数据和取数据;
对象在servlet里通过this.get方法获得;
可以通过setAttribute和个体getAttribute传递数据;
3.请求对象requset
作用:
a。获取客户端信息/获取请求头信息;
如:获取上下文路径 getContextPath(); 就是获取项目路径/名;
b。获取请求中的数据(请求参数如 username password);
c。作为请求域对象,一次完整的请求和响应;
d。请求转发和包含;
4(3.a)请求头信息:是客户端浏览器发送给服务器的一些信息;
req.getHeadName()//返回请求头名字们的枚举器
req.getHeader(//传入请求头的名字)
特别的referer头,的信息代表了本次请求来自的路径;
响应头信息:是服务器发送给客户端的一些信息,这些信息可以"建议"浏览器的行为;
5(3.b)获取请求中的请求参数:
请求参数有两种:
A:来自表单,表单组件里含有的name属性属性的组件
提交时 name=值 的方式来提交;
B: 来自超链接href路径中 ?ki=vi&ki=vi;
req.setCharacterEncoding("utf-8")//获取前设置一下字符编码
req.getparameter(//k /name)
req.getparameterMap()//当参数值是多个,比如checkbox,复选框;
resp.getWriter().write();
5(3.d)request请求对象:
转发(可以转发给静态资源或者另外的servlet):
req.getdispatcher("").forword(req.resp);
//请求获取调度器,将请求往前转发;如果转给静态页面,服务器直接转给浏览器;
请求域也可以通过 get set attribute的方式携带数据;
6.响应对象:
设置响应头(比如刷新头);
向缓冲区中写响应数据;
response.getWriter().write("3秒后页面跳转");
请求重定向(重定向的url会改变);
request.sendRedirect(requset.getcontextpath());
request.sendRedirect("https://www.baidu.com");
设置cookie文件下载;
刷新头:几秒后去新地址;
response.setContentType("text/html;charset=UTF-8");
response.setHeader("refresh","3,url="+request.getContextpath()+"/success");
7.session(会话域):用户打开一个浏览器,链接成功一个web应用,进行多次请求 和响应都处于一个会话域中。
session的销毁:关闭浏览器一段时间销毁/session不活动一定时间(最大不活动时间在web.xml)销毁;
记录登录状态:向登陆后向session域中set一个attaribute进行标识;
当一些需要用户登录的功能,就去取这个属性检查;
当注销时,把这个session属性remove掉,或者把session杀掉;
补充:session(依赖cookie,用在服务器端)和cookie(用在客户端)是两种会话保持状态;
8.JavaScript和jsp就是雷锋和雷峰塔的关系;
想把html响应回去:
我们可以通过响应对象输出流;
servlet的response.getwriter().writer()写回去,但是比较麻烦;
转发重定向可以转到一个整个页面;
以上两种只能写静态的资源;
jsp(Java server page):本质上是个servlet,由响应对象用输出流将HTML代码打回客户端浏览器;
tomcat(jsp和servlet的容器)的work目录,jsp第一次访问时,tomcat就会将jsp在work目录里变成一个类,并编译;
jsp是通过Java语言为基础进行,动态网页开发技术;
还可以跟后台的Java程序互通一些数据;
当客户端请求一个jsp(就是请求servlet,servlet给你往回写)。tomcat将其在work目录里变成一个类,并编译,用out对象写到页面;
jsp原码不修改,对象就不变更,jsp就是一个后台Java程序;
9.1jsp注释(翻译成Java类丢弃):<%-- --%>
9.2jsp脚本(在里面写Java代码):
<%
for(int i=0;i<10;i++){
out.write("aaa");
}
%>
因为jsp本身(继承)就是一个servlet,可以直接使用out内置对象;
9.3jsp表达式(原理:调用out.print( 这里面就是jsp表达式的内容,不要加分号);):
<%=(1+1+2) %>
9.4jsp声明(出现在service方法的外面,类内方法外的东西):
可以写成员变量声明。成员方法。
<%!
public int num=100;
public double show(){
return num*Math.PI;
}
%>
<%=
show()
>
再次注意,jsp表达式不要加分号;
9.5jsp编译指令:
page编译指令(跟页面属性相关(自带那行就是,部分配错误页面:添加errorpage属性=''错误页面相对路径"; 同时错误页面(可以使用exception内置对象)配上 iserrorpage=true属性),导包(比如在Java脚本中使用类,需要导包,快捷键<%page import="java.util.Date"%>))
补充:全局错误页面:配置web.xml error-page errorcode 500 location 错误页面
包含编译指令从(include包含编译指令)
静态包含:
把一个页面引过来(被包含的页面里,建议只出现要包含的内容
比如要包含一个div foot.jsp里只写 一个div);
<%@include file="foot.jsp" %>
这种情况下,不编译被包含文件为Java类;
动态包含:<jsp:include page="foot.jsp"></jsp:include>
效果一样,但是这种work目录下也编译被包含的foot.jsp
为Java文件;
导标签库编译指令(taglib导标签库编译指令)
9.6jsp动作指令:
动态包含就是;
10.复习
servlet:着重逻辑和跳转;
jsp:着重于显示;
servlet的继承体系(一个接口,两个抽象类)/生命周期/配置;
了解servletConfig对象,掌握servletContext对象;
请求和响应对象(
设置编码,获取请求参数,获取请求头信息;
设置响应头,
获取输出流输出,
)
域对象:
servletcontext(application)
session(通常在session域中共享数据)
request
jsp七个组成:
html
注释
脚本
表达式
声明
编译指令(page include)
动作指令(<jsp:>)
jsp工作原理
11.jsp内置对象和四大作用域:
jsp的九大内置对象,就是jsp转成servlet的java类后
出现在service方法里现成的一些对象;我么在jsp页面里
可以直接拿过来使用;
已经用过的:out exception
作用域:是一个范围
之前在后台servlet中用过 请求域
应用域,会话域;
jsp里又多了一个域:页面域pageContext
页面域仅在自己的页面起作用;
12.九大内置对象,是jsp页面被服务器,翻译为Java后出现在service方法里的对象
可以直接在页面使用;
pageContext:页面上下文,是服务器为为每一个页面创建的,以一敌八
request
session
application
以上四大作用域:get set remove
out
exception:只能用在错误页面里 iserrorpage
config:jsp相当于一个servlet,config相当于servletConfig,
可以取一些相关的配置;
page:翻译之后的Java类里的this指针;
response:意义不大,但在后台servlet有用
注意:pageContext。findAttribute(key)
将会自小到大的范围去作用域里去寻找属性;
13.el表达式(表达式语言) 使用条件:web版本高于2.5
el表达式(用来替代jsp脚本,表达式,行为):
从域中读属性,从对象中获取属性,也可以做一些简单的逻辑判断;
el表达式有11个内置对象;
requestScope :代表请求域里所有属性值对的集合;
<%
user u。。。
request。setattribute("user",u)
%>
${
requset。user。password
}
注意:el表达式原理,调用对象属性,默认调用getxxx方法;
${
user!=null
}
注意:当el表达式中的属性没指定作用域时,默认去调用pageContext的findAttribute(属性名)
当el表达式在四大作用域中,找不到时,不会报null;
项目名${pageContext.request.contextPath}
14.复习:
request.getparameter("name");
//1.表单组件,name属性是键 ,组件value是 值
//2.?k=v
request.getattribute()
//获取属性
15.jstl(jsp 标准标签库)
用来替代一部分的脚本和表达式
使用条件:导jar包(原理写好的Java类)
使用:先用jsp编译指令导入
<% @ taglib uri=" core" prefix="c" %>
prefix 简短字
补充:脚本是一些片段,最后都会出现在service方法里,单独用个脚本写大括号,可以的;
举例
<c:forEach begin end step ></c:forEach>
遍历集合 map 留补
16。
监听器:Listener 总共有八个监听域
监听域,是用来监听application域 session域 request域信息的;
监听的内容:有三个生命周期的监听,三个属性该改变的监听,
一个session的钝化和活化的监听,
一个对象的绑定;
使用:
实现对应接口;
httpSessionListener
servletRequestAttributeListener
可以通过重写方法,在方法里拿到时间对象,获取一些内容;
17
web info下的你登不登陆都不能直接访问,只能转过来
如果想自己弄一个访问权限(权限过滤),使用web info
过滤器 Filter,由容器管理;
作用:
//过滤器,是在请求到达服务器之前 和 响应到达客户端之前;
//请求和响应,在此被拦截,加上自己的业务逻辑,然后放行请求和响应;或者不放行;
1.可以拦截request/response,修改其中的头和数据
使用:实现Filter
接口重写方法 doFilter(){
//业务逻辑
chain.dofilter(request,response);
//将请求和响应继续往下传递;
};
配置:web.xml
<Filter>
name
class
</Filter>
<Filter-mapping>
name
<url-pattern>/*
</url-pattern>
</Filter-mapping>
或者 注解;
//敏感词汇过滤器:
先写一个敏感词汇文件
当前端textarea提交时,触发过滤器,初始化时将违规文字读入成员变量集合
过滤器内部实现一个包装类,包装request(将敏感词汇换成xx),
在过滤器的dofilter方法里,用包装request代替那个request;
18.cookie是键值对,通过响应响应回客户端浏览器,之后每次请求服务器都会携带cookie的请求头回到服务器;
cookie是服务器往浏览器所在硬盘上存储信息的手段
cookie是服务器让浏览器存放信息的技术;
session的实现,是依赖一个叫做JSESSIONID的cookie
session在禁用cookie的浏览器里,还可以使用URL重写的方式完成session
使用:
在服务器端通过响应对象,将cookie传给浏览器,之后浏览器每次访问该项目时,都会把cookie带回来;
可以使用jsp脚本 或者el表达式内置对象cookie
典型应用:记住用户名和密码
(登录时new一个用户名cookie ,一个密码cookie;
设置cookie的存活时间 setmaxAge();
将cookie加入到响应中,
response.addcookie
在页面中${cookie.Jssionid.value}获取cookie值
//其中cookie中建议不要使用中文,要使用的话要使用url编码;
)
中文cookie 创建cookie时,使用URLEncoding类编码,url编码 %f1%ed....
在使用时,进行解码;
,三十天免登录,完成session的传递;
19.
文件上传下载
文件上传:form表单的 属性必须是 encoding type:multipu。。。。。多组件的二进制
这样修改之后:在后台就无法使用request对象获取里面的任何参数 ;
编码更改了,就不能使用request.getParamter 来获取表单;
这时候可以使用阿帕奇的 file upload的jar包帮我们去转需要的请求格式;
工具类会把普通form 和文件上传 都解析为file item对象;
如果fileitem 文件组件,可以获取io流;
如果是普通组件,可以获取名和值;
//servlet后台 dopost(){
//创建硬盘文件项工厂
DiskFileItemFactory df=new DiskFileItemFactory ();
//获取文件上传对象
ServletFileUpload sfu=new ServletFileUpload (df);
//文件上传对象,解析二进制编码的表单数据;;
//得到fileItem对象集合,Fileitem对象可能是普通组件,也可能是文件上传组件;
List<FileItem> fis=sfu.parseRequest(req);
if(fileItem.isFormField){
fileitem.getfilename();//普通组件名
fileItem.getString("UTF-8");
}else{
//拿到服务器里部署之后myupload的真实路径;
this.getservletContext().getRealPath("/myupload");
//取上传的文件名 filename
fileItem.getName();
//UUID uid
UUID.randomUUID().ToString().replace("-","");
//新名字
String newName=realPath+File.separator+uid+filename;
//获取文件的输入流
fileItem.getInputStream();
outPutstream out=new fileoutputstream(newname);
//阿帕奇
IOUtil.copy()
}
}
20.
文件下载:
//拿到请求参数里的fn参数,就是要下载的文件的名字
String fname = request.getParameter("fn");
System.out.println(fname);
//找到myupload里这个名字的文件的对象
//servletContext有getRealPath() 真实路径
//request有 request.getContextPath() 项目名
String realPath = this.getServletContext().getRealPath("/myupload");
File file=new File(realPath+File.separator+fname);
//设置下载头,浏览器解析这个头就知道,要下载文件的名字fname;如果是中文下载名字需要使用UrlRnconding先编码,再解码;
response.setHeader("Content-Disposition", "attachment;filename="+fname);
//设施下载的文件大小,这样可以在浏览器看到文件大小;
response.setContentLengthLong(file.length());
//使用流发回数据
InputStream is=new FileInputStream(file);//获取服务器上这个文件到本程序的输入流;
ServletOutputStream os = response.getOutputStream();//获取本文件到响应对象的输出流;
IOUtils.copy(is, os);
IOUtils.closeQuietly(is);
IOUtils.closeQuietly(os);
21.
分页
22.
ajax 异步请求,局部刷新;
asynchoronous:异步的:
浏览器发送一个请求后,页面不会在服务器响应前卡在那里,二是可以继续操作浏览网页;
局部刷新:
我们可以使用两种方式实现部分刷新:
1.iframe 页面重新加载;
2.ajax实现方式:
JavaScript发送异步请求;
服务器端,查询数据库,返回数据;
服务器端返回response;
客户端根据返回的response,来使用JavaScript操作DOM;
ajax请求服务和响应原理,核心JavaScript对象,XMLHttpRequest对象,由于历史和浏览器厂家的原因;这个对象有多个叫法;
核心对象,会发送get/post请求,并拿到服务器的响应后,再操作界面;
我们不使用这种原生的ajax
使用jQuery方式(不用关心核心对象的创建)
$.ajax()
$.get()
$.post()
$ajax(
{
type:"POST",
url:"/login",
data:"username='zs'&password=''123",//传参数
dataType:"json",//服务器返回参数类型,一般写json或者不写;
success:function(msg){//当服务器真的响应回来时,调用这个函数,一般写dom操作;
//msg响应回来的形参;
}
}
);
23.mvc
v视图层:展示数据和收集数据; 主体:html/jsp
c控制层:”调度“,跳转资源; 主体:servlet,过滤器也可以重定向;
m模型层:接受控制层的调用/处理业务逻辑/包装数据; 主体:service层/javaBean(封装类)
使用方式:service层接受控制层调用,并发起对dao层的调用。
使用方式:JavaBean包装大量数据到某对象,在多层次之间的方法调用时,通过传递对象来传递大量数据;
dao层:Data access Object 数据访问对象。用来专门访问数据库表;
一般的dao层:接口编程,先定义接口,再写实现类
一个dao对应一张表的各种操作(curd),方法内部将操作数据库得到的数据库转为service层要用到的对象,或对象集合,或一般数据;
dao层里的方法:注重sql语句 和模板里的参数们;并且根据需要有将操作数据库得到的数据封装为对象的设计;
分层设计的好处:符合面向对象,单元测试,是的整体结构清晰;
如何分包:
域名倒写的方式:
项目名。模块。
com.baidu.web0301.user
com.baidu.web0301.user.control
com.baidu.web0301.user.service
com.baidu.web0301.bean
com.baidu.web0301.user.dao
编译器默认的 :project Explorer 项目浏览区
另外一种文件显示方式:window /Show View/navigator模式;
对于不具体属于某一个模块,通用的功能:
写在
com.baidu.web0301.commons.util
com.baidu.web0301.commons.factory
24.html的表单检验
require属性 :不能为空
h5的正则:
pattern:正则表达式
title: 里面写提示信息
js的正则
/js正则/.test(串)
25.注意:
Ajax请求只能响应,不能转发;
26.xml
xml和html的区别:
HTML:超文本标记语言;用来做展示。 h4 h5
xml:可拓展标记语言; 就一个版本,也可以用浏览器打开。数据存放/传输,尤其是存放树形结构的数据。在多平台或应用之间传递数据();
--- 补充,json:js对象表示法。 var stu={name:"zs",age:12}
都是标记语言<>
HTML:标记都是组织设计完全。有功能。
xml:标记来自自定义。没有功能。仅做数据表示。
xml的作用:
数据存放,传输。尤其是存放树形结构的数据。在多平台多应用。
xml的语法:
跟html对比:
都分为单标签和双标签。 建议使用双标签;
标签名 由字母数字下划线或一些符号组成。 数字和符号不开头,不能用xml的组合形式。
标签可以嵌套,不能交叉。
属性值用属性值引起来。
标签的属性和标签的子标签 表示的数据信息是一个效果;
<person name="zs"><person/>
<person>
<name>zs<name>
<person/>
xml建议使用子元素的方式
大小写区别。
一个xml有且只有一个根元素;
对于一些特殊符号。有对应的实体",我们也可以自定义实体:
自定义实体的格式:
<!DOCTYPE 根元素[
<!ENTITY 实体名 "实体内容">
]
>
CDATA节 类似于html里的pre标签,不解析
<![CDATA[
public static int add(int a,int b){
return a+b;
}
]]>
处理指令:
首行文件声明;
引css文件;<?xml-stylesheet type="text/css" href="my.css">
xml的约束:一个格式良好的xml要有约束;
约束理解起来,如果xml是字符串的话,约束就可以理解为正则,来限制它的;
常见的约束两种:DTD / Schema
DTD文档声明及引用方式:
内部的:
<!DOCTYPE bear[
<!ELEMENT bear(person,animal*)>
<!ELEMENT person(name,sex)>
<!ELEMENT name(#PCDATA)>
<!ELEMENT sex(#PCDATA)>
<!ELEMENT animal(aname)>
<!ELEMENT aname(#PCDATA)>
<!ATTLIST person pid CDATA #REQUIRED>
<!ATTLIST person pid CDATA #FIXED "人物"><!--有固定值的属性 默认有,不显示-->
<!ENTITY abc "abc的实体">
]>
外部的(外部dtd文件中的实体没有作用,需要单独再写):
<!DOCTYPE bear SYSTEM "mybear.dtd"[
<!ENTITY abc "再写一遍">
]>
在新建的mybear.dtd的新文件里:
<!ELEMENT bear(person,animal*)>
<!ELEMENT person(name,sex)>
<!ELEMENT name(#PCDATA)>
<!ELEMENT sex(#PCDATA)>
<!ELEMENT animal(aname)>
<!ELEMENT aname(#PCDATA)>
<!ATTLIST person pid CDATA #REQUIRED>
<!ATTLIST person pid CDATA #FIXED "人物"><!--有固定值的属性 默认有,不显示-->
<!ENTITY abc "abc的实体">
网络上的:
<!DOCTYPE bear PUBLIC "mybear.dtd">
Schema
命名空间(namespace):一个命名空间可以理解为一个约束文档;
为什么要使用命名空间?
解决元素冲突问题,一个xml文档中,可以包含许多元素和属性,当我们使用xml文档的时候,就有可能碰到名称相同的元素,而这些名称相同的元素可能代表了不同的涵义;
简单来说:就是给不同的约束文档起一个唯一的URL标识。URL路径。
一个XML里就可以引入来自不同命名空间的多个约束文档。这多个约束文档可能出现相同的元素名。
xml里引用不同含义的name,想用某个元素或者属性,就要去引用这个元素或属性所在的约束文件(命名空间)
命名空间1:name
命名空间2:name
Schema,与DTD要做的事情一样。都是用来校验xml文档的有效性。功能更为强大;
理解Schema的数据类型;
理解Schema的元素类型;
理解Schema的验证与约束;
Schema本身也是一个xml文件
schema 是以schema文件为根元素
<xs:schema xmlns:xs="http://www.w3.org/2001/XML Schema"<!-- 组织规定命名空间,最根的一个约束文件,他里面有你设计当前这个约束文档需要的一切元素和数据类型,用于构建schema文件元素和数据类型属于http://www.w3.org/2001/XML Schema这个命名空间 ,xs是简短字-->
targetNamespace="http://mynamespace/mychema"<!-- 目标命名空间,给自己写的这个schema文档加的命名空间 -->
elementFormDefault="qualified" <!-- qualified,在引用我写的 这个约束文件的时候,要在xml标签前面加上简短字标识,多个引用,通常最主要的那个是不带的 -->
>
</xs:scema>
元素(分为简易元素(只有文本的标签)和复杂元素(包含属性和其他元素))和属性
写一个student.xsd例子
<xs:schema xmlns:xs="http://www.w3.org/2001/XML Schema"<!-- 组织规定命名空间,最根的一个约束文件,他里面有你设计当前这个约束文档需要的一切元素和数据类型,用于构建schema文件元素和数据类型属于http://www.w3.org/2001/XML Schema这个命名空间 ,xs是简短字-->
targetNamespace="http://mynamespace/mychema"<!-- 目标命名空间,给自己写的这个schema文档加的命名空间 -->
xmlns="http://mynamespace/mychema"
elementFormDefault="qualified" <!-- qualified,在引用我写的 这个约束文件的时候,要在xml标签前面加上简短字标识,多个引用,通常最主要的那个是不带的 -->
>
<xs:element name="student">
<xs:complexType>
<xs:sequence>
<xs:element ref="student" minOccurs="1"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="student">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"></xs:element>
<xs:element ref="sex"></xs:element>
<xs:element ref="age"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="name" type="xs:string">
<xs:simpleType>
<xs:restriction base:"xs:string">
<xs:pattern value="[A-Z]{3,6}"></xs:pattern>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="sex" type="xs:string">
<xs:complexType>
<xs:attribute name="abc" type="xs:string" use="required">
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="age" type="xs:string">
<xs:complexType>
<xs:attribute name="bbc" type="xs:string" use="prohibited">
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:scema>
xml的解析:
用Java的形式去读或者写xml文件;
DOM4J 去处理xml文档;
//sax解析器
SAXReader sr=new SAXReader();
//读xml获取一个Doc对象
Document doc=sr.read("birds.xml");
//获取根节点对象
Element root=doc.getRootElement();
syso( root.getName() );
Web 阶段梳理(2019.1.9)相关推荐
- 阿里云产品搭建web应用梳理
阿里云搭建web应用梳理 要搭建web应用,主要需要准备两部分内容,一部分是域名,另一部分就是服务器.下面分别对在阿里如何准备这两部分内容做一个简要说明. 一.域名 提供域名服务的商家很多,以万网为例 ...
- 大数据WEB阶段 TransientDateAccessResourceException
大数据WEB阶段 TransientDateAccessResourceException 一 . 分析 如果数据库保存的字段有时间 , 但是没有给该字段赋值时 ,则该字段默认是0000-00-00 ...
- 大数据WEB阶段(九)Servlet+Request
Servlet与Request 一.概述 Servlet 是sun公司提供的一门用于开发动态web资源的技术 按照这套规范写出来的servlet可以放置在web应用中在servlet容器中运行 . 开 ...
- 黑马数据库html阶段考试,黑马web阶段web试题学生版.docx
Web 阶段 Web 试题 1. 动态网站的开发技术有 (A) JSP HTML CSS JavaScript 下面哪个请求头信息可以实现防盗链 (C) Location Refresh Refere ...
- Web阶段--Servlet基础知识点
Web阶段–Servlet基础知识点 一.静态页面与动态页面 1.静态页面 概念:在Web模型中,页面中的信息是在html文件中定义好的,数据不会改变,称为"静态页面",无法根据用 ...
- Java web阶段学习总结(华清远见)
标题Java web阶段学习总结 经过web前端的学习之后,我们开启了Java web后端的学习. 学习一样新的东西首先要了解它的原理,以及所要具备的一些条件.对于Servlet 的开发步骤一般有:新 ...
- Web阶段--Oracle数据库基础知识点
Web阶段–Oracle数据库基础知识点 一.数据库 1.定义 是一个数据存储管理的软件,全称rdbms(关系数据库管理系统),简称数据库(db) 2.为什么需要应用数据库? 1.现有文本文件存放数据 ...
- 渗透测试-WEB安全梳理-中间件(apache、IIS、tomcat、weblogic、websphere、jboos、nginx)
渗透测试-WEB安全梳理-中间件(apache.IIS.tomcat.weblogic.websphere.jboos.nginx) WEB安全梳理-中间件(apache.IIS.tomcat.web ...
- 一文梳理2019年腾讯广告算法大赛冠军方案
点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 作为从本次比赛共157队伍中脱颖而出的冠军方案,评分达到87.9683,从数据清 ...
最新文章
- IEEE Fellow、AI大牛田奇加入华为云!他为何而来?“加速AI基础研究落地”
- LSD-SLAM 编译过程(Ubuntu 14.04 + ROS Indigo
- FreeImage加速保存图像
- Method threw 'java.lang.StackOverflowError' exception. Cannot evaluate 问题
- win7系统怎么查看服务器IP地址,win7系统的ip地址在哪 小编教你怎么查看
- 单行文字不断向上滚动特效
- AD管控下的弹性云桌面和文件共享最佳实践
- 人造肉真的上市了,这对养殖业会有什么影响?
- 第二部分:志愿录取标准
- axure 鼠标样式,Axure8-动态面板+简单鼠标事件实现单页面应用
- linux 下 mysql默认表_linux环境下mysql默认是区分表名大小写的
- findfirst_当心findFirst()和findAny()
- 高可用-软件heartbeat的入门介绍
- linux网络子系统分析(四)—— INET连接建立API分析之connect/accept
- 德州大学达拉斯分校计算机专业博士,德克萨斯大学达拉斯分校计算机科学理科硕士入学条件及实习就业...
- @生存技巧!程序员如何应对女朋友的“小脾气”(最后附女友靓照)
- 5.node.js中的事件循环
- 网站首页html静态化,网站首页怎么静态化
- 拉格朗日(Lagrange)乘子法超简说明
- HoloLens2的vuforia模型识别
热门文章
- 区块链六-Merkle Tree
- koajs 项目实战(二)
- HDU 4085 Peach Blossom Spring
- C的|、||、、、异或、~、!运算(转)
- 〖Linux〗svn log 每个日志记录只显示一行的方法
- java调用javascript函数_使用Java程序中的参数调用Javascript函数
- mysql 字符串特殊字符_转:MySQL数据入库时特殊字符处理
- java开源播放器_JavaFX/Java8开发的开源音乐播放器
- 二维观察---曲线的裁剪
- Android录音并输出为Mp4文件