我没有学习IT,而且最近才发现了位移和两个补码的应用.那么,您能否在解释中使用简单的英语,并假设我几乎不了解任何有关IP地址,位操作和Java数据类型的内容?
今天,我发现了以下一段代码(缩写):
long m = (-1) << (byte) 16;
Run Code Online (Sandbox Code Playgroud)
现在,这是用于IP子网掩码.我知道我需要从4个8位的块(即4个字节)开始,并且所有位都必须"打开":11111111 11111111 1111111 1111111接下来,零从右侧移入,在这种情况下是16位的值; 所以我们得到11111111 11111111 00000000 0000000了面具.
但我确实有几个问题:
16是必须的类型byte吗?long.当上面的表达式运行时,-1转换为 - 有效 - 4x8bit块.Java如何知道它需要32位/位(一个IP地址'长度),而不是16或8,当应用两个补码时?(我猜这与long数据类型有关?)-1开始使用两个补码?(谷歌给你-0b1如果你问它是什么-1二进制文件.我首先想到它可能与溢出有关,但它不是,它是......?)更新:该16在由一个方法运行时产生; 我只是在这里放一个常数作为例子.事后看来可能是一个坏主意......
红宝石版本的黄瓜支持全球之前的钩子.在任何和所有场景运行之前,放置在features/support目录中的*.rb文件显然只被调用一次.请参阅https://github.com/cucumber/cucumber/wiki/Hooks#global-hooks
这似乎是确保在任何测试运行之前填充数据库(在测试期间以只读方式使用)(因此处于已知状态)的好方法.
黄瓜的Java版本是否有类似的功能?
我正在寻找一个 JSON 配对库,它支持比较两个 JSON 对象的结构、忽略值、子顺序,并且 - 如果可能的话 - 可选地忽略响应中的其他元素;专门用于针对预期结构从 Web 服务返回的 JSON 进行单元测试。(我想将示例响应传递到断言方法中,并将其结构与实际响应进行比较 - 而不是必须为每个节点编写断言。获取不同的值不是问题,只要结构良好.)
是否有任何主要的 JSON 库支持这一点?(这个问题与在 Java 中比较两个 JSON 对象基本相同,但我希望断言忽略我的 JSON 结构中的值,这可能看起来像在Wikipedia 上找到的示例......)
我正在尝试private static final在带有private构造函数的类中为 JUnit 测试设置一个字段。当我将代码归结为它的基础知识时,我得到以下信息:
public class Foo {
private static final boolean FLAG = false;
private Foo() { /* don't call me */ }
public static boolean get() { return FLAG; }
}
Run Code Online (Sandbox Code Playgroud)
我的测试如下所示:
@RunWith(PowerMockRunner.class)
@PrepareEverythingForTest // Whitebox fails without this line
public class FooTest {
@Test
public void testGet() {
Whitebox.setInternalState(Foo.class, "FLAG", true);
assertTrue(Foo.get());
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的 POM 文件的摘录:
<junit.version>4.11</junit.version>
<powermock.version>1.5.4</powermock.version>
<mockito.version>1.9.5</mockito.version>
Run Code Online (Sandbox Code Playgroud)
当我在 上设置断点时return FLAG;,我可以清楚地看到在 IntelliJ 的调试器中FLAG设置为true。然而测试失败并显示AssertionError …
在JavaScript和Java中,equals运算符(==或===)的优先级高于OR运算符(||).然而,两种语言(JS,Java)都支持if语句中的短路:
当我们有if(true || anything()),anything()没有评估.
您还可以使用以下表达式:true || foo == getValue())- 例如,在输出语句中,例如console.log(...);,或在赋值中.
现在,根据运算符优先级,不应该发生短路,就优先级而言==== ==> ||.(换句话说,比较应该首先发生,getValue()应该调用,因为等式检查具有比OR比较更高的优先级.)但它确实如此.getValue()没有被调用(可以通过将输出语句放入其正文中来轻松检查).
为什么(当运算符优先说它不应该时,短路工作)?
还是我困惑的事情?
这可能是一个相当简单的问题,但我很茫然。
我有一个if语句,如下所示:
if(TheEnum.A.equals(myEnum) || TheEnum.B.equals(myEnum))
Run Code Online (Sandbox Code Playgroud)
TheEnum可以A,B,C,... G(不止4个选项)。
JaCoCo(SONAR)告诉我这里有四个条件。那些是什么?从本质上讲,我不是可以测试的整套设备
if(true || not_evaluated) => true
if(false || true) => true
if(false || false) => false
Run Code Online (Sandbox Code Playgroud)
我敢肯定我不能专门测试
if(true || true)或
if(true || false),因为短路评估不会那么远...?
如果是这样,JaCoCo / Sonar要我测试的第四个选项是什么?
我试图阻止 maven 3.3.9(在 Mac OS 10.12.3 和 Java 1.8.0_121 上运行)使用系统偏好设置中定义的 SOCKS 代理。
\n\n我已经proxy从我的settings.xml.
在我的 中.bash_profile,我设置了以下内容:
export MAVEN_OPTS="\n-Dhttp.proxyHost=proxy.example.com -Dhttp.proxyPort=80 \\\n-Dhttps.proxyHost=proxy.example.com -Dhttps.proxyPort=80 \\\n-Dhttp.nonProxyHosts=localhost|foo.example.com|*.bar.example.com|*.baz.example.com \\\n-Dhttps.nonProxyHosts=localhost|foo.example.com|*.bar.example.com|*.baz.example.com \\\n-DsocksProxyHost -DsocksProxyPort"\nRun Code Online (Sandbox Code Playgroud)\n\n当我运行时mvn help:effective-settings,我得到以下信息:
<settings xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">\n <localRepository xmlns="http://maven.apache.org/SETTINGS/1.1.0">/java/.m2/repository</localRepository>\n <servers xmlns="http://maven.apache.org/SETTINGS/1.1.0">\n <!-- ... -->\n </servers>\n <mirrors xmlns="http://maven.apache.org/SETTINGS/1.1.0">\n <mirror>\n <mirrorOf>*</mirrorOf>\n <url>http://nexus.example.com:nnnn/...</url>\n <id>nexus</id>\n </mirror>\n </mirrors>\n <profiles xmlns="http://maven.apache.org/SETTINGS/1.1.0">\n <profile>\n <repositories>\n <repository>\n <releases />\n <snapshots />\n <id>central</id>\n <url>http://central</url>\n </repository>\n </repositories>\n <pluginRepositories>\n <pluginRepository>\n <releases />\n <snapshots />\n <id>central</id>\n …Run Code Online (Sandbox Code Playgroud) 我使用Maven和有系统属性的列表-DA=alpha,-DB=beta -DS=random_stuff我想传承给单元测试当Maven运行,并且不能进入pom文件。
Surefire和Failsafe插件基本上都说你可以通过-DargLine系统属性将值传递给测试。
通常它定义在pom.xml,例如
<argLine>-DA=alpha -DB=beta -DS=random_stuff</argLine>
Run Code Online (Sandbox Code Playgroud)
但是我也看到-DargLine=...了从命令行传入的示例。
我相信我需要在要传入的系统属性周围加上引号 via argLine,因为它们是空格分隔的:
-DargLine="-DA=alpha -DB=beta -DS=random_stuff"
Run Code Online (Sandbox Code Playgroud)
现在我想通过MAVEN_OPTS环境变量传递它们(它还“携带”其他系统属性,而不仅仅是argLine)。到目前为止我所拥有的是:
MAVEN_OPTS="-Dxyz=abc ... -DargLine=\"-DA=alpha -DB=beta -DS=random_stuff\""
Run Code Online (Sandbox Code Playgroud)
换句话说,我逃脱了argLine引号。不幸的是,结束引号现在被视为-DS's value 的一部分,即S现在被替换为random_stuff"- 而不是我想要的。
我怎么可以做我想做的事,即请确保A,B以及S在传递作为的一部分argLine,并通过argLine为部分通过MAVEN_OPTS?
PS:我也厌倦了内部单引号(同样无法使用的结果: some_stuff')和未转义的内部双引号(MAVEN_OPTS=" ... -DargLine="-DA=alpha ..."",在尝试获取源时导致错误.bash_profile),都没有成功......
shell command-line environment-variables system-properties maven
~当在 scss 导入路径中使用波形符 ( ) 时,它会node_modules/在 Angular 中扩展为。有没有任何官方文档说这是 Angular 或 webpack 的一个功能?
到目前为止,我在这个问题上发现的只是一些以前的 Angular 版本的错误报告,称它已损坏,还有一条评论说这是一个不应该依赖的实现细节。
我希望执行ng eject并检查配置,但该命令不再可用。
如果有人可以向我指出一些官方文档,说明它是~的路径的简写node_modules/,或者指定该替换的源代码(例如配置文件),我将不胜感激。:)
基本上,我想弄清楚为什么它会起作用以及如何起作用。
Angular文档提到了 CSP,Google 的安全工程师建议不要使用白名单。我还没有弄清楚如何将随机数注入到 Angular 注入到 index.html 的脚本标签中(以“引导”本身)。我想这与 Webpack 有关,但ng eject我相信该命令不久前已从 cli 中删除,并且我无法找到有关此的教程。有人可以帮我开始指点吗?
Webpack文档提到了一个变量
__webpack_nonce__ = 'let-nonce-string-be-injected-by-server-here';
Run Code Online (Sandbox Code Playgroud)
需要在入口文件中进行定义(不是配置 - 所以@angular-builders/custom-webpack npm 模块可能不会有帮助?),但我不清楚 Webpack 的入口文件在 Angular 的上下文中是什么...?
PS:从这篇博文来看,polyfill 文件是入口文件之一 - 但看起来它不是第一个,所以我怀疑在那里添加变量是否有效......?
java ×6
angular ×2
maven ×2
webpack ×2
bit ×1
command-line ×1
cucumber ×1
cucumber-jvm ×1
import ×1
jacoco ×1
javascript ×1
json ×1
junit ×1
macos ×1
nonce ×1
powermockito ×1
proxy ×1
reflection ×1
sass ×1
shell ×1
socks ×1
sonarqube ×1
unit-testing ×1