基于声音的击键信号识别

 

摘要

本文文章采用击键信号的短时能量及峰值片段的幅度及各个幅度对应的频率作为特征向量。采用声音搜集装置搜集敲击键盘产生的声音信号,并对声音信号进行巴特沃斯滤波方法进行滤波预处理;将上述经过滤波得到的信号减去环境背景信号,得到当前信号;其中,所述环境背景信号是一段无击键动作发生时采集的环境中的声音信号。

利用能量检测算法并提取出每个敲击动作的击键高峰的信号片段;使用能量检测算法检测出一个击键动作产生的音频信号中所要分析的、能量值最大的敲击波峰;对识别出的敲击波峰后,通过将该波峰波形的能量值与一个设定的阈值比较,得到该敲击波峰的起始点和终止点。

计算每个敲击动作的短时能量归一化值,击键高峰的信号片段并结合幅度对应的频率作为特征进行分类。为了将分类匹配算法更为准确,引入性能更优支持向量机的神经网络算法进行分类匹配,识别出每次的敲击;

将采集的信号一部分作为测试,作出实际分类和预测分类视图,并且计算得到正确识别率。

 

 

 

关键字:短时能量;能量检测算法;峰值片段;支持向量机训练

 

目录

1.简介    1

1.1研究背景及研究动机    1

1.2主要研究问题    1

2.击键识别技术研究    2

2.1国内外研究现状    2

2.3 基于声音信号的典型解决方案    2

2.3.1 基于定位的击键识别    3

2.3.2 基于机器学习的击键识别    3

2.4 发展趋势    4

3.基于声音的击键识别系统    4

3.1系统简介    4

3.2声音信号预处理    5

3.2.1 巴特沃斯滤波    5

3.2.2环境背景信号    7

3.2.3击键信号    7

3.3不同种类信号特征参数提取    9

3.3.1语音信号    9

3.3.2 鼠标点击信号    9

3.3.3击键信号    10

3.4.击键信号特征值提取    10

3.4.1提取击键高峰信号片段    11

3.4.2特征值提取及分类    11

3.5支持向量机(SVM)神经网络训练    12

3.5.1svm神经网络简介    12

3.5.2神经网络数据训练    13

3.5.3数据预测结果分析    13

4. 系统性能评估    14

附录一:    15

附录二:    16

附录三:    17

 

 

 

 

 

 

 

绪论

1.简介

1.1研究背景及研究动机

如今,随着各种信号检测系统的发展,键盘击键识别变得越来越重要。通过不同的信号检测,我们能够重现出敲击键盘的内容。随着信息安全技术的发展和人们对信息保密的要求越来越高,能够检测信号的同时做好反检测,正是当下所要考虑的。在做好检测击键行为的同时,设计出更好地方式来保护人的隐私。现有的室内环境中,击键所产生的声音,手势对室内WiFi信号的影响及击键动力方面的研究都可以被作为窃听的技术,从技术原理上研究键盘识别技术,从而更好地防止击键行为被窃听。

1.2主要研究问题

在安全研究领域,电磁设备和机械设备的信号泄露一直是一项重要的研究课题。早在上世纪 10 年代,德国科学家就曾对法国军队的电话线缆进行窃听。1943 年,一名工程师在使用 131-B2 型号的贝尔电话时,无意间发现了显示在示波器上电磁信号,由此,美国陆军和海军制造出当时的绝密的加密终端进行战时信息通讯,用于抵御德国和日本的密码分析研究人员可以使用特殊设备干扰空中的电磁波,通过对电磁波的提取和解码可以窃取用户的播放视频中的影像信息这种形式的窃听攻击可以在较远的范围内完成,并且具备较强的穿透障碍的能力。最近以来,研究人员通过声波的传播在物体表面引起的微小的振动来对声波进行还原然而,上述攻击方案对泄露信号的捕捉多是依赖精密的仪器设备完成的,在实际应用场景中,部署精密仪器的会为攻击的实施带来不小的难度。

