JS学习笔记——APIS
API ( Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力, 而又无需访问源码,或理解内部工作机制的细节。
API是给程序员提供的一种工具,以便能更轻松的实现想要完成的功能。
Web API是浏览器提供的一套操作浏览器功能和页面元素的API( BOM和DOM)。
DOM
文档对象模型( Document Object Model ,简称DOM) , 是W3C组织推荐的处理可扩展标记语言( HTML或者XML )的标准编程接口。
DOM树
文档:一个页面就是一个文档, DOM中使用document表示。
元素:页面中的所有标签都是元素, DOM中使用element表示。
节点:网页中的所有内容都是节点(标签、属性、本、注释等) , DOM中使用node表示。
DOM把以上内容都看做是对象
获取元素
DOM在我们实际开发中主要用来操作元素。
获取页面中的元素可以使用以下几种方式:
根据ID获取
根据标签名获取
通过HTML5新增的方法获取
特殊元素获取
根据ID获取
使用getElementByld()方法可以获取带有ID的元素对象。
1.因为我们文档页面从上往下加载,所以先得有标签所以我们script写到标签的下面
2. get获得element元素by通过驼峰命名法
3.参数id是大小写敏感的字符串
4.返回的是一个元素对象
5. console.dir打印我们返回的元素对象更好的查看里面的属性和方法
根据标签名获取
使用getElementsByTagName()方法可以返回带有指定标签名的对象的集合。
注意:
1.因为得到的是一个对象的集合,所以我们想要操作里面的元素就需要遍历。
2.得到元素对象是动态的
3.如果页面中只有一个li返回的还是伪数组的形式
4.如果页面中没有这个元素返回的空的伪数组的形式
获取某个元素(父元素)内部所有指定标签名的子元素
element .getElementsByTagName ( '标签名');
元素必须是单个对象(必须指明是哪一个元素对象). 获取的时候不包括元素自己。
根据类名返回元素对象集合
document.getElementsByClassName(类名') ; //根据类名返回元素对象集合
根据指定选择器返回第一个元素对象
document.querySelector ('选择器') ;// 根据指定选择器返回第一个元素对象
querySelectorAll( )返回指定选择器的所有元素对象集合
document.querySelectorA1l( '选择器'); // 根据指定选择器返回
获取特殊元素( body , html )
获取body元素
doucumnet.body // 返回body元素对象
获取html元素
document.documentElement // 返回htm1元素对象
事件
JavaScript使我们有能力创建动态页面,而事件是可以被JavaScript侦测到的行为。
简单理解:触发---响应机制。
1.事件是有三部分组成 事件源 事件类型 事件处理程序,我们也称为事件三要素。
(1) 事件源事件被触发的对象。
(2)事件类型,如何触发什么事件。比如鼠标点击(onclick)还是鼠标经过 还是键盘按下
(3)事件处理程序通过一个函数赋值的方式完成。
执行事件步骤
1.获取事件源
2.绑定事件注册事件
3.添加事件处理程序
常见的鼠标事件
操作元素
JavaScript的DOM操作可以改变网页内容、结构和样式,我们可以利用DOM操作元素来改变元素里面的内容、属性等。注意以下都是属性
改变元素内容
element.innerText
从起始位置到终止位置的内容但它去除html标签,同时空格和换行也会去掉
element.innerHTML
起始位置到终止位置的全部内容,包括html标签,同时保留空格和换行
innerText和innerHTML 的区别
1.innerText不识别html标签
2. innerHTML 识别html标签
样式属性操作
1. element.style 行内样式操作
2. element.className 类名样式操作
注意:
1.JS里面的样式采取驼峰命名法,比如fontSize、 backgroundColor
2.JS修改style样式操作,产生的是行内样式, Css权重比较高
表单操作
获得焦点事件 onfocus
失去焦点事件 onblur
排他思想
如果有同一-组元素,我们想要某一个元素实现某种样式 ,需要用到循环的排他思想算法:
1.所有元素全部清除样式(干掉其他人)
2.给当前元素设置样式( 留下我自己)
3.注意顺序不能颠倒,先干掉其他人,设置自己
自定义属性的操作
1.获取属性值
element.属性 获取属性值。
element .getAttribute('属性');
区别:
element.属性获取内置属性值 (元愫本身自带的属性)
element .getAttribute( \属性');主要获得自定义的属性 (标准)我们程序员自定义的属性
2.设置属性值
element.属性= '值' 设置内置属性值。
element. setAttribute('属性','值') ;
移除属性 removeAttribute( 属性);
自定义属性目的:是为了保存并使用数据。有些数据可以保存到页面中而不用保存到数据库中。
设置H5自定义属性
H5规定自定义属性data-开头做为属性名并且赋值。比如<div data-index=“1” > </div>
获取H5自定义属性
1.兼容性获取element.getAttribute( 'data-index' );
2. H5新增 element.dataset.index或者element.dataset[ "index'] ie 11才开始支持
节点
网页中的所有内容都是节点(标签、属性、本、注释等) , 在DOM中,节点使用node来表示。
HTML DOM树中的所有节点均可通过JavaScript进行访问,所有HTML元素(节点)均可被修改,也可以
创建或删除。
一般地 ,节点至少拥有nodeType (节点类型)、nodeName (节名称)和nodeValue (节点值)这三个
基本属性。
元素节点nodeType为1
属性节点nodeType为2
文本节点nodeType为3 (文本节点包含文字、空格、换行等)
父级节点
node.parentNode
parentNode属性可返回某节点的父节点,注意是最近的一个父节点
如果指定的节点没有父节点则返回null
子节点
parentNode.childNodes (标准 )
parentNode. childNodes返回包含指定节点的子节点的集合,该集合为即时更新的集合。
注意:
返回值里面包含了所有的子节点,包括元素节点,文本节点等
如果只想要获得里面的元素节点,则需要专门]处理。
parentNode.children (非标准)
parentNode. children是一个只读属性,返回所有的子元素节点。它只返回子元素节点,其余节点不返
回。虽然children是一个非标准,但是得到了各个浏览器的支持,因此我们可以放心使用
parentNode.firstChild
firstChild返回第一个子节点,找不到则返回null。同样,也是包含所有的节点。
parentNode.lastChild
firstElementChild返回第一个子元素节点 ,找不到则返回null.
parentNode.lastElementChild
lastElementChild返回最后一个子元素节点 ,找不到则返回null。
这两个方法有兼容性问题, IE9以上才支持。
兄弟节点
node.nextSibling
nextsibling返回当前元素的下一个兄弟节点,找不到则返回null。同样,也是包含所有的节点。
node.previousSibling
previoussibling返回当前元素上一个兄弟节点,找不到则返回null。同样,也是包含所有的节点。
node.nextElementSibling
nextElementsibling返回当前元素下一个兄弟元素节点,找不到则返回null.
node.previousElementSibling
previousElementsibling返回当前元素上一个兄弟节点,找不到则返回null.
这两个方法有兼容性问题, IE9以上才支持。
创建节点
document.createElement('tagName')
document. . createElement()方法创建由tagName 指定的HTML元素。因为这些元素原先不
是根据我们的需求动态生成的,所以我们也称为动态创建元素节点。
添加节点
node.appendChild(child)
node. appendChild()方法将一个节点添加到指定父节点的子节点列表末尾。类似于css里面的
after伪元素。
node.insertBefore (child,指定元素)
node. insertBefore ()方法将一个节点添加到父节点的指定子节点前面。类似于css里面的before
伪元素。
删除节点
node.removeChild(child)
node. removeChild()方法从DOM中删除一个子节点,返回删除的节点。
复制节点(克隆节点)
node.cloneNode ()
node.cloneNode ()方法返回调用该方法的节点的一一个副本。也称为克隆节点/拷贝节点
1. node.cloneNode();括号为空或者里面是false浅拷贝,只复制标签不复制里面的内容
2. node. cloneNode(true);括号为true深拷贝,复制标签复制里面的内容
三种动态创建元素区别
1. document .write是直接将内容写入页面的内容流,但是文档流执行完毕,则它会导致页面全部重绘
2. innerHTML 是将内容写入某个DOM节点,不会导致页面全部重绘
3. innerHTML 创建多个元素效率更高(不要拼接字符串,采取数组形式拼接) , 结构稍微复杂
4. createElement()创建多个元素效率稍低-点点,但是结构更清晰。
不同浏览器下, innerHTML效率要比creatElement 高
鼠标事件
注册事件
给元素添加事件,称为注册事件或者绑定事件。注册事件有两种方式:传统方式和方法监听注册方式
传统注册方式
利用on开头的事件onclick。
特点:注册事件的唯一性。
同一个元素同一个事件只能设置一个处理函数 ,最后注册的处理函数将会覆盖前面注册的处理函数
方法监听注册方式
w3c标准推荐方式。
addEventListener()它是一个方法。IE9之前的IE不支持此方法,可使用attachEvent()代替。
特点:同一个元素同一个事件可以注册多个监听器。
addEventListener事件监听方式
eventTarget.addEventListener(type,listener[,useCapture] )
eventTarget .addEventListener ()方法将指定的监听器注册到eventTarget (目标对象)上,当该对
象触发指定的事件时,就会执行事件处理函数。
该方法接收三个参数:
type :事件类型字符串,比如click、mouseover , 注意这里不要带on
listener :事件处理函数,事件发生时,会调用该监听函数
useCapture :可选参数,是一个布尔值,默认是false。
事件流
事件流描述的是从页面中接收事件的顺序。
事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程即DOM事件流。
DOM事件流分为3个阶段:
1.捕获阶段
2.当前目标阶段
3.冒泡阶段
事件冒泡: IE最早提出,事件开始时由最具体的元素接收,然后逐级向上传播到到DOM最顶层节点的过程。
事件捕获:网景最早提出,由DOM最顶层节点开始,然后逐级向下传播到到最具体的元素接收的过程。
注意:
1. JS代码中只能执行捕获或者冒泡其中的一个阶段。、
2. onclick和attachEvent只能得到冒泡阶段。
3. addEventListener (type, listener [, useCapture] )第三个参数如果是true ,表示在事件捕
获阶段调用事件处理程序;如果是false (不写默认就是false ) ,表示在事件冒泡阶段调用事件处理
程序。
事件对象
eventTarget.onclick = function (event) { }
eventTarget.addEventListener('click', function(event) {})
//这个event就是事件对象,我们还喜欢的写成e或者evt
event对象代表事件的状态,比如键盘按键的状态鼠标的位置、鼠标按钮的状态。
事件对象的常见属性和方法
e.target返回的是触发事件的对象(元素)
this 返回的是绑定事件的对象(元素)。
阻止事件冒泡的两种方式
标准写法:利用事件对象里面的stopPropagation()方法
e.stopPropagation ()
非标准写法: IE6-8利用事件对象cancelBubble属性
e.cangelBubble = true;
阻止事件冒泡的兼容性解决方案
if(e && e. stoppropagation) {e.stopPropagation() ;
}else {window.event.cancelBubble = true;
}
事件委托
事件委托也称为事件代理,在jQuery里面称为事件委派。
事件委托的原理
不是每个子节点单独设置事件监听器,而是事件监听器设置在其父节点上,然后利用冒泡原理影响设置每个子节点。
常用的鼠标事件
禁止鼠标右键菜单,contextmenu主要控制应该何时显示上下文菜单,主要用于程序员取消默认的上下文菜单
document.addEventListener('contextmenu',function(e) {e.preventDefault () ;
})
禁止鼠标选中( selectstart开始选中)
document.addEventListener('selectstart',function(e) {e.preventDefault() ;
})
鼠标事件对象MouseEvent
常用键盘事件
注意:
1.如果使用addEventListener不需要加on
2. onkeypress和前面2个的区别是,它不识别功能键,比如左右箭头,shift 等。
3.三个事件的执行顺序是: keydown-- keypress --- keyup
注意:
onkeydown 和onkeyup不区分字母大小写, onkeypress区分字母大小写。
在我们实际开发中,我们更多的使用keydown和keyup,它能识别所有的键(包括功能键)
Keypress不识别功能键,但是keyCode属性能区分大小写,返回不同的ASCII值
keydown 和keypress在文本框里面的特点:他们两个事件触发的时候,文字还没有落入文本框中。
BOM(浏览器对象模型)
BOM ( Browser Object Model )即浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是window。
BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性。
BOM缺乏标准, JavaScript 语法的标准化组织是ECMA , DOM的标准化组织是W3C , BOM最初是Netscape浏览器标准的一部分。
浏览器对象模型,把「浏览器」当做一个「对象」来看待。
BOM的顶级对象是window。
BOM学习的是浏览器窗口交互的一些对象。
BOM是浏览器厂商在各自浏览器上定义的,兼容性较差。
BOM的构成
window对象是浏览器的顶级对象,它具有双重角色。
1. 它是JS访问浏览器窗口的一个接口。
2.它是一个全局对象。定义在全局作用域中的变量、函数都会变成window对象的属性和方法。
3.在调用的时候可以省略winow ,前面学习的对话框都属于window对象方法,如alert0、prompt()等
注意: window 下的一个特殊属性window.name
window对象的常见事件
窗口加载事件
window.onload = function() {}
或者
window.addEventListener("load",function(){}) ;
window.onload是窗口(页面)加载事件,当文档内容完全加载完成会触发该事件(包括图像、脚本文件、CSS文件等),就调用的处理函数。
注意:
1.有了window.onload就可以把JS代码写到页面元素的,上方,因为onload是等页面内容全部加载完毕,再去执行处理函数。
2. window.onload传统注册事件方式只能写一次,如果有多个,会以最后一个window.onload为准。
3.如果使用addEventListener则没有限制。
document.addEventListener('DOMContentLoaded',function() {})
DOMContentLoaded事件触发时,仅当DOM加载完成,不包括样式表,图片, flash等等。le9以上才支持。
如果页面的图片很多的话,从用户访问到onload触发可能需要较长的时间,交互效果就不能实现,必然影响用户的体验,此时用DOMContentLoaded事件比较合适。
调整窗口大小事件
window.onresize = function() { }
window.addEventListener("resize",function() {}) ;
window.onresize是调整窗口大小加载事件,当触发时就调用的处理函数。
注意:
1.只要窗口大小发生像素变化,就会触发这个事件。
2.我们经常利用这个事件完成响应式布局。window.innerWidth 当前屏幕的宽度。
定时器
window对象给我们提供了2个非常好用的方法——定时器。
setTimeout()定时器
window.setTimeout (调用函数,[延迟的毫秒数]) ;
setTimeout()方法用于设置一个定时器 ,该定时器在定时器到期后执行调用函数。
注意:
1. window可以省略。
2.这个调用函数可以直接写函数,或者写函数名或者采取字符串 ‘函数名()' 三种形式。
3.延迟的毫秒数省略默认是0 ,如果写,必须是毫秒。
4.因为定时器可能有很多,。所以我们经常给定时器赋值一个标识符
setTimeout()这个调用函数我们也称为回调函数callback
以前我们讲的element.onclick = function(){}或者element.addEventListener("click", fn);里面的函数也是回调函数。
停止setTimeout()定时器
window.clearTimeout(timeoutID)
clearTimeout ()方法取消了先前通过调用setTimeout ()建立的定时器。
setInterval()定时器
window.setInterval(回调函数,[间隔的毫秒数] );
setInterval()方法重复调用一个函数,每隔这个时间,就去调用一次回调函数。
注意:
1. window可以省略。
2.这个调用函数可以直接写函数,或者写函数名或者采取字符串'函数名0'三种形式。
3.间隔的毫秒数省略默认是0 ,如果写,必须是毫秒,表示每隔多少毫秒就自动调用这个函数。
4.因为定时器可能有很多,所以我们经常给定时器赋值一个标识符。
停止setInterval()定时器
window.clearInterval (intervalID) ;
clearInterval ()方法取消了先前通过调用setInterval ()建立的定时器。
注意:
1. window可以省略。
2.里面的参数就是定时器的标识符。
this
this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,一般情况 下this的最终指向的是那个调用它的对象。
JS执行机制
JS是单线程
JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。这是因为Javascript这门脚本语言诞生的使命所致——JavaScript 是为处理页面中用户的交互,以及操伦DOM而诞生的。比如我们对某个DOM元素进行添加和删除操作,不能同时进行。应该先进行添加,之后再删除。
为了解决这个问题,利用多核CPU的计算能力, HTML5提出Web Worker标准,允许JavaScript脚本创
建多个线程。于是, JS中出现了同步和异步。
同步
前一个任务结束后再执行后一个任务,程序的执行顺序与任务的排列顺序是一致的、 同步的。比如做饭的同步做法:我们要烧水煮饭,等水开了( 10分钟之后) ,再去切菜,炒菜。
异步
你在做一件事情时,因为这件事情会花费很长时间,在做这件事的同时,你还可以去处理其他事情。比如做饭的异步做法,我们在烧水的同时,利用这10分钟,去切菜,炒菜。
同步任务
同步任务都在主线程上执行,形成一个执行栈。
异步任务
JS的异步是通过回调函数实现的。
一般而言,异步任务有以下三种类型:
1、普通事件,如click、 resize等
2、资源加载,如load、error等
3、定时器,包括setInterval、setTimeout 等
JS执行机制
1.先执行执行栈中的同步任务。
2.异步任务(回调函数)放入任务队列中。
3.一旦执行栈中的所有同步任务执行完毕,系统就会按次序读取任务队列中的异步任务,于是被读取的异步任务结束等待状态,进入执行栈,开始执行。
由于主线程不断的重复获得任务、执行任务、再获取任务、再执行,所以这种机制被称为事件循环( event loop)。
location对象
window对象给我们提供了一个location属性用于获取或设置窗体的URL ,并且可以用于解析URL。因为这个属性返回的是一个对象 ,所以我们将这个属性也称为location对象。
URL
统一资源定位符(Uniform Resource Locator, URL)是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL ,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
URL的一般语法格式为:
protocol://host[:port]/path/[?query]#fragment
http://www.itcast.cn/index.html?name=andy&age=18#link
location对象的属性
location对象的方法
navigator对象
navigator对象包含有关浏览器的信息,它有很多属性,我们最常用的是userAgent ,该属性可以返回由客户机发送服务器的user-agent头部的值。
下面前端代码可以判断用户那个终端打开页面,实现跳转。
if((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|
BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|woSBrowser|BrowserNG|Webos|Symbian|
Windows Phone)/i))){window.location.href = ""; //手机
} else {window.location.href = ""; //电脑
}
history对象
window对象给我们提供了一个history 对象,与浏览器历史记录进行交互。该对象包含用户(在浏览器窗口中)访问过的URL。
classList属性
classList属性是HTML 5新增的一个属性,返回元素的类名。但是ie10以上版本支持。
该属性用于在元素中添加,移除及切换CSS类。有以下方法
添加类:是在后面追加类名不会覆盖以前的类名
element.classList.add ('类名');
移除类:
element.classList.remove('类名’) ;
切换类:
element.classList.toggle ('类名’) ;
click延时解决方案
移动端click事件会有300ms的延时,原因是移动端屏幕双击会缩放(double tap to zoom)页面。
解决方案:
1.禁用缩放。浏览器禁用默认的双击缩放行为并且去掉300ms的点击延迟。
<meta name="viewport" content= "user-scalable=no">
2.利用touch事件自己封装这个事件解决300ms延迟。
原理就是:
1.当我们手指触摸屏幕,记录当前触摸时间
2.当我们手指离开屏幕,用离开的时间减去触摸的时间
3.如果时间小于150ms ,并且没有滑动过屏幕,那么我们就定义为点击
移动端常用开发插件
Swiper插件的使用
https://www.swiper.com.cn/
superslide : http://www.superslide2.com/
iscroll : https://github.com/cubiq/iscroll
移动端视频插件zy.media.js
Bootstrap JS插件使用步骤:
1.引入相关js文件
2.复制HTML结构
3.修改对应样式
4.修改相应JS参数
本地存储
本地存储特性
1、数据存储在用户浏览器中
2、设置、读取方便、甚至页面刷新不丢失数据
3、容量较大, sessionStorage约5M、localStorage约20M
4、只能存储字符串,可以将对象JSON.stringify()编码后存储
window.sessionStorage
1、生命周期为关闭浏览器窗口
2、在同一个窗口(页面)下数据可以共享
3、以键值对的形式存储使用
存储数据:
sessionStorage.setltem(key, value)
获取数据:
sessionStorage.getltem(key)
删除数据:
sessionStorage.removeltem(key)
删除所有数据:
sessionStorage.clear()
window.localStorage
1、生命周期永久生效,除非手动删除否则关闭页面也会存在
2、可以哆窗口(面)共享(同-浏览器可以共享)
3.以键值对的形式存储使用
存储数据:
localStorage.setltem(key, value)
获取数据:
localStorage.getltem(key)
删除数据:
localStorage.removeltem(key)
删除所有数据:
localStorage.clear()
JS学习笔记——APIS相关推荐
- ArcGIS JS 学习笔记4 实现地图联动
原文:ArcGIS JS 学习笔记4 实现地图联动 1.开篇 守望屁股实在太好玩了,所以最近有点懒,这次就先写个简单的来凑一下数.这次我的模仿目标是天地图的地图联动. 天地的地图联动不仅地图有联动,而 ...
- backbone.js学习笔记
backbone.js学习笔记 之前只接触过jQuery,看来Backbone是除了jQuery的第二大JS框架... backbone到底是个啥? 其实刚开始我也不知道=_=,我是这周二才听说居然还 ...
- node.js学习笔记
# node.js学习笔记标签(空格分隔): node.js---## 一 内置模块学习 ### 1. http 模块 ``` //1 导入http模块 const http =require('ht ...
- node.js学习笔记14—微型社交网站
node.js学习笔记14-微型社交网站 1.功能分析 微博是以用户为中心,因此需要有注册和登录功能. 微博最核心的功能是信息的发表,这个功能包括许多方面,包括:数据库访问,前端显示等. 一个完整的微 ...
- WebGL three.js学习笔记 6种类型的纹理介绍及应用
WebGL three.js学习笔记 6种类型的纹理介绍及应用 本文所使用到的demo演示: 高光贴图Demo演示 反光效果Demo演示(因为是加载的模型,所以速度会慢) (一)普通纹理 计算机图形学 ...
- html 流程控制,HTML5独家分享:原生JS学习笔记2——程序流程控制
当当当当 .....楼主又来了!新一期的js学习笔记2--程序流程控制更新了! 想一键获取全部js学习笔记的可以给楼主留言哦! js中的程序控制语句 常见的程序有三种执行结构: 1.顺序结构 2.分支 ...
- 基于jquery的插件turn.js学习笔记
基于jquery的插件turn.js学习笔记 简介 turn.js是一个可以实现3d书籍展示效果的jq插件,使用html5和css3来执行效果.可以很好的适应于ios和安卓等触摸设备. How it ...
- Node.js学习笔记8
Node.js学习笔记8 HTTP服务器与客户端 Node.js的http模块,封装了一个高效的HTTP服务器和一个简易的HTTP客户端 http.server是一个基于事件的HTTP服务器,核心由N ...
- node.js学习笔记5——核心模块1
node.js学习笔记5--核心模块1 Node.js核心模块主要内容包括:(1)全局对象 (2)常用工具 (3)事件机制 (4)文件系统访问 (5)HTTP服务器与客户端 一: 全局对象 Node. ...
最新文章
- Cuda Stream流 分析
- Jscript 随记
- 【090723】动态调用webservice
- bzoj4593: [Shoi2015]聚变反应炉
- wait, notify, notifyAll
- 常用的多列等高布局收藏
- php 5.3连接mssql2005以上版本的数据库
- Try using .loc[row_indexer,col_indexer] = value instead
- Extjs学习(3):事件和动作
- CURL基于某个URL请求需要身份验证
- MySQL进阶书籍推荐
- eclipse php 404错误,关于php:Eclipse Subversion插件Subclipse显示错误
- pdffactory 打印字体_PDFFactory
- ipv6协议学习笔记(1)-ipv6基础
- 201671030118 词频统计软件项目报告
- 给工具栏按钮添加图标和文字
- 微商城系统之商家平台任务自动分析处理系统_OctShop
- Nginx下上传图片404
- Excel中ID相同对应表格内容进行合并
- 信号采样频率和信号频率的关系
热门文章
- python携程怎么做数据同步_利用python yielding创建协程将异步编程同步化
- 苹果自带的清理软件_软件| 卸载软件、清理文件,你只需Revo Uninstaller Pro(自带注册程序)...
- 数字信号处理学习笔记[5] 冲激函数——delta函数
- Android 开发笔记 “android调试遇到ADB server didn't ACK以及顽固的sjk_daemon进程 ”
- bzoj 1921: [Ctsc2010]珠宝商
- 【css设置滚动条粗细】
- 手机满信号无法连接服务器,手机信号满格却不能连接网络,为什么会出现这种状况?...
- 计算机必须设置默认打印机,win10系统禁止更改默认打印机设置的还原技巧
- SystemUI 布局
- 微服务踩坑记之Zuul注册到Eureka