小编Ros*_*atl的帖子

用于生成类依赖关系的图形数据的工具

是否有一些工具能够分析Java源文件,从中构建图形并以某种标准/可理解的格式提供图形数据

它绝对不需要GUI,我更喜欢命令行的东西,所以我可以通过各种工具处理输出(用于分段,可视化,......).

java dependencies static-analysis

26
推荐指数
3
解决办法
3万
查看次数

分布式事务和/或群集中共享数据的Java解决方案

集群/分发Java服务器应用程序的最佳方法是什么?我正在寻找一种方法,允许您通过添加更多应用程序服务器和更多数据库服务器来水平扩展.

  • 您会建议采用哪些技术(软件工程技术或特定技术)来解决此类问题?
  • 您使用什么技术设计持久层以扩展到许多读取器/写入器扩展应用程序事务并扩展对共享数据的访问(最佳方法是消除共享数据;您可以应用哪些技术来消除共享数据).
  • 似乎需要使用不同的方法,具体取决于您的事务是读取还是写入繁重,但我觉得如果您可以优化"写入"繁重的应用程序,这对于"读取"也是有效的

"最佳"解决方案允许您为单个节点编写Java应用程序,并希望"隐藏"访问/锁定共享数据的大部分细节.

在分布式环境中,最困难的问题总是归结为多个事务访问共享数据.似乎有两种常见的并发事务方法.

  1. 显式锁(在分布式系统中的多个节点之间极易出错并且协调速度很慢)
  2. 软件事务内存(STM)AKA乐观并发,如果事务发现共享状态已更改(并且稍后可以重试事务),则在提交期间回滚事务.哪种方法可以更好地扩展,在分布式系统中有哪些权衡取舍?

我一直在研究扩展解决方案(以及提供如何扩展的示例的一般应用程序),例如:

  1. Terracotta - 通过使用Java的并发锁定机制(synchronized,ReentrantReadWriteLocks)扩展Java内存模型以包含分布式共享内存,提供"透明"扩展.
  2. 谷歌应用程序引擎的Java -让您可以在您分发哪个服务器处理事务写,将当中的"云"服务器进行分布式Java(或Python)的应用程序和使用BigTable的存储持久性数据(不知道你的交易是如何访问共享数据或处理锁定争用,以便能够有效扩展)
  3. 暗星MMO服务器 -暗星是Sun的开源MMO(大型多人在线),他们规模在一个线程事务的方式交易,允许一个给定的事务,只进行了一定的运行,并承诺,如果它需要长期将回滚游戏服务器(有点像软件事务内存).他们一直在研究支持多节点服务器设置以进行扩展.
  4. Hibernate的乐观锁定 - 如果你使用的是Hibernate,你可以使用它们的乐观并发支持来支持软件事务内存类型的行为
  5. Apache CouchDB应该自然地以网状配置"扩展"到许多读写器DB.(有一个很好的例子,说明如何管理锁定数据或确保事务隔离?):
  6. JCache - 通过将结果缓存到可以在Google appengine中使用的常见查询来扩展"读取"繁重的应用程序,以访问memcached并缓存其他经常读取的数据.

Terracotta似乎是最完整的解决方案,因为您可以"轻松"修改现有服务器应用程序以支持扩展(在定义@Root对象和@AutoLockRead/Write方法之后).问题是要真正从分布式应用程序中获得最大的性能,分布式系统的优化实际上并不是一个想法,你必须设计它,知道对象访问可能被网络I/O阻止.

为了正确扩展,似乎总是归结为分区数据和负载平衡事务,例如给定的"执行单元"(cpu core - > thread - >分布式应用程序节点 - > DB主节点)

似乎通过群集使任何应用程序可以正确扩展,您需要能够根据数据访问读/写对事务进行分区.人们提出了哪些解决方案来分发他们的应用程序数据(Oracle,Google BigTable,MySQL,数据仓库),以及一般如何管理分区数据(许多写入主数据库,以及更多读取数据库等).

在扩展数据持久层方面,在将数据划分给许多读者/多个编写者方面,哪种类型的配置最佳扩展(通常我会基于给定用户(或通常是您的任何核心实体)对数据进行分区"root"对象实体)由单个主DB拥有

java concurrency scalability transactions optimistic-locking

21
推荐指数
1
解决办法
5919
查看次数

在persistence.xml中引用Tomcat JNDI数据源

在server.xml中我已经定义了全局资源(我正在使用Tomcat 6):

<GlobalNamingResources>
   <Resource name="jdbc/myds" auth="Container"
             type="javax.sql.DataSource"
             maxActive="10" maxIdle="3" maxWait="10000"
             username="sa"  password=""
             driverClassName="org.h2.Driver"
             url="jdbc:h2:~/.myds/data/db"
   />
</GlobalNamingResources>
Run Code Online (Sandbox Code Playgroud)

我在catalina.out中看到这是绑定的,所以我想它没关系.

在我的网络应用程序中,我有数据源的链接,我不确定它是否正常:

<Context>    
 <ResourceLink global='jdbc/myds' name='jdbc/myds' type="javax.sql.Datasource"/>    
</Context>
Run Code Online (Sandbox Code Playgroud)