新世纪以来,小型的移动设备,例如,移动电话和智能可穿戴设备,正逐渐变为强有力的工具,为了能够运行各种各样的应用程序,从邮件客户端到网上银行,移动设备中传感器的种类和数目以惊人的速度增长,让用户以意想不到的方式与外面的世界互动。然而,恶意软件可以通过获取手机摄像头的控制权限,进而获取用户的图像信息,也可以激活麦克风,录取周围环境中的声音。相关领域的研究人员注意到小型移动设备来的一系列安全隐患,并且发现用户使用键盘输入的文本内容可以从键盘泄露的声音信手机加速度计变化的读数中还原出来。本研究将针对击键识别这一具体问题,积极探索新的应用场景,提出更为普适的解决方案。

2.击键识别技术研究

现有键盘识别系统主要可以分为两个方面。

其一,根据击键动力学获取个人敲击键盘的特征进行个人身份的认证;

其二,采用声音,WiFi,光等信号进行键盘敲击内容的识别。第二种的研究方面又可以分为以下几类。(1)基于WiFi信号,采用CSI技术进行键盘敲击内容的识别。如Wikey,(2)基于声音信号等进行敲击键盘内容的识别.Context-free,通过捕捉声音信号进行键盘布局的重构。

以上的方法,要么需要采用专用的信号采集技术且对环境的条件要求比较高,要么需要的检测设备数量比较高且计算成本较高,不具有普适性。

2.1国内外研究现状

研究人员提出了一系列的解决方案识别用户击键,根据信号源的不同,主要可以分为三类:

(1) 基于声音信号的击键识别,研究人员不但可以通过不同按键发射的不同信号识别击键,而且可以根据击键信号到达麦克风阵列的不同时间对按键在键盘上的具体位置做定位。

(2) 基于电磁信号的击键识别,研究人员通过检测不同按键位置的电路板发射的不同的电磁信号、或者用户在敲击不同按键时对空中电磁信号产生的不同影响来识别击键

(3) 基于包括视觉信息在内的其他传感器信号的击键识别,研究人员通过计算机视觉的相关技术识别小型输入设备(例如,智能手机)的击键,通过可穿戴设备传感器数据的变化,追踪用户手部的细微动作进而识别击键。

2.3 基于声音信号的典型解决方案

基于击键时产生的声音信号,有两种技术方案常用于用户的击键识别

第一种是基于定位的技术。由于不同按键到麦克风阵列的距离不同,该技术通过计算从按键位置发出的声音传播到麦克风阵列的时间差来对击键位置进行精确地定位。

另一种是基于机器学习的分类技术。基于分类的技术方案能够实现细粒度击键识别的原因在于,不同按键产生的声音信号本身有轻微的区别,通过选取合理的数据特征构建数据集,可以训练出辨识能力较高的分类器模型。下面本文将以前人的研究工作为例,分别对两种典型的解决方案做详细的阐述。

2.3.1 基于定位的击键识别

利用麦克风阵列,基于声音到达时间差的传统的声源定位算法在最好情况下仅仅能够实现厘米级精度的定位[3]其理论上的依据是,声音信号的波形在其波长范围内(米级)是极其相似的,难以进行有效的区分。然而,纵然是精度为厘米级的定位方案,在击键识别领域也未必能达到较高的击键识别准确率。在有效控制麦克风阵列与被识别键盘距离的前提下,清华大学刘云浩教授的团队提出了一种基于定位技术的文本无关的击键识别方案。该方案使用商用的智能手机上的麦克风设备获取用户击键的声音信号,并使用 44100 赫兹(Hz)的采样速率,简单计算可知,两个相邻的采样点之间在距离上的最大分辨率大约为(343 米/秒)(/44100 赫兹)0.77 厘米,由于分辨率小于标准键盘相邻按键之间的距离,因而,如果能够在相邻或者相近采样点的粒度上识别声音的到达时间,在理论上就能有效地识别击键。如图 2.1所示,使用手机的双麦克风,利用双曲线模型,可以根据击键的声音信号在键盘上选定一个区域,该区域内包含了若干"疑似"按键,在图中用深灰色的方块表示。

2.3.2 基于机器学习的击键识别

