ajax 页面无刷新

<!-- 使用原生Ajax 和 $.ajax 实现局部刷新的过程 -->
<!-- 封装通用XMLHttpRequest对象 -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>创建XMLHttpRequest</title>
<style>
*{
padding: 0;
margin: 0;
}
div{
width: 80vw;
height: 75vh;
margin: auto;
background: #4785ab;
overflow: hidden;
position: relative;
}
div a{
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
display: block;
width: 100%;
height: 100%;
}
div a img{
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: auto;
display: block;
width: 98%;
height: 96%;
}
</style>
<script type='text/javascript' src="js/jquery.js"></script>
</head>
<body>
<div class="banner"></div>
<div class="container"></div>
<script type="text/javascript">
// 如何使用Ajax?
// 要完整实现一个AJAX异步调用和局部刷新,通常需要三个步骤:
// 一,创建XMLHttpRequest对象,也就是创建一个异步调用对象。
// 二,创建一个新的HTTP请求,并指定该HTTP请求的方法,URL。
// 三,设置响应HTTP请求状态变化的函数。
// 四,发送HTTP请求
// 请求发往服务器--> 服务器根据请求生成响应--> 传回给xhr对象
// 语法:send(string) 将请求发送到服务器端,string仅用于POST请求
// 注意事项:仅POST请求时可以传入参数,不需要则发送null,调用send方法,请求被发往服务器。
// 五,获取异步调用返回的数据
// 在收到相应后相应数据会填充到xhr对象的属性,有四个相关属性会被填充:
// 1,responseText 从服务器进程返回数据的字符串形式
// 2,responseXML 从服务请进程返回的DOM兼容的文档数据对象
// 3,status 从服务器返回数字代码,如:404(未找到),200(已就绪)
// 4,status Text 伴随状态码的字符串信息
// 六,使用JavaScript和DOM实现局部刷新

//创建一个新的HTTP请求
// 语法:open(method,url,async);
// 功能:创建HTTP请求,规定请求的类型,URL及是否异步处理请求
// method: 请求类型 GET 或者 POST,不指定时默认GET。
// GET:更简单,更快,大部分情况下可以使用,有数据量限制,不用考虑安全性,不传参数。
// POST: 可以传string参数,以下情况必须使用POST
// 1,无法使用缓存文件(更新服务器上的文件或数据库)
// 2,向服务器发送大量数据(POST没有数据量限制)
// 3,发送包含未知字符的用户输入时,POST比GET更稳定更可靠。(考虑安全性问题)
// url: 文件在服务器上的位置,必须指定的参数,该文件可以是任何类型的文件,
// 如:.txt .xml 服务器脚本(.asp .php),在传回相应之前,在服务器上执行任务。
// async: true(异步)或false(同步)
// 同步处理:提交请求--> 等待服务器处理--> 处理完毕返回(期间客户端浏览器不能做任何事情)
// 说白了就是要排队等候,一个一个处理。
// false: 客户端要等待服务器返回消息后才能执行其他操作。
// 异步处理:请求通过事件处理--> 服务器处理(浏览器可以做其他事情)--> 处理完毕(不用返回)
// true: 默认值,客户端不用等待服务器的响应,可以直接做其他事情。
//

// xmlhttp就是XMLHttpRequest的实例
// 使用POST请求时需要做的一个动作:
// 如果需要像HTML表单那样POST数据,需要使用setRequestHeader()来添加HTTP头,
// 然后在send()方法规定希望发送的数据。
// 语法:xmlhttp.setRequestHeader(header,value);
// 使用: xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');

//注意事项:
//open不会向服务器发送真正请求,它相当于初始化请求并准备发送,
//只能向同一个域中使用相同协议和端口的URL发送请求,否则会因为安全原因报错。

