小编Rob*_*Rob的帖子

C++中的共享,弱和懒惰指针

有没有人知道的实现shared_ptr,并weak_ptr连同延迟初始化的合作伙伴?这些课程的要求是:

  • lazy_ptr类是允许客户端后构造对象(如果有的话),而不需要构造函数实现

  • 一个weak_lazy_ptr有三种可能状态的类:尚未构造(不会锁定到a shared_ptr),构造(将锁定到a shared_ptr)和销毁(不会锁定到a shared_ptr)

我创建了一些类,并没有做的工作完全是前一阵子(见这里CVU文章)所使用shared_ptr,并weak_ptr在他们的执行.使用共享和弱指针而不是与它们集成的模型的主要问题如下:

  1. 一旦所有lazy_ptr对象超出范围,即使其他客户端持有shared_ptr版本,也无法再锁定任何弱引用

  2. 不能控制不同线程上的对象的构造

我很感激任何指向其他解决这些问题的尝试,或者对这个领域可能正在进行的任何工作的任何指示.

c++ shared-ptr weak-ptr lazy-initialization

13
推荐指数
1
解决办法
1984
查看次数

什么是Type.GUID以及它与Type.Equals()的关系?

在尝试比较System.RuntimeType泛型类型的实例时,我遇到了一些有趣的行为TOut:

Type runtimeT = methodInfo.ReturnType; // get RuntimeType using reflection
Type genericT = typeof(TOut);

// This condition fails because runtimeT doesn't 
// seem to include an assembly qualified name
if(runtimeT.Equals(genericT)) { ... }
Run Code Online (Sandbox Code Playgroud)

这是我的证据:

 debug watch window的屏幕截图 -  Equals()在类型上返回false,在GUID上返回true

免责声明:我不确切知道GUR在CLR /类型系统的上下文中是什么,当然除了首字母缩略词代表全局唯一标识符.也许这个名字误导了我.

假设:我假设TypeGUID唯一地标识完全限定类型,包括屏幕截图中AssemblyQualifiedName缺少的类型factoryInfo.ReturnType(null值).

我的假设错了吗?

  • 是的: GUID类型真正代表什么,它是如何使用的?

  • 否: 为什么不Equals()通过比较GUID来实现?

c# generics types runtime equals

11
推荐指数
2
解决办法
3684
查看次数

在.NET中管理数据库连接的最佳实践是什么?

关于在.NET应用程序中管理数据库连接的最佳实践 - 我知道,通常,传递连接对象是不好的.

但是,我有一些特定的好奇心:


1.我有两个业务对象的实例,不同的类,父母 - 孩子关系(孩子是私人的.)以下哪项是最好的?

  • 保持一个私有静态连接打开和共享,由两个对象使用,并保持打开状态直到父级被释放.

  • 保持两个私有静态连接打开,每个对象一个,在处理对象之前不要关闭.

  • 不要保持静态连接; 打开并随后关闭每个需要它的方法的新连接.但是,我的大多数方法只运行1-3个查询,所以这看起来效率低......


我的第二个问题基本上是相同的,但对于一个单一的形式.这里最好的是什么?

  • 在表单的生命周期内保持一个私有静态连接打开并共享.

  • 不要保持静态连接; 打开并随后为需要它的表单中的每个方法关闭一个连接(同样,每个方法只有1-3个查询.)

.net database-connection connection-pooling

10
推荐指数
4
解决办法
2万
查看次数

获取与COM端口相关的设备/驱动程序信息?

我有一个串行到USB设备,在Windows设备管理器中具有类似命名的设备驱动程序.设备并不总是在系统启动时获取相同的COM端口,因此我的程序需要在启动时识别它.

我已经尝试使用RXTX来枚举系统上的COM端口,但这不起作用因为CommPortIdentifier.getName()只返回COM名称(例如COM1,COM2等)我需要获取驱动程序制造商名称或驱动程序显示在设备管理器中的名称,并将其与COM名称关联.

这可以用Java轻松完成吗?(我对任何支持它的第三方Java库感兴趣.)否则,我如何通过win32 API开始实现这一目标?

