初识jQuery

文章目录

  • 一、jQuery介绍
  • 二、Jquery优势
  • 三、jQuery版本
  • 四、jQuery对象
    • jQuery的引用
    • js代码与jQuery代码对比
    • 标签对象与jQuery对象
  • 五、jQuery查找标签
    • 1.基本选择器
    • 2.组合选择器
    • 3.层次选择器
    • 4.属性选择器
    • 5.基本筛选器
    • 6.表单筛选器
  • 六、筛选器方法
  • 七、操作标签
    • 1.class操作
    • 2.文本操作
    • 3.创建标签
    • 4.属性操作
    • 5.位置操作
    • 6.文档处理
  • 八、jQuery事件
    • jQuery绑定事件
    • 克隆事件
    • 阻止后续事件
    • 阻止事件冒泡
    • 事件委托
  • 九、Bootstrap框架

一、jQuery介绍

  1. jQuery是一个轻量级的、兼容多浏览器的JavaScript库
  2. jQuery是用户能够更方便的处理HTML Document、Events、实现动画效果,并且方便地进行Ajax交互,能够极大的简化JavaScript编程。它的宗旨就是:“Write less,do more”

二、Jquery优势

  1. 一款轻量级的JS框架。jQuery核心js文件才几十kb,不会影响页面加载速度。(加载速度快)

  2. 丰富的DOM选择器。jQuery的选择器用起来很方便,比如要找到某个DOM对象的相邻元素,JS可能要写好几行代码,而jQuery一行代码就搞定了,再比如要将一个表格的隔行变色,jQuery也是一行代码搞定。(选择器更多)

  3. 链式表达式。jQuery的链式操作可以把多个操作写在一行代码搞定,更加简洁。

  4. 事件、样式、动画支持。jQuery还简化了js操作css的代码,并且代码的可读性也比js要强。

  5. Ajax操作支持。jQuery简化了 Ajax操作,后端只需返回一个JSON格式的字符串就能完成与前端的通信。

  6. 跨浏览器兼容。jQuery基本兼容了现在主流的浏览器,不用再为浏览器的兼容问题而伤透脑筋。

  7. 插件扩展开发。jQuery有着丰富的第三方的插件,例如:树形菜单、日期控件、图片切换插件、弹出窗口等等基本前端页面上的组件都有对应的插件,并且用jQuery插件做出来的效果很炫,并且可以更具自己需要去改写和封装插件,简单实用。


三、jQuery版本

  • 1.x:兼容IE678,使用最为广泛的,官方只做BUG维护,功能不再新增。因此一般项目来说,使用1.x版本就可以了,最终版本:1.12.4(2016年5月20日)
  • 2.x:不兼容IE678,很少有人使用,官方只做BUG维护,功能不再新增,如果不考虑兼容低版本的浏览器可以使用2.x,最终版本:2.2.4(2016年5月20日)
  • 3.x:不兼容IE678,只支持最新的浏览器。需要注意的是很多老的jQuery插件不支持3.x版本。目前该版本是官方主要更新维护的版本。

维护IE678是一件让人头疼的事情,一般我们都会额外加载一个CSS和JS单独处理。值得庆幸的是使用这些浏览器的人也逐步减少,PC端用户已经逐步被移动端用户所取代,如果没有特殊要求的花,一般会选择放弃对IE678的支持

四、jQuery对象

jQuery对象就是通过jQuery包装DOM对象后产生的对象。jQuery对象就是jQuery独有的。
如果一个对象是jQuery对象,那么它就可以使用jQuery里面的方法

	jQuery导入之后需要使用关键字才能够使用默认的关键字就是jQuery但是不好输入可以使用$符号替换jQuery封装了js代码,让编写更简单,但是有时候js代码更快(原因要下加载jQuery在加载js代码)ex:$('#dl1').html(); //获取id值为dl1的元素的html代码,其中html()是jQuery里面的方法上面一句话相当于:document.getElementById('dl1').innerHTML;虽然jQuery对象是包装DOM对象产生的,但是jQuery对象无法使用DOM对象的任何方法,同理DOM对象也不能使用jQuery里的方法一个约定,我们在申明一个jQuery对象变量的时候,都在变量名前面使用$符号

