我有一个问题,需要我计算可用的最大上传和下载,然后将我的程序的使用限制为它的一个百分比。但是,我想不出找到最大值的好方法。
目前,我能想出的唯一解决方案是在客户端和服务器之间传输几兆字节的数据,然后测量传输所需的时间。然而,这种解决方案是非常不可取的,因为对于 100,000 个客户端,它可能会导致我们服务器的带宽使用量增加太多(已经太高了)。
有没有人有解决这个问题的方法?
请注意,我最感兴趣的是在数据离开 ISP 网络之前传输数据的限制;我认为这很可能是导致其他程序通信降级的瓶颈发生的地方。不过,如果我错了,请纠正我。
编辑:经过进一步调查,我认为这是不可能的;在离开 ISP 网络时,要准确测量最大传输速率涉及的变量太多。不过,让问题保持开放,以防有人提出准确的解决方案。
我想提前道歉,因为这不是一个很好的问题.
我有一个服务器应用程序在专用的Windows服务器上作为服务运行.非常随机,这个应用程序崩溃,并没有提示导致崩溃的原因.
当它崩溃时,事件日志有一个条目表明应用程序失败,但没有提供原因的线索.它还提供了有关故障模块的一些信息,但它似乎不太可靠,因为故障模块通常在每次崩溃时都不同.例如,最新的说它是ntdll,前一个说它是libmysql,之前的那个说它是netsomething,依此类推.
应用程序中的每个线程都包含在try/catch (...)(从异常处理程序抛出的任何东西/未特别捕获),__try/__except(结构化异常)和try/catch(特定C++异常)中.应用程序使用/ EHa编译,因此catch all也将捕获结构化异常.
所有这些异常处理程序都做同样的事情.首先,创建崩溃转储.其次,将一个条目记录到磁盘上的新文件中.第三,在应用程序日志中记录一个条目.在这些崩溃的情况下,没有发生这种情况.最底层的异常处理程序(the try/catch (...))什么都不做,它只是终止线程.主应用程序线程处于睡眠状态,无法抛出异常.
应用程序日志文件只是停止记录.不久之后,监视服务器的进程注意到它不再响应,发送警报并再次启动它.如果服务器监视器注意到服务器仍在运行,但只是没有响应,则需要转储该进程并报告此情况,但这不会发生.
除了未捕获的异常之外,我可以提出的这种行为的唯一另一个原因是呼叫exit或类似.搜索代码不会调用任何可以终止进程的函数.我还确保程序没有正常终止(即服务管理器的停止请求).
我们已经尝试使用windbg附加运行它(没有机会使用Visual Studio,开销太高),但是当崩溃发生时它没有报告任何内容.
是什么导致应用程序崩溃?我们开始耗尽选项,并认为它可能是硬件故障,但这对我来说似乎不太可能.
这是一个满口的,所以这里有一段代码作为例子:
template<typename T>
void foo(const T& a, typename T::value_type::value_type b) { }
std::vector<std::vector<int>> vec;
foo(vec, 4); // Error, can't specialize function template
Run Code Online (Sandbox Code Playgroud)
这使用gcc编译并正确运行.由于上面评论的原因,它无法使用Visual Studio 2010进行编译.但是,如果最终value_type的前缀是template关键字,它将编译并正确运行.我有几个猜测为什么,但找不到标准的相关部分.
template<typename T>
void foo(const T& a, typename T::value_type::template value_type b) { }
std::vector<std::vector<int>> vec;
foo(vec, 4); // Compiles and runs correctly with Visual Studio 2010
Run Code Online (Sandbox Code Playgroud)
我知道上面的用法template是一个Visual Studio扩展,但是标准对于使用这样的类型有什么看法呢?gcc对代码的接受是否也是一个扩展,或者这是Visual Studio的一部分吗?
我尝试使用 执行此操作GetEffectiveRightsFromAcl,但对于由于我所属的组而被拒绝的文件,它没有返回正确的访问掩码。
例如,我有一个文件,unreadable.txt. 如果我拒绝当前用户的写访问权限unreadable.txt,则访问掩码会正确显示我没有写访问权限。但是,如果我拒绝“经过身份验证的用户”组的写入访问权限,则访问掩码意味着我拥有完全访问权限(但我没有)。
我的替代方法是手动迭代 Ace 列表并将我的 SID 与每个条目进行比较,但我无法找到一种干净或简单的方法来检查 Ace 是否属于某个组,以及当前用户是否属于该组。
作为扩展名,该文件可能不存在(即,它是一个新文件,即将写入),在这种情况下需要检查对该目录的访问。
对此有什么好的解决办法吗?似乎应该存在一种更简单的方法来执行此操作,而无需实际尝试读取/写入有问题的文件。
请参见以下代码:
struct Object;
struct Component
{
Component(Object* obj) { }
};
struct Renderable : public virtual Component
{
virtual void Render() = 0;
};
struct AnimationRenderer : public Renderable
{
AnimationRenderer(Object* obj) : Component(obj) { }
virtual void Render() { }
};
Run Code Online (Sandbox Code Playgroud)
由于没有与Component::Component()from的匹配调用,因此无法编译Renderable::Renderable()。
我可以通过提供Renderable一个构造函数来使此示例工作Renderable() : Component(NULL) { },即使Renderable将永远无法初始化Component。
因为Renderable是抽象类,所以永远不能直接实例化它。由于它实际上是从继承的Component,因此它将永远无法调用的初始化Component。
语言要求永远/永远不能调用代码的原因是什么?
我在Linux上运行了一个死锁的.NET Core进程.我已经附加了lldb并且我可以看到有数百个线程被卡住Monitor.ReliableEnter,并且它们似乎都试图锁定同一个对象,但我无法弄清楚哪个线程正在持有它.
使用windbg通过!SyncBlk命令在Windows上这是微不足道的,但据我所知,Linux上没有相应的东西.对象的同步块包含持有锁的线程,我可以找到被锁定对象的同步块索引,但我不知道同步块表在内存中的位置.
如何确定哪个线程持有此对象的锁?
这个问题非常类似于如何在一个混洗连续整数数组中找到重复元素?,但有一些额外的要求.
您有一个连续整数列表,没有特定的顺序.无法保证这些整数的范围或列表中的元素数量.
此列表缺少一个整数,并包含另一个整数的副本.
这样一个列表的一个例子是{16,12,13,17,14,13}; 在这种情况下,缺少的整数是15,重复的是13.
考虑到小数据集和大数据集,找到这两个数字的最省时的方法是什么?有没有比O(n log n)更好的时间复杂度的解决方案,它不会阻塞小数据集?
我有一个应用程序抛出许多(已处理)异常.特别是有一种类型的例外我想打破.
是否可以在特定的用户定义的异常上使调试器中断?我不明白为什么这是不可能的,因为它确实知道抛出的异常的类型.
我可以通过在异常的构造函数中设置断点来解决这个问题,但是知道如何以"正确"的方式做到这一点会很好.
我有一个从请求主体接收参数的动作。客户端使用二进制格式使用此API,该格式可能会将请求模型序列化为空主体。
如果我用空的请求正文敲击这些动作之一,则该动作将使用null请求模型的默认值(即)来调用,但是模型状态被标记为无效。通常这是可以的,但是如果模型状态无效,我有一个中间件会响应并显示错误。
有什么方法可以使ASP.NET Core更优雅地处理空的请求主体,并且不将模型状态标记为无效?
我知道有一些类似的问题,但我不认为他们真的有与我相同的要求.
我们的DLL是使用Visual Studio 2005编译的,由于安装限制,必须与特定版本的CRT链接.这是绝对的,用最新版本重新编译它不是一个解决方案.
我们最近更新了Boost库.但是,当我构建Boost时,它会自动使用最新的CRT.现在,当我将Boost与我们的程序联系起来时,它会对CRT的最新(错误)版本和CRT的旧(正确)版本产生依赖关系.需要依赖最新版本.
这个问题的最佳解决方案是什么?目前,我能想到的最好的是使用旧版本重建Boost,但我不知道如何在不修改源代码的情况下轻松完成.
如果有办法强制Visual Studio全局使用特定版本的CRT(而不是基于每个项目),那将是很好的.或者只是简单地删除最新版本的CRT,但我很确定这是不可能的,因为我认为它被认为是操作系统的一部分.
c++ ×5
c ×2
c# ×2
.net-core ×1
acl ×1
algorithm ×1
asp.net-core ×1
bandwidth ×1
boost ×1
breakpoints ×1
crash ×1
dependencies ×1
exception ×1
inheritance ×1
lldb ×1
msvcrt ×1
nested ×1
networking ×1
tcp ×1
templates ×1
typename ×1
winapi ×1
windows ×1