模式匹配

C# 8.0 的新特性

大兔子大兔子 提交于 2019-11-30 11:52:44
目录 可空引用类型(Nullable reference types) 异步流(Async streams) 范围和下标类型(Ranges and indices) 模式匹配表达式(Switch expressions ) Switch表达式 Property patterns Positional patterns 非空判断 Tuple patterns 递归模式语句(recursive patterns) 使用VS2019体检C#8.0新功能: 编辑.csproj文件,添加如下代码 <PropertyGroup> <LangVersion>preview</LangVersion> </PropertyGroup> 回到顶部 可空引用类型(Nullable reference types) 引用类型将会区分是否可空,可以从根源上解决 NullReferenceException。 #nullable enable void M(string? s) { Console.WriteLine(s.Length); // 产生警告:可能为 null if (s != null) { Console.WriteLine(s.Length); // Ok } } #nullable disable 回到顶部 异步流(Async streams) 考虑到大部分 Api

路由策略

≯℡__Kan透↙ 提交于 2019-11-30 11:05:49
路由策略:操作对象是路由信息,主要用于两个方面:(1)对路由信息进行过滤。(2)修改路由属性 什么是路由策略 路由策略不是一个特定的技术,也不是一个特定的特性 PBR:操作对象是数据包,策略路由是通过用户制定的策略进行转发,且该策略优于路由表的转发。(在路由表已经产生的情况下,不按照路由表进行转发,而是根据需要,依照某种策略改变数据包转发路径 路由策略包括:1.router-policy 的组成 首先通过ACL或者IP-Prefix 工具来匹配流量目标流量  l 节点号 一个Route-Policy可以由多个节点(node)构成。路由匹配Route-Policy时遵循以下两个规则: 1)顺序匹配:在匹配过程中,系统按节点号从小到大的顺序依次检查各个表项,因此在指定节点号时,要注意符合期望的匹配顺序。 2)唯一匹配: Route-Policy各节点号之间是“或”的关系 ,只要通过一个节点的匹配,就认为通过该过滤器,不再进行其它节点的匹配。 l 匹配模式 节点的匹配模式有两种:permit和deny。 1)permit指定节点的匹配模式为允许。当路由项通过该节点的过滤后,将执行该节点的apply子句,不进入下一个节点;如果路由项没有通过该节点过滤,将进入下一个节点继续匹配。 2)deny指定节点的匹配模式为拒绝。这时apply子句不会被执行。当路由项满足该节点的所有if

Django基础二之URL路由系统

北城余情 提交于 2019-11-30 10:29:30
一 URL配置   Django 1.11版本 URLConf官方文档   URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表。你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。   基本格式   from django.conf.urls import url #循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数执行,就不再往下循环了,并给函数传一个参数request,和wsgiref的environ类似,就是请求信息的所有内容 urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ]   注意:   Django 2.0版本中的路由系统已经替换成下面的写法,但是django2.0是向下兼容1.x版本的语法的( 官方文档 ): from django.urls import path urlpatterns = [ path('articles/2003/', views.special_case_2003), path('articles/<int:year>/', views.year_archive), path('articles/<int:year>/<int:month>/', views

PCRE-正则库及用法

风格不统一 提交于 2019-11-30 10:12:23
摘自博客园:https://www.cnblogs.com/LiuYanYGZ/p/5903946.html 在C语言中利用PCRE实现正则表达式 1. PCRE简介   PCRE(Perl Compatible Regular Expressions即:perl语言兼容正则表达式)是一个用C语言编写的正则表达式函数库,由菲利普.海泽(Philip Hazel)编写。PCRE是一个轻量级的函数库,比Boost之中的正则表达式库小得多。PCRE十分易用,同时功能也很强大,性能超过了POSIX正 则表达式库和一些经典的正则表达式库 [1] 。 和Boost正则表达式库的比较显示 [2] ,双方的性能相差无几,PCRE在匹配简单字符串时更快,Boost则在匹配较长字符串时胜出---但两者差距很小,考虑到PCRE的大小和易用性,我们可以认为PCRE更值得考虑。 PCRE被广泛使用在许多开源软件之中,最著名的莫过于Apache HTTP服务器和PHP脚本语言、R脚本语言,此外,正如从其名字所能看到的,PCRE也是perl语言的缺省正则库。 PCRE是用C语言实现的,其C++实现版本是PCRE++。 2. 正则表达式定义   一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板

