精华内容
下载资源
问答
  • 原理和概念有什么区别
    2018-12-27 22:25:25

    CountDownLatch和Cyclicbarrier概念、区别及原理


    1、概念

      CountDownLatch:具有计数器的功能,等待其他线程执行完毕,主线程在继续执行,用于监听某些初始化操作,并且线程进行阻塞,等初始化执行完毕后,通知主线程继续工作执行。值得注意的是CountDownLatch计数的次数一定要与构造器传入的数字一致,比如构造器传入的是3,则countDown()一定要执行3次,否则线程将一直阻塞。CountDownLatch通常用来控制线程等待,它可以让线程等待倒计时结束,再开始执行。
      CyclicBrrier:翻译过来就是循环栅栏的意思,其作用就是多线程的进行阻塞,等待某一个临界值条件满足后,同时执行!假设有一个场景:每个线程代表一个跑步运动员,当运动员都准备好后,才一起出发,只要有一个人没有准备好,大家都等待!

    2、区别

      CountDownLatch: 一个线程(或者多个), 等待另外N个线程完成某个事情之后才能执行。
      CyclicBrrier: N个线程相互等待,任何一个线程完成之前,所有的线程都必须等待。


    3、Java 8 下源码分析
    3.1 CountDownLatch源码

    coutDownLatch 底层实现了QAS,具体源码后面再分析。

    3.2 CyclicBrrier源码

    转载于:https://blog.51cto.com/3265857/2336194

    更多相关内容
  • Ceph是一个分布式存储系统,提供对象,块文件存储,是一个免费开源软件的存储解决方案,可以部署于普通的x86兼容服务器上,可用于解决统一存储的io问题。Ceph诞生于2004年,最早是SageWeil一项关于存储系统的PhD...
  • 如图所示:

    如图所示:在这里插入图片描述

    展开全文
  • 编译原理基本概念和术语

    千次阅读 2020-03-26 21:00:25
    以英语为例,英语字母表就是各种字母、数字、标点符号的集合…那么到了编程,字母表就可能是字母、数字、各种专用符号保留字了。 1.2 字母表上的运算: 乘积 n次幂 正闭包 克林闭包 二、符号串/串 2.1 符号串...

    一、字母表(有穷符号集合)

    1.1 字母表定义

    字母表也即符号集,用表示,它是一个包含各种符号有穷非空集合

    以汉语为例,汉语字母表就是各种汉字、数字、标点符号的集合;以英语为例,英语字母表就是各种字母、数字、标点符号的集合…那么到了编程,字母表就可能是字母、数字、各种专用符号和保留字了。

    1.2 字母表上的运算:
    1. 乘积
    2. n次幂
    3. 正闭包
    4. 克林闭包
      在这里插入图片描述

    二、符号串/串

    2.1 符号串相关定义:

    符号串是对于字母表来说的一个概念,字母表的符号串指的就是由字母表中各个字符组成的一个有穷序列。

    注意这里的“有穷”,指的是符号串本身是由有穷个符号组成但是符号串的个数是无穷多的(组合方式不同)

    以字母表 ∑={0,1} 为例,它的符号串就有:0,1,00,01,10,11,000 等等。

    符号串的长度指的是符号串符号的个数,以 m = 000 为例,|m|= 3。

    空符号串 ε 长度为 0,表示不包含任何符号,类似于编程中的空字符串 “”。所以有 εm = mε= m。

    以 m = abc 为例,它的头是 ε,a,ab,abc;它的尾是 ε,c,bc,abc。而它的固有头不考虑末尾符号 c,固有尾不考虑首部符号 a。

    2.2 符号串的运算:连接、方幂
    1. 符号串的连接:连接就是两个字符串顺序拼接,比如 x = abc,y = def,那么 xy = abcdef。
    2. 符号串的方幂:如果一个符号串由多个重复符号构成,如何方便地表示它呢?

    比如 y = xxxx…xxxx(n 个 x),那么就可以写成 y = x^n,此时 y 就是 x 的方幂。这点和数学是一样的。不过要注意,x^0 ≠ 1 = ε

    串s的n次幂:将n个s连接起来


    三、闭包

    以字母表 ∑ = {a,b} 为例,任何由它的符号串作为构成元素的集合,都可以称作字母表的符号串集合。比如说 {ab},{abab,ababab} 等。

    两个符号串集合的乘积定义为 AB = {xy| x∈A且y∈b},其实就是笛卡尔积

    一般的字符串集合可能并不能囊括一个字母表的所有符号串,但是有一种集合却能包含所有的符号串,这种特殊的集合称为闭包,记作 ∑*。

    *其实就是全选的意思(联想 CSS 中的通配选择符就好理解了)。

    ∑* = {ε,a,b,ab,ab,ba,aba,aab......} = ∑^0 ∪ ∑^1 ∪ ∑^2 ∪......∪ ∑^n

    要注意的是,闭包也包含了空符号串

    将闭包中的空符号串去掉,就成为了正闭包,也即 ∑+
    显然:∑*= ∑^0 ∪ ∑+,∑+ = ∑∑* = ∑*∑。


    四、文法

    4.1 文法在语言体系中的位置

    语言包括语法和语义两个方面,但是语法和语义都是比较抽象的东西,所以我们需要借助一些工具来阐述它们。以语法来说,文法就是阐述它的一个工具
    在这里插入图片描述

    4.2 文法的形式定义

    文法是描述语言语法结构的形式规则。它的形式化定义是一个四元组,即 :
    在这里插入图片描述
    下面我们先给出一个自然语言的例子,然后借此来解释四元组的各个成分都是什么。

    <句子><主语> <谓语>
    
    <主语><代词> | <名词>
    
    <谓语><动词>
    
    <代词> → 你 ||<名词> → 张三 | 教师 | 大学生
    
    <动词> → 教书 | 学习
    
    (1)VT

    VT 指的是终结符集合终结符即 terminal symbol,它是文法所定义的语言的最基本符号,这意味着一个终结符不可再细分(注意“终结”这个词)。在编程语言中,终结符其实就是之前提到的 token,比如保留字、运算符、界符等这些最最基本的符号

    以上面为例,VT ={ 你,我,他,张三,教师,大学生,教书,学习 }。

    终结符一般用小写字母表示

    终结符符号约定:

    1. 字母表中排在前面的小写字母:如a,b,c
    2. 运算符
    3. 标点符号
    4. 数字
    5. 粗体字符串:如id,if
    (2)VN

    VN 指的是非终结符集合非终结符即 nonterminal symbol,它是用来表示语法成分的符号,有时候也称为“语法变量”。在编程语言中,我们可以说表达式或者赋值语句就是一个非终结符,因为它可以继续细分为多个 token。

    以上面为例,VN ={ <句子>,<主语>,<谓语>,<代词>,<名词>,<动词> }。
    非终结符的“非终结”,就是说“还没有到尽头”,还可以继续拆分,一般用 <> 括起来。

    非终结符一般用大写字母表示

    终结符和非终结符统称为文法符号
    VT∪VN :文法符号集

    非终结符符号约定:

    1. 字母表中排在前面的大写字母:如A,B,C等
    2. 字母S
    3. 小写,斜体的名字:如expr,stmt等
    4. 代表程序构造的大写字母:如E(表达式),T(项),F(因子)等
    (3)P:

    P 即 production,指的是产生式集合。终结符和非终结符的转换依靠的就是产生式(或者说生成式,推导规则)。产生式形如 a → β (或者 a : : = β ,这种表示方法即巴科斯范式 ),意思是将 a 定义为 β。a 称为产生式左部,它是非终结符集合的一个元素;而 β 称为产生式右部,它是终结符和非终结符并集的一个元素。

    (4)S:

    S 即 start symbol,指的是开始符号(识别符号)。它是最开始的那条产生式的左部,一切的推导都是从它这里开始进行的,可以认为它就是最大的那个成分。所以也注定了 S 必须在 P 中至少作为某一条产生式的左部(不然无从推导)。

    以上面为例,S = <句子>。

    4.3 文法更简洁的形式化定义

    假如现在有文法 G =({S,A,B},{0,1},P,S),

    其中,P = { S → 0A,S → 1B,A → 1B,B → 1 }。

    是否有更简便的方法来表示它呢?事实上,这里仅从产生式集合 P 来看,完全可以在不引起歧义的情况下推断出终结符号集,非终结符号集以及开始符号。这意味着我们可以将这三者省略仅用产生式集合表达文法本身,也即:

    G:
    S → 0A
    S → 1B
    A → 1B
    B → 1
    B → 0
    

    更进一步地,我们发现部分产生式的左部都是一样的,所以可以继续简写为:

    G:
    S → 0A | 1B
    A → 1B
    B → 1 | 0
    

    此时,0A 或者 1B 称为 S 的候选式(candidate),1 或者 0 称为 B 的候选式。

    4.4 推导

    (1)直接推导/替换/重写:

    用产生式的右部替换产生式的左部。
    所有的产生式实际上都是一个直接推导。

    (2)推导:

    推导指的是从文法的开始符号出发,反复连续地使用产生式,对非终结符施行替换和展开,最终得到一个仅由终结符构成的符号串,推导过程的每一步都是一个直接推导。

    还是以上面的文法为例,那么就有 S ⇒ 0A ⇒ 01B ⇒ 011,这个序列就是从 S 到 011 的一个推导,或者说 S 可以推导出 011。

    序列可以简写为 S  +011,表示经过一步或者多步推导,
    而  S  *011 表示经过 0 步或者多步推导。
    所以,S  *011 要么是 S = 011,要么是 S  +011
    (3)最左/最右推导:

    推导的过程并不是唯一的。对于任何一步 α ⇒ β,如果都是对 α 中的最左非终结符进行替换,那么就说最左推导,反之就是最右推导。

    4.5 句型、句子、语言
    1. 句型:如果 S *⇒ a,开始符号 S 可以推导得到某个符号串,那么这个符号串 a 就称为句型

    一个句型中既可包含终结符,又可包含非终结符,也可是空串

    以上面文法为例,0A ,01B,011 … 都是句型

    句型的短语和直接短语
    在这里插入图片描述
    2. 句子:在推导之初,句型可能既包含终结符也包含非终结符,但最终肯定只剩下终结符构成的符号串,此时这个符号串就称为句子

    句子是不包含非终结符的句型

    以上面文法为例,011 就是句子。

    1. 语言:文法产生的句子的全体就构成了语言,记作L(G)

    以上面文法为例,L(G) = { 011,11 }。


    五、语法分析树与文法的二义性

    我们可以借助语法分析树(这里的语法分析树是具体语法树,即 parse tree,不是抽象语法树)这个结构来描述句型的推导

    比如给定文法 G:G = ( {S,A},{a,b},P,S ),其中 P ={ S → aAS,A → SbA,A → SS,S → a,A → ba }
    可以这样推导出句子 aabbaa:S ⇒ aAS ⇒ aSbAS ⇒ aabAS ⇒ aabbaS ⇒ aabbaa

    那么如何用分析树表达这个句子呢?如图所示:
    在这里插入图片描述
    用根节点代表开始符号,随着推导的进行,当某个非终结符被它的候选式所替换时,这个非终结符的相应结点就会产生下一代子结点,以此类推。

    有时候,对于某个句子,由于它的推导过程不唯一,所以会导致它的分析树也不唯一。

    之前的例子中,我们给定了文法 G:E → E + E | E * E | (E) | i,由这个文法推导出句子 (i * i + i),实际上有两种方式:
    E ⇒ (E) ⇒ ( E + E ) ⇒ ( E + i ) ⇒ ( E * E + i ) ⇒ ( E * i + i ) ⇒ ( i * i + i )
    E ⇒ (E) ⇒ (E * E ) ⇒ ( i * E ) ⇒ ( i * E + E) ⇒ ( i * i + E) ⇒ ( i * i + i )

    对应地有两种分析树:
    在这里插入图片描述

    由于这个文法存在着某个句子对应着两棵不同的分析树,所以这个文法是二义(歧义的。

    显然,程序语言不能出现歧义。消除歧义的方法之一是改写语法,但这种改写非常困难;另一种方法就是引入优先级 ,利用符号的优先级来选择需要的推导方式。

    作为描述程序语言上下文无关文法,我们对它还有一些限制:

    1. 文法中不包含形如 P → P 的产生式
    2. 每个非终结符一定可以被用到,或者本身被 S 推导得到,或者本身推导得到其它终结符串。

    六、文法类型

    乔姆斯基把文法划分为四种类型,这四种类型层层增强,越到后面限制越大

    (1) 0 型文法(短语文法/无限制文法)

    0 型文法也叫短语文法。设 G = { VN, VT , P , S },如果它的每个产生式 α→β 都满足:

    “α∈(VN∪VT)* 且至少含有一个非终结符,而 β∈(VN∪VT)*

    其中,VN∪VT 代表的是终结符合集和非终结符号集的并集,注意这同样是一个字母集,所以外面加上星号,就成为我们开篇所说的字母集的闭包。也就是说,产生式的左部或者右部,必须是由终结符和非终结符构成的符号串。

    (2) 1 型文法(上下文有关文法)

    1 型文法也叫上下文有关文法在 0 型文法的基础上加以限制,规定对于每一个 α→β,都必须满足 |α| <= |β|。也就是说,产生式左部符号串长度必须小于等于右部符号串长度

    这里要注意一个特例就是:α → ε,虽然左部长度一定大于右部长度,但它仍然符合 1 型文法。

    (3) 2 型文法(上下文无关文法)

    2 型文法也叫上下文无关文法。在 1 型文法的基础上加以限制,规定对于每一个 α→β,都必须满足 α 是一个非终结符。也就是说,产生式左部必须得是一个非终结符。

    (4) 3 型文法(正则文法)

    3 型文法也叫正规文法。在 2 型文法的基础上加以限制,规定对于每一个 α→β,要么必须满足 A→ α | αB(右线性),要么必须满足 A→ α | Bα(左线性)。这里的 AB 代表非终极符号。

    在这里插入图片描述


    参考文章:

    1. 一篇微信公众号的文章
    2. 哈工大编译原理课的PPT
    展开全文
  • Cookie概念  在浏览某些 网站时,这些网站会把一些数据存在客户端,用于使用网站等跟踪用户,实现用户自定义功能. 是否设置过期时间:  如果不设置 过期时间,则表示这个 Cookie生命周期为 浏览器会话期间 , 只要关闭...
  • 主要介绍了C/SB/S两种架构的概念区别和联系,本位还同时讲解了主流的Web程序应用平台、Web工作原理等内容,需要的朋友可以参考下
  • 引言 近年来,随着Internet的迅猛发展,连入Internet的主机数量成倍增长。由于最初设计Internet的时候并没有考虑到需要支持这么大的规模,因而Internet使用的Ipv4协议中IP地址的长度选择了32位,它可以使IP包的格式...
  • 爬虫基本原理和概念

    千次阅读 2019-01-17 19:59:05
    Request中包含什么 1.请求方式 2.请求URL(统一资源定位符) 3.请求头(请求的配置信息) 4.请求体 Response中包含什么 1.响应状态 2.响应头 3.响应体 能抓怎样的数据 解析方式 保存数据 爬虫基本流程 ...

    目录

     

    爬虫基本流程

    1.发起请求

    2.获取相应内容

    3.解析内容

    4.保存数据

    Request&Response

    Request中包含什么

    1.请求方式

    2.请求URL(统一资源定位符)

    3.请求头(请求的配置信息)

    4.请求体

    Response中包含什么

    1.响应状态

    2.响应头

    3.响应体

    能抓怎样的数据

    解析方式

    保存数据


    爬虫基本流程

    1.发起请求

    通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待服务器相应

    2.获取相应内容

    若服务器能正常相应,会得到一个Response,response的内容便是所要获取的页面内容,类型可能有HTML,json字符串,二进制数据(图片视频)等类型

    3.解析内容

    HTML,可以用正则表达式,网页解析库进行解析

    json,直接转为json对象解析

    二进制数据,保存或进一步的处理

    4.保存数据

    可以存为文本,也可以保存至数据库,或者保存特定格式的文件

    Request&Response

    (1)浏览器发送消息给该网址所在的服务器(HTTP Request)

    (2)服务器收到消息后,根据浏览器发送消息的内容,做相应处理,然后把消息回传给服务器(HTTP Responce)

    (3)浏览器收到服务器的Responce信息后,会对信息进行相应处理,然后展示

    Request中包含什么

    1.请求方式

    GET   POST

    HEAD   PUT   DELETE   OPTIONS

     

    GET与POST差别

    GET

    POST

    请求信息

    请求信息在链接中

    请求信息包含在Form Data

    构建请求方式

    输入URL回车直接访问

    通过构造表单点击表单提交

     

    2.请求URL(统一资源定位符)

    如一个网页文档,一张图片,一个视频都可以用URL唯一来确定

    3.请求头(请求的配置信息)

    包含请求时的头部信息

    cookie:保持登录会话

    User-Agent:指定浏览器请求头

    告诉服务器请求的文档类型,携带的cookie,浏览器配置,服务器判断信息是否合法,根据解析结果返回相应的文件内容,爬虫一般加上Request Headers以保证请求正常运行

    4.请求体

    请求时额外携带的数据

    在POST请求方式中的Form Data中

    Response中包含什么

    1.响应状态

    200:正常

    300以上:跳转

    500以上:服务器处理错误

    2.响应头

    内容类型,内容长度,服务器信息,设置cooike等

    3.响应体

    包含请求资源的内容,如网页HTML,图片二进制数据等

    能抓怎样的数据

    网页文本    HTML文档,Json格式文本等

    图片    获取到的是二进制流,将二进制文件保存为图片格式

                with open('文件名','wb') as f:

                    f.write(二进制流)

    视频    同图片为二进制数据

    其他    能请求到的都能获取

    解析方式

    1.直接处理

    2.Json解析

    3.正则表达式

    4.BeautifulSoup

    5.PyQuery

    6.XPath

    保存数据

    1.文本    纯文本,JSon,Xml等

    2.关系型数据库    如MySQL,Oracle,SQL Sever等具有结构化表结构形式存储

    3.非关系型数据库    如MongoDB,Redis等Key-Value形式存储

    4.二进制文件

    展开全文
  • ②、数据库:数据库是长期储存在计算机内、组织的、可共享的大量数据的集合,必要的时候,方便我们查询。 ③、数据库管理系统:数据库管理系统位于用户与操作系统之间的一层数据管理软件,是基础软件,是一个大型...
  • MRPII/ERP 的概念和方法 ;制造企业中常见的问题;What Do MRP , MRPII and ERP Stand for;MRP 可以做什么; 订 货 点 法;Probabilities of Simultaneous Availability;MRP订货点法的主要区别;制造业基本方程 ----MRP...
  • 插补的基本概念、脉冲增量插补与数据采样插补的特点和区别、逐点比较法的基本原理、直线插补圆弧插补
  • LDAP概念和原理介绍

    千次阅读 2020-07-08 10:32:34
    相信对于许多的朋友来说,可能听说过LDAP,但是实际中对LDAP的了解具体的原理可能还比较模糊,今天就从“什么是LDAP”、“LDAP的主要产品”、“LDAP的基本模型”、“LDAP的使用案例”四个方面来做一个介绍。...
  • ES(一):ES基本概念和原理简单介绍

    万次阅读 多人点赞 2019-11-24 18:56:02
    区别于关系型数据库的是,ES是一个非结构化的数据库,每个文档可以不同的字段,并且一个唯一标识。 映射(mapping): mapping是对索引库中的索引字段及其数据类型进行定义,类似于关系型数据库中的表结构。ES...
  • 1. 概念 XSS(Cross Site Scripting):跨域脚本攻击。 2. 原理 不需要你做任何的登录认证,它会通过合法的操作(比如在 url 中输入、在评论框中输入),向你的页面注入脚本(可能是 js、hmtl 代码块等)。 3. 防范 ...
  • 泛型的概念和原理

    千次阅读 2018-07-25 17:19:29
    类、接口方法代码可以同应用于非常广泛的类型,代码与它们可以操作的数据类型不再绑定在一起,同一套代码可以用于多种数据类型,这样,不仅可以服用代码,降低耦合,而且可以提高代码的可读性安全性。...
  • 数据库原理的基本概念

    千次阅读 多人点赞 2020-02-28 18:16:02
    数据库原理这门课已经学了一周多了,基础概念知识比较多,也比较杂,下面整理一下,也算是增加一点记忆。 ** 数据库的四个基本概念 ** 数据(Data):数据是描述事物的符号记录,数字,文字,图像,音频,视频,学生...
  • cache相关概念及工作原理介绍

    千次阅读 2020-03-10 11:31:30
    笔者这篇文章主要从使用者的角度介绍cache的相关概念和工作原理。 一. cache是什么,为什么要用它 关于cache是什么,为什么要用它。我们从这个表格说起。下图是典型的memory大小访问时间 memory类型 典型大小 ...
  • Tree Shaking只支持ES模块的...具体来说,在 webpack 项目中,一个入口文件,相当于一棵树的主干,入口文件很多依赖的模块,相当于树枝。实际情况中,虽然依赖了某个模块,但其实只使用其中的某些功能。通过 tre...
  • 同步异步 在现代操作系统中,并发性,共享性,虚拟性,不确定性四大基础特征。而程序并发活动的实现是异步(一个程序走走停停),并发控制的时候需要用到同步技术。 所以并发控制需要同步,并发的实现是异步,...
  • 1G、2G、3G、4G5G有什么区别?5G的原理什么

    万次阅读 多人点赞 2019-03-17 11:51:17
    刚才看到了一篇关于5G到底是什么的文章,对5G了新的认识,大家分享一下。 “人类首例5G远程人体手术完成”,患者所在地是北京、医生实际操作的地点是海南。跨越了三千公里,通过操纵5G远程机械臂完成一次帕金森...
  • 深拷贝浅拷贝的区别和原理

    千次阅读 2022-04-20 10:15:51
    深拷贝浅拷贝的区别和原理
  • 数据库原理(2)——数据模型与概念模型 实体 实体的特征 实体集及实体集之间的联系 概念模型的基本概念 主码 Primary Key 候选码:除了主码也能唯一标识实体 实体集联系的类型 一对一(1:1) 一对多(1:n) 多...
  • 3)翻译程序、汇编程序、编译程序、解释程序有什么差别?各自的特性是什么? 4)不同级别的语言编写的程序有什么区别?哪种语言编写的程序能被硬件直接执行? 请读者在学习本章的过程中寻找答案,本章末尾会给出...
  • 有什么区别产生了疑问。查找资料后,总结如下: 单线箭头 -> 用在规则(产生式)中,称作“定义为” ->:是为了来组成一条文法中的规则的。 那么->左右的可以是什么样的符号呢? 我们要先了解下文法的...
  • 什么是深度学习? 深度学习试图模仿人脑,尽管与大脑的能力相去甚远,使其能够从大量数据中“学习”。 旨在使系统能够以难以置信的准确度对数据进行聚类并做出预测。 深度学习是机器学习的一个子集,它本质上是一个...
  • 转江吟碧水万春流的一段论述:计算机组成原理,微机原理,计算机体系结构这三门课的区别和联系 计算机体系结构讲的是计算机哪些功能(包括指令集、数据类型、存储器寻址技术、I/O机理等等),是抽象的;计算机组成...
  • 编译原理——文法的基本概念

    千次阅读 2019-12-31 18:58:49
    文法的概念 每一种自然语言或者是编程语言都需要文法来描述,文法相当于语言学的语义分析,即分析每一句话所表示的含义,编译器需要利用文法来完成其语法分析语义分析。 在目前编程语言领域,上下文无关文法作为...
  • Spark工作原理及基础概念(超详细!)

    万次阅读 多人点赞 2020-11-24 15:05:28
    目录一、Spark概述(1)概述(2)Spark整体架构(3)Spark特性(4)Spark与MR(5)Spark Streaming与Storm(6)Spark SQL与Hive二、Spark基本原理(1)Spark Core(2)Spark SQL(3)Spark Streaming(4)Spark基本...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 357,603
精华内容 143,041
热门标签
关键字:

原理和概念有什么区别