小编mam*_*don的帖子

具有根UNC目录的拆分路径

所以我有一个像这样的UNC路径:

\\server\folder
Run Code Online (Sandbox Code Playgroud)

我想获得服务器的路径,例如\\server. Split-Path "\\server\folder" -Parent回报"".我尝试处理root的任何东西都失败了.例如,也Get-Item "\\server"失败了.

我怎样才能安全到达的路径\\server,从\\server\\folderPowerShell中的?

string powershell path unc

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

返回对boost :: any持有的数据的引用

我有一个任何指针的地图,称为gmap,定义如下:

std::map<std::string, boost::any*>& gmap = getSingleton().globalValues;
Run Code Online (Sandbox Code Playgroud)

这个地图确实是对globalValues的引用,我已经检查了gdb中的地址.我也控制了任何指针(这就是为什么它们是指针,我宁愿做引用,但我现在正在调试).现在,然后我用与gmap相同的方法返回:

return boost::any_cast<T&>(*gmap[key]);
Run Code Online (Sandbox Code Playgroud)

看着&boost :: any_cast [T&] [*gmap [key]]的内存,一旦我弹出那个堆栈帧,数据就会变坏.这很奇怪,因为根据:

Boost的any_cast文档

返回:如果传递了指针,如果成功则返回一个类似限定值的内容,否则返回null.如果T是ValueType,则返回保持值的副本,否则,如果T是对(可能是const限定的)ValueType的引用,则返回对保持值的引用.

因此,根据我的理解,这不应该返回对局部变量的引用.

c++ boost reference

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

解析Multi-Touch的/ dev/input/mouse0

我需要在linux上的多点触控触控板上启用手势检测(在用户空间中).从触摸板的鼠标设备文件(/ dev/input/mouse0)读取,我发现它是PS/2协议.

简而言之,那就是1位:XY符号和溢出,3个鼠标按钮和一个永久的'1'后跟1个字节的X delta和Y delta.

总计3个字节.但是当触摸板上有多个手指时,我没有看到任何方法来检测数据包"属于"哪个手指.建议?

linux multi-touch xorg touchpad

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

具有巨大数字的基本数学运算

大数字,我的意思是,如果你采用一个千兆字节(而不是4/8字节等),并尝试添加/减去/乘以/除以一些其他任意大(或小)的数字.

加法和减法相当容易(一次一个k/m /字节):

out_byteN = a_byteN + b_byteN + overflowBit 
Run Code Online (Sandbox Code Playgroud)

对于每个字节,因此我可以在读取磁盘中的数字时进行加/减,而不会冒RAM耗尽的风险.

对于乘法/除法,只需在循环中执行上述操作即可.

但是拿一个巨大数字的第n根呢?

c math bignum

4
推荐指数
2
解决办法
1819
查看次数

从TCP/IP流量构建文件?

因此,对于CS项目,我应该嗅探网络流并从该流构建文件.例如,如果程序指向〜/ dumps/tmp /那么目录结构将是这样的:

〜/ dumps/tmp /192.168.0.1/ page1.html page2.html [第1页和第2页的各种资源]下载了file1 /192.168.0.2/等等.

我在Linux上的C&pcap中这样做(因为我已经了解C++,并认为学习经验会很好).

到目前为止,我一直在研究TCP/IP的各种头格式

TCP标头

我想,我可以通过dst/src对数据包进行排序,然后通过序列和确认窗口正确排序.

但这让我有一个大的?至于我如何弄清楚数据包az是如何成为html文件的一部分,以及某些随机文件的AZ部分被下载等?

另外,我应该查找哪种其他类型的标题格式?目前,我有:

我发布了更多超链接图片,但我显然需要声誉才能做到这一点,抱歉 TCP,以太网,UDP,我会解决像FTP这样的问题(但我很确定FTP建立在TCP之上,如同是HTTP)

那么,简而言之,我如何在网络流中找到文件,我是否缺少任何我需要能够阅读的主要协议?

答复 我无法弄清楚如何回答,所以这将不得不这样做.

我曾经多次使用过pcap,并且会再次使用这个项目,但我不会使用任何Wiresharks的东西(虽然它是一个很棒的程序),因为我不想开玩笑学习这种东西.

是的,我会查看OSI层,在一个涵盖常见协议的好网站上的任何建议?

而且我想我应该停下来,在此问题成为讨论之前.

c sockets linux tcp

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

Printf和十六进制值

所以,我的类型为__be16(2个字节).在十六进制中,该值表示为十进制的0x0800或2048.(16 ^ 2*8)

所以,当我打印这个; 我这样做:

printf("%04X", value); //__be16 value;
                      //Print a hex value of at least 4 characters, no padding.
Run Code Online (Sandbox Code Playgroud)

输出:0008

printf("%i", value); //Print an integer.
Run Code Online (Sandbox Code Playgroud)

输出:8

我应该分别得到0800和2048,我做错了什么?

c c++ string formatting printf

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

从Azure表存储中检索随机行?

虽然这看起来很简单,但我无法想到从Azure表存储中获取随机行的恒定时间方法.

我有一些元素,它们有一个base64字符串作为它们的行键(它本质上是一个GUID)和一个单独的分区键(没有足够的数据来证明多个分区).

