精华内容
下载资源
问答
  • 近年来,随着电子技术、计算机技术的发展,无线通信技术蓬勃发展,出现了各种标准的无线数据传输标准,它们各其优缺点和...无线通信技术自身很多优点,成本较低,无线通信技术不必建立物理线路,更不用大量的人...

    近年来,随着电子技术、计算机技术的发展,无线通信技术蓬勃发展,出现了各种标准的无线数据传输标准,它们各有其优缺点和不同的应用场合,本文将目前应用的、无线通信种类进行了分析对比,方便大家参考了解。

    无线通信

    一、无线通信(数据)传输方式及技术原理

    无线通信是利用电磁波信号在自由空间中传播的特性进行信息交换的一种通信方式。无线通信技术自身有很多优点,成本较低,无线通信技术不必建立物理线路,更不用大量的人力去铺设电缆,而且无线通信技术不受工业环境的限制,对抗环境的变化能力较强,故障诊断也较为容易,相对于传统的有线通信的设置与维修,无线网络的维修可以通过远程诊断完成,更加便捷;扩展性强,当网络需要扩展时,无线通信不需要扩展布线;灵活性强,无线网络不受环境地形等限制,而且在使用环境发生变化时,无线网络只需要做很少的调整,就能适应新环境的要求。

    无线通信

    常见的无线通信(数据)传输方式及技术分为两种:“近距离无线通信技术”和“远距离无线传输技术”。

    1. 近距离无线通信技术

    短(近)距离无线通信技术是指通信双方通过无线电波传输数据,并且传输距离在较近的范围内,其应用范围非常广泛。近年来,应用较为广泛及具有较好发展前景的短距离无线通信标准有:Zig-Bee、蓝牙(Bluetooth)、无线宽带(Wi-Fi)、超宽带(UWB)和近场通信(NFC)。

    无线通信

    (1) Zig-Bee

    Zig-Bee是基于IEEE802.15.4标准而建立的一种短距离、低功耗的无线通信技术。Zig-Bee来源于蜜蜂群的通信方式,由于蜜蜂(Bee)是靠飞翔和‘嗡嗡’(Zig)地抖动翅膀的来与同伴确定食物源的方向、位置和距离等信息,从而构成了蜂群的通信网络。其特点是距离近,其通常传输距离是10-100m;低功耗,在低耗电待机模式下,2节5号干电池可支持1个终端工作6-24个月,甚至更长;其成本,Zig-Bee免协议费,芯片价格便宜;低速率,通Zig-Bee常工作在20-250kbps的较低速率;短时延,Zig-Bee的响应速度较快等。主要适用于家庭和楼宇控制、工业现场自动化控制、农业信息收集与控制、公共场所信息检测与控制、智能型标签等领域,可以嵌入各种设备。

    无线通信

    (2) 蓝牙(Bluetooth)

    能够在10米的半径范围内实现点对点或一点对多点的无线数据和声音传输,其数据传输带宽可达1Mbps通讯介质为频率在2.402GHz到2.480GHz之间的电磁波。蓝牙技术可以广泛应用于局域网络中各类数据及语音设备,如PC、拨号网络、笔记本电脑、打印机、传真机、数码相机、移动电话和高品质耳机等,实现各类设备之间随时随地进行通信。

    蓝牙技术被广泛应用于无线办公环境、汽车工业、信息家电、医疗设备以及学校教育和工厂自动控制等领域,蓝牙目前存在的主要问题是芯片大小和价格较高;抗干扰能力较弱。

    (3) 无线宽带(Wi-Fi)

    它是一种基于802.11协议的无线局域网接入技术。(Wi-Fi)技术突出的优势在于它有较广的局域网覆盖范围,其覆盖半径可达100米左右,相比于蓝牙技术,(Wi-Fi)覆盖范围较广;传输速度非常快,其传输速度可以达到11mbps(802.11b)或者54mbps(802.11.a),适合高速数据传输的业务;无须布线,可以不受布线条件的限制,非常适合移动办公用户的需要。在一些人员密集的地方,比如火车站、汽车站、商场、机场、图书馆、校园等地方设置‘热点’,可以通过高速线路将因特网接入上述场所。用户只需要将支持无线网络的终端设备该区域内,即可高速接入因特网;健康安全,具有WiFi功能的产品发射功率不超过100毫瓦,实际发射功率约60-70毫瓦,与手机、手持式对讲机等通讯设备相比,WiFi产品的辐射更小。

    (4) 超宽带(UWB)

    UWB是一种无载波通信技术,利用纳秒至微微秒级的非正弦波窄脉冲传输数据,其传输距离通常在10M以内,使用1GHz以上带宽,通信速度可以达到几百兆bit/s以上,UWB的工作频段范围从3.1GHz到10.6GHz,最小工作频宽为500MHz。

    其主要特点是:传输速率高;发射功率低,功耗小;保密性强;UWB通信采用调时序列,能够抗多径衰落;UWB所需要的射频和微波器件很少,可以减小系统的复杂性。由于系UWB统占用的带宽很高,UWB系统可能会干扰现有其他无线通信系统。UWB主要应用在高分辨率"较小范围"能够穿透墙壁"地面等障碍物的雷达和图像系统中。

    这种装置可以用来检查楼房、桥梁、道路等工程的混凝土和沥青结构中的缺陷,以及定位地下电缆及其它管线的故障位置,也可用于疾病诊断。另外,在救援、治安防范、消防及医疗、医学图像处理等领域都大有用途。

    目前最常见的”无线通信(数据)传输技术“有哪些?

    (5) NFC

    NFC是一种新的近距离无线通信技术,其工作频率为13.56MHz,由13.56MHz的射频识别(RFID)技术发展而来,它与目前广为流行的非接触智能卡ISO14443所采用的频率相同,这就为所有的消费类电子产品提供了一种方便的通讯方式。NFC采用幅移键控(ASK)调制方式,其数据传输速率一般为106kbit/s和424kbit/s三种。NFC的主要优势是:距离近、带宽高、能耗低,与非接触智能卡技术兼容,其在门禁、公交、手机支付等领域有着广阔的应用价值。

    目前最常见的”无线通信(数据)传输技术“有哪些?

    NFC的应用情境基本可以分为以下五类:

    • A接触-通过,主要应用在会议入场、交通关卡、门禁控制和赛事门票等方面;
    • B接触-确认/支付,主要应用在手机钱包、移动和公交付费等方面;
    • C接触-连接,这种应用可以实现2个具有NFC功能的设备实现数据的点对点传输;
    • D接触-浏览,用户可以通过NFC手机了解和使用系统所能提供的功能和服务;
    • E下载-接触,通过具有NFC功能的终端设备,使用GPRS/CDMA网络接收或下载相关信息,用于门禁或支付等功能。

    目前最常见的”无线通信(数据)传输技术“有哪些?

    2. 远距离无线传输技术

    远距离无线传输技术:目前偏远地区广泛应用的无线通讯技术主要有GPRS/CDMA、数传电台、扩频微波、无线网桥及卫星通信、短波通信技术等。它主要使用在较为偏远或不宜铺设线路的地区,如:煤矿、海上、有污染或环境较为恶劣地区等。

    目前最常见的”无线通信(数据)传输技术“有哪些?

    (1) GPRS/CDMA无线通信技术:

    GPRS(通用无线分组业务)是由中国移动开发运营的一种基于GSM通信系统的无线分组交换技术,是介于第二代和第三代之间  的技术,通常称为2.5G它是利用‚包交换?概念发展的一种无线传输方式。包交换就将数据封装成许多独立的包,再将这些包一个一个传送出去,形式上有点类似寄包裹,其优势在于有资料需要传送时才会占用频宽,而且是以资料量计价,有效的提高网络的利用率。GPRS网络同时支持电路型数据和分组交换数据,从而GPRS网络能够方便的和因特网互相连接,相比原来的GSM网络的电路交换数据传送方式,GRRS的分组交换技术具有实时在线"按量计费"高速传输等优点。

    CDMA(是码分多址的英文缩写)由中国电信运行的一种基于码分技术和多址技术的新的无线通信系统,其原理基于扩频技术。

    目前最常见的”无线通信(数据)传输技术“有哪些?

    (2) 数传电台通信:

    数传电台是数字式无线数据传输电台的简称。它是采用数字信号处理、数字调制解调、具有前向纠错、均衡软判决等功能的一种无线数据传输电台。数传电台的工作频率大多使用220--240MHz或400--470MHz频段,具有数话兼容、数据传输实时性好、专用数据传输通道、一次投资、没有运行使用费、适用于恶劣环境、稳定性好等优点。数传电台的有效覆盖半径约有几十公里,可以覆盖一个城市或一定的区域。数传电台通常提供标准的RS-232数据接口,可直接与计算机、数据采集器、RTU、PLC、数据终端、GPS接收机、数码相机等连接。已经在各行业取得广泛的应用,在航空航天、铁路、电力、石油、气象、地震等各个行业均有应用,在遥控、遥测、摇信、遥感等SCADA领域也取得了长足的进步和发展。

    目前最常见的”无线通信(数据)传输技术“有哪些?

    (3) 扩频微波通信:

    扩频通信,即扩展频谱通信技术是指其传输信息所用信号的带宽远大于信息本身带宽的一种通信技术。最早始用于军事通信。它传输的基本原理是将所传输的信息用伪随机码序列(扩频码)进行调制,伪随机码的速率远大于传送信息的速率,这时发送信号所占据带宽远大于信息本身所需的带宽实现了频谱扩展,同时发射到空间的无线电功率谱密度也有大幅度的降低。在接收端则采用相同的扩频码进行相关解调并恢复信息数据!其主要特点是:抗噪声能力极强;抗干扰能力极强;抗衰落能力强;抗多径干扰能力强;易于多媒体通信组网;具有良好的安全通信能力;不干扰同类的其他系统等,同时具有传输距离远、覆盖面广等特点,特别适合野外联网应用。

    目前最常见的”无线通信(数据)传输技术“有哪些?

    (4) 无线网桥:

    无线网桥是无线射频技术和传统的有线网桥技术相结合的产物。无线网桥是为使用无线(微波)进行远距离数据传输的点对点网间互联而设计。它是一种在链路层实现LAN互联的存储转发设备,可用于固定数字设备与其他固定数字设备之间的远距离(可达50Km)、高速(可达百兆bps)无线组网。扩频微波和无线网桥技术都可以用来传输对带宽要求相当高的视频监控等大数据量信号传输业务。

    (5) 卫星通信:

    卫星通信是指利用人造地球卫星作为中继站来转发无线电信号,从而实现在多个地面站之间进行通信的一种技术,它是地面微波通信的继承和发展。卫星通信系统通常由二部分组成,分别是卫星端、地面端。卫星端在空中,主要用于将地面站发送的信号放大再转发给其它地面站。地面站主要用于对卫星的控制、跟踪以及实现地面通信系统接入卫星通信系统。

    目前最常见的”无线通信(数据)传输技术“有哪些?

    卫星可分为同步卫星和非同步卫星,同步卫星在空中的运行方向和周期与地球的自转方向及周期相同,从地面的任何位置看,该卫星都是静止不动的;非同步卫星的运行周期大于或小于地球的运行周期,其轨道高度"倾角"形状都可根据需要调整。

    卫星通信的的特点是:覆盖范围广,工作频带宽,通信质量好,不受地理条件限制,成本与通信距离无关等。其主要用在国际通信,国内通信,军事通信,移动通信和广播电视等领域,卫星通信的主要缺点是通信具有一定的延迟,比如打卫星电话时,不能立即听到对方回话,主要原因是卫星通信的传输距离较长,无线电波在空中传输是有一定延迟的。

    目前最常见的”无线通信(数据)传输技术“有哪些?

    (6) 短波通信:

    按照国际无线电咨询委员会的划分,短波是指波长100m——10m,频率为3MHZ-30MHZ的电磁波。短波通信是指利用短波进行的无线电通信,又称高频(HF)通信。短波通信可分为地波传播和天波传播。地波传播的衰耗随工作频率的升高而递增,在同样的地面条件下,频率越高,衰耗越大。利用地波只适用于近距离通信,其工作频率一般选在5MHZ以下。地波传播受天气影响小,比较稳定,信道参数基本不随时间变化,故信道可视为恒参信道。天波传播是无线电波经电离层反射来进行远距离通信的方式,倾斜投射的电磁波经电离层反射后,可以传到几千千米外的地面。天波的传播损耗比地波小得多,经地面与电离层之间多次反射之后,可以达到极远的地方,因此,利用天波可以进行环球通信。天波传播因受电离层变化和多径传播的严重影响极不稳定,其信道参数随时间而急剧变化,因此称为变参信道。短波通信的特点是:建设维护费用低,周期短,设备简单,电路调度容易,抗毁能力强,频段窄,通信容量小,天波信道信号传输稳定性差等。

    目前最常见的”无线通信(数据)传输技术“有哪些?

    二、各种主流无线通讯技术之间的比较

    当前流行的无线通信技术有:RFID、GPRS、Bluetooth、Wi-Fi、IrDA 、UWB、Zig-Bee和NFC。

    1. RFID

    RFID是一种简单的无线系统,只有两个基本器件,该系统用于控制、检测和跟踪物体。系统由一个询问器和很多应答器组成。

    • 应答器:由天线,耦合元件及芯片组成,一般来说都是用标签作为应答器,每个标签具有唯一的电子编码,附着在物体上标识目标对象。
    • 阅读器:由天线,耦合元件,芯片组成,读取(有时还可以写入)标签信息的设备,可设计为手持式rfid
    • 应用软件系统 :是应用层软件,主要是把收集的数据进一步处理,并为人们所使用。

    2. GPRS

    如下图为典型GPRS系统结构图,通过监控中心与Internet相连,可以支持一些比较复杂的应用,另外支持的通信方式比较多,使用户可以随时随地以多种通信方式来监控实际应用点。该方案还可以让监控中心同时和多个GPRS模块通信,从而监控多个工作现场。

    3. Bluetooth

    蓝牙系统由无线单元、链路控制器、链路管理器和提供到主机端接口功能的,支持单元组成。

    蓝牙无线单元是一个微波跳频扩频通信系统,数据和话音信息分组在指定时隙,指定跳频频率发送和接收。跳频序列由主设备设备地址决定,采用寻呼和查询方式建立信道连接。链路控制(基带控制)器包括基带数字信号处理的硬件部分并完成基带协议和其它底层链路规程。链路管理器(LM)软件实现链路的建立、验证、链路配置及其协议。链路管理器可以发现其它的链路管理器,并通过连接管理协议LMP建立通信联系。链路管理器通过链路控制器提供的服务实现上述功能。

    4. Wi-Fi

    Wi-Fi方案的设计相对其他方案比较简单,仅需要通过MCU控制WIFI模块,通过CAN总线与主板通信,然后通过WIFI模块传输讯息到Internet。通过连接服务器,然后服务器对数据进行处理。

    目前最常见的”无线通信(数据)传输技术“有哪些?

    5. IrDA

    红外通讯主要有3部分组成:

    • 发射器部分:目前已有红外无线数字通信系统的信息源包括语音、数据、图像等。
    • 信道部分:它们的作用是:整形、滤波、视场变换、频段划分等。
    • 终端部分:红外无线数字通信系统终端部分包括光接收部分、采样、滤波、判决、量化、均衡和解码等部分。

    目前最常见的”无线通信(数据)传输技术“有哪些?

    6. UWB

    UWB(UltraWideband)是一种无载波通信技术,利用纳秒至微微秒级的非正弦波窄脉冲传输数据。通过在较宽的频谱上传送极低功率的信号,UWB能在10米左右的范围内实现数百Mbit/s至数Gbit/s的数据传输速率。

    目前最常见的”无线通信(数据)传输技术“有哪些?

    7. Zig-Bee

    技术是一种近距离、低复杂度、低功耗、低速率、低成本的双向无线通讯技术。主要用于距离短、功耗低且传输速率不高的各种电子设备之间进行数据传输以及典型的有周期性数据、间歇性数据和低反应时间数据传输的应用。

    目前最常见的”无线通信(数据)传输技术“有哪些?

    8. NFC

    与RFID一样,NFC信息也是通过频谱中无线频率部分的电磁感应耦合方式传递,但两者之间还是存在很大的区别。首先,NFC是一种提供轻松、安全、迅速的通信的无线连接技术,其传输范围比RFID小。  其次,NFC与现有非接触智能卡技术兼容,已经成为得到越来越多主要厂商支持的正式标准。再次,NFC还是一种近距离连接协议,提供各种设备间轻松、安全、迅速而自动的通信。与无线世界中的其他连接方式相比,NFC是一种近距离的私密通信方式。

    目前最常见的”无线通信(数据)传输技术“有哪些?

    无线通讯主流技术对比表

    各种无线通信技术的适用频段、调制方式、最大作用距离、数据率和应用领域。这些无线通信技术的作用距离与数据率的关系,数据率越高,作用距离就越短。可用网络技术扩展作用距离而仍然保持数据率。

    转载于:https://www.cnblogs.com/zhangbing12304/p/10880005.html

    展开全文
  • 全景拍摄中相机的对焦方式是拍摄中的必修课程,今天就和大家说一下全景拍摄中常见的对焦方式吧!...这一点在微距和弱光摄影上最为明显,由于相机自动对焦的物理原理(测距对焦、对比度法、相位对焦),它在弱光情...

    全景拍摄中相机的对焦方式是拍摄中的必修课程,今天就和大家说一下全景拍摄中常见的对焦方式吧!
    全景拍摄中相机的对焦方式有哪些?

    一、手动对焦

    尽管现在的数码相机都具备自动对焦功能,但依然可以使用手动对焦。有很多人都有这样的误解,认为自动对焦要比手动对焦更准,其实并不是这样,自动对焦的优点在于迅速快捷,更加准确的反而是手动对焦。

    这一点在微距和弱光摄影上最为明显,由于相机自动对焦的物理原理(测距对焦、对比度法、相位对焦),它在弱光情况下很容易出现偏差,微距摄影则对焦点要求更加精细,相机自身很难把控。

    很多人习惯用自动对焦了,换成手动对焦很不习惯,认为对焦又慢、又难看准焦点,没关系,现在的数码相机大多数都有实时取景功能,它对于手动对焦有非常大的帮助!
    全景拍摄中相机的对焦方式有哪些?

    二、单次自动对焦

    这应该是我们最熟悉的对焦方式,相机的单次自动对焦是指在半按快门时,相机开始对焦工作,一旦相机的处理器确认焦点已经对准,发出合焦提示,再完全按下快门就可以完成拍摄,对焦过程也就结束。如果想要改变焦点,那就要先松开快门按钮,然后再次半按快门重新开始对焦。

    当相机已经提示对焦已经准确,但在你完全按下快门前,拍摄对象发生了移动,之后再完全按下快门,就会得到一张失焦的模糊照片,所以这种对焦方式只适用于拍摄相对静止的物体。

    三、连续自动对焦

    自动对焦主要分为两种情况,除了单次自动对焦外,另一种就是连续自动对焦。连续自动对焦也称为伺服对焦,就是半按快门对焦之后,相机会锁定目标物或锁定对焦区域,一旦目标与相机之间的对焦距离改变了,相机会自动跟焦。

    在你使用连续伺服对焦时,要在开始时选取对焦点,换而言之就是告诉相机一个明确的目标,它才能进行跟踪。根据伺服对焦的特性,这种方法最适合拍摄运动中的目标,例如运动、赛车等等。
    全景拍摄中相机的对焦方式有哪些?

    四、完全自动对焦

    如果你选择的是自动对焦而不作任何调整,当你的手指半按快门时,相机就开始自动帮你选取对焦点了。这是最简单、最省事的办法,尤其是当你需要抓拍,或是没有时间主动选取对焦点时。

    但是相机自动选取焦点也有弊端,比如说你不能选择自己想要的焦点,相机自动选取的焦点往往是靠近画面中心的物体,但有很多时候我们选取的焦点在画面中的其它的位置(例如黄金比例点),这个时候你就需要手动选取对焦点了。

    五、手动选取对焦点

    手动选择合适的对焦点,综合了自动对焦以及手动对焦的优点,能够帮助你最大限度的掌控画面,尤其是拍摄风光、静物和肖像摄影这种有充分时间准备的题材。你在取景框内可以看到对焦点的指示,然后通过按钮选取你想要的对焦点,接着半按快门开始对焦,虽然花了一点时间,但是更容易帮助你拍出你想要的画面。

    六、人脸识别

    目前最新的相机基本上都配备了这样的技术(需要开启实时取景),它通过软件算法识别画面中的人脸部分,然后把它当做对焦点进行跟踪和检测。这个方法最适合拍摄爱动的小朋友,只要开启这项功能,相机的对焦点就会一直锁定在小朋友的脸上,不用再担心每次拍照都不配合的熊孩子啦!
    全景拍摄中相机的对焦方式有哪些?

    七、先对焦,后构图

    尽管现在的相机技术越来越成熟,越高级的相机会有越多的自动对焦点供你选择,但是不能保证你所需要的对焦位置每次都有自动对焦点,面对这种情况,你可以尝试对焦后重构图。

    这个方法非常方便,虽然有时为了重构图的需要,你的相机位置会产生轻微的偏移,但这种程度上的偏移并不会使焦平面发生变化而产生脱焦的问题。

    这种方法非常适用于弱光环境的拍摄,即在目标处使用中心点对焦(通常来说,中心点对焦效果最好),然后移动相机重新构图。

    八、后键对焦

    平时我们半按快门,相机就会自动对焦,全按的话就会拍照。其实我们也可以通过设定,将这对焦和拍照两个功能分开,让快门只保留拍摄功能,将自动对焦功能放在机背的AF-ON这个按键上面,即在半按快门的时候不会对焦。

    AF-ON这个功能适用于主体位置会随时变化的情况,例如生态摄影、运动摄影或新闻摄影,就常常会使用到它。使用方法,就是把对焦点设定成中央单点对焦,在拍摄时,按住AF-ON,以中央对焦点不断追踪着主体,直至对焦准确及构图完成才按下快门。

    使用AF-ON的另一个优点是减少了重新构图的麻烦。很多时候,我们需要连拍一些照片,如果每次拍照前都要半按快门对焦,反复重新构图再拍摄,这会为我们带来许多不必要的操作。而使用AF-ON就可以一直追踪你想要拍摄的目标,适时按下快门即可。
    全景拍摄中相机的对焦方式有哪些?

    九、超焦距对焦

    超焦距的概念听起来很复杂,其实很简单,它是指当镜头对焦在无穷远时,景深前界(离镜头最近清晰点)到镜头的距离,换句话说当镜头对焦在无穷远时,从超焦距点到无穷远的画面全部都清晰。

    最快的对焦就是不对焦,这句话深谙超焦距对焦的原理。手动将镜头的焦距调整到最大,只要保证被摄对象处于最近清晰点之外,就可以随心所欲地拍摄了。很多街头抓拍就是使用这个技巧。PS:如果是广角镜头采取这种方法,会使画面的景深达到最深。

    十、景深合成

    这是北美的风光摄影非常喜欢使用的一个办法,对于层次感明显的画面,你可以拍摄不同对焦平面的照片,然后用这个技术把它们合成,让画面的每一处都变得清晰起来。

    需要注意的是,如果是拍摄静物,一定要严格保持相机的参数和被摄者的距离,最好是把相机固定在三脚架上,使用同一个焦段,然后改变不同的焦平面多拍几张,最后合成,从而得到一张前后完全清晰锐利的照片。

    展开全文
  • 78.常见的异常类有哪些? 八、网络 79.http 响应码 301 和 302 代表的是什么?有什么区别? 80.forward 和 redirect 的区别? 81.简述 tcp 和 udp的区别? 82.tcp 为什么要三次握手,两次不行吗?为什么? 83.说一下...
  • 文章目录1、MyBatis 中 #{} ...6、MyBatis 和 Hibernate 的区别有哪些?7、MyBatis 有哪些执行器(Executor)?8、MyBatis 分页插件的原理是什么?9、MyBatis 如何编写一个自定义插件? 1、MyBatis 中 #{} 和 ${} 的区

    1、MyBatis 中 #{} 和 ${} 的区别是什么?

    • #{} 是预编译处理,${} 是字符串替换。
    • MyBatis 在处理 #{} 时,会将 SQL 中的 #{} 替换为?号,调用PreparedStatement的set方法来赋值。
    • MyBatis 在处理 ${} 时,只是把 ${} 替换成变量的值。
    • 使用 #{} 可以有效防止 SQL 注入,提高系统安全性。

    2、MyBatis 有几种分页方式?

    1. 数组分页
    2. SQL 分页
    3. 拦截器分页
    4. RowBounds 分页。

    3、MyBatis 逻辑分页和物理分页的区别是什么?

    1. 数据库负担:物理分页每次都访问数据库,逻辑分页只访问一次数据库,物理分页对数据库造成的负担大。
    2. 服务器负担:逻辑分页一次性将数据读取到内存,占用了较大的内存空间,物理分页每次只读取一部分数据,占用内存空间较小。
    3. 实时性:逻辑分页一次性将数据读取到内存,数据发生改变时数据库的最新状态不能实时反应到操作中,实时性差,物理分页每次需要数据时都访问数据库,能够获取到数据库的最新状态,实时性强。
    4. 适用场合:逻辑分页主要用于数据量不大,数据稳定的场合;物理分页主要用于数据量较大,更新频繁的场合。

    4、MyBatis 是否支持延迟加载?延迟加载的原理是什么?

    MyBatis 仅支持 association(一对一)关联对象和 collection(一对多)关联集合对象的延迟加载。在 MyBatis 配置文件中,可以配置是否启用延迟加载 lazyLoadingEnable=true|false,MyBatis 默认是关闭延迟加载的。

    延迟加载的原理是使用 CGLIB 创建目标对象的代理对象,拦截属性的get方法,在调用get方法时会检查是否为null,如果为null就先查询数据库将属性设置进去,然后返回属性的值。

    5、说一下 MyBaits 的一级缓存和二级缓存。

    一级缓存:基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session ,当 Session flush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认打开一级缓存。

    二级缓存:和一级缓存的机制相同。区别是二级缓存的作用域为 Mapper(Namespace),并且可以自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现 Serializable 序列化接口,可在它的映射文件中配置标签;二级缓存的更新机制为:当某一个作用域进行了C/U/D操作后,默认该作用域下的所有 select 中的缓存将被清空。

    6、MyBatis 和 Hibernate 的区别有哪些?

    1. Hibernate 是一个全自动的 ORM 框架,MyBatis 是一个半自动的 ORM 框架。
    2. MyBatis 直接编写原生态 SQL,可以严格控制 SQL 执行性能,灵活度高,非常适合对关系数据模型要求不高的系统开发,这类系统需求变化频繁,一旦有需求变化要求迅速输出成果。但灵活的前提是 MyBatis 无法做到数据库无关性,如果需要实现支持多种数据库的系统,则需要定义多套 SQL 映射文件,工作量大。
    3. Hibernate 对象/关系映射能力强,数据库无关性号,对于关系模型要求高的系统,如果用 Hibernate 开发可以节省很多代码,提高效率。

    7、MyBatis 有哪些执行器(Executor)?

    MyBatis 有三种基本的执行器:

    1. SimpleExecutor: 每执行一次 update 或 select,就开启一个 Statement 对象,用完立刻关闭 Statement 对象。
    2. ReuseExecutor: 执行 update 或 select ,以 SQL 作为 key 查找 Statement 对象,存在就使用,不存在就创建,用完后不关闭 Statement 对象,而是放置于 Map 内,供下一次使用。简而言之,就是可以重复使用 Statement 对象。
    3. BatchExecutor: 执行 update (没有 select ,JDBC 批处理不支持 select),将所有 SQL 都添加到批处理中(addBatch()),等待统一执行(executeBatch()),它缓存了多个 Statement 对象,每个 Statement 对象都是 addBatch() 完毕后,等待逐一执行 executeBatch() 批处理。与 JDBC 批处理相同。

    8、MyBatis 分页插件的原理是什么?

    分页插件的基本原理是使用 MyBatis 提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的 SQL,然后重写 SQL, 根据 Dialect 方言,添加对应的物理分页语句和物理分页参数。

    9、MyBatis 如何编写一个自定义插件?

    MyBatis 自定义插件针对 MyBatis 四大对象(Executor、StatementHandler、ParamentterHandler、ResultSetHandler)进行拦截。

    • Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed): 主要用于SQL重写。
    • StatementHandler (prepare, parameterize, batch, update, query):用于 JDBC 层的控制。
    • ParameterHandler (getParameterObject, setParameters):用于参数处理。
    • ResultSetHandler (handleResultSets, handleOutputParameters):用于结果集二次处理。

    MyBatis自定义插件必须实现Interceptor接口:

    package org.apache.ibatis.plugin;
    
    import java.util.Properties;
    
    /**
     * @author Clinton Begin
     */
    public interface Interceptor {
    
      Object intercept(Invocation invocation) throws Throwable;
    
      default Object plugin(Object target) {
        return Plugin.wrap(target, this);
      }
    
      default void setProperties(Properties properties) {
        // NOP
      }
    
    }
    

    intercept方法:拦截器具体处理逻辑方法

    plugin方法:根据签名signatureMap生成动态代理对象

    setProperties方法:设置Properties属性

    自定义插件Demo:

    import org.apache.ibatis.executor.Executor;
    import org.apache.ibatis.mapping.MappedStatement;
    import org.apache.ibatis.plugin.*;
    import org.apache.ibatis.session.ResultHandler;
    import org.apache.ibatis.session.RowBounds;
    
    import java.lang.reflect.Method;
    import java.util.Properties;
    
    /**
     * @author ZhengNC
     * @date 2020/8/12 15:16
     */
    @Intercepts({
            @Signature(type = Executor.class,
                    method = "query",
                    args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})
    })
    public class DemoPlugin implements Interceptor {
        @Override
        public Object intercept(Invocation invocation) throws Throwable {
            Object object = invocation.getTarget();
            Method method = invocation.getMethod();
            Object[] args = invocation.getArgs();
            System.out.println("方法执行前。。。");
            Object result = invocation.proceed();
            System.out.println("方法执行后。。。");
            return result;
        }
    
        @Override
        public Object plugin(Object target) {
            return Plugin.wrap(target, this);
        }
    
        @Override
        public void setProperties(Properties properties) {
    
        }
    }
    

    要使用自定义插件还必须在MyBatis的配置文件中配置此插件:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <plugins>
            <plugin interceptor="com.test.javademo.mybatisplugin.DemoPlugin">
                <property name="dbType" value="mysql"/>
            </plugin>
        </plugins>
    </configuration>
    
    展开全文
  • 提问:常见索引有哪些? 1、从数据结构角度 * B-Tree/B+Tree索引:B-Tree/B+Tree简介。 * Hash索引:1、查询效率非常高,一次查询即可;2、仅能满足=、in,不能用于范围查询;3、* 只有memory引擎显示支持。 * 全文...

    提问:常见索引有哪些?

    1、从数据结构角度
    * B-Tree/B+Tree索引:B-Tree/B+Tree简介。
    * Hash索引:1、查询效率非常高,一次查询即可;2、仅能满足=、in,不能用于范围查询;3、* 只有memory引擎显示支持。
    * 全文索引:用于查找文本中的关键词,InnoDB和MyISAM都支持。
    * R-Tree索引:用于对GIS数据类型创建SPATIAL索引。
    
    2、从物理存储角度
    * 聚集索引:InnoDB的B+Tree索引,叶子节点保存数据,索引和数据都存在数据文件里,根据主键聚集。
    * 非聚集索引:MyISAM的B+Tree索引,叶子节点保存具体数据的地址,索引和数据分别存在两个文件里,数据不聚集。
    
    3、从逻辑角度
    * 主键索引:一种特殊的唯一索引,不允许有空值。
    普通索引或者单列索引。
    * 多列索引(复合索引):在多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用复合索引时遵循最左前缀集合。
    * 唯一索引或者非唯一索引。
    * 空间索引:空间索引是对空间数据类型的字段建立的索引,MYSQL中的空间数据类型有4种,分别是GEOMETRY、POINT、LINESTRING、POLYGON。
    

    1、索引的本质

    MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构

    我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找(linear search),这种复杂度为O(n)的算法在数据量很大时显然是糟糕的,当然我们也有很多更优秀的查找算法,例如二分查找(binary search)、二叉树查找(binary tree search)等。如果稍微分析一下会发现,每种查找算法都只能应用于特定的数据结构之上,例如二分查找要求被检索数据有序,而二叉树查找只能应用于二叉查找树上,但是数据本身的组织结构不可能完全满足各种数据结构(例如,理论上不可能同时将两列都按顺序进行组织),所以,在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。

    image.png

    2、B-Tree和B+Tree

    目前大部分数据库系统及文件系统都采用B-Tree或其变种B+Tree作为索引结构,所以本小节先简单介绍一下这两种数据结构。

    2.1、B-Tree

    • d为大于1的一个正整数,称为B-Tree的度。
    • h为一个正整数,称为B-Tree的高度。
    • 每个非叶子节点由n-1个key和n个指针组成,其中d<=n<=2d。
    • 每个叶子节点最少包含一个key和两个指针,最多包含2d-1个key和2d个指针,叶节点的指针均为null 。
    • 所有叶节点具有相同的深度,等于树高h。
    • key和指针互相间隔,节点两端是指针。
    • 一个节点中的key从左到右非递减排列。

    image.png

    2.2、B+Tree

    B-Tree的变种,与B-Tree相比有以下不同点:

    • 每个节点的指针上限为2d而不是2d+1。
    • 内节点不存储data,只存储key;叶子节点不存储指针。

    image.png

    2.3、带顺序访问指针的B+Tree

    一般在数据库系统或文件系统中使用的B+Tree结构都在经典B+Tree的基础上进行了优化,增加了顺序访问指针。

    image.png

    如图所示,在B+Tree的每个叶子节点增加一个指向相邻叶子节点的指针,就形成了带有顺序访问指针的B+Tree。做这个优化的目的是为了提高区间访问的性能,例如图4中如果要查询key为从18到49的所有数据记录,当找到18后,只需顺着节点和指针顺序遍历就可以一次性访问到所有数据节点,极大提到了区间查询效率。

    3、为什么使用B-/+Tree

    3.1、主存的存取原理

    • 读取主存时,将地址信号放到地址总线上传给主存,主存读到地址信号后,解析信号并定位到指定存储单元,然后将此存储单元数据放到数据总线上,供其它部件读取。
    • 写主存时,系统将要写入单元地址和数据分别放在地址总线和数据总线上,主存读取两个总线的内容,做相应的写操作。

    这里可以看出,主存存取的时间仅与存取次数呈线性关系,因为不存在机械操作,两次存取的数据的“距离”不会对时间有任何影响,例如,先取A0再取A1和先取A0再取D3的时间消耗是一样的。

    image.png

    3.2、磁盘的存取原理

    当需要从磁盘读取数据时,系统会将数据逻辑地址传给磁盘,磁盘的控制电路按照寻址逻辑将逻辑地址翻译成物理地址,即确定要读的数据在哪个磁道,哪个扇区。为了读取这个扇区的数据,需要将磁头放到这个扇区上方,为了实现这一点,磁头需要移动对准相应磁道,这个过程叫做寻道,所耗费时间叫做寻道时间,然后磁盘旋转将目标扇区旋转到磁头下,这个过程耗费的时间叫做旋转时间。

    由于存储介质的特性,磁盘本身存取就比主存慢很多,再加上机械运动耗费,磁盘的存取速度往往是主存的几百分分之一,因此为了提高效率,要尽量减少磁盘I/O。为了达到这个目的,磁盘往往不是严格按需读取,而是每次都会预读,即使只需要一个字节,磁盘也会从这个位置开始,顺序向后读取一定长度的数据放入内存。这样做的理论依据是计算机科学中著名的局部性原理:当一个数据被用到时,其附近的数据也通常会马上被使用。

    image.png

    3.3、B-/+Treed的性能分析

    一般使用磁盘I/O次数评价索引结构的优劣。根据B-/+Tree的定义,可知检索一次最多需要访问h个节点。数据库系统的设计者巧妙利用了磁盘预读原理,将一个节点的大小设为等于一个页,这样每个节点只需要一次I/O就可以完全载入。为了达到这个目的,在实际实现B-Tree还需要使用如下技巧:

    • 每次新建节点时,直接申请一个页的空间,这样就保证一个节点物理上也存储在一个页里,加之计算机存储分配都是按页对齐的,就实现了一个node只需一次I/O。
    • B-/+Tree中一次检索最多需要h-1次I/O(根节点常驻内存),渐进复杂度为O(h)=O(logdN)。一般实际应用中,出度d是非常大的数字,通常超过100,因此h非常小(通常不超过3)。

    综上所述,用B-Tree作为索引结构效率是非常高的。

    而红黑树这种结构,h明显要深的多。由于逻辑上很近的节点(父子)物理上可能很远,无法利用局部性,所以红黑树的I/O渐进复杂度也为O(h),效率明显比B-Tree差很多。

    为什么mysql的索引使用B+树而不是B树呢?

    • B+树更适合外部存储(一般指磁盘存储),由于内节点(非叶子节点)不存储data,所以一个节点可以存储更多的内节点,每个节点能索引的范围更大更精确。也就是说使用B+树单次磁盘IO的信息量相比较B树更大,IO效率更高。
    • mysql是关系型数据库,经常会按照区间来访问某个索引列,B+树的叶子节点间按顺序建立了链指针,加强了区间访问性,所以B+树对索引列上的区间范围查询很友好。而B树每个节点的key和data在一起,无法进行区间查找。

    4、Mysql索引的实现原理

    4.1、MyISAM实现原理

    MyISAM中索引检索的算法为首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,则取出其data域的值,然后以data域的值为地址,读取相应数据记录。

    • MyISAM的索引文件仅仅保存数据记录的地址。
    • MyISAM的索引方式也叫做“非聚集”的,之所以这么称呼是为了与InnoDB的聚集索引区分。

    image.png

    4.2、InnoDB实现原理

    虽然InnoDB也使用B+Tree作为索引结构,但具体实现方式却与MyISAM截然不同。

    一个比较大区别是InnoDB的数据文件本身就是索引文件。从上文知道,MyISAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址。而在InnoDB中,表数据文件本身就是按B+Tree组织的一个索引结构,这棵树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引。

    image.png

    上图是InnoDB主索引(同时也是数据文件)的示意图,可以看到叶节点包含了完整的数据记录。这种索引叫做聚集索引。因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键(MyISAM可以没有),如果没有显式指定,则MySQL系统会自动选择一个可以唯一标识数据记录的列作为主键,如果不存在这种列,则MySQL自动为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。

    5、总结

    1. 索引的本质:数据结构。
    2. 索引普遍使用的数据结构:B-Tree和B+Tree。
    3. 为什么使用B-Tree和B+Tree:具有更好的性能。
    4. Mysql索引的实现原理:B+Tree(MyISAM、InnoDB)。
    展开全文
  • 十三、Mybatis 125.mybatis 中 #{}和 ${}的区别是什么? 126.mybatis 有几种分页方式? 127.RowBounds 是一次性查询全部...131.mybatis 和 hibernate 的区别有哪些? 132.mybatis 有哪些执行器(Executor)? 13
  • 这些计算需要大量的数学,物理等知识,如果兴趣也可以下载其源码来研究。 Box2d同时也提供了各种语言环境的实现,由于Ophone平台使用java作为变成语言,所以我们将选择使用Box2d的java版JBox2d,这也将产生一个...
  • 问题4-23:“尽最大努力交付”(best effort delivery)都有哪些含义? 问题4-24:假定在一个局域网中计算机A发送ARP请求分组,希望找出计算机B的硬件地址。这时局域网上的所有计算机都能收到这个广播发送的ARP请求...
  • 【总结】虚拟内存

    2020-07-06 15:36:02
    6. 常见的页面置换算法有哪些? 1. 什么是虚拟内存(Virtual Memory)? 这个在我们平时使用电脑特别是Windows 系统的时候太常见了。很多时候我们使用点开了很多占内存的软件,这些软件占用的内存可能已经远远超出了...
  • 计算机网络

    2020-12-22 10:13:44
    使用它的意义网络层的ARP协议工作原理IP地址的分类IP地址与物理地址TCP可靠的四大手段请你解释一下TCP为什么可靠一些TCP/UDP有哪些优缺点?了解交换机、路由器、网关的概念,并知道各自的用途说说静态路
  • 腾讯应用研究-机器学习一面

    千次阅读 2018-04-13 19:18:25
    面试的是应用研究-机器学习职位进门先是自我介绍,然后问了一下学习方向,我是机器学习方向的,就问我最熟悉哪些算法,我基本上说了一些常见的,面试官选择了SVM,问题以下:1、SVM的作用,基本实现原理;...
  • 1.2.6 一颗现代处理器,每秒大概可以执行多少条简单的MOV指令,有哪些主要的影响因素 1.2.7 请分析 MaxCompute 产品与分布式技术的关系、当前大数据计算平台类产品的市场现状和发展趋势 1.2.8 对大数据平台中的...
  • 程序员可以选择哪些平台写技术博客? IDEA使用总结 Maven就是这么简单 敖丙这逼竟然连Maven都不会 SVN就是这么简单 UML就是这么简单 听说新版IDEA支持中文,三歪体验了一把 加入公众号 精美脑图、学习路线、1000+...
  • 引起LNK2001的常见错误都有哪些 如何调试Windows外壳扩展程序(Shell Extension) 如何调试一个没有原码的exe文件调用的 dll 怎样设置栈的大小 如何知道GetLastError()返回的错误代码的意义 如何使用Visual C++ 6.0...
  • C++程序员面试宝典

    热门讨论 2013-04-01 13:36:19
    面试题101 成员变量有哪些访问控制方式 105 面试题102 如何访问静态成员 106 9.4 多态 108 面试题103 什么是多态?多态的作用 108 面试题104 在C++中如何实现多态 109 第10章 继承(教学视频:44分钟) 113 10.1 ...
  • 按课程标准的要求,使学生粗浅的了解由红外光谱与核磁共振氢谱谱图能获得哪些结构信息即可,避免谱学原理和名词术语对学生的困扰。 关于章图和节背景图的说明:①本章章图由一幅主图和三幅小图组成,主图为有机化合...
  • 问题3-14:能否归纳一下连续ARQ协议都有哪些主要功能和特别要注意的地方? 问题3-15:在许多有关网络技术的书籍或文献中,经常会看到“应答”、“回答”、“响应”和“确认”等术语。这些术语的意思都一样吗? 问题3...
  • 2.3.3 TCP/IP连接的基本原理 57 2.4 小结 59 第3章 文件 60 3.1 参数文件 61 3.1.1 什么是参数 62 3.1.2 遗留的init.ORA参数文件 65 3.1.3 服务器参数文件 67 3.1.4 参数文件小结 72 3.2 跟踪文件 73 3.2.1...
  • java面试题

    2018-04-27 19:55:38
    int和Integer有什么区别...java基本数据类型有哪些?String是不是基本数据类型,他们有何区别? 答:基本数据类型8种:int、short、byte、long、float、double、char、boolean String不是基本数据类型,引用数据类型。 ...
  • 2.3.3 TCP/IP连接的基本原理 58 2.4 小结 61 第3章 文件 63 3.1 参数文件 64 3.1.1 什么是参数? 65 3.1.2 遗留的init.ora参数文件 67 3.1.3 服务器参数文件 69 3.1.4 参数文件小结 75 3.2 跟踪文件 76 ...
  • Code Compl 代码大全

    2011-05-26 12:09:22
     20.5 软件质量的普遍原理  推荐读物  相关标准  关键点  第21章 协同构造  21.1 协同开发实践概要  协同构造是其他质量保证技术的补充  协同构造有利于传授公司文化以及编程专业知识  集体所有权适用于...
  • Sniffer 教程

    2009-03-05 08:41:54
    在日常的局域网维护中,对于一款软件,不仅要知道其表面的功能,更要深入了解其工作原理,这样才能更有效地挖掘软件更高级的应用及功能,以此来解决网络中的疑难故障。下面结合一些日常网络故障实例,介绍一下...
  • 2.1 基本原理 38 2.2 SQL Server 2005存储内幕 39 2.2.1 数据库及文件状态 39 2.2.2 资源数据库 40 2.2.3 目录视图和基本系统表 41 2.2.4 分配结构 50 2.2.5 数据库校验和 53 2.2.6 快速恢复 53 ...
  • 2.1 基本原理 38 2.2 SQL Server 2005存储内幕 39 2.2.1 数据库及文件状态 39 2.2.2 资源数据库 40 2.2.3 目录视图和基本系统表 41 2.2.4 分配结构 50 2.2.5 数据库校验和 53 2.2.6 快速恢复 53 ...
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    1. C语言和汇编语言在开发单片机时各有哪些优缺点? 答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言...
  • (46) 面向对象的设计方法与传统的的面向过程的方法本质不同,它的基本原理是(C) A. 模拟现实世界中不同事物之间的联系 B. 强调模拟现实世界中的算法而不强调概念 C. 使用现实世界的概念抽象地思考问题从而自然地...

空空如也

空空如也

1 2 3
收藏数 58
精华内容 23
关键字:

常见物理原理有哪些