# 傅立叶变换 画曲线_让你永远忘不了的傅立叶变换解析

使用联想链条和几何直观,辅以从实际需求衍生概念的思考模式,详解什么是傅立叶变换,为什么要做傅立叶变换等,帮助记忆和理解,目的当然是标题所说:让你永远忘不了傅立叶变换这个公式。另,这篇博客还从侧面一定程度上回答了另一个问题:为什么要研究复数。

本文为形象展示傅里叶变换和欧拉公式与初等群论两个视频的笔记结合,希望通过此篇,让所有读者对傅立叶变换有一个全新的认知!

1450cdbcea5aed81c24a16a7b48a03a8.gif

01

群 论

4fe81740c49b71a7119716b5d2bc2628.png

欧拉公式与旋转

在开始一步一步接近【傅立叶变换】前,先说一下群论,此部分有地方会提到【群论】这个概念,但博主并不是要试图把什么环、域、向量空间、代数结构、线性代数群、李群等等一大堆很抽象的概念灌输给大家,我们只是为了利用群论的概念,加深或者说建立一个对【理解傅立叶变换】极度有帮助的直观概念:指数函数(逆操作对数函数同理)是加法和乘法运算的桥梁,在自变量包含复数时表示旋转。

以具体的一个例子来说:

eπi 表示的是在单位圆上逆时针在旋转180°这个变换。

等等,这不是排行世界上最伟大的十个公式第二名的欧拉公式(上帝公式)嘛?(BTW,我们今天的主角【傅立叶变换】排行第七,这阵容着实强大)

c63e69a69f26050563694a792821e9ac.png

是的,这第一部分,捎带会带你更进一步的重新认识这个公式的伟大。

对称性 symmetry

首先,假设我们有以下陈述:正方形是对称图形。

那么,从数学(定义 or 公式)角度上来说,怎么描述【对称】这个概念呢?我们作为【人】,肯定会想,不就是看着左右一样嘛?不够严谨,不够优雅,继续深入,可以这么考虑:你能对正方形做些什么,并且在这个操作后,保持正方形的形态和操作前相同,我们把具有上述性质的操作都列出来,放在mi一起,如下面动图所示(左右旋转90°,旋转180°,四个轴对称,不变,这八个操作),就构成了一个有限群【对称群】,更专业的叫法是【八阶二面体群 Dihedral group of order 8】。

d3ae0daaca4eb864ed9a395e972b7199.gif

有了上面的直观理解,还有一个无限群需要了解,即【旋转群】,表示的是所有旋转操作,当然,因为角度可以无限细分,这个操作也是无限的。比如:顺时针旋转 ,此时能总结出一个巧合的现象,按照顺序进行上面8个操作的某两个,恰好等同于8个操作中的其他的某一个(旋转群同理),如下面的动图所示,把这些组合放到一起,才真正的表达了【群】这个概念。

2dfd80e935b6fd1c54bb26386bd8fc79.gif

很多不同的概念都能从对称性和对称性的符合构建得到,如下图所示,其中,数字本身有两种表达方式(操作),加法和乘法。

3157d3e7a38dbbb50d08b4ea03b8be9f.png

对于【数】这个集合来说,加法对应数轴的平移变换(一个操作),乘法对应着数轴的伸缩变换(一个操作),把这个数轴的概念拓展到平面坐标系,1D➜2D。如果我们要把一个点,比如 (1,0) 移动到另一个点,应该如何操作?简单的说,只需要先在横轴方向上平移,再在纵轴方向上平移即可(核心思想类比于正方形的几个操作)。同理,除了平移外,使用伸缩加旋转也可以完成同样的事情(将任意一点移动到另一个位置),伸缩是乘法显而易见,但是旋转怎么表示呢?(当然直接改变坐标轴的定义也是能做到的,例子就是极坐标系,但我们并不想这么做),我们构造以下思考链条:

  • 考虑一个特例操作:一个点变到另一个点:(1,0) 通过伸缩和旋转到 (-1,0),长度不用变,只需旋转即可。
  • 此时,注意到了一个形式很有特点的定义:,-1=i×i 就是我们需要的目标位置,那如何从 (1,0) 出发进行两次同样的操作可以得到 (-1,0) 呢?(这个操作即i 这个虚数单位定义的操作)答案即:一个单位i 表示旋转90°即可。
  • 更意外的发现,进行一次i 操作,如果是逆时针旋转90°,正好会落在二维平面y 轴的 (0,1) 与单位长度不谋而合。
  • 更大胆的假设,如果y 轴自带虚数单位,如i、2i、3i,就有旋转操作了,是不是就能通过乘法来描述处在这个平面上的所有变换了。

