小编rai*_*syn的帖子

Python,为什么有elif关键字?

我刚刚开始编程Python,我想知道elif关键字.

我在使用之前使用过的其他编程语言else if.有没有人知道为什么Python开发人员添加了额外的elif关键字?

为什么不:

if a:
    print("a")
else if b:
    print("b")
else:
    print("c")
Run Code Online (Sandbox Code Playgroud)

python keyword

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

如何伪造udp-packet的源ip-address?

请考虑以下事项:
您的ISP为您提供动态IP地址(例如123.123.123.123).

我的问题很简单(答案可能不是):

是否可以将带有外部源IP(例如124.124.124.124)的单个udp数据包发送到fixed-ip服务器?我不需要从服务器得到答案.我只是想知道是否/如何使用伪造的源IP地址完成这种单向通信.

服务器,没有其他人不应该能够找到真正的客户端IP.

networking network-programming ip-address network-protocols

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

从内存中清除C#字符串

我出于安全原因试图清除C#字符串的内存内容.我知道的SecureString类,但不幸的是我不能使用SecureString,而不是String在我的应用程序.需要清除的字符串是在运行时动态创建的(例如,我不是要清除字符串文字).

我发现的大多数搜索结果基本上都说清除a的内容String是不可能的(因为字符串是不可变的)并且SecureString应该使用.

因此,我确实在下面提出了我自己的解决方案(使用不安全的代码).测试显示解决方案有效,但我仍然不确定解决方案是否有任何问题?还有更好的吗?

