我需要对非常大的整数进行模运算.我的平台支持的最大整数(编辑:.NET 2.0)是一个64位整数,对于我正在使用的数字来说,它不够大.
我怎么能在真正的大整数上做模数,比如12654875632126424875387321657498462167853687516876876?
我有一个解决方案,将数字视为一个字符串并逐个处理它,但我想知道是否有更好的方法.
这是我的函数将数字视为字符串.它基本上可以像你手工做的那样进行长时间的划分.
Public Function MyMod(ByVal numberString As String, ByVal modby As Integer) As Integer
Dim position As Integer = -1
Dim curSubtraction As Integer = 0
While position < numberString.Length - 1
position += 1
curSubtraction = curSubtraction * 10 + CInt(numberString.Substring(position, 1))
If (curSubtraction / modby) < 1 And position = numberString.Length - 1 Then
Return curSubtraction
ElseIf (curSubtraction / modby) < 1 Then
Continue While
Else
curSubtraction = curSubtraction Mod modby
End If
End While …Run Code Online (Sandbox Code Playgroud) 在我处理的应用程序中,任何业务逻辑错误都会导致抛出异常,并且调用代码会处理异常.这种模式在整个应用程序中使用并且运行良好.
我有一种情况,我将尝试从业务层内部执行许多业务任务.对此的要求是一个任务的失败不应导致进程终止.其他任务仍然可以执行.换句话说,这不是原子操作.我遇到的问题是,在操作结束时,我希望通过抛出异常来通知调用代码确实发生了异常.请考虑以下psuedo-code代码段:
function DoTasks(MyTask[] taskList)
{
foreach(MyTask task in taskList)
{
try
{
DoTask(task);
}
catch(Exception ex)
{
log.add(ex);
}
}
//I want to throw something here if any exception occurred
}
Run Code Online (Sandbox Code Playgroud)
我该扔什么?我在职业生涯之前遇到过这种模式.在过去,我保留了所有异常的列表,然后抛出包含所有捕获的异常的异常.这似乎不是最优雅的方法.重要的是从每个异常中保留尽可能多的细节以呈现给调用代码.
思考?
编辑:解决方案必须用.Net 3.5编写.我不能使用任何beta库,或Bradley Grainger(下面)提到的.Net 4.0中的AggregateException 对于抛出的集合异常将是一个很好的解决方案.
我正在启动一个项目,我认为这将受益于绑定(我有一个源列表表,几个浏览器视图等),但我认为它也是非常可行的,也许更容易理解,没有它们.根据我有限的经验,我发现绑定很难排除故障并且非常"神奇"(例如,很难在任何地方插入日志以确定哪些内容正在破坏,一切都可行或不起作用).
这只是我缺乏经验的谈话(在这种情况下,我可以坐下来花一些时间来完成我对绑定的理解并期望事情开始变得更清晰/更容易)或者我会更好地自己编写所有胶水代码我确信我能理解并排除故障的方式.
我必须承认我有点像OOP怀疑论者.面向对象的不良教学和实验经验无济于事.所以我转变成了Visual Basic中的狂热信徒(经典之作!).
然后有一天我发现C++已经改变了,现在有了STL和模板.我真的很喜欢!使语言有用.然后另一天MS决定对VB进行面部手术,我真的很讨厌无端更改的最终结果(使用"end while"而不是"wend"会让我成为一个更好的开发者?为什么不放下"next"for"结束了",为什么呢?为什么强迫getter和setter一起?等等?加上我发现无用的Java特性(例如继承,以及分层框架的概念).
现在,几年后,我发现自己在问这个哲学问题:遗产真的需要吗?
四人一组说我们应该支持对象组合而不是继承.在考虑它之后,我找不到你可以用继承做的事情,你不能用对象聚合和接口做.所以我想知道,为什么我们甚至在第一时间拥有它?
有任何想法吗?我很想看到一个例子,说明继承器肯定需要在哪里,或者使用继承而不是组合+接口可以导致更简单和更容易修改的设计.在以前的工作中,我发现如果你需要更改基类,你还需要修改几乎所有的派生类,因为它们取决于父行为.如果你使基类'方法虚拟...那么没有太多的代码共享发生:(
另外,当我最终创建自己的编程语言(我发现大多数开发人员共享的长期未满足的愿望)时,我认为添加继承没有任何意义......
我回忆起了一段时间.只需按以下步骤操作:
在office 2003中创建一个.doc/.xls/.ppt文件.在那里保留一些测试数据并关闭文件.现在重命名该文件,将其文件扩展名更改为随机字符串,注意它是无关联的,如test.asdfghjkl等.双击该文件,它在父应用程序中无缝打开.
现在AFAIK,windows检查文件的文件扩展名并使用它来执行操作,即打开一个应用程序并将文件传递给它打开.那么办公套件如何设法做到这一点?
编辑:扩展名更改为与另一个应用程序关联的扩展名的情况如何.是否有适当的优先级算法来处理?
您将获得一个32位无符号整数数组,其长度最大为2 32,其中包含数组中一半以上条目的属性等于N,对于某些32位无符号整数N.查找N查看每个数字在数组中只使用一次并使用最多2 kB的内存.
您的解决方案必须是确定性的,并保证找到N.
我正在尝试使用C#.NET读取MSMQ中的事务处理字母队列,并且得到:
工作组安装计算机不支持该操作
对于10个Stack Overflow点,我做错了什么?
我编写了一个简单的PowerShell过滤器,如果它的日期在指定的开始日期和结束日期之间,则将当前对象推送到管道中.管道下方的对象始终按升序排列,因此一旦日期超过指定的结束日期,我就知道我的工作已完成,我想告诉管道上游命令可以放弃他们的工作以便管道可以完成它的工作.我正在阅读一些非常大的日志文件,我经常想要检查一部分日志.我很确定这是不可能的,但我想问一下.
过了一段时间我想更新我的git repo,然后出了点问题.出现这种情况的正确方法是什么?
mblsha@siruba:~/src/psi/ $ git status
iris: needs merge
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: src/common.cpp
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
#
# unmerged: iris
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# gupdate.sh
mblsha@siruba:~/src/psi/ $ git submodule status
+cf237ef8f3d9dc058dbde47e6973e6388608ce60 iris (heads/master)
+cf237ef8f3d9dc058dbde47e6973e6388608ce60 iris …Run Code Online (Sandbox Code Playgroud) 我想知道在使用它们之前是否有一个快速简单的函数来清理我的url中的变量.(或$ _POST来想一想......)
我想我可以使用正则表达式来替换不允许使用的字符,但我有兴趣听听人们使用这种东西的方法吗?