在Swing中,GUI应该仅由EDT更新,因为GUI组件不是线程安全的.
我的问题是,如果我有一个专门用于更新特定组件的EDT以外的单个线程,并且我的程序中的任何其他线程都不能访问该组件,只有这个专用线程,可以吗?在我的情况下,我有一个JTable和一个线程从网络接收信息并更新表(不使用EventQueue.invokeLater).所有其他组件都从EDT更新.到目前为止我还没有看到任何问题,我想知道最终是否会出现一个错误.
更新 我的目的是实时更新表格.数据不断来自网络,为此我专门为表格提供1个线程,以便在它们到来时更新它.如果我使用SwingUtilities.invokeLater,这意味着当EDT可用时将更新该表.不应该将swing用于实时更新要求吗?
我不确定实时这个术语是否被滥用,但是这个想法是服务器上的许多玩家都有一个城市每秒产生n个资源.可能有一千个这样的城市.奖励所有玩家城市的最佳方式是什么?
当游戏"活着"时,这样的循环最好的方式是在无限循环中运行吗?(请用这种简单的逻辑忽略明显的错误)
foreach(City c in AllCities){
if(c.lastTouched < DateTime.Now.AddSeconds(-10)){
c.resources += (DateTime.Now-c.lastTouched).Seconds * c.resourcesPerSecond;
c.lastTouched = DateTime.Now;
c.saveChanges();
}
}
Run Code Online (Sandbox Code Playgroud) 我刚刚掌握socket.IO和nodeJS.让我的网络应用程序正常工作.然后我找了一个朋友在办公室机器上试用它,发现它无法连接.
我设置了这两个测试用例:
http://thebeer.co/labs/rt/chat.php(这里是服务器JS) - 这是socket.IO聊天示例的精确副本.
http://thebeer.co/labs/rt/test.php(服务器JS在这里)
他们两个都失败了.我也有一个朋友尝试使用大学计算机而且连接失败!在被告知较低端口号不太可能被安全网络阻止之后,我尝试了在端口8100,8080和81-90上侦听节点服务器.
真的不明白,每个人都可以访问实时功能非常重要,我做错了什么?
如何在安全的Office和大学网络中连接socket.IO?
我有一个AT90USB162 AVR芯片,我想运行多任务RTOS,所以我正在评估可能的RTOS与我的AVR芯片一起使用.AVR支持哪些多任务RTOS?也许是QNX?(是否可以在AVR微芯片上运行QNX内核?).
提前致谢.
我正在设计一款游戏并考虑使用WPF来制作基本游戏玩法的简单原型.
是否可以实时渲染WPF中的基本2D图形?基本图形我的意思是简单的形状,如线条,圆圈等."实时"是指基于速度,加速度等参数渲染的东西,这些参数会根据玩家输入而变化 - 我认为这意味着我可以不要使用故事板来制作动画.
谢谢
简要说明:
好吧,因为很多天我一直在寻找这个问题的答案,但似乎有"如何创建推送通知服务器"和类似问题的答案.我正在使用node.js并且很容易使用sock.js"创建"推送通知服务器(我听说socket.io与sock.js相比并不好).没问题,直到这里.但我想要的是如何建模这样的服务器.
细节:
好的,所以,假设我有一个应用程序,其中有一个聊天服务(这只是一个例子,实际上你可能已经猜到了很大的事情).一个人在一个房间里发送一条消息,并通知房间里的所有人.但我想要的是"有状态"聊天 - 也就是说,我想将消息存储在数据存储中.这就是问题所在.将消息存储在数据库中,然后告诉大家"嘿,有消息给你".当我们只需要应用程序的一部分进行实时活动时,这似乎很容易.当整个应用程序基于实时通信时该怎么办?除此之外,我还想拥有一个RESTful api.
我的解决方案(我并不高兴)
我想做的是这样的:(当然在服务器端)
Data Store
||
Data Layer (which talks to data store)
||
------------------
| |
Real-Time Server Restful server
Run Code Online (Sandbox Code Playgroud)
在这里,实时服务器监听数据层发布的有趣事件.每当发生有趣的事情时,服务器都会通知客户端.但是哪个客户? - 这是我的方法的问题
希望你能帮上忙.:)
更新:
我想我忘了强调我问题的一个重要部分.如何实现pub-sub系统?(注意:我不想要实际的代码,我会自己管理;只是如何去做我需要帮助的地方).问题是我在编写代码时感到非常困惑 - 该怎么做(我的混淆从这个问题本身就很明显).请提供一些阅读的参考或一些关于如何开始这个事情的建议?
我已经得到了一个功能正常的脚本,并且对它到目前为止的结果感到满意,这在很大程度上要归功于我在这里找到的信息.
但是,我似乎无法做到的一件事是时间戳.目前,我正在使用它
use POSIX qw/strftime/;
my $timestamp = strftime('%m/%d/%Y %I:%M.%S %p %Z',localtime);
Run Code Online (Sandbox Code Playgroud)
哪个效果很好,除了当我调用$ timestamp时,它总是与代码的所有部分相同的时间戳(根本不更新).
我尝试用子程序(我以前从未做过)来解决这个问题:
sub GetLoggingTime {
use POSIX qw/strftime/;
my $LoggingTime = strftime('%m/%d/%Y %I:%M.%S %p %Z',localtime);
return $LoggingTime;
}
my $timestamp = GetLoggingTime();
print "$timestamp \n";
sleep(2);
print "$timestamp \n";
Run Code Online (Sandbox Code Playgroud)
显然,两个印刷品和睡眠是试图看它是否"更新",但事实并非如此.两个时间戳都打印在同一时间.
然后我尝试直接调用子例程,在子例程中添加一个打印并使用&GetLoggingTime调用它,但是根本没有做任何事情(没有输出).
我知道我可能错过了一些明显的东西,但我似乎无法找到它.是否有一种简单的方法可以使其工作,或者是否有一种简单的方法来获取随着脚本的进展而实时更新的时间戳?
提前致谢!
我在这里阅读:https://laravel.com/docs/5.4/broadcasting#concept-overview
那里解释说它可以使用公共频道。但是没有如何使用它的示例
我只是看到一个像这样的私人频道的示例:
public function broadcastOn()
{
return new PrivateChannel('user.'.$this->user->id);
}
Run Code Online (Sandbox Code Playgroud)
我需要一个公开频道的真实例子
我尝试搜索,但尚未找到
有没有人可以帮忙?
我是MPAndroidChart的新手,我想在LineChart的XAxis上实时显示时间.我想只显示传入数据的最后10秒,如下图所示.我的采样是25Hz所以我需要显示250个值才能有10秒的记录.
但是,我真的不知道该怎么做.我想我必须使用IAxisValueFormatter.
目前,我的传入值被添加到数据集中,如下所示:
addEntry(myDataSet, new Entry(myDataSet.getEntryCount(), myNewValue));
Run Code Online (Sandbox Code Playgroud)
但也许我需要这样做:
/* add 40 ms on xAxis for each new value */
addEntry(myDataSet, new Entry(myLastTimeStamp + 40, myNewValue));
Run Code Online (Sandbox Code Playgroud)
然后创建一个格式化程序,将X值转换为"xxx秒"之类的字符串,并仅显示"0s","5s"和"10s".
我不知道它是否有效但是有更好的方法吗?
谢谢
real-time ×10
node.js ×2
2d ×1
android ×1
architecture ×1
avr ×1
avr-gcc ×1
broadcasting ×1
eventqueue ×1
java ×1
javascript ×1
laravel ×1
laravel-5.3 ×1
linechart ×1
perl ×1
qnx ×1
rendering ×1
rtos ×1
socket.io ×1
subroutine ×1
swing ×1
timestamp ×1
websocket ×1
wpf ×1