据我所知,Linux的起点CLOCK_MONOTONIC是启动时间.在我目前的工作中,我更喜欢使用单调时钟而不是CLOCK_REALTIME(用于计算)但同时我需要在报告中提供人性化的时间戳(年/月/日).它们可能不是很精确,所以我想加入单调计数器和启动时间.
从这里我可以使用api调用在linux系统上获得这个时间?
我从服务器每200ms左右实时接收UDP数据包,有时我甚至会在几秒钟内收到数据包.
我把我的UDP ping(从客户端)放到200ms,这使我的网络响应更快,但这都是从实验中学到的.我不清楚为什么会这样.
我想了解节能算法如何在移动设备上工作,因为我认为这就是为什么会发生这种情况.
经过一些调查,我发现到目前为止最好的事情是 http://www.crittercism.com/2014/03/200ms-the-magical-number-for-faster-response-times/
但它没有太多有关该主题的细节,也没有提及进一步阅读.
通过确定性,我隐约意味着可以用于航空航天飞行软件等关键实时软件.垃圾收集器(以及动态内存分配)在飞行软件中是很大的禁忌,因为它们被认为是非确定性的.但是,我知道正在对此进行研究,所以我想知道这个问题是否已经解决了.
我还在问题中包括任何垃圾收集算法,这些算法限制了它们的使用方式.
正如我在另一个帖子中已经说过的那样,我正在开发一个与音频实时图形编程相关的项目(类似Pure Data,Max/MSP,Reaktor).
我在互联网上做了一天的研究,寻找一个好的(维护的,文档齐全的,高度可移植的)C++库,用于与音频和MIDI的低级交互,但我仍然无法决定一个库.
我正在考虑PortAudio + PortMIDI(PortMedia),但他们缺少文档(特别是PortMIDI),并且没有官方社区,只有邮件列表(我认为论坛社区非常重要!),同样(或最差)的情况RTAudio和RTMidi库.
我也尝试一下:
所以...我的问题是:你有任何实时音频/ MIDI的经验吗?你推荐我哪个图书馆?
谢谢
我看到了这个片段:
io.sockets.on('connection', function(socket) {
const subscribe = redis.createClient();
const publish = redis.createClient();
socket.on('publish', function(channel, data) {
publish.publish(channel, data);
});
socket.on('psubscribe', function(channel) {
subscribe.psubscribe(channel);
});
subscribe.on("pmessage", function(pattern, channel, message) {
socket.emit('message', { channel: channel, data: message });
});
});
Run Code Online (Sandbox Code Playgroud)
$(".action").click(function() {
socket.emit('publish', 'game.#{gameid}.action.' + $(this).data('action'),
JSON.stringify({ nick: "#{nick}", ts: Date.now() })
);
Run Code Online (Sandbox Code Playgroud)
而我想知道为什么?Socket.IO有没有自己的广播机制?为什么选择Redis'Pub-Sub over Socket.IO?我们不能这样做:
io.sockets.on('connection', function(socket) {
socket.on('action', function(channel, data) {
socket.broadcast.to(channel).emit(data)
});
});
Run Code Online (Sandbox Code Playgroud)
如果有理由使用Redis,那么有什么好处呢?持久性?
我有一个用例,需要按照发布/订阅消息传递模式在服务器和客户端之间进行实时通信.生产者将是java,节点等服务器,客户端将是 - java桌面应用程序,移动应用程序(android/ios),浏览器(javascript).
我已经探讨了下面讨论的许多选项,但我无法提出强大的可扩展解决方案.
使用案例:服务器将发布各种主题的通知/消息,订阅一组主题的所有客户端(java/js/ios)将实时获取这些消息.
我按照3种方法解决了这个问题1> socketIo/socketcluster 2>使用mosquitto/rabbitmq作为代理探索了mqtt协议.3>探索卡夫卡
主要目标是使该架构具有高度可扩展性,不仅可以同时拥有超过百万个客户端连接,而且每秒可以发布和消耗超过百万条消息.
第一种方法很简单,但它可以工作,但webSocket不是可扩展的解决方案.
第二种方法可行,但是rabbitmq将创建大量队列(百万个客户端的百万个队列),因为它为每个连接到它的客户端维护队列,而且RabbitMq没有高消息发布和消耗率,加上假设我们有一个集群RabbitMQ的节点那么只有一个节点用于处理请求和其他的用于高可用性,但不平行的消耗.
第三,我探索了kafka,它以我的基准着称,我使用kafka的高级java api在java中创建客户端,可以用来订阅kafka主题,并且发布到该主题的任何消息都可以实时传递给客户端.
所以我的问题是使用kafka客户端进行实时推送通知有多好,其中所有的Java桌面应用程序(可能是一百万)将包含这个kafka java客户端sdk并将订阅某些主题,在这里我对待每个客户端作为消费者群体.
而且,这里一个主要问题是,这卡夫卡的客户是规模大,由于其阶依赖,因此使用此客户端Android将不会是一个很好的选择,也是我不认为它会奏效.
MQTT擅长在这里,因为它有针对Android,JAVA,IOS等官方phao客户
此外,我还没有在网上使用kafka看到用于百万消费者的发布/订阅消息传递的示例,大多数人正在将其用于数据管道,例如:实时日志处理,向HDFS提供数据,分析引擎等,流处理.
主要问题是我如何使用mqtt协议(适用于android/ios/web/iot)和kafka作为消息代理(具有较高的发布/订阅率)并为此问题提出可扩展的解决方案.
我的用例在某种程度上也类似于uber,其中有数百万的android/ios设备(客户端),我们实际上可以看到我们在地图上所有汽车的实时移动,有没有人知道后面的架构是什么这些实时跟踪汽车.
scalability real-time publish-subscribe rabbitmq apache-kafka
我想通过使用opengl绘制体素,但似乎不支持它.我制作了一个具有24个顶点(每个面4个顶点)的立方体绘图功能,但是当你绘制2500个立方体时它会降低帧速率.我希望有更好的方法.理想情况下,我只想向显卡发送位置,边缘大小和颜色.我不确定是否可以通过使用GLSL将指令编译为片段着色器或顶点着色器的一部分来实现此目的.
我搜索谷歌,发现了点精灵和广告牌精灵(同样的事情?).这些可以用作更快地绘制立方体的替代方法吗?如果我使用6,每个脸一个,似乎会向显卡发送更少的信息,并希望获得更好的帧速率.
另一个想法是,我可以使用一个drawelements调用绘制多个立方体?
也许有一种我不了解的更好的方法?任何帮助表示赞赏.
我有一个线程类,其循环需要每秒执行4次.我知道我可以做类似的事情
do_stuff()
time.sleep(0.25)
Run Code Online (Sandbox Code Playgroud)
但问题是,这是不考虑所需的时间do_stuff().实际上,这需要是一个实时线程.有没有办法实现这个目标?理想情况下,线程在不执行代码时仍会处于休眠状态.
我最近遇到了WebSockets,我对他们带来的可能性感到震惊.我搜索了这种实时(和近实时)通信协议和技术的完整列表 - 例如XMPP,WebRTC,但我找不到任何接近完整的列表.所以请帮我组合清单.
更新:我正在寻找可用于网络的实时协议.