Mobicom 2021文章

文章地址:https://dl.acm.org/doi/10.1145/3447993.3448624

文章目录

  • 1 简述
  • 2 背景
  • 3 headfi实现基础
    • 3.1 耦合效应模型
    • 3.1.1 耳机中声电信号如何转化?
    • 3.1.2 为什么微小电压变化能够作为传感器输入
    • 3.2 精确测量电压 Null Measurement
      • 3.2.1 什么是惠斯通电桥
      • 3.2.2 惠斯通电桥中的C1从何而来?
      • 3.2.3 一对耳机阻抗互为C1可能引发的问题
    • 3.3 电路图
  • 4 基础评估
    • 4.1 直接激励信号测量敏感性测试
    • 4.2 间接激励信号测量敏感性测试
    • 4.3 音频质量测试
  • 5 用户识别
    • 5.1 检测用户是否戴上耳机
    • 5.2 用户身份识别
      • 子实验1
      • 子实验2
      • 子实验3
      • 子实验4
      • 子实验5
  • 6 生理感知
    • 6.1 理论
    • 6.2 实验
      • 子实验1
      • 子实验2
      • 子实验3
  • 7 手势识别
    • 7.1 理论
    • 7.2 实验
  • 8 语音通信
    • 8.1 理论
    • 8.2 实验
      • 8.2.1 客观实验
      • 8.2.2 主观实验

1 简述

headfi 是一个包含硬件+算法的全套系统设计,目的是将没有智能功能的老式耳机拥有智能功能(用户识别、手势控制、生理信号检测、语音通信)。
其创新点主要有两个:
(1)硬件方面使用的是可拔插的板子,要用的时候分别连接耳机和手机就行了,不用从硬件上改造耳机,比较方便。
(2)成本低,比新买一个智能耳机要便宜。

2 背景

对于可穿戴设备来说,耳机占据了很大的市场份额。这几年耳机智能化趋势如火如荼的展开,苹果、三星等著名公司都推出了智能手机。

当前的智能手机主要有如下功能:

  1. 通过算法可以降噪+定制个性化音频
  2. 通过运动感知传感器可以进行手势控制
  3. 通过微型惯性传感器可以检测呼吸、心率等生命体征

以上这些功能都依赖于耳机内置的传感器实现,没有传感器,就没有智能。可是不远的2019年,全年销售的耳机中超过99%没有内置传感器,甚至有43%连麦克风都没有。这就引出了这篇paper想解决的核心问题:
在不改动原有硬件结构的前提下,如何令用户能够使用现有的老式耳机体验智能耳机的各种功能?

如果答案是yes,那么就能实现前所未有的大规模的 earable intelligence, 显然,作者给出的自己的答案,提出了一套叫HeadFi(这是国外的一个耳机发烧友网站)的低功耗+低成本的设计方案,此方案主要由一个可拔插的外设实现(就是一块小板子)。


headfi区别于现有智能耳机方案的区别为:

  1. 将老式耳机中原有的驱动作为多功能传感器,而不是额外添加传感器
  2. 是一个可拔插设备,不是内嵌的

3 headfi实现基础

headfi通过将原有的两个耳机的驱动变为多功能传感器来检测激励信号,从而实现headfi的智能功能。这里的激励信号指的是“用户将耳机戴上”,“用户触摸了耳机”,“用户说话”等由外界变化产生的对耳机的激励信号

那么如何将耳机驱动变为多功能传感器从而检测激励信号呢?
作为传感器必备的就是输入端口,以及,要使用传感器的话就要明确传感器的输入信号是什么。
理论上很多耳机有一个天然输入端口就是麦克风,就算没有麦克风的耳机也可以将耳机作为麦克风来输入,因为本质上,耳机的扬声器和麦克风都是音频通道。
但是作者却没有直接将麦克风的接收信号作为输入信号,因为:

  1. 对于没有麦克风的耳机来说,由扬声器转化的麦克风性能上不如专门的麦克风,因为耳机中的膜片都是根据播放音频或是录制音频的任务提前校准好的。
  2. 就算有麦克风,由外界变化引起的激励信号很微弱,将被埋没在高了好几个数量级的音频信号中(戴上耳机肯定是要听音乐或者通话,那必然就有音频信号)

