【AJAX】AJAX技术详细解析以及实例
Ajax技术介绍:
全称: Asynchronized(异步) JavaScript And Xml
技术组成有: Javascript、DOM、CSS 和 XMLHttpRequest
AJAX = 异步 JavaScript 和 XML。
AJAX 是一种用于创建快速动态网页的技术。
通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。
有很多使用 AJAX 的应用程序案例:新浪微博、Google 地图、开心网等等。
XMLHttpRequest 对象
所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。
XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
创建 XMLHttpRequest 对象
所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均内建 XMLHttpRequest 对象。
创建 XMLHttpRequest 对象的语法:
variable=new XMLHttpRequest();
- 1
- 1
老版本的 Internet Explorer (IE6、IE5)使用 ActiveX 对象:
variable=new ActiveXObject("Microsoft.XMLHTTP");
- 1
- 1
为了应对所有的现代浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest 对象。如果支持,则创建 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject :
var xmlhttp;
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safarixmlhttp=new XMLHttpRequest();}
else{// code for IE6, IE5xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
XMLHttpRequest 对象的两个方法:
open(method,url,async)
规定请求的类型、URL 以及是否异步处理请求。method:请求的类型;GET 或 POSTurl:文件在服务器上的位置async:true(异步)或 false(同步)
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
open() 方法的 url 参数是服务器上文件的地址:
该文件可以是任何类型的文件,比如 .txt 和 .xml,或者服务器脚本文件,比如 .asp 和 .PHP (在传回响应之前,能够在服务器上执行任务)。
异步 - True 或 False?
AJAX 指的是异步 JavaScript 和 XML(Asynchronous JavaScript and XML)。
XMLHttpRequest 对象如果要用于 AJAX 的话,其 open() 方法的 async 参数必须设置为 true:
通过 AJAX,JavaScript 无需等待服务器的响应,而是:在等待服务器响应时执行其他脚本当响应就绪后对响应进行处理
- 1
- 2
- 3
- 1
- 2
- 3
Async = true
当使用 async=true 时,请规定在响应处于 onreadystatechange 事件中的就绪状态时执行的函数:
xmlhttp.onreadystatechange=function(){if (xmlhttp.readyState==4 && xmlhttp.status==200){document.getElementById("myDiv").innerHTML=xmlhttp.responseText;//还可以加函数}}
xmlhttp.open("GET","test1.txt",true);
xmlhttp.send();
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Async = false
如需使用 async=false,请将 open() 方法中的第三个参数改为 false:
xmlhttp.open("GET","test1.txt",false);
- 1
- 1
不推荐使用 async=false,但是对于一些小型的请求,也是可以的。
请记住,JavaScript 会等到服务器响应就绪才继续执行。如果服务器繁忙或缓慢,应用程序会挂起或停止。
注释:当您使用 async=false 时,请不要编写 onreadystatechange 函数 - 把代码放到 send() 语句后面即可:
xmlhttp.open("GET","test1.txt",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
- 1
- 2
- 3
- 1
- 2
- 3
send(string)
将请求发送到服务器。string:仅用于 POST 请求类似:"name=jack&pwd=1234"
- 1
- 2
- 3
- 1
- 2
- 3
使用get方式提交:
get方式有可能得到的是浏览器缓存的结果,这个时候我们可以传递一个时间去请求.
为了避免这种情况,请向 URL 添加一个唯一的 ID:
xmlhttp.open("GET","demo_get.asp?t=" + Math.random(),true);
xmlhttp.send();
- 1
- 2
- 1
- 2
如果希望通过 GET 方法发送信息,请向 URL 添加信息:
xmlhttp.open("GET","demo_get2.asp?fname=Bill&lname=Gates",true);
xmlhttp.send();
- 1
- 2
- 1
- 2
使用post方式提交:
如果需要像 HTML 表单那样 POST 数据,需要setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定您希望发送的数据:
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
- 1
- 1
选择GET 还是 POST?
与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。
然而,在以下情况中,请使用 POST 请求:
无法使用缓存文件(更新服务器上的文件或数据库)向服务器发送大量数据(POST 没有数据量限制)发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
- 1
- 2
- 3
- 1
- 2
- 3
获得来自服务器的响应
如需获得来自服务器的响应,使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。
属性 描述
responseText 获得字符串形式的响应数据。
responseXML 获得 XML 形式的响应数据。
- 1
- 2
- 3
- 1
- 2
- 3
responseText 属性
如果来自服务器的响应并非 XML,请使用 responseText 属性。
responseText 属性返回字符串形式的响应,因此您可以这样使用:
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
- 1
- 1
responseXML 属性
如果来自服务器的响应是 XML,而且需要作为 XML 对象进行解析,请使用 responseXML 属性:
请求 books.xml 文件,并解析响应:
xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName("ARTIST");
for (i=0;i<x.length;i++){txt=txt + x[i].childNodes[0].nodeValue + "<br />";}
document.getElementById("myDiv").innerHTML=txt;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
onreadystatechange 事件
当请求被发送到服务器时,我们需要执行一些基于响应的任务。
每当 readyState 改变时,就会触发 onreadystatechange 事件。
readyState 属性存有 XMLHttpRequest 的状态信息。
下面是 XMLHttpRequest 对象的三个重要的属性:
onreadystatechange:
存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。readyState:
存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。0: 请求未初始化-对象已建立,但是尚未初始化(尚未调用open方法) 1: 服务器连接已建立-对象已建立,尚未调用send方法 2: 请求已接收- send方法已调用,但是当前的状态及http头未知 3: 请求处理中- 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误, 4: 请求已完成,且响应已就绪-数据接收完毕,此时可以通过通过responseBody和responseText获取完整的回应数据 status:
200: "OK"
404: 未找到页面
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
注释:onreadystatechange 事件被触发 5 次(0 - 4),对应着 readyState 的每个变化。
在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。
当 readyState 等于 4 且状态为 200 时,表示响应已就绪:
xmlhttp.onreadystatechange=function(){if (xmlhttp.readyState==4 && xmlhttp.status==200){document.getElementById("myDiv").innerHTML=xmlhttp.responseText;}}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
GET方式实例演示:
index.jsp:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><head>
<title>Ajax技术</title>
<script type="text/javascript">var xmlhttp;//1 创建一个ajax对象if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safarixmlhttp = new XMLHttpRequest();} else {// code for IE6, IE5xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}function checkGet(obj) {//进行数据格式检验-这里省略了。var name = obj.value;//获取用户填入的用户名var url = "<c:url value='/OneServlet?name=" + name + "' />";//2 设置通讯方式和地址xmlhttp.open("GET", url, true);//异步--多线程//3 设置访问成功后的 js对象(回调函数)xmlhttp.onreadystatechange = function() {if (xmlhttp.readyState == 4) {//服务器的响应消息接收完毕if (xmlhttp.status == 200) {//服务器正常响应var txt = xmlhttp.responseText;//后台的响应信息alert("返回的信息是:" + txt);succ(txt);} else {alert("服务器响应出错信息,错误代码:" + xhr.status);}}};//4发送---Get方式,没有参数(请求体) ---数据在请求地址中xmlhttp.send();//如果这里设置xmlhttp.open("GET", url, false);//同步//alert("OKOK");//同步时,必须等到ajax回来之后才会执行到send之后。异步时不用等}function succ(obj) {document.getElementById("divGet").innerHTML = obj;//divGet.innerHTML=obj;}
</script><form action=""><h3>GET方式的ajax演示</h3>Name-GET方式提交<input type="text" name="name" onblur="checkGet(this);" /><div id="divGet"></div><h3>POST方式的ajax演示</h3>Name-POST方式提交<input type="text" name="name" onblur="checkPost(this);" /><div id="divPost"></div><br /> <br /> <input type="submit" value="注册"></form>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
OneServlet:
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();String name = request.getParameter("name");
// try { //用来演示设置xmlhttp.open("GET", url, false);//同步时,效果更明显而使用的
// Thread.sleep(3000);
// } catch (InterruptedException e) {// e.printStackTrace();
// }out.println(name+"通过GET方式来访\t\n时间是:"+sdf.format(new Date()) );}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
web.xml:
写Servlet-不要忘记配置web.xml
<servlet><servlet-name>OneServlet</servlet-name><servlet-class>cn.hncu.servlet.OneServlet</servlet-class></servlet><servlet-mapping><servlet-name>OneServlet</servlet-name><url-pattern>/OneServlet</url-pattern></servlet-mapping>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
演示结果:
POST方式实例演示:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><head>
<title>Ajax技术</title>
<script type="text/javascript">var xmlhttp;//1 创建一个ajax对象if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safarixmlhttp = new XMLHttpRequest();} else {// code for IE6, IE5xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}function checkPost(obj){var name=obj.value;//获取用户输入的用户名var url = "<c:url value='/OneServlet'/>";xmlhttp.open("POST", url, true);xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4){//服务器的响应消息接收完毕if(xmlhttp.status==200){//服务器正常响应var txt = xmlhttp.responseText;//后台的响应信息alert("返回的信息是:"+txt);succPost(txt);}else{alert("服务器响应出错信息,错误代码:"+xhr.status);}}};//注意要设置请求头!!!xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");xmlhttp.send("name="+name);}function succPost(obj){divPost.innerHTML=obj;}
</script></head><body><form action=""><h3>POST方式的ajax演示</h3>Name-POST方式提交<input type="text" name="name" onblur="checkPost(this);" /><div id="divPost"></div><br /> <br /> <input type="submit" value="注册"></form>
</body>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
OneServlet:
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();String name = request.getParameter("name");//int i=100/0;//故意让后台响应500的错误信息out.println(name+"通过POST方式来访\t\n时间是:"+sdf.format(new Date()) );}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
封装AJAX:
是不是感觉上面这样写有点麻烦,其实我们完全可以先配置好ajax函数,在用的时候传入参数就可以了。
我们只要new Ajak(),然后调用里面的get、post函数,进行传值就可以了。
post方式需要多传入一个data参数,get方式就可以不用,因为参数在url中传的。
ajax.js
function Ajax(){var xmlhttp;//1 创建一个ajax对象if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safarixmlhttp = new XMLHttpRequest();} else {// code for IE6, IE5xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}//url为请求的链接或文件。//succ是status返回为200后运行的函数。//failure是status返回不为200后运行的函数。this.get=function(url,succ,failure){//2 设置通讯方式和地址xmlhttp.open("GET",url,true);//异步--多线程//3 设置访问成功后的 js对象(回调函数)xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4){//服务器的响应消息接收完毕if(xmlhttp.status==200){//服务器正常响应var txt = xmlhttp.responseText;//后台的响应信息succ(txt);}else{if(failure){failure(xmlhttp.status);}}}};//4发送---Get方式,没有参数(请求体) ---数据在请求地址中xmlhttp.send();};this.post= function(url,data,succ, failure){//2 设置通讯方式和地址xmlhttp.open("POST",url,true);//异步--多线程//3 设置访问成功后的 js对象(回调函数)xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4){//服务器的响应消息接收完毕if(xmlhttp.status==200){//服务器正常响应var txt = xmlhttp.responseText;//后台的响应信息succ(txt);}else{if(failure){failure(xmlhttp.status);}}}};//4设置请求头xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//5发送---Post方式,有参数(请求体) <---数据 ※xmlhttp.send(data);};
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
演示的JSP
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Ajax技术</title>
<script type="text/javascript" src="<c:url value='js/ajax.js'/>"></script>
<script type="text/javascript">function checkGet(obj) {//进行数据格式检验-这里省略了。var name = obj.value;//获取用户填入的用户名var url = "<c:url value='/OneServlet?name=" + name + "' />";var ajax = new Ajax();ajax.get(url, succ, failure);}function succ(obj) {document.getElementById("divGet").innerHTML = obj;}function checkPost(obj) {var name = obj.value;//获取用户输入的用户名var url = "<c:url value='/OneServlet'/>";var ajax = new Ajax();ajax.post(url,"name="+name, succPost, failure);}function succPost(obj) {divPost.innerHTML = obj;}function failure(obj) {alert("服务器响应的错误信息代码:" + obj);}
</script>
</head><body><form action=""><h3>GET方式的ajax演示</h3>Name-GET方式提交<input type="text" name="name" onblur="checkGet(this);" /><div id="divGet"></div><h3>POST方式的ajax演示</h3>Name-POST方式提交<input type="text" name="name" onblur="checkPost(this);" /><div id="divPost"></div><br /> <br /> <input type="submit" value="注册"></form>
</body>
</html>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
servlet还是和刚才的是一个!
演示结果:
返回结果为200-正确的页面:
返回结果为500-错误的页面:
让servlet出一个异常就可以模仿出来了。
例如:int a=12/0;
原文地址:http://blog.csdn.net/qq_26525215
本文源自【大学之旅_谙忆的博客】
【AJAX】AJAX技术详细解析以及实例相关推荐
- 基于dwr2.0的Push推送技术详细解析以及实例
DWR从2.0开始增加了push功能,也就是在异步传输的情况下可以从Web-Server端发送数据到 Browser. 我们知道,Web的访问机制天生是设计用来pull数据的,也就是只允许Browse ...
- 基于dwr2.0的Push推送技术详细解析以及实例(转)
DWR从2.0开始增加了push功能,也就是在异步传输的情况下可以从Web-Server端发送数据到 Browser. 我们知道,Web的访问机制天生是设计用来pull数据的,也就是只允许Browse ...
- OpenCL编程详细解析与实例
OpenCL编程详细解析与实例 C语言与OpenCL的编程示例比较 参考链接: https://www.zhihu.com/people/wujianming_110117/posts 先以图像旋转的 ...
- 智能机器人语音识别技术详细解析
语音控制的基础就是语音识别技术,可以是特定人或者非特定人的.非特定人的应用更为广泛,对于用户而言不用训练,因此也更加方便.语音识别可以分为孤立词识别,连接词识别,以及大词汇量的连续词识别.对于智能机器 ...
- linux初始化内存盘卡住,Linux系统内存磁盘初始化技术详细解析
转自:http://m.zol.com.cn/article/1271270.html?via=index Linux内存初始化技术(initrd)用于支持两阶段的系统引导过程,是在系统启动过程中被挂 ...
- 粒子群算法Particle Swarm Optimization超详细解析+代码实例讲解
01 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源于对鸟群捕食的行为研究 ...
- 2022最新百度网盘扩容技术详细解析
目前百度网盘开会员最大的容量是5T,网上有很多方法利用百度网盘的漏洞,扩容100T.1000T甚至于几千T,这种上传占位文件的方法稍微复杂,当然也是可以解决网盘空间不够用的问题,需要上传大量的占位文件 ...
- AJAX技术简介及入门实例[收藏]
最近在学校参加暑期实习,参与的是一个社交网站项目,学长那边分配给的任务是前端开发,需要学习AJAX技术. 对于一个像我一样刚刚接触Web开发且无多少实际项目经验的新手而言,AJAX技术显得复杂而又深奥 ...
- ajax使用教程——ajax使用方法及相关知识点详细解析
写在前面: 本文主要总结整理ajax使用方法背景知识点的详细解析,以及ajax跨域的具体使用方式并且对栗子进行了讲解,需要的朋友可以过来参考下,喜欢的可以点波赞,或者关注一下本人,希望通过本文能够作为 ...
最新文章
- 线性表—单向循环链表
- 稳定wow60级服务器,魔兽怀旧服:永久60级怀旧服是什么体验?
- 【PMP学习笔记】:三、项目经理角色
- PhpStorm failed to transfer files by FTP 报错解决方法
- 语义分割双料冠军!微软 OCRNet化解语义分割上下文信息缺失难题|ECCV 2020
- 银行大数据新玩法,构建“一湖两库”金融数据湖
- 127.0.0.1 zxt.php,恭喜您!序列号购买成功!
- 代码分享:JS判断登陆端是PC还是手机
- 非香农类信息不等式_ICLR 2020 | 北大图灵班满分论文:基于计算约束下有用信息的信息论...
- 路由器连接校园网(多个账号,单个账号)
- 笔记本拆c面_给老笔记本更换高清屏的经验与总结(翻车记录)
- linux hotplug 机制,佐须之男的博客- 跟着佐大学Lede/OpenWrt开发入门培训班讲义-18 OpenWrt hotplug 机制分析...
- Roslyn 入门:使用 .NET Core 版本的 Roslyn 编译并执行跨平台的静态的源码
- Mybatis的联合查询
- 爱荷华州立大学计算机科学,2020年爱荷华州立大学排名TFE Times美国最佳计算机科学硕士专业排名第63...
- 【软件project】 文档 - 银行业务管理 - 需求分析
- 条码打印机无法正常打印该如何解决
- 16个优秀网站设计网站
- 关于QRCode生成二维码(背景图、Logo)
- 基于超声波的库位重定位算法
热门文章
- FFmpeg+nginx实现b站推流直播
- Spring高阶使用总结
- 肖恩·帕克:让Airtime开启你的互联网新世界
- 稻盛和夫:如何调动员工的积极性
- PCB电路板元器件布局的一般原则
- 软件卸载quickuninstall
- 强连通分量——tarjan算法缩点
- 计算机基础TF,计算机应用基础素材文件TF5-20
- 华南理工计算机考研考408,2018年华南理工大学软件学院408计算机学科专业基础综合之计算机操作系统考研基础五套测试题...
- ASP.NET Core中使用GraphQL - 最终章 Data Loader