readline

DFA算法C#实现

為{幸葍}努か 提交于 2020-04-30 19:07:55
原文: DFA算法C#实现 搬运自: https://www.cnblogs.com/AlanLee/p/5329555.html 原理搜关键字:DFA算法 基本照抄了原文的JAVA代码,其中应该可以用Dictionary<string,int>来代替Hashtable,但搜到的资料都说Hashtable快得要命,虽然知道他们说的是JAVA环境,但也懒得改了,这东西实现出来不卡线程就行。 试了一下,初始化一个一万九千多行的文本大概需要40毫秒,然后在一个大约二万字的文本内搜索100多个关键词(随机插入测试的,话说处理这个测试文本还花了一些功夫,第一版的随机插入,时不时就会插入到前面插入的关键词中间去,导致匹配出来的数量老是不对),只需要7毫秒。 1 /// <summary> 2 /// 过滤词DFA算法实现 3 /// </summary> 4 public class ForbiddentWordLibrary 5 { 6 /// <summary> 7 /// 用分行过滤词文件来初始化过滤词库 8 /// </summary> 9 /// <param name="path"> 文件路径 </param> 10 public ForbiddentWordLibrary( string path ) 11 { 12 try 13 { 14 words = new HashSet

201871010107-公海瑜《面向对象程序设计(Java)》第四周学习总结

 ̄綄美尐妖づ 提交于 2020-04-29 22:24:19
201871010107-公海瑜《面向对象程序设计(Java)》第四周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/11552848.html 作业学习目标 1. 掌握类与对象的基础概念,理解类与对象的关系; 2. 掌握对象与对象变量的关系; 3. 掌握预定义类Date、LocalDate类的常用API; 4. 掌握用户自定义类的语法规则,包括实例域、静态域、构造器方法、更改器方法、访问器方法、 静态方法、main方法、方法参数的定义要求; 5. 掌握对象的构造方法、定义方法及使用要求; 6. 理解重载概念及用法; 7.掌握包的概念及用法; 第一部分:总结第四章理论知识 1、类:类是一个模板,它描述一类对象的行为和状态。 2、对象:对象是类的一个实例,有状态和行为。 3、一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。在Java中,任何对象变量都是对储存在另外一个地方的一个对象的引用。 4、实例域:可将实例域定义为final,构建对象时必须初始化这样的域。 5、静态域:绝大多数面向对象程序设计语言中,静态域被称为类域。如果将域定义为static,每个类中只有一个这样的域

Python之路(第十五篇)sys模块、json模块、pickle模块、shelve模块

徘徊边缘 提交于 2020-04-29 09:36:43
一、sys模块 1、sys.argv 命令行参数List,第一个元素是程序本身路径 2、sys.exit(n) 退出程序,正常退出时exit(0) 3、sys.version 、 sys.maxint sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 4、sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 分析:sys.path输出的第一个结果是程序执行文件所在的文件夹绝对路径,这里的输出结果第二个是工程文件目录,但是这个目录是pycharm自主加上的,直接用解释器执行是没有这个路径的。 5、sys.platform 返回操作系统平台名称 6、sys.stdout.write() 、sys.stdout.flush() sys.stdout.write() 标准输出 , sys.stdout.write 在交互器模式下这个函数输出数据到stdout,同时还有一个返回值,就是字符串的长度。在pycharm里输出不会有字符串的长度。 sys.stdout.flush() 刷新输出 在Linux系统下,必须加入sys.stdout.flush()才能一秒输一个字符(交互器模式下) 在Windows系统下,加不加sys.stdout.flush()都能一秒输出一个字符(交互器模式下)

NO.3:自学python之路------集合、文件操作、函数