既然不能直接使用麦克风采集的信号,作者提出了一种替代方案,那就是通过利用耳机和外部环境的耦合反应并设计一个差分电路来检测微小电压变化。这个微小电压的变化就是传感器的输入信号。

3.1 耦合效应模型

headfi是如何检测激励信号的?
利用耳机和外部环境的coupling effect,即耦合效应。
耳机、耳道和鼓膜会形成一个对压力敏感的半封闭空间,外部触摸+内部的生理活动都会使这个空间的压力发生变化,压力变化会导致耳机内部的阻抗变化,从而导致耳机内测量的电压发生微小变化,由此可以实现新的智能功能。

3.1.1 耳机中声电信号如何转化?


耳机发送和接收声音主要靠两个部件,线圈+隔膜。

发出声音时,代表音频信号的交流电通过线圈,产生洛伦兹力,使线圈前后运动,从而带动隔膜震动,产生声音。
接收声音时,隔膜被声波震动,带动线圈运动,从而产生交流电,即接收到的音频信号。

通过线圈的交流电的大小主要由三个因素决定:

  1. 待发送的输入音频信号的电能大小
  2. 耳机驱动的等效阻抗 Z(headphones)
  3. 耳机隔膜处的空气压力 P(headphones)

3.1.2 为什么微小电压变化能够作为传感器输入


以figure 3为例,人带上耳机后,由耳机、耳道、鼓膜耦合组成的压力场可以用一个双端口的戴维南等效网络来表示,这个网络的参数为耳道、鼓膜、耳机的压强和阻抗。注意,这不是一个电路图,只是一个网络模型。

这个网络可以用如下公式来表示:

其中,P和Z分别代表戴维南压力和等效阻抗。在这个公式中,对于测量微小电压有用的就是 Z(headphones)。另外三个变量都受人类产生的激励信号影响。比如人碰了一下耳机,就会导致耳机的戴维南压力P(headphones)变化;人呼吸、心跳等生理活动产生的血管变形或导致耳道的戴维南压力P(earcanal)变化;同时,每个人的耳朵长的都不同,导致每个人耳的等效阻抗Z(earcanal)不同。

如前面所说,耳机的等效阻抗能够决定音频信号交流电大小,并且二者是线性关系,因此可以通过交流电的微小变化来感知耳机阻抗的变化,从而感知人-耳机之间的交互以及人的生理活动。

3.2 精确测量电压 Null Measurement

上述测量方法面临两个基本的挑战:

  1. 如何精确测量交流电的变化?测量必须精确,并且必须是非侵入式的(给耳机内部加个电压表就是侵入式的)
  2. 由外部激励引起的交流电变化十分微弱,会被输入的音频信号掩盖。就算没有音频信号输入,测量如此微弱的信号本身就很难。因为电路更容易受0V附近的噪声电压影响,所以相同的电压变化范围,电压绝对值越小,越难精确测量(0-0.1V比3.2-3.3V要难测)

由headfi的原理可以知道,只要能精确的测量微小的电压变化,就能实现智能。那么要如何测量微小的电压变化呢?

主流的测量微小电压变化的方法为使用差分放大器,但是这种电路有个缺点:

  1. 太庞大
  2. 输入输出信号的频率必须匹配
  3. 容易收到强噪声干扰:由于输入阻抗很大,会产生热噪声;测量时因为需要令参考电压和测量电压相减,减法过程会引入额外误差

不用差分放大器用什么?
惠斯通电桥

3.2.1 什么是惠斯通电桥


传统的惠斯通电桥是用来测量电阻值的。如上图所示,R1, R2是两个阻值为常数的电阻,bd两点间有一个电流表,如果电流表的示数为0,就说明上下两个臂平衡了。那么就有如下等式


