我已经回顾了很多关于这些事情的信息,但是无法理解它们之间有什么区别?在Fowler的UML Distilled中说,Aggreagation绝对没有意义,因此作者建议不要在图表中使用它.请解释一下,何时我应该使用它们以及它将如何影响java代码.
我有一个使用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客户端,因为我已经有了最新版本
我有一个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
.我可以定义新的FooService
bean BarConfig
吗?它是否会覆盖通过导入的已存在的定义FooConfig
?
我有一个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)
我做错了什么?
我有一个对象:
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"
据我所知,在易失性读取之前发生了易失性写入 ,所以我们总是会在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变量的代码行为都不同的例子,因为上面代码的结果仅取决于(至少在我的情况下)线程顺序和线程休眠.
我已经通过测试公平和非公平的学科RentrantLock
.我写了一个模拟餐饮哲学家的小程序.
每个philospher都有左右叉,这是ReentrantLock
s.我已经模拟了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编程将图像转换为"某些字符串"以将其作为参数传递给谷歌图像搜索.实际上我做了一些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...
当我从Eclipse Indigo启动我的Web应用程序时,Tomcat 7在哪里存储Web应用程序文件夹?它不在Tomcat自己的webapp文件夹中.为什么我无法访问Tomcat的默认主页(我谈论http:// localhost:8080),如果它是在Eclipse下启动的话?如果我手动启动tomcat(thruogh startup.bat
),我可以访问http:// localhost:8080.
我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 …