// 一,创建XMLHttpRequest对象
//--------两种方式封装通用的XMLHttpRequest对象-----------
//第一种,比较全面点,也复杂点。
//封装通用的xhr对象,兼容各个版本
/*function createXHR(){
//判断浏览器是否将XMLHttpRequest作为本地对象实现,针对IE7,chrome,firefox,opera等等
if (typeof XMLHttpRequest!='undefined') {
return new XMLHttpRequest();//返回XMLHttpRequest对象
}else if(typeof ActiveXObject!='undefined'){
//将所有可能出现的版本都放在数组中进行遍历
var xhrArr=['Mrcrosoft.XMLHTTP','MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP.2.0'];
//遍历XMLHttpRequest对象
var len=xhr.length,xhr;
for (var i = 0; i < len; i++) {
try{
//创建XMLHttpRequest对象
xhr=new ActiveXObject(xhrArr[i]);
break;
}catch(e){
//如果抛出错误,那么说明不支持该版本,则不进行任何操作,直到找到合适版本即可。
}
}
return xhr;
}else{
throw new Error("您的浏览器不支持XMLHttpRequest!");
}
}
var xhr=createXHR();
console.log(xhr);//输出XMLHttpRequest,则创建成功,否则失败*/

//第二种,相对简单,但是也可以满足主流浏览器的使用。
//封装通用的XMLHttpRequest对象
function createXHR(){
var xhr;
if (window.XMLHttpRequest) {
//如果支持XMLHttpRequest,则实例化对象
xhr=new XMLHttpRequest();
}else{
xhr=new ActiveXObject("Microsoft.XMLHTTP");
}
return xhr;
}
//创建XMLHttpRequest实例
var xhr=createXHR();
var data=null;//用于接收服务器返回的数据
//console.log(xhr);//输出XMLHttpRequest则创建成功,否则失败

//响应XMLHttpRequest对象状态变化的函数。
//onreadystatechange 在 readystatechange属性值发生改变时触发事件
xhr.onreadystatechange=function(){
//xhr.readyState 不同值的意思:
// 0 没有初始化,没有用send方法
// 1 已经调用send方法正在发送请求
// 2 send方法执行完成,
// 3 正在解析响应的内容
// 4 异步调用成功,响应内容解析完成
//异步调用成功,响应内容解析完成,意为着可以在客户端调用
if (xhr.readyState===4) {
// xhr.status<=200 && xhr.status<300 表示异步调用成功,即数据交换是成功的
// xhr.status===304 表示请求资源没有被修改,可以使用浏览器缓存(说明之前已经请求成功过,且请求资源没有改变过)
if ((xhr.status>=200 && xhr.status<300) || xhr.status===304) {
//获取服务器返回的数据
// console.log(xhr.responseText);

//eval()是原生javascript代码进行string转换成 object对象
//而这里是对JSON数据进行转换
//eval()用于把string(json数据)字符串转化为对象,
//就可以使用 obj.属性 进行取值了。
//在转化时,一定要在json数据前后加上小括号,这样转化成一个对象,否则报错。
/*data=eval("("+xhr.responseText+")");
console.log(data.code);
console.log(data.people);//返回的是一个数组对象,通过遍历和index来访问其中的值
console.log(data.people[3]);//返回数组第四个值:{name: "weidejun", age: "31"}*/
//以下是JSON的两个互转的方法:JSON.parse(),JSON.stringify() 这两个方法互为逆转。
data=JSON.parse(xhr.responseText);
// console.log(data);//返回JSON数据的一个数组[...]
// console.log(data.people);//返回people属性值的一个数组

//将JSON.parse(xhr.responeText)返回的原生javascript值
//逆转会JSON字符串,即序列化为JSON字符串。
// console.log(JSON.stringify(data));

//把返回的服务器数据渲染到DOM对象中
renderDataToDom();
}
}
}

//以下是使用GET方法进行发送请求
//创建HTTP请求,用get方法传参数直接写在url后面,?name=zs&psd=1234 如下:
xhr.open('get','./js/slider.json',true);
//发送请求,使用get()方法不需要在send中传递参数,那么直接给一个null即可。
xhr.send(null);//如果,使用get方法,尝试使用xhr.send()看看能不能成功执行。

//把返回的服务器JSON数据渲染到DOM对象中
function renderDataToDom(){
var pictures=data.picture;
var len=pictures.length;
var str="";
var div=document.getElementsByTagName('div')[0];
for (var i = 0; i < len; i++) {
// console.log(pictures[i]);
console.log(pictures[i].linkUrl);
console.log(pictures[i].picUrl);
str+="<a href='"+pictures[i].linkUrl+"'><img src='"+pictures[i].picUrl+"'></a>";
div.innerHTML=str;
}
}
/*//以下是使用POST方法进行发送数据
//创建HTTP请求,用post方法传参数时,把参数写到send({name:'zhangsan',psd:'123456'})方法中的,
//如果不需要传参数,那么在直接:xhr.send(null),即可。如下:
xhr.open('get','./js/slider.json?name=zhangsan&psd=1234567',true);
//发送请求
xhr.send({name:'zhangsan',psd:'123456'});
//设置http头部信息
xhr.setRequestHeader('Content-type','application/x-www.x-www-form-urlencoded');*/