现在,我可以想到选择一个随机元素的最好的事情是保持一行并得到一个"随机"行我只是运行一个查询行,该行大于我正在持有的当前行.冲洗并重复.

有什么想法吗?

这是行元素,如果它有帮助:

public class PhoneEntity : TableEntity
{
    private PhoneID _id;
    private Uri _pushUri;

    public Uri PushUri
    {
        get { return _pushUri; }
        set { _pushUri = value; }
    }

    public PhoneID Id
    {
        get { return _id; }
        set { _id = value; }
    }

    public PhoneEntity(PhoneID id, Uri pushUri)
    {
        Id = id;
        PushUri = pushUri;

        this.PartitionKey = "PhonePartition";
        this.RowKey = id.Id64;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# random store azure

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

C++ operator []语法

只是一个快速的语法问题.我正在写一个地图课(学校).

如果我定义以下运算符重载:

template<typename Key, typename Val> class Map {...
Val* operator[](Key k);
Run Code Online (Sandbox Code Playgroud)

当用户写道时会发生什么:

Map<int,int> myMap;
map[10] = 3;
Run Code Online (Sandbox Code Playgroud)

做类似的事情只会覆盖Key k处的[null]指针的临时副本.甚至可以这样做:

map[10] = 3;
printf("%i\n", map[10]); 
Run Code Online (Sandbox Code Playgroud)

同一个运算符过载?

c++ operator-overloading map operators

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

新的没有分配足够的内存?

好吧,我正在直接从数据包中取出数据包并从中提取TCP流.

简而言之,这意味着剥离各种标题(例如,eth-> IP-> TCP->流数据).

在我最终通过所有标题时调用的函数中,我遇到了一个奇怪的错误.

    /*Meta is a pointer to the IP header, pkt is a pointer to the TCP header*/
    virtual const u_char* processPacket(const u_char* pkt, const u_char* meta) {
        //Extract IP info from meta.
        iphdr* metaHdr = (iphdr*)meta;
        //Form TCP header from the current offset, hdr.
        const tcphdr* hdr = (const tcphdr*)pkt;

        //Do pointer math to figure out the size of the stream data.
        u_int32_t len = ntohs(metaHdr->tot_len) - metaHdr->ihl*4 - hdr->doff*4;
        if(len > 0)
        {
            //Store TCP …
Run Code Online (Sandbox Code Playgroud)

c++ packets memcpy new-operator

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

我更改了 python 代码,但 python 似乎没有读取更改

所以,我一直在用 python 编程,但遇到了这个非常烦人的问题。我编写了一个小型矩阵库并开始在另一个模块中使用它(例如,import matrixlib)。我会找到一个错误,修复它并再次运行程序。虫子还在。

我会加入一些打印语句来查看发生了什么,但它们不会打印。我最终发现我的更改没有在 python 中注册。所以我开始删除 .pyc 文件(预编译的 python),但这没有帮助。

我最终放弃了,直接从矩阵库文件开始编程,但现在这个问题又回来了。我加入了一个打印语句来弄清楚一个方法发生了什么,解决了这个问题,然后把它拿出来。但它仍然打印。我什至在与 IDLE 不同的文本编辑器中搜索了“打印”,但在代码中只找到了一个打印语句。

这不是一个真正的代码问题,我可能以某种方式搞砸了我的 python 安装。(这只发生在我的 windows 机器上,而不是我的 linux 机器上)。如果您无论如何都想查看代码,请随意。hiesenbug-print 语句在我的代码中被注释掉了,但仍然执行。

    def det(self):
        #Had better be a square matrix.
        if self.colCount() != self.rowCount():
            return None
        #Are we a 1x1 matrix?
        if self.colCount() == self.rowCount() == 1:
            return self.a[0][0]
        #Are we a 2x2 matrix?
        if self.colCount() == self.rowCount() == 2:
            return self.a[0][0]*self.a[1][1]-self.a[1][0]*self.a[0][1]
        #Not a 2x2... so lets start recursing.
        d = 0
        for e in range(0,self.colCount()):
            tmp = partition(self.a, 0, e) …
Run Code Online (Sandbox Code Playgroud)

python

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

数据结构对齐

所以,我正在编写一些数据包结构(以太网,IP等),并注意到其中一些后跟属性((packed)),这阻止了gcc编译器尝试向它们添加填充.这是有道理的,因为这些结构应该在线上.

但是,我算了几句话:

struct ether_header
{
  u_int8_t  ether_dhost[ETH_ALEN];  /* destination eth addr */
  u_int8_t  ether_shost[ETH_ALEN];  /* source ether addr    */
  u_int16_t ether_type;             /* packet type ID field */
} __attribute__ ((packed));
Run Code Online (Sandbox Code Playgroud)

这是从站点复制的,但我的代码也使用了2 uint8_t和1 uint16_t.这总计最多两个字(4个字节).

根据源,系统优选根据4,8或甚至16位的倍数对齐结构.所以,我不明白为什么属性((打包))是必要的,因为afaik这不应该被打包.

另外,为什么双支架((打包))为什么不使用一对呢?

c++ linux networking attributes gcc

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