问题列表 - 第32086页

String是不可变的有什么好处?

一旦我研究了字符串不可变的优点,因为有些东西可以改善内存中的性能.

任何人都可以向我解释一下吗?我在互联网上找不到它.

string immutability

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

.Net Treeview事件处理

我正在将VB6应用程序迁移到.Net,我们必须始终提供类似功能.在一种形式中,树形视图具有三个级别的节点的复选框.第一级仅用于将下一级别分组,并且它们不可检查.第二级节点可由用户检查,当检查或取消选中时,其所有子节点都遵循.在所有级别,单击节点或其复选框将意味着它被选中,无论检查状态是否受到影响.

第三个层次是问题的关键(尽管问题本身在所有树视图复选框中显示):此级别包含两个"类型"的节点,一个可以由用户检查和取消选中(如果选中父级)和一个无论父级的状态如何,用户都无法检查或取消选中的类型,但其状态与其父级的状态相同.

在正常使用中,这一切都按预期工作.但是,如果您快速单击其中一个第三级节点(不应该是可以直接检查的)两次,它似乎会更改其检查状态.但是,如果您检查Checked属性的基础值,它仍然不受影响,因此它似乎只是一个显示问题.如果被发现,这种异常将成为我们客户的问题,因为用户可能认为他们可以做一些他们不能导致昂贵的混淆的事情.

我对这一点的想法很新鲜 - 有没有其他人观察到这种行为或了解它并且有解决方法/解决方案吗?我不禁感到我错过了一些非常明显的东西但是在一天半后我现在有了隧道视野.这里有一些代码来演示这个问题.创建一个带有树视图的表单(足够大以查看正在发生的事情),然后将两个按钮放入:

Private _node As TreeNode = Nothing


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    MessageBox.Show(_node.Text & " : " & _node.Checked.ToString)
    _node = Nothing

End Sub

Private Sub InitialiseTreeview()

    TreeView1.Nodes.Clear()

    Dim ran As New Random
    Randomize()

    For i As Int32 = 1 To 5
        Dim TLNode As New TreeNode
        Dim children As Int32 = 0

        children = ran.Next(1, 5)

        TLNode.Text = "Top Level Node " & i.ToString

        For j As …
Run Code Online (Sandbox Code Playgroud)

.net treeview event-handling winforms

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

重构switch语句的设计模式

我在标题中有类似的内容

class MsgBase
{
  public:
    unsigned int getMsgType() const { return type_; }
    ...
  private:
    enum Types { MSG_DERIVED_1, MSG_DERIVED_2, ... MSG_DERIVED_N };
    unsigned int type_;
    ...
};

class MsgDerived1 : public MsgBase { ... };
class MsgDerived2 : public MsgBase { ... };
...
class MsgDerivedN : public MsgBase { ... };
Run Code Online (Sandbox Code Playgroud)

并用作

MsgBase msgHeader;
// peeks into the input stream to grab the
// base class that has the derived message type
// non-destructively
inputStream.deserializePeek( msgHeader ); 
unsigned …
Run Code Online (Sandbox Code Playgroud)

c++ refactoring design-patterns

6
推荐指数
2
解决办法
2838
查看次数

没有lambda表达式的python排序

我经常使用lambda表达式在Python中进行排序,虽然它工作正常,但我觉得它不是很易读,并希望有更好的方法.这是我的典型用例.

我有一个数字列表,例如, x = [12, 101, 4, 56, ...]

我有一个单独的索引列表: y = range(len(x))

我想y根据值中的值排序x,我这样做:

y.sort(key=lambda a: x[a])
Run Code Online (Sandbox Code Playgroud)

有没有使用lambda这样做的好方法?

python sorting lambda

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

scp流量如何在两个远程主机之间流动?

如果在两个远程服务器之间发出scp命令,流量会直接在主机之间流动,还是从Remote1 => Local Machine => Remote2流出?

例如,我在笔记本电脑上发出此命令:

scp user1@remote1.com:/Files user2@remote2.com:/Files
Run Code Online (Sandbox Code Playgroud)

rsync sftp scp

17
推荐指数
2
解决办法
9402
查看次数

网络映射器软件的最佳平台和编程语言

我想做我的最后一年项目,并考虑研究和构建网络映射软件,但我不知道哪种编程语言(Java,C++,C,Visual Basic)/平台(Linux,Unix,Windows)最适合这个研究软件.任何建议都将受到高度赞赏.

缺点...我熟悉Java但不擅长C和C++,但希望改进,如果那就是我必须使用的.....

我的专业是计算机网络学位...

除了Network Mapper之外的任何其他项目创意也值得赞赏!

c c++ java mapping networking

-2
推荐指数
1
解决办法
678
查看次数

按键从GAE数据存储区中检索实体

如果我在我的数据存储区中有一个实体的谷歌分配密钥,比如ag1iYXRjaC1nZW5lcmljchcLEgxCYXRjaGVzTW9kZWwiBUpvYiAyDA,有没有办法可以通过这个密钥轻松获取实体?我尝试过使用.get_by_id(),.filter('__key__=', 'ag1iYXRjaC1nZW5lcmljchcLEgxCYXRjaGVzTW9kZWwiBUpvYiAyDA')似乎找不到任何有用的东西.有任何想法吗?

database indexing google-app-engine google-cloud-datastore

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

浮点C++编译器选项| 防止a/b - > a*(1/b)