//以下是jquery封装好的$.ajax方法,简单好用,尝试用自己封装。
$.ajax({
url:"./js/slider.json", //请求地址
type:"get", //请求方式
async:true, //异步同步
dataType:"json", //获取数据格式
success:function(imgData){ //请求成功后的回调函数
JSrenderDataToDom(imgData)
// console.log(imgData.picture);
}
})
function JSrenderDataToDom(data){
var str="";
$.each(data.picture, function(index,obj) {
str="<a href='"+obj.linkUrl+"'><img src='"
+obj.picUrl+"'/></a>";
$(".container").html(str);
});
}
</script>
</body>
</html>
<!--
1,在使用Ajax时,必须先安装MAMP(即:Apache Server 和 MySQL Server)
2,配置Web Server 网页的默认访问路径,同时配置本地端口号:80
3,编写Ajax页面时,页面必须放在该默认路径下面文件夹里面才可以正常访问
4,且访问时,不能直接点击文件打开,而是通过MAMP软件页面的---》
Open WerStart page 来打开 如:http://localhost:81 等价于:http://localhost:81/index.html
访问其他页面:http://localhost:81/xxx.html
5,打开页面后,可以使用开发者工具---Network---All---刷新页面
---点击localhost---查看各种参数 如;
Request URL: http://localhost:81/ 请求地址
Request Method: GET 请求的方法
Status Code: 200 OK 请求的状态
Remote Address: 127.0.0.1:81 远程访问地址

xmlhttprequst有以下两个方法:
1.open() 方法:open() 有三个参数。第一个参数定义发送请求所使用的方法,第二个参数规定服务器端脚本的URL,第三个参数规定应当对请求进行异步地处理。xmlHttp.open("GET","test.php",true);
2.send() 方法:send() 方法将请求送往服务器。如果我们假设 HTML 文件和 PHP 文件位于相同的目录,那么代码是这样的:xmlHttp.send(null);

服务器返回状态和状态码:
200 OK
请求正常处理完毕
204 No Content
请求成功处理,没有实体的主体返回
206 Partial Content
GET范围请求已成功处理
301 Moved Permanently
永久重定向,资源已永久分配新URI
302 Found
临时重定向,资源已临时分配新URI
303 See Other
临时重定向,期望使用GET定向获取
304 Not Modified
发送的附带条件请求未满足
307 Temporary Redirect
临时重定向,POST不会变成GET
400 Bad Request
请求报文语法错误或参数错误
401 Unauthorized
需要通过HTTP认证,或认证失败
403 Forbidden
请求资源被拒绝
404 Not Found
无法找到请求资源(服务器无理由拒绝)
500 Internal Server Error
服务器故障或Web应用故障
503 Service Unavailable
服务器超负载或停机维护 -->
还差两个问题没解决:
1,自己封装$.ajax方法
2,跨域

<!-- 什么是JSON?
1,JSON: JavaScript Object Nonation 全称:JavaScript对象表示法
2,是一种数据交换格式,不是编程语言,用于读取结构化数据
3,2001年提出,目的是取代繁琐笨重的XML格式

JSON语法可以表示以下三种类型的值:
一,简单值:
1,用法与JavaScript用法相同,可以是:字符串,数值,布尔值,null
字符串必须使用双引号,不能使用单引号,数值必须是十进制,
不能使用NaN和Infinify,还有undefined值。
二,对象:
1,对象是一种复杂的数据类型,表示一组有序的键值对,而每个键值对中的值
可以是简单值,也可以是复杂数据类型的值。
2,JSON中对象的键名必须放在双引号里面,因为JSON不是javascript语句,
所以没有末尾的分号。
3,对于同一个对象中不应该出现两个同名属性
三,数组:
1,数组是一种复杂数据类型,表示一组有序的值的列表,
可以通过数值索引来访问其中的值。
2,数组或对象最后一个成员的后面,不能加逗号。 -->