我们就能测量出未知电阻Rx了。

headfi中使用的惠斯通电桥有点不一样,是工业界常用的一种惠斯通电桥形式,如下所示:

类似的,R1和R2是两个常数值电阻,只要C1和Cx的阻抗相同,那么两条臂中间的压降Vg就等于0,如果Cx发生变化,导致和C1不相等,Vg就会发生变化

为什么使用惠斯通电桥叫做 Null Measurement?
因为对电路特性不会产生影响。电压表在测量电压时会引入额外的电流,这就会引入不确定性

在headfi中,就使用上述惠斯通电桥来测量交流电的微小变化。
具体如何操作?

  1. 将Cx替换为耳机驱动的等效阻抗,这样通过vg就能测量由耳机等效阻抗变化引起的电压变化。
  2. 将输入的音频信号作为电桥的供电电压,这样能够取消输入音频信号的强干扰(一旦双臂平衡,惠斯通电桥测量的电压只与两条臂上的阻抗变化有关,与为其供电的电源无关)

惠斯通电桥优势:

  1. 是无源电路,相比有源电路,测量灵敏度更高、受热噪声的影响更小;
  2. 其固有的差分电路能够在没有任何花销的前提下,去除输入的音频信号;
  3. 只由两个无源电阻构成,因为结构简单,容易被做成集成电路。

3.2.2 惠斯通电桥中的C1从何而来?

上述惠斯通电桥想要发挥作用,必须找一个和耳机等效阻抗相等的C1来平衡电桥。一般用一个RLC电路来代替C1,但是这样的话headfi就很难量产了,因为每个耳机的等效阻抗都不一样,而headfi对任何耳机都应该是通用的,不可能只适配某个耳机。

再说了,前面有提到测量电路只由两个电阻构成,怎么又加入了额外的C1了呢?
作者很巧妙地利用一对耳机两端的等效阻抗的对称性来解决这个问题。每一对耳机在出厂时都要经过校准,使两个耳机的等效阻抗相同。利用这个特点,可以使一对耳机的两个等效阻抗互为C1. 这样即不用引入额外的RLC电路,又可以使每一个耳机的等效阻抗都得到一个相匹配的C1,一箭双雕

3.2.3 一对耳机阻抗互为C1可能引发的问题

作者表示 Vg = E(left) - E(right)
如果令一对耳机的等效阻抗互为C1,那么可能会有这么一个担忧:如果某个外部激励同时被两个耳机的驱动捕获,并且产生相同的电压变化,那么Vg不是就等于0,不是就测不出来了吗?

实际上,这种情况不会发生,因为就算某个激励信号同时被双耳的驱动捕获,激励信号到达两个驱动的路径也是不同的,所以E(left)不可能会等于E(right)

3.3 电路图


这就是 headfi 的电路原理图,从左往右看,S1是开关;再往右就是惠斯通电桥,测量Vg的两个端口还连接着放大电路,以放大Vg;RL是一个5k欧姆的电阻,用于欺骗手机的ADC,因为手机的ADC必须要检测到麦克风的存在才开始采样工作。如何检测?通过检测接入设备的阻抗,需要达到千欧级别才能被检测到,但是headfi的输出阻抗不到100欧,所以headfi在电路的末尾串联了一个5千欧的电阻来欺骗手机

因为只由几个无源电阻和放大器构成,这个电路板的成本很低,量产后不到50美分;并且主要的功耗都在放大器后,一般也就0.2mW

4 基础评估

光说不练假把式,作者想要通过 benchmark evalutation 来证明两个事情:
(1)headfi能够精确地测量微小电压变化
(2)headfi不会影响音频质量

作者使用了从2.99美元到15000美元价格范围内地54种耳机来测试。参加测试的耳机分为三类:(1)入耳式;(2)半入耳式;(2)头戴式

4.1 直接激励信号测量敏感性测试

实验目的:验证headfi对直接激励信号微小电压的变化是否敏感。


