Allen

写代码是热爱,写到世界充满爱

  • HomePage
  • Categories
  • Archives
  • Essay
  • Tags
总文章数 379
所有文章 友链 关于我

Allen

写代码是热爱,写到世界充满爱

  • HomePage
  • Categories
  • Archives
  • Essay
  • Tags

8-图像变换-傅里叶变换

阅读数:127次 2022-05-29
字数统计: 4.7k字   |   阅读时长: 17分

文章导航

× 文章目录
  1. 1. 1 傅里叶变换的理解
  2. 2. 2 傅里叶变换中相关概念
    1. 2.1. 2.1 时域和频域
    2. 2.2. 2.2 频谱和相位谱
  3. 3. 3 傅里叶变换
    1. 3.1. 3.1 傅里叶级数
    2. 3.2. 3.2 傅里叶变换
    3. 3.3. 3.3 离散傅里叶变换(DFT)
  4. 4. 4 傅里叶变换在图像中的应用
    1. 4.1. 4.1 图像中的傅里叶变换
    2. 4.2. 4.2 图像傅里叶变换的物理意义
      1. 4.2.0.0.0.1. 图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。如:大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低;而对于地表属性变换剧烈的边缘区域在图像中是一片灰度变化剧烈的区域,对应的频率值较高。傅里叶变换在实际中有非常明显的物理意义,从物理效果看,傅里叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。换句话说,傅里叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数。
      2. 4.2.0.0.0.2. 傅里叶逆变换是将图像的频率分布函数变换为灰度分布函数。
  • 4.3. 4.3 在opencv中实现图像的傅里叶变换
  • 4.4. 4.4 频域滤波
    1. 4.4.0.0.0.1. 图像变换到频域后,就可以进行频域滤波,主要包括:高通滤波,低通滤波,带通滤波和带阻滤波。
  • 4.4.1. 1 高通和低通滤波器
    1. 4.4.1.0.0.1. 我们知道,图像在经过傅里叶变换后,经频谱中心化后,从中间到外面,频率上依次是从低频到高频的。那么我们假设把中间规定一小部分去掉,是不是相对于把低频信号去掉了呢?这也就是相当于进行了高通滤波。
  • 4.4.2. 2 带通和带阻滤波器
  • Author: haoransun
    WeChat: SHR—97

    1 傅里叶变换的理解

    傅里叶变换是由法国的一位数学家Joseph Fourier在18世纪提出来的,他认为:任何连续周期的信号都可以由一组适当的正弦曲线组合而成。

    傅里叶变换是描述信号的需要,它能够反映信号的特征,并可以使用特征值进行量化,比如正弦波可以使用幅值和频率进行描述。下面这幅图是变压器空载电流的输入波形:

    它看起来和正弦波很相近,但很难定量的描述其特征,采用傅里叶变换后,得到下述的频谱图(幅值):

    从该频谱图中可以清楚的看到,主要包括3,5,7,9次谐波,我们就可以对原信号进行描述。

    傅里叶变换是一种信号分析方法,它使我们能够对信号的构成和特点进行深入和定量的研究,把信号通过频谱的方式进行准确的、定量的描述。

    那我们为什么要把信号分解为正弦波的组合,而不是其他波形呢?

    傅里叶变换是信号的分析方法,目的就是要简化问题,而不是将其变复杂,傅里叶选择了正弦波,而没有选择其他波形,是因为正弦波有任何其他波形不具有的特点:正弦波输入至任何线性系统中,不会产生新的频率成分,输出的仍是正弦波,改变的仅仅是幅值和相位。用单位幅值的不同频率的正弦波输入至某线性系统,记录其输出正弦波的幅值和频率的关系,就得到该系统的幅频特性,记录输出正弦波的相位和频率的关系,就得到该系统的相频特性。线性系统是自动控制研究的主要对象,我们只要研究系统对正弦波的输入输出关系,就可以知道该系统对任意输入信号的响应。这是傅里叶变换的最主要的意义。

    2 傅里叶变换中相关概念

    2.1 时域和频域

    傅里叶变换是将难以处理的时域信号转换成易于分析的频域信号,那频域和时域到底是什么呢?

    时域:时域是真实的世界,是唯一存在的域。从我们出生开始,所接触的这个世界就是随着时间在变化的,如花开花落,四季变换,生老病死等。以时间作为参照来分析动态世界的方法我们称其为时域分析。

    比如说一段音乐,就是一个随时间变化的震动,这就是时域的表示,如下图:

    频域:频域它不是真实的,而是一个数学构造。频域是一个遵循特定规则的数学范畴,也被一些学者称为上帝视角。结合上面对时域的理解,如果时域是运动永不停止的,那么频域就是静止的。
    正弦波是频域中唯一存在的波形,这是频域中最重要的规则,即正弦波是对频域的描述,因为频域中的任何波形都可用正弦波合成。

    在看上面那段音乐,我们可以将其表示成频域形式,就是一个永恒的音符。

    而对于信号来说,信号强度随时间的变化规律就是时域特性,信号是由哪些单一频率的信号合成的就是频域特性,傅里叶变换实质就是是频域函数和时域函数的转换。

    那频域与时域之间的关系是什么样的呢?利用正弦函数的叠加成一个矩形,不仅仅是矩形,你能想到的任何波形都是可以如此方法用正余弦波叠加起来的。如下图所示,时域是永远随着时间的变化而变化的,而频域就是装着装着正余弦波的空间。

    从时域来看,我们会看到一个近似为矩形的波,而我们知道这个矩形的波可以拆分为一些正弦波的叠加。而从频域方向来看,我们就看到了每一个正余弦波的幅值,每两个正弦波之间都还有一条直线,那并不是分割线,而是振幅为 0 的正弦波!也就是说,为了组成特殊的曲线,有些正弦波成分是不需要的。随着叠加的递增,所有正弦波中上升的部分逐渐让原本缓慢增加的曲线不断变陡,而所有正弦波中下降的部分又抵消了上升到最高处时继续上升的部分使其变为水平线。一个矩形就这么叠加而成了。

    我们看下面的动图理解,如下所示:

    2.2 频谱和相位谱

    在傅里叶变换中怎么描述变换后的结果呢?有两个概念:频谱和相位谱。

    频谱:将信号分解为若干不同频率的正弦波,那么每一个正弦波的幅度,就叫做频谱,也叫做幅度谱。

    相位谱:频谱只代表了一个正弦函数的幅值,而要准确描述一个正弦函数,我们不仅需要幅值,还需要相位,不同相位决定了波的位置,所以对于频域分析,仅仅有频谱(振幅谱)是不够的,我们还需要一个相位谱

    如上图所示:投影点我们用粉色点来表示,红色的点表示离正弦函数频率轴最近的一个峰值,而相位差就是粉色点和红色点水平距离。将相位差画到一个坐标轴上就形成了相位谱

    3 傅里叶变换

    根据原信号的属性,我们可以将傅里叶变换分为以下几种:

    在实际应用较多的是傅里叶变换、傅里叶级数离散傅里叶变换,我们对其进行分别介绍。

    任意波形都可以通过正弦波的叠加来表示,正弦波可以通过欧拉公式写成指数的形式,欧拉公式如下:
    $$
    e^{it}=\cos(t)+i\sin(t)
    $$
    所以以下内容都是以指数形式进行展示。

    3.1 傅里叶级数

    任意的周期连续信号都可以使用正弦波叠加而成,这叫做傅里叶级数,写成指数形式如下所示:
    $$
    f(t) = \sum_{-\infty}^{\infty}c_ne^{i\frac{2\pi nt}t }dt
    $$
    其中$$c_n$$表示傅里叶级数:
    $$
    c_n=\frac{1}{T}\int_{-\frac{T}{2}}^{\frac{T}{2}}f(t)e^{-i\frac{2\pi nt}t }dt
    $$
    公式中的T表示时域信号的周期。从上式中可以看出周期信号的频谱是离散的非周期信号。

    3.2 傅里叶变换

    对于非周期的连续信号,也可以使用正弦信号来逼近,这时我们将非周期信号看做周期无限大的周期信号,则有:
    $$
    F(\omega) = \int_{-\infty}^{\infty}f(t)e^{-i\omega t}dt
    $$
    其中,$$\omega$$表示频率,t表示时间。我们叫做傅里叶变换。从中可以看出非周期信号的频谱是连续的非周期信号。

    逆变换为:
    $$
    f(t) = \frac{1}{2\pi}\int_{-\infty}^{\infty}F(\omega)e^{i\omega t}dw
    $$
    利用上述公式就可将频域信号转换为时域信号。

    3.3 离散傅里叶变换(DFT)

    由于数字信号处理是希望在计算机上实现各种运算和变换,其所涉及的变量和运算都是离散的,因此对于数字信号处理,应该找到在时域和频域都是离散的傅里叶变换,即离散傅里叶变换。

    对于非周期的离散信号进行傅里叶变换就是离散傅里叶变换,其计算方法如下所示:
    $$
    F(k)= \sum_{n=0}^{N-1}f(n)e^{-i\frac{2\pi kn}{N}}
    $$
    其中N表示傅里叶变换的点数,k表示傅里叶变换的频谱。

    逆变换为:
    $$
    f(n) = \frac{1}{N}\sum_{k=0}^{N-1}F(k)e^{ikn\frac{2\pi}{N}}
    $$

    4 傅里叶变换在图像中的应用

    4.1 图像中的傅里叶变换

    图像是二维的离散信号,所以我们在对图像进行二维傅里叶变换。对于M*N的一幅图像的离散二维傅里叶变换,公式如下:
    $$
    F(u,v) = \sum_{x=0}^{M-1}\sum_{y=0}^{N-1}f(x,y)e^{-i2\pi(\frac{ux}M+\frac{vy}N)}
    $$
    其中u和v确定频率,f(x,y)是灰度值,该式的意义是两个求和号对图像进行遍历,f(x,y)取出原像素的数值,当固定x时,横轴不动,对y进行遍历时,$$\frac{vy}{N}$$表示变换前像素的位置比例与变换后的位置相乘,映射到新的位置,且能够反映像素沿y方向距离的差异,越靠后的像素(y越大)$$\frac{vy}{N}$$值越大,即$$\frac{vy}{N}$$能够反映出不同位置(纵轴)像素之间的差异;前一项含义为保留像素相对位置(横轴)的信息(遍历y时为常数),2π为修正参数。

    逆变换由下式给出:
    $$
    f(x,y) = \sum_{x=0}^{M-1}\sum_{y=0}^{N-1}F(u,v)e^{i2\pi(\frac{ux}M+\frac{vy}N)}
    $$

    4.2 图像傅里叶变换的物理意义

    图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。如:大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低;而对于地表属性变换剧烈的边缘区域在图像中是一片灰度变化剧烈的区域,对应的频率值较高。傅里叶变换在实际中有非常明显的物理意义,从物理效果看,傅里叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。换句话说,傅里叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数。
    傅里叶逆变换是将图像的频率分布函数变换为灰度分布函数。

    我们在做DFT时是将图像的空域和频域沿x和y方向进行无限周期拓展的,如下图所示:

    如果只取其中一个周期,会得到:

    为了便于频域的滤波和频谱的分析,常在变换后进行频谱的中心化,即对掉频谱的四个象限,如下图所示:

    经中心化后的频谱为:

    在经过频谱居中后的频谱中,中间最亮的点是最低频率,属于直流分量,越往外,频率越高,如下所示:

    4.3 在opencv中实现图像的傅里叶变换

    在OPenCV中实现图像的傅里叶变换,使用的是:

    正变换:

    1
    dft = cv2.dft(src, dst=None)

    参数:

    • src: 输入图像,要转换成np.float32格式
      • dst:参数是可选的, 决定输出数组的大小。默认输出数组的大小和输入图像大小一样。如果输出结果比输入图像大,输入图像就需要在进行变换前补 0。如果输出结果比输入图像小的话,输入图像就会被切割。

    返回:

    • dft: 傅里叶变换后的结果,有两个通道,第一个通道是结果的实数部分,第二个通道是结果的虚数部分。我们需要在此基础上计算傅里叶变换的频谱和相位。

    逆变换:

    1
    img = cv.idft(dft)

    参数:

    • dft: 图像的频域表示

    返回:

    • img: 图像的空域表示

    实现:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     import numpy as np 
    import cv2 as cv
    from matplotlib import pyplot as plt
    # 1 读取图像
    img = cv.imread('./image/deer.jpeg',0)
    # 2 傅里叶变换
    # 2.1 正变换
    dft = cv.dft(np.float32(img),flags = cv.DFT_COMPLEX_OUTPUT)
    # 2.2 频谱中心化
    dft_shift = np.fft.fftshift(dft)
    # 2.3 计算频谱和相位谱
    mag, angle = cv.cartToPolar(dft_shift[:,:,0], dft_shift[:,:,1], angleInDegrees=True)
    mag=20*np.log(mag)
    # 3 傅里叶逆变换
    # 3.1 反变换
    img_back = cv.idft(dft)
    # 3.2 计算灰度值
    img_back = cv.magnitude(img_back[:,:,0],img_back[:,:,1])

    # 4 图像显示
    plt.figure(figsize=(10,8))
    plt.subplot(221),plt.imshow(img, cmap = 'gray')
    plt.title('输入图像'), plt.xticks([]), plt.yticks([])
    plt.subplot(222),plt.imshow(mag, cmap = 'gray')
    plt.title('频谱'), plt.xticks([]), plt.yticks([])
    plt.subplot(223),plt.imshow(angle, cmap = 'gray')
    plt.title('相位谱'), plt.xticks([]), plt.yticks([])
    plt.subplot(224),plt.imshow(img_back, cmap = 'gray')
    plt.title('逆变换结果'), plt.xticks([]), plt.yticks([])
    plt.show()

    结果展示:

    4.4 频域滤波

    图像变换到频域后,就可以进行频域滤波,主要包括:高通滤波,低通滤波,带通滤波和带阻滤波。

    1 高通和低通滤波器

    我们知道,图像在经过傅里叶变换后,经频谱中心化后,从中间到外面,频率上依次是从低频到高频的。那么我们假设把中间规定一小部分去掉,是不是相对于把低频信号去掉了呢?这也就是相当于进行了高通滤波。

    这个滤波模板如下图所示:

    其中黑色部分为0,白色部分为1,我们将这个模板与图像的傅里叶变换相与就实现了高通滤波。如下所示:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     import numpy as np 
    import cv2 as cv
    from matplotlib import pyplot as plt
    # 1 读取图像
    img = cv.imread('./image/deer.jpeg',0)
    # 2 设计高通滤波器(傅里叶变换结果中有两个通道,所以高通滤波中也有两个通道)
    rows,cols = img.shape
    mask = np.ones((rows,cols,2),np.uint8)
    mask[int(rows/2)-30:int(rows/2)+30,int(cols/2)-30:int(cols/2)+30,:] = 0

    # 3 傅里叶变换
    # 3.1 正变换
    dft = cv.dft(np.float32(img),flags = cv.DFT_COMPLEX_OUTPUT)
    # 3.2 频谱中心化
    dft_shift = np.fft.fftshift(dft)
    # 3.3 滤波
    dft_shift = dft_shift * mask
    # 3.4 频谱去中心化
    dft_shift = np.fft.fftshift(dft_shift)

    # 3 傅里叶逆变换
    # 3.1 反变换
    img_back = cv.idft(dft_shift)
    # 3.2 计算灰度值
    img_back = cv.magnitude(img_back[:,:,0],img_back[:,:,1])
    plt.subplot(121),plt.imshow(img, cmap = 'gray')
    plt.title('输入图像'), plt.xticks([]), plt.yticks([])
    plt.subplot(122),plt.imshow(img_back, cmap = 'gray')
    plt.title('高通滤波结果'), plt.xticks([]), plt.yticks([])
    plt.show()

    从结果中可以看出,高通滤波器有利于提取图像的轮廓,图像的轮廓或者边缘或者一些噪声处,灰度变化剧烈,那么在把它们经过傅里叶变换后。就会变成高频信号(高频是捕捉细节的),所以在把图像低频信号滤掉以后剩下的自然就是轮廓了。

    现在我们看下低通滤波的效果,构造一个低通滤波器很简单,只要把上述模板中的1改为0,0改为1即可。把设计高通滤波器部分的代码改成如下所示:

    1
    2
    3
    rows,cols = img.shape
    mask = np.zeros((rows,cols,2),np.uint8)
    mask[int(rows/2)-30:int(rows/2)+30,int(cols/2)-30:int(cols/2)+30,:] = 1

    低通滤波的效果如下图所示:

    从结果中可看到低通滤波后图像轮廓变模糊了,图像的大部分信息基本上都保持了。图像的主要信息都集中在低频上,所以低通滤波器的效果是这样也是能够理解的。上述的高通、低通滤波器的构造有0,1构成的理想滤波器,也是最简单的滤波器,另一些其它的滤波器。比方说高斯滤波器,butterworth滤波器等等,如下图所示:

    2 带通和带阻滤波器

    我们把高通和低通的一部分结合在模板中就形成了带通滤波器,它容许一定频率范围信号通过, 但减弱(或减少)频率低于於下限截止频率和高于上限截止频率的信号的通过,如下图所示:

    还是以理想的带通滤波器演示如下,将构建的滤波的代码修改如下:

    1
    2
    3
    4
    5
    6
    rows,cols = img.shape
    mask1 = np.ones((rows,cols,2),np.uint8)
    mask1[int(rows/2)-8:int(rows/2)+8,int(cols/2)-8:int(cols/2)+8] = 0
    mask2 = np.zeros((rows,cols,2),np.uint8)
    mask2[int(rows/2)-80:int(rows/2)+80,int(cols/2)-80:int(cols/2)+80] = 1
    mask = mask1*mask2

    结果如下所示:

    这就是带通的效果,它既能保留一部分低频,也能保留一部分高频。至于保留多少,根据需求选择就可以了。

    带阻滤波器减弱(或减少)一定频率范围信号, 但容许频率低于於下限截止频率和高于上限截止频率的信号的通过,如下示:

    在代码中将设计滤波器部分改为如下所示:

    1
    2
    3
    4
    5
    6
    mask = np.ones((rows,cols,2),np.uint8)
    mask[int(rows/2)+80:int(rows/2)+150,int(cols/2)-150:int(cols/2)+150] = 0
    mask[int(rows/2)-150:int(rows/2)-80,int(cols/2)-150:int(cols/2)+150] = 0
    mask[int(rows/2)-150:int(rows/2)+150,int(cols/2)+80:int(cols/2)+150] = 0
    mask[int(rows/2)-150:int(rows/2)+150,int(cols/2)-150:int(cols/2)-80] = 0
    plt.imshow(mask[:,:,1],cmap=plt.cm.gray)

    结果如下所示:

    从结果中可看到带阻滤波器保持了原图像的大部分信息,图像的主要信息都集中在低频上,而边缘轮廓信息都在高频位置。带阻滤波器滤除了中频信息,保留了低频和高频信息,所以对图像的信息破坏是比较小的。:


    总结:

    1. 傅里叶变换的理解

      任何连续周期的信号都可以由一组适当的正弦曲线组合而成

    2. 相关概念:

      时域:以时间作为参照来分析动态世界的方法

      频域:频域它不是真实的,而是一个数学构造

      幅度谱:将信号分解为若干不同频率的正弦波,那么每一个正弦波的幅度,就叫做频谱,也叫做幅度谱

      相位谱:每一个正弦波的相位,就叫做相位谱

    3. 傅里叶变换分类

      傅里叶级数:任意的周期连续信号的傅里叶变换

      傅里叶变换:非周期连续信号

      离散傅里叶变换:非周期离散信号

    4. 图像中的应用

      • 二维傅里叶变换

      • 意义:将图像的灰度分布函数变换为图像的频率分布函数。

      • API:

        cv.dft()

        cv.idft()

      • 滤波:高通,低通,带通,带阻

    • 人工智能
    • OpenCV

    扫一扫,分享到微信

    微信分享二维码
    9-角点特征
    7-模板匹配与霍夫变换
    1. 1. 1 傅里叶变换的理解
    2. 2. 2 傅里叶变换中相关概念
      1. 2.1. 2.1 时域和频域
      2. 2.2. 2.2 频谱和相位谱
    3. 3. 3 傅里叶变换
      1. 3.1. 3.1 傅里叶级数
      2. 3.2. 3.2 傅里叶变换
      3. 3.3. 3.3 离散傅里叶变换(DFT)
    4. 4. 4 傅里叶变换在图像中的应用
      1. 4.1. 4.1 图像中的傅里叶变换
      2. 4.2. 4.2 图像傅里叶变换的物理意义
        1. 4.2.0.0.0.1. 图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。如:大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低;而对于地表属性变换剧烈的边缘区域在图像中是一片灰度变化剧烈的区域,对应的频率值较高。傅里叶变换在实际中有非常明显的物理意义,从物理效果看,傅里叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。换句话说,傅里叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数。
        2. 4.2.0.0.0.2. 傅里叶逆变换是将图像的频率分布函数变换为灰度分布函数。
  • 4.3. 4.3 在opencv中实现图像的傅里叶变换
  • 4.4. 4.4 频域滤波
    1. 4.4.0.0.0.1. 图像变换到频域后,就可以进行频域滤波,主要包括:高通滤波,低通滤波,带通滤波和带阻滤波。
  • 4.4.1. 1 高通和低通滤波器
    1. 4.4.1.0.0.1. 我们知道,图像在经过傅里叶变换后,经频谱中心化后,从中间到外面,频率上依次是从低频到高频的。那么我们假设把中间规定一小部分去掉,是不是相对于把低频信号去掉了呢?这也就是相当于进行了高通滤波。
  • 4.4.2. 2 带通和带阻滤波器
  • Related Issues not found

    Please contact @JavaSsun to initialize the comment

    © 2018-2024 Allen
    Hexo Theme Yilia by Litten
    本站总访问量71927次 | 本站访客数64634人
    • 所有文章
    • 友链
    • 关于我

    tag:

    • Elasticsearch
    • 面试
    • MQ
    • Redis
    • Nginx
    • Docker
    • Git
    • Dubbo
    • 论文
    • MySql
    • Tools
    • 日志
    • Linux
    • 系统架构
    • Java
    • 源码解析
    • Hexo-yilia
    • Jvm
    • MyBatis
    • SpringBoot
    • Swagger2
    • 算法
    • 分布式
    • Photo
    • HTTP
    • Hystrix
    • SSL
    • ELK
    • IDEA
    • Jwt
    • 定时任务
    • BigData
    • Maven
    • Quartz
    • 人工智能
    • 地图坐标转换
    • 网络编程
    • Python
    • SpringCloud
    • 搬砖结晶
    • OpenCV
    • 推荐系统
    • 目标检测
    • SkLearn
    • 图神经网络
    • PyTorch
    • TensorFlow
    • 数据挖掘
    • 研究生课题-AD检测
    • 研究生成果

      缺失模块。
      1、请确保node版本大于6.2
      2、在博客根目录(注意不是yilia根目录)执行以下命令:
      npm i hexo-generator-json-content --save

      3、在根目录_config.yml里添加配置:

        jsonContent:
          meta: false
          pages: false
          posts:
            title: true
            date: true
            path: true
            text: false
            raw: false
            content: false
            slug: false
            updated: false
            comments: false
            link: false
            permalink: false
            excerpt: false
            categories: false
            tags: true
      

    • 研究生总结

      2024-05-09

      #论文#人工智能#搬砖结晶#图神经网络#研究生课题-AD检测#研究生成果

    • 12-ROI文件分析

      2023-11-22

      #Tools#人工智能#研究生课题-AD检测

    • 11-DTI预处理

      2023-11-16

      #Tools#人工智能#研究生课题-AD检测

    • 10-GRETNA处理fMRI

      2023-11-05

      #Tools#人工智能#研究生课题-AD检测

    • 9-(图)利用Matlab的spm12工具处理fMRI为ROI

      2023-10-28

      #Tools#人工智能#研究生课题-AD检测

    • 9-(文)利用Matlab的spm12工具处理fMRI为ROI

      2023-10-26

      #Tools#人工智能#研究生课题-AD检测

    • 8-7-FSL软件使用

      2023-10-20

      #Tools#人工智能#研究生课题-AD检测

    • 8-6-FreeSurfer软件使用

      2023-10-16

      #Tools#人工智能#研究生课题-AD检测

    • 8-5-SPM软件使用

      2023-10-10

      #Tools#人工智能#研究生课题-AD检测

    • 8-4-MRI预处理

      2023-09-16

      #Tools#人工智能#研究生课题-AD检测

    • 8-3-UNet提取海马体

      2023-09-10

      #人工智能#研究生课题-AD检测

    • 8-2-ADNI论文数据预处理

      2023-09-02

      #论文#Tools#人工智能#研究生课题-AD检测

    • 8-1-数据预处理工具

      2023-08-05

      #Tools#人工智能#研究生课题-AD检测

    • 7-2-GNN For AD

      2023-07-25

      #论文#人工智能#图神经网络#研究生课题-AD检测

    • 7-1-GNN For Medical Diagnosis

      2023-06-28

      #论文#人工智能#图神经网络#研究生课题-AD检测

    • 6-2-SCI一区论文精读

      2023-05-25

      #论文#人工智能#研究生课题-AD检测

    • 6-1-MRI成像及ADNI简介

      2023-05-10

      #人工智能#研究生课题-AD检测

    • 5-ADNI-实验数据筛选与下载

      2023-04-25

      #人工智能#研究生课题-AD检测

    • 4-AD文献的阅读记录

      2023-04-20

      #论文#人工智能#研究生课题-AD检测

    • 3-指标特征选择

      2023-04-05

      #人工智能#研究生课题-AD检测

    • 2-AD有关课题

      2023-03-25

      #人工智能#研究生课题-AD检测

    • 1-阿尔茨海默病

      2023-03-20

      #人工智能#研究生课题-AD检测

    • 7-SHAP

      2023-03-15

      #人工智能#数据挖掘

    • 6-模型的融合技术大总结与结果部署

      2023-02-25

      #人工智能#数据挖掘

    • 5-模型建立与调参

      2023-02-20

      #人工智能#数据挖掘

    • 4-特征工程

      2023-02-12

      #人工智能#数据挖掘

    • 3-数据清洗和转换技巧

      2023-02-09

      #人工智能#数据挖掘

    • 2-数据的探索性-EDA分析

      2023-02-06

      #人工智能#数据挖掘

    • 1-赛题理解

      2023-02-04

      #人工智能#数据挖掘

    • 0-零基础入门数据挖掘学习路径

      2023-02-03

      #人工智能#数据挖掘

    • 重温深度学习优化算法

      2023-01-28

      #人工智能

    • 重温归一化(MinMaxScaler)和标准化(StandardScaler)

      2023-01-20

      #人工智能

    • 重温Batch Normalization

      2023-01-15

      #人工智能

    • 交叉熵损失函数和平方损失的区别

      2023-01-12

      #人工智能

    • loss不下降的解决方法

      2023-01-10

      #人工智能

    • 重温Seq2Seq和Attention机制

      2023-01-05

      #人工智能

    • 重温LSTM和GRU

      2022-12-28

      #人工智能

    • 重温RNN

      2022-12-25

      #人工智能

    • pytorch_geometric离线安装

      2022-12-19

      #人工智能#图神经网络#PyTorch

    • pytorch_geometric安装

      2022-12-18

      #人工智能#图神经网络#PyTorch

    • 生成式对抗网络GAN的工作原理

      2022-12-13

      #人工智能

    • Ubuntu查看cuda-cudnn等版本命令

      2022-12-10

      #Tools#人工智能

    • CUDA和CuDNN安装

      2022-12-08

      #Tools#人工智能

    • GPU之nvidia-smi命令详解

      2022-12-05

      #Tools#人工智能

    • 1-TensorFlow简介及安装

      2022-12-01

      #人工智能#TensorFlow

    • 入门图神经网络

      2022-11-25

      #人工智能#图神经网络

    • 10-模型的保存加载-模型微调-GPU使用及Pytorch常见报错

      2022-11-06

      #人工智能#PyTorch

    • 9-正则化与标准化大总结

      2022-10-28

      #人工智能#PyTorch

    • 8-Tensorboard可视化与Hook机制

      2022-10-25

      #人工智能#PyTorch

    • 7-优化器和学习率调整策略

      2022-10-23

      #人工智能#PyTorch

    • 6-模型的权值初始化与损失函数介绍

      2022-10-20

      #人工智能#PyTorch

    • 5-nn各网络层介绍

      2022-10-17

      #人工智能#PyTorch

    • Pytorch提取神经网络层结构-层参数及自定义初始化

      2022-10-14

      #人工智能#PyTorch

    • 4-模型创建Module-模型容器Containers及AlexNet网络搭建

      2022-10-12

      #人工智能#PyTorch

    • 3-Pytorch数据读取机制(DataLoader)与图像预处理模块(transforms)

      2022-10-09

      #人工智能#PyTorch

    • 2-Pytorch的动态图-自动求导及逻辑回归

      2022-10-02

      #人工智能#PyTorch

    • 1-Pytorch的数据载体张量与线性回归

      2022-09-28

      #人工智能#PyTorch

    • Pytorch与词向量

      2022-09-25

      #人工智能#PyTorch

    • Pytorch基础理论和简单的神经网络实现

      2022-09-23

      #人工智能#PyTorch

    • Windows下的Pytorch环境搭建

      2022-09-20

      #人工智能#PyTorch

    • 图卷积网络-GCN

      2022-09-15

      #人工智能#图神经网络

    • GCN使用的数据集Cora等

      2022-09-10

      #人工智能#图神经网络

    • 图网络属性介绍

      2022-09-08

      #人工智能#图神经网络

    • 图神经网络理论基础

      2022-09-05

      #人工智能#图神经网络

    • 5-AI上推荐之AutoRec与Deep Crossing模型(改变神经网络的复杂程度)

      2022-08-28

      #人工智能#推荐系统

    • 4-AI上推荐之FM和FFM(九九归一)

      2022-08-17

      #人工智能#推荐系统

    • 梯度提升树GBDT的理论学习与细节补充

      2022-08-05

      #人工智能#推荐系统

    • 梯度下降算法的细节补充(凸函数, 导数, 偏导数,梯度, 方向导数以及负梯度下降最快背后的泰勒身影)

      2022-07-28

      #人工智能#推荐系统

    • 逻辑回归、优化算法和正则化的幕后细节补充

      2022-07-24

      #人工智能#推荐系统

    • 3-AI上推荐之逻辑回归模型与GBDT+LR(特征工程模型化的开端)

      2022-07-20

      #人工智能#推荐系统

    • 奇异值分解(SVD)的原理详解及推导

      2022-07-13

      #人工智能#推荐系统

    • 2-AI上推荐之隐语义模型(LFM)和矩阵分解(MF)

      2022-07-10

      #人工智能#推荐系统

    • 1-AI上推荐之协同过滤

      2022-07-02

      #人工智能#推荐系统

    • R-CNN and Fast R-CNN and Faster R-CNN and SPP

      2022-06-15

      #人工智能#目标检测

    • 10-Harris和Shi-Tomas算法

      2022-06-06

      #人工智能#OpenCV

    • 9-角点特征

      2022-06-03

      #人工智能#OpenCV

    • 8-图像变换-傅里叶变换

      2022-05-29

      #人工智能#OpenCV

    • 7-模板匹配与霍夫变换

      2022-05-15

      #人工智能#OpenCV

    • 6-边缘检测

      2022-05-08

      #人工智能#OpenCV

    • 5-直方图

      2022-04-28

      #人工智能#OpenCV

    • 4-图像平滑

      2022-04-26

      #人工智能#OpenCV

    • 3-形态学操作

      2022-04-22

      #人工智能#OpenCV

    • 2-几何变换

      2022-04-20

      #人工智能#OpenCV

    • 1-图像的基础操作

      2022-04-18

      #人工智能#OpenCV

    • 0-OpenCV简介

      2022-04-15

      #人工智能#OpenCV

    • Ubuntu18.04下安装OpenCV3.4

      2022-04-01

      #人工智能#OpenCV

    • 后 R-CNN时代, Faster R-CNN、SSD、YOLO 各类变体统治下的目标检测综述:Faster R-CNN系列胜了吗?

      2022-03-28

      #人工智能#目标检测

    • SKLearn学习总结

      2022-03-20

      #人工智能#SkLearn

    • 详细了解PyCharm支持的4种Python Interpreter和配置方法

      2022-03-02

      #Tools

    • Pycharm远程连接

      2022-02-26

      #Tools

    • JupyterLab学习总结

      2022-02-19

      #Tools#人工智能

    • Anaconda学习总结

      2022-02-13

      #Tools#人工智能

    • Ubuntu下安装lrzsz工具

      2022-02-08

      #Tools

    • 13-RNN

      2022-02-05

      #人工智能

    • 12-加速深度学习的算法和硬件-讲座

      2022-01-10

      #人工智能

    • 11-深度学习硬件算力基础-GPU与TPU与英特尔神经棒

      2021-12-26

      #人工智能

    • 10-经典卷积神经网络架构案例分析

      2021-12-16

      #人工智能

    • 9-迁移学习与fine-tuning

      2021-12-11

      #人工智能

    • 8-CNNS in Practice-卷积神经网络工程实践技巧

      2021-11-28

      #人工智能

    • 7-训练神经网络-下

      2021-11-09

      #人工智能

    • 6-训练神经网络-上

      2021-11-05

      #人工智能

    • 5-可视化并理解卷积神经网络

      2021-10-25

      #人工智能

    • 4-Convolutional-Neural-Networks

      2021-10-18

      #人工智能

    • 3-神经网络与反向传播

      2021-10-10

      #人工智能

    • 2-损失函数和梯度下降

      2021-09-25

      #人工智能

    • 1-KNN&线性分类器

      2021-09-20

      #人工智能

    • 0-机器学习基础

      2021-09-15

      #人工智能

    • 入门人工智能算法工程师-先来碗毒鸡汤

      2021-07-30

      #人工智能

    • 3-如何高效阅读机器学习顶会论文

      2021-07-15

      #论文

    • 2-论文ABC类与一二区的区别

      2021-06-10

      #论文

    • 1-学术小白

      2021-06-06

      #论文

    • 领域驱动设计在互联网业务开发中的实践

      2020-09-13

      #系统架构

    • 领域驱动设计

      2020-07-12

      #系统架构

    • DDD模式-从天书到实践

      2020-06-28

      #系统架构

    • DDD-马什么梅

      2020-06-14

      #系统架构

    • FaaS-又一个为未来

      2020-05-17

      #系统架构

    • 分布式ID的花拳绣腿

      2020-04-19

      #面试#系统架构#分布式

    • 4-Dockerfile上

      2020-04-08

      #Docker

    • 3-Docker存储卷

      2020-04-07

      #Docker

    • 2-Docker容器网络

      2020-04-06

      #Docker

    • 1-安装_使用Docker

      2020-04-05

      #Docker

    • 45-自增ID用完怎么办

      2020-03-11

      #MySql

    • 44-一些常见问题

      2020-03-09

      #MySql

    • 43-要不要使用分区表

      2020-03-08

      #MySql

    • 42-grant之后要跟着flush privileges吗

      2020-03-07

      #MySql

    • 41-如何最快的复制一张表

      2020-03-06

      #MySql

    • 40-insert语句的锁为什么这么多

      2020-03-04

      #MySql

    • 39-自增主键为什么不是连续的

      2020-03-03

      #MySql

    • 38-都说InnoDB好_那还要不要使用Memory引擎

      2020-03-02

      #MySql

    • 37-什么时候会使用内部临时表

      2020-03-01

      #MySql

    • SpringBoot_RabbitMQ配置参数详解

      2020-02-26

      #MQ

    • RabbitMQ安装

      2020-02-26

      #MQ

    • ELK日志平台-中

      2020-02-11

      #日志#ELK

    • ELK日志平台-上

      2020-02-10

      #日志#ELK

    • Java8新特性

      2020-02-08

      #Java

    • 1-Hystrix知多少

      2020-01-01

      #面试#Hystrix

    • 25-Nginx变量原理-应用

      2019-12-13

      #Nginx

    • 24-详解HTTP过滤模块

      2019-12-12

      #Nginx

    • 23-详解HTTP请求的11个阶段

      2019-12-11

      #Nginx

    • 22-如何找到处理请求的Server指令块

      2019-12-10

      #Nginx

    • 21-Nginx中的正则表达式

      2019-12-09

      #Nginx

    • 20-处理HTTP请求头部流程

      2019-12-09

      #Nginx

    • 19-Nginx中Listen指令用法

      2019-12-08

      #Nginx

    • 18-Nginx冲突的配置指令以谁为准

      2019-12-08

      #Nginx

    • 17-Nginx动态模块

      2019-12-07

      #Nginx

    • 16-Nginx容器

      2019-12-06

      #Nginx

    • 15-Worker集成协同工作的关键

      2019-12-06

      #Nginx

    • 14-Nginx连接池处理网络请求-内存池对性能的影响

      2019-12-05

      #Nginx

    • 13-Nginx模块

      2019-12-04

      #Nginx

    • 12-网络收发与Nginx事件模型

      2019-12-03

      #Nginx

    • 11-Nginx架构_相关流程

      2019-12-02

      #Nginx

    • LinkedHashMap实现原理_探险

      2019-11-28

      #Java#源码解析

    • HashTable实现原理_探险

      2019-11-22

      #Java#源码解析

    • HashMap实现原理_探险

      2019-11-20

      #Java#源码解析

    • LinkList实现原理_探险

      2019-11-17

      #Java#源码解析

    • ArrayList实现原理_探险

      2019-11-16

      #Java#源码解析

    • 10-OpenResty用Lua语言实现简单服务

      2019-11-12

      #Nginx

    • 9-SSL-Nginx

      2019-11-11

      #Nginx#SSL

    • 8-Nginx配置文件简易解析

      2019-11-10

      #Nginx

    • 7-Nginx安装详解

      2019-11-09

      #Nginx

    • 6-GoAccess实现可视化并实时监控access日志

      2019-11-08

      #Nginx#Tools#日志

    • 5-Nginx搭建具备缓存功能的反向代理

      2019-11-05

      #Nginx

    • 4-Nginx搭建静态资源Web服务器

      2019-11-01

      #Nginx

    • SpringBoot中jar为什么可以直接运行

      2019-10-30

      #面试#SpringBoot

    • SpringBoot全局异常处理

      2019-10-29

      #面试#SpringBoot

    • SpringBoot事件和监听器

      2019-10-29

      #面试#SpringBoot

    • SpringBoot启动原理

      2019-10-29

      #面试#SpringBoot

    • 36-为什么临时表可以重名

      2019-10-28

      #MySql

    • 35-join语句如何优化

      2019-10-27

      #MySql

    • 34-到底可不可以使用join

      2019-10-26

      #MySql

    • 33-我查这么多数据_会不会把数据库内存打爆

      2019-10-24

      #MySql

    • 32-为什么有kill不掉的语句

      2019-10-23

      #MySql

    • 31-误删数据后除了跑路_还能怎么办

      2019-10-22

      #MySql

    • 3-Nginx命令行演示-重载-热部署-切割

      2019-10-20

      #Nginx

    • 2-Nginx配置语法

      2019-10-17

      #Nginx

    • 1-Nginx的前世今生

      2019-10-15

      #Nginx

    • 0-Nginx访问日志配置及信息详解

      2019-10-11

      #Nginx

    • 分布式事务

      2019-09-19

      #面试#系统架构#分布式

    • 分布式锁

      2019-09-18

      #面试#系统架构#分布式

    • 分布式锁与事务

      2019-09-16

      #面试#系统架构#分布式

    • 数据结构与算法第四阶段学习图

      2019-09-16

      #算法

    • 数据结构与算法第三阶段学习图

      2019-09-16

      #算法

    • 数据结构与算法第二阶段学习图

      2019-09-16

      #算法

    • 数据结构与算法第一阶段学习图

      2019-09-16

      #算法

    • 2018-2019工作总结

      2019-09-15

      #搬砖结晶

    • 开发常见问题

      2019-09-14

      #Java

    • 52-算法实战(五)_如何用学过的数据结构和算法实现一个短网址系统

      2019-09-14

      #算法

    • 30-用动态的观点看加锁

      2019-09-13

      #MySql

    • 29-如何判断一个数据库是不是出问题了

      2019-09-12

      #MySql

    • 28-读写分离有哪些坑

      2019-09-11

      #MySql

    • 51-算法实战(四)_剖析微服务接口鉴权限流背后的数据结构和算法

      2019-09-09

      #算法

    • 50-算法实战(三)_剖析高性能队列Disruptor背后的数据结构和算法

      2019-09-06

      #算法

    • 49-算法实战(二)_剖析搜索引擎背后的经典数据结构和算法

      2019-09-02

      #算法

    • 27-主库出问题了_从库怎么办

      2019-08-29

      #MySql

    • 26-备库为什么会延迟好几个小时

      2019-08-28

      #MySql

    • 25-MySQL是怎么保证高可用的

      2019-08-27

      #MySql

    • 24-MySQL是怎么保证主备一致的

      2019-08-26

      #MySql

    • 48-算法实战(一)_剖析Redis常用数据类型对应的数据结构

      2019-08-25

      #算法

    • 47-并行算法_如何利用并行处理提高算法的执行效率

      2019-08-20

      #算法

    • 46-索引_如何在海量数据中快速查找某个数据

      2019-08-16

      #算法

    • 45-搜索_如何用A*搜索算法实现游戏中的寻路功能

      2019-08-13

      #算法

    • 44-B+树_MySQL数据库索引是如何实现的

      2019-08-10

      #算法

    • 43-向量空间_如何实现一个简单的音乐推荐系统

      2019-08-08

      #算法

    • 42-概率统计_如何利用朴素贝叶斯算法过滤垃圾短信

      2019-08-05

      #算法

    • 41-位图_如何实现网页爬虫中的URL去重功能

      2019-08-02

      #算法

    • 40-最短路径_地图软件是如何计算出最优出行路径的

      2019-07-28

      #算法

    • 39-拓扑排序_如何确定代码源文件的编译依赖关系

      2019-07-24

      #算法

    • 38-动态规划实战_如何实现搜索引擎中的拼写纠错功能

      2019-07-20

      #算法

    • 23-MySQL是如何保证数据不丢的

      2019-07-19

      #MySql

    • 22-MySQL有哪些“饮鸩止渴”提高性能的方法

      2019-07-18

      #MySql

    • 21-为什么我只改一行的语句_锁还这么多

      2019-07-17

      #MySql

    • 20-幻读是什么_幻读有什么问题

      2019-07-16

      #MySql

    • 19-只查一行的语句为何执行这么慢

      2019-07-15

      #MySql

    • 37-动态规划理论_一篇文章带你彻底搞懂最优子结结构_无后效性_重复子问题

      2019-07-13

      #算法

    • 36-初识动态规划_如何巧妙解解决“双十一”购物时的凑单问题

      2019-07-09

      #算法

    • 35-回溯算法_从电影《蝴蝶效应》中学习回溯算法的核心思想

      2019-07-06

      #算法

    • 34-分治算法_谈一谈大规模计算框架MapReduce中的分治思想

      2019-07-04

      #算法

    • 33-贪心算法_如何用贪心算法实现Huffman压缩编码

      2019-07-01

      #算法

    • 32-AC自动机_如何用多模式串匹配实现敏感词过滤功能

      2019-06-25

      #算法

    • 18-SQL语句逻辑相同_性能却为何差异巨大

      2019-06-23

      #MySql

    • 17-如何正确的显示随机消息

      2019-06-22

      #MySql

    • 16-MySQL中order by是如何工作的

      2019-06-20

      #MySql

    • 15-日志和索引有关问题

      2019-06-18

      #MySql

    • RocketMQ探索

      2019-06-17

      #MQ

    • 14-count(\*)为什么这么慢

      2019-06-16

      #MySql

    • 13-为什么表数据删掉一半而表文件大小不变

      2019-06-15

      #MySql

    • 12-为什么我的MySQL会“抖”一下

      2019-06-13

      #MySql

    • 11-怎么给字符串字段加索引

      2019-06-12

      #MySql

    • 10-MySQL为什么有时候会选错索引

      2019-06-11

      #MySql

    • 3-3-Docker容器用法

      2019-06-10

      #Docker

    • RabbitMQ详解

      2019-06-08

      #MQ

    • 5-分布式会话_锁_事务_高并发系统设计

      2019-06-07

      #面试

    • 3.2-Docker镜像用法

      2019-06-05

      #Docker

    • 4-Zookeeperer使用场景

      2019-06-04

      #面试

    • Dubbo知多少

      2019-06-03

      #面试#Dubbo

    • 3-分布式系统中接口调用顺序性如何保证

      2019-06-03

      #面试#Dubbo

    • 2-分布式系统中接口的幂等性该如何保证_比如不能重复扣款

      2019-06-02

      #面试#Dubbo

    • 1-分布式系统连环炮_Dubbo有关知识点

      2019-06-01

      #面试#Dubbo

    • 9-普通索引和唯一索引如何选择

      2019-05-30

      #MySql

    • 8-事务到底是隔离的还是不隔离的

      2019-05-29

      #MySql

    • 7-行锁功过_怎么减少行锁对性能的影响

      2019-05-28

      #MySql

    • 6-全局锁和表锁_给表加个字段怎么有这么多阻碍

      2019-05-27

      #MySql

    • 5-深入浅出索引(下)

      2019-05-26

      #MySql

    • 4-深入浅出索引(上)

      2019-05-25

      #MySql

    • 3.1-Docker用法

      2019-05-24

      #Docker

    • 2.2-Docker启动报错

      2019-05-23

      #Docker

    • 3-事务隔离_为什么你改了我还看不见

      2019-05-21

      #MySql

    • MySQL重要日志

      2019-05-20

      #面试#MySql

    • 2-日志系统_一条SQL更新语句是如何执行的

      2019-05-20

      #MySql

    • 1-基础架构_一条SQL查询语句是如何执行的

      2019-05-19

      #MySql

    • 2.1-Docker安装与部署

      2019-05-18

      #Docker

    • 1-Docker缘由

      2019-05-12

      #Docker

    • 0-Docker配置国内免费registry_mirror

      2019-05-08

      #Docker

    • 5-分布式搜索引擎如何部署

      2019-04-26

      #Elasticsearch#面试

    • 4-ES如何在几十亿数据场景下优化查询性能

      2019-04-23

      #Elasticsearch#面试

    • 3-ES读写数据的工作原理

      2019-04-22

      #Elasticsearch#面试

    • 2-分布式搜索引擎的架构是如何设计的

      2019-04-21

      #Elasticsearch#面试

    • 1-面试官对分布式搜索引擎的4个连环炮

      2019-04-20

      #Elasticsearch#面试

    • 8-如何设计一个消息队列

      2019-04-10

      #面试#MQ

    • 7-消息队列如何解决延迟_过期失效_积压消息等问题

      2019-04-10

      #面试#MQ

    • JWT学习

      2019-04-09

      #Java#Jwt

    • 6-消息队列如何保证消息的顺序性

      2019-04-08

      #面试#MQ

    • 5-消息队列如何保证可靠性传输(消息丢了怎么办)

      2019-04-07

      #面试#MQ

    • 4-消息队列消费到重复数据怎么办

      2019-04-06

      #面试#MQ

    • 3-消息队列如何保证高可用性

      2019-04-03

      #面试#MQ

    • 2-消息队列引入原原因_优缺点_应用场景_技术选型

      2019-04-02

      #面试#MQ

    • 1-面试官对消息队列的10个连环炮

      2019-04-01

      #面试#MQ

    • Git常见200+条命令

      2019-03-28

      #Git

    • 8-GitLab简单操作

      2019-03-25

      #Git

    • 31-Trie树_如何实现搜索引擎的搜索关键词提示功能

      2019-03-12

      #算法

    • 7-基于GitHub进行团队协作

      2019-03-09

      #Git

    • 30-字符串匹配基础下_如何借助BM算法轻松理解KMP算法

      2019-03-06

      #算法

    • 29-字符串匹配基础中_如何实现文本编辑器中的查找功能

      2019-03-03

      #算法

    • 28-字符串匹配基础上_如何借助哈希算法实现高效字符串匹配

      2019-03-01

      #算法

    • 6-GitHub的认识与使用

      2019-02-25

      #Git

    • 5-Git集成使用禁忌

      2019-02-15

      #Git

    • 27-深度和广度优先搜索_如何找出社交网络中的三度好友关系

      2019-02-13

      #算法

    • 26-图的表示_如何存储微博微信等社交网络中的好友关系

      2019-02-10

      #算法

    • 国内地图坐标系转换

      2019-02-08

      #地图坐标转换

    • 4-Git多人单分支集成协作时的常见场景

      2019-02-08

      #Git

    • 微服务架构-下篇

      2019-02-06

      #系统架构

    • 微服务架构-中篇

      2019-02-03

      #系统架构

    • 微服务架构-上篇

      2019-02-01

      #系统架构

    • Python数据分析工具

      2019-01-30

      #Python

    • Python高级篇

      2019-01-29

      #Python

    • Python中级篇_下

      2019-01-28

      #Python

    • Python中级篇_上

      2019-01-27

      #Python

    • Python初级篇

      2019-01-26

      #Python

    • Python前世今生

      2019-01-25

      #Python

    • 源码分析-MyBatis数据源与连接池

      2019-01-23

      #MyBatis

    • MyBatis初始化做了什么

      2019-01-21

      #MyBatis

    • 3-Git与GitHub简单同步

      2019-01-20

      #Git

    • 2-Git常用场景

      2019-01-18

      #Git

    • 1-Git安装及简单操作

      2019-01-15

      #Git

    • SpringCloud探索与实战

      2019-01-13

      #SpringCloud

    • MyBatis架构与原理

      2019-01-09

      #MyBatis

    • MyBatis原理概括

      2019-01-08

      #MyBatis

    • MyBatis多数据源配置

      2019-01-07

      #MyBatis

    • JVM(八):Jvm知识点概览

      2019-01-06

      #Jvm

    • JVM(七):Jvm调优-工具

      2019-01-05

      #Tools#Jvm

    • JVM(六):Java服务GC参数调优案例

      2019-01-03

      #Jvm

    • JVM(五):GC分析

      2019-01-02

      #Jvm

    • JVM(四):Jvm调优-命令

      2019-01-01

      #Jvm

    • JVM(三):GC算法_垃圾收集器

      2019-01-01

      #Jvm

    • 25-堆的应用_如何获取Top10最热门的搜索关键词

      2018-12-30

      #算法

    • 24-堆和堆排序_为什么说堆排序没有快速排序快

      2018-12-29

      #算法

    • 23-递归树_如何借助树来求解递归算法的时间复杂度

      2018-12-27

      #算法

    • 22-红黑树下_实现红黑树的技巧

      2018-12-25

      #算法

    • 21-红黑树上_为什么工程中都用红黑树这种二叉树

      2018-12-23

      #算法

    • 应用架构演变过程

      2018-12-20

      #Photo

    • MyBatis常用插件

      2018-12-14

      #MyBatis

    • JVM(二):Jvm内存结构

      2018-12-11

      #Jvm

    • JVM(一):Java类加载机制

      2018-12-10

      #Jvm

    • Map-Reduce学习

      2018-11-20

      #BigData

    • 20-二叉树基础下_有了如此高效的散列表—_为什么还需要二叉树

      2018-11-18

      #算法

    • 19-二叉树基础上_什么样的二叉树适合用数组来存储

      2018-11-16

      #算法

    • 18-哈希算法下_哈希算法在分布式系统中有哪些应用

      2018-11-15

      #算法

    • 17-哈希算法上_如何防止数据库中的用户信息被脱库

      2018-11-13

      #算法

    • Hadoop学习

      2018-11-10

      #BigData

    • 16-散列表下_为什么散列表和链表经常一起使用

      2018-11-09

      #算法

    • 15-散列表中_如何打造一个工业级水平的散列表

      2018-11-09

      #算法

    • 14-散列表上_Word文档中的单词拼写检查功能如何实现

      2018-11-08

      #算法

    • 13-跳表_为什么Redis一定要用跳表来实现有序集合

      2018-11-06

      #算法

    • 12-二分查找下_如何快速定位IP对应的省份地址

      2018-11-04

      #算法

    • 11-二分查找上_如何用最省内存的方式实现快速查找功能

      2018-11-02

      #算法

    • 10-排序优化_如何实现一个通用的高性能的排序函数

      2018-11-01

      #算法

    • 9-线性排序_如何根据年龄给100万用户数据排序

      2018-10-28

      #算法

    • 8-排序下_如何用快排思想在O(n)内查找第K大元素

      2018-10-24

      #算法

    • 7-排序上_为什么插入排序比冒泡排序更受欢迎

      2018-10-22

      #算法

    • 6-递归_如何用三行代码找到最终推荐人

      2018-10-20

      #算法

    • 高性能队列-Disruptor

      2018-10-18

      #MQ#Java

    • 5-队列_队列在线程池等有限资源池中的应用

      2018-10-16

      #算法

    • 4-栈_如何实现浏览器的前进和后退功能

      2018-10-13

      #算法

    • Quartz学习

      2018-10-09

      #Java#定时任务#Quartz

    • 3-链表下_如何轻松写出正确的链表代码

      2018-10-06

      #算法

    • 2-链表上_如何实现LRU缓存淘汰算法

      2018-10-06

      #算法

    • 1-数组_为什么很多编程语言中数组都从0开始编号

      2018-10-02

      #算法

    • 复杂度分析-下部

      2018-09-29

      #算法

    • 复杂度分析-上部

      2018-09-28

      #算法

    • 数据结构与算法概览

      2018-09-26

      #算法

    • 请求与响应

      2018-09-17

      #HTTP

    • TextRank基本了解

      2018-09-01

      #算法

    • (5)Hexo踩坑_主题优化

      2018-08-21

      #Hexo-yilia

    • (4)Hexo撰写文章

      2018-08-19

      #Hexo-yilia

    • (3)Hexo常用命令详解

      2018-08-19

      #Hexo-yilia

    • (2)Hexo配置文件详解

      2018-08-17

      #Hexo-yilia

    • 关于Firewalld二三事

      2018-08-15

      #Linux

    • (1)Hexo博客搭建

      2018-08-11

      #Hexo-yilia

    • 修改Vim_tab为4个空格

      2018-08-06

      #Linux

    • CentOs7防火墙开端口测试

      2018-08-01

      #Linux

    • 10-Redis的并发竞争问题及生产环境集群部署架构

      2018-07-30

      #面试#Redis

    • 9-如何保证缓存与数据库双写时的数据一致性

      2018-07-29

      #面试#Redis

    • 8-如何应对缓存雪崩及穿透问题

      2018-07-28

      #面试#Redis

    • 7-Redis集群模式原理

      2018-07-26

      #面试#Redis

    • Redis所需安装包及各种依赖

      2018-07-25

      #Redis

    • 6-Redis挂掉重启后数据如何进行恢复

      2018-07-24

      #面试#Redis

    • 5-Redis高并发高可用有关问题

      2018-07-21

      #面试#Redis

    • 4-Redis过期策略_手写LRU

      2018-07-19

      #面试#Redis

    • 3-Redis常用数据类型及使用场景

      2018-07-18

      #面试#Redis

    • 2-Redis线程模型_单线程效率高的原因

      2018-07-17

      #面试#Redis

    • 1-项目中缓存如何使用

      2018-07-16

      #面试#Redis

    • AWK三剑客

      2018-07-15

      #Linux

    • Maven插件-assembly插件基本使用

      2018-06-28

      #Java#Maven

    • Maven知多少

      2018-06-27

      #Java#Maven

    • 1-分库分表知多少

      2018-06-25

      #面试#MySql

    • MySQL基本用法

      2018-06-21

      #MySql

    • MySQL安装

      2018-06-20

      #MySql

    • Swagger2学习与集成

      2018-05-20

      #SpringBoot#Swagger2

    • SpringBoot面试

      2018-05-16

      #面试#SpringBoot

    • SpringBoot+Docker简单配置

      2018-05-15

      #Docker#SpringBoot

    • Java定时任务

      2018-05-13

      #Java#定时任务

    • Netty知多少

      2018-05-05

      #网络编程

    • Java编程瞎侃

      2018-04-18

      #Java

    • Vim常用操作

      2018-03-25

      #Linux

    • Linux定时任务Crontab详解

      2018-03-23

      #Linux

    • Linux常用插件及乱码

      2018-03-20

      #Linux

    • Linux安装常用软件

      2018-03-19

      #Linux

    • Idea常用插件及个性化配置

      2018-03-18

      #Tools#IDEA

    • Host-Vm相互ping不同到的解决办法

      2018-03-16

      #Linux

    • GitHub
    • 廖雪峰
    • 纯洁的微笑
    • 我没有三颗心脏
    • 阿里巴巴开源镜像网站
    一个脱离了高级趣味的人!