我创建了一个 JavaFX 应用程序。它在我的 Intellij IDE 中完美运行。现在我想分发应用程序 - 即我想获得一个用户可以下载的安装程序,然后它会为他们安装应用程序。
我在这里找到了一篇非常有趣的文章。这篇博客文章基本上描述了我想要实现的目标。但是有两个区别:
我正在使用 Maven 而不是 Gradle
我有使用自动模块的依赖项,例如 iText7 和 apache.commons.lang3
自动模块的使用使事情变得非常复杂。有一个名为 ModiTect(这里)的 GitHub 项目已经被编写来解决这些问题。我没有使用 ModiTect 的经验,甚至我的 Maven 知识也几乎不存在(意思是:我真的不知道我在 pom.xml 中做什么)。
我正在寻找的是关于如何将 ModiTect(以及如果需要的话 jpackage)集成到我的 pom.xml 以便为我的 JavaFX 应用程序获取安装程序的解释(逐步)数据库,虽然这应该不是问题)。
有人可以提供此解释或向我推荐教程吗?
我在这个问题的末尾提供了一个 MWE。MWE 是一个 TestApp。要说明问题,请运行应用程序并按“打印 PDF”按钮。在资源中创建 pdf --> pdf
执行 javafx:run 时 MWE 会编译运行 执行 javafx:jlink 时会出现与 automodules 使用相关的错误
我不知道如何解决这个问题。ModiTect 似乎是一个很有前途的插件。另一种可能的方法可以在此GitHub 存储库中找到。但正如我之前所说:我的 Maven 知识不足以真正掌握这里发生的事情。任何帮助对我来说意义重大!
MWE:
pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.company</groupId>
<artifactId>TestApp</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>15</maven.compiler.source>
<maven.compiler.target>15</maven.compiler.target>
</properties> …
Run Code Online (Sandbox Code Playgroud) 我试图找出使用奇异值分解的 PCA 与使用特征向量分解的 PCA 之间的差异。
想象一下下面的矩阵:
B = np.array([ [1, 2],
[3, 4],
[5, 6] ])
Run Code Online (Sandbox Code Playgroud)
当使用特征向量分解计算该矩阵 B 的 PCA 时,我们遵循以下步骤:
C = Cov(B) = B^T * B / (m -1)
,其中 m = B 的 # 行PCs = X * eigen_vecs
当使用 SVD 计算矩阵 B 的 PCA 时,我们遵循以下步骤:
B = U * Sigma * V.T
PCs = U * Sigma
我已经为给定的矩阵完成了这两项工作。
通过特征向量分解,我得到这个结果:
[[-2.82842712 0. ]
[ 0. 0. …
Run Code Online (Sandbox Code Playgroud) 考虑array1
和array2
,其中:
array1 = [a1 a2 NaN ... an]
array2 = [[NaN b2 b3 ... bn],
[b21 NaN b23 ... b2n],
...]
Run Code Online (Sandbox Code Playgroud)
两个数组都是 numpy 数组。有一种简单的方法可以计算array1
和 的每一行之间的欧几里得距离array2
:
EuclideanDistance = np.sqrt(((array1 - array2)**2).sum(axis=1))
Run Code Online (Sandbox Code Playgroud)
搞乱这个计算的是 NaN 值。当然,我可以很容易地用一些数字替换 NaN。但相反,我想做以下事情:
当我array1
与row_x
of进行比较时array2
,我计算其中一个数组有 NaN 而另一个没有的列。让我们假设count
是 3。然后我将从两个数组中删除这些列并计算两者之间的欧几里德距离。最后,我将 a 添加minus_value * count
到计算的距离。
现在,我想不出一种快速有效的方法来做到这一点。有人可以帮助我吗?
以下是我的一些想法:
minus = 1000
dist = np.zeros(shape=(array1.shape[0])) # this array will store the distance of array1 to each row …
Run Code Online (Sandbox Code Playgroud) 我正在使用 Spring Data JPA 来处理数据库调用。为此,我创建了:
EmployeeRepository 接口,它扩展了JpaRepository<Employee, Long>
一个 EmployeeService,它定义了三个方法:
Employee saveEmployee(Employee employee);
Optional<Employee> getEmployee(Long id);
Long deleteEmployee(Long id);
Run Code Online (Sandbox Code Playgroud)
EmployeeService 的实现:
@Override
public Employee saveEmployee(Employee employee) {
return employeeRepository.save(employee);
}
@Override
public Optional<Employee> getEmployee(Long id) {
return employeeRepository.findEmployeeById(id);
}
@Override
public Long deleteEmployee(Long id) {
employeeRepository.deleteById(id);
return id;
}
Run Code Online (Sandbox Code Playgroud)
问题如下:
get 方法工作正常并且可以返回一个可选值。另一方面,保存方法不能返回可选值。显然,JpaRepository 在调用 save() 时返回已保存对象的实例。我宁愿返回一个可选值,因为在保存员工时可能会出现问题,在这种情况下,我想抛出一个错误 - 即每当可选值不存在时,我就会抛出一个错误。
删除操作也是如此:例如,如果我要求删除一名员工并传入一个不存在的 id,该怎么办?我想捕获此错误,然后仅在删除操作成功时返回传入的 id。为此我必须捕获哪个错误?谁可以给我解释一下这个?
===================================================
更新:
我通过在调用 `deleteById(id); 之前检查给定的员工 ID 是否存在,解决了删除调用的问题。如果不存在,服务返回 null,如果存在,则返回 id。控制器看起来像这样:
@DeleteMapping("/{id}")
public ResponseEntity<Long> deleteEmployee(@PathVariable Long id) {
Long deletedEmployeeId = …
Run Code Online (Sandbox Code Playgroud)考虑 JavaFX 应用程序内的表格视图。表视图包含有关人员的数据:
id firstname lastname
1 John Doe
Run Code Online (Sandbox Code Playgroud)
表视图的每一行都可以用来实例化一个 Person 对象:
new Person(Integer id, String firstname, String lastname)
。
这是我想做的:
我想选择表格视图中的一个人,然后用鼠标将其拖动到文本区域中。在文本区域内我想打印字符串:
1 John Doe
。
我知道我必须实现三个函数才能实现此目的:onDragDetected(), onDragOver() and onDragDropped()
。
我想从以下开始:
public void onDragDetected(DragEvent dragevent) {
Person person = tvPersonData.getSelectionModel().getSelectedItem();
}
Run Code Online (Sandbox Code Playgroud)
这有效。但我必须以某种方式让我的 Person 进入 DragBoard 对象 ( dragevent.getDragboard()
)。我想我是这样的。然后也许我的其他功能可以使用我的拖板内的任何内容。
有人可以帮我从这里出去吗?
考虑如下的最小形式:
let button = document.querySelector("button");
let firstNameInput = document.querySelector("#firstName");
firstNameInput.style.borderColor = "red";
button.addEventListener('click', () => {
firstNameInput.value = "Goofy";
});
firstNameInput.addEventListener('input', () => {
firstNameInput.style.borderColor = "black";
})
Run Code Online (Sandbox Code Playgroud)
.form__input {
border: none;
outline: none;
border-bottom: 1px solid black;
}
Run Code Online (Sandbox Code Playgroud)
<form>
<label for="firstName">Firstname:</label>
<input type="text" class="form__input" id="firstName">
<button type="button">Button</button>
</form>
Run Code Online (Sandbox Code Playgroud)
加载此页面时,您应该看到一个带有红色底边框的输入字段,旁边有一个按钮。如果单击该按钮,名称“Goofy”就会写入输入字段内。但是,下边框保持红色。我希望它在输入字段内写入内容时改变其颜色。现在,当我继续手动更改名称时,边框颜色将其颜色更改为黑色,正如我想要的那样。但是谁能向我解释为什么单击按钮时边框颜色没有改变?
I am not familiar with perl. I am reading an installation guide atm and the following Linux command has come up:
perl -p -i -e "s/enforcing/disabled/" /etc/selinux/config
Run Code Online (Sandbox Code Playgroud)
Now, I am trying to understand this. Here is my understanding so far:
-e 只允许执行以下内容
-p 将我跟在 -e 之后的命令放入一个循环中。现在这对我来说很奇怪,对我来说这个命令似乎是想说:将“s/enforcing/disabled/”写入/etc/selinux/config。再说一次,“写入”命令在哪里?这个 -i(内联)有什么用?
javafx ×2
python ×2
command-line ×1
css ×1
data-science ×1
deployment ×1
hibernate ×1
html ×1
java ×1
javascript ×1
jlink ×1
jpackage ×1
moditect ×1
numpy ×1
pca ×1
perl ×1
spring-boot ×1
svd ×1
tableview ×1