jQuery的引用

由于jQuery是基于JS而开发出来的,则jQuery就是一堆JS代码,所以我们在使用jQuery前需要先进行引入,这里介绍两种jQuery引入方式。

第一种方式:将jQuery保存到JS文件内引入(这种没有网络也可以使用)

  • 第一步:官方页面下载地址:https://jquery.com/download/
    在这里插入图片描述

  • 第二步:我们将点击箭头指向的版本的jQuery(压缩版jQuery可能会看不懂,但是相对会节省一些空间,虽然对于电脑来说大差不差)(未压缩版能让你看到排序完整的jQuery源码),随便个人选择那个版本,点击进去后就能看到一堆代码,直接在页面Ctrl+S另存为就行了。(也可以自己Ctrl+A复制代码自己在编辑器中创建相应的js文件粘贴进去)
    在这里插入图片描述
    此时我们就已经将jQuery保存到了一个JS文件内了
    在这里插入图片描述

  • 第三步:我们在HTML内通过script标签进行jQuery引入

	<script src='jQueryjs文件地址'></script>

第二种引入方式:通过网址引入(这种是必须要有网络才能使用)

  • 我们可以通过Bootcdn:cdn是一个内容分发网络,主要作用就是可以从距离我们本地最近的一个服务器获取内容。网址:https://www.bootcdn.cn/
    在这里插入图片描述
  • 然后选择版本号和版本,然后点击复制即可。
    在这里插入图片描述
  • 复制标签后我们就可以在HTML内的head的标签内粘贴了
    在这里插入图片描述

到此我们的jQuery引入就已经完成了,我选择的是网址引入的,当然最好是把jQuery的js文件的留作备份,以防没网时需要用到。

js代码与jQuery代码对比

	let pel = document.getElementsByTagName('p')[0];  //标签名pel.style.color = 'lightblue';pel.nextElementSibling.style.color='darkred';$('p').first().css('color','yellow').next().css('color','blue');

标签对象与jQuery对象

	产生对象var $variable = JQuery对象var variable = DOM对象$variable[0]  // jQuery对象转换成DOM对象1.不同的对象能够调用的方法是不同的在编写代码的时候一定要看清楚写的时什么对象$('#id').html();  //jQuery对象可以使用JQuery的方法$('#id')[0].innerHTML; //DOM对象使用DOM的方法2.两者可以互相转换标签对象转jQuery对象$(标签对象);jQuery对象转标签对象jQuery对象[0];

五、jQuery查找标签

1.基本选择器

	$('#id值');  // id选择器$('.class值');  // class选择器$('标签名');  // 标签选择器

2.组合选择器

	$('span.c1');  // 查找span元素并且class类为c1的元素$('div#di');   // 查找div元素并且id值为di的元素$('div,span,p'); //查找div、span、p标签$('span,#dl,.box');  //查找span标签、id值为dl的标签和类为box的所有标签$('*'); //查找所有元素选择器

3.层次选择器

	$('div span'); // 查找div里面所有span后代(子子孙孙)$('div > span'); // 查找div里面的span标签(儿子)$('div + span'); // 查找紧挨着div同层级后面的span标签(相邻)$('div ~ span'); // 查找div同层级后面的所有span标签(兄弟)
	jQuery选择器查找标签之后的结果与js有何区别结果集都是数组但是功能有区别1.如果使用索引取值 那么都是标签对象标签对象是无法调用jQuery提供的方法的      # 详细查看图一2.标签对象如果想转换成jQuery对象需要使用 $()转换成jQuery对象的目的是为了使用jQuery提供的更多方法  # 详细查看图二

在这里插入图片描述
在这里插入图片描述

4.属性选择器

	$('[name=gender]'); //找到name值为gender的标签$('input[name=gender]'); //找到name属性值为gender的input标签$('input[name!=gender]'); //找到name属性值不为gender的input标签

在这里插入图片描述

