我刚刚在愚蠢/ ManualExecutor.h中看到了这个黑魔法
TimePoint now_ = now_.min();
Run Code Online (Sandbox Code Playgroud)
在我对整个库源代码进行grep之后,我还没有看到now_除此处之外的其他任何变量的定义.这里发生了什么事?这实际上是某种递归变量声明吗?
我一直在公司里看到这样的代码:
namespace {
const MAX_LIMIT = 50;
const std::string TOKEN = "Token";
}
Run Code Online (Sandbox Code Playgroud)
我很困惑,为什么你需要一个匿名命名空间.一方面,您需要MAX_LIMITAND 的本地翻译单元TOKEN.但是,由于这个原因,没有匿名命名空间就已经实现了const.static const而且简单const都实现了本地翻译单元.
另一方面,如果文件中的某个地方有一个名为相同的变量,则没有命名冲突.
int foo()
{
std::string TOKEN = "MyToken"; // Clash! ::TOKEN vs TOKEN can be used.
}
Run Code Online (Sandbox Code Playgroud)
这将证明匿名命名空间的合理性.但是,您在函数中需要一个变量名称的频率实际上是在函数const外部声明的变量吗?我的回答永远不会.所以在实践中,对我来说不需要未命名的命名空间.任何提示?
具有观察者模式。
class Observer
{
virtual eventA()=0;
virtual eventB()=0;
...
virtual eventZ()=0;
}
Run Code Online (Sandbox Code Playgroud)
Observer类不能更改,但是我的类仅对事件B感兴趣。因此,我需要:
class MyObserver{
eventA() override {}
eventB() override { /* Do something */ }
eventC() override {}
...
eventZ() override {}
}
Run Code Online (Sandbox Code Playgroud)
清空所有事件的开销,特别是如果您有一个始终要在cpp文件中实现的策略(显然是模板除外)时,这是开销。
C ++ 11是否为此提供任何关键字?喜欢
...
eventC() override = empty;
...
Run Code Online (Sandbox Code Playgroud)
这样,我就不需要在CPP文件中添加空的实现。
我一直在研究规则引擎,这些规则引擎更适合在嵌入式系统上运行。系统将从传感器收集信息,并根据该信息进行特定的C / C ++调用。一个例子是:
IF RainSensor.value > RainSensor.threshold
THEN call( GarageWindow::close())
Run Code Online (Sandbox Code Playgroud)
作为GarageWindow的C ++类,位于链接到规则引擎库的二进制文件中。
我不能对上述嵌入式系统的功能做出任何假设。要求是:
我需要根据其功能(在以后定义)中给出其他选择,这些假设是:
1)嵌入式系统不支持任何内容(不支持JVM,不支持python等):
CLIPS作为C库或clipsmm作为C ++库。两者均可用于商业应用(clipsmm的GPL)。
优点:开源。很好的测试/记录。可移植,可在低内存占用情况下运行。可以从其RHS部分调用C或C ++函数。规则引擎很可能需要与C或C ++软件进行交互。
缺点:它不是线程安全的。它仅支持正向链接。
2)系统支持python:
PyClips:
到CLIPS的Python接口。功能保持与以前的情况相同。仅当需要在RHS部分中进行python调用时,使用此选项才有好处。我错过任何优点/缺点吗?
3)系统支持JVM:
杰西:
优点:与Java对象的良好集成。类似于CLIPS的脚本语言。向前和向后链接。自动侦听Java对象以修改插槽。
缺点:许可。只能在编译时定义新类。
流口水:
优点:开源。记录下来。Java集成。向前和向后链接。
缺点:它更适合在网络上工作(这是我的印象)。
在嵌入式环境中,Drools vs Jess有什么优势?
两者都只能在编译时添加新类。CLIPS可以在运行时。另一方面,如果更新剪辑实例的C ++代码很旧,则直接在CLIPS中创建的任何新类都不会与调用C ++代码中的任何其他类匹配。因此,重新编译Java选项的弊端并非如此。
还有其他我完全缺少的适用于嵌入式系统的引擎吗?
有没有办法配置https://hub.docker.com/r/jwilder/nginx-proxy/以通过硬编码 api 密钥添加基本身份验证?
我只能找到 NGINX 控制器和 NGINX Plus 的示例,令我有点惊讶的是,对于开源 NGINX 的这种非常常见的用例,没有太多示例。
NGINX Plus 的示例在这里:https ://www.nginx.com/blog/deploying-nginx-plus-as-an-api-gateway-part-1/