在应用程序中有persistence.xml:

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0">
  <persistence-unit name="oam" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <non-jta-data-source>jdbc/myds</non-jta-data-source>
    <!-- class definitions here, nothing else -->

    <properties>
      <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
    </properties>
  </persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)

它应该没问题,但很可能这个或者ResourceLink定义是错误的,因为我得到了:

javax.naming.NameNotFoundException:名称jdbc未绑定在此Context中

有什么不对,为什么这不起作用?

更新:

我试图直接获取数据源:

public class WebAppListener implements ServletContextListener
{
    // ServletContextListener interface - start
    public void contextInitialized(ServletContextEvent sce)
    {
        try
        {
            Context initCtx = new InitialContext(); …
Run Code Online (Sandbox Code Playgroud)

java tomcat hibernate jpa datasource

12
推荐指数
1
解决办法
6万
查看次数

ArrayList.addAll(ArrayList)抛出SOMETIMES UnsupportedOperationException

我有一个代码从一些分页字符串数据读取列表.我不明白 - 为什么在addAll()上抛出UnsupportedOperationException以及为什么它是随机行为?

我知道创建目标ArrayList并且不添加到返回的那个解决了问题,我正在寻找更好的理解而不是修复.

List<Event> eventList = eventTable.getEvents(); // returns ArrayList
while (hasNextPage()) {
  goToNextPage();
  eventList.addAll(eventTable.getEvents());
}
Run Code Online (Sandbox Code Playgroud)

java exception list arraylist

12
推荐指数
1
解决办法
1万
查看次数

Android中的样式层次结构 - 重要性的顺序是什么?

我有一个Android应用程序,我正在使用自定义主题应用于主要活动本身的Android清单中.此活动创建一个列表视图,其中应用了样式.

如果我为该列表视图创建自定义布局,包括行本身的单独xml文件,并且我将样式直接应用于这些布局,这种样式是否会覆盖应用程序的整体样式?我试图掌握事件的层次结构,就样式和主题的工作方式而言.

在我的示例中,我工作的方式是:对行应用样式,由行布局xml引用>对整体列表视图应用样式,由listview布局xml引用>从自定义主题应用样式,由android清单引用的样式xml引用

我对吗?或者我正在接近这个错误.(仅仅为了混淆,">"我的意思是比重要的更重要)

xml mobile user-interface android

11
推荐指数
1
解决办法
1239
查看次数

sleep()方法如何在给定的线程和输出上工作?

据我所知,sleep()它用于在指定时间内休眠一个线程.我制成的纤维束的例子-比如1我正在作为输出1,2,3,4因为我只创建一个.在例2中,我创建的线程的2个实例,我获得输出1,1,2,2,3,3,4,4.

为什么输出不1,2,3,4第一个线程,然后1,2,3,4为第二个?

例1:

// Using sleep() method
  public class Aaa extends Thread{
    public void run(){
        for(int i=1;i<5;i++){
        try{
           Thread.sleep(500); 
        } catch(InterruptedException e){
            System.out.println(e);
        }
        System.out.println(i);
        }
    }
    public static void main(String[] args){
        Aaa m1=new Aaa();
        m1.start();
    }
  } …
Run Code Online (Sandbox Code Playgroud)

java multithreading

9
推荐指数
1
解决办法
7408
查看次数

logback - 没有行结尾分隔符

我正在使用logback 0.9.21.不幸的是,它将所有消息打印到单行,没有行尾字符,甚至错误的一行.

我的模式设置正确AFAIK:

<pattern>%d{HH:mm:ss.SSS} %-5level %class (%thread) [%logger{36}] -- %msg%n</pattern>
Run Code Online (Sandbox Code Playgroud)

有什么收获?

java logging logback

7
推荐指数
1
解决办法
4180
查看次数

高级Java优化

关于如何进行低级Java优化有很多问题和答案以及意见,包括for,while和do-while循环,以及是否有必要.

我的问题更多的是基于高级别的设计优化.我们假设我必须做以下事情:

对于给定的字符串输入,计算字符串中每个字母的出现次数.

当字符串是几个句子时,这不是一个主要问题,但如果相反,我们想要计算900,000个单词文件中每个单词的出现.建设循环只是浪费时间.

那么什么是可以应用于此类问题的高级设计模式.

我想我的主要观点是我倾向于使用循环来解决许多问题,并且我想摆脱使用循环的习惯.

提前致谢

山姆

ps如果可能,你可以产生一些伪代码来解决900,000字的文件问题,我倾向于理解代码比我能理解英语更好,我认为对于这个网站的大多数访问者来说都是一样的

java language-agnostic algorithm distributed bigdata

5
推荐指数
1
解决办法
2047
查看次数

在 django 中添加管理索引页面的链接

一个页面如何链接到django的管理页面?我尝试更改 base.html 页面,但它已反映到管理的所有 html 页面上。这可以仅链接到列出所有应用程序的管理索引页面吗?

django django-templates

5
推荐指数
2
解决办法
2771
查看次数

如何禁用“ng build”的颜色输出?

我需要关闭 Angular CLIng build命令输出中的颜色,即它完成时写入控制台的摘要。有没有某种方法(最好是环境变量或命令行参数)来禁用它?

angular-cli angular

5
推荐指数
1
解决办法
3157
查看次数