基于机器学习方法的击键识别,在本质上是对不同按键的击键声音信号做分类。对小型移动设备进行输入时,不需要通过数据线外接实体键盘,仅仅使用在普通 A4 纸上打印的打印键盘,就可以以很高的准确率进行快捷地输入。UbiK不止可以实现在普通桌面上,也可以在常见的写字板上实现。实际上,在很多常见的通过敲击能产生声音的材料设备上,UbiK 均可以将其训练为便携式的键盘进行输入。为了提高声音样本的多样性,对同一个按键能够采集到更充分的数据,UbiK 使用智能手机的双麦克风对"击键"时产生的声音信号进行采集。由于双麦克风距离击键位置的远近不同,因而来自不同麦克风的声音信号在强度上和相位上都会有所不同。利用该差异,将两个麦克风采集到的所有数据均用于表征被敲击的按键,则该按键的击键信号的多样性会有明显提高,分类器的识别效果也会有所提升。,显示了两个麦克风采集的同一个按键多次击键信号的平均特征向量图,在该工作中,系统提取了声音信号中的增强频谱密度特征作为不同按键击键信号的特征向量。通过一段时间的训练过程,UbiK 即可投入使用。在训练和测试阶段,UbiK 按照同样的方法提取和优化击键特征数据。在初始化训练阶段,UbiK 学习了不同按键的特征,并对击键信号的共同特征做学习。在系统投入使用阶段,UbiK 利用在前述阶段获取的学习模型,首先检测击键信号,进而使用 K-近邻分类器对具体的按键做识别。系统在使用的过程中,不断扩充训练集样本的数目,以期达到使用时间越久,输入准确率越高的效果。

2.4 发展趋势

击键识别作为安全领域的一项重要研究课题,在问题描述的层面已经足够详细,在解决方案方面却涉及到许多领域的多项技术。随着网络技术的发展和精密网络设备的改进,研究人员从最初嗅探键盘内部电路的电磁信号,到使用软件无线电和天线阵列捕获振幅和相位信息,再到使用通用的商用设备采集敲击键盘时 Wi-Fi 的信道状态信息,人们已经逐渐使用更低成本的设备实现更高精度的键盘识别。随着移动互联网技术的发展,小型移动设备中的传感器数目呈现爆炸增长的状态,研究人员不止可以使用摄像头的图像信息,也可以使用多麦克风采集的声音信息,甚至加速度计或者陀螺仪的读数来捕捉用户手部的细粒度的动作,进而在更不易被察觉的状态下实现对用户击键识别攻击。随着智能硬件技术的发展,如今的用户逐渐穿戴了各式的智能硬件可穿戴设备,例如,智能手表、手环,甚至是智能戒指。研究人员可以从这些设备中获取用户手部的运动数据,例如,加速度计的读数、陀螺仪的读数,从数据中精确计算用户的细粒度动作,可以实现包括小型移动设备在内的键盘输入识别。然而目前的攻击方案中都存在一定的弊端,未来的击键识别研究将倾向于结合多种信号源以及技术,增强击键识别方案在真实应用场景下的鲁棒性。另外,也会积极探索生活中更复杂的应用场景,提出更复杂环境下的击键识别解决方案。

3.基于声音的击键识别系统

3.1系统简介

(1)声音搜集装置搜集敲击键盘产生的声音信号,并对声音信号进行预处理。

(2)利用能量检测算法并提取出每个敲击动作的击键高峰的信号片段。

(3)计算每个敲击动作的短时能量归一化值并结合峰值片段的幅度和频率作为特征进行分类。

(4)反馈针对识别结果的响应信息,调整分类算法的参数,进一步提升准确性。

训练网络流程框图

图3-1-1训练网络流程框图

 

测试网络流程图

图3-1-2测试网络流程框图

3.2声音信号预处理

(1)对每个麦克风采集并输出的信号,分别进行巴特沃斯滤波方法进行滤波;

(2)将上述经过滤波得到的信号减去环境背景信号,得到当前信号;其中,所述环境背景信号是一段无击键动作发生时采集的环境中的声音信号。

3.2.1 巴特沃斯滤波

程序见附录一

wp=2*20/fs;

ws=2*30/fs;

Rp=1;

As=30;

[N,wc]=buttord(wp,ws,Rp,As);

[B,A]=butter(N,wc);

bb=filter(B,A,original);

设计的buttord滤波器通带Wp的最大衰减为Rp,Ws处,阻带达到最小衰减为As。程序中设计的值为wp=2*20/fs;ws=2*30/fs;Rp=1;As=30;输出N的阶数为11。