5.基本筛选器

	:first // 第一个:last // 最后一个:eq(index) // 索引等于index的那个元素:even // 匹配所有索引值为偶数的元素,从0开始计数:odd // 匹配所有索引值为奇数的元素,从0开始计数:gt(index) // 匹配所有大于给定索引值的元素:lt(index) // 匹配所有小于给定索引值的元素:not(元素选择器) // 移除所有满足not条件的标签:has(元素选择器) // 选取所有包含一个或多个标签在其内的标签(指的是从后代元素找)$('li:first'); 优化  $('li').first()

6.表单筛选器

	// 举例查找input标签<input type='text'><input type='password'><input type='checkbox'>$('input[type="checkbox"]'); //取到checkbox类型的input标签$("input[type!='text']"); //取到类型不是text的input标签表单筛选器可以看成是属性选择器优化而来:text  //获取文本类型:password // 获取密码类型:file 		// 获取文件类型:radio 		// 获取单选框类型:checkbox 	// 获取复选框类型:submit 	// 获取提交按钮类型:reset 		// 获取重置按钮类型:button 	// 获取普通按钮类型:enabled 	// 获取可以使用的类型:disabled	// 获取被禁用的类型:checked	// 获取单选框默认被选中的类型:selected	// 获取下拉框默认被选中的类型

在这里插入图片描述

六、筛选器方法

		查找下一个元素:$("#id").next()$("#id").nextAll()$("#id").nextUntil("#i2")查找上一个元素:$("#id").prev()$("#id").prevAll()$("#id").prevUntil("#i2")查找父元素:$("#id").parent()$("#id").parents()  	// 查找当前元素的所有的父辈元素$("#id").parentsUntil() // 查找当前元素的所有的父辈元素,直到遇到匹配的那个元素为止。查找儿子与兄弟元素:$("#id").children();	// 儿子们$("#id").siblings();	// 兄弟们'''链式操作的底层原理'''对象调用方法之后还会返回一个对象 从而实现链式操作的效果如果面向对象里面返回的对象也想继续再通过句点符的方式使用函数内添加一个 return self(具体看图2).first() 					// 获取匹配的第一个元素.last() 					// 获取匹配的最后一个元素.not() 						// 从匹配元素的集合中删除与指定表达式匹配的元素.has() 						// 保留包含特定后代的元素,去掉那些不含有指定后代的元素。.eq() 						// 索引值等于指定值的元素

在这里插入图片描述

在这里插入图片描述

七、操作标签

1.class操作

	jQuery操作				js操作addClass()			classList.add()	//添加指定的类名removeClass()		classList.remove()	//移除指定的类名hasClass()			classList.contains()  //判断当前类是否存在toggleClass()		classList.toggle()	 //判断当前类是否存在,存在则删除,不存在则添加.css('样式名','样式值')		style.样式名='样式值'

2.文本操作

	jQuery操作				js操作text()					innerText()	//获取text里所有的内容html()					innerHTML()	//获取html里所有的内容val()					value()		//取得匹配的内容值[0].files				files[0]	//取得匹配的文件值eg:<input type="text" id="d1"><input type="file" id="d2">$('#d1').val()   //获取input框内值$('#d1').val('520快乐');  //设置input框内值$('#d2').val()  //获取文件对象$('#d2')[0].files$('#d2')[0].files[0]  //正确拿到文件数据

3.创建标签

	jQuery操作            js操作$('<a>')           document.createElement('a')   

4.属性操作

	jQuery操作				js操作atter()				setAttribute() getAttribute()	//获取匹配的属性值attr针对动态变化的属性获取会失真,比如性别选择已经默认选择男生,但是我们在浏览器终端里面操作prop,
点击女生标签会选中,显示是true,本质应该是false
prop('checked')  prop('selected')代码展示1<body><input type="text"><input type="password"><input type="radio"><input type="radio" checked><input type="radio">其他<select name="" id=""><option value="">111</option><option value="" selected>222</option><option value="">333</option></select><input type="submit" value="提交"><input type="button" value="按钮">
</body>

在这里插入图片描述

5.位置操作

	offset()   // 获取匹配元素在当前窗口的相对偏移或设置元素位置position()  // 获取匹配元素相对父元素的偏移scrollTop()  // 获取匹配元素相对滚动条顶部的偏移scrollLeft()  // 获取匹配元素相对滚动条左侧的偏移eg:$(window).scrolltop()$('p').position();$('p').offset();

