应对不良网络文化的技术之一——网络信息抽取技术

 1     引言

    2008年1月17日,中国互联网络信息中心(CNNIC)发布了《第21次中国互联网络发展状况统计报告》[1],报告显示:

   (1) 截至2007年12月,网民数已增至2.1亿人。中国网民数增长迅速,比2007年6月增加4800万人,2007年一年则增加了7300万人,年增长率达到53.3%。,在过去一年中平均每天增加网民20万人。

    (2) 目前中国的网民人数略低于美国的2.15亿 ,位于世界第二位。目前中国网站数量已达150万个,比去年同期增长了66万个,增长率达到78.4%。博客/个人空间等众多网络应用需求、域名数量增长的拉动及创建网站操作的简单化等因素作用在一起,共同使得网站数量猛增。

    (3) 目前中国网页数为84.7亿个,年增长率达到89.4%,网上信息资源的增长速度非常迅猛。这些网页中,动静态的比例为0.92:1,动态网页的比重在逐年增高。

    (4) 目前网民平均上网时长是16.2小时/周,互联网已经在网民生活中占据一定的地位。

    从以上内容可见,网络作为人们获取信息的主要渠道,已成为社会生活的一部分。网络作为一种新的传媒,与报纸、无线广播和电视等传统的媒体相比,具有开放性,不确定性,交互性,超时空性以及信息量的巨大性等特点。网络不仅改变了人们的工作方式和生活方式,而且猛烈地冲击着传统的思想观念和思维方式。网络在传播现代文明的同时,也附带了各种“灰色文化”,例如色情、暴力等文化。这些不良网络文化严重污染着网络环境,尤其对生理日渐成熟、而心理并未成熟的青少年造成了极大的危害。网络的淫秽站点泛滥成灾,成为导致青少年性犯罪增加的一大诱因,也是导致暴力犯罪的一大根源。[2]在互联网的信息中,有近70%的信息有淫秽的内容。56%的人认为,通俗文化中的色情内容是导致青少年暴力的一大诱因。网络暴力文化的传播,对青少年的行为产生误导,从而导致校园暴力和有组织犯罪的增加。在互联网上,宣传暴力的文字和图片随处可见。青少年的模仿能力很强,加上暴力文化的影响,使青少年把暴力看成理所当然的事情,把犯罪看成一种游戏。

    当前,不良网络文化问题已经引起了各国的重视,加强对该问题的调查和惩处是大势所趋。打击这些网络灰色文化不仅需要制定相关的法律法规,还应该利用科技工作者的聪明才智,帮助阻击或者是抑制这些灰色文化的传播泛滥。

    互联网最基础的功能即提供信息。[1]目前互联网上的信息已是海量,搜索引擎则是网民在汪洋中搜寻信息的工具,是互联网上不可或缺的工具和基础应用之一。目前2.1亿网民中使用搜索引擎的比例是72.4%,即已有1.52亿人从搜索引擎获益,半年净增加3086万人。因此,为了有效的抵制网络不良文化,对于搜索引擎服务商来说,需要采取各种有效措施严格封堵过滤网络上的不良内容。

    原理上,搜索引擎技术主要涉及网络搜索技术、文挡分类技术和网络信息抽取技术。其中,网络信息抽取技术是将网页中的非结构化数据或半结构化数据按照一定的需求抽取成结构化数据。网络信息抽取结果的质量将直接影响到封堵过滤网络不良内容的效率。因此,网络信息抽取技术是应对不良网络文化的关键技术之一。本文将针对网络信息抽取技术做概要性介绍。
 

 