<!-- ajax返回的JSON数据转化为object对象进行数据操作的方法:
1,JSON.parse(服务器返回的数据) 将JSON字符串转化为Object对象
2,JSON.stringify(服务器返回的数据) 将一个值转换为字符串,该字符串符合JSON格式,
并且可以被JSON.parse(服务器返回的数据)方法还原。

JSON总结:
1,JSON之所以流行,因为可以把JSON数据结构解析为有用的javascript对象。
2,JSON对象的两个方法:JSON.stringify(服务器返回的数据) 和 JSON.parse(服务器返回的数据) 分别用于:
JSON.stringify(服务器返回的数据) 把javascript对象序列化为JSON字符串
JSON.parse(服务器返回的数据) 把JSON字符串解析为原生的javascript值
3,javascript的eval(服务器返回的数据)类似于JSON.parse(服务器返回的数据),可以将JSON字符串转换为JSON对象,
但是,eval()可以执行不符合JSON格式的代码,有可能包含恶意代码,所以少用。

// 如何使用Ajax?
// 要完整实现一个AJAX异步调用和局部刷新,通常需要三个步骤:
// 一,创建XMLHttpRequest对象,也就是创建一个异步调用对象。
// 二,创建一个新的HTTP请求,并指定该HTTP请求的方法,URL。
// 三,设置响应HTTP请求状态变化的函数。
// 四,发送HTTP请求
// 请求发往服务器 服务器根据请求生成响应 传回给xhr对象
// 语法:send(string) 将请求发送到服务器端,string仅用于POST请求
// 注意事项:仅POST请求时可以传入参数,不需要则发送null,调用send方法,请求被发往服务器。
// 五,获取异步调用返回的数据
// 在收到相应后相应数据会填充到xhr对象的属性,有四个相关属性会被填充:
// 1,responseText 从服务器进程返回数据的字符串形式
// 2,responseXML 从服务请进程返回的DOM兼容的文档数据对象
// 3,status 从服务器返回数字代码,如:404(未找到),200(已就绪)
// 4,status Text 伴随状态码的字符串信息
// 六,使用JavaScript和DOM实现局部刷新
=============以下六个步骤就是使用原生的javascript编写的ajax过程=============
一://封装通用的XMLHttpRequest对象
function createXHR(){
var xhr;
if (window.XMLHttpRequest) {
//如果支持XMLHttpRequest,则实例化对象
xhr=new XMLHttpRequest();
}else{
xhr=new ActiveXObject("Microsoft.XMLHTTP");
}
return xhr;
}

三:xhr.onreadystatechange=function(){
//异步调用成功,响应内容解析完成,意为着可以在客户端调用
if (xhr.readyState===4) {
// xhr.status<=200 && xhr.status<300 表示异步调用成功,即数据交换是成功的
// xhr.status===304 表示请求资源没有被修改,可以使用浏览器缓存(说明之前已经请求成功过,且请求资源没有改变过)
if ((xhr.status>=200 && xhr.status<300) || xhr.status===304) {
五,获取异步调用返回的数据
//以下是JSON的两个互转的方法:JSON.parse(),JSON.stringify() 这两个方法互为逆转。
data=JSON.parse(xhr.responseText);

六: //封装渲染函数,把返回的服务器数据渲染到DOM对象中
renderDataToDom();
}
}
}

习惯把 二 和 四 写在一起
二://以下是使用GET方法进行发送请求
//创建HTTP请求,用get方法传参数直接写在url后面,?name=zs&psd=1234 如下:
xhr.open('get','./js/slider.json',true);

四://发送请求,使用get()方法不需要在send中传递参数,那么直接给一个null即可。
xhr.send(null);//如果,使用get方法,尝试使用xhr.send()看看能不能成功执行。

六://把返回的服务器JSON数据渲染到DOM对象中
function renderDataToDom(){
var pictures=data.picture;
var len=pictures.length;
var str="";
var div=document.getElementsByTagName('div')[0];
for (var i = 0; i < len; i++) {
// console.log(pictures[i]);
console.log(pictures[i].linkUrl);
console.log(pictures[i].picUrl);
str+="<a href='"+pictures[i].linkUrl+"'><img src='"+pictures[i].picUrl+"'></a>";
div.innerHTML=str;
}
}
===========以下是jquery封装好的$.ajax方法,简单好用,尝试自己封装=============

