我正在构建一个模块化应用程序。通过配置,您可以打开和关闭这些应用程序模块。我正在尝试确定我应该为保存每个模块数据的表使用什么数据库结构 (mssql2005)。我想到的两个选项是:
我确实有所有模块通用的数据,所以如果我使用解决方案 2,我不确定如何管理这些通用数据(例如用户)。
——
澄清一件事,这些模块可能会单独出售,并且配置设置不受客户端控制。这就是为什么我什至考虑将它们分成单独的表格。
我正在研究一组相对较大的串行代码C代码库,然后由我的协作者在CUDA中进行并行化.
对于这个项目,我的代码基本归结为
#include "Initialize.cpp"
#include "PerformMoves.cpp"
#include "CollectResults.cpp"
main()
{
//DECLARE General Vars
Initialize();
for (unsigned int step=0; step < maxStep; step++)
{
PerformMoves();
}
CollectResults();
}
Run Code Online (Sandbox Code Playgroud)
现在我在Initialize和PerformMoves中执行的步骤将根据我正在构建的模拟类型而有很大不同.速度是最高性能,因为我的代码是蒙特卡罗模拟,将执行数百万次移动,每次移动涉及可能数千次计算.因此,我想避免任何不必要的条件.
因此,我基本上想要不同的"即插即用"C模块,例如
InitializeSimType1.cpp InitializeSimType2.cpp InitializeSimType3.cpp
PerformMovesType1.cpp PerformMovesType2.cpp PerformMovesType3.cpp
....
每个优化用于某种类型的模拟程序,没有大条件的"绒毛"来处理各种情况.
目前我有两种不同类型的模拟,只需将它们放在两个不同的文件夹中,编译如下:
g ++ Main.cc Initialize.cpp PerformMoves.cpp CollectResults.cpp -o MC_Prog
我想转向某种条件编译方案,其中我有一些排序配置文件,我指定选项,它抓取正确的cpp文件并编译它们.
我认为makefile +配置文件是我最好的选择,但除了基本目标和非常线性的编译之外,我对复杂makefile的世界都很新手.
有什么好方法可以创建一个列表驱动的编译系统,这将允许具有非常基本的C知识的用户轻松地使用他们想要的模块构建目标.我的最终用户不会拥有大量的makefile知识(或者一般的编程知识),因此最终的复杂系统是不可能的.我希望他们基本上有一个透明的配置文件驱动系统,允许他们选择一个Initialize模块,一个PerformMoves模块和一个CollectResults模块.一旦他们用他们的选择修改了这个配置文件,我希望他们能够进行单命令编译.
换句话说,我希望能够创建一个指导用户的自述文件:
我知道这是一个相当抽象和复杂的问题,但我知道有一些Makefile/c专家可以为我提供一些很好的指导.
我正在尝试在 clojure 中创建一个模块化应用程序。
假设我们有一个博客引擎,它由两个模块组成,例如 - 数据库模块和文章模块(存储博客文章的东西),所有模块都有一些配置参数。
所以 - 文章模块依赖于存储,并且拥有文章模块和数据库模块的两个实例(具有不同的参数)允许我们在两个不同的数据库中托管两个不同的博客。
我试图实现这一点,为每个初始化的模块即时创建新的命名空间,并在这个命名空间中使用部分应用的参数定义函数。但我认为这种方法是某种黑客行为。
这样做的正确方法是什么?
我已经开始用 Java 绘制插头,比如使用贝塞尔曲线的连接器,但只是视觉上的东西。

