问题:非常非常大的文件我需要逐行解析以从每一行获得3个值.一切正常但解析整个文件需要很长时间.几秒钟内可以做到这一点吗?它的典型时间为1分钟至2分钟.
示例文件大小为148,208KB
我正在使用正则表达式解析每一行:
这是我的c#代码:
private static void ReadTheLines(int max, Responder rp, string inputFile)
{
List<int> rate = new List<int>();
double counter = 1;
try
{
using (var sr = new StreamReader(inputFile, Encoding.UTF8, true, 1024))
{
string line;
Console.WriteLine("Reading....");
while ((line = sr.ReadLine()) != null)
{
if (counter <= max)
{
counter++;
rate = rp.GetRateLine(line);
}
else if (max == 0)
{
counter++;
rate = rp.GetRateLine(line);
}
}
rp.GetRate(rate);
Console.ReadLine();
}
}
catch (Exception e)
{
Console.WriteLine("The file could not be …Run Code Online (Sandbox Code Playgroud) 我在编译时遇到以下错误.如何解决它而不必使用不同的函数名称
private double SomeMethodName(SomeClassType value)
{
return 0.0;
}
private double SomeMethodName(ADifferentClassType value)
{
if (value == null)
{
return this.SomeMethodName(null); //<- error
}
return this.SomeMethodName(new SomeClassType());
}
Run Code Online (Sandbox Code Playgroud) 我一直在玩NLTK工具包.我经常遇到这个问题并在网上寻找解决方案,但我无处可寻.所以我在这里提出我的问题.
很多时候,NER不会将连续的NNP标记为一个NE.我认为编辑NER以使用RegexpTagger也可以提高NER.
例:
输入:
巴拉克奥巴马是一个伟大的人.
输出:
树('S',[树('PERSON',[('Barack','NNP')]),树('组织',[('奥巴马','NNP')]),('是', 'VBZ'),('a','DT'),('great','JJ'),('person','NN'),('.','.')])
在哪里
输入:
前副总统迪克·切尼告诉保守派电台主持人劳拉·英格拉汉姆,他"很荣幸"在任期间与达斯维德相提并论.
输出:
树('S',[('前','JJ'),('副','NNP'),('总统','NNP'),树('NE',[('Dick',' NNP'),('切尼','NNP')]),('告诉','VBD'),('保守','JJ'),('收音机','NN'),('主持人' ,'NN'),树('NE',[('Laura','NNP'),('Ingraham','NNP')]),('that','IN'),('他', 'PRP'),('
', ''),('是','VBD'),('荣幸','VBN'),('''',''''),('to','''' ),('be','VB'),('比较','VBN'),('到','TO'),树('NE',[('Darth','NNP'),( 'Vader','NNP')]),('while','IN'),('in','IN'),('office','NN'),('.','.') ])
在这里,副总统/ NNP,总统/ NNP(迪克/ NNP,切尼/ NNP)被正确提取.
所以我认为如果首先使用nltk.ne_chunk然后如果两个连续的树是NNP,那么两者都很有可能引用一个实体.
任何建议都将非常感激.我正在寻找我的方法中的缺陷.
谢谢.
我正在尝试使用siege实用程序测试我的服务器上的高负载阻力:
siege http://my.server.ru/ -d1 -r10 -c100
Siege会输出很多这样的消息:
HTTP/1.1 200 0.46 secs: 10298 bytes ==> /
但有时会出现如下错误消息:
Error: socket: unable to connect sock.c:220: Connection timed out
或这个:
warning: socket: -598608128 select timed out: Connection timed out
测试后有围攻报告:
Transactions: 949 hits Availability: 94.90 % ... Successful transactions: 949 Failed transactions: 51 Longest transaction: 9.87 Shortest transaction: 0.37
在我的服务器上的nginx日志中,只有950条消息,代码为200,响应即可.
"GET / HTTP/1.1" 200 10311 "-" "JoeDog/1.00 [en] (X11; I; Siege 2.68)"
任何人都可以告诉我这意味着什么
Error: socket: unable to connect sock.c:220: Connection timed out warning: socket: …
我有以下帮助方法:
public static T CreateRequest<T>()
where T : Request, new()
{
T request = new T();
// ...
// Assign default values, etc.
// ...
return request;
}
Run Code Online (Sandbox Code Playgroud)
我想从另一个帮助器中的另一个方法内部使用此方法:
public T Map<F, T>(F value, T toValue)
where T : new()
where F : new()
{
if (typeof(T).BaseType.FullName == "MyNamespace.Request")
{
toValue = MyExtensions.CreateRequest<T>();
}
else
{
toValue = new T();
}
}
Run Code Online (Sandbox Code Playgroud)
但后来我得到了错误:
类型'T'不能用作泛型类型或方法'MyExtensions.CreateRequest()'中的类型参数'T'.从'T'到'MyNamespace.Request'没有装箱转换或类型参数转换.
有没有办法转换类型"T",以便CreateRequest将使用它没有问题?
编辑:
我知道我可以做两件事:
但我不能做第一个,因为在CreateRequest中我是Request类的用户属性,而我不能做第二个,因为我使用其他类型(不从Request继承)和Map函数.
我有以下xml:
<root>
<node>
<tag1/>
<tag2/>
<tag3/>
</node>
<node>
<tag1/>
<tag2/>
<tag3/>
</node>
<node>
<tag1/>
<tag3/>
</node>
</root>
Run Code Online (Sandbox Code Playgroud)
如您所见,在第3个节点中我缺少了tag2.是否有任何xpath可以应用于ac#XmlDocument(通过SelectNodes),它可以返回没有tag2节点的节点?
import re
str='abc defg'
m1 = re.match(".*(def)?",str)
m2 = re.match(".*(def)",str)
print (m1.group(1),m2.group(1))
Run Code Online (Sandbox Code Playgroud)
以上的输出是:
(没有,'def')
到底是怎么回事?即使使用非贪婪的重复运算符,(def)?也不会匹配可选的捕获组.
我尝试使用下面的代码将文件拆分为32GB,但我得到了memory exception.
请建议我使用分割文件C#.
string[] splitFile = File.ReadAllLines(@"E:\\JKS\\ImportGenius\\0.txt");
int cycle = 1;
int splitSize = Convert.ToInt32(txtNoOfLines.Text);
var chunk = splitFile.Take(splitSize);
var rem = splitFile.Skip(splitSize);
while (chunk.Take(1).Count() > 0)
{
string filename = "file" + cycle.ToString() + ".txt";
using (StreamWriter sw = new StreamWriter(filename))
{
foreach (string line in chunk)
{
sw.WriteLine(line);
}
}
chunk = rem.Take(splitSize);
rem = rem.Skip(splitSize);
cycle++;
}
Run Code Online (Sandbox Code Playgroud) 我使用的是最新版本的离子拉链版本1.9.1.8.我已经设置了离子拉链的属性 ParallelDeflateThreshold = 0.在过去的两个月里,压缩机制工作得很好.突然间,这停止了工作.压缩线程只是挂起,离子zip只是创建了tmp文件而无法创建zip文件.即使文件很小,我也可以轻松地重现这个问题.
我对这个问题的分析如下
问题在于最新版本的离子拉链,在这种情况下,离子拉链在创建zip文件时被挂起.我们注意到,使用此dll的其他几个用户也在其网站中报告了此类错误.请参考链接.这个问题将通过禁用ParallelThreshold离子zip的属性来解决,但它会延迟大型日志文件的性能,因为它可以在单线程而不是多线程模式下工作.
现在通过将ParallelDeflateThreshold属性设置为默认值来解决问题.但是我找不到这个问题的确切原因.为什么拉链失败突然?没有机器更换.
有没有办法自动将Auto属性转换为Notify属性?
INotifyPropertyChanged
或者WPF中MVVM的任何其他方式
public string Filename { get; set; }
Run Code Online (Sandbox Code Playgroud)
至
string _Filename;
public string Filename {
get { return _Filename; }
set {
if (PropertyChanged != null) {
_Filename = value;
PropertyChanged(this, new PropertyChangedEventArgs("Filename"));
}
}
}
Run Code Online (Sandbox Code Playgroud)