//以下是jquery封装好的$.ajax方法,简单好用,尝试用自己封装。
$.ajax({
url:"./js/slider.json", //请求地址
type:"get", //请求方式
async:true, //异步同步
dataType:"json", //获取数据格式
success:function(imgData){ //请求成功后的回调函数
JSrenderDataToDom(imgData)
// console.log(imgData.picture);
}
})
function JSrenderDataToDom(data){
var str="";
$.each(data.picture, function(index,obj) {
str="<a href='"+obj.linkUrl+"'><img src='"
+obj.picUrl+"'/></a>";
$(".container").html(str);
});
} -->
========以下是xxx.json实例==========
{
"code":0,
"picture":[
{
"linkUrl":"https://www.baiud.com",
"picUrl":"images/1.jpg"
},
{
"linkUrl":"https://www.baiud.com",
"picUrl":"images/2.jpg"
},
{
"linkUrl":"https://www.baiud.com",
"picUrl":"images/3.jpg"
},
{
"linkUrl":"https://www.baiud.com",
"picUrl":"images/4.jpg"
},
{
"linkUrl":"https://www.baiud.com",
"picUrl":"images/5.jpg"
},
{
"linkUrl":"https://www.baiud.com",
"picUrl":"images/6.jpg"
},
{
"linkUrl":"https://www.baiud.com",
"picUrl":"images/7.jpg"
}
]
}
==========================

 

 

转载于:https://www.cnblogs.com/Knowledge-is-infinite/p/11135294.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277389.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javascript字符串方法总结

javascript中常用的字符串方法 String 的静态方法 fromCharCode&#xff1a;使用指定的Unicode值序列创建字符串 String.fromCharCode(num1, ..., numN) fromCodePoint: 使用指定的代码点序列创建的字符串 String.fromCharCode(num1, ..., numN) **注意**: 以上两个方法都是S…

php larval开发规范,数据模型 |《 Laravel 项目开发规范 5.5》| Laravel China 社区

本文档最新版为 7.x&#xff0c;旧版本可能放弃维护&#xff0c;推荐阅读最新版&#xff01;放置位置所有的数据模型文件&#xff0c;都 必须 存放在&#xff1a;app/Models/ 文件夹中。命名空间&#xff1a;namespace App\Models;User.phpLaravel 5.1 默认安装会把 User 模型存…

课程总结

大一的我初次学习JAVA&#xff0c;尽管以前也有所了解过但是还是觉得有点难&#xff0c;这个和c语言相似但是又有很多的不同&#xff0c;比如关键字什么的&#xff0c;一个学期下来现在回望真的感觉学到的并不是很多&#xff0c;可能是我上课的时候喜欢分神吧&#xff0c;尽管在…

记录工作中遇到的问题

只要在编程&#xff0c;遇到问题是肯定的&#xff0c;不过经常性遇到弱智的问题可就不太好了。把问题记录下来&#xff0c;提醒自己 问题 主机解析异常&#xff0c;内部多个系统&#xff0c;系统的登录需要从CAS中心得到登录信息&#xff0c;如果失败会提示登录失败。今天一直跳…

php7安装详解_,PHP7 redis扩展安装详解

1、安装redis(1)下载&#xff1a;https://github.com/phpredis/phpredis/tree/php7 或下载http://pan.baidu.com/s/1i5DFrjn用samba挂载导进去(2)yum -y install m4 autoconf # 安装依赖(3)unzip phpredis-php7.zip # 解压(4)cd ./phpredis-php7 # 进入目录(5)phpize #用php…

python之_init_函数的简介

1、每个package中都必须包含一个_init_.py文件除了不需要加载模块的 它方便在外部统一调用&#xff0c;和在内部互相调用&#xff0c;它可以为空&#xff0c;当为空时&#xff0c;作用是将这个文件夹下的内容当作包执行&#xff0c;便于解释器区分执行。 2、定义类的时候&#…

22. Generate Parentheses

题目描述&#xff1a; Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. For example, given n 3, a solution set is: ["((()))","(()())","(())()","()(())","()()…

php explain type等级,mysql中explain分析sql详解

Explain举例mysql> explain select * from event;—-————-——-——————————————————-| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |—-————-——-——————————————————-| 1 | SIMPL…

es6中的块级作用域