别说谁变了你拦得住时间么 提交于 2020-04-28 22:39:35
引言   本来计划每周完成一篇Python的自学博客,由于上一篇到这一篇遇到了过年、开学等杂事,导致托更到现在。现在又是一个新的学期,春天也越来越近了(冷到感冒)。好了,闲话就说这么多。开始本周的自学Python之路。而且,同时从这周开始,也要开始自学Tensorflow。希望能严格要求自己,不会托更。加油啦。 正文   这个周主要学习了集合,文件的操作,以及一点函数中的知识。下面将会详细介绍各个内容。 集合   集合也是Python的一种变量类型。它与列表不同,集合中没有顺序,没有重复。通常定义一个集合可以用以下两种方法。例子: # 直接写出集合中的各个元素 list = set([2,1,10,15,18 ]) # 将列表转换为集合,会去掉重复的值 list = [1,5,8,2,4,3,6,1,3 ] list = set(list)   对集合的编辑首先从添加开始,向集合中添加一个或多个元素的方法,例子: list = set([2,1,10,15,18]) # 建立集合 list.add( 99) # 添加一项 list.update([99,100,101]) # 添加多项   说完了添加,下面将会带来几种删除的方法,例子: list = set([2,1,10,15,18]) # 建立集合 list.remove( 2) # 删除2,若list中不存在会报错 list

Java NIO学习系列四:NIO和IO对比

本小妞迷上赌 提交于 2020-04-28 21:36:43
   前面的一些文章中我总结了一些Java IO和NIO相关的主要知识点,也是管中窥豹,IO类库已经功能很强大了,但是Java 为什么又要引入NIO,这是我一直不是很清楚的?前面也只是简单提及了一下:因为性能,但是仅仅是因为性能吗,除此之外是否还有别的原因,或者说既然NIO性能好,那为什么现在我们还在使用IO。本节我们就来详细对比一下两者的特性以及两者之间的不一致对我们编码所带来的影响。    同样,本文会主要围绕下面几个方面来总结:    Java NIO和IO的主要区别    NIO和IO的不同对代码设计带来的变化    两种IO的各自适用场景    总结 1. Java NIO和IO的主要区别    两者之间的不同主要体现在如下三个方面: Java IO是面向流(Stream)的,而Java NIO是面向缓冲区(Buffer)的; IO模型的不同,Java IO是属于阻塞式IO(Blocking IO),而Java NIO是属于非阻塞式IO(Non Blocking IO); Java NIO中还引入了Selector的概念,可以实现多路复用;   在接下来的部分,我们逐个讨论这三个不同。 1.1 面向流与面向缓冲区   Java NIO和IO之间第一个不同点是IO是面向流(Stream)的而NIO是面向缓冲区(Buffer)的。    Java IO是面向流的

面向对象三大特性-----封装、继承、多态

烈酒焚心 提交于 2020-04-28 11:27:15
前言   前面有文章写到了面向对象编程和面向对象设计的头五大原则(SOLID五大原则)。今天我们再来谈谈面向对象的三大特性--封装、继承、多态 封装    被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中"。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。 封装只公开某些对外接口,隐藏具体实现细节。增加了一定的安全性,防止信息的泄露以及破坏。   讲到封装,我们又得提下访问修饰符了。 public:所有对象都可以访问; private:对象本身在对象内部可以访问; protected:只有该类对象及其子类对象可以访问 internal:同一个程序集的对象可以访问; protected internal:访问限于当前程序集或派生自包含类的类型。 继承   继承是软件复用的一种形式。使用继承可以复用现有类的数据和行为,为其赋予新功能而创建出新类。   在现有类(基类、父类)上建立新类(派生类、子类)的处理过程称为继承。派生类能自动获得基类的除了构造函数和析构函数以外的所有成员,可以在派生类中添加新的属性和方法扩展其功能 。   这里继承又可分为以下系列: 单重继承:表示一个类可以派生自一个基类,C#采用此继承 多重继承:多重继承允许一个类派生自多个类,C#不支持多重继承,但允许接口的多重继承 多层继承:多层继承允许有更大的层此结构,类B派生自类A,类C派生自类B

Qt+QGIS二次开发:向shp矢量图层中添加新的字段