以上都是假设和推理,剥丝抽茧后,最关键的部分:如何使用单位i 表示逆时针旋转90° ,并且给出了一种可能的映射规则,x 轴平移表示伸缩,y 轴平移表示旋转,这样就可以保证群的特性?(几种操作一定可以组合成其他某个操作,有一个学名:保持群结构) 怎么可能表示旋转呢?怎么看都像啊,此时陷入了死胡同,不妨换个角度来思考,旋转到底是什么?旋转,是沿着一个圆弧(有圆心,转过的角度)运动的过程,如果你对泰勒公式非常熟悉,就可以通过一系列公式推导得到一个完美桥梁:【指数函数】,形如f(x)=ax

如果底数a=e,通过泰勒展开式,可以完成一个十分优美的变形,如下:

3776ca96c81b6aa664d22b85c7e5c1c6.png

x=iθ 带入上式(这里的θ 是一个未知数,即自变量),整理项,移动,结合cos(x) 和sin(x) 的泰勒展开式,还有虚数单位的定义, 有下列推导:

ada2f850334341bcace9b092f0e7731a.png

这个公式有什么用呢?可视化后,如下图所示。

960c62113e05dd0865a59073ba114bce.png

假设纵坐标自带虚数单位i(复平面),那么,sin(θ) 为纵坐标(自带虚数单位 i),cos(θ) 为横坐标,则可以发现:eiθ 表示一个圆心在原点,半径为1的单位圆(图中是α,因为作图软件的限制,换不成θ ,但不影响)。

eiθ 这个公式等价于一种旋转,θ 为旋转角的度数(统一单位,弧度制,即把°转换成实数)θ=2π 即为360°,是单位圆。

我们已经优雅的找到了这个桥梁,接下来仔细研究一下它意味着什么。

指数函数 Exponentiation

指数函数有一个非常重要的特性:加法变乘法,即

903db04cab148ad68af4d13dfe641b7f.png

也就是说通过指数函数,可以做到使用平移变换来描述伸缩变换,这具体是什么意思呢?参考下面的动图。

adf3aef84f94202e3884f1a4aafd0bc0.gif

上方的数轴,表示的是平移变换-1(左移一个单位)和2(右移两个单位)(加法),下方的数轴将两个数作为输入,代入到一个指数函数f(x)=2x 中,对于函数来说,这个输出值,就是两次伸缩变换 (乘法),一次是收缩为原来的2-1=1/2,另一次是拉伸成原来的2²=4倍。

注意,所谓可以变的意思是说,加法运算可以成立,意味着先往左平移1单位,再往右平移一单位,组合起来的左右就是往右平移一单位(-1+2=1, 群论的保持结构特性) , 而乘法运算成立也要满足这个特性。

复平面 Complex Plane

至此,构造复平面,把虚数单位i 加到纵轴上。我们就同时拥有了伸缩和旋转,最关键的是,有了这两个操作,我们同时也可以维持群的特性(使用乘法)。

如下面动图所示,在复平面内,以指数函数为桥梁,实轴横向平移对应伸缩,虚轴纵向平移对应旋转。

8df6030c56e779a7613b6083f12bcf50.gif

横坐标红线,横向平移映射到伸缩操作的可视化;纵坐标虚数单位,纵向平移映射到旋转操作的可视化,正为逆时针旋转。

现在使用的桥梁是底数为2的指数函数f(x)=2x ,我们知道eiπ 代表的半个圆周,我们希望把底数变成e,这样更加方便表达圆的概念。

每走一个单位的纵向位移,在圆周上旋转的圆弧长度就是1,参照下面的动图,eiπ 恰好代表逆时针旋转180°,并且落在的位置为 (-1,0),这就是欧拉公式,或者说是欧拉公式的几何直观可视化。

