小编Dav*_*nco的帖子

如何规避同源政策

同样的原产地政策

我想制作一个关于HTML/JS 同源政策的社区维基,希望能帮助任何人搜索这个主题.这是SO上搜索次数最多的主题之一,没有统一的wiki,所以我去:)

相同的源策略可防止从一个源加载的文档或脚本从另一个源获取或设置文档的属性.此政策可以追溯到Netscape Navigator 2.0.

您最喜欢采用同源政策的方式有哪些?

请保持示例详细,最好还链接您的来源.

javascript ajax same-origin-policy

150
推荐指数
6
解决办法
59万
查看次数

抽象方法和纯虚函数是一回事吗?

据我所知,抽象方法和纯虚函数都没有提供任何功能......那么我们可以说它们都是同一个东西吗?

此外,假设一个类(不一定声明为抽象)包含许多实现的方法(不是抽象或虚拟),但包含纯虚函数.这个类是抽象的吗?

c++ virtual function

52
推荐指数
4
解决办法
4万
查看次数

在Linux上安装Java EE SDK时出现问题

我在我的VPS上安装了Java 6 JRE就好了,但是我甚至无法安装EE SDK.

root@vps [/usr/java]# java -version
java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行时java_ee_sdk-6-unix.sh:

./  ../  java_ee_sdk-6-unix.sh*  jre1.6.0_18/  jre.bin*
root@vps [/usr/java]# ./java_ee_sdk-6-unix.sh

Could not locate a suitable jar utility.
Please ensure that you have Java 6 or newer installed on your system
and accessible in your PATH or by setting JAVA_HOME
Run Code Online (Sandbox Code Playgroud)

但问题是我正确设置了我的环境变量:

root@vps [/usr/java]# echo $PATH
/usr/java/jre1.6.0_18:/usr/java/jre1.6.0_18/bin:/usr/java/jre1.6.0_18/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin
root@vps [/usr/java]# export -p | grep JAVA_HOME
declare -x …
Run Code Online (Sandbox Code Playgroud)

java linux install sh

19
推荐指数
2
解决办法
4万
查看次数

复合模式/实体系统和传统OOP

我正在开发一个用Java编写的小游戏(但这个问题与语言无关).因为我想探索各种设计模式,所以我对复合模式 /实体系统(我最初在这里这里读到)作为典型的深层次继承的替代方案.

现在,在写了几千行代码后,我有点困惑.我认为理解模式,我喜欢使用它.我认为它非常酷,而且星巴克也是如此,但它觉得它提供的好处有点短暂而且(最让我烦恼的是)在很大程度上取决于你的粒度.

这是上面第二篇文章的图片: 在此输入图像描述

我喜欢对象(游戏实体或任何你想要称之为的东西)的方式有一组最小的组件,推断的想法是你可以编写类似于下面的代码:

BaseEntity Alien = new BaseEntity();
BaseEntity Player = new BaseEntity();

Alien.addComponent(new Position(), new Movement(), new Render(), new Script(), new Target());
Player.addComponent(new Position(), new Movement(), new Render(), new Script(), new Physics());
Run Code Online (Sandbox Code Playgroud)

..这将是非常好的...但在现实中,代码最终看起来像

BaseEntity Alien = new BaseEntity();
BaseEntity Player = new BaseEntity();

Alien.addComponent(new Position(), new AlienAIMovement(), new RenderAlien(), new ScriptAlien(), new Target());
Player.addComponent(new Position(), new KeyboardInputMovement(), new RenderPlayer(), new ScriptPlayer(), new PhysicsPlayer());
Run Code Online (Sandbox Code Playgroud)

似乎我最终得到了一些由较少组件组成的非常专业的组件.通常,我必须制作一些具有其他组件依赖性的组件.毕竟,如果你没有位置,你怎么渲染?不仅如此,你最终渲染玩家与外星人和手榴弹的方式可能根本不同.除非你制作一个非常大的组件(在这种情况下......为什么你还在使用复合模式?),你不能拥有一个指示所有三个组件的组件.

