Tag: 架构

SecurityManager用于云服务“沙箱”

所有, 我正在设计基于云的服务,该服务将提供执行客户提交的一些“插件”代码的选项。 为了完成这项工作,插件不能威胁系统完整性或具有访问其他客户端数据的能力。 理想情况下,我希望客户端可以提交一个简单的jar文件(包含符合某些预定义接口的类),然后在沙箱中运行。 应允许客户端代码: 在单个线程上占用所需的CPU时间 使用标准java类(例如java.lang.Math,java.util.Random等)执行任何计算 调用jar中捆绑的任何库(但必须遵守相同的限制) 但我特别需要禁止以下内容: 产生新线程(以便可以公平地管理服务器资源!) 对文件系统/ IO /网络的任何访问权限 对本机代码的任何访问 除了传递给客户端代码/由客户端代码创建的数据之外,对JVM中的数据的任何访问权限 对除.jar沙箱中的类以外的类的reflection的任何访问权限 除了标准Java库之外,还能够在沙箱外部的对象上调用方法 是否可以使用自定义ClassLoader / SecurityManager设置来实现此目的? 或者我是否需要开始寻找更复杂的解决方案(例如启动多个JVM?)

String,StringBuffer和StringBuilder之间的性能和简单性权衡

你有没有想过这种变化在Java编程语言中的含义? String类被设想为一个不可变类(并且这个决定是故意考虑的)。 但字符串连接真的很慢,我自己对它进行了基准测试。 所以StringBuffer诞生了。 非常好的课程,同步和非常快。 但有些人对某些同步块的性能成本不满意,并引入了StringBuilder。 但是,当使用String来连接不太多的对象时,类的不变性使其成为实现线程安全的一种非常自然的方式。 当我们想要管理多个字符串时,我可以理解StringBuffer的使用。 但是,这是我的第一个问题: 例如,如果你想要追加10个或更少的字符串,你会在执行时间内将简单性换成几毫秒吗? 我也对StringBuilder进行了基准测试。 它比StringBuffer更有效(仅提高10%)。 但是,如果在您的单线程程序中使用StringBuilder,如果您有时想要将设计更改为使用多个线程,会发生什么? 你必须改变StringBuilder的每个实例,如果你忘记了一个,你将会产生一些奇怪的效果(考虑到可能出现的竞争条件)。 在这种情况下,你会在几小时的调试中交易性能吗? 好的,就是这样。 除了简单的问题(StringBuffer比“+”和线程安全更有效,而StringBuilder比StringBuffer更快但没有线程安全)我想知道何时使用它们。 (重要:我知道它们之间的差异;这是一个与平台架构和一些设计决策相关的问题。)

在方法之间重用PreparedStatement?

我们都知道 ,我们应该重新使用JDBC PreparedStatement不是在循环中创建新实例。 但是如何处理不同方法调用之间的PreparedStatement重用? 重用 – “规则”仍然有效吗? 我是否应该考虑为PreparedStatement使用字段,还是应该在每次调用时关闭并重新创建预准备语句(保持本地状态)? (当然,这样一个类的实例将绑定到一个Connection ,这在某些架构中可能是一个缺点) 我知道理想的答案可能是“它取决于”。 但我正在寻找经验不足的开发人员的最佳实践,他们将在大多数情况下做出正确的选择。

如何在Android上实现app子组件的模块化结构?

我的Android主应用程序将包含一个主程序,其中包含一些预安装的模块。 然后我想稍后提供不同的模块,最好是作为单独的文件。 模块如:位置,天气,议程。 你会怎么做到这一点? 我想在数据库中保留已安装/存在的模块。 因此,我有时必须将模块放入数据库,可能通过检测启动时是否存在。 主应用程序将基于这些模块工作。 如何将这些模块构建为单独的文件? 它们不会成为我申请中的切入点。 所以它们不能是导航菜单中的应用程序。 这可能吗? 我如何使用Eclipse创建它? 我将以什么格式提供模块? 用户如何添加/删除模块?

分离模型,视图和控制器的最佳方法

我正在考虑将模型视图和Controller-for Java分离并使用Eclipse的最佳方法,如果它有任何区别的话。 我曾经把每个类型的MVC分别放在自己的包中,但我开始认为这不是最好的方法: com.company.client(controler) com.company.client.model com.company.client.view com.company.another(controler) com.company.another.model com.company.another.view com.company.yetAnother(controler) com.company.yetAnother.model com.company.yetAnother.view (假设有很多不同的包,每个包都有自己的视图和模型) 我考虑过使用: com.company.client com.company.another com.company.yetAnother com.company.model.client com.company.model.another com.company.model.yetAnother com.company.view.client com.company.view.another com.company.view.yetAnother 我甚至考虑过将控制器,模型和视图放在不同的项目中。 也许它会更加模块化,我会更确定视图不使用控制器,例如(因为控制器项目将包括视图,但不是相反)。 那么分离M,V和C的最佳方法是什么? (考虑网络和桌面应用,而不仅仅是网络)

你有“建筑为建筑的缘故”的好例子吗?

只是听一下这个星期的播客,并认为把你的一些体验组合在一起很好,你看到设计的“架构”方面比它应该更多地支配事物。 Java在这方面经常受到不好的压力,并且随着Java EE感知复杂性的增加而越来越糟糕。 在2004年之后,我的Java体验时间图显着下降,所以我觉得没有资格发表评论。 我最近的经验是建筑师拼命想要在一组(关系)数据库表(恰好是Oracle)中准确地表示对象模型。 结果是一个数据库模式,如果没有首先预加入一堆表(在物化视图中),就无法有效地进行查询。

Java中的架构约束

我想确保我的项目不包含包之间不必要的依赖项。 例如,我想确保项目具有分层结构。 即模型低于一切,业务逻辑依赖于模型,视图依赖于业务逻辑和模型。 每个层都放在自己的包中。 你能推荐一些优选的开源工具,它允许我指定这些约束并将它们作为持续集成的一部分进行检查吗? PS我知道我可以在单独的maven模块中分离项目。 不幸的是,我的真实案例比3层系统更复杂。 如果我使用maven模块,我会有几十个非常小的模块。

使用Scene Builder在JavaFX中创建MVC模式

我是JavaFX的新手,并且在我目前的设置下努力创建一个合适的MVC架构。 我使用Scene Builder将UI单击在一起,并指定了一个Controller类。 启动: public class Portal extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) throws Exception { Parent root = FXMLLoader.load(getClass().getResource(“PortalUI.fxml”)); stage.setTitle(“Portal”); stage.setScene(new Scene(root)); stage.show(); } } Controller类包含其余代码。 public class AccommodationPortalView implements Initializable { @Override public void initialize(URL url, ResourceBundle resources) { // Work here. } […]

如何在Java中从sql模式生成orm映射类

我有一个db的现有sql架构文件。 是否有可能在需要时生成并重新生成DAO的实体和所有其他所需的帮助程序/客户端类来访问它? 我不介意它会是什么 – hibernate,其他jpa或其他东西。

德比模式错误

我正在尝试将数据插入到我的桌面应用程序的Derby嵌入式数据库中。 但是Derby给了我错误的Schema Not found错误 。 我试图通过按用户名创建模式来解决错误,但不能解决我的问题。 我搜索了互联网,但没有一个解决方案解决了我的问题。 package derbyd.ui; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class AddStudent extends javax.swing.JFrame { private void bt_saveActionPerformed(java.awt.event.ActionEvent evt) { String conURL = “jdbc:derby:myDB;create=true”; String user = “SOURABH”; String passwd = “pass”; Connection con = null; Statement st = null; String query; ResultSet rs = null; try […]