可能重复:
如何在C#中模拟文件系统进行单元测试?
我使用Moq作为模拟框架,将单元测试编写到我的代码中.
我的代码包括使用对System.IO
类的直接调用来调用文件系统.例如,File.Exists(...)
等等.
我想将该代码更改为更易测试,所以我应该有一个接口,比方说IFile
,用相关的方法Exists(string path)
.
我知道我可以从头开始编写它,但我认为可能有一个完整,健壮的框架,它具有文件系统的接口和实现.这个(期望的)框架也可以是某种"服务",因此它的API不必是System.IO
命名空间的"接口等价物" .
请注意,我真的很想拥有接口(而不是静态方法),以便我的代码可以用于依赖注入
/Source/TfsLibrary/Utility/
具体细节参见源代码) 还有其他建议吗?
在我为XNA游戏制作的关卡编辑器(编辑器也在XNA中)我允许缩放Texture2D对象.
当用户试图保存关卡时,我想实际调整磁盘上的图像文件大小,这样就不需要在游戏中进行缩放.
有没有一种简单的方法可以从缩放的Texture2D对象创建图像文件(首选PNG)?
编辑:建立标记系统的人.不读这个.这不是你想要的.当我不知道RDBMS都有自己的优化方法时,我问过这个,只需使用简单的多对多方案.
我有一个发布系统,有数百万的帖子.每个帖子都可以有无数个与之关联的标签.
用户可以创建具有注释,创建日期,所有者等的标签.标签几乎就像一个帖子本身,因为人们可以发布关于标签的注释.
每个标记关联都有一个所有者和日期,因此我们可以看到谁添加了标记以及何时添加.
我的问题是如何实现这一点?它必须通过标签快速搜索帖子,或通过邮寄标签.此外,用户可以通过在字段中键入名称来为帖子添加标签,有点像谷歌搜索栏,它必须为您填写标签名称的其余部分.
我目前有3个解决方案,但不确定哪个是最好的,或者是否有更好的方法.
请注意,我没有显示笔记的布局,因为一旦我得到适当的标签解决方案,这将是微不足道的.
方法1.链接列表
post中的tagId指向tag_assoc中的链表,应用程序必须遍历列表,直到flink = 0
post: id, content, ownerId, date, tagId, notesId
tag_assoc: id, tagId, ownerId, flink
tag: id, name, notesId
Run Code Online (Sandbox Code Playgroud)
方法2.非规范化
tags只是一个VARCHAR或TEXT字段,包含tagId:ownerId的制表符分隔数组.它不能是固定的大小.
post: id, content, ownerId, date, tags, notesId
tag: id, name, notesId
Run Code Online (Sandbox Code Playgroud)
方法3. Toxi
(来自:http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html,这里也是一样的:标签或标签的推荐SQL数据库设计)
post: id, content, ownerId, date, notesId
tag_assoc: ownerId, tagId, postId
tag: id, name, notesId
Run Code Online (Sandbox Code Playgroud)
方法3提出了一个问题,迭代tag_assoc中每一行的速度有多快?
方法1和2应该通过post快速返回标签,但对于按标签发布的帖子,必须另外创建一个查找表.
我不得不担心的最后一件事是按名称优化搜索标签,我还没有完成.
我在这里制作了一个ASCII图:http://pastebin.com/f1c4e0e53
我有一个函数,它采用一个有两个或三个元素的列表.
;; expecting either ((a b c) d) or ((a b c) d e)
(define (has-third-item ls)
(if (null? (caddr ls))
false
true)
)
Run Code Online (Sandbox Code Playgroud)
但是这段代码失败了
mcar: expects argument of type <mutable-pair>; given ()
Run Code Online (Sandbox Code Playgroud)
在(null?(caddr ls))表达式上.
我也试过了
(eq? '() (caddr ls))
Run Code Online (Sandbox Code Playgroud)
但它也没有用.如何判断是否有第三项?
是否可以在Python中声明变量,如此?:
var
Run Code Online (Sandbox Code Playgroud)
所以它初始化为None?似乎Python允许这样做,但是一旦你访问它,它就会崩溃.这可能吗?如果没有,为什么?
编辑:我想这样做的情况:
value
for index in sequence:
if value == None and conditionMet:
value = index
break
Run Code Online (Sandbox Code Playgroud)
这可能不完全不是.NET相关的问题.我正在编写一个.NET应用程序来控制一些小工具.我定期向小工具发送命令(比如每500毫秒).一旦我发送命令,我就会启动一个计时器.(.NET秒表类)
如果小工具在10毫秒内没有响应,我再次发送命令.如果确实响应,我会继续通过发送更多命令和处理响应来监控小工具状态.
我有2个或3个秒表计时器同时运行,为这个小工具做其他事情.
现在,我想监视和控制可能数以千计的这些小工具(可能高达5000).如果我为小工具创建一个对象,我将查看并行运行的10000到15000个秒表对象.我不确定秒表是如何工作的,但我认为他们依靠硬件计时器或某些东西来跟踪时间.
我的问题是,Windows可以同时处理如此大量的秒表吗?
我正在尝试为C#中的参数查询构建SQL以查找包含该LIKE %%
命令的查询.
这是我想要实现的(请注意数据库是Firebird)
var SQL = string.format("SELECT * FROM {0} WHERE {1} LIKE '%?%'", TABLE, NAME);
cmd.Parameters.AddWithValue(NAME, "JOHN");
Run Code Online (Sandbox Code Playgroud)
现在我尝试了每一个排列以使参数起作用,我已经尝试过;
将%
字符添加到参数中
cmd.Parameters.AddWithValue(NAME, "%" + "JOHN" + "%");
Run Code Online (Sandbox Code Playgroud)要么
cmd.Parameters.AddWithValue(NAME, "'%" + "JOHN" + "%'");
Run Code Online (Sandbox Code Playgroud)我似乎无法使其工作,我如何使用LIKE查询的参数工作.
欢迎提出建议!
我希望创建(作为概念验证)OCaml(最好)程序,将PCL代码转换为PDF格式.我不知道从哪里开始.这样做有标准化的算法吗?是否有其他建议可用于完成此任务?
谢谢!
我正在使用DataInputStream并且有一个关于EOFExceptions的问题.
根据java文档:
表示在输入期间意外到达文件末尾或流末尾的信号.
此异常主要由数据输入流用于信号流的结束.请注意,许多其他输入操作在流末尾返回特殊值而不是抛出异常.
这是否意味着当生成EOFException时,流不会再次打开?这是否意味着你永远不会期待它的更多数据?
如果输出流连接到输入流并且调用了outputstream.close(),输入流是否会收到EOFException或IOException?
IOException被描述为:
表示发生某种I/O异常的信号.此类是由失败或中断的I/O操作产生的一般异常类.
输出流上的close是否会在datainputstream端产生EOFException或IOException?
.net ×3
c# ×2
sql ×2
database ×1
eofexception ×1
file-io ×1
firebird ×1
ghostscript ×1
input ×1
java ×1
lisp ×1
mocking ×1
ocaml ×1
parameters ×1
pdf ×1
performance ×1
python ×1
ruby ×1
scalability ×1
scheme ×1
stopwatch ×1
stream ×1
tags ×1
unit-testing ×1
windows ×1
xna ×1