小编Ric*_*ral的帖子

如何模拟在提供程序私有函数中手动注入的$ window?

我有以下提供者:

angular.module('MyApp').provider('MyDevice', function () {

    var ngInjector = angular.injector(['ng']),
        $window = ngInjector.get('$window');

    function isMobileDevice () {
        return (/iPhone|iPod|iPad|Silk|Android|BlackBerry|Opera Mini|IEMobile/)
            .test($window.navigator.userAgent || $window.navigator.vendor || $window.opera);
    }

    this.$get = function () {
        return {
            isDesktop: function () {
                return !isMobileDevice();
            },
            isMobile: function () {
                return isMobileDevice();  
            }
        };
    };

});
Run Code Online (Sandbox Code Playgroud)

以下测试规范:

describe('MyDeviceProvider', function () {

    var myDevice;

    beforeEach(function () {
        inject(['MyDevice', function (_myDevice_) {
            myDevice = _myDevice_;
        }]);
    });

    it('Test #1', function () {
        // Mock '$window.navigator.userAgent' to "desktop"
        expect(myDevice.isDesktop()).toEqual(true);
        expect(myDevice.isMobile()).toEqual(false); …
Run Code Online (Sandbox Code Playgroud)

unit-testing angularjs karma-jasmine angular-mock

4
推荐指数
1
解决办法
8431
查看次数

如何为getInstance方法编写Javadoc?

说我有这样的事情:

public class MyClass {
    private static MyClass sInstance;

    /**
     *
     * @return The {@link MyClass} application instance.
     */
    public static MyClass getInstance() {
        return sInstance;
    }
}
Run Code Online (Sandbox Code Playgroud)

IntelliJ给了我这个警告:

'@link'指向包含类是不必要的

编写这片Javadoc的正确/传统方式是什么?

你会怎么写的?

java javadoc intellij-idea

4
推荐指数
1
解决办法
350
查看次数

当背景大小为 100% 时,如何使用百分比设置背景位置动画?

举个例子:

html {
    height: 100%;
}

body {
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: black;
    height: 100%;
    margin: 0;
}

#main {
    background: #222222;
    position: relative;
    flex: 640px 0 0;
    height: 360px;
}

@keyframes stars {
	0% {
        background-position: 0 0;
    }
	100% {
        background-position: -100% 0;
    }
}

#stars {
    animation: stars 10s linear infinite;
    background-image: url('https://i.imgur.com/nyFndCj.png');
    background-size: 100% 100%;
    background-repeat: repeat repeat;
    position: absolute;
    width: 100%;
    height: 100%;
}
Run Code Online (Sandbox Code Playgroud)
<div id="main">
  <div id="stars"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

这里的想法是通过使用百分比更改背景位置来动画星星从一侧移动到另一侧。例如,我可以使用 …

css background-position css-animations background-size

4
推荐指数
1
解决办法
2331
查看次数

这些haskell函数中的这些值来自哪里?

假设我有以下功能:

sumAll :: [(Int,Int)] -> Int
sumAll xs = foldr (+) 0 (map f xs)
  where f (x,y) = x+y
Run Code Online (Sandbox Code Playgroud)

结果sumAll [(1,1),(2,2),(3,3)]将是12.

我不明白的是(x,y)价值来自哪里.嗯,我知道他们来自xs变量,但我不明白如何.我的意思是,在没有where关键字的情况下直接执行上面的代码,它将是这样的:

sumAll xs = foldr (+) 0 (map (\(x,y) -> x+y) xs)
Run Code Online (Sandbox Code Playgroud)

在顶级代码中,我无法理解f变量和(x,y)变量如何表示(\(x,y) -> x+y)lambda表达式.

lambda haskell tuples map fold

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

在C中是否有用于读/写系统调用的标准输入/输出宏?

我的所有搜索都没有返回任何内容,我觉得很奇怪,没有任何宏可用作标准输入和输出的读/写系统调用的文件描述符,而不是0(stdout)和1(stdin).

我错过了他们还是他们真的不存在?

c macros file-descriptor system-calls

3
推荐指数
1
解决办法
365
查看次数

理解C中双向链表中的双指针

我明天参加考试,我试图理解教师放在班级网站上的这个双重链接列表示例,但我很难理解它的一点......

这是代码:

#include <stdio.h>
#include <stdlib.h>

typedef struct dl {
    int key;
    float value;
    struct dl *next;
    struct dl *prev;
} DL;

DL *insert(int c, float f, DL *l) {
    DL *new = (DL*) malloc(sizeof(DL));
    if (new == NULL) exit(-1);
    new->key=c; new->value=f; 
    if (l==NULL) {
        new->next=NULL; new->prev=NULL;
    }
    else if (l->key < c) {
        while((l->next != NULL) && (l->next->key < c)) { l=l->next; }
        new->next=l->next; l->next=new; new->prev=l;
        if (new->next != NULL) {
            new->next->prev=new;
        }
    }
    else {
        while((l->prev != NULL) …
Run Code Online (Sandbox Code Playgroud)

c pointers linked-list

3
推荐指数
1
解决办法
5546
查看次数

从线性探测转向二次探测(哈希碰撞)

我目前使用线性探测器的实现是使用线性探测,现在我想转向二次探测(以后再进行链接,也可能是双重哈希).我已经阅读了一些文章,教程,维基百科等...但我仍然不知道我应该做什么.

基本上,线性探测的步长为1,这很容易做到.当从哈希表中搜索,插入或删除元素时,我需要计算哈希值,为此我执行此操作:

index = hash_function(key) % table_size;
Run Code Online (Sandbox Code Playgroud)

然后,在搜索,插入或删除I循环通过表时,直到找到一个空闲桶,如下所示:

do {
    if(/* CHECK IF IT'S THE ELEMENT WE WANT */) {
        // FOUND ELEMENT

        return;
    } else {
        index = (index + 1) % table_size;
    }
while(/* LOOP UNTIL IT'S NECESSARY */);
Run Code Online (Sandbox Code Playgroud)

对于二次探测,我认为我需要做的是改变计算"索引"步长的方式,但这是我不明白应该怎么做的.我见过各种代码,而且所有代码都有所不同.

此外,我已经看到了一些Quadratic Probing的实现,其中哈希函数被改变为适应(但不是全部).是真的需要改变还是我可以避免修改散列函数并仍然使用二次探测?

编辑: 在阅读了以下Eli Bendersky指出的所有内容后,我想我得到了一般的想法.以下是http://eternallyconfuzzled.com/tuts/datastructures/jsw_tut_hashtable.aspx中代码的一部分:

15   for ( step = 1; table->table[h] != EMPTY; step++ ) {
16     if ( compare ( key, table->table[h] ) == 0 )
17       return 1;
18 
19     /* Move forward …
Run Code Online (Sandbox Code Playgroud)

c hashtable hash-collision quadratic-probing

3
推荐指数
1
解决办法
9601
查看次数

关于获取和设置以及何时使用超类的问题

我有以下get方法:

public List<PersonalMessage> getMessagesList() {
    List<PersonalMessage> newList = new ArrayList<PersonalMessage>();

    for(PersonalMessage pMessage : this.listMessages) {
        newList.add(pMessage.clone());
    }

    return newList;
}
Run Code Online (Sandbox Code Playgroud)

您可以看到,如果我需要将实现更改ArrayList为其他内容,我可以轻松地执行此操作,我只需要更改初始化newList以及所有其他依赖于getMessageList()返回仍然有效的代码.

然后我有这个set方法:

public void setMessagesList(ArrayList<PersonalMessage> listMessages) {
    this.listMessages = listMessages;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,我应该List在方法签名中使用而不是`ArrayList吗?

我已决定使用,ArrayList因为这样我可以强制执行我想要的,否则可能会出现乱七八糟的不同类型的列表.

但我不确定这是否可行......

java get interface set super

3
推荐指数
1
解决办法
137
查看次数

如何使用jQuery默认预加载所有选项卡

如果我有4个选项卡,其中前2个加载ajax而后2个是静态的,我如何预先加载2个ajax选项卡?

目前,只有第一个选项卡会自动加载,第二个选项卡会在单击时加载.我希望它们都被加载,以便当我单击第二个时,内容已经加载.我试图在第二个选项卡上调用load事件,如下所示:

$(document).ready(function () {
    $("#main-tabs").tabs({
        cache: true
    });

    $("#main-tabs").tabs("load", 1);
});
Run Code Online (Sandbox Code Playgroud)

这会加载第二个标签,但由于某些奇怪的原因,第一个标签根本没有加载; 即使我单击其他选项卡并单击第一个选项卡,它也不会加载.

然后我尝试了这样的事情:

$(document).ready(function () {
    $("#main-tabs").tabs({
        cache: true
    });

    $("#main-tabs").tabs("load", 0);
    $("#main-tabs").tabs("load", 1);
});
Run Code Online (Sandbox Code Playgroud)

同样的结果,加载第二个选项卡,第一个选项卡不加载.

如何自动加载所有这些(ajax)?

jquery jquery-ui jquery-tabs

3
推荐指数
1
解决办法
3685
查看次数

不允许Get-ChildItem和注册表密钥访问

我正在尝试使用一个简单的PowerShell脚本来访问注册表,我这样做:

Foreach ($key in Get-Childitem HKLM:\SYSTEM\CurrentControlSet\Control\Class\"{4D36E972-E325-11CE-BFC1-08002BE10318}") {
    $key.name
}
Run Code Online (Sandbox Code Playgroud)

有一堆键只是数字(我想要的那些),但是有一个名为"属性",我没有访问权限(我不需要),并且该键给我执行Foreach时出现以下错误命令:

Foreach ($key in Get-Childitem HKLM:\SYSTEM\CurrentControlSet\Control\Class\"{4D36E972-E325-11CE-BFC1-08002BE10318}") {
    $key.name
}
Get-ChildItem : Requested registry access is not allowed.
At line:3 char:31
+ Foreach ($key in Get-Childitem <<<<  HKLM:\SYSTEM\CurrentControlSet\Control\Class\"{4D36E972-E325-11CE-BFC1-08002BE10318}") {
    + CategoryInfo          : PermissionDenied: (HKEY_LOCAL_MACH...318}\Properties:String) [Get-ChildItem], SecurityException
    + FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.PowerShell.Commands.GetChildItemCommand

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0001
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0002
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0003
(...)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0024
Run Code Online (Sandbox Code Playgroud)

如何排除"属性"键并消除该错误?

windows registry powershell

3
推荐指数
1
解决办法
5020
查看次数