直接激励信号是指手势触摸等等直接改变耳机阻抗的行为;间接激励信号是指戴上耳机等改变耳机所处环境的行为。


实验设备:
扬声器,麦克风,假头(双耳能够接收声音)

实验思路:
使用1KHZ,60dB的正弦信号作为微弱激励信号(相当于人在1m远处聊天,就算摸一下耳机的信号都比这个大)

实验指标:
RSS,接收信号的强度,画一个图,y轴是累计分布函数CDF,X轴是RSS;y轴0.5对应的x轴就是平均RSS值

如上图,W 是有激励信号的意思;W/O是没有激励信号的意思。可以看到,即使是没有激励信号时的最高值也小于有激励信号时的最低值。

实验结果:证明了headfi肯定能检测出微小的电压变化

4.2 间接激励信号测量敏感性测试

实验目的:测试headfi是否能检测到间接激励信号导致的电压微小变化,这里是测试是否能判断耳机是否戴上。

实验思路:在戴上耳机和不带耳机的情况下,分别令手机发送20HZ-20KHZ的chirp信号,然后耳机分别记录这两段信号,计算FRSS;再在两次都戴耳机的情况下计算FRSS,看是否有差别。

实验指标:54对耳机的归一化FRSS,如何算FRSS? 设x1和x2分别为戴上耳机和没戴耳机时的RX信号,分别作傅里叶变换,然后令两段频域序列逐点相减得到一个新序列,然后令新序列取绝对值+累加

实验结果:戴耳机+不带耳机算出的FRSS和戴耳机+戴耳机算出的FRSS有明显区别,说明headfi能够检测到间接激励信号引起的微小电压变化

4.3 音频质量测试

实验目的:测试连接wifi后音频音质是否会发生变化

实验思路:看连接headfi之后耳机的频响曲线是否发生变化,通过频响曲线来判断音质是否会变化

实验指标:一个高质量耳机和一个低质量耳机的频率响应曲线FR ; 一个低质量耳机的累积谱衰减CSD

实验结果:从频响曲线上看,使用headfi并不会改变耳机频响曲线的形状,但是对于低质量的耳机来说音频会产生更大的衰减;从CSD上看,headfi对于音频信号的音质影响很微弱。


上图是频响曲线上边是便宜耳机,下边是贵耳机
下图是便宜耳机的CSD

下面开始一次介绍headfi能实现的智能功能

5 用户识别

目标:
(1)检测用户是否戴上了耳机;
(2)自动识别用户身份

实现工具:支持向量机作为分类器,真人戴的耳机采集到的信号作为训练集的positive samples;假人戴的耳机采集到的信号作为训练集的negative samples

5.1 检测用户是否戴上耳机

原理:根据seashell resonance effect,戴上耳机的时候,会形成针对特定频率噪声的回声室,产生共鸣,此时RSS和其标准差都会发生明显变化,靠这个可以辨别耳机是否被戴上

实验思路:请27个志愿者,7女20男,其中有一对双胞胎;令他们分别戴上54款耳机进行测试,54款耳机被分为5组;每一轮测试都令志愿者戴上耳机再摘下耳机,记录回声信号,SVM会根据训练集的训练结果来判断志愿者是否戴上耳机。

实验结果:五组耳机的正确识别率都很高。

IEM(入耳式耳机)效果最好,因为其深入耳道,受噪声影响最小

5.2 用户身份识别

原理:通过耳机主动向用户耳内发送chirp信号,计算用户耳道的CIR,每个人耳道的CIR都不一样

如上图所示,这是三个人分别使用两幅耳机测量的CIR的傅里叶变换,可以看到不同人的CIR在3KHZ之后差异明显,因为人的耳道的生理差异在 sub-centimeter level

实验思路:对于非双胞胎的25名志愿者,每人录制50个回声,对于双胞胎,没人录制100个回声;使用 k-fold (k=5)交叉验证

实验指标:识别精确度

在用户识别方面作者做了5个子实验来探究headfi的用户识别性能。


