草庐IT

数字安全

全部标签

c# - 非规范化数字 C#

我最近遇到了非规范化定义,我了解到有些数字无法以规范化形式表示,因为它们太小而无法适应其相应的类型。根据IEEE所以我试图做的是在将非规范化数字作为参数传递时进行捕获,以避免使用此数字进行计算。如果我理解正确,我只需要在非规范化范围内寻找数字privateboolIsDenormalizedNumber(floatnumber){returnMath.Pow(2,-149)我的解释正确吗? 最佳答案 我认为更好的方法是检查位。规范化或非规范化是二进制表示的特征,而不是值本身的特征。因此,您将能够通过这种方式更可靠地检测到它,并且您可

c# - 在 C# 中实现稀疏数组/将整数映射到特定桶/范围数字的最快方法

我最初的问题是我需要在C#中实现一个非常快速的稀疏数组。最初的想法是使用正常的Dictionary并将其包装在我自己的类中以仅公开TValue类型参数。事实证明这很慢。所以我的下一个想法是将所需范围(UInt32.MinValue到UInt32.MaxValue)中的每个整数映射到某个大小的桶并使用它。所以我正在寻找一种将无符号整数X映射到桶Y的好方法,例如:将数字0-1023映射到8个不同的桶,每个桶包含128个数字,0-127、128-255。但如果有人有更好的方法在C#中实现快速稀疏数组,那也将不胜感激。 最佳答案 我也注意到

c# - 检查 null 线程安全吗?

我有一些代码在新线程上抛出异常,我需要在主线程上确认和处理这些异常。为实现这一点,我通过使用保存抛出异常的字段在线程之间共享状态。我的问题是我是否需要在检查null时使用锁,就像我在下面的代码示例中所做的那样?publicclassMyClass{readonlyobject_exceptionLock=newobject();Exception_exception;publicMyClass(){Task.Run(()=>{while(CheckIsExceptionNull()){//Thisconditionalwillreturntrueif'somethinghasgonew

c# - Fluent Validation 不接受带有千位分隔符的数字

我有一个ASP.NETMVC5项目,其中包含针对MVC5的FluentValidation。我还在使用jQuery屏蔽插件自动将千位值添加到double值。在我的模型中:[Display(Name="Turnover")][DisplayFormat(ApplyFormatInEditMode=true,ConvertEmptyStringToNull=true,DataFormatString="#,##0")]publicdouble?Turnover{get;set;}在我看来:@Html.DisplayNameFor(model=>model.Turnover)@Html.Te

c# - 如何从 EF 的非异步 SaveChanges 安全地调用异步方法?

我正在使用ASP.NETCore和具有SaveChanges和SaveChangesAsync的EFCore。在保存到数据库之前,在我的DbContext中,我执行了一些审计/日志记录:publicasyncTaskLogAndAuditAsync(){//doasyncstuff}publicoverrideintSaveChanges{/*await*/LogAndAuditAsync();//whatdoIdohere???returnbase.SaveChanges();}publicoverrideasyncTaskSaveChangesAsync{awaitLogAndAu

c# - CultureInfo线程安全

我有一个多线程应用程序来解析一些文本,它需要使用英语文化信息来解析文本中的数字。所以,我不想每次调用解析函数时都创建EngCulture。目前我将EngCulture作为参数传递,但我对此并不满意。我想将EngCulture定义为静态成员,以便线程共享它。Msdn文档说“此类型的任何公共(public)静态(在VisualBasic中共享)成员都是线程安全的。不保证任何实例成员都是线程安全的。”我只是在使用以下函数,那么我怎么知道TryParse是否使用了EngCulture的任何实例成员?publicstaticCultureInfoEngCulture=newCultureInfo

c# - 通过线程池多路复用 C# 5.0 的异步——线程安全吗?

这可能看起来有点疯狂,但如果我可以合理地确定它不会导致奇怪的行为,我正在考虑将其作为更大库的一部分。方法:使用分派(dispatch)到线程池的SynchronizationContext运行异步用户代码。用户代码看起来像这样:asyncvoidDoSomething(){intsomeState=2;awaitDoSomethingAsync();someState=4;awaitDoSomethingElseAsync();//someStateguaranteedtobe4?}我不确定对someState的访问是否是线程安全的。虽然代码将在一个“线程”中运行,这样操作实际上是完全

c# - 具有上限的线程安全集合

我正在寻找具有以下属性的集合:threadsafe:将在asp.net中使用,多个客户端可以同时尝试添加、删除和访问成员ma​​xelements:我希望能够在构造时设置一个上限,最大元素数TryAdd:一种与BlockingCollection.TryAdd(T)相同的方法将是完美的,即如果已达到最大元素数,它将返回false类似字典:在大多数其他方面是ConcurrentDictionary将是完美的,即能够通过键识别元素,删除任何项目(不仅仅是第一个或最后一个,我认为这将是BlockingCollection的限制)在尝试自己动手之前,我的问题是:我是不是错过了一个可以对集合中的

c# - 文件上传安全问题

我有一个可供公众使用的Web表单,它具有文件上传功能。现在文件要么保存在网络服务器上,要么作为电子邮件附件发送出去。我们对大小有限制,即15MB和上传文件的扩展名。我们的SMTP服务器位于同一网络服务器上。我担心安全问题,因为任何人都可以上传恶意文件并对我们的生产Web服务器产生影响。这种公开的文件上传控制对我有什么风险?是否有人可以通过上传恶意文件在Web服务器上执行恶意脚本。我做了一些研究,发现了以下几点如果我在电子邮件中将文件作为附件发送,该文件将临时存储在临时ASP.Net文件夹中,一旦发送电子邮件,该文件就会被删除。您可以在将文件保存到文件系统之前重命名文件。您可以将文件保存

c# - SignalR 安全

我是SignalR的新手,但我很好奇它的安全性。例如,我创建了以下方法来向所有用户发送消息,如下所示:publicclassNotificationHub:Hub{publicvoidSend(stringmessage){Clients.All.broadcastMessage(message);}}SignalR在js文件(集线器)中生成以下方法:proxies.notificationHub.server={send:function(message){returnproxies.notificationHub.invoke.apply(proxies.notificationH