zoukankan      html  css  js  c++  java
  • 关于卷积的血腥实例、本质及物理意义

    作为一名苦逼工科生,《信号与系统》+《数字信号处理》是绕不过去的坎,各种让人头疼的概念与数学公式:傅里叶变化、拉普拉斯变化、Z变换、卷积、循环卷积、自相关、互相关、离散傅里叶变化、离散傅里叶时间变化……

    前一段时间在知乎发现一个有趣例子,生动形象地解释了卷积的物理意义,且解释的较为准确,下面,正文来了:

    比如说你的老板命令你干活,你却到楼下打台球去了,后来被老板发现,他非常气愤,扇了你一巴掌(注意,这就是输入信号,脉冲),于是你的脸上会渐渐地(贱贱地)鼓起来一个包,你的脸就是一个系统,而鼓起来的包就是你的脸对巴掌的响应,好,这样就和信号系统建立起来意义对应的联系。

    下面还需要一些假设来保证论证的严谨:假定你的脸是线性时不变系统,也就是说,无论什么时候老板打你一巴掌,打在你脸的同一位置(这似乎要求你的脸足够光滑,如果你说你长了很多青春痘,甚至整个脸皮处处连续处处不可导,那难度太大了,我就无话可说了哈哈),你的脸上总是会在相同的时间间隔内鼓起来一个相同高度的包来,并且假定以鼓起来的包的大小作为系统输出。好了,那么,下面可以进入核心内容——卷积了!

    如果你每天都到地下去打台球,那么老板每天都要扇你一巴掌,不过当老板打你一巴掌后,你5分钟就消肿了,所以时间长了,你甚至就适应这种生活了……如果有一天,老板忍无可忍,以0.5秒的间隔开始不间断的扇你的过程,这样问题就来了,第一次扇你鼓起来的包还没消肿,第二个巴掌就来了,你脸上的包就可能鼓起来两倍高,老板不断扇你,脉冲不断作用在你脸上,效果不断叠加了,这样这些效果就可以求和了,结果就是你脸上的包的高度随时间变化的一个函数了(注意理解);如果老板再狠一点,频率越来越高,以至于你都辨别不清时间间隔了,那么,求和就变成积分了。

    可以这样理解,在这个过程中的某一固定的时刻,你的脸上的包的鼓起程度和什么有关呢?和之前每次打你都有关!但是各次的贡献是不一样的,越早打的巴掌,贡献越小,所以这就是说,某一时刻的输出是之前很多次输入乘以各自的衰减系数之后的叠加而形成某一点的输出,然后再把不同时刻的输出点放在一起,形成一个函数,这就是卷积,卷积之后的函数就是你脸上的包的大小随时间变化的函数。

    本来你的包几分钟就可以消肿,可是如果连续打,几个小时也消不了肿了,这难道不是一种平滑过程么?反映到剑桥大学的公式上,f(a)就是第a个巴掌,g(x-a)就是第a个巴掌在x时刻的作用程度,乘起来再叠加就ok了,大家说是不是这个道理呢?我想这个例子已经非常形象了,你对卷积有了更加具体深刻的了解了吗?反正小编是被吓懂了。

    好啦,说完这个例子,咱们再来分析一下它的实质和物理意义吧!

    分三个部分来理解:
    1.信号的角度
    2.数学家的理解(外行)
    3.与多项式的关系

    卷积这个东东是“信号与系统”中论述系统对输入信号的响应而提出的。因为是对模拟信号论述的,所以常常带有繁琐的算术推倒,很简单的问题的本质常常就被一大堆公式淹没了,那么卷积究竟物理意义怎么样呢?
    卷积表示为y(n) = x(n)*h(n)
    使用离散数列来理解卷积会更形象一点,我们把y(n)的序列表示成y(0),y(1),y(2) and so on; 这是系统响应出来的信号。
    同理,x(n)的对应时刻的序列为x(0),x(1),x(2)...and so on;
    其实我们如果没有学过信号与系统,就常识来讲,系统的响应不仅与当前时刻系统的输入有关,也跟之前若干时刻的输入有关,因为我们可以理解为这是之前时刻的输 入信号经过一种过程(这种过程可以是递减,削弱,或其他)对现在时刻系统输出的影响,那么显然,我们计算系统输出时就必须考虑现在时刻的信号输入的响应以及之前若干时刻信号输入的响应之“残留”影响的一个叠加效果。
    假设0时刻系统的响应为y(0),若其在1时刻时,此种响应未改变,则1时 刻的响应就变成了y(0)+y(1),叫序列的累加和(与序列的和不一样)。但常常系统中不是这样的,因为0时刻的响应不太可能在1时刻仍旧未变化,那么,怎么表述这种变化呢,就通过h(t)这个响应函数与x(0)相乘来表述,表述为x(m)×h(n-m),具体表达式不用多管,只要记着有大概这种关系,引入这个函数就能够表述y(0)在1时刻究竟削弱了多少,然后削弱后的值才是y(0)在1时刻的真实值,再通过累加和运算,才能得到真实的系统响应。
    再拓展点,某时刻的系统响应往往不一定是由当前时刻和前一时刻这两个响应决定的,也可能是再加上前前时刻,前前前时刻,前前前前时刻,等等,那么怎么约束这个范围呢,就是通过对h(n)这个函数在表达式中变化后的h(n-m)中的m的范围来约束的。说白了,就是当前时刻的系统响应与多少个之前时刻的响应的“残留影响”有关。
    当考虑这些因素后,就可以描述成一个系统响应了,而这些因素通过一个表达式(卷积)即描述出来不得不说是数学的巧妙和迷人之处了。

    ++++++++++++++++++++++我是聪明的分割线+++++++++++++++++++++++++++++++

    卷积是人为定义的一种运算,就是为了计算的方便规定的一种算法。两个函数普通乘积的积分变换(傅里叶变换与拉普拉斯变换)与这两个函数积分变换的卷积建立了关系,使我们只要会求两个函数的变换,利用卷积就可以求这两个函数乘积的变换。
    卷积在数据处理中用来平滑,卷积有平滑效应和展宽效应.
    谈起卷积分当然要先说说冲击函数----这个倒立的小蝌蚪(别想太多,单纯点),卷积其实就是为它诞生的。“冲击函数”是狄拉克为了解决一些瞬间作用的物理现象而提出的符号。古人曰:“说一堆大道理不如举一个好例子”,冲量这一物理现象很能说明“冲击函数”。在t时间内对一物体作用F的力,我们可以让作用时间t很小,作用力F很大,但让Ft的乘积不变,即冲量不变。于是在用t做横坐标、F做纵坐标的坐标系中,就如同一个面积不变的长方形,底边被挤的窄窄的,高度被挤的高高的,在数学中它可以被挤到无限高,但即使它无限瘦、无限高、但它仍然保持面积为1不变(它没有被挤没!),为了证实它的存在,可以对它进行积分,积分就是求面积嘛!于是“卷积”这个数学怪物就这样诞生了。说它是数学怪物是因为追求完美的数学家始终在头脑中转不过来弯,一个能瘦到无限小的家伙,竟能在积分中占有一席之地,必须将这个细高挑清除数学界。但物理学家、工程师们确非常喜欢它,因为它解决了很多当时数学家解决不了的实际问题。最终追求完美的数学家终于想通了,数学是来源于实际的,并最终服务于实际才是真。于是,他们为它量身定做了一套运作规律。于是,妈呀!你我都感觉眩晕的卷积分产生了。

    目前,傅立叶变换最重要的应用之一就是可以将卷积方程变成两个函数的乘积形式去求解。卷积分是积分方程家族的一名重要成员。

    ++++++++++++++++++++++哈哈哈,懂一点点了吧+++++++++++++++++++++++++++++++

    卷积是一种积分运算,它可以用来描述线性时不变系统的输入和输出的关系:即输出可以通过输入和一个表征系统特性的函数(冲激响应函数)进行卷积运算得到。  
    以下用$符号表示从负无穷大到正无穷大的积分。 
    一维卷积:y(t)=g(k)*x(k)=$g(k)x(t-k)  
    先把函数x(k)相对于原点反折,然后向右移动距离t,然后两个函数相乘再积分,就得到了在t处的输出。对每个t值重复上述过程,就得到了输出曲线。  
    二维卷积:h(x,y)=f(u,v)*g(u,v)=$$f(u,v)g(x-u,y-v)  
    先将g(u,v)绕其原点旋转180度,然后平移其原点,u轴上像上平移x, v轴上像上平移y。然后两个函数相乘积分,得到一个点处的输出。  
    图像处理中的卷积与上面的定义稍微有一点不同。用一个模板和一幅图像进行卷积,对于图像上的一个点,让模板的原点和该点重合,然后模板上的点和图像上对应的点相乘,然后各点的积相加,就得到了该点的卷积值。对图像上的每个点都这样处理。由于大多数模板都是对称的,所以模板不旋转。
    把一个点的像素值用它周围的点的像素值的加权平均代替。(其实就是均值法啦)

    ++++++++++++++++++++++说完收工,回家过年++++++++++++++++++++++++++++++

    卷积的物理意义,解释的真幽默!
    有一个七品县令,喜欢用打板子来惩戒那些市井无赖,而且有个惯例:如果没犯大罪,只打一板,释放回家,以示爱民如子。

    有一个无赖,想出人头地却没啥指望,心想:既然扬不了善名,出恶名也成啊。怎么出恶名?炒作呗!怎么炒作?找名人呀!他自然想到了他的行政长官——县令。

    无赖于是光天化日之下,站在县衙门前撒了一泡尿,后果是可想而知地,自然被请进大堂挨了一板子,然后昂首挺胸回家,躺了一天,嘿!身上啥事也没有!第二天如法炮制,全然不顾行政长管的仁慈和衙门的体面,第三天、第四天......每天去县衙门领一个板子回来,还喜气洋洋地,坚持一个月之久!这无赖的名气已经 和衙门口的臭气一样,传遍八方了!
    县令大人噤着鼻子,呆呆地盯着案子上的惊堂木,拧着眉头思考一个问题:这三十个大板子怎么不好使捏?......想当初,本老爷金榜题名时,数学可是得了满分,今天好歹要解决这个问题:
    ——人(系统!)挨板子(脉冲!)以后,会有什么表现(输出!)?
    ——废话,疼呗!
    ——我问的是:会有什么表现?
    ——看疼到啥程度。像这无赖的体格,每天挨一个板子啥事都不会有,连哼一下都不可能,你也看到他那得意洋洋的嘴脸了(输出0);如果一次连揍他十个板子,他可能会皱皱眉头,咬咬牙,硬挺着不哼(输出1);揍到二十个板子,他会疼得脸部扭曲,像猪似地哼哼哼(输出3);揍到三十个板子,他可能会像猪似地嚎叫,一把鼻涕一把泪地求你饶他一命(输出5);揍到四十个板子,他会大小便失禁,勉强哼出声来(输出1);揍到五十个板子,他连哼一下都不可能(输出0)——死啦!
    县令铺开坐标纸,以打板子的个数作为X轴,以哼哼的程度(输出)为Y轴,绘制了一条曲线:
    ——呜呼呀!这曲线象一座高山,弄不懂弄不懂。为啥那个无赖连挨了三十天大板却不喊绕命呀?
    —— 呵呵,你打一次的时间间隔(Δτ=24小时)太长了,所以那个无赖承受的痛苦程度一天一利索,没有叠加,始终是一个常数;如果缩短打板子的时间间隔(建议 Δτ=0.5秒),那他的痛苦程度可就迅速叠加了;等到这无赖挨三十个大板(t=30)时,痛苦程度达到了他能喊叫的极限,会收到最好的惩戒效果,再多打就显示不出您的仁慈了。
    ——还是不太明白,时间间隔小,为什么痛苦程度会叠加呢?
    ——这与人(线性时不变系统)对板子(脉冲、输入、激 励)的响应有关。什么是响应?人挨一个板子后,疼痛的感觉会在一天(假设的,因人而异)内慢慢消失(衰减),而不可能突然消失。这样一来,只要打板子的时间间隔很小,每一个板子引起的疼痛都来不及完全衰减,都会对最终的痛苦程度有不同的贡献:
    t个大板子造成的痛苦程度=Σ(第τ个大板子引起的痛苦*衰减系数)
    [衰减系数是(t-τ)的函数,仔细品味]
    数学表达为:y(t)=∫T(τ)H(t-τ)
    ——拿人的痛苦来说卷积的事,太残忍了。除了人以外,其他事物也符合这条规律吗?
    ——呵呵,县令大人毕竟仁慈。其实除人之外,很多事情也遵循此道。好好想一想,铁丝为什么弯曲一次不折,快速弯曲多次却会轻易折掉呢?
    ——恩,一时还弄不清,容本官慢慢想来——但有一点是明确地——来人啊,将撒尿的那个无赖抓来,狠打40大板!
    也可以这样理解:
    T(τ)即第τ个板子,H(t-τ)就是第τ个板子引起的痛苦到t时刻的痛苦程度,所有板子加起来就是∫T(τ)H(t-τ)
    ++++++++++++++++++++++我是狠心的分割线+++++++++++++++++++++++++++++++

    卷积法的原理是根据线性定常电路的性质(齐次性、叠加性、时不变性、积分性等),借助电路的单位冲激响应h(t),求解系统响应的工具,系统的激励一般都可以表示为冲击函数和激励的函数的卷积,而卷积为高等数学中的积分概念。建议你去看看定积分的内容。(哈哈,又要去补高数,小编是不是很坏啊!)

    特别注意的是:概念中冲击函数的幅度是由每个矩形微元的面积决定的。
    总的说来卷积就是用冲击函数表示激励函数,然后根据冲击响应求解系统的零状态响应。
    卷积实质上是对信号进行滤波。
    卷积应该就是求和也就是积分,对于线性时不变的系统,输入可以分解成很多强度不同的冲激的和的形式(对于时域就是积分了),那么输出也就是这些冲激分别作用到系统产生的响应的和(或者积分)。所以卷积的物理意义就是表达了时域中输入,系统冲激响应,以及输出之间的关系。
    卷积是在时域求解LTI系统对任意激励的零状态响应的好方法,可以避免直接求解复杂的微分方程。
    从数学上来说卷积就是定义两个函数的一种乘法。对离散序列来说就是两个多项式的乘法。物理意义就是冲激响应的线性叠加,所谓冲激响应可以看作是一个函数,另一个函数按冲激信号正交展开。
    在现实中,卷积代表的是将一种信号搬移到另一频率中。比如调制。这是频率卷
    从数学看,卷积是一种反映两个序列或函数之间的运算方法;
    从物理上看,卷积可代表某种系统对某个物理量或输入的调制或污染;
    从信号角度来看,卷积代表了线性系统对输入信号的响应方式,其输出就等于系统冲击函数和信号输入的卷积,只有符合叠加原理的系统,才有系统冲击函数的概念,从而卷积成为系统对输入在数学上运算的必然形式,冲击函数实际上是该问题的格林函数解。点激励源作为强加激励,求解某个线性问题的解,得到的格林函数即是 系统冲击响应。所以在线性系统中,系统冲击响应与卷积存在着必然的联系。但是卷积本身不过是一个数学运算方法而已。
    ++++++++++++++++++++++我是邪恶的分割线++++++++++++++++++++++++++++++

    相关分为自相关和互相关,自相关代表信号本身和延迟一段时间以后的相似程度,互相关代表两个信号的相似程度。卷积是一种运算,相关运算可通过卷积求得。
    ++++++++++++++++++++++

    相关的实际意义是什么?它与卷积的区别有是什么?
    相关就是求两个信号的相似程度,相关可以通过卷积求出来,好像g(t)*g(-t)就是g(t)和自己的相关。因为卷积时其中一个信号要翻转,那么g(t)*g(-t)就相当于求相关
    我从数学的角度分析一下。
    信号处理是将一个信号空间映射到另外一个信号空间,通常就是时域到频域,(还有z域,s域),信号的能量就是函数的范数(信号与函数等同的概念),大家都知道有个Paserval定理就是说映射前后范数不变,在数学中就叫保范映射,实际上信号处理中的变换基本都是保范映射,只要Paserval定理成立就是保范映射(就是能量不变的映射)。
    前面说的意思就是信号处理的任务就是寻找和信号集合对应的一个集合,然后在另外一个集合中分析信号,Fourier变换就是一种,它建立了时域中每个信号函数与频域中的每个频谱函数的一一对应关系,这是元素之间的对应。
    那么运算之间的对应呢,在时域的加法对应频域中的加法,这就是FT线性性的体现;那么时域的乘法对应什么呢,最后得到的那个表达式我们就把它叫卷积,就是对应的频域的卷积。
    简单来说,卷积是一种重叠关系,也就是说,所得到的结果反映了两个卷积函数的重叠部分。所以,用一个已知频段的函数卷积另一个频段很宽的函数,也就是对后者进行了滤波,后者跟前者重叠的频段才能很好地通过这个filter.
    对于时域可以使用乘法器来实现乘法运算,但是频域的乘法就可以通过时域的卷积操作来完成。
    卷积是一种积分运算,用来求两个曲线重叠区域面积。可以看作加权求和,可以用来消除噪声、特征增强。
    卷积我觉得就像一把锉刀,它主要是把一些非光滑的函数或算子光滑化。
    ++++++++++++++++++++++

    卷积是一种线性运算,图像处理中常见的mask运算都是卷积,广泛应用于图像滤波。
    卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT等快速算法,实现有效的计算,节省运算代价。
    卷积本身是一种运算,但是应用到信号上,当某个信号通过一个线性系统时,输出信号就是输入信号与系统冲击响应的卷积。
    卷积是一种线性运算,在信号与线性系统的基础上出现的。
    自相关是指信号在1个时刻的瞬时值与另1个时刻的瞬时值之间的依赖关系,是对1个随机信号的时域描述
    卷积的理解——外行(数学家)
    俺写了那么“精彩”的数学科普没人看,却让不是搞数学的人写的数学占了上风,杯具啊,实在是杯具。是俺的数学水平太高还是你们的数学欣赏水平太低?亦或俺写的太专业?这回来点不专业的。
    唐老师用输液过程解释卷积的确有点意思,比较容易让人接受,老邪的方法更简明易懂,不过老邪的方法可以解释怎么定义卷积,却不能说明为什么要定义卷积。
    如果我没有记错,卷积最早来自于信号系统理论,后来被数学家们发扬光大了,而且其威力已经远远超出了发明者的初衷。
    先来看信号处理中如何出现卷积的。假设B是一个系统,其t时刻的输入为x(t),输出为y(t),系统的响应函数为h(t),按理说,输出与输入的关系应该为Y(t)=h(t)x(t),然而,实际的情况是,系统的输出不仅与系统在t时刻的响应有关,还与它在t时刻之前的响应有关,不过系统有个衰减过程,所以t1(<t)时刻的输入对输出的影响通常可以表示为x(t)h(t-t1),这个过程可能是离散的,也可能是连续的,所以t时刻的输出应该为t时刻之前系统响应函数在各个时刻响应的叠加,这就是卷积,用数学公式表示就是y(s)=∫x(t)h(s-t)dt,离散情况下就是级数了。
    我对信号处理一知半解,胡言乱语一番可别揪我的小辫子。我们知道积分变换可以把卷积运算变成通常的乘积运算,积分变换的物理意义在于通过这种变换可以把时间域上的函数变成频率域上的函数,这个过程是可逆的。上述卷积经过积分变换后变成了Y(u)=X(u)H(u)。其中Y,X,H分别为y,x,h的积分变换。信号处理中人们关心的是Y(u),但X(u)与H(u)往往并不那么容易求出来,而x(t)与h(t)是比较容易得到的(真的?),为了找到Y(u)与y(t)的对应关系从而得到Y(u),人们发明了卷积。
    信号处理专家们,我说的对吗?至于卷积在数学上的作用,说起来就话长了,容后再表。
    卷积与多项式
    信号处理中的一个重要运算是卷积。初学卷积的时候,往往是在连续的情形,
    两个函数f(x),g(x)的卷积,是∫f(u)g(x-u)du
    当然,证明卷积的一些性质并不困难,比如交换,结合等等,但是对于卷积运算的来处,初学者就不甚了了。
    其实,从离散的情形看卷积,或许更加清楚,对于两个序列f[n],g[n],一般可以将其卷积定义为s[x]= ∑f[k]g[x-k]

    卷积的一个典型例子,其实就是初中就学过的多项式相乘的运算,比如(x*x+3*x+2)(2*x+5)一般计算顺序是这样,
      (x*x+3*x+2)(2*x+5)
      = (x*x+3*x+2)*2*x+(x*x+3*x+2)*5
      = 2*x*x*x+3*2*x*x+2*2*x+ 5*x*x+3*5*x+10
      然后合并同类项的系数,
      2 x*x*x
      3*2+1*5 x*x
      2*2+3*5 x
      2*5
      ----------
      2*x*x*x+11*x*x+19*x+10
      实际上,从线性代数可以知道,多项式构成一个向量空间,其基底可选为
      {1,x,x*x,x*x*x,...}
      如此,则任何多项式均可与无穷维空间中的一个坐标向量相对应,
      如,(x*x+3*x+2)对应于
      (1 3 2),
      (2*x+5)对应于
      (2,5)。
    线性空间中没有定义两个向量间的卷积运算,而只有加法,数乘两种运算,而实际上,多项式的乘法,就无法在线性空间中说明。可见线性空间的理论多么局限了。
      但如果按照我们上面对向量卷积的定义来处理坐标向量,(别看懵了,下面有解释)
      (1 3 2)*(2 5)
      则有
      2 3 1
      _ _ 2 5
      --------
        2
      2 3 1
      _ 2 5
      -----
      6+5=11
      2 3 1
      2 5
      -----
      4+15 =19
      _ 2 3 1
      2 5
      -------
      10
       或者说,
      (1 3 2)*(2 5)=(2 11 19 10)
      回到多项式的表示上来,
      (x*x+3*x+2)(2*x+5)= 2*x*x*x+11*x*x+19*x+10
      似乎很神奇,结果跟我们用传统办法得到的是完全一样的。
      换句话,多项式相乘,相当于系数向量的卷积.
      其实,琢磨一下,道理也很简单,
      卷积运算实际上是分别求 x*x*x ,x*x,x,1的系数,也就是说,他把加法和求和杂合在一起做了。(传统的办法是先做乘法,然后在合并同类项的时候才作加法)
      以x*x的系数为例,得到x*x,或者是用x*x乘5,或者是用3x乘2x,也就是
      2 3 1
      _ 2 5
      -----
       6+5=11
      其实,这正是向量的内积(就是数量积啦).如此则,卷积运算,可以看作是一串内积运算.既然是一串内积运算,则我们可以试图用矩阵表示上述过程。
      [ 2 3 1 0 0 0]
      [ 0 2 3 1 0 0]==A
      [ 0 0 2 3 1 0]
      [ 0 0 0 2 3 1]
      [0 0 2 5 0 0]' == x
      b= Ax=[ 2 11 19 10]'
      采用行的观点看Ax,则b的每行都是一个内积。
      A的每一行都是序列[2 3 1]的一个移动位置。
    显然,在这个特定的背景下,我们知道,卷积满足交换,结合等定律,因为,众所周知的,多项式的乘法满足交换律,结合律。在一般情形下,其实也成立。
    在这里,我们发现多项式,除了构成特定的线性空间外,基与基之间还存在某种特殊的联系,正是这种联系,给予多项式空间以特殊的性质.
    在学向量的时候,一般都会举这个例子,甲有三个苹果,5个橘子,乙有5个苹果,三个橘子,则共有几个苹果,橘子。老师反复告诫,橘子就是橘子,苹果就是苹果,可不能混在一起。所以有(3,5)+(5,3)=(8,8).是的,橘子和苹果无论怎么加,都不会出什么问题的,但是,如果考虑橘子乘橘子,或者橘子乘苹果,这问题就不大容易说清了。
    又如复数,如果仅仅定义复数为数对(a,b),仅仅在线性空间的层面看待C2,那就未免太简单了。实际上,只要加上一条(a,b)*(c,d)=(ac-bd,ad+bc)则情况马上改观,复变函数的内容多么丰富多彩,是众所周知的。
    另外,回想信号处理里面的一条基本定理,频率域的乘积,相当于时域或空域信号的卷积。恰好跟这里的情形完全对等。这后面存在什么样的隐态联系,需要继续参详。
    从这里看,高等的卷积运算其实不过是一种初等的运算的抽象而已。中学学过的数学里面,其实还蕴涵着许多高深的内容(比如交换代数)。温故而知新,斯言不谬。
    其实这道理一点也不复杂,人类繁衍了多少万年了,但过去n多年,人们只知道男女媾精,乃能繁衍后代。精子,卵子的发现,生殖机制的研究,也就是最近多少年的事情。
    孔子说,道在人伦日用中,看来我们应该多用审视的眼光看待周围,乃至自身,才能知其然,而知其所以然。

    做你害怕的事情,然后你会发现,不过如此。 最穷不过要饭,不死总会出头! 以前你做了什么,决定现在你可以做什么。你今天所遭遇的苦难,要么是之前的报应,要么以后都会回报给你!
  • 相关阅读:
    KMP
    1. Android Studio阅读源码
    疑难杂症
    队列
    方法和数组
    基本语法
    MySQL数据库创建
    MySQL安装
    Python--爬虫之(斗图啦网站)图片爬取
    Linux网络编程之基础概念
  • 原文地址:https://www.cnblogs.com/hong-jing/p/5158555.html
Copyright © 2011-2022 走看看