nHibernate在多个线程上枚举相同的集合

2024-01-23

我有一个生产应用程序(IIS8、MVC5、nHibernate DAL),并且我注意到最近 CPU 使用率很高。循环应用程序池修复了它,但在从服务器进行一些诊断和内存转储来分析问题之后,我注意到多个线程尝试枚举同一集合的一致模式。最常见的一点是应用程序检查用户的角色。我怀疑这可能更多是因为这个代码是针对每个验证权限的请求运行的,所以它更有可能是它被卡住的集合?

public IList<Role> GetRoles(string username)
{
    var login = GetLoginForUser(username);
    return !login.Groups.Any() ? new List<Role>() : login.Groups.SelectMany(x => x.Roles).OrderBy(x => x.DisplayName).ToList();
}

我的 CurrentUser 对象有一个简单的界面,其中包含从依赖项解析器注入的用户详细信息。我已经验证了 UserId 是否存在并且有效,这一切都非常简单。当我查看这两个请求挂起时的转储时,我收到一条警告,表明多个线程正在枚举一个集合。当我检查转储中的两个线程时,我看到几乎相同的堆栈跟踪。 (我已经重命名了堆栈跟踪中的一些命名空间详细信息,但其他方面没有改变)。两个请求中的 userId(以及生成的配置文件)是相同的,因此看来这是由于两个单独的线程几乎同时尝试从数据库加载同一对象所致。

堆栈跟踪如下,但我不确定从这里到哪里去解决这个问题。

