问题列表 - 第18072页

及时派生

有一种不太常见的C++习语,我过去常常使用过好几次.我似乎无法记住它是否有一个通常使用的名称来描述它.

它与mixins,CRTP类型擦除有一定关系,但并不是特别相关.

当您想要向类添加一些实现时,会发现问题,但您不希望将它放在类或它派生的任何类中.这样做的一个原因可能是类可能是继承层次结构的一部分,其中实现应该只发生一次.

暂时搁置一些问题,例如层次结构是否应该具有具体的非叶类,或者在某些情况下是否可以选择虚拟继承,我知道在模板类中提供实现的一种解决方案来源于它的模板参数.然后,这允许您在创建实例时使用模板,但之后只能通过指针使用对象或引用其中一个基础(在松散的意义上,类型擦除的位置).

一个例子可能是你有一个侵入性引用计数.你的所有类都来自一个引用计数接口,但你只希望引用计数本身和引用计数方法的实现出现一次,所以你将它们放在派生模板中 - 让我们调用它ImplementsRC<T>.现在你可以像这样创建一个实例:

ConcreteClass* concrete = new ImplementsRC<ConcreteClass>();
Run Code Online (Sandbox Code Playgroud)

我正在掩盖诸如由多个模板化重载等组成的转发构造函数.

所以,希望我已经明确了成语是什么.现在回到我的问题 - 这个成语是否有一个被接受的,或者至少是一般使用的名字?

c++ idioms mixins crtp type-erasure

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

使用通配符和通配符的问题

我有一个方法,返回map定义为:

public Map<String, ?> getData();
Run Code Online (Sandbox Code Playgroud)

这个方法的实际实现对我来说并不清楚,但是,当我尝试这样做时:

obj.getData().put("key","value")
Run Code Online (Sandbox Code Playgroud)

我得到以下编译时错误消息:

