小编Nat*_*hes的帖子

为什么浏览器允许在iframe的父(跨)域上设置cookie?

为什么拥有iframe到另一个域(b.com)的网站(a.com)的cookie被其他域文档查看和更改?

刚刚在广告中看到了这种情况,然后去做一个概念验证,它起作用了......这就是我所做的:首先,将a.com和b.com指向我的测试机IP.

然后我有:http://a.com/a.html(这将是我看到广告的网站)

<html><body><script src="http://b.com/b.js"></script>

http://b.com/b.js(这将是在网站中内嵌插入的广告脚本,指向广告客户公司域)

document.write('<iframe src="http://b.com/b.html"></iframe>');

http://b.com/b.html:

<html><body><script>document.cookie = "test=1;domain=.a.com;path=/;expires=Tue, 30 Oct 2012 02:47:11 UTC";</script></body></html>

在我运行之后,在firefox 14股票中,我在a.com中有一个cookie.

什么管辖?这个行为在哪里定义?

browser cookies iframe privacy user-tracking

16
推荐指数
1
解决办法
1107
查看次数

与lambda和Functional Interface一起使用时理解下限的问题

在研究Java8 Streams时,我遇到了以下代码片段:

Predicate<? super String> predicate = s -> s.startsWith("g");
Run Code Online (Sandbox Code Playgroud)

由于泛型参数是下限,我认为这不会编译.我看到它的方式,如果一个Object是String的超类型,那么传入一个Object类型应该会破坏它,因为Object没有startsWith()函数.但是,我很惊讶地看到它没有任何问题.

更进一步,当我调整谓词采取上限:

<? extends String>,
Run Code Online (Sandbox Code Playgroud)

它不会编译.

我以为我理解了上限和下限的含义,但显然,我错过了一些东西.任何人都可以帮助解释为什么下限与这个lambda一起工作?

java generics lambda predicate java-8

15
推荐指数
2
解决办法
850
查看次数

在Java中编写"异常驱动开发"的性能成本?

通过在Java中创建,抛出和捕获异常,是否有任何性能成本?

我计划将"异常驱动的开发"添加到一个更大的项目中.我想设计自己的异常并将它们包含在我的方法中,迫使开发人员捕获并做适当的工作.

例如,如果您有一种方法可以根据名称从数据库中获取用户.

public User getUser(String name);
Run Code Online (Sandbox Code Playgroud)

但是,用户可能为空,并且在使用用户的公共方法之前忘记检查此操作是很常见的.

User user = getUser("adam");

int age = user.getAge();
Run Code Online (Sandbox Code Playgroud)

这将导致NullPointerException和崩溃.但是,如果我在返回user-object之前进行了检查,如果它为null并抛出'UserIsNullException':

public User getUser(String name) throws UserIsNullException;
Run Code Online (Sandbox Code Playgroud)

我强迫实施者思考并采取行动:

try {

    User user = getUser("adam");

    int age = user.getAge();

}catch( UserIsNullException e) {

}
Run Code Online (Sandbox Code Playgroud)

它使代码更安全地发生意外崩溃并消除更多错误.假设该网站每小时有数百名访问者,这种设计模式几乎无处不在.

这种设计方法将如何影响性能?这些好处是否会超过成本,还是只是简单的编码?

谢谢你的帮助!

UPDATE!要清楚,我的注意力不是包装NullPointerException,正如我的例子所暗示的那样.目标是强制实施者编写一个try/catch,从而避免真正崩溃的头痛:

user == null

被遗忘了.问题涉及比较这两种设计模型:

int age;

try {

User user = getUser("adam");

age = user.getAge();

}catch( UserIsNullException e) {

age = 0;

}
Run Code Online (Sandbox Code Playgroud)

与:

int age;

User user = getUser("adam");

if( user != null ) { …
Run Code Online (Sandbox Code Playgroud)

java performance exception-handling exception overhead

14
推荐指数
6
解决办法
5969
查看次数

Ruby Nil和Zero

Ruby的NilClass实例中的to_i方法返回零的事实背后的科学是什么?返回或提出异常是不合逻辑的?

ruby

14
推荐指数
5
解决办法
8326
查看次数

如何通过setter方法修改私有静态变量

我在名为Example的类中有以下变量:

private static int number;
Run Code Online (Sandbox Code Playgroud)

如果我想使用外部类为变量赋值,我会这样做吗?

1)使示例静态的setter方法,所以我可以像这样访问它:

Example.setNumber(3);
Run Code Online (Sandbox Code Playgroud)

2)或使setter方法非静态,所以我创建一个Example对象来设置数字

Example e = new Example()
e.setNumber(3);
Run Code Online (Sandbox Code Playgroud)