e82db44189a198866d28a192bfd8e214.gif

总结:

这第一部分到底干了啥?其实就是想建立一个观念(或者说常识)ex 在复平面,或者说x=ai(a为某个常数,就是弧度制的圆周长度)代表的变换是:旋转。

如果你之前学过傅立叶变换,那么会明白为什么需要花费这么大篇幅来讲这个,因为公式中,eiπ 那是可是相当重要的一部分啊。

02

傅里叶变换

正式进入傅立叶变换的部分,老规矩,先做一下基本信息整理。

首先,还是先弄清楚我们理解的目标是什么。傅立叶变换(如果不加限定,这个词对应的是连续傅立叶变换);傅立叶级数。

傅立叶变换还有很多其他的内容,离散时间傅立叶变换,离散傅立叶变换,傅立叶逆变换,快速傅立叶变换等,进一步的拉普拉斯变换,小波变换,z 变换等。

傅立叶变换,变换作用是时域映射到频域,公式是长这样的:

40a1f16d8af175845746863a6f57492b.png

其中。ξ 为任意实数。很多时候,这里的

2079b29ff877087477f7a0678f04b6bc.png

会写成F(ω) 或F(f ) 表示角速度或者频率,当然后面的公式的量纲也需要对应的修改;后面的自变量x 大多数时候都是写成t 表示时间。当然,他们表示的都是同一个东西。

联想链条

既然是为了【理解】和【记忆】,那么我们还是需要定义一个联想链条:傅立叶变换 ➜ 分解声音的过程。

这么抽象实在是因为拆字法真的很难联想出什么东西来(傅立叶?变换?嗯,很难的样子),只能这样了。

接下来就是精华部分:是傅立叶变换讲解内的核心内容!在笔记完成后,会给出结合直观理解的完整联想链条,目的当然是【让你永远忘不了】喽,点题!

【看到】傅立叶变换

1. 声音的表示

我们是如何记录声音的呢?如果你测量的是扬声器旁的气压,那么它会是一个随时间以正弦函数形态不断震荡的图像,一个标准音A(下图黄色),它的频率是440Hz,表示每秒钟振动440次;比它低一些的D(下图紫红),是294Hz,振动的慢一些。如果这两个音同时发出,产生的气压随时间曲线怎么决定呢?如下动图,其实就是把所有时间点的振幅加起来。

a53286807f98f72a18bca66cda84b204.gif

那么,如果给你随意一段随时间变化的气压曲线,你如何找到这些原有的组成音符呢?这就是我们的目的,参考下面的动图,感觉有点像是把一盘混好的原料分成组成它的单独的颜色,感觉不那么容易吧?

7cd34d34723e999d8fab0615b0b7d5f6.gif

下面就需要一步一步把这件事情做出来、

2. 可视化方法

首先,假设我们有一个每秒钟3拍子的声音信号(440Hz实在太快了),它的图像如下(Intensity为强度,可以同理成气压),并且我们只关注前面的4.5秒(即图像中画出来的部分)。

6db6ea86629630ac52b24bf7d9afd102.png

(1) 绕圈记录法:同一事物的不同角度

千万不要眨眼!下面是最关键的一步,是【看到】傅立叶变换的核心部分,如下面动图所示。

14990565a64463c5e9f85556f3462e06.gif

首先,把黄色曲线缠绕到一个圆上,大小就是原本信号的振幅。

圆周围的图像由白色的箭头绘制而成,速度可变,上图中的白色箭头移动速度是每秒钟转过半圈(这个速度是对于下面的圆形图像来说,每秒钟在圆形图像中转半圈),对应上面的则是虚线表示一圈走到的位置,0.5拍子/秒。

此时,有两个频率在起作用,一个是信号的频率:3次震荡/秒,另一个是图像缠绕中心圆的频率,为0.5圈/秒。第二个频率可以自由改变,相当于一个变量,下面的动图直观的展现了缠绕速度变化时的可视化表现。

7ba49d24ea06c6bc279a6ab888957f4f.gif

从最开始的0.79圈/秒(注意这里的速度是指绕单位圆的白色箭头的滑动速度)一直变化到1.55圈/秒,再到最后的恰好是3圈/秒,和原来的信号3拍/秒相同,此时会出现一个非常稳定的图像,我们可以理解成同步,这个绕圈图像记录了原信号的幅值变化并且每一圈都相同(周期性)。

