小编Chr*_*ian的帖子

Java的位移操作员如何在幕后工作?

我没有学习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了面具.

但我确实有几个问题:

  1. 16是必须的类型byte吗?
  2. 结果是类型long.当上面的表达式运行时,-1转换为 - 有效 - 4x8bit块.Java如何知道它需要32位/位(一个IP地址'长度),而不是16或8,当应用两个补码时?(我猜这与long数据类型有关?)
  3. 为什么-1开始使用两个补码?(谷歌给你-0b1如果你问它是什么-1二进制文件.我首先想到它可能与溢出有关,但它不是,它是......?)
  4. 真的,编译器在运行代码时将其转换为什么数据类型,以使其全部工作?

更新:16在由一个方法运行时产生; 我只是在这里放一个常数作为例子.事后看来可能是一个坏主意......

java bit-manipulation bit twos-complement domain-masking

7
推荐指数
2
解决办法
265
查看次数

全球之前为黄瓜jvm挂钩?

红宝石版本的黄瓜支持全球之前的钩子.在任何和所有场景运行之前,放置在features/support目录中的*.rb文件显然只被调用一次.请参阅https://github.com/cucumber/cucumber/wiki/Hooks#global-hooks

这似乎是确保在任何测试运行之前填充数据库(在测试期间以只读方式使用)(因此处于已知状态)的好方法.

黄瓜的Java版本是否有类似的功能?

java cucumber cucumber-jvm

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

比较两个 JSONObject 结构(忽略它们的值)?

我正在寻找一个 JSON 配对库,它支持比较两个 JSON 对象的结构、忽略值、子顺序,并且 - 如果可能的话 - 可选地忽略响应中的其他元素;专门用于针对预期结构从 Web 服务返回的 JSON 进行单元测试。(我想将示例响应传递到断言方法中,并将其结构与实际响应进行比较 - 而不是必须为每个节点编写断言。获取不同的值不是问题,只要结构良好.)

是否有任何主要的 JSON 库支持这一点?(这个问题与在 Java 中比较两个 JSON 对象基本相同,但我希望断言忽略我的 JSON 结构中的值,这可能看起来像在Wikipedia 上找到的示例......)

java json unit-testing

6
推荐指数
1
解决办法
2367
查看次数

如何使用 PowerMockito 在具有私有构造函数的类中设置原始私有静态最终字段?

我正在尝试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 …

java reflection junit intellij-idea powermockito

6
推荐指数
1
解决办法
7719
查看次数

当运算符优先级表明不应该进行短路评估时,为什么这样做?

JavaScriptJava中,equals运算符(=====)的优先级高于OR运算符(||).然而,两种语言(JS,Java)都支持if语句中的短路:

当我们有if(true || anything()),anything()没有评估.

您还可以使用以下表达式:true || foo == getValue())- 例如,在输出语句中,例如console.log(...);,或在赋值中.

现在,根据运算符优先级,不应该发生短路,就优先级而言==== ==> ||.(换句话说,比较应该首先发生,getValue()应该调用,因为等式检查具有比OR比较更高的优先级.)但它确实如此.getValue()没有被调用(可以通过将输出语句放入其正文中来轻松检查).

为什么(当运算符优先说它不应该时,短路工作)?
还是我困惑的事情?

javascript java operator-precedence short-circuiting

6
推荐指数
1
解决办法
435
查看次数

用逻辑或(||)测试if语句的覆盖率-由于Java的短路,JaCoCo要我覆盖的第四个条件是什么?

这可能是一个相当简单的问题,但我很茫然。

我有一个if语句,如下所示:

if(TheEnum.A.equals(myEnum) || TheEnum.B.equals(myEnum))
Run Code Online (Sandbox Code Playgroud)

TheEnum可以ABC,... 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要我测试的第四个选项是什么?

java short-circuiting jacoco test-coverage sonarqube

5
推荐指数
1
解决办法
1494
查看次数

运行 mvn help: effective-settings 时未反映 MAVEN_OPTS 代理设置 - 如何阻止 mvn 使用系统定义的 SOCKS 代理?

我试图阻止 maven 3.3.9(在 Mac OS 10.12.3 和 Java 1.8.0_121 上运行)使用系统偏好设置中定义的 SOCKS 代理。

\n\n

我已经proxy从我的settings.xml.

\n\n

在我的 中.bash_profile,我设置了以下内容:

\n\n
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"\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我运行时mvn help:effective-settings,我得到以下信息:

\n\n
<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)

macos proxy socks maven maven-surefire-plugin

5
推荐指数
0
解决办法
6510
查看次数

您如何在 MAVEN_OPTS 环境变量中设置 -DargLine 系统属性?

我使用Maven和有系统属性的列表-DA=alpha-DB=beta -DS=random_stuff我想传承给单元测试当Maven运行,并且不能进入pom文件。

SurefireFailsafe插件基本上都说你可以通过-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"- 而不是我想要的。

我怎么可以做我想做的事,即请确保AB以及S在传递作为的一部分argLine,并通过argLine为部分通过MAVEN_OPTS

PS:我也厌倦了内部单引号(同样无法使用的结果: some_stuff')和未转义的内部双引号MAVEN_OPTS=" ... -DargLine="-DA=alpha ..."",在尝试获取源时导致错误.bash_profile),都没有成功......

shell command-line environment-variables system-properties maven

5
推荐指数
0
解决办法
1144
查看次数

是否有任何官方文档指定〜(波形符)解析为 Angular scss 导入路径中的node_modules/?

~当在 scss 导入路径中使用波形符 ( ) 时,它会node_modules/在 Angular 中扩展为。有没有任何官方文档说这是 Angular 或 webpack 的一个功能?

到目前为止,我在这个问题上发现的只是一些以前的 Angular 版本的错误报告,称它已损坏,还有一条评论说这是一个不应该依赖的实现细节

我希望执行ng eject并检查配置,但该命令不再可用。

如果有人可以向我指出一些官方文档,说明它是~的路径的简写node_modules/,或者指定该替换的源代码(例如配置文件),我将不胜感激。:)

基本上,我想弄清楚为什么它会起作用以及如何起作用。

import sass tilde-expansion webpack angular

5
推荐指数
1
解决办法
1583
查看次数

如何将 CSP 随机数注入 Angular 自动生成的脚本标签中?

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 文件是入口文件之一 - 但看起来它不是第一个,所以我怀疑在那里添加变量是否有效......?

nonce content-security-policy webpack angular

5
推荐指数
0
解决办法
9856
查看次数