我想使用HTML敏捷包来解析复杂网页中的表,但我在对象模型中丢失了.
我查看了链接示例,但没有找到任何表数据.我可以使用XPath来获取表吗?在加载了关于如何获取表格的数据后,我基本上已经丢失了.我之前在Perl中做过这个,它有点笨拙,但很有效.(HTML::TableParser
).
如果能够解释正确的解析对象顺序,我也很高兴.
由于 Microsoft.Bcl.AsyncInterfaces 的问题,我无法使用 SqlType 提供程序。
我正在使用带有 .NET 4.7.2 和 F# 4.7.0.0 的最小程序。我的 Nuget 包包含对以下内容的引用:
包 id="Microsoft.Bcl.AsyncInterfaces" 版本="1.0.0" targetFramework="net472"
严重性代码说明项目文件行抑制状态错误 FS3033 类型提供程序“FSharp.Data.Sql.SqlTypeProvider”报告错误:无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息。详细信息:无法加载文件或程序集“Microsoft.Bcl.AsyncInterfaces,版本=1.0.0.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”或其依赖项之一。Das System kann die angegebene Datei nicht finden。TestSqlProvider C:\Users\weiism\source\repos\TestSqlProvider\TestSqlProvider\Program.fs 9 活动
我能做些什么来解决这个问题?
在一个复杂的多线程应用程序中,我每周会遇到一次内存不足异常.应用程序通过多个套接字发送/读取大量数据,其中读取数据被缓存以避免网卡缓冲区溢出.
分析内存异常的最佳策略是什么?在正常运行时,应用程序在Process Explorer中显示的大小为"所有堆中的总字节数",最大为1.5 GB.
拥有一个轮询的策略也是一种策略
GC.GetTotalMemory()
要么
PrivateMemorySize64()
一秒钟知道何时开始分析事物?我还没有考虑商业剖析器,我有点担心它们对性能的影响,这可能会给实际问题分析带来错误的结果.
在查询中仅使用日期时间字段的日期部分的最佳方法是什么?
我有一个日期时间字段,并希望按日期对其进行分组/计数.
根据MSDN的.Net 4.5 System.IO.Compression基于zlib.
我现在正在尝试将当前基于互操作的读取从非.NET服务器的zlib放气流更改为基于BCL的实现.
我的实现看起来像这样:
var enc = new UTF8Encoding();
var readBytes = BufferSizeRaw;
var outputBuffer = new byte[BufferSizeRaw];
var networkBuffer = _networkQueue.Take();
var ms = new MemoryStream(networkBuffer.InputBuffer, 0, networkBuffer.UsedLength);
using (Stream stream = new DeflateStream(ms, CompressionMode.Decompress))
while (readBytes==BufferSizeRaw)
{
readBytes = stream.Read(outputBuffer, 0, outputBuffer.Length);
stringBuffer+= enc.GetString(outputBuffer, 0, readBytes);
}
Run Code Online (Sandbox Code Playgroud)
在第一次调用DeflateStream上的解压缩/读取时收到以下异常:
块长度与其补码不匹配
基于互操作的呼叫使用var result=inflate(ref zStyream, ZLibFlush.NoFlush;
有没有人尝试相同或看到代码中的错误的原因或我的结束有错误的理解?我也尝试过截断前两个字节而没有任何运气.
前几个字节是20,202,177,13.
以干净的方式完成多线程应用程序的最佳方法是什么?
我在单独的套接字中从主线程启动几个套接字连接,并在主线程中等到我的工作日结束,并使用当前System.Environment.Exit(0)
终止它.
这导致其中一个孩子处理未处理的异常.我应该停止列表中的线程吗?我一直不愿意在孩子身上实施任何真正的停顿,因此我想知道最佳做法.套接字都很好地包装了适当的析构函数,用于注销和关闭,但它仍然会导致错误.
我意识到 Aeron 适合处理小消息,但是我希望在我们的堆栈中有一个单一的协议,并且我们的一些消息很容易达到 100Mb 的大小。
文档不清楚哪些设置会影响这个问题的答案。我担心的是默认缓冲区设置不允许这种大小的消息。或者缓冲区设置对最大应用程序消息大小没有影响吗?
我正在使用一个允许使用StreamWriter进行日志记录的外部库 - 现在我想根据日志记录的内容添加一些处理.由于我想避免遍历日志文件,我想编写一个继承自StreamWriter的类.
使用少量方法/构造函数的重新实现从StreamWriter继承的最佳方法是什么?
我目前正在使用带有C#COM Interop的Excel 2007编写大约200个Excel电子表格.
不幸的是,我需要大约4分钟来写这200张纸 - 每张纸有大约1000行,8-10列.
我怎样才能加快速度?
我的代码基本上是这样的:
var xlApp = new Excel.Application();
xlApp.DisplayAlerts=false;
foreach (x in z) {
var wb = xlApp.Workbooks.add(XLWBATemplae.xlWBATWorksheet);
var ws = (Worksheet)wb.Worksheets[1];
//fill data into sheet
wb.SaveAs(fileName);
wbClose();
}
Run Code Online (Sandbox Code Playgroud)
澄清:我现在正在单独填写每个单元格
我会尝试一些你的建议,然后接受最好的解决方案.
我喜欢使用在更改属性时锁定的私有对象同步自身的对象.有没有通用的方法来实现这一目标?对于每个属性,我的代码看起来总是这样(带有一个更衣室对象)
private Object locker = new Object();
private int x;
public int X
{
get {return x;}
set{
lock(locker){x=value;}
}
Run Code Online (Sandbox Code Playgroud)
是否是实现线程安全修改属性的更简单方法.
c# ×7
.net ×1
.net-4.5 ×1
aeron ×1
com-interop ×1
date ×1
datetime ×1
excel ×1
f# ×1
html ×1
html-parsing ×1
informix ×1
mocking ×1
performance ×1
sql ×1
streamwriter ×1
termination ×1
zlib ×1