其实,我们只是把一个水平的轴缠绕到一个单位圆上,并用另一个速度的记录标尺(白色箭头)来画图,从另一个角度(维度)来看我们的信号。

(2) 质心记录法:新维度的特征提取

虽然新图像挺好看的,但是现在感觉并没法从中看出什么。也不尽然,我们直观的发现,当白色箭头记录的速度在某些特定的值时,画出来的图形非常稳定,形态清晰。那如何表现这个特征呢?从两个角度来思考:

  • 自变量是什么?(输入特征):输入是一个可变化的转圈速度,既然可变,不妨把它看作自变量,即f(x) 中的x
  • 输出(新的圆圈图)有什么特征?(输出特征):观察到,当图像很混沌(没有规律,混乱的)时候,图像基本关于原点对称;稳定时,其实是“头重脚轻”的。描述“头重脚轻”最好的方法当然是用【质心】(它描述了物体的空间分布特征) ,下面的动图直观展现了质心特征对图像特征的描述能力(红色点为质心)。
006bd4679c36f679d9769183cc6ecb43.gif

考虑到质心其实是一个二维坐标,这里为了简洁和直观,取质心的横坐标来表示质心的特征:

  • 【输入(横坐标)】➜【进行采样的(白色箭头)的绕圈速度】
  • 【输出(纵坐标)】➜【圆圈图的质心位置的横坐标】

按照上面的说明来记录绘出图像,记录每个缠绕频率(速度)对应的质心位置,参看下列动图,随着图像的绘制到3圈/秒这个位置的时候,是不是感到似曾相识呢?

3802a696c416d3db9e128933599b64b5.gif

补充一点,在横坐标等于零点处有一个很大的值,只是因为原来的图像没有关于横轴对称,有一个偏移量,直观参看下面动图。

362027e24fc7a764779dfc3de475ced9.gif

我们可以看到,新图像的横坐标写的是【频率 Frequency】,即缠绕圆圈的记录速度,所以强烈建议看到频率,想起速度,并且抽象为围着圆圈跑的速度(个人感受,对理解【频率】的概念有助益)。

好!有了这个工具,先把它应用到两个声音的组合图像中看看效果(这是我最喜欢的一张动图)。

297c292c4e764a3352d7498037b3fb7b.gif

什么?还是没看清上面的振动图像如何变成圆圈图的?看下面的动图,缠绕圆圈速度为2圈/秒的白色箭头将时间信息映射到圆圈图中的的可视化。再次重复,白色箭头以一定的速度(频率,一秒几圈)在上图中向右横移,同时,在下面的单位圆内被转换成类似钟表指针移动的圆圈运动,并记录振幅,画出图像。

f703d041da94de12180400f703218648.gif

BTW,图形的一部分有点像动画EVA中某个使徒的脸,带给人一种诡异的仪式感。数学之令人敬畏,可能在这一刻熠熠生辉,刺的人睁不开眼。

2. 公式表示

大家也发现了,我们已经通过这样一个缠绕机器完成了时域到频域的转换,总得来说,参看下面的动图。

d62662be2afc04acd466fcda301ce4d6.gif

这是一种【近傅立叶变换】,为什么是【近】,后面会提到。先考虑,那如何数学语言表达这个【转圈记录机制(工具 or 机器)】呢?

(1) 旋转的表示。

如下面的动图所示,在这个工具中,非常关键的就是转圈,即表达旋转这种运动,根据第一大部分,这个桥梁,就是复平面,其背后的原理是指数函数结合泰勒公式。

5832eb52bc1560629083e8e41f8c41fd.gif

更进一步,指数函数中,以e 为底的函数有着特殊的性质,如下面动图所示,π 单位的e6.28i 就表示一个单位圆的360°旋转,则e2πit 表示的就是一秒钟一圈的旋转方程,感觉速度有点太快了,所以加一个f 频率,控制旋转的速度 ,图中为1/10 , 合起来表示一秒钟十分之一圈。

4f5c495dda16567e9b00680a8244bc50.gif

(2) 缠绕的表示。

