我需要一种方法,我可以将CSS文件范围扩展到页面的某个部分.理论上,这个例子应该做我需要的:
<html>
<head>
</head>
<body>
<div>
<style scope>
@import url("style1.css");
</style>
<div class="testText">Test with Style 1</div>
</div>
<div>
<style scope>
@import url("style2.css");
</style>
<div class="testText">Test with Style 2</div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但是,我发现scope元素目前仅在某些浏览器中可用(主要是Firefox 21+).所以,我正在寻找一个懒惰的出路或问题.我需要将一些不同风格的内容集成到一个站点中.我们尝试加载两个css文件集,但是在两个样式表中都有一些样式名称,因此在一个文件集和相应的html内容中重命名样式名称会有很多工作,特别是因为你不能只使用Eclipse重构...... :)
是否有任何其他解决方案可以提供广泛兼容的结果?
问候
假设我在Eclips项目中有一组源文件夹:
MyProject
base/src/impl
base/src/test
common/src/api
common/src/test
common/src/junit
Run Code Online (Sandbox Code Playgroud)
请注意,这些不是包,它们是源文件夹,每个包内都有一个包层次结构,它们可以是相同的.假设我在base/src/impl文件夹中有一个类com.foo.myproject.DoSomething,我可能在base/src/Test文件夹中有一个名为com.foo.myproject.DoSomethingTest的Test,也许是com.foo .myproject.DoSomethingUnitTest在同一包层次结构下的另一个源文件夹中.
我需要做的是运行某些源文件夹下的所有测试.也许所有这些都在junit文件夹中,但没有来自测试文件夹.
这可以通过带有junit搜索模式的Ant工作得很好,例如:
<include name="**/src/junit" />
Run Code Online (Sandbox Code Playgroud)
但是,我希望能够从Eclipse获得完全相同的运行配置,而无需调用Ant.由于已经有很多项目,包和数千个测试类,我正在寻找一种"懒惰"的方式来完成这项工作,这意味着,无需更改项目结构或必须保留复杂的测试套件.
我尝试过的一种方法是使用org.springframework.core.io.support.PathMatchingResourcePatternResolverClasspathSuite 使用的方法,但是在classpath中查找资源总是在一个单独的类位置查看合并的源文件夹,所以我无法在我打算这样做的级别进行过滤.
我正在寻找两种方法:
1. Filter using some TestSuite
2. Filter using some JUNIT Runner Plugin in Eclipse (is there any that can do what I need?)
Run Code Online (Sandbox Code Playgroud)
谢谢!
我需要声明一个实例Map.class,但Map是键入的......所以我需要这样的东西:
Class <Map<String, String>> clazz = Map.class;
Run Code Online (Sandbox Code Playgroud)
此行导致编译错误.表达这个的干净方式是什么?
所以,
我和JBehave有一种奇怪的行为.我有一个场景,我需要一个StepDef结构,如下所示:
Given some precondition
When something happens
And something else happens
And yet something else happens
And still one more thing happens
And one more
Then I expect some result
Run Code Online (Sandbox Code Playgroud)
据我所知,这是Scenario Stepdefinition的有效语法.然而,JBehave将第二个"And"中的所有内容标记为"待定".如果我改变"And"语句的顺序,它总是运行第一个"And"并从第三个开始标记"Pending".如果我这样写它就可以了:
Given some precondition
When something happens
When something else happens
When yet something else happens
When still one more thing happens
When one more
Then I expect some result
Run Code Online (Sandbox Code Playgroud)
好像我的配置限制了可以解释的连续"And"语句的数量.但是我似乎没有发现问题.我在这做错了什么?
我有以下功能:
private Person findMax(List<Person> persons,
Function<Person, ? extends Comparable> compare) {
return persons.stream().max(Comparator.comparing(compare)).get();
}
Run Code Online (Sandbox Code Playgroud)
我可以称之为:
Person result = findMax(people, person -> person.getAge());
Run Code Online (Sandbox Code Playgroud)
要么:
Person result = findMax(people, person -> person.getName());
Run Code Online (Sandbox Code Playgroud)
只要Person的属性是Comparable,它就适用,在这种情况下适用于Integer和String.但是,此架构会生成警告,这是恶意代码的气味:
可比较是原始类型.应参数化对泛型类型Comparable的引用
但是,我无法将比较器修复为任何东西,因为它取决于我作为参数传递的函数...
我尝试像这样修改方法:
private <T extends Comparable<T>> Person findMax(List<Person> persons,
Function<Person, T> compare) {
return persons.stream().max(Comparator.comparing(compare)).get();
}
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试使用JUnit和Hamcrest测试该函数时:
这一行编译(使用旧的JUnit Assert模式):
assertEquals(silvester, findMax(input, person -> person.getName()));
Run Code Online (Sandbox Code Playgroud)
但是,这个不编译(类型不匹配:无法从Integer转换为Comparable>):
assertThat(findMax(input, person -> person.getAge()), equalTo(arnold));
Run Code Online (Sandbox Code Playgroud)
但是,如果我提取断言的第一个参数,它构建良好:
Person result = findMax(input, person -> person.getAge());
assertThat(result, equalTo(arnold));
Run Code Online (Sandbox Code Playgroud)
这种表示法也很好:
assertThat(findMax(input, Person::getAge), equalTo(arnold));
Run Code Online (Sandbox Code Playgroud)
这是Hamcrest,Java8还是Eclipse中的错误?或者我错过了什么?
我遇到了一个问题,我需要运行一个Query,它应该从主表中获取一些行,并且如果主表的键存在于子表(关系一对多)中,则有一个指示符.
查询可能是这样的:
select a.index, (select count(1) from second_table b where a.index = b.index)
from first_table a;
Run Code Online (Sandbox Code Playgroud)
这样我就可以得到我想要的结果(0 =在second_table中没有依赖记录,否则有),但我正在为从数据库中获取的每条记录运行一个子查询.我需要为至少三个类似的表得到这样一个指标,主要查询已经是至少两个表之间的一些内部联接......
我的问题是,是否有一些非常有效的方法来处理这个问题.我曾想过将记录保存在新列"first_table"中,但dbadmin不允许触发器并通过代码跟踪它是太冒险了.
解决这个问题的好方法是什么?
此查询的应用程序将用于两件事:
我刚发现的另一个选择:
select a.index, b.index
from first_table a
left join (select distinct(index) as index from second_table) b on a.index = b.index
Run Code Online (Sandbox Code Playgroud)
这样,如果b.index不存在,我将得到null(显示最终可以调整,我在这里关注查询性能).
这个问题的最终目标是为这种情况找到合适的设计方法.它经常发生,真正的应用程序是一个POS系统,以显示所有客户端,并在列表中有一个图标作为指示客户端已打开订单.
我几天来一直在努力解决这个问题,我似乎无法找到有用的答案......
我有一些软件,每次我想与代理服务器一起使用时会导致SSLHandshakeExceptions.我已经能够使用以下代码复制该问题(这比实际应用程序简单):
HttpsURLConnection con = (HttpsURLConnection) new URL("https://www.google.com").openConnection();
try {
con.connect();
} catch(Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
如果我运行此代码连接到WiFi热点(不需要代理服务器),我得到连接,一切都按预期工作:
java -cp . SampleJavaURLTest
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用代理服务器运行相同的Java命令:
java -cp . -DproxySet=true -DproxyHost={myProxyHost} -DproxyPort={myProxyPort} SampleJavaURLTest
Run Code Online (Sandbox Code Playgroud)
我得到了这个例外(e.printStackTrace()在代码snipplet中打印出来,使行号无关:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1731)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:241)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:235)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1206)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:136)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:529)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:925)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1170)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1197)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1181)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:434)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:166)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:133)
at …Run Code Online (Sandbox Code Playgroud) 所以,让我们假设我有以下列表:
List<Foo> myList = getListFromSomePlace();
int frequency = Collections.frequency(myList, someFoo);
Run Code Online (Sandbox Code Playgroud)
这将计算所有someFoo匹配元素.
但是,如果我有一个更"复杂"的版本:
List<Foo> myList = getListFromSomePlace();
int frequency = /* get number of Elements in the List whose getInternalFoo() match a certain value */
Run Code Online (Sandbox Code Playgroud)
一种方法是覆盖equalsFoo类中的方法,但我真的想避免在Foo类中放置自定义行为,特别是因为我可能希望根据Foo类中的不同属性获取频率,而我只能有一个版本的overriden equals方法.
像Collections.sort这样的函数允许我传递一个自定义Comparator,它将完全按照我的需要进行操作,但Collections.frequency不提供此功能.
使用Java8,我会使用流和一些Lambda表达式来解决这个问题,但我想看看是否有一个可以与Java 7一起使用的简单解决方案.我正在寻找一些不涉及编码自定义频率的东西方法本身,但使用一些现有的API.有东西吗?
如果我有以下列表:
List<String> list = Arrays.asList("hello", "world", "hello");
Run Code Online (Sandbox Code Playgroud)
我应用以下(Java8):
list.stream().distinct().collect(Collectors.toString());
Run Code Online (Sandbox Code Playgroud)
然后我会得到一个包含“hello”和“world”的列表。
但是,就我而言,我有一个类型列表(来自外部 api),我想在其中“绕过”equals 方法,最好使用比较器,因为它没有涵盖我需要的内容。
假设这个类看起来像这样:
public class Point {
float x;
float y;
//getters and setters omitted
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我希望将涵盖特定标准的两点定义为相等,例如 (30, 20) 和 (30.0001, 19.999)。
自定义比较器可以做到这一点,但我发现没有 API 可以执行 Java8 Stream 中的 distinct() 功能,而是使用比较器(或类似模式)。
有什么想法吗?我知道我可以编写这样的函数,但我更喜欢使用现有 apis 的优雅方式......我对外部库没有限制(番石榴、apache-commons 等,如果他们有一种舒适的方式,欢迎使用)我需要的)。
我有一个我们已实现的树的问题,这是一个示例:
public interface TreeNode {
TreeNode getParent();
void setParent(TreeNode parent);
List<TreeNode> getChildren();
void setChildren(List<TreeNode> children);
}
Run Code Online (Sandbox Code Playgroud)
所以,到现在为止这很容易,但是我们有一些Tree的变体,所以我们有一些这样的接口:
public interface TreeNodeWithX extends TreeNode {
String getX();
void setX(String x);
}
public interface TreeNodeWithY extends TreeNode {
Boolean getY();
void setY(Boolean y);
}
Run Code Online (Sandbox Code Playgroud)
因此,我需要一个TreeNodeWithX对象(是的,它的实现)从其getParent方法返回一个TreeNodeWithX对象(对于TreeNode接口中的其他方法也是如此).
来自TreeNodeWithY的相同行为,getParent()应返回TreeNodeWithY.
我尝试过一些泛型方法,例如:
public interface TreeNode<T extends TreeNode> {
T getParent();
void setParent(T parent);
List<T> getChildren();
void setChildren(List<T> children);
}
Run Code Online (Sandbox Code Playgroud)
但是,在实施方法的某些时候,我总是遇到麻烦.我的问题是,我是否使用我的通用界面正确的方式或我在这里做错了什么?
这种递归泛型引用并没有真正帮助我...