我有一个静态计时器类将被任何网页调用来计算每个页面已经被构造了多长时间。 我的问题是静态类线程安全吗? 在我的例子中,并发用户会导致我的开始和结束时间有问题吗? 例如不同的线程覆盖我的开始和结束值。 public static class Timer { private static DateTime _startTime; private static DateTime _stopTime; /// <summary> /// Gets the amount of time taken in milliseconds /// </summary> /// <returns></returns> public static decimal Duration() { TimeSpan duration = _stopTime – _startTime; return duration.Milliseconds; } public static void Start() { _startTime = DateTime.Now; } […]
注意:我并不是很擅长Multithreaded编程,但是我现在的项目让我这么做,所以我试图让我的脑海里围绕着什么是线程安全的,什么不是。 我正在阅读Eric Lippert 关于我所做的++的真棒答案之一 。 他说这就是真正发生的事情: 评估x来产生variables 该variables的值被复制到一个临时位置 临时值会递增以产生一个新值(不会覆盖临时!) 新值存储在variables中 操作的结果是新的价值 这让我想,如果两个线程调用++我怎么办? 如果第二个线程在步骤2时第一个线程在步骤3.(意思是如果第二个线程在第一个线程将新值存储在variables中之前将第二个线程拷贝到临时位置,该怎么办? 如果发生这种情况,那么似乎这两个线程只会增加i一次,而不是两次。 (除非整个事情都在lock )
我使用window control创build一个login,以允许用户login到我创build的WPF应用程序。 到目前为止,我已经创build了一个方法来检查用户是否在login屏幕上的textboxinput了username和password的正确凭据,并binding两个properties 。 我通过创build一个bool方法来实现这一点,就像这样; public bool CheckLogin() { var user = context.Users.Where(i => i.Username == this.Username).SingleOrDefault(); if (user == null) { MessageBox.Show("Unable to Login, incorrect credentials."); return false; } else if (this.Username == user.Username || this.Password.ToString() == user.Password) { MessageBox.Show("Welcome " + user.Username + ", you have successfully logged in."); return true; } else […]
在这样的字典中: Dictionary<string, string> openWith = new Dictionary<string, string>(); openWith.Add("txt", "notepad.exe"); openWith.Add("bmp", "paint.exe"); openWith.Add("dib", "paint.exe"); openWith.Add("rtf", "wordpad.exe"); Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]); 输出是: 对于Key =“rtf”value = wordpad.exe {0}是什么意思?
我有一个控制器的行动,在Firefox本地和生产,并在IE本地,但IE浏览器在生产工作正常。 这是我的控制器操作: public ActionResult MNPurchase() { CalculationViewModel calculationViewModel = (CalculationViewModel)TempData["calculationViewModel"]; decimal OP = landTitleUnitOfWork.Sales.Find() .Where(x => x.Min >= calculationViewModel.SalesPrice) .FirstOrDefault() .OP; decimal MP = landTitleUnitOfWork.Sales.Find() .Where(x => x.Min >= calculationViewModel.MortgageAmount) .FirstOrDefault() .MP; calculationViewModel.LoanAmount = (OP + 100) – MP; calculationViewModel.LendersTitleInsurance = (calculationViewModel.LoanAmount + 850); return View(calculationViewModel); } 这里是我在IE中获得的堆栈跟踪: 错误。 处理您的请求时发生错误。 System.Reflection.TargetException:非静态方法需要一个目标。 System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object […]
我正在编写一些代码来序列化一些数据通过networking发送。 目前,我使用这个原始程序: 创build一个void*缓冲区 对我想通过networking发送的数据应用任何字节sorting操作,如hton系列 使用memcpy将内存复制到缓冲区中 通过networking发送内存 问题在于,对于各种数据结构(通常包含void *数据,所以您不知道是否需要关心字节sorting),代码变得非常臃肿,序列化代码对于每个数据结构都是非常特定的,不能完全重用。 C的一些好的序列化技术是什么使这更容易/不那么难看? – 注:我绑定到一个特定的协议,所以我不能自由select如何序列化我的数据。
在我的iOS应用程序中,我想使用NSMutableURLRequest为多部分文件使用java API上传文件。 这里是显示参数的forms。 <form action="API_URL" encType='multipart/form-data' method=post> <input type=file name="files"> <input type=submit value="Upload Attempt Files"> 编辑form2 <form action='URL' method="post" encType='multipart/form-data'> <input name="key1" value='123'> <input name="key2" value='asdf'> <input name="key3" value='qwerty'> <input name="key4" value='aaa'> <input name="key5" value='aaa'> <input name="key6" value='false'> <input type="file" name="files"> <input type=submit value="Create Forum Posts"> </form> 我怎样才能做到这一点。 这里的这个问题展示了如何在iOS中使用AFNetworking (目标c)上传多部分文件。 但我没有得到如何把参数按照我使用的forms。 请帮助和build议
我是OpenCV的初学者。 我试图做一个示例Android应用程序来匹配使用OpenCV模板匹配给定图像中的模板图像。 我在互联网search,我无法find一个合适的Android或Java代码,满足我的要求。 但是我有C ++代码。 我不知道如何翻译它。 http://docs.opencv.org/doc/tutorials/imgproc/histograms/template_matching/template_matching.html 你能帮我find一个合适的java或android代码。 或者请帮助我把这个C ++代码转换成java,我可以在android应用程序内使用。 先谢谢你。 C ++代码 #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <iostream> #include <stdio.h> using namespace std; using namespace cv; /// Global Variables Mat img; Mat templ; Mat result; char* image_window = "Source Image"; char* result_window = "Result window"; int match_method; int max_Trackbar = 5; /// Function Headers […]
我搞乱了multidimensional array和指针。 我一直在看一个程序,打印出一个简单的数组的内容和地址。 这是我的数组声明: int zippo[4][2] = { {2,4}, {6,8}, {1,3}, {5,7} }; 我目前的理解是, zippo是一个指针,它可以保存一些其他指针的地址。 默认情况下, zippo保存指针zippo[0]的地址,也可以保存指针zippo[1] , zippo[2]和zippo[3] 。 现在,采取以下声明: printf("zippo[0] = %p\n", zippo[0]); printf(" *zippo = %p\n", *zippo); printf(" zippo = %p\n", zippo); 在我的机器上,输出如下: zippo[0] = 0x7fff170e2230 *zippo = 0x7fff170e2230 zippo = 0x7fff170e2230 我完全理解为什么zippo[0]和*zippo具有相同的值。 它们都是指针,它们都存储整数2的地址(默认值),或者zippo[0][0] 。 但是zippo什么共享相同的内存地址? zippo不应该存储指针zippo[0]的地址吗? Whaaaat?
我正在尝试编写一个函数来确定两个相同大小的位图是否相同。 我现在所使用的函数只是比较每个位图中的一个像素,在第一个不相等的像素处返回false。 虽然这个工作,并且对于小的位图效果很好,但是在制作过程中,我将会在一个紧密的循环和更大的图像中使用它,所以我需要一个更好的方法。 有没有人有任何build议? 我使用的语言是C#顺便说一句 – 是的,我已经在使用.LockBits方法。 =) 编辑 :我已经编写了一些build议的实现,这里是基准。 设置:两个相同的(最坏的情况下)位图,大小100×100,每个10,000次迭代。 结果如下: CompareByInts (Marc Gravell) : 1107ms CompareByMD5 (Skilldrick) : 4222ms CompareByMask (GrayWizardX) : 949ms 在CompareByInts和CompareByMask我正在使用指针直接访问内存; 在MD5方法我使用Marshal.Copy来检索一个字节数组,并将其作为parameter passing给MD5.ComputeHash。 CompareByMask只是稍微快一点,但考虑到上下文,我认为任何改进都是有用的。 感谢大家。 =) 编辑2 :忘了closures优化 – 这样做可以使GrayWizardX的答案更具有提升性: CompareByInts (Marc Gravell) : 944ms CompareByMD5 (Skilldrick) : 4275ms CompareByMask (GrayWizardX) : 630ms CompareByMemCmp (Erik) : 105ms 有趣的是,MD5方法根本没有改进。 编辑3 :张贴我的答案(MemCmp)其他方法吹出来的水。 […]