作者: yqabba

  • debian dpkg命令使用

    01、安装软件命令行:dpkg -i <.deb file name>示例:dpkg -i avg71flm_r28-1_i386.deb
    02、安装一个目录下的所有软件包命令行:dpkg -R示例:dpkg -R /usr/local/src
    03、释放软件包,但不进行配置命令行:dpkg –-unpack package_file 如果和 -R 一起使用,参数可以是一个目录示例:dpkg –-unpack avg71flm_r28-1_i386.deb
    04、重新配置和释放软件包命令行:dpkg –configure package_file 如果和 -a 一起使用,将配置所有没有配置的软件包示例:dpkg –configure avg71flm_r28-1_i386.deb
    05、重新配置环境命令行:dpkg-reconfigure env示例:dpkg-reconfigure locales(重新配置系统本地环境设置)
    06、删除软件包(保留其配置信息)命令行:dpkg -r package_file示例:dpkg -r avg71flm
    07、替换软件包信息命令行:dpkg –update-avail
    08、合并软件包信息命令行:dpkg –merge-avail
    09、从软件包里读取软件信息命令行:dpkg -A package_file
    10、删除一个包(包括配置信息)命令行:dpkg -P
    11、丢弃所有 Uninstall 软件包信息命令行:dpkg –forget-old-unavail
    12、删除软件包的 Avaliable 信息命令行:dpkg –clear-avail
    13、查找仅部分安装的软件包信息命令行:dpkg -C
    14、比较同一个包的不同版本之间的差别命令行:dpkg –compare-versions ver1 op ver2
    15、显示帮助信息命令行:dpkg –help
    16、显示 dpkg 的 Licence命令行:dpkg –licence (or) dpkg –License
    17、显示 dpkg 的版本号命令行:dpkg –version
    18、建立一个 deb 文件命令行:dpkg -b directory [filename]
    19、显示一个 Deb 文件的目录命令行:dpkg -c filename
    20、显示一个 Deb 的说明命令行:dpkg -I filename [control-file]
    21、搜索 Deb 包命令行:dpkg -l package-name-pattern示例:dpkg -l vim
    22、显示所有已经安装的 Deb 包,同时显示版本号以及简短说明命令行:dpkg -l
    23、报告指定包的状态信息命令行:dpkg -s package-name示例:dpkg -s ssh
    24、显示一个包安装到系统里面的文件目录信息命令行:dpkg -L package-Name示例:dpkg -L apache2
    25、显示包含该软件包的所有目录命令行:dpkg -S filename-search-pattern
    26、显示包的具体信息命令行:dpkg -p package-name示例:dpkg -p cacti

    摘录于下面文章 dpkg 命令详解_dpkg命令-CSDN博客

  • 关于本博客

    本博客正在重新搭建开发中,工作繁忙有点慢

  • FRP内网穿透配置

    前置说明

    教程安装frp版本为:0.58

    演示操作系统为:服务端:Linux(Debian,X64),客户端: Window(X64)

    Frp相关网站:GIthub项目地址 官方文档

    注意:

    从 v0.52.0 版本开始,frp 开始支持 TOML、YAML 和 JSON 作为配置文件格式。

    请注意,INI 已被弃用,并将在未来的发布中移除。新功能只能在TOML、YAML 或 JSON 中使用。希望使用这些新功能的用户应相应地切换其配置格式。

    网上很多旧教程用的都是INI格式配置,所以都不适用了

    一、安装Frp

    1、下载

    [GitHub项目地址]  https://github.com/fatedier/frp 

    大家可以根据需要的版本下载(如果不懂怎么选可以百度一下,但相信绝大多数人都懂)

    2、文件介绍

    window版本的可执行文件带.exe后缀。

    • frpc(客户端可执行文件)
    • frpc.toml(客户端配置文件)
    • frps(服务端可执行文件)
    • frps.toml(服务端配置文件)
    • LICENSE(许可证声明,可删不用管)

    如何区分客户端以及服务端:

    frpc的C代表(client)也就是客户端,而frps的S代表(service)也就是服务端

    那详细我们该使用到那些文件,举个例子:

    如果linux(centos、debian)作为服务端,window端作为客户端

    那么在服务端 Linux(x64/amd64平台下)可以下载frp_0.58.0_linux_amd64.tar.gz这个版本,然后我们只需要用到frps和frps.toml文件

    在客户端 Windows(x64/amd64平台下)可以下载frp_0.58.0_windows_amd64.zip这个版本,然后我们只需要用到frpc和frpc.toml文件

    文件下载后,可执行文件以及配置文件放在同一目录就行

    二、简单配置及运行

    配置示例:开启服务端frp面版、SSH 访问内网机器、自定义域名或公网IP访问内网的 Web 服务

    1、简单配置

  • 数据结构-串-KMP算法详解(Next数组计算)(简单易懂)(垃圾文章多年后我也看不懂了)

    本文章就专讲kmp,暴力匹配就不讲了(我相信能搜索kmp的,暴力匹配算法应该也都了解过了)
    为什么网上那么多讲kmp 我还发文章,很多文章我觉得讲的不是太通俗易懂,大多数我看起来都觉得有些懵逼

    KMP介绍

    提示:以下信息来源百度

    KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。KMP算法的时间复杂度O(m+n)

    上面讲了kmp需要求匹配字符串的next数组来快速匹配,那我们先来讲解一下如何求next数组


    一、求Next数组

    求Next数组前我们需要了解字符串的前缀表后缀表

    前后缀表

    如字符串“ABCD”的前后缀表

    在这里插入图片描述

    了解完字符串前后缀,接下来我们要开始求最长公共前后缀

    求最长公共前后缀

    我们以“aabaac”为例

    在这里插入图片描述

    字符串中要没有公共前后缀就为0

    从以上方法就能求出字符串“aabaac”的最长公共前后缀数组
    [0,1,0,1,2,0]

    最长相等前后缀表转Next数组

    当然变成Next数组前还需要进行简单的处理(其实也就把最长公共前后缀数组右移而已)
    在这里插入图片描述

    在最长公共前后缀前面加上 -1 并去掉最后一位就是next数组了
    Next数组的第一位永远是-1,第二位永远是0

    注意:Next数组有很多种求法,依据匹配字符串的代码来做选择,我选择的方法next数组第一位是-1,还有另一种方法开头是0,但原理都是相同的所以不必纠结


    二、使用Next数组来匹配字符串

    为了能较好体现kmp算法:
    主串:”aaacaacaaad
    模式串:”aaad
    模式串Next数组:[-1,0,1,2]

    在主串和匹配串字符相同的情况下,指针 i 和 j 后移

    或者遇到主串和匹配串字符不相同但next值为-1时指针 i 和 j 后移

    步骤一
    1i、1j、2i、2j代表指针位置及步骤,中间字符相等的地方我就不讲了,就主要讲重点的地方

    指针4i4j的字符不相同,不匹配位置的next值为2(蓝色的a),所以需要将匹配串右移到匹配串索引2的位置
    请添加图片描述
    步骤二
    匹配串后移后指针ij的字符依然还是不相同,不匹配位置的next值为1(蓝色的a),所以需要将匹配串右移到匹配串索引1的位置
    请添加图片描述
    步骤三
    匹配串后移后指针ij的字符依然还是不相同,不匹配位置的next值为0(蓝色的a),所以需要将匹配串右移到匹配串索引0的位置
    请添加图片描述
    步骤四
    匹配串后移后指针ij的字符依然还是不相同,但这时next值为-1,这就需要指针i和j向后移
    请添加图片描述
    步骤五
    指针i和j后移后,(中间字符相同的地方就不解说了),指针到3i和3j的字符不相同,next值为1,然后就和之前讲的步骤一样,需要将匹配串右移到匹配串索引1的位置
    请添加图片描述
    步骤六
    后面的步骤就不再多叙述,自己看图分析
    请添加图片描述
    步骤七
    请添加图片描述

    步骤八
    然后这就匹配完成了
    请添加图片描述


    总结

    代码后续会补充
    非常感谢您能看到这,本人第一次写文章,所以我可能讲的不是很好,如有问题望大家能多多提醒,感谢。下次讲sunday算法
    注:如看不懂,可以的话,麻烦您在评论区中发句看不懂,好让我知道我写的烂不烂