java windows serial-port device-driver

10
推荐指数
1
解决办法
1万
查看次数

你可以跟踪Android应用程序何时被终止?

看看android文档,似乎我们没有能力知道应用程序什么时候关闭.无论是由用户明确还是由操作系统自动完成.

以下是仅在模拟方案中可用的onTerminate()文档.

public void onTerminate()
Run Code Online (Sandbox Code Playgroud)

自:API级别1

此方法用于模拟过程环境.永远不会在生产Android设备上调用它,只需杀死它们即可删除进程; 这样做时不会执行任何用户代码(包括此回调).

当用户关闭应用程序时,是否有任何其他方法可以报告?

如果我们需要在我们未来的生产应用程序中加入其他功能,我们需要从试点/可用性的角度来了解.

android process-management process terminate

9
推荐指数
1
解决办法
1万
查看次数

为什么深度优先搜索说遭受无限循环?

我已多次阅读有关DFSBFS的内容,但我对此长期以来一直怀疑.在很多文章中提到DFS可能陷入无限循环.

据我所知,通过跟踪访问的节点可以很容易地消除这种限制.事实上,在我读过的所有书中,这个小支票都是DFS的一部分.

那么为什么"无限循环"被提到是DFS的缺点呢?是不是因为原始DFS算法没有对访问过的节点进行此检查?请解释.

algorithm search breadth-first-search depth-first-search

9
推荐指数
1
解决办法
9540
查看次数

在C中表示浮动

我试图用这个代码(既了解在C浮点表示floatint是我的机器上4个字节):

int x = 3;
float y = *(float*) &x;
printf("%d %e \n", x, y);
Run Code Online (Sandbox Code Playgroud)

我们知道x的二进制表示如下

00000000000000000000000000000011

因此,我希望y表示如下

  • 符号位(左起第一位)= 0

  • 指数(左起第2-9位)= 0

  • 尾数(第10-32位): 1 + 2^(-22)+2^(-23)

导致 y = (-1)^0 * 2^(0-127) * (1+2^(-22) + 2^(-23)) = 5.87747E-39

然而,我的程序打印出来

3 4.203895e-45

也就是说,y具有值4.203895e-45而不是5.87747E-39我预期的值.为什么会这样呢?我究竟做错了什么?

PS我也直接从gdb打印了值,所以printf命令不是问题.

c floating-point

8
推荐指数
2
解决办法
3428
查看次数

如何访问类对象中的数组值?

我在函数中有这样的数组:

$value = array("name"=>"test", "age"=>"00");
Run Code Online (Sandbox Code Playgroud)

我在班级abc中将这个$ value公之于众.

现在在我的另一个文件中,我想访问此数组中的值,因此我通过以下方式创建实例:

$getValue = new <classname>;
$getValue->value..
Run Code Online (Sandbox Code Playgroud)

我不知道如何继续,以便我可以访问该数组中的每个元素.

php arrays oop scope object

8
推荐指数
1
解决办法
3万
查看次数

从(指向const的指针)到(指向非const的指针)的转换是无效的c ++吗?

我确信以下代码不应该编译.但是,在g ++中,它确实可以编译!请参阅http://codepad.org/MR7Dsvlz编译.

代码:

#include <iostream>

using namespace std;

int main() {
    int x = 32 ;
    // note: if x is, instead, a const int, the code still compiles, 
    // but the output is "32".

    const int * ptr1 = & x ;

    *((int *)ptr1) = 64 ; // questionable cast
    cout << x ;           // result: "64"
}
Run Code Online (Sandbox Code Playgroud)

编译时g ++是错误的吗?

c++ pointers casting const g++

8
推荐指数
1
解决办法
6568
查看次数

haskell - 将列表列表转换为一个列表

如果我有一个列表列表,比如说[[1,2,3],[1,2,3],[1,2,3]],Haskell中是否有任何方法可以将其转换为1个列表,例如[1,2,3,1,2,3,1,2,3]

提前致谢!

haskell function list

7
推荐指数
3
解决办法
1万
查看次数