我编写了一个套接字服务器,它使用Socket类与我的actionscript 3 flash游戏进行通信.这是一个TCP连接,我认为这意味着它100%确定服务器将接收发送消息,因为这是低级别的.因此,如果它无法发送,它将重新发送消息.
这对我和其他两个人来说似乎都是这样,我已经测试了我的构建.然而,对于一个人,有时(罕见但不可忽略),服务器不接收该消息,即使这对其他人的系统似乎没有发生.然而,这个人从来没有遇到任何其他专业多人游戏的问题,这意味着它必须是我的构建问题.
有什么我可以做的,以确保正确发送消息,我错误的TCP 100%安全,因为消息应该在故障低级别重新发送?
应该很容易的事情一直是我一天的追求.
如何设置xml元素的变量属性?
这是我期望的工作:
xmlElement.attribute(variableAttr) = "the variable attribute is set to this string";
Run Code Online (Sandbox Code Playgroud)
但是,我收到一些错误,该值只能作为引用检索而不能设置.
当然,以下内容不起作用,因为它将查找名为"variableAttr"的属性,而不是查找变量variableAttr的值后面的属性:
xmlElement.@variableAttr = "example";
Run Code Online (Sandbox Code Playgroud) 这就是我正在做的事情:
现在,如果我从提取的src文件夹中复制Runtime.java并使用javac.exe进行编译而不进行任何修改,然后将其放入解压缩的rt文件夹中,最后使用jar.exe将所有内容放回到jar文件中,一切都按预期工作.JRE运行良好.
但是,如果我对Runtime.java进行最轻微的更改并将其编译并放入rt.jar,那么只要我尝试启动它,JRE就会崩溃.这是导致无声崩溃的轻微更改的示例:
/** Don't let anyone else instantiate this class */
private Runtime() {
System.out.println("This is a test.");
}
Run Code Online (Sandbox Code Playgroud)
代替:
/** Don't let anyone else instantiate this class */
private Runtime() {}
Run Code Online (Sandbox Code Playgroud)
谁能告诉我为什么这会导致我的JRE崩溃?
提前致谢.
让我们说我有两个正方形,我知道他们的位置,红色和蓝色方块:
redTopX;
redTopY;
redBotX;
redBotY;
blueTopX;
blueTopY;
blueBotX;
blueBotY;
Run Code Online (Sandbox Code Playgroud)
现在,我想检查方形蓝色是否位于(或部分)方形红色内(部分).这可能发生在很多情况下,正如您在我创建的图像中看到的那样,可以更好地说明我的情况: 替代文字http://www.feedpostal.com/etc/ranges.gif
请注意,总是只有一个蓝色和一个红色方块,我只是添加了多个,所以我不需要重绘18次.
我原来的逻辑很简单,我检查方形蓝色的所有角落,看看它们是否在方形红色内:
if (
((redTopX >= blueTopX) && (redTopY >= blueTopY) && (redTopX <= blueBotX) && (redTopY <= blueBotY)) || //top left
((redBotX >= blueTopX) && (redTopY >= blueTopY) && (redBotX <= blueBotX) && (redTopY <= blueBotY)) || //top right
((redTopX >= blueTopX) && (redBotY >= blueTopY) && (redTopX <= blueBotX) && (redBotY <= blueBotY)) || //bottom left
((redBotX >= blueTopX) && (redBotY >= blueTopY) && (redBotX <= blueBotX) …Run Code Online (Sandbox Code Playgroud) 我在Haxe编写代码.这与问题完全无关,只要你记住它是一种高级语言,并且可以与Java,ActionScript,JavaScript,C#等进行比较(我在这里使用伪代码).
我打算做一个大项目,现在正忙着准备.对于这个问题,我将创建一个小方案:一个简单的应用程序,它有一个Main类(这个在应用程序启动时执行)和一个LoginScreen类(这基本上是一个加载登录屏幕的类,以便用户可以登录).
通常我认为这将如下所示:
Main constructor:
loginScreen = new LoginScreen()
loginScreen.load();
LoginScreen load():
niceBackground = loader.loadBitmap("somebg.png");
someButton = new gui.customButton();
someButton.onClick = buttonIsPressed;
LoginScreen buttonIsPressed():
socketConnection = new network.SocketConnection();
socketConnection.connect(host, ip);
socketConnection.write("login#auth#username#password");
socketConnection.onData = gotAuthConfirmation;
LoginScreen gotAuthConfirmation(response):
if response == "success" {
//login success.. continue
}
Run Code Online (Sandbox Code Playgroud)
这个简单的场景为我们的类添加了以下依赖关系和缺点:
为了解决这些问题,我被建议做"事件驱动编程"或松散耦合.据我所知,这基本上意味着必须使类彼此独立,然后将它们绑定在不同的绑定器中.
问题1:我的观点是真是假?是否必须使用粘合剂?
我听说面向方面编程可以在这里提供帮助.不幸的是,Haxe不支持此配置.
但是,我确实可以访问一个事件库,它基本上允许我创建一个signaller(public var loginPressedSignaller = new Signaller()),触发一个signaller(loginPressedSignaller.fire())并监听一个signalller(someClass.loginPressedSignaller) .bind(doSomethingWhenLoginPressed)).
所以,经过进一步的调查,我认为这会改变我之前的设置:
Main:
public var appLaunchedSignaller = new Signaller();
Main constructor:
appLaunchedSignaller.fire();
LoginScreen:
public var loginPressedSignaller = new Signaller();
LoginScreen …Run Code Online (Sandbox Code Playgroud) 据我所知,一切都是Java中的一个对象.
我正在浏览java JDK并正在尝试创建一个允许我执行更多调试操作的自定义JDK.例如,我可以通过更改Object.java类来操作每个对象.
我的问题是:方法是否也从JRE继承了一个类,所以我可以将这个父类修改为例如.制作一个方法保存它最近传递的参数?
谢谢.
我在这里询问了一个最短路径算法: 2D航路点寻路:WP的组合从curLocation到targetLocation
(要了解我的情况,请阅读该问题以及此问题.)
似乎Dijkstra最短路径算法能够做到我需要的.但是,我的路线图中有大约500到1000个节点.
到目前为止,我所看到的实现将节点数限制在50以下.我的问题是:我是否应该使用Dijkstra最短路径算法,还是替代?Java中是否有任何实现?
java artificial-intelligence dijkstra path-finding graph-algorithm
我正在创建一个控制器,它将从数据库中提取画家的信息并显示出来:PainterController.我这样定义它:
<?php
class PainterController extends Zend_Controller_Action
{
public function init()
{
//setup painter route
$router = $this->getFrontController()->getRouter();
$router->addRoute(
'painter',
new Zend_Controller_Router_Route(
'painter/:id',
array(
'controller' => 'painter',
'action' => 'info'
)
)
);
}
public function indexAction()
{
//index
}
public function infoAction()
{
//info was requested for given ID
}
}
?>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,路由设置为接受类似于domain.com/painter/12此示例中的id 12传递给infoAction的任何内容.
然而,当我访问这样的URL时,路由未被识别,而是我得到:
Message: Action "2" does not exist and was not trapped in __call()
Stack trace:
#0 /home/httpd/vhosts/xxx.com/subdomains/peter/httpdocs/library/Zend/Controller/Action.php(515): Zend_Controller_Action->__call('2Action', Array)
#1 /home/httpd/vhosts/xxx.com/subdomains/peter/httpdocs/library/Zend/Controller/Dispatcher/Standard.php(295): Zend_Controller_Action->dispatch('2Action') …Run Code Online (Sandbox Code Playgroud) 我有一个表单元素,称为metaDescription:
//inside the form
$description = $this -> createElement('text', 'metaDescription')
-> setLabel('Description:')
-> setRequired(false)
-> addFilter('StringTrim')
-> addValidator('StringLength', array(0, 300))
-> addErrorMessage('Invalid description.');
$this->addElement($description);
Run Code Online (Sandbox Code Playgroud)
无论何时加载此表单,我都会使用从数据库中提取的默认值对其进行初始化:
$form->setDefault('metaDescription', $oldPage->getMetaDescription());
Run Code Online (Sandbox Code Playgroud)
这完全没问题.
但是,htmlencode当有人发送表单和html_entity_decode从数据库中提取的默认值时,我现在想要任何输入描述,以便字符再次以其原始形状显示.
我在处理表单输入时这样做:
//handle post
if ($request->isPost()) {
if ($form->isValid($request->getPost())) {
$page = new Application_Model_PagePainter(array(
'metaDescription' => htmlentities($form->getValue('metaDescription'))
));
$pageMapper->save($page);
....
Run Code Online (Sandbox Code Playgroud)
我现在设置默认值,如下所示:
$form->setDefault('metaDescription', html_entity_decode($oldPage->getMetaDescription()));
Run Code Online (Sandbox Code Playgroud)
起初,这似乎也很好.当我发送例如woord1, woord2, me&you描述时,这正确地保存woord1, woord2, me&you在数据库中并再次正确显示为woord1, woord2, me&you.但是,当我设置一个像ó这样的奇怪角色时,例如.wóórd1这被正确地保存在数据库中,wóórd1但随后发生了一些奇怪的事情:当再次显示表单时,默认值为空.当我看到来源时,它确实是空的:<input type="text" name="metaDescription" id="metaDescription" value="" /> …
当使用socket.io(node.js)触发套接字断开连接事件时,套接字的数据仍可用多长时间?
如果我有一个异步返回数据的商店(如redis),那么仍然可以安全地执行查找吗?
我需要获取套接字的所有数据,以便在断开连接时保存套接字的状态.
非常感谢.
java ×3
php ×2
algorithm ×1
aop ×1
comparison ×1
compilation ×1
crash ×1
dijkstra ×1
disconnect ×1
dynamic ×1
encoding ×1
events ×1
flash ×1
forms ×1
haxe ×1
inheritance ×1
math ×1
methods ×1
node.js ×1
object ×1
oop ×1
path-finding ×1
routing ×1
socket.io ×1
sockets ×1
tcp ×1
tree ×1
variables ×1
xml ×1
zend-form ×1
zend-route ×1