C++只是通过让我微观管理我自己的记忆来吸引我太多的时间,让我打字太多(你好std::vector<Thingy>::const_iterator it = lotsOfThingys.begin()),并且厌倦了我很长的编译时间.什么是严肃的实时图形编程的唯一最佳选择?垃圾收集是必须的(必要时能够避免使用垃圾),速度必须与C++竞争.访问C libs的合理故事也是必须的.
(完全披露:我对此有自己的答案,但我很有兴趣看到其他人发现什么是实时图形工作的C++的好替代品.)
编辑:感谢大家的深思熟虑的回复.鉴于这个问题确实没有"正确"的答案,我不会选择任何特定的答案.除此之外,我只选择我喜欢的语言作为C++替代品,这不太公平.
我正在寻找一种方法来创建一个简单的HTML表,可以在数据库更改事件时实时更新; 特别添加了一条新记录.
换句话说,将其视为执行仪表板.如果进行了销售并在数据库中添加了新行(在我的情况下是MySQL),那么网页应该用新行"刷新"表格.
我已经看到了一些关于新EVENT GATEWAY用法的信息,但所有的例子都使用Coldfusion作为"推动者",而不是"消费者".我想让Coldfusion将事件更新/推送到网关并消耗响应.
如果可以使用AJAX和CF的组合完成,请告诉我!
我真的只是想了解从何处开始实时更新.
先感谢您!!
编辑/所选答案的说明:
我最终选择@ bpeterson76的答案,因为目前最简单的实施是小规模的.我真的很喜欢他的Datatables建议,这就是我用来近乎实时更新的内容.
随着我的网站越来越大(希望如此),我不确定这是否是一个可扩展的解决方案,因为每个用户都会点击"监听器"页面,然后再查询我的数据库.我的查询相对简单,但我仍然担心将来的性能.
在我看来,随着HTML5开始成为Web标准,@ iKnowKungFoo建议的Web套接字方法很可能是最好的方法.使用长轮询的Comet也是一个好主意,但它实现起来有点麻烦/似乎也有一些扩展问题.
因此,我们希望网络用户开始采用支持HTML5的更现代的浏览器,因为Web套接字是一种相对简单且可扩展的方式来接近实时.
如果您认为我做出了错误的决定,请发表评论.
最后,这里有一些源代码:
使用Javascript:
请注意,这是一个非常简单的实现.它只是想查看当前数据表中的记录数是否已更改,如果是,则更新表并发出警报.生产代码更长,更复杂.这只是展示了一种接近实时更新的简单方法.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.js"></script>
<script type="text/javascript" charset="utf-8">
var originalNumberOfRecsInDatatable = 0;
var oTable;
var setChecker = setInterval(checkIfNewRecordHasBeenAdded,5000); //5 second intervals
function checkIfNewRecordHasBeenAdded() {
//json object to post to CFM page
var postData = {
numberOfRecords: originalNumberOfRecsInDatatable
};
var ajaxResponse = $.ajax({
type: "post",
url: "./tabs/checkIfNewItemIsAvailable.cfm",
contentType: "application/json",
data: JSON.stringify( postData )
})
// When the response comes back, if update is …Run Code Online (Sandbox Code Playgroud) 有人可以在这里阐明NASA如何设计他们的航天器架构以确保他们能够修补部署的代码中的错误吗?
我从未构建任何"实时"类型系统,这是在阅读本文后想到的一个问题:
http://pluto.jhuapl.edu/overview/piPerspective.php?page=piPerspective_05_21_2010
"当我们下周唤醒航天器时,我们将要做的第一件重要事情之一就是上传近20个小错误修复和其他代码增强功能到我们的故障保护(或"自动驾驶响应")软件."
我认为C/C++与C#/ Java性能问题很好,这意味着我已经阅读了足够的证据来证明VM语言不一定比"接近硅"语言慢.主要是因为JIT编译器可以进行静态编译语言无法进行的优化.
然而,我最近收到了一个人的简历,他声称基于Java的高频交易总是被C++击败,并且他一直处于这种情况.
快速浏览工作现场确实表明HFT申请人需要C++知识,看看Wilmott论坛会显示所有从业者都在谈论C++.
这种情况有什么特别的原因吗?我原以为现代金融业务有点复杂,首选具有类型安全性,托管内存和丰富库的VM语言.这种生产力更高.此外,JIT编译器越来越好.他们可以在程序运行时进行优化,因此您认为他们使用该运行时信息来击败非托管程序的性能.
也许这些人正在用C++编写关键位并从托管环境(P/Invoke等)调用它们?那可能吗?
最后,有没有人有这方面的核心问题的经验,这就是为什么在这个领域,非托管代码毫无疑问优先于托管?
据我所知,HFT人员需要尽快对传入的市场数据作出反应,但这不一定是硬实时要求.如果你的速度慢,你的情况会更糟,这是肯定的,但是你不需要保证每次响应都有一定的速度,你只需要一个快速的平均值.
编辑
是的,到目前为止有几个很好的答案,但相当普遍(很好的基础).让我指出一下HFT人会运行什么样的程序.
主要标准是反应能力.当订单进入市场时,您希望成为第一个能够对其做出反应的订单.如果你迟到了,其他人可能会在你之前接受它,但是每个公司的策略都略有不同,所以如果一次迭代有点慢,你可能会好.
该程序全天运行,几乎没有用户干预.无论处理每个新的市场数据的功能是每秒运行几十(甚至几百)次.
这些公司通常对硬件的价格没有限制.
我一直试图让我的应用程序录制来自麦克风的声音,然后(近似)实时播放,但是没有成功.
我分别使用AudioRecord和AudioTrack类进行录制和播放.我尝试了不同的方法,我试图记录传入的声音并将其写入文件,它工作正常.我也尝试使用AudioTrack播放该文件后的声音,它也可以正常工作.问题是当我尝试实时播放声音时,而不是在写完后读取文件.
这是代码:
//variables
private int audioSource = MediaRecorder.AudioSource.MIC;
private int samplingRate = 44100; /* in Hz*/
private int channelConfig = AudioFormat.CHANNEL_CONFIGURATION_MONO;
private int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
private int bufferSize = AudioRecord.getMinBufferSize(samplingRate, channelConfig, audioFormat);
private int sampleNumBits = 16;
private int numChannels = 1;
// …
AudioRecord recorder = new AudioRecord(audioSource, samplingRate, channelConfig, audioFormat, bufferSize);
recorder.startRecording();
isRecording = true;
AudioTrack audioPlayer = new AudioTrack(AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT, bufferSize, AudioTrack.MODE_STREAM);
if(audioPlayer.getPlayState() != AudioTrack.PLAYSTATE_PLAYING)
audioPlayer.play();
//capture data and record to file
int …Run Code Online (Sandbox Code Playgroud) 我正在考虑Haskell的软实时应用程序.我可能会使用演员,这是值得的.我想知道是否有人了解Haskell的当前实时状态.具体来说,GC暂停应用程序的问题.我已经广泛搜索过,而且我在2年多前发现了大量的讨论,但没有任何最新内容.以下是我发现的几个参考文献:
我读过的很多旧东西都表明情况(当时)被认为正在改善.有吗?
甚至2年多以前,也有一些评论表明可以调整Haskell应用程序以可靠地将GC暂停降低到一毫秒或两秒.这看起来真实吗?
在Java图形或图表库上有一个早期的线程,其中发现JFreeChart非常好,但是,如其FAQ中所述,它不适用于实时渲染.
任何人都可以推荐一个支持实时渲染的类似库吗?只是一些基本的xy渲染 - 例如,从数据采集系统获取电压信号并在其到来时绘制它(x轴上的时间,y轴上的电压).
我正在考虑将我的产品从RTOS迁移到嵌入式Linux.我没有很多实时要求,我所拥有的少量RT要求大约为10毫秒.
有人可以给我一个参考,告诉我当前版本的Linux是如何实时的吗?
从商业RTOS迁移到Linux还有其他问题吗?
在构建需要非常一致且快速响应的系统时,垃圾收集器是否存在潜在问题?
我记得几年前的恐怖故事,典型的例子总是一个动作游戏,你的角色会在中途停止几秒钟,当垃圾收集器进行清理时.
我们还要进一步,但我想知道这是否还是一个问题.我读到了.Net 4中的新垃圾收集器,但它看起来仍然像一个大黑盒子,你只需要相信一切都会好的.
如果你有一个总是必须快速响应的系统,有一个垃圾收集器太大问题,选择更硬核更好,控制它自己像c ++这样的语言?我讨厌它,如果事实证明是一个问题,除了等待新版本的运行时或做一些非常奇怪的事情试图影响收集器之外,基本上几乎没有什么可以做的.
编辑
感谢所有的宝贵资源.但是,似乎大多数文章/自定义gc /解决方案都与Java环境有关..Net是否还具有自定义GC的调整功能或选项?
我正在接受承包,今天我已经接受了承包商职位的第一轮面试.我已经通过了它,但有人告诉我 - 主要是一个UI开发人员 - 我只介绍了他们后端需要的基础知识,我应该在第二轮之前阅读分布式系统.
到目前为止,在我的职业生涯中,我一直在从事后期操作,从不需要实时.由于我还剩下几天,我需要涵盖哪些主题?首先能够回答他的问题并且通常被视为分布式系统中的适当问题?
问题是如何在UI上实时显示数据?后端需要做什么?我已经提到了实时数据馈送的生产者/消费者模式.他很喜欢,但他说他在第二次面试时需要更多.
任何帮助将非常感激,
distributed real-time distributed-computing distributed-system