小编maa*_*nus的帖子

这个CORS处理程序安全吗?

我写了这个简单的方法来处理我的简单服务器代理中的CORS.

private void handleCors(HttpServletRequest req, HttpServletResponse resp) {
  final String origin = req.getHeader("Origin");
  if (Strings.isNullOrEmpty(origin)) {
    return;
  }
  if (!origin.startsWith("http://localhost:")) {
    return;
  }
  resp.setHeader("Access-Control-Allow-Origin", origin);
  resp.setHeader("Access-Control-Allow-Credentials", "true");
  resp.setHeader("Access-Control-Expose-Headers", "Authorization");
  resp.setHeader("Access-Control-Allow-Headers", "Authorization, Content-Type");
}
Run Code Online (Sandbox Code Playgroud)

实际应用程序不需要它,它仅在手动测试时使用(带ionic serve).我想,这是安全的,因为除了原点是localhost之外什么都不做,但比抱歉更安全.

此外,findbugs抱怨响应分裂漏洞.我应该简单地使用URLEncoder.html#encode还是有更多内容吗?

一般去掉空格或包含空格的情况下做的没有加入CORS标头?

java cors

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

禁用单个连接的SSLHandshakeException

我正在寻找类似于这个答案的解决方案,但更安全.我想禁用证书验证,但仅针对单个请求(这是我所需要的).所以它应该做以下一个或多个

  • 一个请求完成后返回安全状态
  • 仅禁用给定URL的验证
  • (也许)仅针对一个线程使用不安全的设置

附录

当我要求更安全的解决方案时,我真的想知道这个问题(得分-2)与原始问题(得分+46)相比有什么问题.有人能解释一下吗

解释为什么我需要这个:有一个有效的服务器证书,通常,它被使用.但我需要发送一个请求localhost,它也必须在开发人员计算机上工作.必须是https因为没有http支持.

java security ssl https

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

如何暂时禁用EGit?

git repack从命令行执行操作时,包会被锁定并且无法删除,从而使回购邮件大小加倍.罪魁祸首很可能是EGit保持文件打开(这在Windows中很糟糕).退出Eclipse是我所知道的唯一解决方法.我发现了这篇文章,但EGit没有这样的选择.还有其他想法吗?

java eclipse egit

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

为什么整数div和mod向零舍入?

不同于C,在Java是的结果x/yx%y良好定义的甚至为负的操作数.令人惊讶的是,它的定义是向零舍入,而不是向下舍入(即向负无穷大).有没有人利用这个定义?

在大多数情况下,我只是不在乎,但有时我不得不解决这个问题,例如,在使用modulo计算索引时array.length.

这不是咆哮,如果有这个定义的用途,我真的很感兴趣.

java integer-division

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

ConcurrentHashMap.putIfAbsent的性能

在54:15 关于Effective Java的讨论中,Joshua Bloch建议get之前使用它putIfAbsent来提高性能和并发性.这引出了一个问题,为什么这个优化已经没有像

public V BETTER_putIfAbsent(K key, V value) {
    V result = get(key);
    if (result!=null) return result;
    return ORIGINAL_putIfAbsent(key, value);
}
Run Code Online (Sandbox Code Playgroud)

java concurrenthashmap

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

Java逆模2**64

鉴于奇怪long x,我正在寻找long y他们的产品模数2**64(即,使用正常的溢出算术)等于1.明确我的意思:这可以用几千年的方式计算:

for (long y=1; ; y+=2) {
    if (x*y == 1) return y;
}
Run Code Online (Sandbox Code Playgroud)

我知道这可以使用扩展的欧几里德算法快速解决,但它需要能够表示所有涉及的数字(范围最大2**64,所以即使是无符号算术也无济于事).使用BigInteger肯定会有所帮助,但我想知道是否有更简单的方法,可能使用为正长度实现的扩展欧几里德算法.

java inverse modulo

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

android中的标题/操作栏ID?

我想尝试这种有趣的标题栏着色,但它对我不起作用,因为

getWindow().findViewById(android.R.id.title);
Run Code Online (Sandbox Code Playgroud)

返回空值。所以我用 Hierarchy Viewer 查看了它,发现调用了视图id/action_bar。但没有R.id.action_bar(自动完成不提供它,也没有这样的东西R.java)。

所以现在我双重困惑:

  • 现在有点过时了吗android.R.id.title(我在模拟器中使用版本 16)?
  • 从哪里来id/action_bar
  • 关于兼容性的推荐和简单做法是什么?

我应该使用 ActionBarSherlock 吗?我本来只是想改变标题栏的颜色......而不是胡闹很多。

android titlebar identifier

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

为什么这种方法没有得到优化?

Java方法用于基准测试以模拟慢速计算:

static int slowItDown() {
    int result = 0;
    for (int i = 1; i <= 1000; i++) {
        result += i;
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

这是恕我直言,这是一个非常糟糕的主意,因为它的身体可以被取代return 500500.这似乎永远不会发生1 ; 可能是因为这样的优化与Jon Skeet所说的实际代码无关.

有趣的是,一个稍微简单的方法result += 1;得到了完全优化(卡尺报告0.460543 ns).

但即使我们同意优化离开返回常量结果的方法对于实际代码也没用,但仍然存在循环展开,这可能会导致像

static int slowItDown() {
    int result = 0;
    for (int i = 1; i <= 1000; i += 2) {
        result += 2 * i + 1;
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题仍然存在:为什么这里没有进行优化?

1与我最初写的相反; 我必须看到一些不存在的东西.

java compiler-optimization guava

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

如何确定给定div中的某些内容是否具有焦点?

使用angularjs,我正在显示这样的2级列表

- first main item
  - first subitem of the first main item
  - second subitem of the first main item
  - AN EMPTY ITEM AS PLACEHOLDER TO ENTER THE NEXT SUBITEM
- second main item
  - first subitem of the second main item
  - second subitem of the second main item
  - AN EMPTY ITEM AS PLACEHOLDER TO ENTER THE NEXT SUBITEM
Run Code Online (Sandbox Code Playgroud)

为了节省空间,我只想在相应的任何东西div都有焦点的情况下展示PLACEHOLDER ,这样只有一个这样的占位符.我知道有ngFocus,但我更喜欢比创建大量事件处理程序更简单的东西.也许是这样的:

<div ng-focus-model="mainItem.hasFocus" ng-repeat="mainItem in list">
   ... main item line
   ... all …
Run Code Online (Sandbox Code Playgroud)

focus angularjs

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

可靠地跟踪Hibernate所做的更改

我正在使用PostUpdateEventListener注册的via

registry.appendListeners(EventType.POST_COMMIT_UPDATE, listener)
Run Code Online (Sandbox Code Playgroud)

以及其他一些听众,以便跟踪Hibernate所做的更改.这很好用,但是,我看到一个问题:

比方说,对于跟踪一些amount通过id,我简单地执行

 amountByIdConcurrentMap.put(id, amount);
Run Code Online (Sandbox Code Playgroud)

在每一个POST_COMMIT_UPDATE(让我们忽略其他操作).问题是这个调用在提交后的某个时间发生.因此,两个提交一个接一个地写一个相同的实体,我可以以错误的顺序接收事件,最终amount存储旧的.

  • 这真的有可能还是以某种方式同步操作?
  • 有没有办法如何预防或至少检测到这种情况?

java concurrency hibernate transactions

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