正则表达式

一个人想着一个人 提交于 2019-11-30 07:23:42
30、正则表达式 是一个描述字符模式的对象 ① 正则表达式对象的创建(JavaScript的用法) 构造函数 第一个参数包括正则表达式的主体部分,即正则表达式直接量中两条斜线之间的 文本,第二个参数指定正则表达式的修饰符。只能传入g ,i,m或者其组合,可以省略 var pattern =new RegExp("正则表达式","修饰符") var pattern =new RegExp("hello","ig"); 正则表达式字面量 var pattern = /正则表达式/修饰符; var pattern = /hello/ig; 修饰符 i ignore case 不区分大小写 g global 全局 m multiline 多行 ② 原型属性 RegExp.prototype.global 布尔值,表明这个正则表达式是否带有修饰符g console.log(pattern.global); //true RegExp.prototype.ignoreCase 布尔值,表明这个正则表达式是否带有修饰符i console.log(pattern.ignoreCase ); //true RegExp.prototype.multiline 布尔值,表明这个正则表达式是否带有修饰符m console.log(pattern.multiline ); //false RegExp

Flink cep的初步使用

☆樱花仙子☆ 提交于 2019-11-30 07:01:36
一、CEP是什么 在应用系统中,总会发生这样或那样的事件,有些事件是用户触发的,有些事件是系统触发的,有些可能是第三方触发的,但它们都可以被看做系统中可观察的状态改变,例如用户登陆应用失败、用户下了一笔订单或RFID传感器回报的消息。应对状态改变的策略可以分为两类,一类是简单事件处理(Simple event processing),一般简单事件处理会有两个步骤,过滤和路由,决定是否要处理,由谁处理,另一类是复杂事件处理(Complex event processing),复杂事件处理本身也会处理单一的事件,但其典型特质是需要对多个事件组成的是事件流进行检测分析并响应。 在维基百科中也对CEP做了定义,“CEP是一种事件处理模式,它从若干源中获取事件,并侦测复杂环境的事件或模式,CEP的目的是确认一些有意义的事件(比如某种威胁或某种机会),并尽快对其作出响应”,可见CEP的主要特点包括:复杂性,需要在多源的事件流中进行检测;低延迟,秒级或毫秒级的响应,比如应对威胁;高吞吐,需要迅速对大量或者超大量事件流作出响应。 以往的CEP框架往往处理大量收集到的事件,不能处理正在收集的事件,这时,Flink来了。 二、Flink CEP Flink作为目前大数据领域实时计算的主流计算框架,天然支持低延迟、高吞吐等特性,再加上Flink中的窗口模型和状态模型,更是对CEP提供了非常强大的支撑

js正则表达式

▼魔方 西西 提交于 2019-11-29 23:59:20
\ 做为转意,即通常在"“后面的字符不按原来意义解释,如/b/匹配字符"b”,当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。 -或- 对正则表达式功能字符的还原,如" "匹配它前面元字符0次或多次,/a /将匹配a,aa,aaa,加了"“后,/a*/将只匹配"a*”。 ^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a" $ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A" 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa 匹配前面元字符1次或多次,/ba+/将匹配ba,baa,baaa ? 匹配前面元字符0次或1次,/ba?/将匹配b,ba (x) 匹配x保存x在名为$1…$9的变量中 x|y 匹配x或y {n} 精确匹配n次 {n,} 匹配n次以上 {n,m} 匹配n-m次 [xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符) [^xyz] 不匹配这个集合中的任何一个字符 [\b] 匹配一个退格符 \b 匹配一个单词的边界 \B 匹配一个单词的非边界 \cX 这儿,X是一个控制符,/\cM/匹配Ctrl-M \d 匹配一个字数字符,/\d/ = /[0-9]/ \D 匹配一个非字数字符,/\D/ = /[^0-9]/ \n 匹配一个换行符 \r 匹配一个回车符

