请注意:我是一名Java开发人员,不熟悉Scala(遗憾的是).我会问答案中提供的任何代码示例都将使用Akka的Java API.
我正在尝试使用Akka FSM API来建模以下超级简单的状态机.实际上,我的机器要复杂得多,但这个问题的答案将允许我推断我的实际FSM.

所以我有两种状态:Off和On.您可以Off -> On通过拨打电话来启动机器SomeObject#powerOn(<someArguments>).您可以On -> Off通过拨打电话关闭电源SomeObject#powerOff(<someArguments>).
我想知道为了实现这个FSM,我需要哪些演员和支持类.我相信代表FSM的演员必须延伸AbstractFSM.但是什么类代表了两个州呢?什么代码公开并实现powerOn(...)和powerOff(...)状态转换?一个有效的Java示例,甚至只是Java伪代码,对我来说都有很长的路要走.
这里有Java 8,Guice 4.0和Akka 2.3.9.我试图弄清楚如何使用JSR330样式的@Inject注释来注释我的actor类,然后通过Guice将它们连接起来.
但实际上,我读过的每一篇文章(下面的一些例子)都使用了Scala代码示例,一个犯罪版本的Guice,或者是一个犯罪旧版本的Akka:
因此,给出以下Guice模块:
public interface MyService {
void doSomething();
}
public class MyServiceImpl implements MyService {
@Override
public void doSomething() {
System.out.println("Something has been done!");
}
}
public class MyActorSystemModule extends AbstractModule {
@Override
public void configure() {
bind(MyService.class).to(MyServiceImpl.class);
}
}
Run Code Online (Sandbox Code Playgroud)
并且考虑FizzActor到注入了MyService:
public class FizzActor extends UntypedActor {
private final MyService myService;
@Inject
public FizzActor(MyService myService) {
super();
this.myService = myService;
}
@Override
public void onReceive(Object message) …Run Code Online (Sandbox Code Playgroud) Spring Boot REST服务和MySQL在这里.我有以下Profile实体:
@Entity
@Table(name = "profiles")
public class Profile extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "profile_given_name")
private String givenName;
@Column(name = "profile_surname")
private String surname;
@Column(name = "profile_is_male")
private Integer isMale;
@Column(name = "profile_height_meters", columnDefinition = "DOUBLE")
private BigDecimal heightMeters;
@Column(name = "profile_weight_kilos", columnDefinition = "DOUBLE")
private BigDecimal weightKilos;
@Column(name = "profile_dob")
private Date dob;
// Getters, setters & ctor down here
}
Run Code Online (Sandbox Code Playgroud)
我也有一个ProfileController,我希望公开一个GET端点,它提供了一种非常灵活/强大的搜索方式,可以 …
我偶然发现了功能标记的概念,以及一个名为Togglz的流行的开源Java库,它引用了Martin Fowler博客文章:
基本思想是拥有一个配置文件,为您拥有的各种功能定义一系列切换.然后,正在运行的应用程序使用这些切换来决定是否显示新功能.
但对我来说,这听起来像授权:用户是否有权查看此内容?
例如,用户是否应该能够看到FizzBuzz菜单?
在Togglz中,我可能会像这样执行此检查:
if(MyFeatures.ShowFizzBuzz.isActive()) {
// Show the FizzBuzz menu.
}
Run Code Online (Sandbox Code Playgroud)
比方说,Apache Shiro,我可以做同样的事情:
ShowFizzBuzzPermission showFizzBuzz = new ShowFizzBuzzPermission();
if(currentUser.isPermitted(showFizzBuzz) {
// Show the FizzBuzz menu.
}
Run Code Online (Sandbox Code Playgroud)
再次,功能标记只是感觉像为基于角色或允许检查其完全相同的问题.
我确定我错了,但我不知道怎么回事.所以我问:功能标记与授权和角色/权限检查有何不同,具体用例是什么类型的例子?换句话说:我何时应该使用授权/角色/权限检查,何时应该使用功能标志?
我是Akka(Java lib)的新手,我试图了解Akka是否可以用来向JDBC发出非阻塞请求,如果是这样,它会是什么样子.我相信大多数JDBC驱动程序打开一个套接字连接并阻塞创建它的线程,直到收到一个特定的JDBC响应,因此可能没有太多的Akka可以帮助到这里,但我想知道是否有办法(也许通过期货或代理?)Akka可以帮助提高性能,并允许actor系统继续处理数据,同时正在进行现有的JDBC调用并等待响应.
我发现这篇文章有点模糊/含糊不清,但听起来未来可能是关键所在.然而,该文章并没有真正展示任何有意义的(真实世界)代码示例,因此我仍然处于亏损状态.因此,假设我们有一个存储过程,sp_make_expensive_calculation通常需要10 - 30秒才能返回响应,并且通常通过JDBC调用,如下所示:
String makeExpensiveCalculationSql = "{call sp_make_expensive_calculation(?)}";
callableStatement = dbConnection.prepareCall(makeExpensiveCalculationSql);
callableStatement.setInt(1, 10);
// Could take up to 30 seconds to complete.
callableStatement.executeUpdate();
int answer = callableStatement.getString(2);
Run Code Online (Sandbox Code Playgroud)
Akka可以做任何事情来帮助这些,以便演员系统可以继续处理数据(甚至可以进行其他sp_make_expensive_calculation调用),同时我们等待第一次调用返回吗?
GitHub(以及许多git服务器,如GitLab)提供项目级wiki,通常,markdown(*.md)文件存储并形成......以及......项目的wiki.
这将是太酷了,如果有你的维基存储为主要项目源的一部分的方式,所以,当你更改推送到您的主项目,你的维基改变,以及(当然,如果你更改了维基降价文件那是).
就像是:
myproject/
src/main/resources/
src/main/groovy/
build.grade
docs/
Home.md
About_This_Project.md
etc.
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这个目标?我看到wiki有克隆URL和数字,这意味着它们被视为单独的Git项目.有什么办法把两者结合起来?
我正在阅读盒子上的Vagrant文档而不理解它们之间的区别:
vagrant box add hashicorp/precise32; 与vagrant init hashicorp/precise32后者hashicorp/precise32从远程目录中获取该框,然后创建一个Vagrantfile用于旋转该框的实例.但我不明白这与box add方法有什么不同.
所以我问:这两个命令有什么区别,什么时候适合使用它们?
我想在调试模式下运行我的Dropwizard 0.8.5应用程序,其中:
通常我的DW应用程序从命令行运行,如下所示:
java -jar build/libs/myapp.jar server src/test/resources/myapp-local.yml
Run Code Online (Sandbox Code Playgroud)
那么在调试模式(JPDA)中运行它的命令行参数是什么,或者myapp-local.yml完成此操作所需的修改是什么?
我假设我只是设置断点,然后在Eclipse中创建一个新的调试配置,但不确定使用什么参数/配置来设置此配置.有任何想法吗?
我是一名拥有大约十年企业软件工程的开发人员,我的业余爱好者引导我进入了庞大而可怕的计算机视觉领域(CV).
我不能立即明确的一件事是Structure with Motion(SFM)工具和Multi View Stereo(MVS)工具之间的分工.
具体来说,CMVS似乎是最佳的MVS工具,而Bundler似乎是最好的开源SFM工具之一.
摘自CMVS自己的主页:
您应该始终在Bundler之后和PMVS2之前使用CMVS
我想知道:为什么?!?我对 SFM工具的理解是它们为您执行3D重建,那么为什么我们首先需要MVS工具呢?他们添加了什么价值/处理/功能,像Bundler这样的SFM工具无法解决?为什么拟议的管道:
Bundler -> CMVS -> PMVS2
Run Code Online (Sandbox Code Playgroud)
?
在Scala中,我可以从内存中的字符串创建单行DataFrame,如下所示:
val stringAsList = List("buzz")
val df = sqlContext.sparkContext.parallelize(jsonValues).toDF("fizz")
df.show()
Run Code Online (Sandbox Code Playgroud)
当df.show()运行时,它输出:
+-----+
| fizz|
+-----+
| buzz|
+-----+
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试从Java类中执行此操作.显然JavaRDDs没有toDF(String)方法.我试过了:
List<String> stringAsList = new ArrayList<String>();
stringAsList.add("buzz");
SQLContext sqlContext = new SQLContext(sparkContext);
DataFrame df = sqlContext.createDataFrame(sparkContext
.parallelize(stringAsList), StringType);
df.show();
Run Code Online (Sandbox Code Playgroud)
......但似乎仍然很短暂.现在df.show();执行时,我得到:
++
||
++
||
++
Run Code Online (Sandbox Code Playgroud)
(一个空的DF.)所以我问:使用Java API,如何将内存中的字符串读入一个只有1行1列的DataFrame中,并指定该列的名称?(这df.show()与上面的Scala相同)?