小编mak*_*aks的帖子

关联与聚合

我已经回顾了很多关于这些事情的信息,但是无法理解它们之间有什么区别?在Fowler的UML Distilled中说,Aggreagation绝对没有意义,因此作者建议不要在图表中使用它.请解释一下,何时我应该使用它们以及它将如何影响java代码.

java oop uml

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

Netbeans 7.0中的SVN 1.7+

我有一个使用totoiseSVN的项目.在将其升级到1.7版本之前一切正常,但是当我将tortoiseSVN升级到1.7版本时,当我尝试提交或显示历史记录日志或更新时,它会给我一个错误:

org.tigris.subversion.javahl.ClientException: Unsupported working copy format
The path 'C:\Users\user\stuff\myApp' appears to be part of a Subversion 1.7 or greater
working copy.  Please upgrade your Subversion client to use this
working copy.
Run Code Online (Sandbox Code Playgroud)

据我所知,如果我的系统安装了toriseSVN,Netbeans默认使用它.此外,我已阅读,.svn目录位于只是在根(如在我的情况),在SVN 1.7+项目(工作复印件).那么为什么netbeans告诉我必须升级svn客户端,因为我已经有了最新版本

svn tortoisesvn netbeans

16
推荐指数
2
解决办法
8232
查看次数

覆盖java配置中的bean定义

我有一个configuartion课程

@Configuration
public class FooConfig{
  @Bean
  public FooService fooService() { ... }
  @Bean
  public AbcService abcService() { ... }
}
Run Code Online (Sandbox Code Playgroud)

该类在lib中定义,我无法更改.我有一个项目,FooService在很多地方使用.在我的项目中,我有另一个配置类

@Configuration
@Import({
  FooConfig.class,

})
public class BarConfig{
  @Autowired AbcService abc;
  ...    
}
Run Code Online (Sandbox Code Playgroud)

AbcService这里使用的是因为有些服务依赖于该服务并且声明了服务BarConfig.但是,FooService此处未使用(仅在控制器中使用)

我需要改变执行FooService.我可以定义新的FooServicebean BarConfig吗?它是否会覆盖通过导入的已存在的定义FooConfig

java spring

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

将int stream转换为map

我有一个int流,并希望该流的每个元素进行一些计算,并将它们作为Map返回,其中键是int值,值是该计算的结果.我写了下面这段代码:

IntStream.range(0,10).collect(Collectors.toMap(Function.identity(), i -> computeSmth(i)));
Run Code Online (Sandbox Code Playgroud)

哪里computeSmth(Integer a).我有下一个编译器错误

 method collect in interface java.util.stream.IntStream cannot be applied to given types;
  required: java.util.function.Supplier<R>,java.util.function.ObjIntConsumer<R>,java.util.function.BiConsumer<R,R>
  found: java.util.stream.Collector<java.lang.Object,capture#1 of ?,java.util.Map<java.lang.Object,java.lang.String>>
  reason: cannot infer type-variable(s) R
    (actual and formal argument lists differ in length)
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

java-8

14
推荐指数
1
解决办法
7592
查看次数

Scala对象初始化

我有一个对象:

object A {
 val init = println("Hello")
}
Run Code Online (Sandbox Code Playgroud)

我在一个特征中使用它:

trait SomeTratit {
  val a = A.init
}
Run Code Online (Sandbox Code Playgroud)

然后我在课堂上使用trait:

class SomeClass extends SomeTrait
Run Code Online (Sandbox Code Playgroud)

当我实例化SomeClass时,new SomeClass我希望"Hello"在控制台中看到,但是没有得到它.为什么?

此外,我希望在实例化多个对象时只看到一次"Hello",但在控制台中看不到任何"Hello"

scala

13
推荐指数
2
解决办法
9505
查看次数

在java中易失性

据我所知,在易失性读取之前发生了易失性写入 ,所以我们总是会在volatile变量中看到最新的数据.我的问题基本上涉及到之前发生的术语以及它发生在哪里?我写了一段代码来澄清我的问题.

class Test {
   volatile int a;
   public static void main(String ... args) {
     final Test t = new Test();
     new Thread(new Runnable(){
        @Override
        public void run() {
            Thread.sleep(3000);
            t.a = 10;
        }
     }).start();
     new Thread(new Runnable(){
        @Override
        public void run() {
            System.out.println("Value " + t.a);
        }
     }).start();
   }
}
Run Code Online (Sandbox Code Playgroud)

(为清楚起见,省略了try catch块)

在这种情况下,我总是看到要在控制台上打印的值0.没有Thread.sleep(3000);我总是看到值10.这是发生在之前关系的情况还是打印'值10'因为线程1开始早一点线程2?

很高兴看到每个程序启动时带有和不带volatile变量的代码行为都不同的例子,因为上面代码的结果仅取决于(至少在我的情况下)线程顺序和线程休眠.

java concurrency volatile

12
推荐指数
2
解决办法
2142
查看次数