给出另一个真实的例子.我的游戏中有角色可以装备各种装备.当装备一件装备时,会改变一些统计数据以及视觉上显示的内容.这是我的代码现在的样子:

billy.addControllers(new Movement(), new Position(), new CharacterAnimationRender(), new …
Run Code Online (Sandbox Code Playgroud)

java language-agnostic design-patterns composite

18
推荐指数
1
解决办法
7760
查看次数

Jetty的可扩展性如何?

问候!我使用libevent在C/C++中编写了一个高度可伸缩的HTTP事件(长轮询)服务器.然而,它很乱,很难移动,让我们面对它:它是C.更别说我一直遇到mysqlcpp连接器的一些主要问题(这是完全垃圾),以及一些与libevent的小问题(可能是因为我我正在使用2.0.1-alpha.事件服务器是C/C++,实际的后端是PHP-fpm,如果需要,我会点击(即如果有新事件).所有proxy/cgi路由都是通过nginx完成的.

我正在辩论只是用Java重写整个事件(事件服务器和后端) - 我喜欢在前端使用PHP.我听说过很多关于Jetty的好东西,但我想知道是否有人有经验部署在Jetty后端工作的真实高度并发应用程序.如果是这样,与HTTP libevent实现或等效的Erlang和Python服务器库相比,它是如何堆叠的?

我对apachebench基准测试不感兴趣所以请不要链接它们.我对并发性可伸缩性感兴趣.

感谢您的任何见解.

c java jetty libevent

12
推荐指数
1
解决办法
4801
查看次数

找到一种算法来平衡这个游戏

我试图解决我遇到问题的部分问题,这是我正在做的更大项目的一部分(不是家庭作业).我认为将它描述为游戏是最容易的(因为我需要它来完成我正在进行的游戏).这是一个单人游戏,就像我描述它一样.

开始您从以下两个职位之一开始:

  • 重量(2,0,-1)和一个red游戏
  • 重量(3,1,-1)和两个red戏剧

END时,你有没有更多的玩游戏结束.目标是以重量结束比赛(0,0,0).

有两种类型的戏剧redblue.考虑到一个游戏,你可以选择四个部分中的一个:A,B,C,D这会给你额外的重量和可能的额外游戏.以下是规则:

  • red戏剧上:

    • A增加了重量 (0,-2,-1)
    • B增加了重量(1,-1,-1)并增加了一个red游戏
    • C增加了重量(2,0,-1)和两个red游戏
    • D增加了重量(0,2,1)和两个blue游戏

blue播放的规则是相似的,但是权重的前两列是交换的,最后一列是反向的,并且播放的类型是相反的,所以你得到这个:

  • blue戏剧上:

    • A增加了重量 (-2,0,1)
    • B增加了重量(-1,1,1)并增加了一个blue游戏
    • C增加了重量(0,2,1)和两个blue游戏
    • D增加了重量(2,0,-1)和两个red游戏

问题可以赢得这场比赛吗?

我正在尝试编写一个程序,通过选择游戏赢得游戏,以便最终的平衡是(0,0,0)你没有更多的游戏.只有我似乎无法做到这一点.所以现在我认为也许没有算法来赢得比赛.我真的很想知道为什么会这样.如果有人有任何想法我可以证明这一点,那么请让我知道!或者,如果你尝试并找到获胜的方法,那么请告诉我.谢谢!!

algorithm

12
推荐指数
2
解决办法
456
查看次数

条件分支是图灵完备性的要求吗?

我一直在网上搜索,我发现有些矛盾的答案.一些消息来源声称,语言/机器/什么具备的,你是图灵完备当且仅当它有两个有条件和无条件分支(我的猜测是一种多余的),有的说只有无条件的要求,别人只有条件是必须的.

阅读德国Z3ENIAC,维基百科说:

德国Z3(显示于1941年5月工作)由Konrad Zuse设计.它是第一台通用型数字计算机,但它是机电式的,而不是电子的,因为它使用了继电器用于所有功能.它使用二进制数学逻辑计算.它可以通过穿孔带编程,但缺少条件分支.虽然不是为图灵完整性而设计的,但它偶然发生在1998年(但为了利用这种图灵完整性,复杂,聪明的黑客是必要的).

究竟是什么复杂,聪明的黑客?

R. Rojas撰写的1998年论文摘要也指出(请注意,我没有读过这篇论文,它只是IEEE的一个片段.):

由Konrad Zuse在1938年至1941年之间建造的计算机器Z3可以仅执行在穿孔带中编码的浮点算术运算(加法,减法,乘法,除法和平方根)的固定序列.从计算历史的角度来看,一个有趣的问题是这些操作是否足以进行通用计算.该论文表明,实际上,包含这些算术指令的单个程序循环可以模拟其磁带具有给定有限大小的任何图灵机.这是通过纯粹的算术方法模拟条件分支和间接寻址来完成的.因此,Zuse的Z3至少在原则上与今天具有有限寻址空间的计算机一样普遍.

简而言之,SOers,Turing-completeness究竟需要什么类型的分支?假设无限的内存,只有一个gotojmp分支结构(没有ifjnz构造)的语言可以被认为是图灵完备吗?

theory computer-science branch turing-complete

10
推荐指数
2
解决办法
1972
查看次数

如何在后台运行gdb对守护进程?

我正在尝试调试我用gdb编写的服务器,因为它在非常特殊和罕见的条件下进行了段错误.

有什么方法可以让gdb在后台运行(通过安静或批处理模式?),跟随子项(因为我的服务器是守护进程并从主PID中分离)并自动转储核心和回溯(到指定的文件) )一旦程序崩溃了?

c++ unix linux debugging gdb

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

GDI + C++中的双缓冲

我有一段时间没有用GDI写过任何东西(从来没有和GDI +一起),我只是在做一个有趣的项目,但对于我的生活,我无法弄清楚如何加倍缓冲GDI +

void DrawStuff(HWND hWnd) {
    HDC          hdc;
    HDC          hdcBuffer;
    PAINTSTRUCT  ps;
    hdc = BeginPaint(hWnd, &ps);
    hdcBuffer = CreateCompatibleDC(hdc);
    Graphics graphics(hdc);
    graphics.Clear(Color::Black);

    // drawing stuff, i.e. bunnies:

    Image bunny(L"bunny.gif");
    graphics.DrawImage(&bunny, 0, 0, bunny.GetWidth(), bunny.GetHeight());  

    BitBlt(hdc, 0,0, WIDTH , HEIGHT, hdcBuffer, 0,0, SRCCOPY);
    EndPaint(hWnd, &ps);
}
Run Code Online (Sandbox Code Playgroud)

以上作品(一切都完美呈现),但它闪烁.如果我改变Graphics graphics(hdc);Graphics graphics(hdcBuffer);,我什么也看不到(虽然我应该bitblt'ing的buffer->的hWnd HDC底部).

我的消息管道设置正确(WM_PAINT调用DrawStuff),我通过调用强制每个程序循环WM_PAINT消息 RedrawWindow(window, NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_UPDATENOW);

我可能会采取错误的方式来做这个,任何想法?MSDN文档充其量是神秘的.

c++ winapi gdi+

8
推荐指数
1
解决办法
1万
查看次数

Java标签不规则(可能的bug?)

如果我们查看Java标准 §14.7,我们会看到语句可能有标签前缀,例如:

LabeledStatement:

     标识符:声明

理论上,标签应该能够标记任何后续声明.因此,例如,以下编译:

public class Test {
    public static void main(String[] args) {
    hello:
        return;
    }

}
Run Code Online (Sandbox Code Playgroud)

直觉上,这也编译:

public class Test {
    int i;
    public static void main(String[] args) {
        Test t = new Test();
    label:
        t.i = 2;        
    }
}
Run Code Online (Sandbox Code Playgroud)

但下列情况不能编译:

public class Test {
    public static void main(String[] args) {
    oops:
        int k = 3;  
    }
}
Run Code Online (Sandbox Code Playgroud)

即使这样做(注意范围括号):

public class Test {
    public static void main(String[] args) {
    oops:
        {
            int k = …
Run Code Online (Sandbox Code Playgroud)

java standards label java-8

8
推荐指数
1
解决办法
112
查看次数