小编Ano*_*ird的帖子

为什么javascript中的null + null = 0

当注意到在javascript中null+null等于时,我正在做一些有趣的测试0.有什么理由吗?

javascript null

10
推荐指数
1
解决办法
1328
查看次数

优化完全相同的iframe的负载

我需要显示几个完全相同的iframe。该iframe具有从#URI 读取的javascript,然后执行不同的请求,但是iframe的源代码和获取的资源完全相同。

1个iframe(包括javascript,样式表和图片)约为10 mb。现在,假设我需要在同一页面上最多显示10个iframe。那是最大100 mb的页面!

问题在于,iframe本身或它们正在加载的内容均未直接缓存。(至少不是在Google Chrome上,这是我的主要目标)。

这是我的代码的示例:

<iframe src="myiframe#1">
<iframe src="myiframe#2">
<iframe src="myiframe#3">
...
Run Code Online (Sandbox Code Playgroud)

每个iframe都加载相同的巨大javascript文件,并且针对我所拥有的iframe数量都触发了相同的请求:

在此处输入图片说明

我们可以清楚地看到,当第一个js文件下载完毕时,另一个(甚至还没有启动的连接!)没有使用缓存,而是重新下载了。每个文件都一样。

我尝试了什么?

  • 发送缓存头。目前正在回覆,cache-control: public, max-age=31536000但我甚至尝试过更严格的限制,例如Cache-Control: immutable

  • 首先仅加载一个iframe,然后在加载时加载所有其他iframe。即使第一个iframe已完全加载,它仍不使用缓存,并且应该将资源保存在缓存中!

  • 克隆iframe,但是,如RFC所述,它会完全重新加载iframe,从而再次触发请求。

但是,在我页面的第二次加载中,浏览器确实在缓存中获取资源,但这对我来说还不够。

我能想到的绝望(也是唯一的?)解决方案:

加载所有资源和iframe源代码,然后动态创建一个iframe元素并将所有内容注入其中。这是可能的,但是非常困难。另外,可能不是很友好的性能。

注意:iframe不在我的域中,但是我正在做一些反向代理操作,因此我可以控制iframe。这意味着我可以修改iframe的源代码,但是由于所有内容都被缩小了,所以这并非易事。

html javascript iframe google-chrome browser-cache

9
推荐指数
1
解决办法
155
查看次数

如何实现具有未知数量参数的方法?

我有1个接口和3个类.我希望这个类能够实现需要transform方法的接口.此方法必须存在,但每个类不能超过一个.我不知道这个类所采用的参数数量.

示例:

public interface A{
    public void transform(Object ... args);
}

public class B implements A{
    public void transform(String a){
        System.out.println(a);
    }
}

public class C implements A{
    public void transform(Integer a, Character b){
        System.out.println(a+b);
    }
}

// super generic case if possible with Objects + primitive
public class D implements A{
    public void transform(int a, String b){
        System.out.println(a+b);
    }
}
Run Code Online (Sandbox Code Playgroud)

这不起作用.但我希望你有这个主意.这样的东西在java中可能吗?我应该如何以通用方式调用它们?假设我有其他方法,例如:

void callTransf(A a, Object ... objs){
    Method m = a.getClass().getMethods()[0];
    m.invoke(a, objs)
}
Run Code Online (Sandbox Code Playgroud)

java interface variadic-functions java-8

8
推荐指数
2
解决办法
1639
查看次数

套接字python:recvfrom

我想知道 python 中的 socket.recvfrom 是否是阻塞函数?我在文档中找不到我的答案 如果不是,如果什么都没有收到,会返回什么?空字符串 '' ? 在另一种情况下,如果实际上它是阻塞的,我该怎么做才能将其作为解锁功能?我听说过settimeout但我不知道它是否真的是正确的解决方案。

python sockets recvfrom

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

使用 coffeescript 导入 ES6 模块

我正在尝试使用 CoffeeScript 导入 ES6 模块。

javascript工作代码如下:

import { MyModule } from 'my-module';

const mymod = new MyModule({
  some-options: '...'
});
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一个记录在这个问题上的解决方案:

{ MyModule } = require 'my-module'
mymod = new MyModule({
  some-options: '...'
})
Run Code Online (Sandbox Code Playgroud)

但这会返回以下错误:

TypeError: MyModule is not a constructor
Run Code Online (Sandbox Code Playgroud)

当使用此代码(非常接近原始代码)在此处查看有关它的文档时:

import { MyModule } from 'my-module';

mymod = new MyModule({
  some-options: '...'
});
Run Code Online (Sandbox Code Playgroud)

我也收到一个错误:

import {
       ^

SyntaxError: Unexpected token {
    at new Script (vm.js:74:7)
    at createScript (vm.js:246:10)
    ...
Run Code Online (Sandbox Code Playgroud)

如何正确导入这个模块?(coffee 2.3.1node …

javascript node.js coffeescript es6-class es6-modules

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

将Class <Object>转换为Class <Interface>

我有一个Dog实现接口IAnimal和类的类IDbSet<Dog> DogSet.

我有以下原型: MyMethod(IDbSet<IAnimal> AnimalSet)

在尝试时,MyMethod(DogSet);我在编译时遇到错误,说明无法明确IDbSet<Dog>转换为IDbSet<IAnimal>

如果我尝试使用它MyMethod((IDbSet<IAnimal>)DogSet),我在运行时有一个错误,因为它无法强制转换.

为什么我不能Dog实施它IAnimal

代码:

public interface IAnimal{
    public String Libelle { get; }
}

public partial class Dog : IAnimal{
    public String Libelle {
        get {
            return "Hello World";
        }
    }
}

// Can't convert from 'System.Data.Entity.IDbset<Models.Dog>' to 'System.Data.Entity.IDbSet<Interfaces.IAnimal>'
public abstract MyClass : MyAbstractClass{
    public MyClass(IModel dbContext) : base(dbContext, dbContext.DOG_IDBSET) { }
}

public abstract class MyAbstractClass{
    public …
Run Code Online (Sandbox Code Playgroud)

c# instance

2
推荐指数
1
解决办法
60
查看次数

git文件一次又一次被删除

我克隆了一个项目,使用Web UI可以看到有3个文件。

克隆后,我注意到我只有2个文件。我检查了分支,我在master上,应该有3个文件。

这是输出git status

On branch master
Your branch is up-to-date with 'origin/master'.

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        deleted:    con.js

no changes added to commit (use "git add" and/or "git commit -a")
Run Code Online (Sandbox Code Playgroud)

但是我没有删除任何文件!

git ls-files --deletedcon.js

好的,怪异的错误,然后我尝试还原克隆时被奇怪删除的文件,所以我输入git checkout con.js

输入后git checkout con.js,完整的文件将在终端中打印。我怀疑它会立即被再次删除。如果我再键入git ls-files --deletedcon.js它仍然存在并且无法恢复!

我可能做错了什么?

git github

2
推荐指数
1
解决办法
39
查看次数