子实验1

使用不同带宽的chirp信号获得的识别精度不同

高于15KHZ的时候精度下降,是因为此时信道sub-mm level的变化会被捕捉,从而干扰识别;低于100HZ也不行,因为大多数机械波噪声都在这个频段。

因此作者使用 10-10KHZ,1s的chirp信号


子实验2


测试了使用不同的机器学习方法的效果。评价指标是 false acceptance rate(FAR,是错的,但是被认为是对的) 和 false rejection rate(FRR,是对的,但是被认为是错的),越低越好。可以看到SVM性能最好。


子实验3

双胞胎生理特征相似,是否影响识别?


根据混淆矩阵,可以发现双胞胎的识别正确率和其他人相差不大。


子实验4

用户运动是否影响识别结果?

可以发现运动幅度越大,识别错误率越高,因为运动会改变CIR


子实验5

headfi是否能做到长期用户识别?会不会一段时间后就不行了?


根据实验结果,确实会。reference是刚刚训练出分类器后的测试结果,随着时间退役,正确率越来越低。因为体液分泌等生理活动,人耳道的生理特征会随着时间变化,从而改变CIR。经过作者测试,洗完澡后精确度就会下降7%。


6 生理感知

作者以心率检测为例。

6.1 理论

原理:心跳会引起微弱血管变形,由此产生极其微弱的激励信号。

面临的困难:激励信号会被噪声和用户运动覆盖。

信号处理步骤:

  1. 让vg通过24HZ低通滤波器,滤除噪声

  2. 令vg作自相关,结果会出现尖峰,尖峰的位置会反映一次心跳的周期(注意,不是等于),通过尖峰的位置k可以通过Rbpm公式算出心率



  1. 得到的自相关序列会很长,要找到尖峰不简单,可以通过人心跳一般在35-200bpm这一常识来锁定一个范围(L, U),在这一范围内找到幅度最大的peak,其位置代入Rbpm公式中即可算出心率

可能出现的问题:人运动产生的激励信号可能覆盖心跳产生的激励信号

解决方法:将vg分割为一个个窗,在每个窗内分别计算心率,将异常点去除后再算均值。

6.2 实验

实验目的:评估心率检测的性能

实验思路:每次持续测量40秒,窗宽度为4秒,每两个窗之间有2秒的重叠;在两种情况下测量志愿者的心率:(1)有播放音频;(2)没有播放音频

实验指标:错误率 ER,一台正规的血氧仪的心率检测结果作为参考值

其中,RHF为headfi检测的心率,RPO为血氧仪检测的心率。

为了探究不同因素对于心率检测的影响 ,作者做了3个子实验


子实验1

探究低通滤波器的截止频率对于检测结果的影响

此实验中耳机有播放音乐


可以看到截止频率在50HZ以下正确率比较高,于是作者设为24HZ


子实验2

探究环境噪声对于心率检测的影响

分为使用不同种类的耳机进行测试

C为耳罩式;S为半入耳式;IEM为入耳式;左边三个是耳机没播放音频的情况,右边三个带M后缀的是耳机有播放音频的情况

对于商用心率检测系统来说,只要错误率小于5%就行,所以headfi是合格的;为什么不同耳机错误率不同作者也无法准确回答,但是IEM错误率最高可能是因为与皮肤接触面积最小。


子实验3

人类运动对于心率检测的影响

作者令志愿者在测试期间随机戴上或摘下耳机,这样就带来了强干扰。

左边是没有运动的情况;右边是有运动的情况

虽然用户在运动时错误率上升,但是仍然在小于5%的要求内


7 手势识别

7.1 理论

原理:不同手势引起的vg的变化有不同的特征

作者展示了四种手势:
(1)敲左边;
(2)敲右边
(3)滑左边;
(4)滑右边

如何区分左右?
看peak的正负

左边敲击,先是负peak再是正peak;右边敲击,先是正peak再是负peak

如何区分tapping 和 sliding?
看产生的peaks持续的时长, sliding产生的peak更多,持续的时间更长

