小编Ale*_*ker的帖子

为什么Go中有数组?

我理解Go中数组和切片之间的区别.但我不明白的是为什么有数组是有帮助的.为什么数组类型定义指定长度和元素类型有帮助?为什么我们使用的每个"数组"都不能成为切片?

arrays go slice

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

了解程序集MIPS .ALIGN和内存寻址

我正在学习这门课程,而且我真的很难理解指令的.align概念.

这是一个我无法理解的例子:

在此输入图像描述

我知道在数据段内部有地址,从0x10010000,0x10010020开始等.

我知道,在每个地址内,有8个内存字段,每个字段有32位.

现在,我不明白的是,var2地址0x10010010内的方式和原因是什么?str1在地址0x10010003内,因为我们保留了3位var1.

最后一点是,指令究竟.align' doing? when I tested it in Mars4, it only shifted the data into the next memory field when I used对齐3`及以上,但我并没有真正得到它.

我很抱歉,如果这是非常令人困惑的家伙,我在这里有点绝望.

assembly mips

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

将 uint8_t 数组转换为 C++ 中的字符串

我有一个 uint8_t 类型的数组。我想创建一个字符串来连接数组的每个元素。这是我使用 ostringstream 的尝试,但之后字符串似乎为空。

std::string key = "";
std::ostringstream convert;
for (int a = 0; a < key_size_; a++) {                                               
  convert << key_arr[a]
  key.append(convert.str());
}

cout << key << endl;
Run Code Online (Sandbox Code Playgroud)

c++ ostringstream uint8t

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

使用channel或sync.Cond等待条件

我正在尝试等待特定的条件,我想了解如何最好地完成此操作的建议。我有一个如下所示的结构(简化):

type view struct {
    timeFrameReached bool
    Rows []*sitRow
}
Run Code Online (Sandbox Code Playgroud)

在 goroutine 中,我正在更新一个文件,该文件被读入view变量中。行数增加,timeFrameReached最终将是true

在其他地方,我想等待以下条件成立:

view.timeFrameReached == true || len(view.Rows) >= numRows
Run Code Online (Sandbox Code Playgroud)

我正在尝试学习通道以及 Go 的条件变量如何工作,我想知道这里最好的解决方案是什么。理论上,我可以做这样的小事:

for {
    view = getView()
    if view.timeFrameReached == true || len(view.Rows) >= numRows {
        break
    }
}
Run Code Online (Sandbox Code Playgroud)

但这显然是一个幼稚的解决方案。的值numRows来自 HTTP 请求,因此条件方法似乎具有挑战性。Goroutine 不知道何时广播条件,因为它不知道它正在查找的行数。

channel condition-variable go

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

在调用free()时使用和号(&)

我正在查看的一些代码声明并稍后初始化指向结构的指针.

mcsConsole_t *mcsConsole;
mcsConsole = (mcsConsole_t *) malloc(sizeof (mcsConsole_t) );
Run Code Online (Sandbox Code Playgroud)

这个结构的typedef是:

typedef struct {
    unsigned int   reqType;             /* Request Type                */
    unsigned int   consoleID;           /* Console ID                  */
    int            returnCode;          /* Return code                 */
    int            reasonCode;          /* Reason code                 */
    unsigned int   ecbArea;             /* ECB posted for responses    */
    char           reserved[4];         /* Available                   */
    cmdRequest_t  *cmdRequest;          /* Pointer to command request  */
    cmdResponse_t *cmdResponse;         /* Pointer to command response */
} mcsConsole_t;
Run Code Online (Sandbox Code Playgroud)

释放此内存时,指针名称前面会包含一个&符号.

free(&mcsConsole);
Run Code Online (Sandbox Code Playgroud)

这个的目的是什么,你什么时候使用&符号来免费通话?我习惯于通过简单地提供指针变量名来查看释放内存的代码.

int *ptr = malloc( sizeof(*ptr) …
Run Code Online (Sandbox Code Playgroud)

c free pointers

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

具有多个可能结尾的Java正则表达式

我需要编写一个正则表达式,它将匹配具有txt,htm或html扩展名的文件名.我知道parens将字符组合在一起,并且括号允许一组中的一个字符匹配,所以我尝试组合这些方法,但它不起作用.要测试的字符串是[1]部分..*应该匹配任意数量的字符,然后是\\.将是点,然后我尝试结合括号和括号.

if (!Pattern.matches(".*\\.[(txt)(htm)(html)]", parts[1])) {
    System.err.println("501 Not Implemented: " + parts[1] + "\n");
}
Run Code Online (Sandbox Code Playgroud)

java regex

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

过滤前十分钟的 pcap

我有一个很大的 pcap 文件,我想生成一个仅包含前十分钟流量的新 pcap。我可以这样做tcpdump吗?我在editcap网上看到提到过,但tcpdump如果可能,我想使用。

tcpdump pcap editcap

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

检查Gson JsonArray是否为空

HttpURLConnection用来检索JSON字符串。看起来像这样:

{
  "status":"ok",
  "testSuites":[
    {
      // possibly one object in here
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我想知道数组是否为空。数组中最多有一个对象。我尝试了以下方法:

JsonParser parser = new JsonParser();
JsonObject obj = parser.parse(json).getAsJsonObject();
JsonArray testSuites = obj.getAsJsonArray("testSuites");
Run Code Online (Sandbox Code Playgroud)

然后检查是否testSuitesnull,但这不起作用,因为不是null。但是它是空的!

json gson

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

在单引号内转义双引号内的单引号

我发出一个 curl 命令,理想情况下看起来像这样(请注意,由于缺乏转义,这是不正确的):

curl -X POST --data-urlencode 'payload={"channel": "@somebody", "text": "I'm sending you a test message. Let me know if you get it."}' https://hooks.slack.com/services/XXX
Run Code Online (Sandbox Code Playgroud)

我是单词中的单引号导致此失败。但是,我不确定如何转义此引用,因为有多个级别的嵌套引用。

作为第二个问题,如果文本字符串中有双引号怎么办?那些人怎么可能逃脱?

我已经阅读了有关转义的内容并查看了其他 SO 帖子(包括如何在单引号字符串中转义单引号?),但我似乎无法找到任何可行的解决方案。链接的帖子讨论了单引号中的单引号,并通过使用双引号解决了这个问题。但是,我的单引号已经是双引号了。所以这个比较复杂。

非常感谢你的帮助。

bash quoting

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

去哪里记录错误

也许这是一种意见,或者它实际上是一种最佳实践,但我想要正确地做到这一点.

请考虑以下代码:

func main() {
    if err := doSomething(); err != nil {
        // log here and exit?
    }
}

func doSomething() {
    f, err := os.Open("filename.ext")
    if err != nil {
        // log here and return the error/exit?
    }
}
Run Code Online (Sandbox Code Playgroud)

我很想知道应该记录错误的位置以及退出程序的位置(假设恢复是不可能的).一些可能性包括:在被调用者中记录和退出; 登录被调用者,返回错误,并退出调用者; 登录被叫方,返回错误,登录调用方并退出.所有这些方法似乎都有好处.例如,第二种方法允许细粒度的错误消息,但仍然将错误传递给调用者.但是,它将导致两条日志消息.

谢谢!

error-handling logging error-logging go

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