2    网络信息抽取技术概述

      2.1网络信息抽取的主要内容

     网络信息抽取属于网络内容挖掘(Web content mining)研究的一部分。[3]如图1所示,主要包括结构化数据抽取(Structured Data Extraction)、信息集成(Information integreation)和观点挖掘(Opinion mining)等。

 



    图1网络信息抽取的主要内容

 

    结构化数据抽取(Structured Data Extraction)的目标是从Web页面中抽取结构化数据。这些结构化数据往往存储在后台数据库中,由网页按一定格式承载着展示给用户。例如论坛列表页面、Blog页面、搜索引擎结果页面等。

    信息集成(Information integration)是针对结构化数据而言的。其目标是将从不同网站中抽取出的数据统一化后集成入库。其关键问题是如何从不同网站的数据表中识别出意义相同的数据并统一存储。

    观点挖掘(Opinion mining)是针对网页中的纯文本而言的。其目标是从网页中抽取出带有主观倾向的信息。

    大多数文献中提到的网络信息抽取往往专指结构化数据抽取。

    2.2 网络数据抽取工具简介

    2.2.1 工具的分类

    传统的网络数据抽取是针对抽取对象手工编写一段专门的抽取程序,这个程序称为包装器(wrapper)。近年来,越来越多的网络数据抽取工具被开发出来,替代了传统的手工编写包装器的方法。目前的网络数据抽取工具可分为以下几大类(实际上,一个工具可能会归属于其中若干类)[4]:

    开发包装器的专用语言(Languages for Wrapper Development):用户可用这些专用语言方便地编写包装器。例如Minerva,TSIMMIS,Web-OQL,FLORID,Jedi等。

    以HTML为中间件的工具(HTML-aware Tools):这些工具在抽取时主要依赖HTML文档的内在结构特征。在抽取过程之前,这些工具先把文档转换成标签树;再根据标签树自动或半自动地抽取数据。代表工具有W4F,XWRAP,RoadRunner,MDR。

    基于NLP(Natural language processing)的工具(NLP-based Tools):这些工具通常利用filtering、part-of-speech tagging、lexical semantic tagging等NLP技术建立短语和句子元素之间的关系,推导出抽取规则。这些工具比较适合于抽取那些包含符合文法的页面。代表工具有RAPIER,SRV,WHISK。

    包装器的归纳工具(Wrapper Induction Tools):包装器的归纳工具从一组训练样例中归纳出基于分隔符的抽取规则。这些工具和基于NLP的工具之间最大的差别在于:这些工具不依赖于语言约束,而是依赖于数据的格式化特征。这个特点决定了这些工具比基于NLP的工具更适合于抽取HTML文档。代表工具有:WIEN,SoftMealy,STALKER。

    基于模型的工具(Modeling-based Tools):这些工具让用户通过图形界面,建立文档中其感兴趣的对象的结构模型,“教”工具学会如何识别文档中的对象,从而抽取出对象。代表工具有:NoDoSE,DEByE。

    基于本体的工具(Ontology-based Tools):这些工具首先需要专家参与,人工建立某领域的知识库,然后工具基于知识库去做抽取操作。如果知识库具有足够的表达能力,那么抽取操作可以做到完全自动。而且由这些工具生成的包装器具有比较好的灵活性和适应性。代表工具有:BYU,X-tract。

    2.2.2 工具的定性评价

    对一个抽取工具的定性评价可参考以下几个指标[4]:

    自动化程度:这是个非常重要的指标。它意味着在生成包装器的同时,需要用户参与的工作量。用专用语言生成包装器的工具需要用户手工描绘要抽取的对象的边界,所以自动化程度较低。以HTML为中间件的工具往往能提供自动化程度较高的生成包装器的操作,但这种高度自动化的效果需要建立在一个假设上:被抽取页面的HTML标签具有高度的一致性。而这个假设对于现实网络中的大部分页面是不成立的。基于NLP的工具、包装器的归纳工具、基于模型的工具都可以称为半自动化工具,因为这些工具都需要用户提供样例页面,从而生成包装器。BYU这样的基于本体的工具首先需要全人工的建立知识库,但之后,只要本体有足够的表达能力,抽取操作就能够做到全自动。

    是否支持复杂结构对象的处理:网页中大多数的数据呈现出复杂的结构,例如多层嵌套(multiple nesting levels)结构,如图2所示。这就需要抽取工具能够处理这些复杂的数据结构。

 

 