System.Collections.Generic.Dictionary`2[[System.__Canon, mscorlib],[System.Nullable`1[[System.Int32, mscorlib]], mscorlib]].FindEntry(System.__Canon)+129 
System.Collections.Generic.Dictionary`2[[System.__Canon, mscorlib],[System.Nullable`1[[System.Int32, mscorlib]], mscorlib]].TryGetValue(System.__Canon, System.Nullable`1<Int32> ByRef)+12 
NHibernate.AdoNet.ColumnNameCache.GetIndexForColumnName(System.String, NHibernate.AdoNet.ResultSetWrapper)+25 
NHibernate.AdoNet.ColumnNameCache.GetIndexForColumnName(System.String, NHibernate.AdoNet.ResultSetWrapper)+25 
NHibernate.AdoNet.ResultSetWrapper.GetOrdinal(System.String)+e 
NHibernate.AdoNet.ResultSetWrapper.GetOrdinal(System.String)+e 
NHibernate.Type.NullableType.NullSafeGet(System.Data.IDataReader, System.String)+29 
NHibernate.Type.NullableType.NullSafeGet(System.Data.IDataReader, System.String[], NHibernate.Engine.ISessionImplementor, System.Object)+16 
NHibernate.Type.NullableType.NullSafeGet(System.Data.IDataReader, System.String[], NHibernate.Engine.ISessionImplementor, System.Object)+16 
NHibernate.Persister.Collection.AbstractCollectionPersister.ReadKey(System.Data.IDataReader, System.String[], NHibernate.Engine.ISessionImplementor)+14 
NHibernate.Persister.Collection.AbstractCollectionPersister.ReadKey(System.Data.IDataReader, System.String[], NHibernate.Engine.ISessionImplementor)+14 
NHibernate.Loader.Loader.ReadCollectionElement(System.Object, System.Object, NHibernate.Persister.Collection.ICollectionPersister, NHibernate.Loader.ICollectionAliases, System.Data.IDataReader, NHibernate.Engine.ISessionImplementor)+34 
NHibernate.Loader.Loader.ReadCollectionElement(System.Object, System.Object, NHibernate.Persister.Collection.ICollectionPersister, NHibernate.Loader.ICollectionAliases, System.Data.IDataReader, NHibernate.Engine.ISessionImplementor)+34 
NHibernate.Loader.Loader.ReadCollectionElements(System.Object[], System.Data.IDataReader, NHibernate.Engine.ISessionImplementor)+d2 
NHibernate.Loader.Loader.ReadCollectionElements(System.Object[], System.Data.IDataReader, NHibernate.Engine.ISessionImplementor)+d2 
NHibernate.Loader.Loader.GetRowFromResultSet(System.Data.IDataReader, NHibernate.Engine.ISessionImplementor, NHibernate.Engine.QueryParameters, NHibernate.LockMode[], NHibernate.Engine.EntityKey, System.Collections.IList, NHibernate.Engine.EntityKey[], Bo+ab 
NHibernate.Loader.Loader.GetRowFromResultSet(System.Data.IDataReader, NHibernate.Engine.ISessionImplementor, NHibernate.Engine.QueryParameters, NHibernate.LockMode[], NHibernate.Engine.EntityKey, System.Collections.IList, NHibernate.Engine.EntityKey[], Bo+ab 
NHibernate.Loader.Loader.DoQuery(NHibernate.Engine.ISessionImplementor, NHibernate.Engine.QueryParameters, Boolean)+1e7 
NHibernate.Loader.Loader.DoQuery(NHibernate.Engine.ISessionImplementor, NHibernate.Engine.QueryParameters, Boolean)+1e7 
NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(NHibernate.Engine.ISessionImplementor, NHibernate.Engine.QueryParameters, Boolean)+7f 
NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(NHibernate.Engine.ISessionImplementor, NHibernate.Engine.QueryParameters, Boolean)+7f 
NHibernate.Loader.Loader.LoadCollection(NHibernate.Engine.ISessionImplementor, System.Object, NHibernate.Type.IType)+de 
NHibernate.Loader.Loader.LoadCollection(NHibernate.Engine.ISessionImplementor, System.Object, NHibernate.Type.IType)+de 
NHibernate.Loader.Collection.CollectionLoader.Initialize(System.Object, NHibernate.Engine.ISessionImplementor)+1c 
NHibernate.Loader.Collection.CollectionLoader.Initialize(System.Object, NHibernate.Engine.ISessionImplementor)+1c 
NHibernate.Persister.Collection.AbstractCollectionPersister.Initialize(System.Object, NHibernate.Engine.ISessionImplementor)+1e 
NHibernate.Persister.Collection.AbstractCollectionPersister.Initialize(System.Object, NHibernate.Engine.ISessionImplementor)+1e 
NHibernate.Event.Default.DefaultInitializeCollectionEventListener.OnInitializeCollection(NHibernate.Event.InitializeCollectionEvent)+16d 
NHibernate.Impl.SessionImpl.InitializeCollection(NHibernate.Collection.IPersistentCollection, Boolean)+1fa 
NHibernate.Collection.AbstractPersistentCollection.Initialize(Boolean)+2f 
NHibernate.Collection.AbstractPersistentCollection.Read()+d 
NHibernate.Collection.Generic.PersistentGenericBag`1[[System.__Canon, mscorlib]].System.Collections.Generic.IEnumerable<T>.GetEnumerator()+11 
System_Core_ni!System.Linq.Enumerable+<SelectManyIterator>d__14`2[[System.__Canon, mscorlib],[System.__Canon, mscorlib]].MoveNext()+10c 
System_Core_ni!System.Linq.Buffer`1[[System.__Canon, mscorlib]]..ctor(System.Collections.Generic.IEnumerable`1<System.__Canon>)+d9 
System_Core_ni!System.Linq.OrderedEnumerable`1+<GetEnumerator>d__0[[System.__Canon, mscorlib]].MoveNext()+6f 
System_Core_ni!System.Linq.OrderedEnumerable`1+<GetEnumerator>d__0[[System.__Canon, mscorlib]].MoveNext()+6f 
mscorlib_ni!System.Collections.Generic.List`1[[System.__Canon, mscorlib]]..ctor(System.Collections.Generic.IEnumerable`1<System.__Canon>)+17e 
System_Core_ni!System.Linq.Enumerable.ToList[[System.__Canon, mscorlib]](System.Collections.Generic.IEnumerable`1<System.__Canon>)+3b 
Company.ApplicationServices.SecurityService.GetRoles(System.String)+ef 

我目前正在 ActionFilter 中打开数据库事务,该事务在以下情况下打开:OnActionExecuting()发生,然后提交/回滚事务OnActionExecuted()发生。

我使用 StructureMap (v2.6.4.1) 进行依赖项注入,数据持久性的相关行如下。

var cfg = Fluently.Configure()
    .Database(MsSqlConfiguration.MsSql2008.ConnectionString(c => c.FromConnectionStringWithKey("DatabaseConnectionString"))
    .CurrentSessionContext<WebSessionContext>()
    // ... etc etc....
    .Cache(c => c.ProviderClass<NHibernate.Caches.SysCache2.SysCacheProvider>()
                .UseQueryCache()
                .UseSecondLevelCache()
                .UseMinimalPuts());

For<NHibernate.Cfg.Configuration>().Singleton().Use(cfg);
For<NHibernate.ISessionFactory>().Singleton()
    .Use(ctx =>
        {
            try
            {
                var config = ctx.GetInstance<NHibernate.Cfg.Configuration>();
                return config.BuildSessionFactory();
            }
            catch (SqlException ex)
            {
                ctx.GetInstance<IExceptionLogger>().Error(ex);
                throw;
            }
        });
For<NHibernate.ISession>().HybridHttpOrThreadLocalScoped()
    .Use(ctx => ctx.GetInstance<NHibernate.ISessionFactory>().OpenSession());

UPDATE:我仍在处理这个问题,并且希望得到一些提示,了解这是否是 nhibernate 的问题,或者我如何配置它?我的应用程序锁定到了今天我们不得不重新启动服务器的程度,因为有 19 个单独的线程试图枚举同一集合。

下面提到这可能是 SecurityService 生命周期范围的问题,我同意这是一种可能性。目前,我通过 Structuremap 通过依赖注入提供服务(最新版本 2.6 已发布,尚未更新到 3.x)。我在下面简要介绍了这些细节,希望内容简洁但仍然相关。

public class SecurityService : ISecurityService
{
    private readonly IRepository<Login> loginRepository;

    public IList<Role> GetCurrentUserRoles()
    {
        var login = GetLoginForCurrentUser();
        return GetRoles(login.Name);
    }

    public Login GetLoginForCurrentUser()
    {
        //Some logic to derive the current UserId {guid} via some resources injected into this service class.

        return loginRepository.GetReference(loginId);
    }
}

public class NHibernateRepository<T> : IRepository<T> where T : class
{
    protected ISession Session { get; set; }

    public NHibernateRepository(ISession session)
    {
        Session = session;
    }

    public T GetReference(object id)
    {
        return Session.Get<T>(id);
    }

    // Other methods typical of a repository class, nothing special
}

我的依赖解析器设置...

For<ISecurityService>().Use<SecurityService>();
For(typeof (IRepository<>)).Use(typeof (NHibernateRepository<>));
//And then the ISession is commented above.

nHibernate配置了WebSessionContext的内部上下文 ISessionFactory 是单例的 ISession 是 HybridHttpOrThreadLocalScoped ISecurityService 和 IRepository 都保留默认的 Transient

角色会被缓存,如果找不到,系统会调用安全服务上的 GetRoles 方法,我想我可能会遇到问题,因为它调用 GetRoles 的频率比需要的要频繁,但这超出了我现在遇到的多个并发枚举问题。

UPDATE:所以我很困惑,今天我在调用 GetReference 时遇到了同样的问题。 18 个独立的线程卡在枚举同一个集合上,但这一个线程是 nHibernate 内部的。

System.Collections.Generic.Dictionary`2[[System.__Canon, mscorlib],[System.Nullable`1[[System.Int32, mscorlib]], mscorlib]].FindEntry(System.__Canon)+129 
System.Collections.Generic.Dictionary`2[[System.__Canon, mscorlib],[System.Nullable`1[[System.Int32, mscorlib]], mscorlib]].TryGetValue(System.__Canon, System.Nullable`1 ByRef)+12 
NHibernate.AdoNet.ColumnNameCache.GetIndexForColumnName(System.String, NHibernate.AdoNet.ResultSetWrapper)+25 
NHibernate.AdoNet.ResultSetWrapper.GetOrdinal(System.String)+e 
NHibernate.Type.NullableType.NullSafeGet(System.Data.IDataReader, System.String)+29 
NHibernate.Type.NullableType.NullSafeGet(System.Data.IDataReader, System.String[], NHibernate.Engine.ISessionImplementor, System.Object)+16 
NHibernate.Type.AbstractType.Hydrate(System.Data.IDataReader, System.String[], NHibernate.Engine.ISessionImplementor, System.Object)+14 
NHibernate.Persister.Entity.AbstractEntityPersister.Hydrate(System.Data.IDataReader, System.Object, System.Object, NHibernate.Persister.Entity.ILoadable, System.String[][], Boolean, NHibernate.Engine.ISessionImplementor)+3ce 
NHibernate.Loader.Loader.LoadFromResultSet(System.Data.IDataReader, Int32, System.Object, System.String, NHibernate.Engine.EntityKey, System.String, NHibernate.LockMode, NHibernate.Persister.Entity.ILoadable, NHibernate.Engine.ISessionImplementor)+118 
NHibernate.Loader.Loader.InstanceNotYetLoaded(System.Data.IDataReader, Int32, NHibernate.Persister.Entity.ILoadable, NHibernate.Engine.EntityKey, NHibernate.LockMode, System.String, NHibernate.Engine.EntityKey, System.Object, System.Collections.IList, NHi+8c 
NHibernate.Loader.Loader.GetRow(System.Data.IDataReader, NHibernate.Persister.Entity.ILoadable[], NHibernate.Engine.EntityKey[], System.Object, NHibernate.Engine.EntityKey, NHibernate.LockMode[], System.Collections.IList, NHibernate.Engine.ISessionImpleme+129 
NHibernate.Loader.Loader.GetRowFromResultSet(System.Data.IDataReader, NHibernate.Engine.ISessionImplementor, NHibernate.Engine.QueryParameters, NHibernate.LockMode[], NHibernate.Engine.EntityKey, System.Collections.IList, NHibernate.Engine.EntityKey[], Bo+97 
NHibernate.Loader.Loader.DoQuery(NHibernate.Engine.ISessionImplementor, NHibernate.Engine.QueryParameters, Boolean)+1e7 
NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(NHibernate.Engine.ISessionImplementor, NHibernate.Engine.QueryParameters, Boolean)+7f 
NHibernate.Loader.Loader.LoadEntity(NHibernate.Engine.ISessionImplementor, System.Object, NHibernate.Type.IType, System.Object, System.String, System.Object, NHibernate.Persister.Entity.IEntityPersister)+f3 
NHibernate.Loader.Entity.AbstractEntityLoader.Load(NHibernate.Engine.ISessionImplementor, System.Object, System.Object, System.Object)+22 
NHibernate.Loader.Entity.AbstractEntityLoader.Load(System.Object, System.Object, NHibernate.Engine.ISessionImplementor)+12 
NHibernate.Persister.Entity.AbstractEntityPersister.Load(System.Object, System.Object, NHibernate.LockMode, NHibernate.Engine.ISessionImplementor)+69 
NHibernate.Event.Default.DefaultLoadEventListener.LoadFromDatasource(NHibernate.Event.LoadEvent, NHibernate.Persister.Entity.IEntityPersister, NHibernate.Engine.EntityKey, NHibernate.Event.LoadType)+84 
NHibernate.Event.Default.DefaultLoadEventListener.DoLoad(NHibernate.Event.LoadEvent, NHibernate.Persister.Entity.IEntityPersister, NHibernate.Engine.EntityKey, NHibernate.Event.LoadType)+1d7 
NHibernate.Event.Default.DefaultLoadEventListener.Load(NHibernate.Event.LoadEvent, NHibernate.Persister.Entity.IEntityPersister, NHibernate.Engine.EntityKey, NHibernate.Event.LoadType)+5e 
NHibernate.Event.Default.DefaultLoadEventListener.ReturnNarrowedProxy(NHibernate.Event.LoadEvent, NHibernate.Persister.Entity.IEntityPersister, NHibernate.Engine.EntityKey, NHibernate.Event.LoadType, NHibernate.Engine.IPersistenceContext, System.Object)+73 
NHibernate.Event.Default.DefaultLoadEventListener.ProxyOrLoad(NHibernate.Event.LoadEvent, NHibernate.Persister.Entity.IEntityPersister, NHibernate.Engine.EntityKey, NHibernate.Event.LoadType)+cb 
NHibernate.Event.Default.DefaultLoadEventListener.OnLoad(NHibernate.Event.LoadEvent, NHibernate.Event.LoadType)+120 
NHibernate.Impl.SessionImpl.FireLoad(NHibernate.Event.LoadEvent, NHibernate.Event.LoadType)+140 
NHibernate.Impl.SessionImpl.Get(System.String, System.Object)+148 
NHibernate.Impl.SessionImpl.Get(System.Type, System.Object)+121 
NHibernate.Impl.SessionImpl.Get[[System.__Canon, mscorlib]](System.Object)+143 
Intellitive.Data.Repositories.NHibernateRepository`1[[System.__Canon, mscorlib]].GetReference(System.Object)+38

调用 GetReference 后还有更多内容,但据我所知,它与问题并没有真正相关?


在我看来,您使用的 NHibernate 版本早于 4.0.0(2014 年 8 月 17 日发布)。如果您使用的是较新版本,请忽略此答案。

NHibernate 存在并发问题 - 请参阅here https://nhibernate.jira.com/browse/NH-3420:

有时我们的 IIS 进程开始使用 100% CPU。在内存转储中 我们看到很多线程都在 Dictionary FindEntry 方法中, 从 ColumnNameCache.GetIndexForColumnName 调用。

此问题已解决,但补丁仅合并到版本 4.0.0。

问题是通用的字典 http://msdn.microsoft.com/en-us/library/xfhwa508(v=vs.110).aspx当底层集合被修改时,就会进入无限循环,即两个线程正在尝试读取值,一个正在写入。

From 文档 http://msdn.microsoft.com/en-us/library/xfhwa508.aspx:

一本词典可以同时支持多个读者, 只要集合不被修改。即便如此,列举 通过集合本质上不是线程安全的过程。在 枚举与写访问冲突的罕见情况, 整个枚举过程中必须锁定集合。为了允许 由多个线程访问以进行读取和写入的集合, 您必须实现自己的同步。

线程不安全版本:https://github.com/nhibernate/nhibernate-core/blob/3.4.x/src/NHibernate/AdoNet/ColumnNameCache.cs https://github.com/nhibernate/nhibernate-core/blob/3.4.x/src/NHibernate/AdoNet/ColumnNameCache.cs

与应用补丁相同:https://github.com/nhibernate/nhibernate-core/blob/master/src/NHibernate/AdoNet/ColumnNameCache.cs https://github.com/nhibernate/nhibernate-core/blob/master/src/NHibernate/AdoNet/ColumnNameCache.cs

关于为什么 Dictionary 不是线程安全的以及为什么 IIS 停止服务请求的详细解释:

  1. http://blogs.msdn.com/b/tess/archive/2009/12/21/high-cpu-in-net-app-using-a-static-generic-dictionary.aspx http://blogs.msdn.com/b/tess/archive/2009/12/21/high-cpu-in-net-app-using-a-static-generic-dictionary.aspx
  2. http://improve.dk/debugging-in-product-part-2-latent-race-condition-bugs/ http://improve.dk/debugging-in-production-part-2-latent-race-condition-bugs/
  3. ASP.NET 挂起 - 通用字典并发问题导致 GC 死锁 https://stackoverflow.com/questions/14838032/asp-net-hang-generic-dictionary-concurrency-issues-causes-gc-deadlock
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nHibernate在多个线程上枚举相同的集合 的相关文章

  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 表单身份验证 MVC4

    我正在尝试使用 MVC4 网站进行简单的表单身份验证设置 在App start FilterConfig cs中 public static void RegisterGlobalFilters GlobalFilterCollection
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现

随机推荐

  • 在 Spark 数据框中插入记录

    我在 pyspark 中有一个数据框 这是它的样子 timestamp price 670098928 50 670098930 53 670098934 55 我想填补时间戳与之前状态之间的空白 这样我就可以获得一个完美的集合来计算时间加
  • 设计软电子邮件确认

    我有一个使用 Devise 和可确认模块的 Rails 3 应用程序 然而 阻止新注册用户在确认其电子邮件之前访问该网站会导致保留问题 相反 我们希望立即授予用户访问权限and仍然向他们发送确认电子邮件 然后 我们将运行后台任务来锁定在固定
  • C# Graphics.RotateTransform 适用于本地主机,但不适用于远程服务器

    它可以在我的机器上运行 我在 ASP NET Web 主机上使用 C 图形方法时遇到问题 我将两个地图图钉组合成一个图像 我加载一个空的图钉图像并在其顶部写一个数字 然后我将其中两个组合起来 其中一个旋转 15 度 另一个旋转 15 度 通
  • 在 Perl 中,散列的键和值是否具有相同的“顺序”?

    我知道 Perl 中的哈希值没有排序 我担心的是我是否可以依赖索引关系中出现的键和值 假设我有这个哈希值 my h a gt 1 b gt 2 c gt 3 d gt 4 If I do keys h 我可能会得到 b a d c 我能保证
  • KERAS model.summary 中的“None”是什么意思?

    输出形状中的 None 100 是什么意思 这是 无 样本数还是隐藏维度 None意味着这个维度是可变的 keras 模型中的第一个维度始终是批量大小 您不需要固定的批量大小 除非在非常特殊的情况下 例如 当使用stateful TrueL
  • 设置操作栏项目文本颜色?

    我正在尝试使用自定义设置我的操作栏项目的文本颜色style 但没有任何效果 我尝试过设置
  • 如何使用 jQuery 和 AJAX 将 PHP 页面加载到 div 中?

    我正在尝试编写一个函数来调用getproduct php id xxx当点击时 我可以得到innerHTML部分出现 但我又如何调用php实际起作用的页面 var id id document getElementById digital
  • 如何将 UIColor 转换为十六进制(网页颜色文本字符串)?

    有没有简单的方法可以转换UIColor为十六进制值 或者我们是否必须使用以下方法获取 RGB 分量CGColorGetComponents然后从那里解决 e g CGColorGetComponents color CGColor 0 25
  • Python:BeautifulSoup - 从类的名称中获取属性值

    我正在从网页上抓取项目 其中有多个 a class iusc style height 160px width 233px a
  • 为什么改变原型不会影响之前创建的对象?

    我有以下代码 var A function var a new A var b new A A prototype member1 10 A prototype var c new A console log a member1 conso
  • 滚动条内容步长公式

    如下图所示 找出content step值正比于thumb height and thumb step content step是通过垂直位置的像素滚动量 这里的公式可能是什么 拇指高度的计算公式 var arrowHeight 25 va
  • 计算两个日期之间的时间?

    有人可以帮我完成这项工作吗 我想计算 VB NET 中两个日期之间的时间 如下所示 startdate 2011 12 30 enddate 2011 12 31 计算 小时 分钟 秒 你可以试试这个 DateTime startTime
  • 使用 cURL 重定向?

    我正在尝试使用 cURL 执行重定向 我可以很好地加载页面 这不是问题 但如果我加载 google com 则不会加载图像 并且该网站无法工作 显然因为它只是打印 HTML 而不是实际执行重定向 有没有办法使用 cURL 执行重定向 有点类
  • 使用较新版本的 Bouncy Castle 时,接收器无法验证 SMIME

    我正在使用 BC 来加密和签署 SMIME 消息 以便与 AS2 一起使用 我们的代码可以很好地与绝对古老的充气城堡版本配合使用 bcmail 1 4 125 升级到较新的版本会导致消息的接收者 不是太古老的 Cyclone 服务器 无法验
  • neo4j 导入速度减慢

    我正在尝试使用 cypher 将大约 500 000 个节点的中等数据集导入到 neo4j 中 我在配备 SSD 的 3 4 GHz i7 iMac 上本地运行 neo4j community 2 0 0 M05 我将密码传输到 neo4j
  • 用完整的背景图像填充 svg 路径

    我有下一个 svg
  • 如何检测malloc失败?

    有什么便携式方法可以检查是否malloc分配非零内存块失败 根据单一 Unix 规范 http pubs opengroup org onlinepubs 007908799 xsh malloc html malloc将返回NULL并设置
  • AppDomain.CurrentDomain.Evidence 抛出 SerializationException

    在 VS 2013 中使用 ReSharper 8 2 2 运行测试用例时 我遇到了一个奇怪的错误 演示问题的简化测试用例仅包含两行代码 CallContext LogicalSetData mydata new ActivityStack
  • 无法从 Angular 中的资产文件夹加载 CSS 文件

    我尝试在 Angular 5 项目中从资产文件夹加载 CSS 文件 在这个文件夹中 我有一个完整的模板 当我打开文件夹中的默认 index html 时 它可以正常工作 但我想在 setcard component html 中使用它 我打
  • nHibernate在多个线程上枚举相同的集合

    我有一个生产应用程序 IIS8 MVC5 nHibernate DAL 并且我注意到最近 CPU 使用率很高 循环应用程序池修复了它 但在从服务器进行一些诊断和内存转储来分析问题之后 我注意到多个线程尝试枚举同一集合的一致模式 最常见的一点