一、数组中的逆序对: 1、题目: 数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。...如果第一个子数组中的数字大于第二个数组中的数字,则构成逆序对,并且逆序对的数目等于第二个子数组中剩余数字的个数,如下图(a)和(c)所示。...: 1、题目: 请实现一个函数用来匹配包括’.’和’*’的正则表达式。...例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配 2、解题思路: 参考牛客网的“披萨大叔”:https://www.nowcoder.com/questionTerminal...(2)如果 字符串第一个字符和模式中的第一个字符相不匹配,直接返回false。 2.2 而当模式中的第二个字符是“*”时: 如果字符串第一个字符跟模式第一个字符不匹配,则模式后移2个字符,继续匹配。
上面的expression是一个表达式。这个表达式为真,test命令执行成功(返回值为0);表达式为伪,test命令执行失败(返回值为1)。...直接将数组变量赋值为空字符串,相当于删除数组的第一个成员。 unset ArrayName可以清空整个数组。 关联数组 关联数组使用字符串而不是整数作为数组索引。...declare -A可以声明关联数组。...可以直接使用变量名创建数组,关联数组则必须用带有-A选项的declare命令声明创建。...访问关联数组成员的方式,几乎与整数索引数组相同。 echo ${colors["blue"]} set命令 set命令用来修改子 Shell 环境的运行参数,即定制环境。
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。...bash中的两类数组类型: 普通数组:最常见的数组类型声明格式:array_name=(value0 value1) 关联数组:从bash4.0开始被引入,关联数组的索引值可以使用任意的文本,关联数组在很多操作中很有用...; 关联数组的声明(必须声明):declare -A array_var (1)定义数组 在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。...所有参数整体)可以获取数组中的所有元素,利用获取字符串长度的#来获取数组长度的方法与获取字符串长度的方法相同;以及可以对数组进行提取删除等等 实际案例: array_name=(1 3 5 7 9)...four #右边开始最长的匹配 echo ${array[@]%%o} #one tw three four #从字符串的结尾开始最长的匹配 #示例7.关联数组的使用,关联数组的打印方法跟普通数组用法一样
下例中使用incr指令进行说明,aa为参数名,$bb为要+的整数,[expression]的返回值为相加的和(运行环境为DC): ? 再以一个glob查找操作进行说明(运行环境:vivado): ?...glob返回的是一个列表形式的返回值,类似于一个数组,当直接使用filedelete [glob *.v]进行删除时会失败是因为此时操作的对象是list的地址,而非list中的多个元素,所以使用{*}对列表的地址进行解析...上述想法的支撑在于对于仅有一个删除对象的验证,此时元素的地址与list的首地址相同(类似C语言中的数组和元素),此时file delete [glob *.v]就会删除成功: ?...把里面的内容作为一个单词传递给命令过程,之后命令过程在根据命令参数再去解析这个单词中的内容。 Part04三种匹配方式 Tcl中存在三种匹配方式:exact、glob、正则表达式。...exact和glob exact就是严格匹配,即两个字符串必须完全相同,不允许通配符的出现。 ? ? 正则表达式 ?
如果其它任何类型的值被转换成对象,将会创建一个内置类 stdClass 的实例。如果该值为 NULL,则新的实例为空。数组转换成对象将使键名成为属性名并具有相对应的值。...中超全局变量$GLOBALS和global的区别 http://www.cnblogs.com/adforce/archive/2011/09/13/2174934.html glob()...函数glob() 函数返回匹配指定模式的文件名或目录。...该函数返回一个包含有匹配文件 / 目录的数组。如果出错返回 false。 <?php print_r(glob("*.*")); ?...> 用json_encode()函数对数组进行JSON编码。
一个状态机,封装了多个内部状态 特征 function 关键字与函数名之间有一个星号 函数体内部使用 yield 表达式,定义不同的内部状态 async 函数(ES2017) 特征 是 Generator...函数的语法糖 function 关键字前添加 async 函数体内部使用 await 表达式 对 Generator 函数的改进 内置执行器 更好的语义 更广的适用性 返回值是 Promise...返回一个数组,包含对象自身的所有 Symbol 属性的键名 Reflect.ownKeys 返回一个数组,包含对象自身的(不含继承的)所有键名,不管键名是 Symbol 或字符串,也不管是否可枚举......of 循环 flat 将嵌套的数组拍平 默认拍平一层 flatMap 先对原数组的每个成员执行 map 再对返回值组成的数组执行 flat 方法 只能拍平一层数组 at 返回参数对应位置的成员支持负索引...$&:匹配的字符串 $` :匹配结果前面的文本 $':匹配结果后面的文本 $n:匹配成功的第n组内容,n是从1开始的自然数(第一个参数必须是正则表达式) $$:指代美元符号$ at 返回参数指定位置的字符
这章介绍 Redis 的5种数据类型,每节都由“介绍”、“命令”、“实践”和“命令拾遗”四部分组成。这种学习思路很符合初学者上手。 这节是几个基础的命令。...1 获得符合规则的键名列表 KEYS pattern pattern 采用的通配符叫做 globbing patterns。...因为 Unix 早期有一个/etc/glob文件保存通配符模板,后来 Bash 内置了这个功能,但是这个名字被保留了下来。...*:匹配一个路径部分中0个或多个字符,注意不匹配以.开始的路径,如文件.a。 ?:匹配一个字符。 […]:匹配一系列字符,如[abc]匹配字符a, b, c,在[…]和[!...…]表示匹配不在列表中的字符,如[abc]匹配除了a, b, c以外的字符。
ES6规定,var命令和function命令声明的全局变量,属于全局对象的属性;let命令、const命令、class命令声明的全局变量,不属于全局对象的属性,无法通过window/global获取。...正则表达式的y修饰符:它的作用与g修饰符类似,也是全局匹配,后一次匹配都从上一次匹配成功的下一个位置开始,不同之处在于,g修饰符只确保剩余位置中存在匹配,而y修饰符确保匹配必须从剩余的第一个位置开始 模板字符串...b) Map原生提供三个遍历器:keys(),values(),entries() WeakMap结构与Map结构基本类似,唯一的区别是它只接受对象作为键名(null除外),不接受原始类型的值作为键名,...语句的返回值。...e) ES6的Class只是ES5的构造函数的一层包装,所以函数的许多特性都被Class继承,包括name属性。 f) 与函数一样,Class也可以使用表达式的形式定义。
php7中修改了表达式执行的顺序:http://php.net/manual/zh/migration70.incompatible.php : ?...PHP7前是不允许用($a)();这样的方法来执行动态函数的,但PHP7中增加了对此的支持。所以,我们可以通过('phpinfo')();来执行函数,第一个括号中可以是任意PHP表达式。...或者叫period,它的作用和source一样,就是用当前的shell执行一个文件中的命令。比如,当前运行的shell是bash,则. file的意思就是用bash执行file文件中的命令。...就跟正则表达式类似,glob支持利用[0-9]来表示一个范围。 我们再来看看之前列出可能干扰我们的文件: ? 所有文件名都是小写,只有PHP生成的临时文件包含大写字母。...那么答案就呼之欲出了,我们只要找到一个可以表示“大写字母”的glob通配符,就能精准找到我们要执行的文件。 翻开ascii码表,可见大写字母位于@与[之间: ?
这里的PATTERN是正则表达式(参考前一篇,本文将结合grep一同举例)。...:/bin/bash 选项-A N、-B N、-C N表示输出匹配行和其'周围行' -A N 表示输出匹配行和其之后(after)的N行 -B N 表示输出匹配行和其之前(before)的N行 -C N...:/root:/bin/bash learner:x:1000:1000::/home/learner:/bin/bash 使用扩展正则表达式意味着不需要转义就能表示字符的特殊含义,包括?...和--include=GLOB分别表示排除和包含匹配GLOB的文件,GLOB表示通配符(find及xargs用法见基础命令介绍三): [root@centos7 temp]# find ..../bin/bash [root@centos7 temp]# grep强大的过滤能力来自于各种选项以及正则表达式的配合,在今后的文章中还有更多的例子。
php7中修改了表达式执行的顺序:http://php.net/manual/zh/migration70.incompatible.php : ?...PHP7前是不允许用($a)();这样的方法来执行动态函数的,但PHP7中增加了对此的支持。所以,我们可以通过(‘phpinfo’)();来执行函数,第一个括号中可以是任意PHP表达式。...或者叫period,它的作用和source一样,就是用当前的shell执行一个文件中的命令。比如,当前运行的shell是bash,则. file的意思就是用bash执行file文件中的命令。...就跟正则表达式类似,glob支持利用[0-9]来表示一个范围。 我们再来看看之前列出可能干扰我们的文件: ? 所有文件名都是小写,只有PHP生成的临时文件包含大写字母。...那么答案就呼之欲出了,我们只要找到一个可以表示“大写字母”的glob通配符,就能精准找到我们要执行的文件。 翻开ascii码表,可见大写字母位于@与[之间: ?
1.获得符合规则的键名列表 KEYS pattern pattern支持glob风格通配符格式 ?...匹配一个字符串 * 匹配任意个(包括0个) [] 匹配括号间的任一字符,可以使用“-”表示一个范围,如a[b-d]可以匹配“ab”,“ac”,“ad” ? 匹配“?”...,\用于转义 2.判断一个键是否存在,如果键存在则返回整数类型1,否则返回0 EXISTS key 3.删除键,可以删除一个或多个键,返回值是删除的键的个数。...redis-cli KEYS "user:*" | xargs redis-cli DEL or redis-cli DEL'redis-cli KEYS"user:*"'(性能更好,推荐) 5.获得键值的数据类型...,返回值可能是string(字符串类型)、hash(散列类型)、list(列表类型)、set(集合类型)、zset(有序集合类型) TYPE key 参考书目 《Redis入门指南》李子骅 著
")"; php5与php7的区别: php5不支持($a)()这种方法动态解析调用函数; 在 PHP 5 中 assert() 是一个函数,我们可以通过f='assert';f(...)...=和“获得shell的方法 2: 配合通配符执行匹配文件 和 .使用当前shell执行文件 3: 配套上文件上传暂存文件名的规律构造匹配的通配符 最终实现通过当前shell(如/bin/bash...PHP5+shell打破禁锢 因为反引号不属于“字母”、“数字”,所以我们可以执行系统命令,但问题来了:如何利用无字母、数字、$的系统命令来getshell?...或者叫period,它的作用和source一样,就是用当前的shell执行一个文件中的命令。比如,当前运行的shell是bash,则. file的意思就是用bash执行file文件中的命令。...继续阅读glob的帮助,我发现另一个有趣的用法: 图片 就跟正则表达式类似,glob支持利用[0-9]来表示一个范围。
PHP中的levenshtein()函数也支持与字符串相似度相关的计算,代码如下: $s1 = 'Tinywan'; $s2 = 'ShaoBoWan'; $max_length = max(strlen...array1和array2时,'a'下的数组'b', 'c'合并到了结果中,而'a'下的数组'd', 'e'也被合并到到结果中。...数组键名的处理 使用array_merge_recursive()函数时,如果要合并的数组具有相同的字符串键名,则这些数组的元素将合并成一个数组。...glob() 函数返回一个包含匹配指定模式的文件名或目录的数组。...该函数返回一个包含有匹配文件/目录的数组。如果失败则返回 FALSE。
大多数使用bash的人员,一般都先拥有其他语言的语法基础,在接触bash的语法之后,会自然的将原有语法习惯套用到bash中来。...这和bash的目的和使用者使用bash的目的有很大的关系,bash本身是为了提供一个接口,来支持用户通过命令与操作系统进行交互。...3、((expression)) expression是数学表达式(类似C语言的数学表达式),如果表达式的值非0,则此复合命令的返回值为0;如果表达式的值为0,则此复合命令的返回值为1。...中 expr1 && expr2 #表示对两个表达式进行逻辑与操作,只能用于 [[ expr ]] 中 expr1 -o expr2 #表示对两个表达式进行逻辑或操作,只能用于 [ expr ]...case命令的返回值是执行最后一个命令的返回值,当匹配均没有成功时,返回值为0。 脚本举例: #!
PATTERN 相同 [[ STRING1 =~ STRING2 ]] 左侧字符串是否能够被右侧的正则表达式的 PATTERN 所匹配 逻辑运算与、或、非(条件组合测试): [ !...EXPR ] 逻辑非,与表达相反的结果为真 [ EXPR1 -a EXPR2 ] 逻辑与,要同时满足多个表达式才为真,等同于 && [ EXPR1 -o EXPR2 ] 逻辑或,满足其中任意一个表达式即为真...匹配多个字符串在执行动作后加此命令 详细使用参考:交互式转化批处理工具 expect 2.13 数组 (1) 数组介绍 变量:存储单个元素的内存空间。...数组名和索引: 索引的编号从0开始,属于数值索引 索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash4.0 版本之后开始支持 bash 的数组支持稀疏格式(索引不连续) (2) 声明数组...: Shell 关联数组 Shell 中的关联数组,获取数组索引 (9) 数组脚本示例 范例:生成 10 个随机数保存于数组中,并找出其最大值和最小值 #!
背景 最近处理一个 bug 很有意思,有客户反馈某个配置文件解析失败了,出错的那行的内容就只有一个字母 a。 最开始以为是谁改动了处理的脚本,但要到了问题代码中的脚本,比较发现跟库上是一样的。...又经过一番查找,才发现原来是脚本中的一行 echo 引入的。 问题代码 出问题的那行 bash 脚本是这样, echo 一个字符串到某配置文件中。...echo "[partition]" >> xxx.config glob简介 解决了问题,再回头认识下这个特性。这个叫 glob ,是 bash 的一个特性,可以实现文件名的通配。...'*' '[' 的时候就会触发匹配,自动展开成匹配到的文件列表,这个比正则表达式要弱一些,但胜在简单实用。 大家可能经常用到类似于 ls *.c' 之类的功能,这就是 glob 生效的地方。...这里不再详细列出语法,请参考 man 7 glob 或网上诸多文章,例如阮一峰老师就分享过:命令行通配符教程 有一个要注意的地方就是,这个匹配如果失败,就会原样输出,这也是上文的例子在多数情况下能工作的原因
如果某个字符串不够指定长度,会在头部或尾部补全 (8) trimStart()、trimEnd():消除字符串头、尾部的空格 (9) matchAll(): 返回一个正则表达式在当前字符串的所有匹配 5...函数的扩展 ES6 引入 rest 参数(形式为...变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。...它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。...()),然后对返回值组成的数组执行flat()方法。...(4)返回值是 Promise。 18. Class 与 ES5 一样,在“类”的内部可以使用get和set关键字,对某个属性设置存值函数和取值函数,拦截该属性的存取行为。
replacement, mixed subject [, int limit]) pattern: 正则表达式匹配的内容 - replacement: 用于替换的字符串或字符串数组。...array_filter array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] ) 依次将 array 数组中的每个值传递到...callback 函数 如果 callback 函数返回 true,则 array 数组的当前值会被包含在返回的结果数组中 数组的键名保留不变。...> (10)usort 使用自定义函数对数组进行排序 bool usort ( array &$array , callable $value_compare_func ) 本函数将用用户自定义的比较函数对一个数组中的值进行排序...cat$b /etc/passwd (4)连接符 cat /etc/pass'w'd (5)通配符 Bash标准通配符(也称为通配符模式)被各种命令行程序用于处理多个文件 可以通过man 7 glob
领取专属 10元无门槛券
手把手带您无忧上云