如何检测以上时域特性?
使用轻量级检测算法CUSUM

CUSUM步骤:

  1. 将vg的每个采样点记为xn,每个采样点都配一个权重wn
  2. 定义一个值叫Sn,并定义了两组计算Sn的方程,其中一个方程用于去除negative peak,另一个用于去除 positive peak
  3. 让vg并行通过 max 和 min 函数, 令得到的sn叠加,得到总sn
  4. 设第一个positive peak的时间位置为t1, 第一个negative peak的时间位置为t2,如果t1大于等于t2(即negative peak在前,positive peak在后),就是左边,如果t1小于t2(positive在前,negative在后),就是右边
  5. 定义一个手势的时长为整个sn序列中第一个非零值到最后一个非零值的平均时间,根据具体实验,定义了一个阈值5000,平均时间小于5000就是tapping,大于5000就是sliding

7.2 实验

实验思路:在有音频和无音频的情况下,每个手势都重复300次。然后统计混淆矩阵


没有音频,正确率99%;有播音频,正确率98%。都很高,充分证明了headfi能够实现手势识别

8 语音通信

8.1 理论

目的:在没有麦克风的情况下实现麦克风的功能,以进行全双工语音通信

原理:说话声音通过不同路径传到电桥两条臂,产生vg,vg就是要传递的声音信号(在手机端应该还有算法将vg转化为标准的音频信号,但是作者没说)

可能会有一个问题:
理论上,打电话的时候,headfi不仅仅捕捉到用户的声音,还会捕捉到电话对面的人的声音,这会产生回声干扰
但是现实中不用担心,因为运营商在基站会运用复杂的信号消除算法来解决回声问题

8.2 实验

本质:测试这个功能其实就是在测试在使用惠斯通电桥的情况下,将耳机作为麦克风的效果。

8.2.1 客观实验

实验思路:用不同种类的耳机通话,计算HPEAQ,作为参考,还直接用笔记本内置的麦克风进行通话计算HPEAQ,通过HPEAQ的大小来判断通话质量

实验指标:
有PESQ和PEAQ两种评估音频信号的指标,但是这两种指标都是评估由电话网络引起的音频信号衰减的,而我们需要的是能够评估由终端设备引起的信号衰减的指标

于是作者参考PEAQ提出了HPEAQ,即令HeadFi录制的音频与手机内置麦克风录制的音频作相关系数,相关系数越高,说明越相似,说明headfi通话质量越高。

HPEAQ的值越高,通话质量越高。

实验结果:

PC就是直接使用笔记本内置麦克风,毫无疑问是最高的。IEM分数最低,因为深入耳道,只能接收到骨传导的声音,而其他种类的耳机可以接收到的空气传导的声音。

相关系数很低,作者说是因为幅度相差太大,但是作者说频率响应是相似的。

8.2.2 主观实验

实验思路:对于音频来说,评价其质量还可以使用主观指标MOS,也就是令志愿者为音频质量打分。作者邀请了26位志愿者,年龄覆盖24-60岁。作者令志愿者戴上不同种类的耳机与自己通话,然后让志愿者为通话质量打分,作为比较,作者还在实验中加入了使用iphone6打电话以作为参考。

评分表如下:

实验结果:

可以看到主观评价结果与客观评价结果相似。

最后作者总结了一下,结束!!!