图 2 多层嵌套结构举例[3]
 

 

    是否支持页面的文本分析:网页的内容,基本可分成两类:一类是半结构化数据,如图3所示;一类是半结构化文本,如图4所示。用专用语言生成包装器的工具、以HTML为中间件的工具、包装器的归纳工具、基于模型的工具往往依赖于识别出数据的边界,从而生成抽取规则,所以它们更适合处理半结构化数据。基于NLP的工具更适合处理半结构化文本。BYU这样的基于本体的工具则两者都可处理。

 

 


    图 3 半结构化数据举例[4]

 

 


 图 4 半结构化文本举例[4]

 


    是否提供图形用户界面(GUI,Graphical User Interfaces):为了帮助用户更好地生成包装器,一些工具提供了图形用户界面。

    是否支持非HTML文档:一些网页并不是用HTML写的。因为基于NLP的工具在分析时完全不依赖于HTML标签,所以非常适合处理非HTML文档。包装器的归纳工具、基于模型的工具在分析时不仅仅依赖于HTML标签,所以也可以处理一部分非HTML文档。以HTML为中间件的工具在分析时,则完全依赖HTML标签,所以不能处理非HTML文档。

    灵活性(Resilience)和适应性(Adaptiveness):因为网页的结构和表达往往变化频繁,所以评价包装器的一个重要指标就是灵活性,即当网页有部分改变时,包装器是否仍然有效。另一个重要指标是适应性,即一个针对某应用领域的某种Web源的包装器是否也能对同一应用领域中的其他Web源有效。

    各类抽取工具的定性评价参见图5。

 

 


 图5 各类抽取工具的评价图[4]

    

 

3    网络信息抽取的主要方法

     这里重点介绍基于监督学习(supervised learning)的包装器的归纳(Wrapper induction)和基于非监督学习(unsupervised learning)的全自动抽取(Automatic extraction)。[5]

     3.1 包装器的归纳

     包装器的归纳是基于监督学习的方法。具体地讲,是利用机器学习生成抽取规则。主要步骤如下:

     (1) 由用户在训练页面中标注要抽取的内容;

     (2) 系统从训练页面中学习出抽取规则;

     (3) 利用抽取规则从新页面中抽取出需要的内容。

      研究人员已经研发出很多包装器归纳系统,例如WIEN[6],Softmealy[7],Stalker[8],BWI[9],WL[10]等。在这里,我们以系统Stalker作为例子介绍包装器的归纳方法。Fetch是系统Stalke的商业版本。

     Stalker是一个分级包装器归纳系统。基于分级抽取的思想,它将复杂的抽取问题变成一系列简单的抽取子任务,不同级别的抽取相互独立。该系统非常适合抽取多层嵌套结构的数据记录。

     Stalker在抽取过程中使用了内嵌目录树结构,即EC树(Embedded catalog tree)。EC树基于类型树(Type tree)。图6为一个网页片段,图7为图6对应的类型树,图8为图6对应的EC树。

 



     图6 一个网页片段[5]

 

 

    图7 图6对应的类型树[5]

 

 

 

图8 图6对应的EC树[5]

    

 

     如图8所示,每个抽取项对应EC树中的一个节点,包装器将使用规则从该节点的父节点中将该项内容抽取出来。对每项要抽取的内容,需要两条规则:

    (1) 一条开始规则,用于检测抽取项的开始位置,即标识出抽取项对应节点的开始位置;

    (2) 一条结束规则,用于检测抽取项的结束位置,即标识出抽取项对应节点的结束位置。

    以上规则不仅适用于叶子节点(对应数据项),还适用于列表节点。对于列表节点,使用列表迭代规则将列表分割成一个个单独的数据记录。抽取操作之前,往往把HTML代码切分成若干个标记(token)。标记的定义一般是指标签、文本等,例如 

即为一个标记。抽取过程往往以标记作为原子单位加以操作。抽取规则基于路标(landmark)的思想,每个路标是一个连续的标记序列。用路标来定位一个抽取项的开始和结束位置。下面举个例子来简要说明抽取过程。图9为图6对应的HTML代码。

 

 

 图9 图6对应的HTML代码[5]

 


    我们要抽取restaurant 的名称“Good Noodles”,可以使用以下两条规则:

    R1: SkipTo() //开始规则

   
