小编use*_*956的帖子

C++类型在列表中自行注册的最佳方法是什么?

假设我有一些每类数据:(AandB.h)

class A
{
public:
   static Persister* getPersister();
}

class B
{
public:
   static Persister* getPersister();
}
Run Code Online (Sandbox Code Playgroud)

......还有很多课程.我想做的事情如下:

persistenceSystem::registerPersistableType( A::getPersister() );
persistenceSystem::registerPersistableType( B::getPersister() );
...
persistenceSystem::registerPersistableType( Z::getPersister() );
Run Code Online (Sandbox Code Playgroud)

......为每个班级.

我的问题是:有没有办法自动构建每类数据列表,这样我就不必枚举大块中的每个类型(如上例所示)?

例如,您可以这样做的一种方法是:(AutoRegister.h)

struct AutoRegisterBase
{
   virtual ~AutoRegisterBase() {}
   virtual void registerPersist() = 0;
   static AutoRegisterBase*& getHead()
   {
      static AutoRegisterBase* head= NULL;
      return head;
   }

   AutoRegisterBase* next;
};

template <typename T>
struct AutoRegister : public AutoRegisterBase
{
   AutoRegister() { next = getHead(); getHead() = this; }

   virtual void registerPersist()
   {
       persistenceSystem::registerPersistableType( T::getPersister() …
Run Code Online (Sandbox Code Playgroud)

c++

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

如何将任何数字转换为长数

假设我有:

val number:AnyVal
Run Code Online (Sandbox Code Playgroud)

我知道x可以是任何数字(对于我们的目的,一个Float,Double,Int,Long).

将这样的数字转换为Long的最简单方法是什么:

val l = number.toLong   //fails for AnyVal
Run Code Online (Sandbox Code Playgroud)

scala type-conversion

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

如何使用自定义WebApplicationInitializer运行测试?

class MyWebAppInitializer extends WebApplicationInitializer {
  def onStartup(servletContext: ServletContext): Unit = {
      ...
  }
}

@RunWith(classOf[SpringJUnit4ClassRunner])
@WebAppConfiguration
@ContextConfiguration(classes = Array(classOf[MyConfig]),
    initializers=Array(classOf[MyWebAppInitializer]))     // <<< ERROR
class MyTest {
  ...
}
Run Code Online (Sandbox Code Playgroud)

抱怨:

annotation argument needs to be a constant; found: classOf[MyWebAppInitializer] 
Run Code Online (Sandbox Code Playgroud)

更新:@M.Deinum指出这里只允许ApplicationContextInitializers - 所以错误是一个报告错误的类型错误匹配.

那么......我怎样才能按顺序使用自己的MyWebAppInitializer并测试其中定义的功能?

spring scala spring-mvc spring-test

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

给定一个(python)selenium WebElement 我可以获得innerText吗?

下列

element = driver.execute_script("return $('.theelementclass')")[0]
Run Code Online (Sandbox Code Playgroud)

找到我的元素(一个只包含一些文本的 div),但是:

element.text
Run Code Online (Sandbox Code Playgroud)

返回一个空字符串(这是一个惊喜)。从 Java 脚本控制台:

$('.theelementclass').text  # also (consistently) empty
$('.theelementclass').innerText  # YES! gets the div's text.
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是,鉴于我有一些 WebElement,我可以找到 innerText 吗?(出于无聊的原因,我想使用找到的 webelement 进行操作,而不是原始查询)。

我包括周围的 HTML。但是,我认为它没有用(因为找到了元素并且是唯一的)

<first-panel on-click="onClickLearnMore()" class="ng-isolate-scope">
  <div class="comp-onboarding-first-thought-panel">
    <div class="onboarding-text-container">
        <div class="theelementclass">
                Congratulations.
                You found the text is here!
        </div>
        <div class="button-cont">
            <div ng-click="onClickButton()">Learn more about The Thing</div>
        </div>
    </div>
</div>
</first-panel>
Run Code Online (Sandbox Code Playgroud)

python selenium webdriver

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

使用管道时修改文件的最佳方法?

我经常有shell编程任务,我遇到这种模式:

cat file | some_script > file
Run Code Online (Sandbox Code Playgroud)

这是不安全的 - 在some_script开始写入之前,cat可能没有在整个文件中读取.我真的不想把结果写到一个临时文件中(它很慢,而且我不希望增加复杂性来考虑一个独特的新名称).

也许,有一个标准的shell命令会缓冲整个流,直到达到EOF为止?就像是:

cat file | bufferUntilEOF | script > file
Run Code Online (Sandbox Code Playgroud)

想法?

bash shell pipe

9
推荐指数
5
解决办法
1258
查看次数

和快于整数模运算?

可以重新表达:

  • 我%

如:

  • 我和(m-1)

哪里,

  • 我是无符号整数
  • m是2的幂

我的问题是:AND操作更快吗?现代CPU在单个指令中不支持硬件中的整数模数吗?我对ARM很感兴趣,但是在它的指令集中看不到模运算.

assembly arm

9
推荐指数
2
解决办法
7435
查看次数

使用循环时如何使makefile退出并出错?

如果我有以下bash命令:

for i in ./ x ; do ls $i ; done && echo OK
Run Code Online (Sandbox Code Playgroud)

执行"ls ./",然后执行"ls x",失败(缺少x)并且不打印OK.

如果

for i in x ./ ; do ls $i ; done && echo OK
Run Code Online (Sandbox Code Playgroud)

然后即使"ls x"失败,因为for循环中的最后一个语句成功,然后打印OK.在makefile中使用shell for循环时,这是一个问题:

x:
    for i in $(LIST) ; do \
        cmd $$i  ;\
    done 
Run Code Online (Sandbox Code Playgroud)

如果cmd的任何单独执行失败,如何使make失败?

bash makefile

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

可以捕获写入地址(x86 - linux)

我希望能够检测何时发生对内存地址的写入 - 例如通过设置附加到中断的回调.有谁知道怎么样?

我希望能够在运行时执行此操作(可能gdb具有此功能,但我的特定应用程序导致gdb崩溃).

c c++ linux x86

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

如何在2016.1中启用python docstring插入.Intellij IDEA/Python Community Edition 5.1.145.45

在Python中输入函数定义之后,IDEA的python插件用于帮助为函数定义插入docstring存根.但是,由于最近的更新,没有运气.另外ALT + ENTER,在下拉列表中没有提供插入doctring存根的选项:(

这篇文章展示了如何在旧版本中禁用此行为.我没有修改此设置或关闭任何内容:文件>设置> Python集成工具>文档字符串格式

我还在新机器上安装了IDEA + PyCE - 同样的行为.

python intellij-idea pycharm

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

可以memmap熊猫系列.数据帧怎么样?

似乎我可以通过创建mmap'ddarray并使用它来初始化Series来为python系列记录底层数据.

        def assert_readonly(iloc):
           try:
               iloc[0] = 999 # Should be non-editable
               raise Exception("MUST BE READ ONLY (1)")
           except ValueError as e:
               assert "read-only" in e.message

        # Original ndarray
        n = 1000
        _arr = np.arange(0,1000, dtype=float)

        # Convert it to a memmap
        mm = np.memmap(filename, mode='w+', shape=_arr.shape, dtype=_arr.dtype)
        mm[:] = _arr[:]
        del _arr
        mm.flush()
        mm.flags['WRITEABLE'] = False  # Make immutable!

        # Wrap as a series
        s = pd.Series(mm, name="a")
        assert_readonly(s.iloc)
Run Code Online (Sandbox Code Playgroud)

成功!它似乎s是由只读的mem映射的ndarray支持.我可以为DataFrame执行相同的操作吗?以下失败

        df = pd.DataFrame(s, copy=False, columns=['a'])
        assert_readonly(df["a"]) # Fails …
Run Code Online (Sandbox Code Playgroud)

python numpy multidimensional-array pandas numpy-memmap

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