块级作用域 凡是带{}都是块级作用域&#xff0c;if(){} for(){} 对象{} 1.在块级作用域下&#xff0c;var 和function跟在window下一样&#xff0c; function有个特殊的一点&#xff0c;在块级作用域下会提前声明&#xff0c;不会提前定义 2.在块级作用域下 let和const声明的变…

Windows10安装Ubuntu子系统+docker教程说明

说明 微软和Ubuntu深入合作推出了基于win桌面运行Ubuntu系统.为了满足开发同学也在win下也可以使用ubuntu的开发环境.通过利用win上的Linux子系统Ubuntu16.04能否安装docker并正常使用 复制代码 首先在安装Ubuntu应用之前&#xff0c;我们要做一些事情&#xff0c;避免安装和使…

【HDU - 2612】Find a way(bfs)

-->Find a way 直接上Chinese Descriptions: hsj和lsh最近迷上了pokemon go的游戏。在双十一大物期中考试来临之前&#xff0c;他们想抓一只稀有土拨鼠来攒攒人品&#xff08;因为土拨鼠的刷新地点最近来到了哈工程&#xff09;但是由于土拨鼠过于强大&#xff0c;他的雷霆半…

getMeasuredWidth和getWidth的区别

View的getWidth()和getMeasuredWidth()有什么区别吗&#xff1f; View的高宽是由View本身和Parent容器共同决定的。getMeasuredWidth()和getWidth()分别对应于视图绘制的measure和layout阶段。getMeasuredWidth()获取的是View原始的大小&#xff0c;也就是这个View在XML文件中配…

php图片地址参数错误,图片上传时一直显示请求地址错误怎么办

1、出现“请求地址错误”的直接原因&#xff1a;图中$action null2.根本原因&#xff1a;url美化那一节课程&#xff0c;去掉 index.php的.htaccess 文件修改的时候&#xff0c;没有按照老师的来写&#xff0c;所以美化url以后获取不到地址栏参数&#xff0c;导致$action值为n…

C#写的WebServices可运行于树莓派

阅读目录 Raspkate - 基于.NET的可运行于树莓派的轻量型Web服务器Raspkate项目演示回到目录Raspkate - 基于.NET的可运行于树莓派的轻量型Web服务器 最近在业余时间玩玩树莓派&#xff0c;刚开始的时候在树莓派里写一些基于wiringPi库的C语言程序来控制树莓派的GPIO引脚&#x…

[导入]Ms XmlDom 异步装载Xml文件

Ms XmlDom 异步装载Xml文件文章来源:http://blog.csdn.net/net_lover/archive/2004/07/07/36015.aspx 转载于:https://www.cnblogs.com/zhaoxiaoyang2/archive/2004/07/07/816151.html

Django的View(视图)

Django的View&#xff08;视图&#xff09; 一个视图函数&#xff08;类&#xff09;&#xff0c;简称视图&#xff0c;是一个简单的Python 函数&#xff08;类&#xff09;&#xff0c;它接受Web请求并且返回Web响应。 响应可以是一张网页的HTML内容&#xff0c;一个重定向&am…

高质量的期货研究报告去哪里找?

作者&#xff1a;虎虎的小尾巴链接&#xff1a;https://www.zhihu.com/question/25331621/answer/205439281来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。这是个好问题&#xff0c;我曾经或者直到现在我也一直在追求高…

oracle中偏移,怎么对相同的坐标点偏移?

上面说的第三步必须保证每个点不能重复分配&#xff0c;有些难度&#xff0c;还是用过程代码吧。CREATE TABLE t_offset asselect 1 id,1.001 x,1.002 y, 10 mark from dualunion allselect 2011 id,1.001 x,1.012 y, 31 mark from dualunion allselect 3…

设计模式之--原型模式

1.原型模式定义 原型模式非常简单&#xff0c;定义如下&#xff1a; 用原型实例指定创建对象的种类&#xff0c;并且通过拷贝这些原型创建新的对象 2.通用类图 原型模式的核心是实现Cloneable接口&#xff0c;此接口为JDK提供的一个标识接口&#xff0c;只有实现了此接口的类才…

搜索目录里所有文件(包括子目录)

搜索目录里所有文件(包括子目录&#xff09; 资料来源&#xff1a;http://www.cnblogs.com/jjwwww/archive/2004/09/04/39559.aspx 用到两个函数ParseDirectory 和CreatePathListvoidParseDirectory(stringpath, stringfilter) { strin…