荒凉一梦 提交于 2020-04-28 07:38:08
添加一个新的字段到shp文件中,并且从 Excel 里导入数据到该字段。原shp文件里的字段ID应该与Excel里的字段ID一一对应才能正确的导入。下图分别是shp的字段和Excel的字段 将class字段添加到shp中去: (1)从Excel中读取数据(为了读取方便,存为.csv或者txt文件) QStringList readFromCSV(QString mfilename) { QStringList readlist; if (mfilename != "" ) { QFileInfo csvFI(mfilename); QString ext = csvFI.suffix(); if ( ext == " csv " || ext == " txt " ) { QFile *importFile = new QFile(mfilename); if ( !importFile->open(QIODevice::ReadOnly | QIODevice::Text)) { QMessageBox::information(NULL, " error " , " Cannot open import file ! " , QMessageBox::Yes | QMessageBox::No); return readlist; } readlist.clear();

Python 标准库一览(Python进阶学习)

时光总嘲笑我的痴心妄想 提交于 2020-04-28 06:27:42
转自:http://blog.csdn.net/jurbo/article/details/52334345 写这个的起因是,还是因为在做Python challenge的时候,有的时候想解决问题,连应该用哪个类库都不知道,还要去百度(我不信就我一个人那么尴尬TvT) 好像自从学习了基础的Python 语法,看了几本Python经典的书,知道了一些常见的类库。在几本语法应用熟练的情况下,如果不做题,像是无法显著的提高自己的知识储备了(所以叫你去做python challenge啊,什么都不会~~)。 因此,为了避免在做Python challenge时,连想要用的类库名字都不知道的尴尬情况再出现。 我决定,把Python 标准库翻译下,列在这里。以后有需要查的也快么~ 对应的官方源文档 : 3.5.2 The Python Standard Library https://docs.python.org/3.5/library/index.html —–开始我的渣翻译,请多指教~~—– Python 标准库 虽然 Python 语言参考 描述了确切的语法和语义的 Python 语言,此库参考手册描述了 Python 的标准库。它还介绍了一些通常包含在 Python 发行版中的可选组件。 Python 的标准库非常丰富,如下面列出的内容所示,其提供了非常多的功能。库包含内置模块 (用

kafka的错误日志log监控

試著忘記壹切 提交于 2020-04-27 20:16:34
例如:需要监控下面的日志中的error 日志文件是这个 /data1/confluent-5.2.2/logs/connect/kafka-connect.log 1/ 参考上一篇安装zabbix_agent:https://www.cnblogs.com/hongfeng2019/p/11338513.html 2/ 运行python脚本 mkdir -p /home/script vim /home/script/check_log.py # !/usr/bin/env python # -*- coding: utf-8 -*- import sys import re def prePos(seekfile): global curpos try : cf = open(seekfile) except IOError: curpos = 0 return curpos except FileNotFoundError: curpos = 0 return curpos else : try : curpos = int(cf.readline().strip()) except ValueError: curpos = 0 cf.close() return curpos cf.close() return curpos def lastPos(filename):

[转]如何用C#动态编译、执行代码

流过昼夜 提交于 2020-04-27 17:38:35
在开始之前,先熟悉几个类及部分属性、方法: CSharpCodeProvider 、 ICodeCompiler 、 CompilerParameters 、 CompilerResults 、 Assembly 。   一、CSharpCodeProvider     提供对C#代码生成器和代码编译器的实例的访问。如果要动态生成VB代码,可以使用 VBCodeProvider 。     CreateCompiler():获取编译器的实例。   二、ICodeCompiler     定义用于调用源代码编译的接口或使用指定编译器的 CodeDOM 树。每种编译方法都接受指示编译器的 CompilerParameters 对象,并返回指示编译结果的 CompilerResults 对象。     CompilerAssemblyFromSource(CompilerParameters option, string source):使用指定的编译器,从包含源代码的字符串设置编译程序集。   三、CompilerParameters     表示用于调用编译器的参数。     ReferencedAssemblies:获取当前项目所引用的程序集。Add方法为程序集添加引用。     GenerateExecutable:获取或设置一个值,该值指示是否生成可执行文件