模式匹配

Socket阻塞模式和非阻塞模式的区别

牧云@^-^@ 提交于 2020-01-04 05:00:39
简单点说: 阻塞就是干不完不准回来, 非组赛就是你先干,我现看看有其他事没有,完了告诉我一声 我们拿最常用的send和recv两个函数来说吧... 比如你调用send函数发送一定的Byte,在系统内部send做的工作其实只是把数据传输(Copy)到TCP/IP协议栈的输出缓冲区,它执行成功并不代表数据已经成功的发送出去了,如果TCP/IP协议栈没有足够的可用缓冲区来保存你Copy过来的数据的话...这时候就体现出阻塞和非阻塞的不同之处了:对于阻塞模式的socket send函数将不返回直到系统缓冲区有足够的空间把你要发送的数据Copy过去以后才返回,而对于非阻塞的socket来说send会立即返回 WSAEWOULDDBLOCK告诉调用者说:"发送操作被阻塞了!!!你想办法处理吧..." 对于recv函数,同样道理,该函数的内部工作机制其实是在等待TCP/IP协议栈的接收缓冲区通知它说:嗨,你的数据来了.对于阻塞模式的socket 来说如果TCP/IP协议栈的接收缓冲区没有通知一个结果给它它就一直不返回:耗费着系统资源....对于非阻塞模式的socket该函数会马上返回,然后告诉你:WSAEWOULDDBLOCK---"现在没有数据,回头在来看看" 扩展: 在进行网络编程时,我们常常见到同步、异步、阻塞和非阻塞四种调用方式。这些方式彼此概念并不好理解。下面是我对这些术语的理解。

《Linux就该这么学》培训笔记_ch08_iptables与firewall防火墙

这一生的挚爱 提交于 2020-01-04 01:58:16
《Linux就该这么学》培训笔记_ch08_iptables与firewall防火墙 文章最后会post上书本的笔记照片。 文章主要内容 : 防火墙管理工具 iptables firewalld 服务的访问控制列表 书本笔记 防火墙管理工具 防火墙作为公网与内网之间的保护屏障,在保障数据的安全性方面起着至关重要的作用。 防火墙策略可以 基于流量的源目地址、端口号、协议、应用 等信息来定制,然后防火墙使用预先定制的策略规则监控出入的流量,若流量与某一条策略规则相匹配,则执行相应的处理,反之则丢弃。 在Linux系统中其实存在多个防火墙管理工具,旨在方便运维人员管理Linux系统中的防火墙策略,只需要配置妥当其中的一个就足够。 iptables与firewalld只是用来定义防火墙策略的防火墙管理工具,并不是真正的防火墙。或者说,它们只是一种服务。iptables服务会把配置好的防火墙策略交由内核层面的netfilter网络过滤器来处理,而firewalld服务则是把配置好的防火墙策略交由内核层面的nftables包过滤框架来处理。 iptables 在早期的Linux系统中(RHEL7之前),默认使用的是iptables防火墙管理服务来配置防火墙。尽管新型的firewalld防火墙管理服务已经被投入使用多年,但是大量的企业在生产环境中依然出于各种原因而继续使用iptables

正则表达式 贪婪与非贪婪

喜你入骨 提交于 2020-01-03 10:11:04
贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配, 而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。 属于贪婪模式的量词,也叫做匹配优先量词,包括: “{m,n}”、“{m,}”、“?”、“*”和“+”。 在匹配优先量词后加上“?”,即变成属于非贪婪模式的量词,也叫做忽略优先量词,包括: “{m,n}?”、“{m,}?”、“??”、“*?”和“+?”。 默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。 来源: https://www.cnblogs.com/wander-clouds/p/8482022.html

Django中请求的生命周期