6.文档处理

	添加到指定元素内部后面(追加内容)$(A).append(B); //把B追加到A	$(A).appendTo(B); //把A追加到B添加到指定元素内部的前面(放置到前标签前面)$(A).prepend(B); // 把B放置到A$(A).prependTo(B); //把A放置到B添加到指定元素外部的前面$(A).after(B); //把B放到A的后面$(A).insertBefore(B); //把A放到B的前面移除和清空元素$('标签名').remove() //从DOM中删除所有匹配的元素$('标签名 子标签名')empty()  //删除匹配的元素集合中所有的子节点prop()	//获取属性值,可以动态变换(checked)eg:1.创建p标签let $pEle = $('<p>')2.p标签创建文本$pEle.text('你好啊')3.p标签设置属性id名为d1值$pEle.attr('id','d1')4.内部尾部追加$('#d1').append($pEle)  将变量添加到标签内部$pEle.appendTo($('#d1'))

八、jQuery事件

jQuery绑定事件

		Js绑定事件绑定方式1: 提现写好函数 标签内部指定点击的时候运行<input type="button" value="点我" onclick="func1()">function func1(){alert('我说点点我就点我啊?')}	绑定方式2: 先查询到标签 然后绑定使用 可以批量绑定<button id="d1">点一点</button>let butEle = document.getElementById('d1')butEle.onclick = function(){alert('你个傻儿 你又点!')}'''对于JS绑定事件不明白 可以查看前篇文章'''JQ绑定事件绑定方式1jQuery对象.事件名(function(){事件代码})$btnEle.click(function(){alter(123)})绑定方式2jQuery对象.on('事件名',function(){事件代码})$btnEle.on('click',function(){alter(123)})'''	有时候使用jQuery的方式1绑定事件如果无法触发 可以切换为方式2 '''

克隆事件

clone(true)  默认不克隆事件   加true就可以<button id="d1"> 克隆成功</button>
<script>// 克隆$('#d1').on('click',function (){// this指代是当前被操作的标签对象 $('#d1')console.log(this)  //点击按钮克隆成功,输出台会持续克隆$(this).clone().insertAfter($('body'))//克隆按钮(克隆成功)在浏览器展示,只克隆html,css 不克隆事件$(this).clone(true).insertAfter($('body')) //括号内增加true 实现克隆事件})
</script>

**事件相关补充**

阻止后续事件

	阻止后续事件可以理解成一个标签完成了百分之五十进度后面的百分之五十被阻止运行 这就是阻止后续事件能够触发form表单提交数据的动作标签有两个 <input type="submit">	<button></button>让标签自带的属性不执行有两种方法1. return false2. e.preventDefault()
	<!DOCTYPE html><html><head><meta charset="utf-8"><title></title><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script></head><body><form action=""><p>再加把劲: <input type="text" name="info" placeholder="加油啦!!!"/></p><input type="submit" value="提交"/><button>but提交</button></form>			'''我们输入的内容通过点击按钮可以发送出去刷新页面'''给已经有事件的标签绑定事件 会先执行绑定的 再去执行默认的我们也可以让标签之前的事件不执行	看方式12<script>		$(':submit').click(function (e){alert('一定要细心 千万不要慌!!!')return false  		方式1		e.preventDefault()	方式2})</script></body></html>

