phpor

3月 082024
 

man gcc

gcc 编译时,如果使用了 -fvisibility=hidden 选项,编译的so文件中的函数默认是不导出的,就是动态链接是链接不到的;不仅有隐藏的效果(使用nm还是能看到的,所以,该选项不是出于安全考虑,主要是实现private的效果),也有利于编译器的进一步优化。由于历史代码可能不期望这个行为,所以该选项也不是默认行为(好像在object-c中是默认行为)。

下面测试一下:

main

 

f.h

这个头文件太简单了🤦‍♀️

 

libf.c

 

编译main.c

编译libf.c

 

 Posted by at 下午 5:33
2月 072024
 

0.207 还不支持设置history file,只能是 HOME目录下的.presto_history

Central Repository: com/facebook/presto/presto-cli/0.207 (maven.org)

 

较新的版本(如: 0.284 )就可以通过环境变量 PRESTO_HISTORY_FILE 来设置了:

 

查看presto版本号:

 

 Posted by at 下午 4:13
12月 142023
 

经典回答

  1. 都是用来分配内存的
  2. new 会自动执行构造函数,malloc不会

另一种回答

  1. new是关键字,给编译器看的,编译器会把new解释成想要的东西
  2. malloc不是关键字,是应该运行时调用的函数,编译器眼里和其它函数没区别
 Posted by at 下午 12:58
8月 192023
 

在Prometheus中,alertstate字段表示报警的状态,有以下几种可能的取值:

  1. firing:表示报警处于触发状态。当报警规则的条件满足时,报警状态会变为firing,表示触发了报警。通常情况下,报警会发送给相关的接收器或通知渠道,以便进行处理。
  2. resolved:表示报警已解决。当报警规则的条件不再满足时,报警状态会变为resolved,表示报警已经解决。这意味着报警规则所监控的指标已经恢复到正常状态,不再需要进一步的处理。
  3. pending:表示报警处于等待状态。当报警规则的条件满足时,报警状态会从firing变为pending,表示报警处于等待状态。在报警状态从firing到resolved之间的过渡期间,报警可能会处于pending状态,这通常是因为报警规则定义了一些延迟或滞后的条件。

这些报警状态的含义可以根据你的具体配置和需求进行调整和解释。在实际使用中,你可以根据报警状态来判断报警的状态和处理情况,以便及时采取相应的措施。

什么条件会使报警状态会从firing变为pending?

在Prometheus中,报警状态从firing变为pending通常是由于报警规则定义了一些延迟或滞后的条件。这些条件可以是以下几种情况之一:

  1. For:指定了报警规则需要持续满足条件的时间。当报警规则的条件首次满足时,报警状态会变为firing。然后,报警规则会继续检查条件是否持续满足一定的时间。只有在这段时间内持续满足条件,报警状态才会保持为firing。如果在持续时间内条件不再满足,报警状态会变为pending。
  2. Wait:指定了报警规则在触发后等待一段时间。当报警规则的条件首次满足时,报警状态会变为firing。然后,报警规则会等待一段时间,以确保条件仍然满足。如果在等待时间结束后条件仍然满足,报警状态会保持为firing。否则,报警状态会变为pending。

这些条件的具体配置可以在Prometheus的报警规则中进行定义和调整。通过设置适当的延迟或滞后条件,可以避免一些短暂的异常情况导致不必要的报警触发。这样可以减少误报警和降低报警的噪音。具体的配置和调整应根据你的监控需求和实际情况来进行。

 

以下是一个具有for和wait条件的报警规则配置示例:

在这个示例中,我们定义了一个名为”HighErrorRate”的报警规则。该规则的表达式是检测最近5分钟内HTTP请求中状态码为500的速率是否超过100次/秒。如果满足这个条件,报警状态会变为firing。

接下来,我们设置了两个条件:

  1. for: 5m:这个条件表示报警规则需要持续满足条件的时间为5分钟。如果在5分钟内持续满足条件,报警状态会保持为firing。如果在5分钟内条件不再满足,报警状态会变为pending。
  2. wait: 10m:这个条件表示在报警状态变为firing后,报警规则会等待10分钟。这段时间用于确保条件仍然满足。如果在等待时间结束后条件仍然满足,报警状态会保持为firing。否则,报警状态会变为pending。

在这个示例中,如果HTTP请求中状态码为500的速率超过100次/秒持续5分钟,并且在之后的10分钟内仍然满足这个条件,那么报警状态会保持为firing。否则,报警状态会变为pending。

这只是一个示例,具体的报警规则配置应根据你的监控需求和实际情况进行调整。你可以根据需要设置不同的for和wait条件来满足特定的报警逻辑和条件。

 Posted by at 下午 4:14