小编YOU*_*YOU的帖子

Ruby中的$$是什么意思?

irb(main):002:0> $$
=> 5052
Run Code Online (Sandbox Code Playgroud)

$$Ruby中的含义是什么?如何/在何处使用它?

ruby

13
推荐指数
3
解决办法
2165
查看次数

有没有办法在C#中进行动态隐式类型转换?

给定此类具有隐式转换运算符:

public class MyDateTime
{
    public static implicit operator MyDateTime(System.Int64 encoded)
    {
        return new MyDateTime(encoded);
    }

    public MyDateTime(System.Int64 encoded)
    {
        _encoded = encoded;
    }
    System.Int64 _encoded;
}
Run Code Online (Sandbox Code Playgroud)

我现在可以做以下事情:

long a = 5;
MyDateTime b = a;
Run Code Online (Sandbox Code Playgroud)

但不是以下内容:

long f = 5;
object g = f;
MyDateTime h = g;
Run Code Online (Sandbox Code Playgroud)

这给出了编译时间:

无法将类型'object'隐式转换为'MyDateTime'.

我感觉合理.

现在我修改前面的例子如下:

long f = 5;
object g = f;
MyDateTime h = (MyDateTime)g;
Run Code Online (Sandbox Code Playgroud)

编译好了.现在我得到一个运行时InvalidCastException:

无法将"System.Int64"类型的对象强制转换为"MyDateTime"类型.

这告诉我C#隐式转换运算符仅在编译时应用,并且在.NET运行时试图将对象动态转换为另一种类型时不应用.

我的问题:

  1. 我对么?
  2. 还有其他方法可以做到这一点吗?

顺便说一句,完整的应用程序是我Delegate.DynamicInvoke()用来调用一个带MyDateTime参数的函数,而我传递给的参数的类型很DynamicInvoke长.

c# dynamic-cast type-conversion implicit-cast dynamic-invoke

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

如何自动执行javascript?

如何自动执行javascript?

我知道<body onLoad="">,但我想也许还有另一种方法可以做到这一点?

HTML:

<html><head></head><body><div id="test"></div></body></html>
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

<script>(function(){var text = document.getElementById('test').innerHTML;var newtext = text.replace('', '');return newtext;})();</script>
Run Code Online (Sandbox Code Playgroud)

我想在"测试"中获取文本,替换某些部分,然后将其输出到浏览器.

关于如何做的任何想法?我很感激任何帮助.谢谢.

javascript

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

使用多个工作表将xml转换为excel

如果我将以下xml导出到excel 2007 ...我能够正确获取excel表.

<Workbook>
<Worksheet >
<MyXml>
    <New A="111" B="222" />
</MyXml>
<MyXml>
    <New A="111" B="222" />
</MyXml>
</Worksheet>
</Workbook>
Run Code Online (Sandbox Code Playgroud)

但我需要一个包含多个工作表的工作簿......在这种情况下如何指定xml?

xml excel worksheet

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

这可以称为递归吗?

function move() {

    pos = pos+1;

    t = setTimeout(move, 100); 
}
Run Code Online (Sandbox Code Playgroud)

这可以称为递归吗?如果是,您能提供任何参考吗?

javascript recursion

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

是否有任何正则表达式引擎可以进行即时编译?

我的问题是

是否有正则表达式引擎在正则表达式模式解析期间进行实时编译,并在匹配/替换文本时使用?或者我在哪里可以学习JIT for i386或x64架构?

为什么我需要它

我最近试图对Python的内置正则表达式引擎进行测试,而普通的C代码与大约10MB的数据相比.

我发现,对于一个简单的替换(例如abzzz)它的比较快的:比C慢仅有2〜3倍

但是因为[a-z]c它花了大约5到8倍的时间.

并与分组(例如([a-z])(c)AA\2\1BB)花了20到40倍尽可能多的时间C.

它不是即时编译,但我认为,如果我可以进行即时编译,它可以加速更多.

PS:我在编译模式期间对每个正则表达式模式使用性能分析,例如,简介1的ab配置文件1,范围的[a-z]c配置文件2 ,带分组的配置文件3 ([a-z])(c),每个配置文件具有单独的代码,因此在匹配和替换简单模式时不需要额外的成本.

