为什么拥有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>');
<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.
什么管辖?这个行为在哪里定义?
在研究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中创建,抛出和捕获异常,是否有任何性能成本?
我计划将"异常驱动的开发"添加到一个更大的项目中.我想设计自己的异常并将它们包含在我的方法中,迫使开发人员捕获并做适当的工作.
例如,如果您有一种方法可以根据名称从数据库中获取用户.
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) 我在名为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)
两者之间有什么区别,哪一种更好?
澄清:这个问题不是关于访问修饰符
确认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) 前几天,Howard Lewis Ship发布了一篇名为"我在Hacker Bed and Breakfast学到的东西"的博客文章,其中一个要点是:
通过延迟初始化只分配一次的Java实例字段不必同步或易失(只要您可以跨线程接受竞争条件以分配给字段); 这是来自Rich Hickey
从表面上看,这似乎与关于线程内存变化可见性的公认智慧不一致,如果在Java Concurrency in Practice一书或Java语言规范中有所涉及,那么我就错过了它.但这是HLS在Brian Goetz出席的活动中从Rich Hickey那里获得的东西,所以看起来肯定会有一些东西.有人可以解释一下这句话背后的逻辑吗?
这是一个倡导的范例,应该在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的内部动态是什么?
当我运行我的流星项目时,出现了这个问题:
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) JFX中存在一个错误,通常在计算屏幕坐标时显示出来 https://bugs.openjdk.java.net/browse/JDK-8194727和 https://bugs.openjdk.java.net/browse/JDK-8190400
我已将问题跟踪到GeneralTransform3D的实现,这是javajfx运行时的一部分.
我已经向Oracle提交了一个错误报告,但在它被接受,修复并进入发布之前,我需要一种修复我的应用程序的方法.
在java 8中,我能够创建一个包含该类的固定版本的jar并将其安装在lib/ext文件夹中.这似乎有效,JFX实现使用了我自己的impl.
在java 10中,已删除扩展机制.将补丁jar添加到类路径不起作用,因为在类加载过程中为时已晚.
有没有办法在Java 10中覆盖/修补核心java类的实现?
请注意,我没有直接使用此类,它由框架使用
java ×7
static ×2
browser ×1
classloader ×1
concurrency ×1
cookies ×1
exception ×1
generics ×1
iframe ×1
inheritance ×1
java-10 ×1
java-8 ×1
lambda ×1
locking ×1
meteor ×1
overhead ×1
performance ×1
polymorphism ×1
predicate ×1
privacy ×1
ruby ×1
session ×1
wait ×1