首先,依据下面的动图所示,在傅立叶变换中,我们规定旋转是顺时针的(规定只是为了统一标准,并且有时候也会考虑书写简洁和方便计算),所以先加一个负号。假设原来的函数是g(t),将两者的幅值相乘就能得到缠绕图像,g(t)e-2πif

t ,可以说是相当机智了!

a8701bca945547d1adf302eb42f2161f.gif

(3) 质心的表示。

那如何表示质心这一概念呢?粗略想一下感觉挺难的,但是看起来很难的问题,有一种解决问题的途径是【演绎推理】。先从简单的特例出发,推广到一般,最后证明正确性即可。

考虑如何求一个正方形的质心位置,我们只需在边框上取n 个等距离分布的点,并且算这几个点的位置的平均值。那么推广到一般情况,也使用类似的采样点的方式解决,如下面动图所示(紫红色的点即采样点),得到

ff94148bd363e9d349cb27b08c1b1a54.png

ffb18f6d126a003c05f9cdccda5302c5.gif

随着采样点的增加,需要使用积分来求解这个问题,如下面动图所示,得到

42a588335f5ca4abce7c0c5f7e6279f9.png

1d0e1fdf721f65b54d1f9109d691e758.gif

(4) 整理积分限和系数

看到常数项系数1/t2-t1,如果忽略表达倍数关系的系数,对应的含义也会发生变化,不再是质心,而是信号存在的时间越久,位置是质心位置乘以一个倍数,它的值就越大。参看下面的动图,持续时长为3秒,那么新的位置就是原来质心位置的三倍;为6秒,就是原来的6倍。

3be74ccf029ec51f45bda2bec80a34d8.gif

而去掉系数的几何直观动图变为(红色箭头为去掉系数后的长度表示),最本质的区别是:可以使得最后绘制的图像更集中在对应的频率的附近,或者说在对应的频率位置的值更大。

23def46942ee65f7a772b8e0f1c5f9ca.gif

继续考虑上下限。我们知道,一般傅立叶变换公式的上下限是正负无穷,那它的几何直观是什么呢?参看下面动图,其实就是看看信号持续时间无穷大是什么样子的。

6ddc26cadf188da3622ff1e97d3fe487.gif

说实话,这个动图解答了我大学时代的一个疑惑,音乐文件不都是有时间长度的嘛,我就一直不懂,凭什么对负无穷到正无穷做傅立叶变换?原来真实情况是,负无穷到0,音乐结尾到正无穷,就像上面的动图,其实都没有振动幅值(电信号幅值)与之对应,再结合缠绕圆圈的思想:原来,从音乐开始到结束傅立叶变换和从负无穷到正无穷做傅立叶变换,是一回事啊!(吐槽完毕)

补充

1. 相位

在表示质心的时候,我们只取用了x 轴坐标,下面图中的蓝色曲线就是纵坐标(y轴 or 虚部)的可视化,红色曲线是横坐标(x轴 or 实部)。

4ceeb4a50d33fde78d92930040934b03.png

那么,相位是如何表示的呢?如下面动图所示,其中红色的部分为质心,长度为振幅大小,对应的角度就是相位。

12e7fe351407c6eadf6d9765a8028096.gif

2. 原信号的长度

再追根究底一些,因为之前已经提到过,假设我们的信号有4.5s。那么,考虑原信号的长度的变化呢?首先,假设信号的长度很长,那么缠绕圆上的线就会更多,每次接近稳定图像质心的变化速度更快(即频域图像更加密集),参看下面动图。

551ae688e5fb7c7b89e5987a0ed7d5e8.gif

那么对应的,如果原信号的长度缩短呢?如下面动图所示,频域图像会更加稀疏。原因同理,当缠绕的内容少的时候,重心变化的速度也相应的变慢了。

81f969cd2bea01227bce9639ca6b9be0.gif

总得来说,上述内容基本就详细解释了下面的现象:

b7601adede35c2446b8f7005b0f11aaf.gif

时域的信号周期越长,那么频域就越集中,越不容易发生混叠,越容易抽象出时间信号的周期性重复信息,此时自然而然的,周期性这个词就出现了。