两者之间有什么区别,哪一种更好?

java static

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

是"继承"正确的术语来解释超类的静态方法可以通过子类访问吗?

澄清:这个问题不是关于访问修饰符

确认Bm()和bm()语句都适用于以下代码:

class A {
  static void m() { //some code }
}

class B extends A {
}

class Example {
  public static void main (String [] args) {
    B.m(); // running A's m() static method
  }

  public void try() {
    B b = new B();
    b.m(); // running A's m() static method
  }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我们可以说"静态方法是继承的"吗?

如果"inherited"是正确的术语,如果我们向B类添加一个方法,我们将使用相同的静态类签名:

class A {
  static void m() { //some code }
}

class B extends A {
  static void m() { //some code …
Run Code Online (Sandbox Code Playgroud)

java polymorphism inheritance static static-methods

14
推荐指数
1
解决办法
1945
查看次数

没有同步或volatile关键字的延迟初始化

前几天,Howard Lewis Ship发布了一篇名为"我在Hacker Bed and Breakfast学到的东西"的博客文章,其中一个要点是:

通过延迟初始化只分配一次的Java实例字段不必同步或易失(只要您可以跨线程接受竞争条件以分配给字段); 这是来自Rich Hickey

从表面上看,这似乎与关于线程内存变化可见性的公认智慧不一致,如果在Java Concurrency in Practice一书或Java语言规范中有所涉及,那么我就错过了它.但这是HLS在Brian Goetz出席的活动中从Rich Hickey那里获得的东西,所以看起来肯定会有一些东西.有人可以解释一下这句话背后的逻辑吗?

java concurrency multithreading

14
推荐指数
3
解决办法
1770
查看次数

wait()如何在Java中获取Lock

这是一个倡导的范例,应该在synchronized块内的while循环内调用wait().

我的问题是waiting()线程如何获得锁定?

// Thread 1
    synchronized (mon) {
     while (!condition) 
          mon.wait();

    // Do something
    }

//Thread 2
    synchronized (mon) {//set condition appropriately
            mon.notify();
    }
Run Code Online (Sandbox Code Playgroud)

考虑线程1首先运行并开始等待条件.它释放锁并且线程2获得锁设置条件并通知线程1.现在线程1获取锁,检查条件并开始执行"做某事".

我的问题是当线程1被通知它从while条件开始执行时,具有Synchronized(mon)的代码行永远不再执行,那么线程1如何获得锁定?将锁定回到线程1的内部动态是什么?

java multithreading synchronization locking wait

14
推荐指数
2
解决办法
2290
查看次数

Meteor Session未定义

当我运行我的流星项目时,出现了这个问题:

ReferenceError: Session is not defined
at app/_components/talk/views/friends_list.coffee.js:1:16
at /home/xyz/web/edp/.meteor/local/build/server/server.js:298:12
at Array.forEach (native)
at Function._.each._.forEach (/home/xyz/.meteorite/meteors/meteor/
    meteor/9bb2b5447e845c4f483df5e9b42a2c1de5ab909b/
    dev_bundle/lib/node_modules/underscore/underscore.js:78:11)
Run Code Online (Sandbox Code Playgroud)

这是我的目录结构(我已经更改了文件的名称):

??? _components
?   ??? project_form
?   ?   ??? client
?   ?       ??? lib
?   ?       ?   ??? ...
?   ?       ??? project_info
?   ?       ?   ??? x1.coffee
?   ?       ?   ??? x2.html
?   ?       ?   ??? x3.coffee
?   ?       ?   ??? x4.html
?   ?       ??? views
?   ?           ??? x5.coffee
?   ?           ??? x6.html
?   ??? README.md
?   ??? talk
? …
Run Code Online (Sandbox Code Playgroud)

session meteor

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

修补或覆盖核心Java 10类的实现

JFX中存在一个错误,通常在计算屏幕坐标时显示出来 https://bugs.openjdk.java.net/browse/JDK-8194727https://bugs.openjdk.java.net/browse/JDK-8190400

我已将问题跟踪到GeneralTransform3D的实现,这是javajfx运行时的一部分.

我已经向Oracle提交了一个错误报告,但在它被接受,修复并进入发布之前,我需要一种修复我的应用程序的方法.

在java 8中,我能够创建一个包含该类的固定版本的jar并将其安装在lib/ext文件夹中.这似乎有效,JFX实现使用了我自己的impl.

在java 10中,已删除扩展机制.将补丁jar添加到类路径不起作用,因为在类加载过程中为时已晚.

有没有办法在Java 10中覆盖/修补核心java类的实现?

请注意,我没有直接使用此类,它由框架使用

java classloader java-10

14
推荐指数
1
解决办法
407
查看次数