static unsafe bool clearString(string s, bool clearInternedString=false) 
{
    if (clearInternedString || string.IsInterned(s) == null)
    {
        fixed (char* c = s)
        {
            for (int i = 0; i < s.Length; i++)
                c[i] = '\0';
        }
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

编辑:由于GC的注释在clearString被调用之前移动字符串:下面的代码片段怎么样?

string s = new string('\0', len);
fixed (char* c = s)
{
    // copy data from secure location to s
    c[0] = ...; …
Run Code Online (Sandbox Code Playgroud)

c# memory security string securestring

20
推荐指数
3
解决办法
7756
查看次数

是否有更有效的方法来获取32位整数的长度(以字节为单位)?

我想要一个以下小函数的快捷方式,其中性能非常重要(该函数被调用超过10.000.000次):

inline int len(uint32 val)
{
    if(val <= 0x000000ff) return 1;
    if(val <= 0x0000ffff) return 2;
    if(val <= 0x00ffffff) return 3;
    return 4;
} 
Run Code Online (Sandbox Code Playgroud)

有没有人有任何想法...一个很酷的bitoperation技巧?感谢您的帮助!

c c++ performance bit-manipulation bitwise-operators

15
推荐指数
5
解决办法
1556
查看次数

Packrat解析与LALR解析

许多网站都声称packrat解析器可以在线性时间内解析输入.
所以初看起来他们比由工具yacc或bison构建的LALR解析器更快.

我想知道当使用公共输入(如编程语言源文件)而不是任何理论输入进行测试时,packrat解析器的性能是否比LALR解析器的性能更好/更差.

有没有人可以解释这两种方法之间的主要区别.
谢谢!

parsing lalr parser-generator

12
推荐指数
2
解决办法
3560
查看次数

如何指定UdpPacket的源端口?

我想将UdpPacket发送到特定的远程主机(我已经知道公共IP和端口).我想使用C#的UdpClient类.

static int Main()
{
     UdpClient client = new UdpClient();
     IPEndPoint remoteEP = new IPEndPoint(IPAddress.Parse("1.2.3.4"), 9999);

     byte[] data = GetData();
     client.Send(data, data.Length, remoteEP);
}
Run Code Online (Sandbox Code Playgroud)

发送数据包时,UdpClient会自动选择可用端口.我想手动设置端口,从中发送数据包.

感谢您的帮助!

c# networking network-programming udpclient

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

用于将字符集转换为nfa/dfa的高效算法

我目前正在研发扫描仪发生器.发电机已经正常工作.但是当使用字符类时,算法变得非常慢.

扫描仪生成器为UTF8编码文件生成扫描仪.应支持全范围的字符(0x000000到0x10ffff).

如果我使用大字符集,就像任何运算符'.' 或者unicode属性{L},nfa(以及dfa)包含很多状态(> 10000).因此,将nfa转换为dfa并创建最小dfa需要很长时间(即使输出最小dfa只包含几个状态).

这是我当前创建nfa的字符集部分的实现.

void CreateNfaPart(int startStateIndex, int endStateIndex, Set<int> characters)
{
transitions[startStateIndex] = CreateEmptyTransitionsArray();
foreach (int character in characters) {
    // get the utf8 encoded bytes for the character
    byte[] encoded = EncodingHelper.EncodeCharacter(character);
    int tStartStateIndex = startStateIndex;
    for (int i = 0; i < encoded.Length - 1; i++) {
        int tEndStateIndex = transitions[tStartStateIndex][encoded[i]];
        if (tEndStateIndex == -1) {
           tEndStateIndex = CreateState();
               transitions[tEndStateIndex] = CreateEmptyTransitionsArray();
        }                   
        transitions[tStartStateIndex][encoded[i]] = tEndStateIndex;
        tStartStateIndex = tEndStateIndex;
    }
    transitions[tStartStateIndex][encoded[encoded.Length - 1]] = endStateIndex; …
Run Code Online (Sandbox Code Playgroud)

regex algorithm dfa nfa

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

如何使用C#UdpClient发送大数据?

我正在尝试使用C#UdpClient发送大量数据(超过50 MB).

所以首先我将数据分成65507个字节块并循环发送.

for(int i = 0; i < packetCount; i++)
   myUdpClient.Send(blocks[i], block[i].Length, remoteEndPoint);
Run Code Online (Sandbox Code Playgroud)

我的问题是只能收到第一个数据包.在发送第一个数据包期间,网络负载迅速增加到100%,然后无法接收其他数据包.

我希望获得尽可能多的数据吞吐量.

对不起我的英语!感谢您的帮助.

c# udp

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

使用DirectX防止屏幕捕获

我想使用DirectX渲染单个图像.它应该类似于VLC播放器的"directx视频输出",如果不能使用简单的屏幕捕获软件或printscreen-key捕获帧.制作屏幕截图不可能(或非常困难)!

有谁知道这在VLC播放器中是如何工作的?

还有其他可能的解决方案吗?也许使用"输出保护管理器"(参见http://msdn.microsoft.com/en-us/library/dd388980(VS.85).aspx)

我在学校大约有3年的C#编程经验.我也做了一些C++编程,但是我会使用WPF或Managed DirectX来提供C#解决方案.

对不起我的英文,感谢您的帮助!

c# c++ directx vlc

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

使用CSS级联<li> - 悬停效果

我有一个简单的html无序列表.

<ul>
    <li>Item 1</li>
    <li>
        Group 1
        <ul>
            <li>Item 2</li>
            <li>Item 3</li>
        </ul>
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

当鼠标在Item或Group上时,我想使用CSS来产​​生一个简单的效果.

li:hover
{
    background-color:#ff0000;
}
Run Code Online (Sandbox Code Playgroud)

它适用于"组1"或"项目1"(不包含在组中) - 当我将鼠标移动到颜色变化上时.但是,如果我移动"第2项"或"第3项","第1组"也会保持高亮显示(红色背景).在这种情况下,我只想强调"第2项"或"第3项".

有谁知道如何做到这一点?

谢谢你的帮助!

===============================编辑

<ul>
    <li>Item 1</li>
    <li>
        Group 1
        <ul>
            <li>Item 2</li>
            <li>Group 2
                <ul>
                    <li>Item 3</li>
                    <li>Item 4</li>
                </ul>
            </li>
        </ul>
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

鼠标悬停xxx应突出显示yyy
xxx - > yyy
Item1 - > Item1
Group1 - > Group1,Item2,Group2,Item3,Item4
Item2 - > Item2
Group2 - > Group2,Item3,Item4
Item3 - > Item3
Item4 - > Item4

请参阅http://image-upload.de/image/r76d79/1c7af56a19.png,这是一张快速图纸.

html css hover html-lists

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