我正在尝试在java应用程序中考虑内存分配和多线程的一些设计,这就是我想知道的:
我有一个具有同步集合的类说一个列表,它会在几秒钟内更新几次,但所有更新都发生在类中,而它自己的线程不是来自其他线程.但是我有许多其他线程调用getCollection()方法并执行foreach以只读方式迭代其内容.这是我不知道的:
如果另一个线程正在迭代同步的收集,那么执行更新的单个线程是否必须等到没有其他线程迭代的时间点?
我的第二个问题是,通过执行.toArray返回集合的数组副本而不是集合本身似乎是有意义的,但是从内存的角度考虑它不会需要分配一个大小的新数组每次收集内容的内容,如果在一个有数千个对象的集合中每秒被调用数百次,那么我不知道是不是有意义.
此外,如果我从不返回集合本身而不是使列表同步不再需要?
将不胜感激任何意见.谢谢! - 邓肯
以下两种语法顺序在Java中有效.为什么两者都允许并且是否有首选语法顺序?
private final static String consultantType = "consultantType";
private static final String consultantId = "consultantId";
Run Code Online (Sandbox Code Playgroud)
我很高兴了解Hadoop及其周围的各种项目,目前有两种不同的策略,我正在考虑建立一个系统来存储大量市场价格数据,我刚刚开始使用Hadoop/HDSF和HBase但希望有人可以帮助我种植一个系统种子,以后我不必使用这些技术.下面是我的系统和要求的概述,包括一些查询和数据使用用例,最后是我目前对我所阅读的小文档中最佳方法的思考.这是一个开放式的问题,我很乐意接受任何有见识的答案并接受最好的答案,随时评论下面的任何或所有要点. - 邓肯克雷布斯
系统要求 - 能够利用数据存储进行系统的历史回溯测试,历史数据图表和未来的数据挖掘.一旦存储,数据将始终是只读的,需要快速数据访问,但在返回测试时不是必须的.
静态模式 - 非常简单,我想从feed中捕获3种类型的消息:
数据插入用例 - 来自实时市场数据流或通过代理API查找
数据查询用例 - 下面演示了我如何逻辑查询我的数据.
Get me all Quotes,Trades,Timestamps for GOOG on 9/22/2014Get me all Trades for GOOG,FB BEFORE 9/1/2014 AND AFTER 5/1/2014Get me the number of trades for these 50 symbols for each day over the last 90 days. 圣杯 - MapReduce可以用于下面这些用例吗?
通过分布式代理从原始市场数据生成元数据.例如,编写一个作业,计算所有股票和数据库中存储的所有股票的1分钟间隔的平均交易量.创建作业以为每个库存/会话设置一个代理,我告诉它应该为哪个库存和会话计算该值.(这是MapReduce可以做的吗???)
在代理的类路径中,我可以添加自己的util代码,以便上面的用例可以将其值发布到中央仓库或Messaging服务器中吗?我可以将代理部署为OSGI捆绑包吗?
为每天早上在上市前交易前执行的不同类型的指标和分数创建不同类型的代理?
高频交易
如果有人可以在高频交易系统中使用Hadoop分享一些经验,我也很感兴趣.刚开始使用这项技术我最初的感觉是Hadoop可以很好地存储和处理大量的历史滴答数据,如果有人使用它进行实时交易,我会有兴趣了解更多! - 邓肯克雷布斯
快把我逼疯了!假设我正在终端上打字,我想快速到达该行的第一个字符,现在我使用左箭头,一次按一次,并认为需要像 PAGE_HOME 按钮一样在终端中执行此操作,请帮忙!?- 邓肯·克雷布斯
如果这是一个无知的问题,我深表歉意,但是我正在构建一个Kubernetes集群,我真的很喜欢从单个云提供商抽象我的计算基础架构并转向一个VM平台的想法,但是有状态性又如何呢?我希望能够例如设置一个mysql服务器并保留该数据终身使用,我希望Kubernetes用数据驱动器对mysql容器进行负载平衡,我们谈论容器,我们认为生死攸关在几秒钟之内,但是当我们是否想保留数据并在没有VM的情况下建立一个无所不能的数据中心?在这种范式中是否有状态的概念?
我环顾四周,无法解决这个问题:我有一个实现观察者模式和List实现的对象,只要在列表中的任何对象上触发更改事件,就可以在列表中添加侦听器,以避免手动添加/删除列表中每个对象的侦听器.
我遇到的问题是,当创建相同List实现的新实例并从现有列表添加对象时,对象更改不会从添加到新列表的bean触发.我的想法是,当一个对象添加到一个Collection时,它只是添加一个指向现有对象的指针,在这种情况下,更改通知将在新列表中的对象上被触发,但这不会发生.任何人都可以帮我弄清楚问题可能是什么?我见过类似的问题,但没有一个可以帮助我解决这个问题.
用例,是一个股票扫描仪,其中一个列表包含我正在观察的市场中的所有股票,扫描仪列表只有通过标准的股票,但扫描仪没有获得使用触发的价格,交易量等更新观察模式. - 邓肯
我环顾四周,找不到我想弄清楚的答案的好答案.
在我的系统中,我在运行时创建主题,其中有一个使用者和单个生产者用于在运行时创建的主题.我想要输入的是,在运行时创建主题的设计是否违背了JMS设计?
我这样做是因为它向市场提供数据,每个主题都是具有特定股票订阅的数据源,以及每秒库存更新多少报价的可变率.
我无法弄清楚的是,如果我采用这种方法,我希望能够在运行时创建的Feed主题上不再有任何消费者时删除该主题.我如何通过收到关于主题的消费者数量的通知来弄清楚如何停止发布者并删除主题?
希望这不会影响我的声誉,我认为这是一个有效的问题.我查看了activemq中的虚拟主题,但这似乎不适合这个用例.
Java中的所有抽象类显然都是由具体类扩展的,并且不能自行实例化,我如何获得对扩展我的抽象类的类的引用?我的用例涉及反射,在我的父抽象类中,我想内省具体子类上的方法,但我无法弄清楚如何在不添加抽象方法强制子类返回其类的情况下获取对子类的引用。有任何想法吗?!
我需要排除一个我知道组 ID、工件 ID 和要排除的版本的工件,但是如何找出我的 pom 中的哪些依赖项将此特定工件作为依赖项。我正在使用 maven 2x,看不到全局排除的方法。有谁知道我如何找出有问题的依赖项而不必查看每个依赖项?
我环顾四周,找不到任何答案。
这个问题适合那些非常熟悉OSGI和开发路线图的人.我已经长大了基于Eclipse /春分并发现扩展点框架是构建可扩展的软件时的宝贵由于通过架构允许扩展点的建设,打造丰富的XML元数据,消耗了Java代码,并在能力具有设计时xml验证的plugin.xml.这与用于定义和使用扩展点的PDE Eclipse工具相结合,是我最喜欢的Equinox功能之一.
我认为我已经在几乎所有可以想到的上下文中使用扩展点,从扩展带有ECore包的equinox服务器端模式到映射到hibernate模式,以建模web.xml扩展点,允许模块化Web应用程序开发,其中每个插件都能够为基于扩展生成的单个web.xml文件做出贡献.我很喜欢用类似的方式在JSF配置文件移植到一个单一的扩展点允许插件有助于管理豆类和模块化的Web应用程序开发的世界,我想扩展点是一个很好的解决方案去耦丑陋战争的挑战.除了替代框架之外如果你看一下Eclipse UI,很难想象没有扩展点的生活,但我
我最大的抱怨是缺少一个可选的基于xml的丰富的元数据层,用于创建诸如"服务点"(缺少更好的单词)之类的东西,它使用xml模式来定义服务接口中定义的方法调用的xml表示.允许像"服务扩展"这样的东西在xml中使用OSGI服务而不在代码中使用,使您的开发更灵活,更易于维护.
我不知道这是否是向OSGI服务提供更高级别元数据层的最佳方法,但它是一个很好的例子,因为它显示了使OSGI服务合同比具有xml范例的服务消费的Java接口更智能的好处不只是服务绑定.使用类似上面所有的锅炉板代码,用于注入服务或获取服务引用,然后在Java代码中调用方法来执行像在HttpService上注册http上下文这样简单的操作,这些都可以在xml中完成.更进一步,如果不是更容易在富客户端应用程序(如今日的eclipse中的扩展点)或在Web应用程序框架中使用纯OSGI服务构建复杂的可扩展UI框架,其中一个服务点可以实现为具有唯一ID,url映射和控制器的可扩展Web应用程序定义标准容器,在同一框架中,其他服务点允许其他bundle将菜单选项卡等内容添加到主菜单中,并带有相对索引顺序和链接引用位于包中的jsp页面.Web.xml可以成为http服务中的服务点,允许bundle通过web.xml"service-point"的"service-extensions"贡献servlet映射或过滤器
我并不是建议我们将扩展点框架移植到OSGI中,而是遵循为声明性OSGI服务提供基于xml的元数据层的相同精神,允许服务将其服务接口中包含的方法调用公开为"服务点"它被定义为其他声明性服务或包可以通过"服务扩展"使用的xml模式.我喜欢的eclipse扩展点是,很容易添加扩展,你可以根据你的bundle类路径获得一个很好的可用扩展点对话框,并且通过PDE工具,可以根据目标扩展的模式动态呈现扩展UI点.使用此xml元数据层,允许捆绑开发人员将OSGI服务方法公开为"服务点" 我们可以按照相同的OSGI服务模式,例如MANIFEST编辑器可以有一个名为"Service Extensions"的选项卡,当我点击"Add"时,我会根据我的bundle类路径获得所有可用服务点的对话框可以使用和使用PDE工具一样,用户界面创建一个新的"服务扩展"将围绕与"服务点"相关联的模式构建.在激活我的包期间,它被转换为服务点定义的方法调用.将围绕与"服务点"相关联的模式构建.在激活我的包期间,它被转换为服务点定义的方法调用.将围绕与"服务点"相关联的模式构建.在激活我的包期间,它被转换为服务点定义的方法调用.
这就是我想要使用OSGI服务的方式!我们在Eclipse中看到的所有简洁的UI框架,如UI贡献或项目自然构建器,资源监听器,您命名的编辑器贡献都可以使用OSGI Services以及用于包装服务方法调用的丰富xml元数据层以类似的方式构建和扩展将"服务点"和实际调用称为"服务扩展".所以我的哭泣请求告诉我今天在OSGI中提供此功能的东西!如果你不知道什么,那么你有什么理由支持或反对这种方法,即采用eclipse扩展点的优点,并在OSGI声明服务模型中构建类似的东西,使我们能够在简单的OSGI中享受更简单,更好的扩展性! - 邓肯克雷布斯