图3-2 -1时域滤波前 图3-2-2时域滤波后

图3-2-3滤波前

图3-2-4滤波后

 

3.2.2环境背景信号

图3-2-5时域图 图3-2-6频域能量图

测试环境是安静的教室,从时域上波形稳定,波形最后出现尖峰。从频域上,能量主要集中于0~100Hz,120Hz附近,此两峰值之间,占据整个环境声音90%能量。

3.2.3击键信号

滤波得到的信号减去环境背景信号,得到当前信号。由上节对安静的教室进行采样,采样频率48000,得到安静信号的采样点幅度数组,维度为1x154112然后对击键信号,取0.45到0.8s之间的值作为环境信号的幅度值。在对击键信号处理过程中,击键信号的采样值与环境信号采样值相同,两者相减,近似得到纯净的击键信号。

图3-2-7环境信号提取图

图3-2-8纯净击键信号 图3-2-9频谱图

图3-2-10频谱图 图3-2-11能量图

对于击键信号,分析信号的归一化信号的幅值,短时能量,过零率,来作为信号的特征进行分析。每个击键信号的频率大致相似,但峰值区间的归一化能量不同,以此短时能量作为不同击键信号的特征向量的组成部分。

3.3不同种类信号特征参数提取

3.3.1语音信号

图3-3-1 图3-3-2

语音信号的频率主要集中于0~150Hz,同时在此区间的能量最大,所以对于语音信号在实际环境中的击键信号可以采用滤波器将其与其他声音信号分离开,从而得到更加准确的击键信号的特征值。

3.3.2 鼠标点击信号

             图3-3-3                                  图3-3-4

鼠标点击声在实际的键盘敲击环境中无法避免,因此分析鼠标点击声音的特征有一定的必要性。鼠标点击声时间较短,然而在300H频率附近却有着极大的能量,所以在击键信号特征值提取过程中,采用峰值片段能量阈值的办法分离出鼠标点击声音的能量峰值片段。对于鼠标峰值的计算采用归一化能量为0.5,击键信号能量幅值为0.35附近。对于实际能量阈值的选择为0.43。

3.3.3击键信号

图3-3-5击键信号时域图图3-3-6击键信号频谱图

击键信号中混杂着众多噪声,如图3-3-5的第3子图,混杂着语音信号。图3-3-6的第四个子图中为无语音信号,鼠标点击声和击键声音的安静教室声音信号。可知在安静的教室中也有着各种频率范围内的噪声

3.4.击键信号特征值提取

采用击键信号的短时能量及峰值片段的幅度及各个幅度对应的频率作为特征向量。采用声音搜集装置搜集敲击键盘产生的声音信号,并对声音信号进行巴特沃斯滤波方法进行滤波预处理;将上述经过滤波得到的信号减去环境背景信号,得到当前信号;其中,所述环境背景信号是一段无击键动作发生时采集的环境中的声音信号。

利用能量检测算法并提取出每个敲击动作的击键高峰的信号片段;使用能量检测算法检测出一个击键动作产生的音频信号中所要分析的、能量值最大的敲击波峰;对识别出的敲击波峰后,通过将该波峰波形的能量值与一个设定的阈值比较,得到该敲击波峰的起始点和终止点。

计算每个敲击动作的短时能量归一化值,击键高峰的信号片段并结合幅度对应的频率作为特征进行分类。每一个样本取513个能量幅度值,频谱中100个峰值及其对应的频率,和时域50个峰值,每个样本中包含763个数值,组成特征向量。为了将分类匹配算法更为准确,引入性能更优支持向量机的神经网络算法进行分类匹配,识别出每次的敲击;

3.4.1提取击键高峰信号片段

窗函数:附录二

图3-4-1 图3-4-2

可知对于数组中16000到16200中值包含振动信号从起振,达到峰值,到回振中的值,取窗函数宽度为200,窗函数的值为峰值附近的200值。

3.4.2特征值提取及分类

图3-4-3

图3-4-4

图3-4-3为900个样本对应的时域图。图3-4-4为样本对应的频谱图。按照上述方法做成900x763的样本矩阵,作为神经网络的训练和测试数据。

