我正在尝试创建一个使用Node服务器作为后端的Web应用程序,并使用Angular从Node服务器获取信息并创建响应式前端.目前,在我的简单应用程序中,我有两个js文件:server.js和controller.js.以下是每个文件的代码:
var express = require("express");
var bodyParser = require("body-parser");
var app = express();
var port = 8006;
app.use(express.static(__dirname));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.post('/data', function(req, res){
console.log(req.body);
res.send("Success!")
res.status(200);
res.end();
});
app.listen(port);
console.log("Server running on port " + port);
Run Code Online (Sandbox Code Playgroud)
这是控制器文件:
(function(){
var app = angular.module("testApp", []);
var TileController = function($scope){
// add stuff to $scope as initilization
};
app.controller("TileController", ["$scope", TileController]);
})();
Run Code Online (Sandbox Code Playgroud)
这段代码有点不完整,因为我不知道该去哪里,但我知道我想用它做什么.
Angular使用的模型将通过Node服务器在传入的HTTP请求(特别是POST)时解析的信息不断更新.Node将处理这些请求并以某种方式将数据传递给Angular(在controller.js文件中),Angular将更新模型,并随之更新视图.
我的问题是什么是从Node服务器传递信息到controller.js的最佳方法,并在添加信息时更新模型/视图?
这是我收到的错误消息:
Exception in thread "main" java.lang.IllegalStateException: The driver executable does not exist: C:\Users\Scott\workspace\Twitch%20Bot%20v2\bin\chromedriver.exe
at com.google.common.base.Preconditions.checkState(Preconditions.java:197)
at org.openqa.selenium.remote.service.DriverService.checkExecutable(DriverService.java:122)
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:117)
at org.openqa.selenium.chrome.ChromeDriverService.access$0(ChromeDriverService.java:1)
at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:118)
at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:291)
at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:82)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:117)
at com.fatalcubez.main.Bot.setup(Bot.java:41)
at com.fatalcubez.main.Bot.<init>(Bot.java:29)
at com.fatalcubez.main.BotGUI.<init>(BotGUI.java:17)
at com.fatalcubez.main.Main.main(Main.java:14)
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的代码:
ClassLoader loader = ClassLoader.getSystemClassLoader();
URL path = loader.getResource("chromedriver.exe");
System.setProperty("webdriver.chrome.driver", path.getPath());
Run Code Online (Sandbox Code Playgroud)
我已经检查了它在哪里搜索chromedriver的目录,它就在那里.我不确定此时的问题是什么.任何帮助都会很棒!
编辑:这只是文件夹名称中的间距问题,但现在我有另一个问题.当我尝试启动chrome时,它说"管理员已经在这台计算机上安装了chrome ......"我该怎么办?
我想使用有限状态机来处理Entity游戏中的状态。具体来说,就本文而言,我将指代Player实体。
我Player将有空闲、跑步、跳跃、下降等状态……并且需要某种方式来管理这些状态以及它们之间的转换。在 OOP 环境中,最简单的解决方案是让每个状态成为自己的类,并使用一个名为handleInput接收输入的方法来确定是否应该发生状态更改。例如,在IdleState发生 move_right 或 move_left 时,状态将更改为新的RunningState。这很容易也很有意义,因为状态的行为应该封装在状态中。
但是,当您在实体组件系统中使用 FSM 时,一切都会发生变化。状态不再是对象(因为这会违背组件系统的灵活性),而是组件的不同排列。在JumpState可能有组件,如JumpComponent,AirbornMovementComponent等...而AttackState可能拥有的组件表示类似的攻击SwingComponent,DamageComponent,SwordComponent,等...的想法是通过重新排列组件,可以创建新的状态。系统的工作是简单地分别处理这些组件,因为系统不关心状态,它们只关心单个组件。实际的 FSM 位于FSMComponent实体持有的a 中。
这很有意义,除了处理状态转换时。现在我有一个InputSystem查找具有 aInputComponent和 a 的实体,FSMComponent并尝试根据当前输入更新 FSM 的状态。然而,这并不奏效。
FSM 处理输入的最佳方式(在我看来)是让每个状态决定它想要如何处理输入以及如何基于该输入转换到新状态。这可以追溯到实现 FSM 的 OOP 方式,这与 ECS 的设计背道而驰,其中组件只是数据包,而系统则负责所有逻辑。在 ECS 中,想法是让系统处理状态转换,但这会变得复杂,因为每个 FSM 可能有不同的状态转换条件。
您不能简单地在InputSystem“如果输入向右移动,则将状态设置为运行”中进行陈述。这将特定于玩家,但可能不适用于所有实体。如果有一天我决定让敌人可控,那么对 a 起作用的输入Player将与对Enemy.
我的问题:如何让我的 …
我已经执行了一个查询,该查询返回了ResultSet我想要向后迭代的数据.在for循环中,它看起来像这样:
for (int i = MAX; i >=0; i--){
// do something
}
Run Code Online (Sandbox Code Playgroud)
唯一的问题是我的数据库中没有一个完全顺序的列,而是我有一个唯一的ID,但有时会跳过数字.那么,使用实际的结果集,是否有某种方法可以做while(set.next()) {...}但反之?谢谢.
我执行:
select * from table_name order by column desc;
Run Code Online (Sandbox Code Playgroud)
我想按顺序浏览这些项目。我从中得到ResultSet并做到了:
while(set.next()) {
// processing code
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这跳过了第一个元素。遍历整个过程ResultSet并包含第一个元素的最佳方法是什么?