人走茶凉 提交于 2020-01-03 00:06:28
Django中请求的生命周期 1. 概述 首先我们知道HTTP请求及服务端响应中传输的所有数据都是字符串. 在Django中,当我们访问一个的url时,会通过路由匹配进入相应的html网页中. Django的请求生命周期是指当用户在浏览器上输入url到用户看到网页的这个时间段内,Django后台所发生的事情 而Django的生命周期内到底发生了什么呢?? 1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端 请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post,体现在url之中. 2. url经过Django中的wsgi,再经过Django的中间件,最后url到过路由映射表,在路由中一条一条进行匹配, 一旦其中一条匹配成功就执行对应的视图函数,后面的路由就不再继续匹配了. 3. 视图函数根据客户端的请求查询相应的数据.返回给Django,然后Django把客户端想要的数据做为一个字符串返回给客户端. 4. 客户端浏览器接收到返回的数据,经过渲染后显示给用户. 视图函数根据客户端的请求查询相应的数据后.如果同时有多个客户端同时发送不同的url到服务端请求数据 服务端查询到数据后,怎么知道要把哪些数据返回给哪个客户端呢?? 因此客户端发到服务端的url中还必须要包含所要请求的数据信息等内容. 例如, http://www.aaa

django请求的生命周期

谁说胖子不能爱 提交于 2020-01-03 00:06:15
1. 概述 首先我们知道HTTP请求及服务端响应中传输的所有数据都是字符串. 在Django中,当我们访问一个的url时,会通过路由匹配进入相应的html网页中. Django的请求生命周期是指当用户在浏览器上输入url到用户看到网页的这个时间段内,Django后台所发生的事情 而Django的生命周期内到底发生了什么呢?? 1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端 请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post,体现在url之中. 2. url经过Django中的wsgi,再经过Django的中间件,最后url到过路由映射表,在路由中一条一条进行匹配, 一旦其中一条匹配成功就执行对应的视图函数,后面的路由就不再继续匹配了. 3. 视图函数根据客户端的请求查询相应的数据.返回给Django,然后Django把客户端想要的数据做为一个字符串返回给客户端. 4. 客户端浏览器接收到返回的数据,经过渲染后显示给用户. 视图函数根据客户端的请求查询相应的数据后.如果同时有多个客户端同时发送不同的url到服务端请求数据 服务端查询到数据后,怎么知道要把哪些数据返回给哪个客户端呢?? 因此客户端发到服务端的url中还必须要包含所要请求的数据信息等内容. 例如, http://www.aaa.com/index/?nid

Django基本配置与URLconf

我是研究僧i 提交于 2020-01-02 01:07:02
what's the Django   python的框架主要有:Django、Flask、Tornado   Django是一个开放源代码的Web应用框架,由Python写成。它的主要特点是大而全,我们需要用到的关于Web框架的内容他几乎都包括,我们只要稍作改动就可以完成一个比较复杂的项目。 Django最具代表性的就是它的MTV模型,分别代表: models: 处理与数据库相关的操作 template :模板语法--->将变量(数据库数据)如何巧妙嵌入html页面中 views: 逻辑处理,主要用于后端的程序的编写并将需要展现的数据发送到template 此外,Django还有一个 urls分发器 ,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template,即起到路径与视图函数的映射关系的作用。 Django的基本生命周期如下图所示 Django基本命令 一、安装Django pip3 install django    二、创建Django项目 django namage.py startproject 项目名 #这里项目名取mysite,创建完后会得到对应文件夹 #- mysite:项目名称 #- manage.py: 启动文件,控制项目命令 #- mysite : 全局文件 #- __init__.py #-

Linux三剑客之grep 与 egrep

旧时模样 提交于 2020-01-01 22:52:38
grep: Linux上文本处理三剑客 1 grep:文本过滤(模式:pattern)工具; *(grep, egrep, fgrep) 2 sed:stream editor,文本编辑工具; 3 awk:Linux上的实现gawk,文本报告生成器; grep: Global search REgular expression and Print out the line. 作用: 文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行; 模式:由正则表达式字符及文本字符所编写的过滤条件; REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符不表示字符字面意义,而表示控制或通配的功能; 分两类: 基本正则表达式:BRE 扩展正则表达式:ERE grep -E, egrep 正则表达式引擎 1 选项: 2 --color=auto: 对匹配到的文本着色显示; 3 -v: 显示不能够被pattern匹配到的行; 4 -i: 忽略字符大小写; 5 -o: 仅显示匹配到的字符串; 6 -q: 静默模式,不输出任何信息; 7 -A #:after, 后#行 8 -B #: before, 前#行 9 -C #:context, 前后各#行 10 11 -E:使用ERE; 基本正则表达式元字符: 字符匹配: .: 匹配任意单个字符; []:

linux三剑客之grep

倾然丶 夕夏残阳落幕 提交于 2020-01-01 22:52:11
     linux 基础三剑客之 grep 1、 grep 命令 基本介绍   grep 命令是文本本过滤工具,是基于一个模式匹配文件的每一行, grep 分类: egrep 个 fgrep 。   grep 英文名: Global search Regular expression and Print out the line   grep 命令的作用:文本所搜工具。根据用户指定的模式对目标文件逐行进行匹配检查,并且打印匹配的行   模式:由正则表达式字符串及文本字符所编写的过滤条件   正则表达式:英文名 regular expression ,解释:由一类特殊字符及文本字符所编写的模式,其中有些字符不表示字符字面意义,而表示控制或者通配的功能   正则表达式分类     基本正则表达式: basic regular expression ,简写 BRE     扩展正则表达式: extend regular expression ,简写 ERE     注意: grep 默认支持的是基本正则表达式,但是 grep 命令可以是用选项 -E 来使用扩展正则表达式。 egrep 命令默认支持扩展正则表达式   正则表达式引擎:检查一个模式是否匹配一段文本信息的程序,不同的编程语言使用的正则表达式引擎可能不同。引擎不同,检查字符匹配的算法不同。   grep

Linux--文本处理三剑客之grep

家住魔仙堡 提交于 2020-01-01 22:51:58
grep概念解释 grep:文本过滤工具,其作用顾名思义是文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到 的行。而模式则是由正则表达式字符及文本字符所编写的过滤条件。 grep有三种命令形式:grep、egrep(支持拓展正则表达式搜索)、fgrep(不支持正则表达式搜索)。 使用方法介绍 1.grep的使用方法grep grep 命令选项[options] 条件[pattern] 文件名[filename] 当我们仅需要查看简单一些的文件内容时,可以不使用命令选项,如: 1 [root@localhost(mei) app]# grep root /etc/passwd 2 root:x:0:0:root:/root:/bin/bash 3 operator:x:11:0:operator:/root:/sbin/nologin 4 [root@localhost(mei) app]# grep "$user" /etc/passwd #$USER表示当前用户 5 root:x:0:0:root:/root:/bin/bash 6 bin:x:1:1:bin:/bin:/sbin/nologin 7 daemon:x:2:2:daemon:/sbin:/sbin/nologi grep命令选项如下: --color=auto

Linux之grep及正则表达式

人走茶凉 提交于 2020-01-01 22:48:41
grep简介   grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。通常grep有三种版本grep、egrep(等同于grep -E)和fgrep。egrep为扩展的grep,fgrep则为快速grep(固定的字符串来对文本进行搜索,不支持正则表达式的引用但是查询极为快速)。grep是Linux文本处理三剑客之一。 grep使用方式   使用方式:grep [OPTIONS] PATTERN [FILE...]   grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]   常用选项:   --color=auto:对匹配到的文本着色后进行高亮显示;    -i:忽略字符的大小写   -o:仅显示匹配到的字符串   -v:显示不能被模式匹配到的行   -E:支持使用扩展的正则表达式   -q:静默模式,即不输出任何信息   -A #:显示被模式匹配的行及其后#行   -B #:显示被模式匹配的行及其前#行   -C #:显示被模式匹配的行及其前后各#行    注 :使用grep匹配时需使用双引号引起来(单引号为强引用),防止被系统误认为参数或者特殊命令而报错。 扩展grep使用方式   使用方式: egrep [OPTIONS] PATTERN [FILE...]   grep -E [OPTIONS]