3.5支持向量机(SVM)神经网络训练

3.5.1svm神经网络简介

常用的基于梯度的BP神经网络,优化过程中可能陷于局部最小值。此外神经网络的结构设计依赖于设计者的先验知识(如隐层中神经元的个数),缺乏科学的设计知识。在训练过程中对于隐层的个数的设计对于结构设计者是个极大的挑战。

基于统计学的支持向量机方法能够从理论上实现对不同类别上的最优划分,具有很好的泛化性能。能针对有限样本情况而设定,得到现有信息下的最优解而非样本趋于无穷大时的最优解,算法最终转化为一个二次型最优求解问题。算法将实际问题通过非线性变换转换到高维特征空间,在高维空间中构造线性判别函数来实现源空间的非线性判别函数,这一特殊性质保证支持向量机具有广泛的泛化能力,并且巧妙地解决维数问题,使得样本复杂度与维度无关。

图3-5-1核函数支持向量机原理

3.5.2神经网络数据训练

程序:附录三

%% SVM网络训练

model = svmtrain(train_labels, train_f, '-c 2 -g 1');

%% SVM网络预测

[predict_label, accuracy,pred] = svmpredict(test_labels, test_f, model);

Svmtrain训练函数,默认为RBF核函数。

RBF核函数(径向基RBF内核,exp{-|xi-xj|^2/均方差},其中均方差反映了数据波动的大小。-c 是惩罚系数:2。-g 是核函数的宽度:1。

svmpredict 是根据训练获得的模型,对数据集合进行预测。

-b probability_estimates:是否需要进行概率估计预测,可选值为0 或者1,

默认值为0。model_file 是由svmtrain 产生的模型文件;test_file 是要进行预测的数据文件;output_file 是svmpredict 的输出文件,表示预测的结果值。

3.5.3数据预测结果分析

图3-5-2数据结果图

提取九类字母的击键信号的90个样本,进行误差分析,由图所示90个样本中,能识别出来的样本为78,识别率86%。对于识别率仍有提升空间。

 

  1. 系统性能评估

    图4-1

    图4-2

    图4-1中,对于用于测试的90个样本,中对于类别的划分仍不能实现精准划分。样本标签的确定根据神经网络的输出,和样本标签数字进行比较,取绝对值最小的位置,作为样本的标签。对于图4-2对于网络不能准确划分的样本,标签赋值为0,可知神经网络对于样本尚不能准确分类。

    参考文献:

    [1] 精通MATLAB神经网络 电子工业出版社 朱凯 王正林

    [2] 精通MATLAB最优化计算 电子工业出版社 龚纯 王正林

    [3] MATLAB基础及其应用 机械工业出版社

    [4] RBF神经网络自适应控制MATLAB仿真 清华大学出版社

    附录一:

    数据预处理:巴特沃斯滤波器

    close all;

    clear all;

    clc;[original_x,fs]= audioread('REC002_x.wav');

    dt=1/fs;

    n=500;

    t=[0:n-1]*dt; original=original_x(:,2)';

    figure;

    plot(original);title('原始语音信号x');%%巴特沃斯

    wp=2*20/fs;

    ws=2*30/fs;

    Rp=1;

    As=30;[N,wc]=buttord(wp,ws,Rp,As);

    [B,A]=butter(N,wc);

    bb=filter(B,A,original);

    [H,W]=freqz(B,A);

    figure

    plot(W,abs(H));

    title('巴特沃斯幅频特性');

    figure;

    plot(t,bb);

    title('巴特沃斯滤波');fs=22050;

    ft_x=fft(original_x);%1024点FFT变换

    f_x=fs*(0:511)/1024;

    figure(2)

    plot(f_x,abs(ft_x(1:512)));title('信号x的频谱图');xlabel('频率');ylabel('幅度');

    附录二:

    窗函数

    clear

    clc

    close all[original_x,fs]= audioread('REC002_x.wav');[t,y,length_t,f,y_h,length_f]=get_time_fre(original_x,fs);

    Ts = 1/fs;

    Fs = fs;%% 原始信号

    %t = 0:Ts:pi/2;

    %yt = sin(2*pi*5*t) + sin(2*pi*10*t) + sin(2*pi*15*t);

    yt = original_x;

    [Yf, f] = Spectrum_Calc(yt, Fs); %返回频率和频率幅度绝对值figureplot(t, yt)

    xlabel('t')

    ylabel('y')

    title('原始信号')

    figure

    plot(f, Yf)

    xlabel('f')

    ylabel('|Yf|')

    xlim([0 100])

    ylim([0 1])

    title('原始信号频谱')%% 加窗信号

    win = hann(length(t));

    yt=yt(:,1)';

    yt1 = yt.*win';[Yf1, f1] = Spectrum_Calc(yt1, Fs); figureplot(t, yt1)

    xlabel('t')

    ylabel('y')

    title('加窗信号')

    figure

    plot(f1, 2*Yf1) % 2表示能量系数

    xlabel('f')

    ylabel('|Yf|')

    xlim([0 100])

    ylim([0 1])

    title('加窗信号频谱')

    附录三:

    神经网络数据训练

    clear

    load f_all

    load labellabel=VarName1;

    A=change(f_all); b=change(label);

    f_all=A; label=b;%%选择训练级和测试级

    train_f = [f_all(1:10,:);f_all(21:30,:);f_all(101:110,:)];

    train_labels= [label(1:10,:);label(21:30,:);label(101:110,:)];

    test_f = [f_all(11:20,:);f_all(31:40,:);f_all(111:120,:)];

    test_labels = [label(11:20);label(31:40);label(111:120)];

    %% 数据预处理

    % 数据预处理,将训练集和测试集归一化到[0,1]区间

    [mtrain,ntrain] = size(train_f);

    [mtest,ntest] = size(test_f);

    dataset = [train_f;test_f];

    % mapminmax为MATLAB自带的归一化函数

    [dataset_scale,ps] = mapminmax(dataset',0,1);

    dataset_scale = dataset_scale';

    train_f = dataset_scale(1:mtrain,:);

    test_f = dataset_scale( (mtrain+1):(mtrain+mtest),: );

    %% SVM网络训练

    model = svmtrain(train_labels, train_f, '-c 2 -g 1');

    %% SVM网络预测

    [predict_label, accuracy,pred] = svmpredict(test_labels, test_f, model);

    %% 结果分析

    figure;hold on;

    plot(test_labels,'o');

    plot(predict_label,'r*');

    xlabel('测试集样本','FontSize',12);

    ylabel('类别标签','FontSize',12);

    legend('实际测试集分类','预测测试集分类');

    title('测试集的实际分类和预测分类图','FontSize',12);

    grid on;

转载于:https://www.cnblogs.com/hkkeryu/p/10277963.html

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

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

相关文章

http:(5):http状态码

HTTP状态码 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。 HTTP状态码的英文为HTT…

[爬虫][python][入门][网页源码][百度图片][豆瓣TOP250]

Robots协议 查看爬取规则 遵守相关法律法规 Robots协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉爬虫哪些页面可以抓取,哪些页面不…

mysql(1):查找语句练习

1创建一个员工表 CREATE TABLE employees ( emp_no int(11) NOT NULL, birth_date date NOT NULL, first_name varchar(14) NOT NULL, last_name varchar(16) NOT NULL, gender char(1) NOT NULL, hire_date date NOT NULL, PRIMARY KEY (emp_no)); 2插入数据 insert into em…

[Leedcode][JAVA][面试题 08.11][硬币][动态规划]

【问题描述】 面试题 08.11.硬币 硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)示例1:输入: n 5输出:2解释: 有两种方式可以凑成总金额: 55…

Java课程设计

目录 Magic-Towers一、团队课程设计博客链接团队博客地址二、个人负责模块或任务说明三、自己的代码提交记录截图四、课程设计感想Magic-Towers 一、团队课程设计博客链接 团队博客地址 二、个人负责模块或任务说明 任务分配  网络1713柳聪灵【组长】--Model游戏布局及障碍物的…

玩转oracle 11g(44):数据库发展历史

数据库发展历史 数据库技术从 20 世纪 60 年代开始到现在一共经历了三个发展阶段:  第一代是网状、层次数据库系统 网状 :通用电气公司 Bachman 等人在 1961 年开发成功的 IDS 层次 : IBM 公司在 1968 年开发的 IMS 第二代是关…

[Java学习资料] [成长之路]

[背景] 网上学习资料千千万万,成长之路千千万万,各取所需 JAVA基础 网站 https://www.runoob.com/java/java-tutorial.html https://www.w3cschool.cn/java/dict 公众号 书籍 算法 网站 labuladong https://github.com/labuladong/fucking-algo…

word 2013 题注、图注、插入图片自动修改大小、批量更新题注编号

1 、题注 图片下面的文字说明,如 图 1.1.1 2、图注 图的标题格式,可以右键修改段落为居中,选中图片,点下此格式快捷居中等其他格式 3、 题注插入 效果 如下 4、题注自动居中对齐 先点击图片--》居中,或者点图注居中…

玩转oracle 11g(45):关系数据库

关系数据库 关系模型 定义:以二维表的形式表示实体和实体之间联系的数据模型称为关系数据模型。 从模型的三要素角度看,关系模型的内容为: ( 1 )数据结构:一张二维表格。 &#xf…

[剑指offer][JAVA]面试题[51][数组中的逆序对][归并排序]

【问题描述】面试题51.数组中的逆序对 (困难) 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 示例 1:输入: [7,5,6,4] 输出: 5限制&…

2019年1月16日【第三天学习】

2019年1月16日星期三 任务一、运行CrackMe1.exe,提示 "嗯,对了" 代表成功。首先修改exe使得出现成功提示,其次不修改exe输入正确的密码达到成功的目的。 hint:https://blog.csdn.net/Nagi_Way/article/details/68961121 使用.Net的…

玩转oracle 11g(46):图解oracle数据库

1构成 由实例和数据库构成 2构成 3市例 4构成

[Leedcode][JAVA][第46题][全排列][回溯算法]

【问题描述】 46.全排列 (中等) 给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3] 输出: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1] ]【解答思路】 1. 回溯 时间复杂度:O(NN!) 空间…