R2: SkipTo(
) //结束规则

    R1告诉系统,要找到restaurant的开始路标(landmark),需要从页面对应的HTML代码的第一个标记(token)开始,跳过所有标记,直到遇到标记。在这里,标记就称为一个路标(landmark)。同样的,R2告诉系统,要找到restaurant的结束路标,需要从页面对应的HTML代码的第一个标记开始,跳过所有标记,直到遇到标记,标记也为一个路标(landmark)。
  
    这里需要注意的是,规则可能不是唯一的。例如,下面的规则R3、R4和规则R1的效果是一样的。

       R3: SkiptTo(Name _Punctuation_ _HtmlTag_)

       R4: SkiptTo(Name) SkipTo(
    R3表示需要跳过所有标记,直到遇到词“Name”,且该词之后紧跟着一个标点符号以及一个HTML标签(tag)。这里“Name _Punctuation_ _HtmlTag_”共同组成了一个路标。其中“_Punctuation_”和“_HtmlTag_”是通配符。

    接下来我们抽取图6中的列表,其父节点对应图9中代码的第2行至第5行。为了识别整个列表,我们使用如下规则:


    R5:     SkipTo(

)


    R6:     SkipTo(

) 

 


    为了将列表分割成一个个单独的数据记录,我们使用如下规则:


    R7:     SkipTo( 

  • ) 

     


        R8:     SkipTo(

)
    系统在列表的父节点对应的代码中,从第一个标记开始搜索,直到遇到标记 

  • 意味着找到了第一个数据记录的起始位置,然后接着搜索,直到再次遇到标记 
  • ,意味着找到了第二个数据记录的起始位置,…,直到代码结束。同样的,系统在列表的父节点对应的代码中,从最后一个标记开始搜索,直到遇到标记(

),意味着找到了最后一个数据记录的结束位置,然后接着搜索,直到再次遇到标记(),意味着找到了倒数第二个数据记录的结束位置,…,直到代码开始。当一条数据记录的开始、结束位置被标出后,我们就能抽取其中的数据了。以上所有规则仅仅为了展示抽取过程,所以看起来比较简单。实际环境中,由于网页设计的多样性,导致规则会比较复杂。

    Stalker使用连续覆盖的策略来学习抽取规则,即在训练过程中覆盖尽可能多的正例,而忽略所有反例。具体地讲,就是一旦一个正例满足了一条规则,该正例就被剔出训练集,直到所有的正例被规则覆盖。

       包装器的归纳需要在学习阶段,手工标引训练例子。为了保证学习的准确性,需要大量的训练例子,因此标引工作相当费时费力。可以使用协同测试(Co-testing)等方法提高学习过程的自动化程度。

       包装器的归纳还需要处理包装器的维护问题。具体地讲,就是如何解决如下难题:

    (1) 包装器的检测:当一个网站发生了变化,相应的包装器能否知道这种变化?

       (2) 包装器的修复:当网站的变化被正确检测到,怎样自动修复包装器?

       解决以上两个问题的方法之一就是学习出要抽取内容的特征模板,用这些模板监控抽取操作,及时判断抽取结果的正确与否。一旦发现错误,当页面仅仅是格式上的较小变化时,可以用模板来定位抽取项,并重新生成包装器。解决好以上两个问题相当困难,因为往往需要上下文和语义信息来检测网站的变化,以及重新定位要抽取内容的位置。目前,包装器的维护是比较热门的研究点。

      3.2 全自动抽取

      基于监督学习的包装器归纳方法有以下两大不足:

      (1) 手工标引的高代价,使得该方法不适合应用于大规模网站的抽取。

       (2) 包装器的维护也需要付出相当大的代价。网络是个动态环境,处在不停的变化中。由于包装器归纳系统学习出的规则使用的是格式化标签,因此当一个网站改变其格式化模板时,当前的抽取规则就无效了。

       针对以上不足,大家开始研究基于非监督学习的全自动抽取。实现全自动抽取是可能的,这是因为一个网站中的数据记录,往往被数量很少的固定模板所承载着,因此通过挖掘重复模式,是可以找到这些模板的。正则表达式(Regular expression)常被用来描述模板。给定一个正则表达式,可以用一个非确定有限自动机(nondeterministic finite-state automaton)在网页对应的HTML代码(可看成一个字符串序列)中作匹配,抽取出数据记录。模板也可用字符串或树模式描述。
 
     近来比较流行的全自动抽取方法有RoadRunner[11]、MDR[12]等。方法RoadRunner将多个HTML文件作比较,找出其相似特征和不同特征,基于这些特征生成包装器。参考文献[12],我们在这里简要介绍方法MDR(Mining Data Records in Web pages)的思路。

     MDR的目标是从网页中抽取结构化数据记录,例如图10所示产品列表。 

 


 


图10 结构化数据记录举例[12]


 


  图11 图10对应的标签树[12]

    


    方法MDR用标签树(DOM tree 或 tag tree)来描述模板。图10对应的标签树如图11所示(忽略了一些细节)。MDR的思路基于以下两个观察结果,以及串匹配算法:

    (1) 一组相似的结构化数据记录可以看成一个相似对象的集合,这些对象在页面中常被放在一片邻近的区域中,该区域称为数据区域(data region),且承载每个对象的HTML标签是相似的。例如,图10中两条关于书的记录在网页中被放置在一片邻近的区域中,且每条数据记录都被相似的HTML标签序列所承载着。如果把一个页面的HTML标签看成是一个字符串,那么就能够使用字符串匹配算法来比较不同的子串,从而找出那些相似子串,这些相似子串很可能就承载了相似的对象(即数据记录)。

    (2) 一个网页中的HMTL标签的内嵌结构很自然地构成一棵标签树。在一片特定区域中的一组相似的数据记录,在标签树中表现为共同拥有一个父节点。例如,图11中每个短线方框代表了一条记录。可见,每条数据记录由5个TR节点及其子树所承载,且这5个TR节点及其子树共同拥有一个父节点TBODY。也就是说,每个数据记录都被一些子树所承载着,对于一组相似的数据记录,承载它们的子树共同拥有一个父节点。

    以上观察结果在实验中得到了证实。给定一个网页,MDR方法的抽取流程如下:

    步骤1:为数据页面建立HTML标签树;

    步骤2:基于标签树和字符串比较算法挖掘出页面中的数据区域。注意,这里并不是直接去挖掘数据记录,而是先挖掘出数据区域。例如,我们先找出图11中节点TBODY下的整个数据区域。

    步骤3:从每个数据区域中识别出数据记录。例如,在图11中,这个步骤要找出TBODY下的数据区域中的数据记录1和数据记录2。

    3.3 小结

    基于监督学习的包装器的归纳有如下优点:

    (1) 因为用户在手工标引时,明确描述了其感兴趣的抽取内容,所以抽取结果必定是用户所需要的。

    (2) 因为用户在手工标引时,明确描述了从不同网站获取的数据的意义,所以抽取操作不需要考虑数据集成问题。

    同时,在上节提到,包装器的归纳有以下两大不足:

    (1) 手工标引代价高,使得该方法不适合大规模网站的抽取。

    (2) 网站的频繁变化,使得包装器的维护需要付出相当大的代价。

    基于非监督学习的自动抽取有如下优点:

    (1) 由于抽取过程是完全自动的,所以非常适用于大规模网站的抽取需求。

    (2) 由于抽取过程是完全自动的,所以维护代价非常小。

    同时,自动抽取有如下不足:

       (1) 由于没有用户参与,所以系统并不知道用户真正感兴趣的是什么内容,导致抽取结果中可能会包含很多用户不需要的数据。对这点不足,可以用领域启发式信息或手工过滤的方法从抽取结果中剔除无关数据。

    (2) 从多个网站中抽取出的数据结果需要通过集成操作,才能真正入库。

    在抽取精度方面,通常认为包装器的归纳比自动抽取精确,但至今并没有文献给出具体比较结果。在应用方面,包装器的归纳往往适合于要抽取的网站数量较少,且这些网站的模板数量较少的任务;自动抽取往往适合大规模的抽取任务,且这些任务不需要精确标引和数据集成。
 


4     结论

    当前,不良网络文化问题已经引起了高度重视。为了打击网络灰色文化,不仅需要制定相关的法律法规,还应该充分利用高科技手段。搜索引擎是互联网上不可或缺的工具和基础应用之一。对于搜索引擎服务商来说,需要采取各种有效措施严格封堵过滤网络上的不良内容,从而有效的抵制网络不良文化。本文针对搜索引擎技术中的网络信息抽取技术做了概要性介绍。因为网络信息抽取结果的质量,会直接影响到搜索引擎封堵过滤网络不良内容的效率,因此,研究网络信息抽取技术对于解决不良网络文化问题是非常关键的。

 


参考文献
  [1] 中国互联网络信息中心 (CNNIC).中国互联网络发展状况统计报告.2008.1.17.

  [2] 郭新建.警惕不良文化.郑州日报,2007.7.15.

  [3] B.Liu. ACM SIGKDD Inaugural Webcast: Web Content Mining, Nov 29, 2006.

  [4] A. Laender, B. Ribeiro-Neto, A. Silva, and J. Teixeira. A brief survey of web data extraction tools. ACM SIGMOD Record, 31(2):84–93, 2002.

  [5] B. Liu. Web Data Mining - Exploring Hyperlinks, Contents, and Usage Data. Springer, December, 2006.

  [6] N. Kushmerick, D. S. Weld, and R. B. Doorenbos. Wrapper induction for information extraction. In Proc. of the Int. Joint Conf. on Artificial Intelligence, 1997.

  [7] C. Hsu and M. Dung. Generating finite-state transducers for semi-structured data extraction from the web. Information Systems, 23(8):521–538, 1998.

  [8] I. Muslea, S. Minton, and C. Knoblock. A hierarchical approach to wrapper induction. In Proc. of the Third Int. Conf. on Autonomous Agents, 1999.

  [9] D., Freitag and N., Kushmerick. Boosted wrapper induction. In Proc. of the Conf. on Artificial Intelligence, 2000.

  [10] W. Cohen, M. Hurst, and L. Jensen. A flexible learning system for wrapping tables and lists in html documents. In Proc. of the 11th Int. World Wide Web Conf., 2002.

  [11] V. Crescenzi, G. Mecca, and P. Merialdo. Roadrunner: Towards automatic data extraction from large web sites. In Proc. of 27th Int. Conf. on Very Large Data Bases, 2001.

  [12] B. Liu, R. Grossman, and Y. Zhai. Mining data records from web pages. In Proc. of 14th ACM SIGKDD Int. Conf. on Knowledge Discovery in Databases and Data Mining, 2003.

  [13] Y. Zhai and B. Liu. Web data extraction based on partial tree alignment. In Proc. of the 14th Int. World Wide Web Conf., 2005.

  [14] B. Liu and Y. Zhai. Net - a system for extracting web data from flat and nested data records. In Proc. of the 6th Int. Conf. on Web Information Systems Engineering, 2005.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HBuilder完成webApp入门(2)

一、HBuilder的下载地址:http://www.dcloud.io/,点击那个“DownLoad”就可以 了 二、假设一切顺利,启动HBuilder后,大家会看到如下的界面 点击新建移动APP: 接下来就会弹出一个选择模板的对话框: 默认的模板…

高可用集群 heartbeatv1实例

——————— 高可用集群的简单配置 ————————地址规划 主节点:HA1 172.16.21.13 hostname node2.magedu.com备节点: HA2 172.16.21.14 hostname node1.magedu.comVIP 172.16.21.9前提工作1,配置主机名 hostname保证uname …

你知道“拉黑”、“关注”、“点赞”、“转发”、“分享到朋友圈”等英语咋说吗?

From: https://www.sohu.com/a/220161051_559507 “分享到朋友圈”等英语咋说吗? Mini apps 小程序 小程序”(mini apps)是一个不需要下载安装就可使用的应用(apps that can be accessed without downloading)&#x…

配套自测连载(三)

接上期(答案已给出)本期是专门针对《深入理解计算机网络》图书第4章而编写的10道计算机网络体系架构中的物理层技术自测题,可以检验你对本章的学习效果。把你的答案直接写在评论中即可,笔者将在每期发表10天后给出正确答案。本书是国内最通俗、最系统的计…

[json] JSON for Modern C++

有幸能接触到这个,这是我遇到的使用最方便的json了,效率没研究过! 简单了使用了下,感觉非常好用,记录下: 要使用这个json,只需要使用json.hpp就行,放入自己的工程里,但…

libinject的编译

libinject是一个Android进程注入实例,其下载地址为:http://download.csdn.net/download/ljhzbljhzb/3680780 libinject的编译需要NDK开发环境,在NDK安装成功之后,可以先将其自带的实例中的HelloJni导入到eclipse中,编译…

Linux Supervisor 守护进程基本配置

supervisor:C/S架构的进程控制系统,可使用户在类UNIX系统中监控、管理进程。常用于管理与某个用户或项目相关的进程。 组成部分supervisord:服务守护进程supervisorctl:命令行客户端Web Server:提供与supervisorctl功能相当的WEB操…

三阶魔方还原公式

From: https://www.cnblogs.com/zqifa/p/mofang-1.html 1. 第二层棱块归位: 2. 顶层十字 3. 顶层棱中间块归位 这一步的目的是使顶层的4个棱中间块全部归位。 转动顶层(U),若可以使一个棱中间块归位(如下图左,这里以[红-黄]块为例)&#x…

选项板概述

2019独角兽企业重金招聘Python工程师标准>>> 1、选项板概述 选项面板是一个包括一个或多个选项卡(Tab),同一时刻只显示一个选项卡的这种用户界面。比如下图的IE选项设置界面中,就是一个选项板的应用,选项板上有“常规”、“安全”…

三阶魔方的入门教程

From: http://www.rubik.com.cn/beginner.htm 下面是三阶魔方图文教程,想直接看更好懂的三阶魔方视频教程请点这里 魔方别看只有26个小方块,变化可真是不少,魔方总的变化数为 或者约等于4.31019。如果你一秒可以转3下魔方,不计重…

MySQL LIST分区(转载)

LIST分区和RANGE分区非常的相似,主要区别在于LIST是枚举值列表的集合,RANGE是连续的区间值的集合。二者在语法方面非常的相似。同样建议LIST分区列是非null列,否则插入null值如果枚举列表里面不存在null值会插入失败,这点和其它的…

啦啦

Y2错题解析 数据流程图描述信息的来龙去脉和实际流程,反映信息在系统中流动、处理和存储的情况。程序结构图用来描述程序结构,一般由构成系统的要素和表达要素间关系的连线或箭头构成。因果图是一种发现问题“根本原因”的分析方法。 Spring依赖检查的常…

emacs 入门教程,菜单汉化,配置文件等杂乱文章

首先来一发ArchWiki的Emacs简体中文的入门教程 https://wiki.archlinux.org/index.php/Emacs_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) 怎样设置,Emacs中文菜单? 把包内的3个文件丢到 emacs/share/emacs/site-lisp下面。 在~/ 建一个 .emacs的…

关于element框架的el-image点击后,页面出现卡死等情况的解决方式

当el-image标签被添加时&#xff0c;页面的body就会自动添加style属性 所以我们绑定一个点击事件删除样式就可以了 <el-image style"width: 100px; height: 100px" :src"scope.row.logo" fit"scale-down" click"cancelStyle()"/&…

从源代码角度看Struts2返回JSON数据的原理

2019独角兽企业重金招聘Python工程师标准>>> 前面一篇文章其实只是介绍了如何在Struts2中返回JSON数据到客户端的具体范例而无关其原理&#xff0c;内容与标题不符惹来标题党嫌疑确实是笔者发文不够严谨&#xff0c;目前已修改标题&#xff0c;与内容匹配。本文将从…

一张图看懂encodeURI、encodeURIComponent、decodeURI、decodeURIComponent的区别

From:https://www.cnblogs.com/shuiyi/p/5277233.html 一、这四个方法的用处 1、用来编码和解码URI的 统一资源标识符&#xff0c;或叫做 URI&#xff0c;是用来标识互联网上的资源&#xff08;例如&#xff0c;网页或文件&#xff09;和怎样访问这些资源的传输协议&#xf…

关于axios请求报400如何获取报错信息

不废话&#xff0c;直接放代码 addGoods(product).then(res > {if (res.code 200) {this.$message.success("添加成功");this.handleFilter();} else {this.$message.error("添加失败");}}).catch(res > {console.log(res)console.log(res.respons…

炫酷弹窗效果制作

昨天在家看电视时&#xff0c;退出的时候发现了一个弹窗效果&#xff0c;整个背景模糊&#xff0c;觉得这样的效果好炫&#xff0c;要比纯色加透明度高大上好多&#xff0c;连续试了几个界面&#xff0c;最终确定效果由css实现的&#xff0c;于是今天一大早来到公司便赶紧搜索了…

选择版本Win7系统VS2010下搭建qt开发环境

这几周一直在研究选择版本之类的问题,下午正好有机会和大家共享一下. win7下vs2010搭建qt环境总算成功了&#xff0c;在此分享一下。 最初选择了VS2012 qt-windows-opensource-5.0.2-msvc2012_64-x64-offline.exe &#xff0b; qt-vs-addin-1.2.1-opensource.exe 一路安装成功…

学习 Spring Boot:(二十九)Spring Boot Junit 单元测试

From: https://blog.wuwii.com/springboot-test.html 前言 JUnit 是一个回归测试框架&#xff0c;被开发者用于实施对应用程序的单元测试&#xff0c;加快程序编制速度&#xff0c;同时提高编码的质量。 JUnit 测试框架具有以下重要特性&#xff1a; 测试工具测试套件测试运…