然后我开始考虑制作某种带有输入和输出的模块化东西。但是,我对如何实施它的决定感到非常困惑。比方说,例如,模块化合成器或 Pure Data / MaxMSP 概念,其中您有模块,并且任何模块都有属性、输入和输出。
我想知道您是否知道我应该使用哪些关键字来搜索要阅读的内容。我需要一些关于这种接口的基本示例或抽象想法。有没有适合这个想法的设计模式?
我开始为完全模块化的后端(vertx verticle docker cluster)开发前端.
主要思想/问题是有一个基础ng2应用程序,它定义仪表板,侧面菜单,其他基本组件,并通过包含所需JS文件路径的某种清单列表连接到后端,发现启用了哪些模块/ bundles,模块应该是完全独立的,你可以从github下载并放在一个文件夹中.
到目前为止,我发现最接近的是这个问题,Angular2:从给定文件夹动态加载模块,显示如何在运行时加载模块,但我还没有找到一种独立开发和构建软件包的方法.
这甚至可能吗?你们能指出我正确的方向吗?我错过了这个例子吗?
当我们尝试将我们的复合组件捆绑到一个jar中并作为依赖项包含在另一个项目中时,我遵循了以下答案.
这适用于除复合组件实现之外的所有内容.我们常见项目的文件夹结构如下所示:
CommonWebProject
|-- META-INF
| |-- resources
| | `-- common
| | |-- css
| | | ...
| | |-- js
| | | ...
| | |-- components
| | | `-- comment.xhtml
| | |-- templates
| | | `-- defaultTemplate.xhtml
| |-- faces-config.xml
| `-- MANIFEST.MF
:
Run Code Online (Sandbox Code Playgroud)
comment.xhtml包括:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui" xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface>
</composite:interface>
<composite:implementation>
<p>TESTING!</p>
</composite:implementation>
</html> …Run Code Online (Sandbox Code Playgroud) 在回答这个问题后,我在 Github 上发布了 Java 9 模块教程 + 示例以及如何为未来用户运行:
我有以下非常简单的结构:
src
? module-info.java
?
????moduleA
????pack1
Main.java
Run Code Online (Sandbox Code Playgroud)
module-info.java :
module moduleA {
}
Run Code Online (Sandbox Code Playgroud)
Main.java:
package moduleA.pack1;
public class Main{
public static void main(String[] args){
System.out.println("Hello Java 11");
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试编译然后运行这个非常简单的模块化 java 应用程序。
所以从我运行的 cmd 开始:
编译
javac --module-source-path src -d out -m moduleA
Run Code Online (Sandbox Code Playgroud)
跑
java --module-path out -m moduleA/pack1.Main
Run Code Online (Sandbox Code Playgroud)

从 IntelliJ 开始,它的作用就像魅力一样,我不知道它背后有什么魔力。
我做错了什么?
我使用 Java11 创建一个简单的测试应用程序来学习 JPA、Hibernate、一些 java 模块化以及后来的内容(带有 dagger 的 CDI),当我使用 module-info.java 时,我遇到了编译问题
我为一些简单的类完成了一些DAO 存储库,这些类带有 JPA 注释以对其进行测试,并且在我的主类上一切都运行良好,我成功地插入和检索了一些对象。注意:到目前为止我还没有 module-info.java
现在我正在制作一些 FXML(使用 scenebuilder)。我之前已经这样做过,并且必须创建一个 module-info.java 来解决一些 JavaFX 问题(我认为与 java 反射有关):我在另一个项目中这样做了,并且按预期工作。这是由 IntelliJ 警告生成的,IntelliJ 警告要么通过 IntelliJ 解决它们,要么通过某些运行时异常通知我包 app.a 需要打开包 app.b,而我手动执行此操作。这是我第一次使用 module-info.java
因此,当我尝试通过另一个类MainFX与 gui 一起运行时,我收到一些错误(我将尝试解决该错误,但这不是这个问题的目的):
Caused by: java.lang.IllegalAccessError: class com.sun.javafx.fxml.FXMLLoaderHelper (in unnamed module @0x71b9e075) cannot access class com.sun.javafx.util.Utils (in module javafx.graphics) because module javafx.graphics does not export com.sun.javafx.util to unnamed module @0x71b9e075
at com.sun.javafx.fxml.FXMLLoaderHelper.<clinit>(FXMLLoaderHelper.java:38)
at javafx.fxml.FXMLLoader.<clinit>(FXMLLoader.java:2056)
at app.control.MainControl.loadFXML(MainControl.java:22) …Run Code Online (Sandbox Code Playgroud) 在我对较新的Web平台/应用程序(如Drupal,Wordpress和Salesforce)的分析中,他们中的许多人基于模块化的概念创建了他们的软件:开发人员可以创建新的扩展和应用程序而无需更改"核心"中的代码"由主要开发者维护的系统.特别是,我知道Drupal使用了一个"钩子"系统,但我对实现它的引擎或设计知之甚少.
如果您要沿着创建应用程序的道路前进,并且您想要一个允许模块化的系统,那么您从哪里开始?这是每个人都知道的特定设计模式吗?是否有这个范例倾向于订阅的手册?他们的网站是否从头开始讨论这种类型的开发?
我知道有些人直接指向OOP,但这似乎并不完全相同.
我正在计划的这个特定系统更倾向于像Salesforce这样的东西,但它不是CRM系统.
为了解决这个问题,请忽略Buy vs. Build参数,因为该考虑已经在进行中.现在,我正在研究构建方面.
我正在研究我的一个小型业余爱好项目,我有一个大型结构,负责所有核心任务.这个核心本身不会做太多,它需要十几个子系统才能真正做到这一点.我目前只编写了一个子系统,所以它仍然很容易改变.
我有很多代码位置,核心与子系统接口,我不想每次添加新子系统时都要更改核心.我的想法是让它模块化.
很长一段时间我在游戏引擎中看到类似的东西,其中可以通过使用一些预处理器宏来定义新的控制台命令.这就是你所要做的一切 - 在编译后它立即在游戏中工作.
让我们以游戏引擎为例来说明我的情况.我在下面的代码中添加了评论,这些评论应该让我的问题更加明显.
我的问题:如何在Objective-C中实现一个模块化系统,它是在编译时构建的,并不涉及更改模块本身以外的任何内容?
-(void)interpretCommand:(NSString*)command {
// Find the space in the command
NSRange pos = [command rangeOfString:@" "];
if (pos.length == 0) return; // No space found
NSString *theCommand = [command substringToIndex:pos.location];
// !!! Here comes the important code !!!
// Get all the available commands - this is what my question is about!
NSDictionary *allCommands = nil;
// Find the command in the dictionary
NSString *foundCommand …Run Code Online (Sandbox Code Playgroud) modularity ×10
java ×3
c ×2
angular ×1
api ×1
c++ ×1
clojure ×1
compilation ×1
components ×1
java-11 ×1
java-module ×1
javafx ×1
jpa ×1
jsf ×1
jsf-2 ×1
makefile ×1
maven ×1
objective-c ×1
project ×1
webpack ×1