公平对非公平

我已经通过测试公平和非公平的学科RentrantLock.我写了一个模拟餐饮哲学家的小程序.

每个philospher都有左右叉,这是ReentrantLocks.我已经模拟了1000次思考和饮食的行为:

 for (int i = 0; i < ACT_TIMES; i++) {
            act();
        }
Run Code Online (Sandbox Code Playgroud)

这里act

private void act() {
        think();
        eat();

    }
Run Code Online (Sandbox Code Playgroud)

Think没有意思,它只是睡了一段时间.这是eat方法

private void eat() {
        try {
            if (left.tryLock(0, TimeUnit.MILLISECONDS)) {
                if (right.tryLock(0, TimeUnit.MILLISECONDS)) {
                    log("eating");
                    eatCount++;
                    try {
                        Thread.sleep(EAT_TIME);
                    } catch (InterruptedException e) {
                    } finally {
                        left.unlock();
                        right.unlock();
                    }
                } else {
                    left.unlock();
                }
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
Run Code Online (Sandbox Code Playgroud)

主要方法:

 Lock[] forks = …
Run Code Online (Sandbox Code Playgroud)

java multithreading

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

Google图片搜索:如何构建反向图片搜索网址?

如何通过java编程将图像转换为"某些字符串"以将其作为参数传递给谷歌图像搜索.实际上我做了一些base64转换的图像,但它不同于谷歌在其图像搜索引擎中做的.我做了这样的转换(java 7):

import javax.xml.bind.DatatypeConverter;
...
            Path p = Paths.get("my_photo.JPG");
            try(InputStream in = Files.newInputStream(p); 
                    PrintWriter write = new PrintWriter("base64.txt");
               ) {
                byte [] bytes = new byte[in.available()];
                in.read(bytes);
                String base64 = DatatypeConverter.printBase64Binary(bytes);
                write.println(base64);

            } catch(IOException ex) {
                ex.printStackTrace();
            }
Run Code Online (Sandbox Code Playgroud)

这个简单程序的输出与url中google的字符串不同.我谈到了之后的那个字符串tbs=sbi:AMhZZ...

java google-image-search

10
推荐指数
2
解决办法
2万
查看次数

Eclipse中的Tomcat在哪里存储扩展的WAR?

当我从Eclipse Indigo启动我的Web应用程序时,Tomcat 7在哪里存储Web应用程序文件夹?它不在Tomcat自己的webapp文件夹中.为什么我无法访问Tomcat的默认主页(我谈论http:// localhost:8080),如果它是在Eclipse下启动的话?如果我手动启动tomcat(thruogh startup.bat),我可以访问http:// localhost:8080.

eclipse tomcat

8
推荐指数
1
解决办法
7888
查看次数

context:property-placeholder不解析引用

applicationContext.xml在classpath的根目录下有下一个文件:

<context:annotation-config />

    <context:property-placeholder location="classpath:props/datasource.properties"  />

    <bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource"
        p:username="${jdbc.username}" 
        p:password="${jdbc.password}" 
        p:url="${jdbc.url}"
        p:driverClassName="${jdbc.driverclass}" 
        p:validationQuery="SELECT sysdate FROM dual" />

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"
        p:dataSource-ref="datasource" 
        p:mapperLocations="classpath:mappers/*-mapper.xml" />

    <tx:annotation-driven transaction-manager="txManager" />
    <bean id="txManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
        p:dataSource-ref="datasource" />

    <bean id="mappeScannerConfigurere" class="org.mybatis.spring.mapper.MapperScannerConfigurer"
        p:sqlSessionFactory-ref="sqlSessionFactory" 
        p:basePackage="com.mypackage" />
Run Code Online (Sandbox Code Playgroud)

props/datasource.properties 也存在于classpath的根目录中,内容如下:

jdbc.url=myjdbcurl
jdbc.driverclass=myClass
jdbc.username=myUserName
jdbc.password=myPassword
Run Code Online (Sandbox Code Playgroud)

我有一个spring托管测试,我声明通过下一个注释使用前面提到的applicationContext.xml:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
Run Code Online (Sandbox Code Playgroud)

当我调用测试方法时,我从spring获得下一个错误:

org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class '${jdbc.driverclass}'
Run Code Online (Sandbox Code Playgroud)

据我所知,sping没有解析对jdbc.driverclass的引用.我做错了什么?

PS:我正在使用spring 3.2.3.RELEASE

**

编辑

**

也许问题可能在于MapperScannerConfigurer.这是一个BeanDefinitionRegistryPostProcessor和Javadoc说:

扩展到标准BeanFactoryPostProcessor SPI,允许常规BeanFactoryPostProcessor检测开始之前注册其他bean定义

因此,MapperScannerConfigurer通过sqlSessionFactory实例化数据源对象BeanFacoryPostProcessor …

spring mybatis

8
推荐指数
1
解决办法
3321
查看次数