str与pattern匹配代表字符串str中的单词与pattern中的字符一一对应。(其中pattern中只包含小写字符,str中 的单词只包含小写字符,使用空格分隔。)...pattern字符也不能出现过 3.单词的个数必须与pattern中字符的数量相同 那么问题来了,我们怎么将一个单词和一个字符绑定在一起呢?...//it指向了hash_map printf("hash_map[%s] = %d\n", it->first.c_str(), it->second);//it->first就是当前的映射的第一个元素...word时,find函数返回的迭代器指针,与end函数返回的迭代器指针相同,即,当该单词从未出现在哈希map中 if (used[pattern[position]]){...used数组 } else {//若find函数返回的迭代器指针不等于end函数返回的迭代器指针,即哈希map中已找到了该单词,即当前单词已与单个字符建立映射
"I love 'python'" 2.2.1 字符串的简单运算 下面介绍字符串的简单运算。 title() title()以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写。...3.4 切片 要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数range()一样,Python在到达你指定的第二个索引前面的元素后停止。...结合使用位置实参和任意数量实参 如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。Python 先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中。...使用任意数量的关键字实参 有时候,需要接受任意数量的实参,但预先不知道传递给函数的会是什么样的信息。在这种情况下,可将函数编写成能够接受任意数量的键—值对——调用语句提供了多少就接受多少。...self 是一个指向实例本身的引用,让实例能够访问类中的属性和方法。 还可以通过实例直接访问属性:my_cat.name。但在其他语言中并不建议这样做。
"I love 'python'" 2.2.1 字符串的简单运算 下面介绍字符串的简单运算。 title() title()以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写。...a>10 上面的例子打印出了 cat 的所有键,用字符串的 title() 方法使每个单词的首字母大写。...结合使用位置实参和任意数量实参 如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。Python 先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中。...使用任意数量的关键字实参 有时候,需要接受任意数量的实参,但预先不知道传递给函数的会是什么样的信息。在这种情况下,可将函数编写成能够接受任意数量的键—值对——调用语句提供了多少就接受多少。...self 是一个指向实例本身的引用,让实例能够访问类中的属性和方法。 还可以通过实例直接访问属性:my_cat.name。但在其他语言中并不建议这样做。
Fish 有着很多重要的功能,比如自动建议、语法高亮、可搜索的历史记录(像在 bash 中 CTRL+r)、智能搜索功能、极好的 VGA 颜色支持、基于 web 的设置方式、完善的手册页和许多开箱即用的功能...安装 Fish 尽管 fish 是一个非常用户友好的并且功能丰富的 shell,但并没有包括在大多数 Linux 发行版的默认仓库中。...自动建议 当我输入一个命令,它以浅灰色自动建议一个命令。所以,我需要输入一个 Linux 命令的前几个字母,然后按下 键来完成这个命令。 如果有更多的可能性,它将会列出它们。...例如,我输入一个命令的一部分,然后按向下箭头键进行智能搜索,再次输入一个字母来从列表中选择所需的命令。 语法高亮 当你输入一个命令时,你将注意到语法高亮。...基于 web 的配置方式 这是 fish shell 另一个很酷的功能。我们可以设置我们的颜色、更改 fish 提示符,并从网页上查看所有功能、变量、历史记录、键绑定。
调用erase函数时将键作为参数,这将删除包含指定键的所有键-值对: mapObject.erase(key); erase函数的另一种版本接受迭代器作为参数,并删除迭代器指向的元素: mapObject.erase...(); 要获悉键对应的索引,可调用该散列函数,并将键传递给它: size_t HashingValue1000=HFn(1000); 理解函数对象 一元函数:接受一个参数的函数,如f(x)。...如果一元函数返回一个布尔值,则该函数称为谓词。 二元函数:接受两个参数的函数,如 f(x, y)。如果二元函数返回一个布尔值,则该函数称为二元谓词。...表达式 二元函数接受两个参数,还可返回一个值。...:第一个是要打开的文件的路径和名称(如果没有提供路径,将假定为应用程序的当前目录设置),第二个是文件的打开模式。
无效命令默认高亮为红色 对于有效路径会有下划线提示 不匹配的括号或者逗号 3.2 自动补全建议 Fish Shell 自带 命令补全建议 功能, 当我们输入命令后, 我们将在光标后看到以柔和的灰色显示的推荐内容...基于 Web 的配置器 Fish Shell 相对于其他 Shell 有一个比较有意思的功能, 就是可以通过浏览器来配置或查看 Shell 的主题、提示、功能函数、常量、历史记录、快捷键 首先我们需要通过...第六部分则是快捷键的一个绑定, 这里也是不允许进行修改 3.5 独自的自定义配置文件 Fish Shell 为用户提供了一个独立的配置文件(~/.config/fish/config.fish),.../fish/config.fish if status is-interactive end 下面我们尝试在该配置文件中, 添加几个 git 相关的 别名, 来进行一个简单测试 vim ~/.config...方法: 在配置文件 ~/.config/fish/config.fish 中, 新增一个 fish_prompt 函数用于定义 提示符 这里我们可以使用 vscode 打开配置文件, mac 访达默认情况下是不展示隐藏文件的
我们将在光标后看到以柔和的灰色显示的推荐内容, 这些内容可能是 Fish Shell 推导出来的, 也有可能是历史使用过的命令。...基于 Web 的配置器 Fish Shell 相对于其他 Shell 有一个比较有意思的功能, 就是可以通过浏览器来配置或查看 Shell 的主题、提示、功能函数、常量、历史记录、快捷键。...第五部分则是记录了所有用过的命令, 这里可对历史记录进行一个删除。 第六部分则是快捷键的一个绑定, 这里也是不允许进行修改。...独自的自定义配置文件 Fish Shell 为用户提供了一个独立的配置文件(~/.config/fish/config.fish), 我们可以在这个文件里面写入各种自定义函数、别名、常量..., 在每次启动...方法: 在配置文件 ~/.config/fish/config.fish 中, 新增一个 fish_prompt 函数用于定义 提示符。
如下图所示,分组操作的结果是一个 Map ,把分组函数返回的值作为映射的键,把流中所有具有这个分类值的项目的列表作为对应的映射值。 ?...={DIET=[prawns], NORMAL=[salmon]}} 输出的结果里的外层 Map 的键就是第一级分类函数生成的值:“fish, meat, other”, 而这个 Map 的值又是一个...第一个 groupingBy 给每个键建立了一个桶。然后再用下游的收集器去收集每个桶中的元素,以此得到n级分组。 ?...=pork} 这个工厂方法接受两个参数——要转换的收集器以及转换函数,并返回另一个收集器。...这个方法接受两个参数: 一个函数对流中的元素做变换 另一个则将变换的结果对象收集起来 其目的是在累加之前对每个输入元素应用一个映射函数,这样就可以让接受特定类型元素的收集器适应不同类型的对象。
使用过程中,如果需要帮助,可以输入help命令。浏览器就会自动打开,显示在线文档。 $ help 四、彩色显示 进入 Fish 以后,你注意到的第一件事,可能就是它默认彩色显示。...五、自动建议 Fish 会自动在光标后面给出建议,表示可能的选项,颜色为灰色。...$ vi[按下 Tab 键] vi (Executable link, 2.7MB) view (Vi IMproved, 一个程序员的文本编辑器) viewer.py (Executable, 967B...除了补全命令,Fish 还可以补全参数。比如,ls命令的-l参数后面按下Tab键,就会显示可以连用的其他参数。...function ll ls -lhG $argv end 上面代码定义了一个ll函数。命令行执行这个函数以后,就可以用ll命令替代ls -lhG。其中,变量$argv表示函数的参数。
pop() 我们将看到的第一个mutator方法是pop()方法,该方法删除数组末尾的最后一个元素。 我们先从fish数组开始。...pop()方法不接受其他参数。 shift() 另一个mutator方法,shift()方法从数组的开头删除第一个元素。...sort() sort()方法根据元素中的第一个字符对数组中的元素进行排序。在第一个字符相同的情况下,它将继续向下并比较第二个字符,以此类推。...我们可以再次修改数组以在一个字符串项中包含一个数字。...相反,它将只检查数字中的第一个字符。
命令保存在内存中,之后才保存在硬盘fish_history文件,一个会话不能看到另一个没关闭会话的命令,需要手动执行history merge(这个试了没用,可能跟fish版本支不支持有关系) History...Alias就是创建一个func,如果要保存到config, 应该用funcsave 自定义的变量,所以如果有自定义,使用funcsave,他的效果是在这个function文件夹产生一个 文件名为命令.fish...常用的操作有: 按右键或者CTRL+F接受建议 ALT+->接受建议的第一部分 TAB补全 按tab召唤出提示窗口,可以方向键选择,如果光标在窗口内部,可以按住空格召唤search界面,如果不在窗口,按住任意键可以退出这个窗口...(窗口内部鼠标移动到窗口外部需要按住esc键) 这个补齐是可以自定义的。...(这个是bash一个大短板) 每个命令都可以用tab提示。错误的命令能够被友好提示,并给出可能正确的建议 image.png
Fish 是替代默认 shell 的一个第三方 shell,它试图比其他 shell 更加用户友好和交互式,所以老唐在此分享一下在 Debian 10 上面安装、配置和使用 Fish Shell 的教程...启动 Fish Shell: $ fish 退出 Fish Shell: $ exit 三、配置 Fish Shell 首先我们拷贝一份默认的配置文件: $ cp /usr/share/fish/config.fish...'' 四、使用 Fish Shell 的自动建议 当你键入文件名和命令时,Fish Shell 会给出建议。...例如,如果要编辑主目录中的文件 test.txt,则可以键入nano〜/ te,Fish 将预览文件名的其余部分。按向右箭头键接受建议。...Fish 提供了比 Bash 更完整的建议,因为它索引了手册页并收集了程序参数。 五、设置变量 想要在 Fish Shell 中设置变量,可以使用 set 命令。
第一个参数是交换机的名称。空字符串表示默认或无名称交换机**:消息能路由发送到队列中其实是由 routingKey(bindingkey)绑定 key 指定的,如果它存在的话** 5.2....在上面这张图中,我们可以看到 X 绑定了两个队列,绑定类型是 direct。队列 Q1 绑定键为 orange,队列 Q2 绑定键有两个:一个绑定键为 black,另一个绑定键为 green....在这个规则列表中,其中有两个替换符是大家需要注意的 *(星号)可以代替一个单词 #(井号)可以替代零个或多个单词 5.6.3....Q2–>绑定的是 最后一个单词是 rabbit 的 3 个单词(..rabbit) 第一个单词是 lazy 的多个单词(lazy.#) 上图是一个队列绑定关系图,我们来看看他们之间数据接收情况是怎么样的...是四个单词但匹配 Q2 当队列绑定关系是下列这种情况时需要引起注意 当一个队列绑定键是#,那么这个队列将接收所有数据,就有点像 fanout 了 如果队列绑定键当中没有#和*出现,那么该队列绑定类型就是
这里有一个比较重要的概念:路由键 。消息到交换机的时候,交互机会转发到对应的队列中,那么究竟转发到哪个队列,就要根据该路由键。 绑定:也就是交换机需要和队列相绑定,这其中如上图所示,是多对多的关系。...当消息中的 路由键 和 这个 binding key 对应上的时候,那么就知道了该消息去到哪一个队列中。...- 这个主要是因为可能又有 Q3,而Q3只接受 black 的信息,而Q2不仅接受black 的信息,还接受 green 的信息。...*,那么就只能匹配路由键是这样子的:第一个单词是 agreements,第四个单词是 b。 井号(#)就表示相当于一个或者多个单词,例如一个匹配模式是agreements.eu.berlin....#,那么,以agreements.eu.berlin开头的路由键都是可以的。 具体代码发送的时候还是一样,第一个参数表示交换机,第二个参数表示routing key,第三个参数即消息。
# Exchanges的类型 直接(direct):处理路由键。需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配。这是一个完整的匹配。...,多个接受,发布/订阅模式 # Direct exchange 在上一节中,我们构建了一个简单的日志记录系统。...这个时候就只能使用 topic 类型 Topic 的要求 发送到类型是 topic 交换机的消息的 routing_key 不能随意写,必须满足一定的要求,它必须是一个单词列表,以点号分隔开。...带 3 个单词的字符串 (*.orange.*) Q2-->绑定的是 最后一个单词是 rabbit 的 3 个单词 (*.*.rabbit) 第一个单词是 lazy 的多个单词 (lazy.#) 上图是一个队列绑定关系图...的 3 个单词(*.*.rabbit) * 第一个单词是 lazy 的多个单词(lazy.#) */ HashMap<String, String
消费者则可以使用通配符匹配来订阅感兴趣的消息。在RabbitMQ通配符模式中,路由键由生产者定义,用于标识消息的目的地;而绑定则由消费者定义,用于指定消息的接收规则。...通配符模式的一个重要概念是通配符表达式(binding pattern),它定义了绑定的模式规则。通配符表达式可以包含多个单词和通配符符号,以及点号(.)进行分隔。...通配符表达式越精确,匹配的消息越准确。例如,假设路由键通常由一个或多个单词组成,多个单词之间以“.”分割。...在生产者代码中,需要定义并发送带有路由键的消息;在消费者代码中,则需要定义绑定模式并订阅感兴趣的消息。...通配符规则:消息设置RoutingKey时,RoutingKey由多个单词构成,中间以 . 分割。队列设置RoutingKey时, # 可以匹配任意多个单词, * 可以匹配任意一个单词。
建立索引 MongoDB一个集合上只能建立一个文本索引。 建立文本索引:在集合texttest上的body键上建立文本索引。...执行搜索 文本搜索:以fish为词根进行搜索,返回body中匹配fish字符串的文档。...MongoDB将对指定的集合执行一个专门的查询,所有匹配该查询的文档都将被输入到map函数中。map函数被设计用于生成键值对。...任何含有多个值的键都将被输入到reduce函数中,reduce函数将返回输入数据的聚合结果。最后,还有一个可选步骤,通过finalize函数对数据的显示进行完善。...map函数接收集合中的color和num字段作为输入,输出为以color为键,以num数组为值的文档。
屏幕快照 2019-04-20 下午11.27.04.png 左右移动tab页面的命令键是(⌘ + Shift + ]或者⌘ + Shift + [) 支持在shell终端(包括历史执行的结果,整个会话的执行历史相当于一个文本...)搜索字符串(⌘ + f),查找下一个(⌘ +g) 支持将shell命令下发到多个tab会话中(⌘ + Option + I,再次敲击快捷键关闭此功能) 屏幕快照 2019-04-20 下午11.36.08...三、从bash到Zsh到fish shell上一个程序把键盘输入的命令发送给操作系统执行,常用的比如Bash(Bourne Again Shell)。...它的特点包括 自动完成填充和自动建议 比如说敲了ls -he, 他会用暗灰色字体建议输入ls -help. 当从敲命令的第一个字母开始,这个 建议实时刷新。...屏幕快照 2019-04-21 上午12.14.24.png 按方向键右自动填充建议,tab键打开补齐选项, 选项说根据man页面的选项提示。tab键按完再按空格进行搜索。
cd ../../../ 如果层级比较少,那这样勉强还可以接受,但如果层级很深,那可能就会 cd 到你怀疑人生了。...本文将介绍一个工具,它能帮你快速进入到某一个特定的父目录,而无需一路 cd 。你可以直接指定回退的层级数,或者要回退的目标目录,非常方便。...更重要的是,它甚至还支持 tab 键,而且在不重复的情况下,你也可以指定目标目录的前几个字母即可,大大增加了工作效率。.../shannonmoeller/up/master/up.fish $ source ~/.config/up/up.fish up 脚本的使用 按照以上步骤操作,我们就能将 up 脚本安装到系统并完成配置...,我们可以这样操作: $ pwd /home/alvin/projects/atb4g/ecall/src $ up projects $ pwd /home/alvin/projects 如果要回退的单词长度太长写得太累怎么办
领取专属 10元无门槛券
手把手带您无忧上云