java学习(167):生产者消费者问题

class Ck {private char[] r1 new char[8];private int wp 0;public synchronized void shengchan(char aa) {while (wp r1.length) //满了try {this.wait();} catch (Exception e) {}this.notify();//叫醒另一个线程,当前线程处于就绪状态r1[wp] aa;wp;System.…

[Markdown语法][快速入门][CSDN]

Markdown语法Markdown学习资料【使用建议】快捷键目录标题文本样式列表链接代码片表格注释 & 注脚自定义列表LateX数字公式插入甘耐图插入UML图插入Mermaid流程图插入Flowchart流程图Markdown学习资料 「中文文案排版指北」 「官方文档」 [科学上网] 【使用建议】 Mark…

常用开发环境搭建配置教程(OneStall)

最近想要做一个小东西,用到了下面几个中间件或者环境: Java Tomcat Maven MongoDB ZooKeeper Node 并且恰好碰到腾讯云打折,云主机原价100多一个月,花了30块钱买了三个月。买下后立即动手准备开始环境配置。 说到环境,…

sqlserver:(1):sqlserver安装超详细

1第一步,下载对应的镜像文件链接: https://pan.baidu.com/s/1nBwjrukxCAMD4xLdYofPXA 提取码:9rv7 复制这段内容后打开百度网盘手机App,操作更方便哦 然后,点击左面安装,在显示页面中点击全新SQLServer独…

linux 5识别网卡,CentOS 5.5系统识别不了Atheros AR8151网卡怎么办?

在安装完CentOS 5.5系统后,有些人出现无法上网的现象,经检测发现是Atheros AR8151网卡识别不了,遇到这种问题不用怕,下面小编就给大家介绍下CentOS 5.5无法识别Atheros AR8151网卡的解决方法。现象前段时间,在一台电脑…

混合代码块 Markdown Leedcde

混合代码块 Markdown(仅限Leedcode) 使用说明 Markdown 语法 注意语言后有空格 ! 展示效果

java学习(168):java连接SQL server数据库

1安装sql server数据库 2打开eclipse写入以下代码 package sjk;import java.sql.*;public class Main {//这里可以设置数据库名称private final static String URL "jdbc:sqlserver://localhost:1433;DatabaseNametest";private static final String USER"sa&…