阻止事件冒泡

	冒泡事件可以理解成点击一个按钮之后被嵌套的其他按钮也跟着被按了 一下全部全部触发涉及到标签嵌套并且有相同事件的时候 那么会逐级往上反馈并执行
		<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script></head><body><div>div<p>div>p<span>div>p>span</span></p></div><script>$('div').click(function (e) {alert('div')})$('p').click(function (e) {alert('p')e.stopPropagation()})$('span').click(function (e) {alert('span')// return false})</script></body></html>

在这里插入图片描述

事件委托

	我们在使用静态创建的标签的时候 一个JQ对象就可以使一样的标签拥有同样的效果但是我们使用动态方法创建一个标签 默认情况JQ是不会对动态创建标签生效的 如果想生效需要事件委托

在这里插入图片描述
在这里插入图片描述

九、Bootstrap框架

	本地服务下载网站	https://www.bootcss.com/ 在线CDN服务网站	https://www.bootcdn.cn/	Bootstrap在线CSS	https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.2.0/css/bootstrap.cssBootstrap在线JS	https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.2.0/js/bootstrap.esm.js提前写好了所有的标签样式 直接拷贝使用即可使用之前需要先导入 bootstrap涉及到js的部分需要使用jQuery 图标组件			http://www.fontawesome.com.cn/

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

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

相关文章

048基于web+springboot的校园资料分享平台

欢迎大家关注&#xff0c;一起好好学习&#xff0c;天天向上 文章目录 一项目简介技术介绍 二、功能组成三、效果图四、 文章目录 一项目简介 本校园资料分享平台有管理员和用户两个角色。管理员功能有个人中心&#xff0c;学生管理&#xff0c;资料分享管理&#xff0c;资源分…

FastBond2阶段2——基于ESP32C3开发的简易IO调试设备

1. 项目介绍 之前买了许多国产单片机esp32c3一直在吃灰&#xff0c;没有发挥它的真实价值。非常感谢硬禾组织的Fastbond2活动&#xff0c;刚好两者经过微妙的碰撞。恰可以用于FastBond2活动主题4 - 测量仪器&#xff08;单片机开发测试领域&#xff09;&#xff0c;或者用于国…

VR全景在医院的应用:缓和医患矛盾、提升医院形象

医患关系一直以来都是较为激烈的&#xff0c;包括制度的不完善、医疗资源紧张等问题也时有存在&#xff0c;为了缓解医患矛盾&#xff0c;不仅要提升患者以及家属对于医院的认知&#xff0c;还需要完善医疗制度&#xff0c;提高医疗资源的配置效率&#xff0c;提高服务质量。 因…

Linux学习笔记之三(vim编辑器)

目录 1、vim的四种工作模式2、正常模式下的操作指令2.1、进入编辑模式2.2、进入命令行模式2.3、进入视觉模式2.4、光标跳转2.5、复制、粘贴、删除2.6、重复、撤回操作 3、命令行模式下的操作指令 1、vim的四种工作模式 vim的四种工作模式分别是编辑模式(insert mode)、命令行模…

多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉 计算机竞赛

文章目录 0 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习多目标跟踪 …

【Linux】僵尸进程、孤儿进程的理解与验证

僵尸进程 概念 僵尸进程&#xff08;Zombie Process&#xff09;是指一个已经终止执行的子进程&#xff0c;但其父进程尚未调用 wait() 或 waitpid() 函数来获取子进程的退出状态。 Linux 中&#xff0c;僵尸进程会保留一些资源&#xff0c;如进程 ID、进程表项和一些系统资源…

王道p18 07.将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表。(c语言代码实现)

视频讲解在这&#xff1a;&#x1f447; p18 第7题 c语言代码实现王道数据结构课后代码题_哔哩哔哩_bilibili 本题代码如下 int merge(struct sqlist* A, struct sqlist* B, struct sqlist* C) {if (A->length B->length > C->length)//大于顺序表的最大长度r…

48基于matlab的经验傅里叶分解,适用于非线性及非平稳时间序列分析,将信号进行精确分解。程序已调通,可直接运行。

基于matlab的经验傅里叶分解&#xff0c;适用于非线性及非平稳时间序列分析&#xff0c;将信号进行精确分解。程序已调通&#xff0c;可直接运行。

玻色量子签约移动云“五岳”量子云计算创新加速计划!

2023年4月24-26日&#xff0c;由中国移动通信集团主办的“云擎未来 智信天下”2023移动云大会在苏州圆满落幕。 中国移动在本次大会发布了“五岳”量子云计算创新加速计划。作为中国移动量子计算方向的战略伙伴&#xff0c;玻色量子创始人&CEO文凯博士代表北京玻色量子科技…

分布式单元化

一 分布式单元化 1.1 两地三中心 顾名思义&#xff0c;两地指的是两个城市&#xff1a;同城&#xff0c;异地。三中心指的是三个数据中心&#xff1a;生产中心、同城容灾中心、异地容灾中心。 在同一个城市或者临近的城市建设两个相同的系统&#xff0c;双中心具备相当的业…

力扣 141.环形链表和142.环形链表2

目录 1.环形链表Ⅰ解题思路2.环形链表Ⅰ代码实现3.环形链表Ⅱ解题思路4.环形链表Ⅱ代码实现 1.环形链表Ⅰ解题思路 利用快慢指针&#xff0c;快指针一次走两个&#xff0c;慢指针一次走一个&#xff0c;如果出现了快指针为空或者快指针的next为空的现象则说明不带环&#xff0…

Docker dnmp 多版本php安装 php8.2

Laravel9 开发需要用到php8.1以上的版本&#xff0c;而dnmp只支持到php8.0。安装php8.2的步骤如下&#xff1a; 1. 从/services/php80目录复制一份出来&#xff0c;重命名为php82&#xff0c;extensions目录只保留 install.sh 和 install-php-extensions 这两个文件 2. 修改.en…

4 Tensorflow图像识别模型——数据预处理

上一篇&#xff1a;3 tensorflow构建模型详解-CSDN博客 本篇开始介绍识别猫狗图片的模型&#xff0c;内容较多&#xff0c;会分为多个章节介绍。模型构建还是和之前一样的流程&#xff1a; 数据集准备数据预处理创建模型设置损失函数和优化器训练模型 本篇先介绍数据集准备&am…

网络安全应急响应工具(系统痕迹采集)-FireKylin

文章目录 网络安全应急响应工具(系统痕迹采集)-FireKylin1.FireKylin介绍【v1.4.0】 2021-12-20【v1.0.1】 2021-08-09 2.客户端界面Agent支持的操作系统FireKylinAgent界面使用方式比较传统方式与FireKylin比较无法可达目标的场景应用对比 3.使用教程设置语言Agent配置&#x…

c++11中的线程库和包装器

c11 1. 线程库1.1 线程库1.2 锁mutex 2. 包装器2.1 funciton2.2 bind 1. 线程库 1.1 线程库 C11中的线程库提供了一种方便的方式来创建和管理线程。其中&#xff0c;std::thread是一个重要的类&#xff0c;它允许我们创建新线程并控制它们的执行。以下是std::thread的一些重要…

1822_使用python内置的库进行日期序列的生成

使用python的内置的库进行日期序列的生成 用到的库介绍 datetime 实现这样的功能其实只需要这一个库就够了&#xff0c;但是网络上找到的例程很多都额外增加了对time库的引用。只能说&#xff0c;这样不会出现错误&#xff0c;但是这样肯定会有一些计算资源上的消耗。 #!/u…

零信任网络:一种全新的网络安全架构

随着网络技术的不断发展&#xff0c;网络安全问题日益凸显。传统的网络安全策略往往基于信任和验证&#xff0c;但这种信任策略存在一定的局限性。为了解决这一问题&#xff0c;零信任网络作为一种全新的网络安全架构&#xff0c;逐渐受到人们的关注。本文将对零信任网络的概念…

回归预测 | Matlab实现MPA-BP海洋捕食者算法优化BP神经网络多变量回归预测

回归预测 | Matlab实现MPA-BP海洋捕食者算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现MPA-BP海洋捕食者算法优化BP神经网络多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现MPA-BP海洋捕食者算法优化BP神经网络多变量回归预测&…

同步网盘与云盘:哪个更好用?

同步网盘、同步云盘现在是热门的文件管理工具&#xff0c;在回答“同步网盘云盘哪个好用”这个问题之前&#xff0c;我们需要知道什么样的同步网盘、同步云盘算好用&#xff1f; 什么样的同步网盘云盘好用&#xff1f; 1、存储空间大 对于文件管理工具而言&#xff0c;存储空…

PCTA认证考试-01_TiDB数据库架构概述

TiDB 数据库架构概述 一、学习目标 理解 TiDB 数据库整体结构。了解 TiDB Server&#xff0c;TiKV&#xff0c;TiFlash 和 PD 的主要功能。 二、TiDB 体系架构 1. TiDB Server 2. TiKV OLTP 3. Placement Driver 4. TiFlash OLAP OLTPOLAPHTAP