另外,可以自己思索一下,比如无穷时间的周期时域信号呢?又比如一个恒定振幅(一个电平)的时域信号呢?其实这里就给出了一个提示有关为什么傅立叶变换有那么多需要考虑的变形了,因为在缠绕这件事情发生的过程中,有几种情况是特别的(这部分可能需要未来再更新了)。

03

总 结

讲了这么长,至此全部结束。估计读者都已经晕了,那么,在这里为【看到】傅立叶变换做一个总结,就来总的来说说我们从头到尾都干了些啥?参看下面动图。

6534390cc2c650c9844304a1605951a9.gif
  • e2πi 表示单位圆,添加自变量即可表示旋转;
  • 与原函数相乘缠绕到单位圆上;
  • 为求质心的特征,进行积分计算。

一步一步写出傅立叶变换公式的联想链条:

  • 一个逆时针旋转360°画成的圆→e2πi
  • 表示运动,需要原函数的自变量,时间te2πit
  • 表示旋转速度,需要自变量,频率fe2πift
  • 规定变换的采样方向为顺时针,加负号→e-2πift
  • 乘以原函数缠绕到单位圆并记录→g(t)e-2πift(此处使用g 符号标识原函数是为了和频率符号区分)
  • 为了计算质心特征,积分→
  • 自变量为频率f,写出函数表达式→

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

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

相关文章

找不到天隆虚拟机_玩转虚拟机,教你如何装系统

最近小白系统收到很多小伙伴的私信想要知道虚拟机如何安装系统,那么今天小白系统整理了下虚拟机安装系统的教程,下面一起看下吧。虚拟机安装系统适合什么人群呢?1、如果你新买的电脑不支持安装Win7系统,那么装个虚拟机吧&#xff…

从数据类型 nvarchar 转换为 numeric 时出错_JS入门篇(三):javascript的数据类型详解...

JavaScript的数据类型分为两大类,基本数据类型和复杂数据类型。基本数据类型:Undefined、Null、Boolean、Number、String。复杂数据类型:Object。(1)Undefined类型Undefined 类型只有一个值,即特殊的 undefined。在使用 var 声明变…

为啥我的页面模板的from提交不了数据_4-9【微信小程序全栈开发课程】意见反馈(四)--提交反馈信息

1、创建后端操作文件先在后端server/controllers文件夹中创建操作文件createopinion.js,用来将从前端页面提交的数据,插入到opinions表中,创建完之后,页面目录如下2、添加路由在路由管理文件server/routes/index.js文件中添加路由…

rac一节点时间比另一个节点快_数据库数据那么多为什么可以检索这么快?

你好,是我琉忆。经常跟数据打交道的你,有没有去考虑过数据上百万,为什么它可以检索那么快?一说到数据库的检索速度这么快,我想你一定想到了索引。没错,今天我们来简单聊聊索引,聊聊索引是什么&a…

唯有自己变得强大_真正的自立,唯是让自己变得更加强大

更大的成功,不是看我们用双腿走了多少路,而是要看我们总共行了多少路。一只萤火虫,靠自身的力量发出了光芒。夜晚,它仰头望天,对着月亮说:“我是靠自己而发光的,而你却是借助太阳的光芒。虽然你…

mysql必知必会_MySQL必知必会

MySQL必知必会联结的使用, 子查询, 正则表达式和基于全文本的搜索, 存储过程, 游标, 触发器, 表约束.了解SQL数据库基础电子邮件地址薄里查找名字时, 因特网搜索站点上进行搜索, 验证名字和密码, 都会用到数据库.数据库是一个以某种有组织的方式存储的数据集合.把数据库想象成一…

vm虚拟机安装_虚拟机 --- 安装VM(一)

虚拟机(英语:virtual machine),在计算机科学中的体系结构里,是指一种特殊的软件,可以在计算机平台和终端用户之间创建一种环境,而终端用户则是基于这个软件所创建的环境来操作软件。虚拟机最初由…

cnetos7 mysql5.6 utf8设置_CentOS7下安装MySQL 5.6修改字符集为utf8并开放端口允许远程访问...

前言mysql最初的免费战略已经深入人心,感觉自己一直都在用mysql。今天在CentOS7下装mysql。发现原来centos下默认没有mysql,因为开始收费了,取而代之的是另一个mysql的分支mariadb,这个是mysql创始人重新主导的分支。But, whateve…