【文献精读】HeadFi: Bringing Intelligence to All Headphones相关推荐

  1. 文献精读丨GWAS+TRN多组学方法揭示小麦穗发育调控过程

    文献精读笔记 英文题目:Systematic mining and genetic characteriza:tion of regulatory factors for wheat spike de ...

  2. seer文献_文献精读|基于SEER数据库构建肝癌非转移Nomogram

    文献精读|基于SEER数据库构建肝癌非转移Nomogram 作者:白介素2 摘要 目的 文章的目的比较明确,寻找肝癌肺转移相关的风险因素,并建立预后 Nomogram. 方法 回顾性分析 SEER数据 ...

  3. 文献精读丨NP 小麦群体演化历史Population genomics unravels the Holocene history of bread wheat and its relatives

    文献精读丨NP 面包小麦及其近缘种全新世群体演化历史 本期分享2023年3月17日发表于Nature Plant上的一篇关于面包小麦及其近缘种全新世群体演化历史的文章,讲述了小麦起源的故事,笔记总计约 ...

  4. 【Day35 文献精读】Causal contribution of primate auditory cortex to auditory perceptual decision-making

    阅读文献: Tsunada, J., Liu, A., Gold, J. et al. Erratum: Causal contribution of primate auditory cortex ...

  5. 文献精读(1)MRD,NSCLC

    文献题目:Longitudinal Undetectable Molecular Residual Disease Defines Potentially Cured Population in Lo ...

  6. 文献精读-PSEP-生物质和PE塑料的共热解MD以及DFT模拟

    Title: A study on co-pyrolysis mechanisms of biomass and polyethylene via ReaxFF molecular dynamic s ...

  7. 【Day34 文献精读】Of magnitudes and metaphors: Explaining cognitive interactions between space, time,and..

    阅读文献: Winter, B., Marghetis, T., & Matlock, T. (2015). Of magnitudes and metaphors: Explaining c ...

  8. 【Day24 文献精读】Metaphoric structuring: understanding time through spatial metaphors

    阅读文献: Boroditsky, L. (2000). Metaphoric structuring: understanding time through spatial metaphors. c ...

  9. 【Day1/5 文献精读】Speed Constancy or Only Slowness: What Drives the Kappa Effect

    阅读文献: Chen Y, Zhang B, Kording KP (2016) Speed Constancy or Only Slowness: What Drives the Kappa Eff ...

最新文章

  1. Html5开发-使用Canvas绘制图片
  2. Docker 容器的运行(八)
  3. Hbuilder开发HTML5 APP之图标和启动页制作
  4. oracle错误12518,ORA-12518:错误客户端连接不上
  5. Ubuntu Linux下通过TPM1.2芯片保护SSH私钥的安全
  6. 去除内联元素之间的间距
  7. 09年最值得期待7大IT收购:思科收购VMware
  8. 高级软件工程课程总结
  9. 名师李涛老师主讲 Photoshop CS2 (全教程下载)
  10. 计算题合集-管理经济学
  11. 翻译:最令人印象深刻的YouTube频道,可让您学习AI,机器学习和数据科学
  12. linux命令du -sh,du命令_Linux du 命令用法详解:显示每个文件和目录的磁盘使用空间...
  13. Oracle KEEP的用法
  14. 查看linux镜像版本的命令,Linux镜像列表中 怎样决定自己下载哪个版本
  15. 【matlab】:matlab的linspace函数解析
  16. 第十六章 时间序列数据分析基本概念
  17. 遇到黑客攻击遭遇勒索保护费怎么办?黑客最常见的攻击手段
  18. lisp写标高线_cad自动写标高lisp
  19. JPEG原理分析 及 JPEG解码器的调试
  20. CUMT 1031 Order

热门文章

  1. git提交 出现 : fatal: refusing to merge unrelated histories
  2. 网络加速和压缩技术论文整理
  3. DHF在氧化后CMP清洗工艺中的应用
  4. 尝试重新启动计算机和应用程序 错误4,最新版:Win10打开计算机,并提示“登录组件错误[4]请重新启动计算机管理器”,该怎么办?...
  5. 超好用的抓包工具——whistle的安装及使用
  6. ionic实战之实现图片列表以及图片浏览
  7. 高数解题神器:拍照上传就出答案,这个中国学霸做的AI厉害了 | Demo
  8. 2021高考俄语成绩查询,2021俄语高考——你离学霸就差俄语了!
  9. 文章目录 图片元素 img元素 显示图片的两种写法: alt 属性 与a元素连用 map元素 和figure元素 figcaption 联用
  10. PHPExcel数据导出