使用Spring进行面向切面编程(AOP)

↘锁芯ラ 提交于 2019-11-29 22:51:20
转载于 http://www.blogjava.net/supercrsky/articles/174368.html 文章太长,写的很好,没看完,转过来慢慢理解,品味 简介 面向切面编程 ( AOP )提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程(OOP)的不足。 除了类(classes)以外,AOP提供了 切面 。切面对关注点进行模块化,例如横切多个类型和对象的事务管理。 (这些关注点术语通常称作 横切(crosscutting) 关注点。) Spring的一个关键的组件就是 AOP框架 。 尽管如此,Spring IoC容器并不依赖于AOP,这意味着你可以自由选择是否使用AOP,AOP提供强大的中间件解决方案,这使得Spring IoC容器更加完善。 Spring 2.0 AOP Spring 2.0 引入了一种更加简单并且更强大的方式来自定义切面,用户可以选择使用基于模式(schema-based)的方式或者使用@AspectJ注解。 对于新的应用程序,如果用户使用Java 5开发,我们推荐用户使用@AspectJ风格,否则可以使用基于模式的风格。 这两种风格都完全支持通知(Advice)类型和AspectJ的切入点语言,虽然实际上仍然使用Spring AOP进行织入(Weaving)。 本章主要讨论Spring 2.0对基于模式和基于

Django框架-路由层

大兔子大兔子 提交于 2019-11-29 22:29:10
Django框架-路由层 一、URL配置(URLconf) 1、基本格式 from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] 2、参数说明 正则表达式:一个正则表达式字符串 views视图函数:一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串 参数:可选的要传递给视图函数的默认参数(字典形式) 别名:一个可选的name参数 二、关于正则表达式(来自官方文档) from django.conf.urls import url from . import views urlpatterns = [ url(r'^articles/2003/$', views.special_case_2003), url(r'^articles/([0-9]{4})/$', views.year_archive), url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive), url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail), ] 注意事项: urlpatterns中的元素按照书写顺序从上往下逐一匹配正则表达式

sed

淺唱寂寞╮ 提交于 2019-11-29 21:10:59
sed 1 # 先读取资料、存入模式空间、对其进行编辑、再输出、再用下一行替换模式空间内容 2 # 调试工具sedsed (参数 -d) http://aurelio.net/sedsed/sedsed-1.0 3 4 -n # 输出由编辑指令控制(取消默认的输出,必须与编辑指令一起配合) 5 -i # 直接对文件操作 6 -e # 多重编辑 7 -r # 正则可不转移特殊字符 8 9 b # 跳过匹配的行 10 p # 打印 11 d # 删除 12 s # 替换 13 g # 配合s全部替换 14 i # 行前插入 15 a # 行后插入 16 r # 读 17 y # 转换 18 q # 退出 19 20 & # 代表查找的串内容 21 * # 任意多个 前驱字符(前导符) 22 ? # 0或1个 最小匹配 没加-r参数需转义 \? 23 $ # 最后一行 24 .* # 匹配任意多个字符 25 \(a\) # 保存a作为标签1(\1) 模式空间 1 # 模式空间(两行两行处理) 模式匹配的范围,一般而言,模式空间是输入文本中某一行,但是可以通过使用N函数把多于一行读入模式空间 2 # 暂存空间里默认存储一个空行 3 n # 读入下一行(覆盖上一行) 4 h # 把模式空间里的行拷贝到暂存空间 5 H # 把模式空间里的行追加到暂存空间 6 g #