preparedstatement打印sql语句_Mybatis是这样防止sql注入的

链接:https://juejin.im/post/5e131203e51d4541082c7db3Mybatis这个框架在日常开发中用的很多,比如面试中经常有一个问题:$和#的区别,它们的区别是使用#可以防止SQL注入,今天就来看一下它是如何实现SQL注入的。什么是S…

mysql 虚拟列索引_使用MySQL 5.7虚拟列提高查询效率

原标题:使用MySQL 5.7虚拟列提高查询效率导读翻译团队:星耀队知数堂团队成员:星耀队-芬达,星耀队-顺子,星耀队-M哥原文出处:https://www.percona.com/blog/2018/01/29/using-generated-columns-in-mysql-5-…

python selenium span内容读取_【程仁智推荐】Selenium自动化测试入门

LupuX 2017-06-18 14:24:28 11853 收藏 41分类专栏: Auto Test 文章标签: 自动化测试 selenium web测试 UI自动化版权一、什么是SeleniumSelenium 是一个浏览器自动化测试框架,它主要用于web应用程序的自动化测试,其主要特点如下…

c++ 操作mysql_C++操作mysql方法总结(1)

C通过mysql的c api和通过mysql的Connector C 1.1.3操作mysql的两种方式使用vs2013和64位的msql 5.6.16进行操作项目中使用的数据库名为booktik表为book……….(共有30条记录,只列出了部分记录,14-30未列出)一、通过mysql的C api进行操作1、新建一个空项目…

mysql进阶知识_Mysql面试知识点总结(进阶篇)

上一篇主要介绍一些基础的mysql知识点,这一篇我们介绍一下mysql比较重要但在开发中我们程序员很少知道的几个大点(自以为是的观点)。数据库设计三范式:第一范式:数据库表的每一列都是不可分割的原子数据项,即列不可拆分。第二范式…

java实现报表_修改带 JAVA 自定义类的报表还要重启应用,咋解决?

这是 JAVA 编译型语言特性决定的,修改 JAVA 程序重启应用也正常。只不过改报表就要重启整个应用就有点夸张了,报表变动比较频繁,每次都重启应用会影响业务的。这个问题的根本原因是耦合性问题,报表里一旦涉及到 JAVA 代码就要跟主…

idea 用iterm 终端_iTerm2 都不会用,还敢自称老司机?(上)

对于需要长期与终端打交道的工程师来说,拥有一款称手的终端管理器是很有必要的,对于 Windows 用户来说,最好的选择是 Xshell,这个大家都没有异议。但对于 MacOS 用户来说,仍然毋庸置疑,iTerm2 就是你要的利…

bootstrap 日历中文_bootstrap日期选择器本地化-中文

最近用bootstrap做项目,所以就顺便搜了下用bootstrap写的日期选择器。搜到的第一和第二条结果虽然是官网,但上面挂的还是基于bootstrap2的日期选择器(此时为北京时间2017-12-26 17:18),不能与bootstrap3兼容使用。所以又去找bootstrap3的日期…

td之间的间距怎么改_论文的一级标题、二级标题格式怎么弄?

其实论文写好了以后,论文格式的调整也是非常重要的,具体的格式一般有以下几点:标题格式,一级标题、二级标题、三级标题页码格式,一般是正文之前为罗马数字,正文以后为阿拉伯数字,一般是页脚中间…

winform教_电脑绝技教你22天学精Csharp之第十五天winform应用程序补充5

{{1}}$using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.IO;namespace _10打开对话框{publi…

plupload怎么设置属性_腾达无线路由器怎么设置,这些是你要知道的

腾达无线路由器怎么设置1、联好线路:到你家的外网网线接路由器的WAN口,你的电脑连到路由器的LAN口(有四个,任意一个均可),给路由器接通电源。设置的时候,给路由器通电,一根网线直接连电脑和路由器的这个口就…

mysql centos 安装目录在哪_centos中如何查看mysql安装目录在哪

centos中查看mysql安装目录的方法:推荐教程:centos使用教程1、使用ps -ef|grep mysql命令查看:结果:root 17659 1 0 2011 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir/var/lib/mysql --socket/var/lib/mysql/mysql.sock …