移动搜索

Sublime Text 全程指南

不羁的心 提交于 2020-03-02 09:23:57
摘要(Abstract) 本文系统全面的介绍了Sublime Text,旨在成为最优秀的Sublime Text中文教程。 前言(Prologue) Sublime Text是一款跨平台代码编辑器(Code Editor),从最初的Sublime Text 1.0,到现在的Sublime Text 3.0,Sublime Text从一个不知名的编辑器演变到现在几乎是各平台首选的GUI编辑器。而这样优秀的编辑器却没有一个靠谱的中文教程,所以我试图通过本文弥补这个缺陷。 编辑器的选择(Editor Choices) 从初学编程到现在,我用过的编辑器有EditPlus、UltraEdit、Notepad++、Vim、TextMate和Sublime Text,如果让我从中推荐,我会毫不犹豫的推荐Vim和Sublime Text,原因有下面几点: 跨平台:Vim和Sublime Text均为跨平台编辑器(在Linux、OS X和Windows下均可使用)。作为一个程序员,切换系统是常有的事情,为了减少重复学习,使用一个跨平台的编辑器是很有必要的。 可扩展:Vim和Sublime Text都是可扩展的(Extensible),并包含大量实用插件,我们可以通过安装自己领域的插件来成倍提高工作效率。 互补:Vim和Sublime Text分别是命令行环境(CLI)和图形界面环境(GUI

广度优先搜索

此生再无相见时 提交于 2020-02-17 11:31:49
一、思想 广度优先搜索(Breadth First Search),又称宽度优先搜索,简称广搜,BFS。是对图的一种遍历方式。 以这个无向带权图为例,结点上的数字为该结点的编号,边上的数字为该边的权值。 假如以结点1为源点,以结点7为目标结点,广度优先搜索扫描到结点的顺序应当是这样的。(如图,结点旁的红色数字表示搜到结点的顺序,对于由同一个结点引出的多个节点,按照字典序分别扫描。) 第一次,结点1。第二次,结点2。第三次,结点5。第四次,结点4。 第五次,结点6。第六次,结点7。第七次,结点3。 可以发现,它是从源点开始,对每一个与源点连通的点一一扫描,扫描完成后,对于扫描到的点,再按照每个点被扫描到的顺序,执行同样的操作。那么就有一个问题, 对于扫描到的点,如何记录其被扫描到的顺序?答案是使用一种数据结构——队列。 把扫描到的结点按照扫描的顺序入队,一个结点引出的所有结点入队完成后,把该结点(即队头)出队,那么出队后的队头就是比它后一个进队(即后一个被扫描到)的结点。 若共有n个结点,用a[i][j]表示图中结点i到结点j的权值(假设没有负权和为0的权),若结点i到结点j无边,那么令a[i][j]=0,用Q来表示该队列,h表示队头所表示的结点,pop表示队头出队,push(i)表示结点i进队,empty表示该队列是否为空,为空则返回0。那么从源点s到终点e

KMP算法

烂漫一生 提交于 2020-01-10 11:58:04
字符串匹配 是计算机的基本任务之一。 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算法可以完成这个任务, Knuth-Morris-Pratt算法 (简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。 这种算法不太容易理解,网上有很多 解释 ,但读起来都很费劲。直到读到 Jake Boxer 的文章,我才真正理解这种算法。下面,我用自己的语言,试图写一篇比较好懂的KMP算法解释。 1. 首先,字符串"BBC ABCDAB ABCDABCDABDE"的第一个字符与搜索词"ABCDABD"的第一个字符,进行比较。因为B与A不匹配,所以搜索词后移一位。 2. 因为B与A不匹配,搜索词再往后移。 3. 就这样,直到字符串有一个字符,与搜索词的第一个字符相同为止。 4. 接着比较字符串和搜索词的下一个字符,还是相同。 5. 直到字符串有一个字符,与搜索词对应的字符不相同为止。 6. 这时,最自然的反应是,将搜索词整个后移一位,再从头逐个比较。这样做虽然可行,但是效率很差,因为你要把"搜索位置"移到已经比较过的位置,重比一遍。 7. 一个基本事实是,当空格与D不匹配时,你其实知道前面六个字符是"ABCDAB"。KMP算法的想法是,设法利用这个已知信息

字符串匹配的KMP算法

孤街浪徒 提交于 2019-12-17 08:31:53
原理 字符串匹配 是计算机的基本任务之一。 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算法可以完成这个任务, Knuth-Morris-Pratt算法 (简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。 这种算法不太容易理解,网上有很多 解释 ,但读起来都很费劲。直到读到 Jake Boxer 的文章,我才真正理解这种算法。下面,我用自己的语言,试图写一篇比较好懂的KMP算法解释。 1. 首先,字符串"BBC ABCDAB ABCDABCDABDE"的第一个字符与搜索词"ABCDABD"的第一个字符,进行比较。因为B与A不匹配,所以搜索词后移一位。 2. 因为B与A不匹配,搜索词再往后移。 3. 就这样,直到字符串有一个字符,与搜索词的第一个字符相同为止。 4. 接着比较字符串和搜索词的下一个字符,还是相同。 5. 直到字符串有一个字符,与搜索词对应的字符不相同为止。 6. 这时,最自然的反应是,将搜索词整个后移一位,再从头逐个比较。这样做虽然可行,但是效率很差,因为你要把"搜索位置"移到已经比较过的位置,重比一遍。 7. 一个基本事实是,当空格与D不匹配时,你其实知道前面六个字符是"ABCDAB"。KMP算法的想法是,设法利用这个已知信息

KMP算法的原理(绝对简单易懂)

匿名 (未验证) 提交于 2019-12-03 00:19:01
KMP算法的作用 比较一个字符串是否为另一个字符串的子串,并可以返回匹配首位置 算法实现过程 1. 首先,字符串"BBC ABCDAB ABCDABCDABDE"的第一个字符与搜索词"ABCDABD"的第一个字符,进行比较。因为B与A不匹配,所以搜索词后移一位。 2. 因为B与A不匹配,搜索词再往后移。 3. 就这样,直到字符串有一个字符,与搜索词的第一个字符相同为止。 4. 接着比较字符串和搜索词的下一个字符,还是相同。 5. 直到字符串有一个字符,与搜索词对应的字符不相同为止。 6. 这时,最自然的反应是,将搜索词整个后移一位,再从头逐个比较。这样做虽然可行,但是效率很差,因为你要把"搜索位置"移到已经比较过的位置,重比一遍。 7. 一个基本事实是,当空格与D不匹配时,你其实知道前面六个字符是"ABCDAB"。KMP算法的想法是,设法利用这个已知信息,不要把"搜索位置"移回已经比较过的位置,继续把它向后移,这样就提高了效率。 8. 怎么做到这一点呢?可以针对搜索词,算出一张《部分匹配表》(Partial Match Table)。这张表是如何产生的,后面再介绍,这里只要会用就可以了。 9. 已知空格与D不匹配时,前面六个字符"ABCDAB"是匹配的。查表可知,最后一个匹配字符B对应的"部分匹配值"为2,因此按照下面的公式算出向后移动的位数:    移动位数 = 已匹配的字符数

值得收藏!神级代码编辑器 Sublime Text 全程指南

青春壹個敷衍的年華 提交于 2019-11-30 01:49:55
作者: Lucida 微博: @peng_gong 豆瓣: @figure9 原文链接: http://lucida.me/blog/sublime-text-complete-guide/ 摘要(Abstract) 本文系统全面的介绍了Sublime Text,旨在成为最优秀的Sublime Text中文教程。 前言(Prologue) Sublime Text是一款跨平台代码编辑器(Code Editor),从最初的Sublime Text 1.0,到现在的Sublime Text 3.0,Sublime Text从一个不知名的编辑器演变到现在几乎是各平台首选的GUI编辑器。而这样优秀的编辑器却没有一个靠谱的中文教程,所以我试图通过本文弥补这个缺陷。 编辑器的选择(Editor Choices) 从初学编程到现在,我用过的编辑器有EditPlus、UltraEdit、Notepad++、Vim、TextMate和Sublime Text,如果让我从中推荐,我会毫不犹豫的推荐Vim和Sublime Text,原因有下面几点: 跨平台: Vim和Sublime Text均为跨平台编辑器(在Linux、OS X和Windows下均可使用)。作为一个程序员,切换系统是常有的事情,为了减少重复学习,使用一个跨平台的编辑器是很有必要的。 可扩展: Vim和Sublime

最常用的几个linux命令

↘锁芯ラ 提交于 2019-11-28 18:21:27
sz 从linux拷文件出去 rz 从外面拷文件到linux ps -ef |grep java 查看java进程 netstat -lntp 检测端口网络连接情况 scp unzip 解压zip包 vim 视图模式 快捷退出 ZZ 可以按“:”、“/”、“?”。其中“:”表示输入vim命令,“/”表示后面输入要向下搜索的字符串,“?”表示后面输入要向上搜索字符串。 转载一篇写的很好的 小左先森 的博文 原博地址 : https://blog.51cto.com/13525470/2053771 Vim基本使用方法 小左先森 关注 1 人评论 7163人阅读 2017-12-23 01:38:52 一、Vim是什么   Vim是一个高度可配置的文本编辑器,用于创建和更改任何类型的文本非常高效。与大多数UNIX系统和Apple OS X一起,它被包含为“vi”。Vim是稳定的,并且不断发展,变得更好。其特点是:持久的多级撤消树;广泛的插件系统;支持数百种编程语言和文件格式;强大的搜索和替换;与许多工具集成。     Vim是Vi IMproved,是编辑器Vi的一个加强版,一个极其强大并符合IT工程师(程序员、运维)习惯的编辑器。如果你是一名职业的SE,那么一定在寻找一款出色的能够自由定制、满足灵活编辑功能的编辑器。那么答案,就是vim或者Emacs

Vim常用命令及配置方案

独自空忆成欢 提交于 2019-11-28 04:40:53
几句话 很久之前就接触到vim,初学那阵觉得vim很酷炫,但确实对新手不是很友好。我也就简单看了下基本操作就上手了,但又不是长期在vim下工作,这就导致了每一次重新使用vim都要再去回温下基本操作,很是难受,所以就趁这个机会把基本操作都记录下来,一来可以当做自己的笔记,二来希望可以帮到同样和我一样用过vim但却忘得差不多的人。另外,这里也记录一下自己的vim配置,这个配置可能并没有其他网友分享的那么强大,但至少足够简单,能够提高自己编码的效率。 vim常用命令 首先先简单梳理一下vim的工作模式。vim有三种模式,分别是 命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode) 。 简单来讲就是,当我们刚打开vim,或者使用vim打开了一个文件,终端上显示着文件的内容,这时候就是命令模式(如上图就是刚打开一个文件的情况,此时光标位于第一行行首处),在现在的情况下,键盘输入小写的i a o 或者大写I A O中的其中一个,就可以进入 输入模式 ,各个按键的具体意义如下: 按键 具体意义 i 从目前光标所在处输入 I 在目前所在行的第一个非空格符处开始输入 a 从目前光标所在的下一个字符处开始输入 A 从光标所在行的最后一个字符处开始输入 o 在目前光标所在的下一行处输入新的一行 O 在目前光标所在的上一行处输入新的一行 r

【转载】Amit’s A star Page 中译文

你离开我真会死。 提交于 2019-11-26 17:39:37
GameRes游戏开发资源网 http://www.gameres.com Amit's A star Page 中译文 Amit's A star Page中译文原文链接: http://dev.gameres.com/Program/Abstract/Arithmetic/AmitAStar.mht 译序 这篇文章很适合A*算法的初学者,可惜网上没找到翻译版的。本着好东西不敢独享的想法,也为了锻炼一下英文,本人译了这篇文章。 由于本人英文水平非常有限,六级考了两次加一块不超过370分,因此本译文难免存在问题。不过也算是抛砖引玉,希望看到有更多的游戏开发方面的优秀译作出现,毕竟中文的优秀资料太少了,中国的游戏开发者的路不好走。 本人能力有限,译文中有小部分词句实在难以翻译,因此暂时保留英文原文放在译文中。对于不敢确定翻译是否准确的词句,本人用圆括号保留了英文原文,读者可以对照着加以理解。 A*算法本身是很简单的,因此原文中并没有过多地讨论A*算法本身,而是花了较大的篇幅讨论了用于保存OPEN和CLOSED集的数据结构,以及A*算法的变种和扩展。 编程实现A*是简单的,读者可以用STL对本文中的伪代码加以实现(本人已花一天时间实验过基本的A*搜索)。但是最重要的还是对A*本身的理解,这样才可以在自己的游戏中处理各种千变万化的情况。 翻译本文的想法产生于2006年5月