我正在用C++编写实时数字软件,目前用Visual-C++ 2008编译它.现在使用'快速'浮点模型(/fp:fast),各种优化,其中大部分都是有用的,但具体来说:

a/b -> a*(1/b) Division by multiplicative inverse
Run Code Online (Sandbox Code Playgroud)

对于我的很多计算来说,数字上太不稳定了.

(请参阅:Microsoft Visual C++浮点优化)

切换到/fp:precise使我的应用程序运行速度超过两倍.是否可以微调优化器(即禁用此特定优化),或以某种方式手动绕过它?

- 实际最小代码示例: -

void test(float a, float b, float c,
    float &ret0, float &ret1) {
  ret0 = b/a;
  ret1 = c/a;
} 
Run Code Online (Sandbox Code Playgroud)

[我的实际代码主要是矩阵相关算法]

输出:VC(cl,版本15,0x86)是:

divss       xmm0,xmm1 
mulss       xmm2,xmm0 
mulss       xmm1,xmm0 
Run Code Online (Sandbox Code Playgroud)

有一个div,而不是两个是数字上的一个大问题,(xmm0,从RAM预加载1.0f),因为取决于xmm1,2的值(可能在不同的范围内),你可能会失去很多精度(没有SSE编译,输出类似的stack-x87-FPU代码).

用函数包装函数

#pragma float_control( precise, on, push )
...
#pragma float_control(pop)
Run Code Online (Sandbox Code Playgroud)

是否解决了精度问题,但首先,它只能在功能级别(全局范围)上使用,其次,它会阻止函数内联,(即速度惩罚太高)

'精确'输出正在被来回'加倍'来回:

 divsd       xmm1,xmm2 
 cvtsd2ss    xmm1,xmm1 
 divsd       xmm1,xmm0 
 cvtpd2ps    xmm0,xmm1 
Run Code Online (Sandbox Code Playgroud)

c++ floating-point optimization floating-accuracy visual-c++

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

尝试使用ssh2_auth_pubkey_file()进行连接

我正在尝试制作一个在终端上运行的php脚本,它将通过ssh连接到远程服务器并检索文件.到目前为止这是我的代码

#!/usr/bin/php -q
<?php
$cwd = dirname(__FILE__).'/';
$filename = 'retrive-this.file';
$host = 'hostip';

$connection = ssh2_connect($host, 22, array('hostkey'=>'ssh-rsa'));
$methods = ssh2_auth_pubkey_file($connection, 'remoteuser',
                                 $cwd.'ssh/id_rsa.pub',
                                 $cwd.'ssh/id_rsa', "it's an inception");
var_dump($methods);

//ssh2_scp_recv($connection, "/remote/server/path/to/$filename", $cwd.$filename);
?>
Run Code Online (Sandbox Code Playgroud)

现在我遇到了这个ssh2_auth_pubkey_file()函数的问题,当我运行脚本时它会返回:

PHP Warning:  ssh2_auth_pubkey_file(): Authentication failed for remoteuser using public key in /home/tonyl/Projects/get-file-ssh.php on line 10
bool(false)
Run Code Online (Sandbox Code Playgroud)

密钥文件具有权限-rw-r--r--(644).此外,公钥已添加到remoteuser的授权密钥中.我能正常使用ssh命令ssh,所以我不认为这是一个ssh授权问题,但是谁知道.我是ssh和ssh2 php库的新手.

ssh2_auth_password()如果我在远程sshd_config文件中启用它,我可以使用它连接,但我不想这样做,因为它减少了安全性传输.

关于我能做什么的任何想法.

php ssh

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

将二进制数据写入稀疏文件的中间

我需要编译一个二进制文件,其中各个部分以随机顺序到达(是的,它是一个P2P项目)

def write(filename, offset, data) 
    file.open(filename, "ab")
    file.seek(offset) 
    file.write(data) 
    file.close()
Run Code Online (Sandbox Code Playgroud)

假设我在偏移1MB的文件中写入了32KB(f,o,d),然后在偏移0处写入了另外32KB的写入(f,o,d)

我最终得到一个65KB长的文件(即在32KB到1MB之间由0组成的间隙被截断/消失)

我知道这可能看起来是一个令人难以置信的愚蠢问题,但我似乎无法从file.open(..)模式中弄明白

建议感激不尽.

***更新

我编写P2P片段的方法最终如下(对于那些可能从中收集一些价值的人)

def writePiece(self, filename, pieceindex, bytes, ipsrc, ipdst, ts): 
    file = open(filename,"r+b")
    if not self.piecemap[ipdst].has_key(pieceindex):
        little = struct.pack('<'+'B'*len(bytes), *bytes) 
        # Seek to offset based on piece index 
        file.seek(pieceindex * self.piecesize)
        file.write(little)
        file.flush()
        self.procLog.info("Wrote (%d) bytes of piece (%d) to %s" % (len(bytes), pieceindex, filename))

    # Remember we have this piece now in case duplicates arrive 
    self.piecemap[ipdst][pieceindex] = True
    file.close()
Run Code Online (Sandbox Code Playgroud)

注意:我还使用struct.pack解决了一些困扰我一段时间的endian问题.

对于任何想知道的人来说,我正在研究的项目是分析直接从线路上捕获的BT消息.

python binary file-io p2p sparse-matrix

4
推荐指数
1
解决办法
4782
查看次数