小编ziu*_*ziu的帖子

从Arraylist到Array

我想知道从ArrayList转换为Array是否安全/可取?我有一个文本文件,每行一个字符串:

1236
1233
4566
4568
....
Run Code Online (Sandbox Code Playgroud)

我想将它们读入数组列表然后将其转换为数组.这样做是否明智/合法?

谢谢

java arraylist

106
推荐指数
3
解决办法
23万
查看次数

用于PCAP实时捕获的最佳SNAPLEN

pcap_open_live用于从界面嗅探时,我已经看到很多使用各种数字作为SNAPLEN值的例子,范围从BUFSIZ(<stdio.h>)到"魔术数字".

将SNAPLEN设置为我们捕获的接口的MTU是不是更有意义?通过这种方式,我们可以在PCAP缓冲区中同时容纳更多数据包.假设MRU等于MTU是否安全?

否则,是否有一种非常规的方式来设置SNAPLEN值?

谢谢

c snapshot live mtu pcap

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

在C中寻找正确的环形缓冲区实现

我在C中寻找具有以下特征的环形缓冲区实现(或伪代码):

  • 多生产者单一消费模式(MPSC)
  • 消费者阻止空
  • 生产者完全阻止
  • 无锁(我期望高争用)

到目前为止,我一直只使用SPSC缓冲区 - 每个生产者一个 - 但我想避免消费者不断旋转以检查所有输入缓冲区的新数据(也许是为了摆脱我的一些编组线程)系统).

我在Intel机器上开发Linux.

c multithreading producer-consumer circular-buffer lock-free

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

如何评估嵌套的预处理器宏

假设我想选择某个预处理程序指令的行为,在编译时评估常量字符串和另一个宏的结果的串联.

#define CASE1 text1
#define CASE2 text2
#define CASE3 text3
#define SCENARIO 3
/** the following won't work - for examplification purposes only**/
#define FUNCTION CASE##SCENARIO

/** whenever I write FUNCTION, I expect to see text3 **/
Run Code Online (Sandbox Code Playgroud)

我很难想到一个可行的解决方案,因为预处理器是一次通过的野兽.这甚至可行吗?

c macros evaluation gcc

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

在另一台计算机上继续使用git存储的最实用的方法是什么?

它不止一次离开办公室只保存了一堆未提交的代码.

因此,如果我想继续使用相同的功能,我必须SSH到我的主机,创建一个一次性分支,提交存储并将新分支推送到开发存储库.

现在我想知道是否有一个更清晰,更实用的解决方案,用于将git存储"复制/导出"到另一个本地存储库.我已经排除了SCP在办公室机器上的本地存储库,因为我的笔记本电脑上也可以进行一些工作.

PS:我的问题是这样的延续一个

git export copy save git-stash

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

如何使用 pcap 从多个接口捕获流量

为了使用 pcap 从多个接口嗅探,我将执行以下操作(在伪代码中):

foreach interface:
    open a file descriptor using pcap_open_live()
    set the file descriptor to non-blocking

while true:
    check for a ready file descriptor using select() or an equivalent I/O multiplexer
    read data from every ready file descriptor using pcap_dispatch()
    handle EndOfStream or Errors and break out of loop if needed
Run Code Online (Sandbox Code Playgroud)

这是否足够或者是否有一些特别的注意事项需要考虑?

c linux interface pcap

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

为什么不使用静态变量作为智能指针的引用计数

当我查看"增强版"智能指针 - 增强是添加引用计数 - 我看到他们使用一些"复杂"技术进行引用计数,例如一个完全独立的类或指向整数的指针.

这是一个例子:

template<class T>
class SmartPointer{
  T* mp_T;
  unsigned int * mp_Count;
  public:
    ... all the APIs ...
};
Run Code Online (Sandbox Code Playgroud)

我想知道,收益是多少?由于目标是让所有实例共享值,为什么不将它声明为静态成员变量:

template<class T>
class SmartPointer{
  T* mp_T;
  static unsigned int m_Count;
  public:
    ... all the APIs ...
};
Run Code Online (Sandbox Code Playgroud)

我必须错过一些东西,但经过一番搜索后,我找不到任何答案.请说清楚.

c++ smart-pointers

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

使用getopt为命令行选项提供两个参数

是否有另一种方法可以在使用getopt时将两个参数作为单个字符串传递给选项?通常我会做以下事情:

./command -o "key value" [command arguments]
Run Code Online (Sandbox Code Playgroud)

然后我必须明确地拆分参数字符串

 while ((op = getopt(argc, argv, "o:")) != EOF) {
    switch (op) {
             case 'o': 
                 char* result = NULL;
                 result = strtok_r(optarg," ");
                 while(result) {
                     /* DO STUFF */
                     result = strtok(NULL," ");
                 }

                 break;
             default:
                 printUsage()
                 break;
   }
Run Code Online (Sandbox Code Playgroud)

所以,我想知道是否有可能做到以下几点:

./command -o key value [command arguments]
Run Code Online (Sandbox Code Playgroud)

使getopt将"value"视为-o第二个参数而不是命令参数.

c getopt

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

构建"稀疏"查找阵列,最大限度地减少内存占用

假设我想构建一个数组来执行查找以解析网络协议(如ethertype).由于这样的标识符是2字节长,如果我使用直接索引,我最终会得到一个2 ^ 16个单元格数组:这是一个真正的浪费,因为它很可能是数组稀疏 - 即大量的空白阵列.

为了减少内存使用量,我会使用像CMPH这样的完美散列函数生成器,这样我就可以将我的"n"标识符映射到n大小的数组而不会发生任何冲突.这种方法的缺点是我必须依赖外部的"开放"库.

我想知道 - 在我的情况下 - 是否有更聪明的方法可以在保持海湾内存使用的同时进行恒定的时间查找; 请记住,我感兴趣的是索引16位无符号,并且设置大小非常有限.

谢谢

arrays algorithm lookup memory-optimization data-structures

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

为库函数定义编译器警告/错误

我想知道是否有可能为特定的库函数生成编译器警告或错误.

例如,我一直在多线程程序上工作,每当我尝试使用像strtok这样的非线程安全函数(而不是strtok_r)时,我想得到编译器警告.

谢谢.

c attributes gcc compiler-warnings

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