方法put(String,capture#9-of?)在Map类型中不适用于参数(String,String)

问题是什么?是String不是输入任何内容?

提前致谢.

java generics arguments wildcard map

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

getClass().getClassLoader()为null,为什么?

我有一些调用的代码..

x = getClass().getClassLoader();
Run Code Online (Sandbox Code Playgroud)

这会返回null.

当我从Eclipse启动相同的代码而不是命令行时,它返回一个类加载器.

我可以破解代码来做到这一点......

if (getClass().getClassLoader() == null)
{
 x = ClassLoader.getSystemClassLoader().getSystemResourceAsStream( loadedPropFileName );
} 
Run Code Online (Sandbox Code Playgroud)

两者都使用相同的JVM进行编译和运行.(我99.99%肯定).

任何人都有任何想法为什么第一个将为类加载器返回null?

编辑:

我的问题是"任何人都有任何想法为什么同一个类在从Eclipse启动时返回null,从命令行加载时是类加载器."

感谢Bootstap加载器必须在Eclipse中加载类的建议.我不知道为什么会这样.

java eclipse classloader

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

从C#发送包含嵌入在正文中的图像的电子邮件

我的问题是如何以编程方式将带有attachemnts的电子邮件发送到默认邮件客户端.

我的要求是:

  1. 设定目的地,CC,BCC
  2. 链接到附件
  3. 在邮件正文中添加和图像像横幅一样

我成功地以各种方式撰写电子邮件,添加附件不是问题,但添加嵌入式图像是.

我已将消息正文编写为HTML并集成了Base64编码的图像,但Outlook和Outlook Express无法识别图像.为什么?

有没有人能解决我的问题.

我解决了调用MAPI的一部分问题.

c# email client image embedding

14
推荐指数
0
解决办法
2万
查看次数

如果变量名存储为字符串,如何获取变量值?

如果我将变量名称作为字符串,如何检索bash变量值?

var1="this is the real value"
a="var1"
Do something to get value of var1 just using variable a.
Run Code Online (Sandbox Code Playgroud)

语境:

我有一些AMI(亚马逊机器映像),我想启动每个AMI的几个实例.一旦完成启动,我想根据其AMI类型设置每个实例.我不想在任何AMI中烘焙大量脚本或密钥,因此我准备了一个通用的启动脚本,并将其放在S3上,并提供可公开访问的链接.在rc.local中,我放了一小段代码来获取启动脚本并执行它.这就是我在AMI中所拥有的一切.然后,每个AMI访问一个通用配置脚本,该脚本适用于所有AMI和每个AMI的特殊设置脚本.这些脚本是私有的,需要签名URL才能访问它们.

所以现在,当我触发AMI的一个实例(my_private_ami_1)时,我会在S3上显示另一个文件的签名URL,该文件包含所有私有脚本在键/值对方面的签名URL.

config_url="http://s3.amazo.../config?signature"
my_private_ami_1="http://s3.amazo.../ami_1?signature"
...
Run Code Online (Sandbox Code Playgroud) 当启动脚本运行时,它会下载上面的文件并且source是它.然后它检查其AMI类型并为自己选择正确的设置脚本.

ami\_type=GET AMI TYPE #ex: sets ami\_type to my\_private\_ami\_1
setup\_url=GET THE SETUP FILE URL BASED ON AMI\_TYPE # this is where this problem arises
Run Code Online (Sandbox Code Playgroud)

所以现在我可以拥有一个通用代码,它可以触发实例而不管它们的AMI类型和实例可以自己处理.

string bash

122
推荐指数
6
解决办法
8万
查看次数

x64兼容C源

我想我知道我需要使用的#ifdefs在msvc和gcc上兼容x86-32和x86-64,见下文.这些平台是否完整?

#if defined(_MSC_VER)
#  if defined(_M_IA64) || defined(_M_X64)
#    define SIZEOF_SIZE_T 8
#    define SIZEOF_VOIDP  8
#  elif defined(_M_IX86)
#    define SIZEOF_SIZE_T 4
#    define SIZEOF_VOIDP  4
#  else
#    error "Unsupported MSVC platform"
#  endif
#elif defined(__GNUG__)
#  if defined(__x86_64__) || defined(__ia64__)
#    define SIZEOF_SIZE_T 8
#    define SIZEOF_VOIDP  8
#  elif defined(__i386__)
#    define SIZEOF_SIZE_T 4
#    define SIZEOF_VOIDP  4
#  else
#    error "Unsupported GCC platform"
#  endif
#endif
Run Code Online (Sandbox Code Playgroud)

从C程序员的角度来看,IA64和x86 64是否相同?

我也希望能够在Mac上编译.我要添加什么?

编辑:我不能使用sizeof(),因为我正在处理使用类似东西的不可触摸的遗留代码#if SIZEOF_VOIDP == …

c 64-bit portability itanium

0
推荐指数
1
解决办法
1769
查看次数

具有大量文件的目录结构的树遍历算法

当递归遍历目录结构时,如果文件多于目录,那么最有效的算法是什么?我注意到,当使用深度优先遍历时,当给定目录中存在大量文件时,似乎需要更长时间.在这种情况下,广度优先遍历是否更有效?我目前无法对这两种算法进行分析,因此非常欢迎您的见解.

编辑:为了回应alphazero的评论,我在Linux机器上使用PHP.

algorithm tree-traversal

15
推荐指数
1
解决办法
7114
查看次数

Vim 和 ASCII 扩展字符?

我想知道如何设置 VIM 7.0 以毫无问题地显示和使用 ASCII 扩展字符。

vim

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

模拟 - 在调用构造函数之前设置属性

在RhinoMocks或Moq中,可以在调用构造函数之前设置对象的属性吗?

我正在尝试测试一种方法.

包含该方法的类在其构造函数中有一些代码依赖于某些成员被设置,遗憾的是构造函数中没有用于设置它们的参数,因此我必须通过属性设置它们.有没有办法在RhinoMocks或Moq中调用构造函数之前设置此属性?

javascript unit-testing rhino-mocks moq mocking

0
推荐指数
1
解决办法
458
查看次数

在Windows上的每个请求上重新加载Sinatra应用程序

Rack::Reload根据这个帖子设置了

# config.ru
require 'rubygems'
require 'sinatra'

set :environment, :development

require 'app'
run Sinatra::Application

# app.rb  
class Sinatra::Reloader < Rack::Reloader
  def safe_load(file, mtime, stderr = $stderr)
    if file == Sinatra::Application.app_file
      ::Sinatra::Application.reset!
      stderr.puts "#{self.class}: reseting routes"
    end
    super
  end
end

configure(:development) { use Sinatra::Reloader }

get '/' do
  'foo'
end
Run Code Online (Sandbox Code Playgroud)

使用thin via运行thin start -R config.ru,但它只重新加载新添加的路由.当我更改现有路由时,它仍然运行旧代码.

当我添加新路由时,它正确地重新加载它,因此它是可访问的,但它不会重新加载任何其他内容.

例如,如果我将路线更改为

get '/' do
  'bar'
end

get '/foo' do
  'baz'
end
Run Code Online (Sandbox Code Playgroud)

/仍将担任foo,即使它已经改变,但/foo会正确地重新加载和服务baz …

ruby rack sinatra reloading

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