有没有办法在.net 中序列化匿名类型?正常的 XmlSerializer 会失败,因为该类型没有定义无参数构造函数;NetDataContractSeralizer 失败,因为我们无法将 DataContract 或 Serialized 属性标记为匿名类。
那么有什么聪明的办法或者我们就是做不到吗?
任何人都可以建议我为Visual Studio 2010提供一个好的.net代码覆盖插件除了dotCover?[dotCover 1.0 RC有问题,它挂起VS 2010] VS2010自己的覆盖工具不支持nUnit测试.我想要一个支持nUnit测试的插件.
这是情况,我正在开发一个二叉搜索树,并且在树的每个节点中,我打算存储它自己的高度,以便在avl树形成期间进一步平衡树.以前我有一个迭代方法来计算平衡树时节点的高度,如下所示.
(以下代码属于一个被称为AVLTree<T>子类的类BinarySearchTree<T>)
protected virtual int GetBalance(BinaryTreeNode<T> node)
{
if(node != null)
{
IEnumerable<BinaryTreeNode<T>> leftSubtree = null, righSubtree = null;
if (node.Left != null)
leftSubtree = node.Left.ToEnumerable(BinaryTreeTraversalType.InOrder);
if (node.Right != null)
righSubtree = node.Right.ToEnumerable(BinaryTreeTraversalType.InOrder);
var leftHeight = leftSubtree.IsNullOrEmpty() ? 0 : leftSubtree.Max(x => x.Depth) - node.Depth;
var righHeight = righSubtree.IsNullOrEmpty() ? 0 : righSubtree.Max(x => x.Depth) - node.Depth;
return righHeight - leftHeight;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但它带来了很多性能开销.
所以我在插入时在每个节点中存储高度值BinarySearchTree<T>.现在在平衡期间,我能够避免这种迭代,并且我正在获得所需的性能AVLTree<T>.
但现在的问题是,如果我尝试按顺序插入大量数据说1-50000 BinarySearchTree<T>(不平衡它),我得到StackoverflowException.我正在提供导致它的代码.你能帮我找一个能避免这个例外的解决方案,也不会影响其子类的表现AVLTree<T> …
如何使用C#创建真正的函数管道?我有一些想法如下,但它不是一个真正的管道
public static IEnumerable<T> ForEachPipeline<T>(this IEnumerable<T> source, params Func<T, T>[] pipeline)
{
foreach (var element in source) {
yield return ExecutePipeline(element, pipeline);
}
}
private static T ExecutePipeline<T>(T element, IEnumerable<Func<T, T>> jobs)
{
var arg = element;
T result = default(T);
foreach (var job in jobs) {
result = job.Invoke(arg);
arg = result;
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,每个元素IEnumerable<T>只有在前一个元素完成执行所有函数(即退出管道)之后才能进入管道,但是根据定义,如果element1完成执行func1并开始执行func2,到那时element2应该开始执行func1并且这样就维持了管道中数据的持续流动.
这种情况是否可以在C#中实现?如果可能的话请给我一些示例代码.
我在使用带有EF CTP5的SQLite数据库时非常困难.我只是试图用SQLite 执行这个MSDN示例.但是在线
var food = db.Categories.Find("FOOD");
Run Code Online (Sandbox Code Playgroud)
我收到运行时异常:
System.Data.SQLite.SQLiteException(0x80004005):SQLite errorno这样的表:Categories
注意:必须修改app.config文件,如下所示:
App.config中
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
</startup>
<runtime>
<generatePublisherEvidence enabled="false" />
</runtime>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite"
description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
</DbProviderFactories>
</system.data>
<connectionStrings>
<add name="ProductContext" connectionString="Data Source=D:\CodeFirst.db;Version=3;New=True;" providerName="System.Data.SQLite" />
</connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud) 使用FileSystemWatcher,我们可以监视特定文件系统的IO活动,但无论如何都要知道哪个正在运行的进程导致该IO?
更具体地说,假设一个正在运行的进程即.abc.exe正在驱动器D上创建一个文件text.txt.我们可以使用FileSystemWatcher监视已在驱动器D中创建了一个名为text.txt的文件,但我们是否可以通过编程方式确定名为abc.exe的进程正在创建该特定文件在驱动器D?
我想在 ubuntu 中用 CLion 测试 Clang。默认情况下,Clion 会检测我的 gcc 安装,但我想使用 clang 而不是 gcc。此外,我不想通过 apt-get 安装 clang。我已经从 llvm 网站下载了 llvm、clang (3.6.2) 二进制文件。我想使用那个便携式的叮当二进制文件。
这是我的系统设置:
那么如何在这里使用 llvm-clang 设置 CLion 呢?
当我使用JUnit测试我的应用程序时,它正在按照布局模式的指定打印日志log4j2.xml,但是当我在WildFly 9中部署我的应用程序时,我不再获得相同的格式.甚至Log4j2中的日志级别在服务器中部署时也没有反映出来.
JUnit日志示例:
2016-02-15 11:14:16,314 DEBUG [main] btrcXAPool - 连接状态变为IN_POOL,通知线程最终等待连接
服务器日志示例:
11:11:33,796 INFO [org.quartz.core.QuartzScheduler] (ServerService线程池 - 89)调度程序quartzScheduler _ $ _ anindya-ubuntu1455514892022已启动.
Log4j2.xml:
<Configuration status="WARN" name="myapp" monitorInterval="5">
<Appenders>
<RollingFile name="RollingFile" fileName="${myapp.log-dir}/myapp.log"
filePattern="${myapp.log-dir}/$${date:yyyy-MM}/myapp-%d{MM-dd-yyyy}-%i.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy />
<SizeBasedTriggeringPolicy size="25 MB"/>
</Policies>
<DefaultRolloverStrategy max="100">
<Delete basePath="${myapp.log-dir}" maxDepth="2">
<IfFileName glob="*/myapp-*.log">
<IfLastModified age="7d">
<IfAny>
<IfAccumulatedFileSize exceeds="1 GB" />
<IfAccumulatedFileCount exceeds="1" />
</IfAny>
</IfLastModified>
</IfFileName>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="com.company.myapp" level="trace" additivity="false">
<AppenderRef ref="RollingFile"/>
</Logger> …Run Code Online (Sandbox Code Playgroud) 我想从用golang编写的服务器应用程序发送批量邮件.我只是不想使用任何第三方smtp服务器来避免使用配额限制.
如何在没有smtp服务器的情况下发送电子邮件?标准库中的smtp包可以帮助我吗?我看到使用smtp包的所有示例都需要第三方smtp服务器来发送电子邮件.
有没有在JavaFx8中选择Label文本?我知道,还有其他一些简单的解决方法,比如使用TextField.但是我的标签需要包含TextField不提供的包装工具的多行文本.如果我使用TextArea,问题是我不能像Text一样根据文本的大小缩小TextArea.所以我不能使用其中任何一个.
我对标签文本的使用如下:
<VBox>
<Label wrapText="true"
VBox.vgrow="ALWAYS"
maxHeight="Infinity" minHeight="-Infinity"
text="Some Random Subject Line With Very Large Text To Test The Wrap Text, Lorem Ipsum Dolor"/>
</VBox>
Run Code Online (Sandbox Code Playgroud)
根据VBox宽度,Label的高度会调整大小以完全适合文本.我不能使用TextArea或TextField来模拟这种行为.但我需要能够从Label中选择文本.有任何想法吗?