我花了一些时间开始研究关于流和lambdas的java-8嗡嗡声.让我吃惊的是,你不能应用流操作,例如.map()
,.filter()
直接上java.util.Collection
.是否存在技术原因导致java.util.Collection
接口未通过这些Stream操作的默认实现进行扩展?
谷歌搜索了一下,我看到很多人按照以下模式编码的例子:
List<String> list = someListExpression;
List<String> anotherList = list.stream().map(x -> f(x)).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
如果你的代码中有很多这些流操作,那就变得非常笨拙了.由于.stream()
并且.collect()
与您想表达的内容完全无关,您宁愿说:
List<String> list = someListExpression;
List<String> anotherList = list.map(x -> f(x));
Run Code Online (Sandbox Code Playgroud) 我们在Apache SSL代理后面的专用appserver上有一个带有嵌入式Tomcat的spring-boot/spring-mvc应用程序.
代理服务器上的SSL端口为4433,转发到应用服务器上的端口8080.
所以代理服务器的URL转发如下:
https://proxyserver:4433/appname >>forward>> http://appserver:8080/
Run Code Online (Sandbox Code Playgroud)
运行WITHOUT代理时,首先发生的事情是
spring-security重定向请求,如:
http://appserver:8080/ >>redirect>> http://appserver:8080/login
Run Code Online (Sandbox Code Playgroud)
以显示登录表单,通过扩展WebSecurityConfigurerAdapter
与
...
httpSecurity.formLogin().loginPage("/login") ...
...
Run Code Online (Sandbox Code Playgroud)
它在没有代理的情况下工作正常,但是WITH代理需要更改重定向,因此Spring应该重定向到相应的代理URL,如:
http://appserver:8080/ >>redirect>> https://proxyserver:4433/appname/login
Run Code Online (Sandbox Code Playgroud)
但还没有成功.
我正在尝试应用此解决方案:
http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-use-tomcat-behind-a-proxy-server(59.8 在前端代理服务器后面使用Tomcat)
我们在Apache中配置了mod_proxy,并验证它是否发送了预期的头文件:
X-Forwarded-For: xxx.xxx.xxx.xxx
X-Forwarded-Host: proxyserver
X-Forwarded-Port: 4433
X-Forwarded-Proto: https
Run Code Online (Sandbox Code Playgroud)
应用程序以参数启动:
export ARG1='-Dserver.tomcat.protocol-header=x-forwarded-proto'
export ARG2='-Dserver.tomcat.remote-ip-header=x-forwarded-for'
java $ARG1 $ARG2 -jar webapp.jar
Run Code Online (Sandbox Code Playgroud)
仍然重定向不起作用.
它将保持本地重定向, http://appserver:8080/login
客户端无法使用.
我们需要做些什么来使这个场景有效吗?
编辑:此外,我担心代理URL中的"/ appname"部分.在appserver上,应用程序以"/"为根.在通过代理时,应该如何指示spring// appname应该包含在发送回客户端的所有URL中?
使用cygwin的ssh从windows登录到linux-hosts后,当退出远程shell时,我总是得到烦人的消息:
"被信号1杀死"
我用Google搜索,并意识到它无害,但仍然很烦人......有人建议你可以通过使用来消除这个消息
$ ssh -q ...
但这对我试过的任何机器都没有影响.
任何人都知道摆脱这个消息的工作解决方案?
我刚刚下载了最新版本的SonarQube 4.3,然后尝试使用以下命令构建一个java-8项目:
mvn clean install
mvn sonar:sonar
Run Code Online (Sandbox Code Playgroud)
这给了我下面的例外.
谷歌搜索,我得到的印象这是一个应该修复的早期问题......?
http://sonarqube.15.x6.nabble.com/Sonar-analyze-Java-1-8-project-Failure-td5023663.html
http://jira.codehaus.org/browse/SONARJAVA-482
SonarQube 4.3是否支持java-8?
或者任何线索,有什么问题?
-------------------------------------------------------
T E S T S
-------------------------------------------------------
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)
at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)
Caused by: java.lang.RuntimeException: Class java/util/UUID could not be instrumented.
at org.jacoco.agent.rt.internal_6effb9e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:138)
at org.jacoco.agent.rt.internal_6effb9e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:99)
at org.jacoco.agent.rt.internal_6effb9e.PreMain.createRuntime(PreMain.java:55)
at org.jacoco.agent.rt.internal_6effb9e.PreMain.premain(PreMain.java:47)
... 6 more
Caused by: java.lang.NoSuchFieldException: $jacocoAccess
at java.lang.Class.getField(Class.java:1690)
at org.jacoco.agent.rt.internal_6effb9e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:136)
... 9 more
FATAL ERROR in native method: processing of -javaagent failed
Exception in thread "main"
Run Code Online (Sandbox Code Playgroud) 浏览Spring Javaconfig参考文档 http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/beans.html 我发现了一些令人困惑的部分......
在"5.12.4使用@Configuration注释"部分中,它说:
"当@Beans彼此依赖时,表达该依赖关系就像让一个bean方法调用另一个一样简单:
@Configuration
public class AppConfig {
@Bean
public Foo foo() {
return new Foo(bar());
}
@Bean
public Bar bar() {
return new Bar();
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,foo bean通过构造函数注入接收对bar的引用."
好吧,如果一切都是无状态的,那可能并不重要,但如果您有上面的配置,然后在您的应用程序中执行:
@Autowired
private Foo foo;
@Autowired
private Bar bar;
Run Code Online (Sandbox Code Playgroud)
检查豆的散列码,事实证明,你的私有变量栏会指不同的实例的酒吧比一个通过使用富,这可能不是你所期望的,对不对?
我想说正常模式应该是:
@Configuration
public class AppConfig {
@Bean
public Bar bar() {
return new Bar();
}
@Autowired Bar bar;
@Bean
public Foo foo() {
return new Foo(bar);
}
} …
Run Code Online (Sandbox Code Playgroud) 问题重新.Maven scm-plugin:http: //maven.apache.org/scm/plugins/usage.html
例如,在pom.xml中:
<scm>
<connection>scm:svn:http://somerepository.com/svn_repo/trunk</connection>
<developerConnection>scm:svn:https://somerepository.com/svn_repo/trunk</developerConnection>
<url>http://somerepository.com/view.cvs</url>
</scm>
Run Code Online (Sandbox Code Playgroud)
<url>
标签究竟用于什么?
我在这里解释了另外两个:http: //maven.apache.org/pom.html
"connection,developerConnection:两个连接元素传达了如何通过Maven连接到版本控制系统.如果连接需要Maven的读取访问权限才能找到源代码(例如,更新),developerConnection需要一个连接将提供写访问权."
但我无法找到<url>
标签的目的是什么?
特别是,<url>
对部署周期或部署周期有什么影响
mvn release:prepare
mvn release:perform
Run Code Online (Sandbox Code Playgroud)
命令?
谢谢,
我们从客户端获得了WSDL,要求我们在我们这边实施服务.
WSDL包含3个端口绑定,具有不同的名称和绑定,但相同<soap:adress>
- 如下所示:
<port name="Name1" binding="tns:Binding1">
<soap:address location="http://localhost/Service/ServicePort" />
</port>
<port name="Name2" binding="tns:Binding2">
<soap:address location="http://localhost/Service/ServicePort" />
</port>
<port name="Name3" binding="tns:Binding3">
<soap:address location="http://localhost/Service/ServicePort" />
</port>
Run Code Online (Sandbox Code Playgroud)
这样的WSDL是否可以用CXF实现?
当我运行wsdl2java时,CXF会生成3个java接口.
我首先尝试了一个类实现类
class MyServiceClass implements Interface1, Interface2, Interface3 {...}
Run Code Online (Sandbox Code Playgroud)
但是当我部署它并使用SoapUI检查时,出于某种原因,它只会暴露端口绑定Interface1
,并且似乎忽略了其他2个.为什么?
然后我试着实现3个不同的ServiceClasses(每个实现一个接口),然后在cxf-config.xml中放入多个<jaxws:endpoint>
具有相同address
属性的ServiceClasses
但是我得到了部署错误:
RuntimeException: Soap 1.1 endpoint already registered on address /Address
Run Code Online (Sandbox Code Playgroud)
任何提示,如何在CXF中实现这样的WSDL?可能吗?
我正在为java.util.Date和java.time.LocalDateTime之间的java-8转换编写一些测试代码,发现异常似乎发生在从正常时间到夏季的转换后的一小时内,当年是2038年或更高.
我只是想知道这是jdk8中的错误,还是我做错了什么?
注意:我使用的是Windows-7,64位jdk,所以不应该受到2038-unix bug的影响,这会产生更糟糕的影响.
这是我的演示代码:
package conversiontest;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
public class ConversionTest {
public static void main(String[] args) {
new ConversionTest().testDateConversion();
}
// Method under test:
public java.util.Date toJavaUtilDate(LocalDateTime localDateTime) {
return java.util.Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
}
// Test-code:
public void testDateConversion() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
LocalDate localDate = LocalDate.of(2016, 1, 1);
LocalTime localTime = LocalTime.of(3, 22, 22); // 03:22:22
while …
Run Code Online (Sandbox Code Playgroud) 我们有一个 Maven 多模块项目,我们希望逐步迁移到 gradle 项目。
对于初学者来说,我只想将几个子项目迁移到 gradle,但将它们作为子项目保留到父 maven-project 构建中。
有支持/推荐的方法吗?
指向插件的指针,或任何如何最好地做到这一点的建议表示赞赏。
有时,我需要键入字符列垂直对齐的文本,最简单的方法当然是使用字体家族“等宽字体”,“ Courier”等。
不过,我注意到的是,许多html实体代码字符(表情符号等)并不总是符合此固定字体宽度,但仍比普通字符宽,并且在同一行上“压入”后续字符尽管使用等宽,但仍在右侧。
例如:
♡
=♡---等宽处略宽。
♛
=♛---等宽空间太宽。
♥
=♥---这遵循我的Windows笔记本电脑上的等宽宽度,但是使用android / chrome浏览时,宽度太宽了。
是否有任何修补程序/变通办法可防止这种异常行为?
我在想,是否有办法“压缩”此类字符的宽度,以确保它们都与固定的字符宽度对齐,并且最好能在不同设备上统一工作?
还是其他可行的解决方案?
java ×3
java-8 ×3
maven ×2
spring ×2
spring-boot ×2
bash ×1
build.gradle ×1
css ×1
cxf ×1
cygwin ×1
gradle ×1
html ×1
jacoco ×1
java-stream ×1
java-time ×1
jax-ws ×1
lambda ×1
maven-scm ×1
monospace ×1
plugins ×1
pom.xml ×1
release ×1
signals ×1
soap ×1
sonarqube ×1
ssh ×1
tomcat ×1
wsdl ×1
wsdl2java ×1