更新1

我用psyco尝试过它,它并没有提高速度.可能是因为我正在对大数据进行文本替换,而不是多次循环.

如果我没有错,re.sub那么我认为Python已经在原生运行了,所以pysco无法提高速度.

更新2

我尝试将boost regex包装到python中,但它甚至比Python的正则表达式慢,所以看起来瓶颈在于Python的字符串处理,Jan Goyvaerts也在答案中指出了这一点.

更新

我想将正则表达式转换ab[a-z]c为机器码,如下面的等效C代码(*s指向10MB长文本):

do{
    if(*s=='a' && s[1]=='b' && s[2]>='a' && s[2]<='z' && s[3]=='c') return 1;
}while(*s++);
return 0;
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

c c++ python regex jit

7
推荐指数
2
解决办法
2562
查看次数

我应该在Python C Extension中将Py_INCREF和Py_DECREF放在哪个块上?

每当我调用我的函数时,每个调用的内存使用量增加大约+ 10M,所以我认为这里有一些内存泄漏.

....
PyObject *pair = PyTuple_New(2), *item = PyList_New(0);

PyTuple_SetItem(pair, 0, PyInt_FromLong(v[j]));

if(v[j] != DISTANCE_MAX && (p[j] || d[0][j])){
  jp=j;
  while(jp!=istart) {
    PyList_Append(item, PyInt_FromLong(jp));
    jp=p[jp];
  }

  PyList_Append(item, PyInt_FromLong(jp));

  PyList_Reverse(item);
}

PyTuple_SetItem(pair, 1, item);

return pair;
....
Run Code Online (Sandbox Code Playgroud)

当我阅读文档时,有些调用就像

void
bug(PyObject *list)
{
    PyObject *item = PyList_GetItem(list, 0);

    PyList_SetItem(list, 1, PyInt_FromLong(0L));
    PyObject_Print(item, stdout, 0); /* BUG! */
}
Run Code Online (Sandbox Code Playgroud)

需要像这样引用引用计数

void
no_bug(PyObject *list)
{
    PyObject *item = PyList_GetItem(list, 0);

    Py_INCREF(item);
    PyList_SetItem(list, 1, PyInt_FromLong(0L));
    PyObject_Print(item, stdout, 0);
    Py_DECREF(item);
}
Run Code Online (Sandbox Code Playgroud)

那么,我应该把Py_INCREF和Py_DECREF放在我的函数上?

c python reference-counting

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

这个Roman Number to Integer转换器代码可以更短吗?

目前在python中有95个字节

I,V,X,L,C,D,M,R,r=1,5,10,50,100,500,1000,vars(),lambda x:reduce(lambda T,x:T+R[x]-T%R[x]*2,x,0)
Run Code Online (Sandbox Code Playgroud)

以下是一些测试结果,它应该适用于1到3999(假设输入仅为有效字符)

>>> r("I")
1
>>> r("MCXI")
1111
>>> r("MMCCXXII")
2222
>>> r("MMMCCCXXXIII")
3333
>>> r("MMMDCCCLXXXVIII")
3888
>>> r("MMMCMXCIX")
3999
Run Code Online (Sandbox Code Playgroud)

这是不是有重复的这个,这是相反的一个.

那么,是否可以在Python中缩短它,或者像ruby这样的其他语言可以做得更短?

language-agnostic roman-numerals

6
推荐指数
1
解决办法
2080
查看次数

任何人都知道为什么"x".split(/(x)/).长度在IE中返回0?

在IE中,"x".split(/(x)/).length返回0

在Firefox,Chrome,Safari和Opera中,它会返回3.

有人知道原因吗?如果可能,将非常感谢参考链接.

我相信这是一个IE正则表达式实现问题,但我找不到任何关于它的文档.

javascript regex internet-explorer

6
推荐指数
1
解决办法
530
查看次数

RegEx模式匹配正值或负值(例如"1.2"," - 2.8","7.8", - 22.8")

十进制分隔符是一个点,后跟最大一位数!没有指定范围.

多谢你们!

java regex

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