原文链接:http://www.sharetechnote.com/html/5G/5G_OTA.html
1 什么是OTA (Over The Air)
OTA代表Over The Air。为了使用任何测试设备对设备进行测试,您需要一种将设备连接到测试设备的方法。OTA是一种将设备连接到测试设备的方法。大致有两种连接方法,如下所示。一个是Conductive,另一个是Radiative(或OTA)。简而言之,OTA是通过一对天线(发射天线和接收天线)的连接方法。
导电
辐射/ OTA
实际上OTA是一个非常复杂的话题。有许多不同的方面可以想到。在我学习和体验更多时,我会尝试尽可能多地涵盖不同的视角。
2 OTA设置的类型
当我们说辐射测试时,它通常指的是各种不同类型的配置,如下所示。这些只是您最常见到的一些典型示例,但这些并非全部。辐射测试设置有很多不同的变化。尽管术语OTA测试和辐射测试可以互换使用,但当我们说没有任何具体细节的OTA测试时,我们通常会想到如下所示的(C)或(D)这样的配置。如下图所示,它是在一个内衬有吸收器的腔室中进行测试(这种腔室称为消声室。消音意味着'无回声'。'无回声'在这种情况下意味着'没有来自盒子中任何物体的反射)。
(A)
(B)
这可能是最简单的方法之一。我们使用宽平面贴片天线并将DUT放在天线焊盘的顶部。非常方便的测试,如协议或功能测试,不需要精确的RF测量。但是,除非您在屏蔽室内不使用此设置,否则它可能会受到周围环境的干扰(例如,来自实时网络或其他设备)
在天线设置方面,这几乎与(A)相同。但在这种情况下,天线焊盘和UE位于小型RF室内。与(A)相比,此类型的好处是它可以阻止干扰信号(例如,来自实时网络或相邻设备的干扰)
(C)
(D)
这是一个由导电金属(通常是铜)制成的腔室。如在(B)中那样,这可以阻止来自周围环境的干扰,同时它可以减少来自盒子侧面的反射的干扰。当来自DUT或设备的电磁波撞击导电壁时,导体可以阻挡大部分波。
这将是OTA测试的理想解决方案,需要一定程度的测量精度。它内衬有特殊的吸收器,通常有定位器,可以通过外部控制器改变DUT的方向。
3 为何选择OTA?
即使在传统技术(例如,UMTS,LTE)中,有时我们也进行OTA测量,尤其是用于TRP或TIS测量。然而,在5G / NR中,我们几乎每次测试都在谈论OTA,即使是协议测试也是如此。为什么OTA在5G / NR中成为如此大的问题?在NR中,大约有两个在3GPP规范中指定的分离频谱。一个是FR1(sub 6 Ghz),另一个是FR2(mmWave)。在FR1中,我们可以继续进行导电测试,就像使用2G / 3G / 4G技术一样。但是,在FR2中,很可能我们被迫与OTA合作。为什么?
我们可以想到几个原因以及一些不同的方面。
复杂性 :在FR2中,几乎可以肯定我们将使用某种类型的阵列天线(称为Massive MIMO)。这意味着您将在设备上安装大量天线。如果你想进行导电测试,连接将如下所示(B),而如果你选择OTA,则可以像(A)中那样进行测试。然后,很明显我们为什么要选择(A)。注意:如果您想问我们为什么需要使用天线阵列,那么Massive MIMO页面的动机将为您提供一些见解。
没有足够的空间 :让我们假设你有足够的理由去OTA,尽管有线连接的复杂性,你仍然会面临另一个严重的问题。即使您的天线阵列中有许多天线元件(例如,16,32,64等),天线模块的整体尺寸在mmWave频率下也不够大,无法容纳所有电缆连接器。
成本 :现在让我们假设你有非常非常认真的理由去做导电(比如B),尽管有复杂性和空间问题。即使在这种情况下,导电测试也存在其他问题。在大多数常规测试中,您可能使用过低成本的SMA连接器和电缆。但是,使用mmWave中的SMA类型的连接器/电缆无法获得准确的测量结果。您需要K连接器或更特殊的连接器和电缆(例如,V连接器)如果频率变得更高。这些类型的特殊连接器和电缆的成本远高于那些SMA类型。如果我们将来需要使用非常高的频率(例如超过60 Ghz),您可能需要花费几乎与连接器和电缆一样多的钱,而不是低成本的设备价格。
测量的物理性质 :即使您克服了上述所有问题,由于测量本身的性质,某些类型的测量需要OTA。例如,如果要检测天线阵列形成的波束方向,则必须依赖OTA测量。你可以说你仍然可以通过导电测试来做到这一点。从理论上讲,您可以将来自每个天线单元路径的所有信号下行到基带,并通过基带处理计算出波束方向(以及波束的其他性质)。当然,理论上这是可能的。但是,如果有像OTA测试这样的相对简单的方法,我100%确定你想避免这样做。
(A)
(B)
4 测试设置中的UE放置(UE和测试设备之间的天线距离)
为了获得可重复,可靠和稳定的测量结果,将AUT(天线测试中)和测量天线放置在适当的位置非常重要。在本节中,我将解释如何确定适当的天线位置和理论背景,说明为什么应该使用特定的位置。
传统远场消声室的最小远场距离R由下面的公式a确定(基于R5-180013)。
< 图1:天线场区域>
不同天线尺寸和频率的近/远场边界如下表所示。该表基于R5-180013(参考文献[1]) - 表2.2.1:传统远场电波暗室的不同频率和天线尺寸的近场/远场边界
< 表1 - D和频率的近/远边界距离>
D(cm)
频率(千兆赫)
远/近边界(cm)
路径损失
5
28
47
48
55
10
28
187
188
66.9
15
28
420
420
73.8
20
28
747
748
78.9
25
28
1167
1168
82.7
30
28
1680
1680
85.9
5
100
167
168
76.9
10
100
667
668
88.9
15
100
1500
1500
96
20
100
2667
2668
101
25
100
4167
4168
104.8
30
100
6000
6000
108
注意 :从这是可选读数。出于好奇,我已经深入研究了这个等式。如果您不感兴趣,可以跳过此部分。我试图调查近/远边界随频率变化的变化。
如下所示,辐射近场的跨度(无功近场和远场开始之间的间隙)随着频率的增加而急剧增加,其中反应近场距离相对缓慢地增加)。此外,比较以下两个图表,您会注意到随着D增加,远场距离变得非常大。
< 图2 - 在D = 5cm处具有频率的场边界变化>
< 图3 - 在D = 10cm处具有频率的场边界变化>
现在你可能有一个有趣的问题。根据上图所示,DUT天线与设备天线之间的距离应随着频率的增加而增加。也就是说,随着频率的增加,电波暗室的大小会增加?对你来说,这不是直觉吗?我们的常识(我们的射频直觉)说频率依赖对象的大小往往随着频率的增加而减小。
我们如何通过直觉和上面的情节来处理这种冲突?
解决方案在于D不是常数。在上图所示的情况下,无论频率如何,D都具有固定值。但是当我们设计天线时,我们通常用波长决定D值(天线孔径大小),如下所示。这里,k只是一个常数,如0.5,1,2等。
如果您绘制波长(lamda)随频率增加而变化的情况,您将得到如下所示的图。你会注意到波长在很大程度上降低了。
< 图4 - 波长与频率>
如果重写远场距离方程,则如下所示。在这个等式中,您会注意到远场距离随着频率的增加而减小。 (注意:如果你想尝试以实际值计算,则将f视为'以Hz为单位的频率',将c视为'以m为单位的光速',k只是一个没有任何单位的常数)。
5 为何在远场进行测试?
可能到现在为止,你可能会有一个问题'为什么我们需要在远场进行测试?'。要直接回答这个问题并不容易。所以让我稍微改变一下这个问题。为什么我们不在近场测试?
这个问题的简单答案是,该区域的测量结果往往是不可预测的,并且随着天线周围环境的微小变化(例如,馈送天线的电路)和位置变化而变化。相反,远场中的场模式更稳定且可预测,并且对周围的小部件不太敏感。
对于那些对进一步细节感兴趣的人,让我们再看看每个地区的特征。您可以自己进一步调查。尝试用谷歌搜索“近场和远场”,“天线周围的场区域”等关键词。
Reactive Near Filed :这是非常接近天线的区域。该区域中E和H场之间的关系是非常不可预测的(这是不可预测的,不是因为这个属性违背物理理论,而是因为物理性质如此复杂)。例如,在某一点你会看到E场占主导地位,而在另一点上,除了前一点H场占优势之外。辐射能量也会像天线控制电路一样来回影响周围的电气元件。例如,辐射能量的某些部分在某个时间点被吸收并存储在周围的部件中,并且所存储的能量在其他时间点被辐射回到空间中并影响辐射图案。
辐射近场(菲涅耳区域) :在该区域中,与天线的距离不太接近如上所述的反电子部件的影响,并且与反应近场相比,E和H场关系更加可预测。然而,E和H场关系仍然相当复杂,并且存在可能影响该区域中的辐射图案的一些物理对象的高可能性。例如,一些金属物体如钢梁支撑天线模块可以作为一种天线或反射器。因此,这种物体会影响AUT(天线测试)的辐射模式。
FAR 场( Fraunhofer 区域) :在该区域中,角场分布基本上与距天线的距离无关,并且辐射图可以用球面波阵面近似。由于该区域中的任何接收点都离天线很远,因此发射机的尺寸和形状不再重要,它可以近似为点源。电场和磁场同相,彼此垂直并且也垂直于传播方向。在这个区域,您可以放心地假设通过接收天线的波前是规划器(即,所有入射光线彼此平行)。 简单来说,这是一个可以轻松可靠地完成大部分测量的理念区域。
6 为什么天线尺寸如此重要?
如上所述,为了获得稳定的测量结果,重要的是使DUT天线和设备天线之间的距离大于远场边界。如[图1]所示,远场边界从以下距离开始。
从这个表达式中可以看出,距离与D平方成正比(D代表天线尺寸)。也就是说,即使D中的微小变化,距离也会发生巨大变化。为了让您更直观地理解,我将此等式绘制在左图所示的图形中。边界处的路径损耗也随着D的增加而增加,如右图所示。
< 图5 - D>的远场距离和路径损耗
如果您想获得准确的定量数据,我会将表格如下所示。从该表中绘制了上面显示的两个图。
< 表2 -D对远场距离和路径损耗的影响>
D(cm)
频率(千兆赫)
路径损失
1
28
2
27.42
2
28
7
38.30
3
28
17
46.01
4
28
30
50.94
5
28
47
54.84
6
28
67
57.92
7
28
91
60.58
8
28
119
62.91
9
28
151
64.98
10
28
187
66.83
11
28
226
68.48
12
28
269
69.99
13
28
315
71.36
14
28
366
72.67
15
28
420
73.86
16
28
478
74.99
17
28
539
76.03
18
28
605
77.03
19
28
674
77.97
20
28
747
78.86
21
28
823
79.70
22
28
903
80.51
23
28
987
81.28
24
28
1075
82.02
25
28
1167
82.74
26
28
1262
83.42
27
28
1361
84.07
28
28
1463
84.70
29
28
1570
85.31
30
28
1680
85.90
这意味着您需要知道确切的天线尺寸才能获得准确的测量结果。但是,正确定义天线尺寸并不总是容易的。天线尺寸D定义为整个天线模块的最大距离。[图6]中的红色箭头表示D.如您所见,在(A),(B),(C)和(E)的情况下定义D将是直截了当的。但是,在(D)的情况下,定义尺寸并不容易。在(D)中,物理尺寸与(A)相同,但是您会看到天线模块周围的一些导电材料会影响天线模块的辐射方向图。这可能影响天线的有效尺寸,并且很难准确地估计有效尺寸。此外,如(F),(G)和(H)所示,UE制造商将在UE内部的若干不同位置分配天线模块。当然,UE内的天线模块的形状和位置将比这里示出的更加多样和复杂。
< 图6 - 各种配置的天线尺寸>
定义D变得困难还有另一个原因。UE案件会变得更加困难。为了正确定义D,您需要获得UE中天线结构和位置的所有详细信息。但在许多情况下,这些信息被大多数UE制造商视为高度机密的信息。因此,当您获得UE(尤其是商业化的UE)时,几乎不可能获得D(维度)的精确估计。
现在我们面临着一个非常棘手的局面。当我们没有获得有关天线尺寸的详细信息时,我们如何保证准确的测量?
这就是我将在下一节讨论的内容。
7 处理已知D情况和未知D情况(Whitebox与Blackbox方法)
在讨论具体案例之前,让我们先想想几个基本词的含义 - Whitebox 和Blackbox。白盒指的是我们可以直接看到盒子的盒子,清楚地知道盒子里面是什么。这意味着ux知道关于盒子的所有信息。黑盒子是指我们无法直接看到盒子内部的盒子。我们能够找出盒子内容的唯一方法是通过间接观察,如摇动盒子,听声音或举起并估计重量等。当然,这不是OTA中Whitebox和Blackbox的正式定义。 ,但基本思想适用于R4-1708553(参考文献[4])中描述的形式定义。
对于“ 黑匣子 ”方法,不需要知道确切的天线位置/辐射中心参考点(CORRP)。
UE定位有与现有SISO OTA测试用例类似的公共参考点
测试用例的执行具有相对较低的复杂度(不需要重新定位到CORRP)
需要为MU预算的DUT阶段添加“从QZ(安静区域)中心偏移DUT相位中心”的MU元素,这取决于QZ的大小和范围长度
对于“ 白盒子 ”方法,可能需要知道确切的天线位置/辐射中心参考点(CORRP),可能是通过制造商声明。
有源天线阵列的CORRP需要与静区的中心对齐,这可能会导致测试用例的复杂执行
不需要为DUT级添加用于“从QZ中心偏移DUT相位中心(安静区域)”的MU元素,但需要添加用于UE重新定位的MU元素
现在你可能会问'为什么我们在这里谈论whitebox / blackbox概念?' 并且'他们如何处理D(天线尺寸)?'。让我们想一想我们有关于D的详细信息以及我们没有关于D的确切信息的情况。
我们假设我们拥有关于D的所有详细信息。这意味着被测天线模块是一种白盒。在这种情况下,我们可以计算近/远边界的确切位置。然后我们可以得到相对准确的测量,DUT和测量天线(探头)之间的距离最小,并且仍然符合[图6](A)中的远场标准。这意味着我们可以满足远场条件,最小的消声室尺寸。反过来,这意味着我们可以在消声室上以最小的成本获得准确的测量结果。
现在让我们考虑一下我们没有关于D的准确信息的情况。我们如何估计近/远边界的确切位置(即远场的起点)?答案是'没有办法去做'。那么我们如何才能保证天线在远场呢?最简单的方法是将接收天线放置在离DUT很远的位置,这样你可以假设它在远场,而不管天线的大小如图6(B)所示。当然应该是你假设的天线尺寸的一定限制。当你的手机尺寸为10厘米时,你不会认为天线尺寸是20厘米。
<图6:白盒和黑盒条件中可能的天线位置>
总结,
如果我们能够获得关于天线尺寸和DUT上精确天线位置的详细信息(例如,移动电话),那么使用Whitebox方法会更好,因为我们可以用更小的腔室以相对低的成本进行测量。在开发阶段,这可能是一个很好的选择,在这些阶段,这些信息往往是开放的。
如果有关天线尺寸和手机位置的详细信息,Blackbox方法将是更好的选择。由于大多数移动电话制造商非常不愿意在其商业化设备上打开天线的详细信息,因此黑盒方法可能是商业化设备的唯一选择。然而,如上所述,我们需要非常大的腔室来应用黑盒方法,这会导致成本和空间问题。为了缓解这个问题,提出了另一种概念,下一节将对此替代方案进行解释。
注意:关于采用Whitebox方法或Blackbox方法,Ref [3]规定如下:
对于一致性测试, 3GPP 已经决定只能使用黑盒方法。这是由于不希望声明天线结构的 UE 供应商不接受白盒测试的要求。
8 模拟一个不太大的黑匣子 - CATR
如上所述,由于UE制造商不喜欢公开详细的天线信息,因此只有黑盒方法可能被接受作为商业化设备的测试方法,但是黑盒方法往往需要巨大的腔室(即,发射器之间的距离很大)和接收天线)。为了减少腔室尺寸的问题,发出了另一种称为CATR(紧凑区域测试范围)的概念。总体概念在TR 37.842中描述,如下所示。
如上图所示,您将看到来自发射器天线的信号从专门设计的反射器反射(反射),然后到达接收器天线。这将产生将长的线性距离折叠到小空间中的效果,这导致减小腔室的尺寸。此外,通过以特定形式设计反射器,可以使来自DUT的所有平行光线到达馈电天线(测量天线)。并且,您也可以使来自馈电天线的光线作为平行光线到达DUT。实际上,基本原理类似于你在高中物理中学到的抛物面镜雷图。尝试googleing'抛物面镜子光线图'或'抛物面镜子光线追踪'等。
9 SS-MPAC(简化扇形多探头电波暗室)
SS MPAC的概念是使用围绕UE的多个探测器,如下所示,以模拟更真实的无线电信道条件。
SS MPAC的主要动机在R4-1706669中有详细描述如下:
1.实时系统性能评估,即通信时
2.能够模拟真实的无线电信道,意味着波的真实角度分布,无论是照射欧盟还是由它辐射
3.上行链路和下行链路性能,或多节点配置中的接收和响应
10 安静区域
根据参考文献[9],静音区是任何腔室中的体积,其中DUT以几乎均匀的幅度和相位被照射。典型的静区规格是10度的相位变化,±0.5 dB的幅度纹波和1 dB的幅度锥度,这是向静音区边缘的滚降
Reference
[1] 3GPP TSG-RAN WG5 Adhoc Meeting#1 - R5-180013 : Signalling NR Testcases - OTA chamber requirements
[2] Near and far field (Wikipedia)
[3] Keysight Technologies - OTA Test for Millimeter-Wave 5G NR Devices and Systems (White Paper)
[4] 3GPP TSG-RAN WG4 Meeting #84 - R4-1708553 : Far field definition and proposal for alternate RF baseline with deterministic antenna array positioning
[5] 3GPP TSG RAN WG4 Meeting NR#2 - R4-1706617 : Center of Radiation Reference Point – Reference Definition for OTA Measurements of Phased Array Beamforming Patterns
[6] 3GPP TR 37.842 V13.2.0 (2017-03) - Radio Frequency (RF) requirement background for Active Antenna System (AAS) Base Station (BS)(Release 13)
[7] 3GPP TSG-RAN WG4 Meeting NR AH#2 - R4-1706669 : SS MPAC for RRM/Demod
[8] TR 37.977 - Verification of radiated multi-antenna reception performance of User Equipment (UE)
[9] OTA Test for Millimeter-Wave 5G NR Devices and Systems (Keysight Whitepaper)
转载于:https://www.cnblogs.com/myourdream/p/10420592.html
你可能感兴趣的:(5G/NR OTA (Over The Air) 测试详解)
Python中os.environ基本介绍及使用方法
鹤冲天Pro
# Python python 服务器 开发语言
文章目录python中os.environos.environ简介os.environ进行环境变量的增删改查python中os.environ的使用详解1.简介2.key字段详解2.1常见key字段3.os.environ.get()用法4.环境变量的增删改查和判断是否存在4.1新增环境变量4.2更新环境变量4.3获取环境变量4.4删除环境变量4.5判断环境变量是否存在python中os.envi
将cmd中命令输出保存为txt文本文件
落难Coder
Windows cmd window
最近深度学习本地的训练中我们常常要在命令行中运行自己的代码,无可厚非,我们有必要保存我们的炼丹结果,但是复制命令行输出到txt是非常麻烦的,其实Windows下的命令行为我们提供了相应的操作。其基本的调用格式就是:运行指令>输出到的文件名称或者具体保存路径测试下,我打开cmd并且ping一下百度:pingwww.baidu.com>./data.txt看下相同目录下data.txt的输出:如果你再
四章-32-点要素的聚合
彩云飘过
本文基于腾讯课堂老胡的课《跟我学Openlayers--基础实例详解》做的学习笔记,使用的openlayers5.3.xapi。源码见1032.html,对应的官网示例https://openlayers.org/en/latest/examples/cluster.htmlhttps://openlayers.org/en/latest/examples/earthquake-clusters.
398顺境,逆境
戴骁勇
2018.11.27周二雾霾最近儿子进入了一段顺境期,今天表现尤其不错。今天的数学测试成绩喜人,没有出现以往的计算错误,整个卷面书写工整,附加题也在规定时间内完成且做对。为迎接体育测试的锻炼有了质的飞跃。坐位体前屈成绩突飞猛进,估测成绩能达到12cm,这和上次测试的零分来比,简直是逆袭。儿子还在不断锻炼和提升,唯恐到时候掉链子。跑步姿势在我的调教下,逐渐正规起来,速度随之也有了提升。今晚测试的50
使用Faiss进行高效相似度搜索
llzwxh888
faiss python
在现代AI应用中,快速和高效的相似度搜索是至关重要的。Faiss(FacebookAISimilaritySearch)是一个专门用于快速相似度搜索和聚类的库,特别适用于高维向量。本文将介绍如何使用Faiss来进行相似度搜索,并结合Python代码演示其基本用法。什么是Faiss?Faiss是一个由FacebookAIResearch团队开发的开源库,主要用于高维向量的相似性搜索和聚类。Faiss
利用LangChain的StackExchange组件实现智能问答系统
nseejrukjhad
langchain microsoft 数据库 python
利用LangChain的StackExchange组件实现智能问答系统引言在当今的软件开发世界中,StackOverflow已经成为程序员解决问题的首选平台之一。而LangChain作为一个强大的AI应用开发框架,提供了StackExchange组件,使我们能够轻松地将StackOverflow的海量知识库集成到我们的应用中。本文将详细介绍如何使用LangChain的StackExchange组件
GitHub上克隆项目
bigbig猩猩
github
从GitHub上克隆项目是一个简单且直接的过程,它允许你将远程仓库中的项目复制到你的本地计算机上,以便进行进一步的开发、测试或学习。以下是一个详细的步骤指南,帮助你从GitHub上克隆项目。一、准备工作1.安装Git在克隆GitHub项目之前,你需要在你的计算机上安装Git工具。Git是一个开源的分布式版本控制系统,用于跟踪和管理代码变更。你可以从Git的官方网站(https://git-scm.
Faiss Tips:高效向量搜索与聚类的利器
焦习娜Samantha
FaissTips:高效向量搜索与聚类的利器faiss_tipsSomeusefultipsforfaiss项目地址:https://gitcode.com/gh_mirrors/fa/faiss_tips项目介绍Faiss是由FacebookAIResearch开发的一个用于高效相似性搜索和密集向量聚类的库。它支持多种硬件平台,包括CPU和GPU,能够在海量数据集上实现快速的近似最近邻搜索(AN
CX8836:小体积大功率升降压方案推荐(附Demo设计指南)
诚芯微科技
社交电子
CX8836是一颗同步四开关单向升降压控制器,在4.5V-40V宽输入电压范围内稳定工作,持续负载电流10A,能够在输入高于或低于输出电压时稳定调节输出电压,可适用于USBPD快充、车载充电器、HUB、汽车启停系统、工业PC电源等多种升降压应用场合,为大功率TYPE-CPD车载充电器提供最优解决方案。提供CX8836Demo测试、CX8836样品申请及CX8836方案开发技术支持。CX8836同升
【华为OD技术面试真题 - 技术面】-测试八股文真题题库(1)
算法大师
华为od 面试 python 算法 前端
华为OD面试真题精选专栏:华为OD面试真题精选目录:2024华为OD面试手撕代码真题目录以及八股文真题目录文章目录华为OD面试真题精选1.黑盒测试和白盒测试的区别2.假设我们公司现在开发一个类似于微信的软件1.0版本,现在要你测试这个功能:打开聊天窗口,输入文本,限制字数在200字以内。问你怎么提取测试点。功能测试性能测试安全性测试可用性测试跨平台兼容性测试网络环境测试3.接口测试的工具你了解哪些
Python爬虫解析工具之xpath使用详解
eqa11
python 爬虫 开发语言
文章目录Python爬虫解析工具之xpath使用详解一、引言二、环境准备1、插件安装2、依赖库安装三、xpath语法详解1、路径表达式2、通配符3、谓语4、常用函数四、xpath在Python代码中的使用1、文档树的创建2、使用xpath表达式3、获取元素内容和属性五、总结Python爬虫解析工具之xpath使用详解一、引言在Python爬虫开发中,数据提取是一个至关重要的环节。xpath作为一门
Faiss:高效相似性搜索与聚类的利器
网络·魚
大数据 faiss
Faiss是一个针对大规模向量集合的相似性搜索库,由FacebookAIResearch开发。它提供了一系列高效的算法和数据结构,用于加速向量之间的相似性搜索,特别是在大规模数据集上。本文将介绍Faiss的原理、核心功能以及如何在实际项目中使用它。Faiss原理:近似最近邻搜索:Faiss的核心功能之一是近似最近邻搜索,它能够高效地在大规模数据集中找到与给定查询向量最相似的向量。这种搜索是近似的,
Java 重写(Override)与重载(Overload)
叨唧唧的
Java重写(Override)与重载(Overload)重写(Override)重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如:父类的一个方法申明了一个检查异常IOExceptio
第1步win10宿主机与虚拟机通过NAT共享上网互通
学习3人组
大数据 大数据
VM的CentOS采用NAT共用宿主机网卡宿主机器无法连接到虚拟CentOS要实现宿主机与虚拟机通信,原理就是给宿主机的网卡配置一个与虚拟机网关相同网段的IP地址,实现可以互通。1、查看虚拟机的IP地址2、编辑虚拟机的虚拟网络的NAT和DHCP的配置,设置虚拟机的网卡选择NAT共享模式3、宿主机的IP配置,确保vnet8的IPV4属性与虚拟机在同一网段4、ping测试连通性[root@localh
spring如何整合druid连接池?
惜.己
spring spring junit 数据库 java idea 后端 xml
目录spring整合druid连接池1.新建maven项目2.新建mavenModule3.导入相关依赖4.配置log4j2.xml5.配置druid.xml1)xml中如何引入properties2)下面是配置文件6.准备jdbc.propertiesJDBC配置项解释7.配置druid8.测试spring整合druid连接池1.新建maven项目打开IDE(比如IntelliJIDEA,Ecl
[Python] 数据结构 详解及代码
AIAdvocate
算法 python 数据结构 链表
今日内容大纲介绍数据结构介绍列表链表1.数据结构和算法简介程序大白话翻译,程序=数据结构+算法数据结构指的是存储,组织数据的方式.算法指的是为了解决实际业务问题而思考思路和方法,就叫:算法.2.算法的5大特性介绍算法具有独立性算法是解决问题的思路和方式,最重要的是思维,而不是语言,其(算法)可以通过多种语言进行演绎.5大特性有输入,需要传入1或者多个参数有输出,需要返回1个或者多个结果有穷性,执行
Python神器!WEB自动化测试集成工具 DrissionPage
亚丁号
python 开发语言
一、前言用requests做数据采集面对要登录的网站时,要分析数据包、JS源码,构造复杂的请求,往往还要应付验证码、JS混淆、签名参数等反爬手段,门槛较高。若数据是由JS计算生成的,还须重现计算过程,体验不好,开发效率不高。使用浏览器,可以很大程度上绕过这些坑,但浏览器运行效率不高。因此,这个库设计初衷,是将它们合而为一,能够在不同须要时切换相应模式,并提供一种人性化的使用方法,提高开发和运行效率
怎么做才能真正限制塑料袋的使用?
BalNews
Environmentalpollutionisalwaysamajorlivelihoodissue.Morethanadecadeago,ourgovernmenthadintroducedapolicyaboutrestrictionsontheuseofplasticbags,wecallitrestrictionsontheuseofplasticbags.Butmorethan10ye
ESP32-C3入门教程 网络篇⑩——基于esp_https_ota和MQTT实现开机主动升级和被动触发升级的OTA功能
小康师兄
ESP32-C3入门教程 https 服务器 esp32 OTA MQTT
文章目录一、前言二、软件流程三、部分源码四、运行演示一、前言本文基于VSCodeIDE进行编程、编译、下载、运行等操作基础入门章节请查阅:ESP32-C3入门教程基础篇①——基于VSCode构建HelloWorld教程目录大纲请查阅:ESP32-C3入门教程——导读ESP32-C3入门教程网络篇⑨——基于esp_https_ota实现史上最简单的ESP32OTA远程固件升级功能二、软件流程
[Unity]在场景中随机生成不同位置且不重叠的物体
Bartender_Jill
Graphics图形学笔记 unity 游戏引擎 动画
1.前言最近任务需要用到Unity在场景中随机生成物体,且这些物体不能重叠,简单记录一下。参考资料:Howtoensurethatspawnedtargetsdonotoverlap?2.结果与代码结果如下所示:代码如下所示:usingSystem.Collections.Generic;usingUnityEngine;namespaceAssets.Scripts{publicclassNew
Spring Boot中实现跨域请求
BABA8891
spring boot 后端 java
在SpringBoot中实现跨域请求(CORS,Cross-OriginResourceSharing)可以通过多种方式,以下是几种常见的方法:1.使用@CrossOrigin注解在SpringBoot中,你可以在控制器或者具体的请求处理方法上使用@CrossOrigin注解来允许跨域请求。在控制器上应用:importorg.springframework.web.bind.annotation.
【Python搞定车载自动化测试】——Python实现车载以太网DoIP刷写(含Python源码)
疯狂的机器人
Python搞定车载自动化 python DoIP UDS ISO 14229 1SO 13400 Bootloader tcp/ip
系列文章目录【Python搞定车载自动化测试】系列文章目录汇总文章目录系列文章目录前言一、环境搭建1.软件环境2.硬件环境二、目录结构三、源码展示1.DoIP诊断基础函数方法2.DoIP诊断业务函数方法3.27服务安全解锁4.DoIP自动化刷写四、测试日志1.测试日志五、完整源码链接前言随着智能电动汽车行业的发展,汽车=智能终端+四个轮子,各家车企都推出了各自的OTA升级方案,本章节主要介绍如何使
详解:如何设计出健壮的秒杀系统?
夜空_2cd3
作者:Yrion博客园:cnblogs.com/wyq178/p/11261711.html前言:秒杀系统相信很多人见过,比如京东或者淘宝的秒杀,小米手机的秒杀。那么秒杀系统的后台是如何实现的呢?我们如何设计一个秒杀系统呢?对于秒杀系统应该考虑哪些问题?如何设计出健壮的秒杀系统?本期我们就来探讨一下这个问题:image目录一:****秒杀系统应该考虑的问题二:****秒杀系统的设计和技术方案三:*
GenVisR 基因组数据可视化实战(三)
11的雾
3.genCov画每个突变位点附件的coverage,跟igv有点相似。这个操作起来很复杂,但是图还是挺有用的。可以考虑。由于我的referencegenomebuild是hg38BiocManager::install(c("TxDb.Hsapiens.UCSC.hg38.knownGene","BSgenome.Hsapiens.UCSC.hg38"))library(TxDb.Hsapien
Python 课程10-单元测试
可愛小吉
Python教學 python 单元测试 开发语言 TDD unittest
前言在现代软件开发中,单元测试已成为一种必不可少的实践。通过测试,我们可以确保每个功能模块在开发和修改过程中按预期工作,从而减少软件缺陷,提高代码质量。而测试驱动开发(TDD)则进一步将测试作为开发的核心部分,先编写测试,再编写代码,以测试为指导开发出更稳定、更可靠的代码。Python提供了强大的unittest模块,它是Python标准库的一部分,专门用于编写和执行单元测试。与其他测试框架相比,
MyBatis 详解
阿贾克斯的黎明
java mybatis
目录目录一、MyBatis是什么二、为什么使用MyBatis(一)灵活性高(二)性能优化(三)易于维护三、怎么用MyBatis(一)添加依赖(二)配置MyBatis(三)创建实体类和接口(四)使用MyBatis一、MyBatis是什么MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。它可以通过简
【自动化测试】UI自动化的分类、如何选择合适的自动化测试工具以及其中appium的设计理念、引擎和引擎如何工作
Lossya
ui 自动化 测试工具 自动化测试 appium
引言UI自动化测试主要针对软件的用户界面进行测试,以确保用户界面元素的交互和功能符合预期文章目录引言一、UI自动化的分类1.1基于代码的自动化测试1.2基于录制/回放的自动化测试1.3基于框架的自动化测试1.4按测试对象分类1.5按测试层次分类1.6按测试执行方式分类1.7按测试目的分类二、如何选择合适的自动化测试工具2.1项目需求分析2.2工具特性评估2.3成本考虑2.4团队技能2.5试用和评估
微信小程序开发注意事项
jun778895
微信小程序 小程序
微信小程序开发是一个融合了前端开发、用户体验设计、后端服务(可选)以及微信小程序平台特性的综合性项目。这里,我将详细介绍一个典型的小程序开发项目的全过程,包括项目规划、设计、开发、测试及部署上线等各个环节,并尽量使内容达到或超过2000字的要求。一、项目规划1.1项目背景与目标假设我们要开发一个名为“智慧校园助手”的微信小程序,旨在为学生提供一站式校园生活服务,包括课程表查询、图书馆座位预约、食堂
性格小测试
熹大头
有些人非常肯定自己属于外向型,有些人则发现自己是绝对的内向型。然而,多数人却发现他们似乎介于两者之间,是两种性格的结合。现在我们就来看看你在这种分类中处在何种位置。阅读以下问题,从a、b、c中选出最适合自己的选项。你可能会发现三个选项都不合适,或者合适的不止一项,这种情况下,选出相对来说更适合自己的即可。1人们经常会用下列哪个词语描述你:a善于分析b遵守纪律c有创造力2一连几天参与社交活动(比如,
斟一小组鸡血视频
和自己一起成长
http://m.v.qq.com/play/play.html?coverid=&vid=c0518henl2a&ptag=2_6.0.0.14297_copy有一种努力叫做靠自己http://m.v.qq.com/play/play.html?coverid=&vid=i0547o426g4&ptag=2_6.0.0.14297_copy世界最励志短片https://v.qq.com/x/pa
用MiddleGenIDE工具生成hibernate的POJO(根据数据表生成POJO类)
AdyZhang
POJO eclipse Hibernate MiddleGenIDE
推荐:MiddlegenIDE插件, 是一个Eclipse 插件. 用它可以直接连接到数据库, 根据表按照一定的HIBERNATE规则作出BEAN和对应的XML ,用完后你可以手动删除它加载的JAR包和XML文件! 今天开始试着使用
.9.png
Cb123456
android
“点九”是andriod平台的应用软件开发里的一种特殊的图片形式,文件扩展名为:.9.png
智能手机中有自动横屏的功能,同一幅界面会在随着手机(或平板电脑)中的方向传感器的参数不同而改变显示的方向,在界面改变方向后,界面上的图形会因为长宽的变化而产生拉伸,造成图形的失真变形。
我们都知道android平台有多种不同的分辨率,很多控件的切图文件在被放大拉伸后,边
算法的效率
天子之骄
算法效率 复杂度 最坏情况运行时间 大O阶 平均情况运行时间
算法的效率
效率是速度和空间消耗的度量。集中考虑程序的速度,也称运行时间或执行时间,用复杂度的阶(O)这一标准来衡量。空间的消耗或需求也可以用大O表示,而且它总是小于或等于时间需求。
以下是我的学习笔记:
1.求值与霍纳法则,即为秦九韶公式。
2.测定运行时间的最可靠方法是计数对运行时间有贡献的基本操作的执行次数。运行时间与这个计数成正比。
java数据结构
何必如此
java 数据结构
Java 数据结构
Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类:
枚举(Enumeration)
位集合(BitSet)
向量(Vector)
栈(Stack)
字典(Dictionary)
哈希表(Hashtable)
属性(Properties)
以上这些类是传统遗留的,在Java2中引入了一种新的框架-集合框架(Collect
MybatisHelloWorld
3213213333332132
//测试入口TestMyBatis
package com.base.helloworld.test;
import java.io.IOException;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibat
Java|urlrewrite|URL重写|多个参数
7454103
java xml Web 工作
个人工作经验! 如有不当之处,敬请指点
1.0 web -info 目录下建立 urlrewrite.xml 文件 类似如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE u
达梦数据库+ibatis
darkranger
sql mysql ibatis SQL Server
--插入数据方面
如果您需要数据库自增...
那么在插入的时候不需要指定自增列.
如果想自己指定ID列的值, 那么要设置
set identity_insert 数据库名.模式名.表名;
----然后插入数据;
example:
create table zhabei.test(
id bigint identity(1,1) primary key,
nam
XML 解析 四种方式
aijuans
android
XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML。本文将详细介绍用Java解析XML的四种方法。
XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM(Document Object
spring中配置文件占位符的使用
avords
1.类
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.o
前端工程化-公共模块的依赖和常用的工作流
bee1314
webpack
题记: 一个人的项目,还有工程化的问题嘛? 我们在推进模块化和组件化的过程中,肯定会不断的沉淀出我们项目的模块和组件。对于这些沉淀出的模块和组件怎么管理?另外怎么依赖也是个问题? 你真的想这样嘛? var BreadCrumb = require(‘../../../../uikit/breadcrumb’); //真心ugly。
上司说「看你每天准时下班就知道你工作量不饱和」,该如何回应?
bijian1013
项目管理 沟通 IT职业规划
问题:上司说「看你每天准时下班就知道你工作量不饱和」,如何回应
正常下班时间6点,只要是6点半前下班的,上司都认为没有加班。
Eno-Bea回答,注重感受,不一定是别人的
虽然我不知道你具体从事什么工作与职业,但是我大概猜测,你是从事一项不太容易出现阶段性成果的工作
TortoiseSVN,过滤文件
征客丶
SVN
环境:
TortoiseSVN 1.8
配置:
在文件夹空白处右键
选择 TortoiseSVN -> Settings
在 Global ignote pattern 中添加要过滤的文件:
多类型用英文空格分开
*name : 过滤所有名称为 name 的文件或文件夹
*.name : 过滤所有后缀为 name 的文件或文件夹
--------
【Flume二】HDFS sink细说
bit1129
Flume
1. Flume配置
a1.sources=r1
a1.channels=c1
a1.sinks=k1
###Flume负责启动44444端口
a1.sources.r1.type=avro
a1.sources.r1.bind=0.0.0.0
a1.sources.r1.port=44444
a1.sources.r1.chan
The Eight Myths of Erlang Performance
bookjovi
erlang
erlang有一篇guide很有意思: http://www.erlang.org/doc/efficiency_guide
里面有个The Eight Myths of Erlang Performance: http://www.erlang.org/doc/efficiency_guide/myths.html
Myth: Funs are sl
java多线程网络传输文件(非同步)-2008-08-17
ljy325
java 多线程 socket
利用 Socket 套接字进行面向连接通信的编程。客户端读取本地文件并发送;服务器接收文件并保存到本地文件系统中。
使用说明:请将TransferClient, TransferServer, TempFile三个类编译,他们的类包是FileServer.
客户端:
修改TransferClient: serPort, serIP, filePath, blockNum,的值来符合您机器的系
读《研磨设计模式》-代码笔记-模板方法模式
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
配置心得
chenyu19891124
配置
时间就这样不知不觉的走过了一个春夏秋冬,转眼间来公司已经一年了,感觉时间过的很快,时间老人总是这样不停走,从来没停歇过。
作为一名新手的配置管理员,刚开始真的是对配置管理是一点不懂,就只听说咱们公司配置主要是负责升级,而具体该怎么做却一点都不了解。经过老员工的一点点讲解,慢慢的对配置有了初步了解,对自己所在的岗位也慢慢的了解。
做了一年的配置管理给自总结下:
1.改变
从一个以前对配置毫无
对“带条件选择的并行汇聚路由问题”的再思考
comsci
算法 工作 软件测试 嵌入式 领域模型
2008年上半年,我在设计并开发基于”JWFD流程系统“的商业化改进型引擎的时候,由于采用了新的嵌入式公式模块而导致出现“带条件选择的并行汇聚路由问题”(请参考2009-02-27博文),当时对这个问题的解决办法是采用基于拓扑结构的处理思想,对汇聚点的实际前驱分支节点通过算法预测出来,然后进行处理,简单的说就是找到造成这个汇聚模型的分支起点,对这个起始分支节点实际走的路径数进行计算,然后把这个实际
Oracle 10g 的clusterware 32位 下载地址
daizj
oracle
Oracle 10g 的clusterware 32位 下载地址
http://pan.baidu.com/share/link?shareid=531580&uk=421021908
http://pan.baidu.com/share/link?shareid=137223&uk=321552738
http://pan.baidu.com/share/l
非常好的介绍:Linux定时执行工具cron
dongwei_6688
linux
Linux经过十多年的发展,很多用户都很了解Linux了,这里介绍一下Linux下cron的理解,和大家讨论讨论。cron是一个Linux 定时执行工具,可以在无需人工干预的情况下运行作业,本文档不讲cron实现原理,主要讲一下Linux定时执行工具cron的具体使用及简单介绍。
新增调度任务推荐使用crontab -e命令添加自定义的任务(编辑的是/var/spool/cron下对应用户的cr
Yii assets目录生成及修改
dcj3sjt126com
yii
assets的作用是方便模块化,插件化的,一般来说出于安全原因不允许通过url访问protected下面的文件,但是我们又希望将module单独出来,所以需要使用发布,即将一个目录下的文件复制一份到assets下面方便通过url访问。
assets设置对应的方法位置 \framework\web\CAssetManager.php
assets配置方法 在m
mac工作软件推荐
dcj3sjt126com
mac
mac上的Terminal + bash + screen组合现在已经非常好用了,但是还是经不起iterm+zsh+tmux的冲击。在同事的强烈推荐下,趁着升级mac系统的机会,顺便也切换到iterm+zsh+tmux的环境下了。
我为什么要要iterm2
切换过来也是脑袋一热的冲动,我也调查过一些资料,看了下iterm的一些优点:
* 兼容性好,远程服务器 vi 什么的低版本能很好兼
Memcached(三)、封装Memcached和Ehcache
frank1234
memcached ehcache spring ioc
本文对Ehcache和Memcached进行了简单的封装,这样对于客户端程序无需了解ehcache和memcached的差异,仅需要配置缓存的Provider类就可以在二者之间进行切换,Provider实现类通过Spring IoC注入。
cache.xml
<?xml version="1.0" encoding="UTF-8"?>
Remove Duplicates from Sorted List II
hcx2013
remove
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,Given 1->2->3->3->4->4->5,
Spring4新特性——注解、脚本、任务、MVC等其他特性改进
jinnianshilongnian
spring4
Spring4新特性——泛型限定式依赖注入
Spring4新特性——核心容器的其他改进
Spring4新特性——Web开发的增强
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
Spring4新特性——Groovy Bean定义DSL
Spring4新特性——更好的Java泛型操作API
Spring4新
MySQL安装文档
liyong0802
mysql
工作中用到的MySQL可能安装在两种操作系统中,即Windows系统和Linux系统。以Linux系统中情况居多。
安装在Windows系统时与其它Windows应用程序相同按照安装向导一直下一步就即,这里就不具体介绍,本文档只介绍Linux系统下MySQL的安装步骤。
Linux系统下安装MySQL分为三种:RPM包安装、二进制包安装和源码包安装。二
使用VS2010构建HotSpot工程
p2p2500
HotSpot OpenJDK VS2010
1. 下载OpenJDK7的源码:
http://download.java.net/openjdk/jdk7
http://download.java.net/openjdk/
2. 环境配置
▶
Oracle实用功能之分组后列合并
seandeng888
oracle 分组 实用功能 合并
1 实例解析
由于业务需求需要对表中的数据进行分组后进行合并的处理,鉴于Oracle10g没有现成的函数实现该功能,且该功能如若用JAVA代码实现会比较复杂,因此,特将SQL语言的实现方式分享出来,希望对大家有所帮助。如下:
表test 数据如下:
ID,SUBJECTCODE,DIMCODE,VALUE
1&nbs
Java定时任务注解方式实现
tuoni
java spring jvm xml jni
Spring 注解的定时任务,有如下两种方式:
第一种:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http
11大Java开源中文分词器的使用方法和分词效果对比
yangshangchuan
word分词器 ansj分词器 Stanford分词器 FudanNLP分词器 HanLP分词器
本文的目标有两个:
1、学会使用11大Java开源中文分词器
2、对比分析11大Java开源中文分词器的分词效果
本文给出了11大Java开源中文分词的使用方法以及分词结果对比代码,至于效果哪个好,那要用的人结合自己的应用场景自己来判断。
11大Java开源中文分词器,不同的分词器有不同的用法,定义的接口也不一样,我们先定义一个统一的接口:
/**
* 获取文本的所有分词结果, 对比