小编Dan*_*zyk的帖子

通用对象的通用列表

假设我有一个表示数据字段的对象,该对象需要以下属性:Name,Type,Value,Length.这是对象:

class Field<T>
{
    public string Name { get; set; }
    public Type Type
    {
        get
        {
            return typeof(T);
        }
    }
    public int Length { get; set; }
    public T Value { get; set; }
}  
Run Code Online (Sandbox Code Playgroud)

我使用了泛型,因为我想强制代码的用户只能分配某种类型的值.
现在的问题是我想创建一个字段列表.
如果我像那样创建列表,List<Field<object>>我们可以将任何值分配给列表中的给定字段,当我们查询Type时,我们得到'object'.
事情是 - 在那个列表上我可能想要几个字段持有字符串,很少持有整数,日期,甚至自定义对象反过来将有一个字段列表......
泛型是一个很好的解决方案吗?如果是的话,我将如何实施呢?如果没有,有什么更好的方法?

---编辑---
只是为了增加一些背景:
1.我可能想要一个字段列表,每个字段将包含不同的数据类型,如下所示:

List<Field<object>> lst = new List<Field<object>>();
lst.Add(new Field<string>());
lst.Add(new Field<int>());
lst.Add(new Field<SomeObjectFromMyApp>());
Run Code Online (Sandbox Code Playgroud)

2.稍后我将不得不在循环中自动查询这些对象及其属性,类似于:

foreach(Field<object> fld in lst)
{
    Type t = fld.Type;
    //do some other stuff
}
Run Code Online (Sandbox Code Playgroud)

c# generics generic-list

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

如何'重启'angularjs应用程序

在我的AngularJS应用程序中,我有一个基于WebSocket的服务.如果WebSocket连接断开,我想完全"重启"应用程序(从$ route转到默认页面,重新创建服务等).这可以实现吗?这就是我的开始,但从那时起我不知道如何继续:

模块:

(function () {
    angular.module('mainModule', ['ngRoute'])
        .config(['$routeProvider', function ($routeProvider) {
            $routeProvider.
            when('/home', {

                templateUrl: 'partials/home.html',
                controller: 'appController'
            }).
            when('/register', {

                templateUrl: 'partials/register.html',
                controller: 'appController'
            }).
            otherwise({
                redirectTo: '/home'
            });
        }]);
}());
Run Code Online (Sandbox Code Playgroud)

服务:

(function () {

    var app = angular.module('mainModule');

    app.service('$wsService', ['$q', '$window', function ($q, $window) {

        $window.console.log("WebSocket SERVICE: started");

        var self = this;
        var ws = new WebSocket("ws://127.0.0.1:9090");
        this.isConnected = function (m) {};

        ws.onopen = function () {
            $window.console.log("WebSocket SERVICE: connected");
            self.isConnected(true);
        };

        ws.onmessage = function (m) { …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

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

Spring MockRestServiceServer处理对同一URI的多个请求(自动发现)

假设我正在为REST服务A编写Spring集成测试.该服务依次点击另一个REST服务B并获取要在REST服务C上命中的URI列表.它是一种自动发现模式.我想使用MockRestServiceServer模拟B和C响应.
现在来自B的响应是一个URI列表,它们都非常相似,为了举例说明,我的B响应是这样的:

{
    uris: ["/stuff/1.json", "/stuff/2.json", "/stuff/39.json", "/stuff/47.json"]
}
Run Code Online (Sandbox Code Playgroud)

简单地说,服务A会将它们中的每一个附加到服务C的基本URL上并发出这些请求.
模拟B很容易,因为它只有1个请求.
模拟C很麻烦,因为我必须模拟每个URI以适当的模拟响应.我想自动化它!
所以首先我写自己的匹配器来匹配不是一个完整的URL,但它的一部分:

public class RequestContainsUriMatcher implements RequestMatcher {
    private final String uri;

    public RequestContainsUriMatcher(String uri){
        this.uri = uri;
    }

    @Override
    public void match(ClientHttpRequest clientHttpRequest) throws IOException, AssertionError {
        assertTrue(clientHttpRequest.getURI().contains(uri));
    }
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,因为我现在可以这样做:

public RequestMatcher requestContainsUri(String uri) {
    return new RequestContainsUriMatcher(uri);
}

MockRestServiceServer.createServer(restTemplate)
            .expect(requestContainsUri("/stuff"))
            .andExpect(method(HttpMethod.GET))
            .andRespond(/* I will get to response creator */);
Run Code Online (Sandbox Code Playgroud)

现在我需要的是一个响应创建者,它知道完整的请求URL以及模拟数据所在的位置(我将它作为测试资源文件夹中的json文件):

public class AutoDiscoveryCannedDataResponseCreator implements ResponseCreator {
    private final Function<String, String> cannedDataBuilder;

    public AutoDiscoveryCannedDataResponseCreator(Function<String, String> cannedDataBuilder) { …
Run Code Online (Sandbox Code Playgroud)

spring integration-testing mocking spring-mvc

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

将XMM寄存器推入堆栈

有没有办法将打包的双字整数从XMM寄存器推送到堆栈?然后在需要时弹出它?

理想情况下,我正在寻找像PUSH或POP这样的通用寄存器,我已经检查了英特尔手册,但我要么错过了命令,要么没有一个...

或者我是否必须将值解压缩到通用寄存器然后推送它们?

x86 assembly sse simd

13
推荐指数
1
解决办法
8505
查看次数

我可以不使用$ ctrl.在角度组件模板中

我正在使用angular 1.5,我想将部分DOM提取到一个组件中.
这是我到目前为止所做的:

angular.module('my-app').component("menuItem",{
    templateUrl : "lib/menu-item.tmpl.html",
    bindings : {
        index : "<",
        first : "<",
        last : "<",
        item : "=",
        onDelete : "&",
        onMoveUp : "&",
        onMoveDown : "&"
    },
    controller : function($scope) {
    }
});
Run Code Online (Sandbox Code Playgroud)

模板看起来像这样:

<div>
    <aside class="sort-buttons">
        <ul>
            <li>
                <button ng-click="$ctrl.onMoveUp({index : $ctrl.index})"
                        ng-disabled="$ctrl.first">
                    <i class="icon icon-up"></i>
                </button>
            </li>
            <li>
                <button ng-click="$ctrl.onMoveDown({index : $ctrl.index})"
                        ng-disabled="$ctrl.last">
                    <i class="icon icon-down"></i>
                </button>
            </li>
        </ul>
    </aside>

    <div class="row">
        <button class="btn btn-danger btn-icon btn-remove"
                ng-click="$ctrl.onDelete({index : $ctrl.index})">
            <i …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-directive angularjs-scope

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

Excel从计算行数的单元格中选择一个值

在A列中我的数字计算如下:

[A]
[1]
[2]
[3]
[4]
[1]
[2]
[3]
...
Run Code Online (Sandbox Code Playgroud)

在列KI中有值:

[row] [K]
[ 1 ] [7]
[ 2 ] [3]
[ 3 ] [6]
[ 4 ] [9]
Run Code Online (Sandbox Code Playgroud)

如果行号是存储在A列中的数字,我如何从列K中提取值?
我尝试过使用Address()和Cell(),如下所示:

=Cell("contents",ADDRESS(A5,11))
Run Code Online (Sandbox Code Playgroud)

ADDRESS应该返回对给定单元格的引用,提供行号和列号(可以从其他单元格获取),CELL应该参考并返回有关引用单元格的详细信息(此处为"content",因此为value).如果我像这样使用它:

=Cell("contents", K4)
Run Code Online (Sandbox Code Playgroud)

当我使用ADDRESS时,它给了'9':

=ADDRESS(A4,11)
Run Code Online (Sandbox Code Playgroud)

它给了我4美元.但是当我一起使用它时,我得到一个错误.

excel excel-formula

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

检查XMM寄存器是否全部为零

有没有办法检查__m128i变量中的所有位/字节/字等是否为0?
在我的应用程序中,我必须检查__m128i变量中包含的所有整数是否为零.我是否必须提取它们并分别进行比较?

编辑:


我现在在做的是:

int next = 0;
do{
    //some code

    next = idata.m128i_i32[0] + idata.m128i_i32[1] + idata.m128i_i32[2] + idata.m128i_i32[3];
}while(next > 0);
Run Code Online (Sandbox Code Playgroud)

我需要的是检查idata是否全为零而不必访问每个单独的元素,如果它们是...则退出循环...

基于Harold的评论,这是解决方案:


__m128i idata = _mm_setr_epi32(i,j,k,l);
do{
    //some code
}while( !_mm_testz_si128(idata, idata) );
Run Code Online (Sandbox Code Playgroud)

如果idata中每个DW的所有低位都为0,这将退出循环...感谢hraold!

c++ simd intrinsics

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

Socket.io客户端在使用命名空间时忽略端口[Bug?]

我有一个简单的node.js应用程序与socket.io(1.3.5),取自socket.io示例:

// Setup basic express server
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var port = process.env.PORT || 3000;

server.listen(port, function () {
  console.log('Server listening at port %d', port);
});

// Routing
app.use(express.static(__dirname + '/public'));

io.of('/admin').on('connection', function(socket){
    //handle conection on /admin namespace
});

io.of('/user').on('connection', function(socket){
    //handle conection on /user namespace
});
Run Code Online (Sandbox Code Playgroud)

现在在我的前端,我连接到这些特定的命名空间,如此(再次,从示例中):

var admin_socket = io('/admin');
var user_socket = io('/user');
Run Code Online (Sandbox Code Playgroud)

该应用程序在端口3000上运行,并使用URL打开网站localhost:3000.
当我这样做我收到CORS错误时,似乎客户端的Socket.io在我开始使用命名空间时不会自动检测端口号(在firefox开发工具中我可以看到请求localhost/而不是localhost:3000/).


如果在我的服务器端,我不使用命名空间:

io.on('connection', function(socket){ …
Run Code Online (Sandbox Code Playgroud)

javascript websocket node.js socket.io

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

Windows Phone上的网络服务发现

我期待编写一个简单的桌面应用程序和相应的移动应用程序,方案将是:

  1. 我在笔记本电脑上运行桌面应用程序
  2. 我在我的Lumia上运行移动应用程序(在同一个wifi网络上)
  3. 手机应用程序以某种方式找到并连接到桌面应用程序(我不想手动查找并键入ip)
  4. 这两个人现在可以沟通

像这样的非常基本的应用程序将在两者之间发送简单的文本消息.
我想一个示例应用程序就像是手机上的PC的"遥控器",可以在市场上找到.
我开始研究UDP多播,并花了一天时间试图让它工作.想法是两个应用程序加入相同的多播组,加入时手机向该组发送消息,PC拿起它并用它的IP响应,然后手机与桌面应用程序建立TCP连接.听起来像是一个有效的解决方案,对吧?好吧,无论我尝试什么,这都会发生:

  1. 场景:在实际手机上运行的移动应用程序连接到与PC应用程序相同的WiFi:正在发送消息但从未到达.
  2. 场景:在与PC应用程序相同的PC上的模拟器上运行的移动应用程序:消息发送和到达.

这是一篇包含代码的帖子,当我尝试使用sockets-for-pcl时.
以下是我尝试使用.NET中已有的内容:
PC - 仅发送消息:

UdpClient udp = new UdpClient(port);
IPAddress group_ip = IPAddress.Parse("139.100.100.100");
IPEndPoint client_ipep = new IPEndPoint(group_ip, 3344);
byte[] b = System.Text.Encoding.UTF8.GetBytes(txtEntry.Text);
udp.Send(b, b.Length, client_ipep); 
Run Code Online (Sandbox Code Playgroud)

电话 - 仅接收:

HostName hostName = new HostName("139.100.100.100");
DatagramSocket udp = new DatagramSocket();
udp.MessageReceived += (sender, args) =>
{
    uint length = args.GetDataReader().ReadUInt32();
    string text = args.GetDataReader().ReadString(length); 
};
await udp.BindServiceNameAsync("3344");
udp.JoinMulticastGroup(hostName);
Run Code Online (Sandbox Code Playgroud)

然而,经过一天我放弃了,因为文档很少,调试需要我获得一些网络扫描工具......

当我在互联网上搜索网络服务发现的一些库时,我发现了一些Android文档,但没有用于Windows Phone 8.1.所以我想我的问题是:Windows Phone有什么类似的吗?或者,如果您发现我的代码有任何问题,我需要更改哪些内容才能进行通信?谢谢.

c# udp network-programming windows-phone-8.1

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

如何确保我们只有一个实例,并以正确的方式处理

在我写的软件中,我将从外部设备(通过USB连接)读取一些数据.我给出的驱动程序(DLL文件)不是线程安全的,一次只能使用一个实例.我必须在C#中为这些驱动程序编写一个包装器.鉴于我有一个多线程应用程序,我想确保:

  1. 始终只使用一个实例(可能包装器是单件?).
  2. 它可以被处理以释放那里的驱动程序和资源(IDisposable?).

一次性单身人士我可以看出意见分歧,单身是否可以IDisposable.也许两者都有更好的解决方案?欢迎任何帮助.
现在我有一个IDisposable单身,如下所示:

using System;
using System.Runtime.InteropServices;

namespace Philips.Research.Myotrace.DataReading.Devices
{
    class MyDevice: IDisposable
    {
        private static volatile MyDeviceInstance;
        private static object SyncRoot = new Object();

        private bool disposed = false;

        private MyDevice()
        {
            //initialize unmanaged resources here (call LoadLibrary, Initialize, Start etc)
        }

        public MyDevice GetInstance()
        {
            if (Instance == null)
            {
                lock (SyncRoot)
                {
                    if (Instance == null)
                    {
                        Instance = new MyDevice();
                    }
                }
            }

            return Instance;
        } …
Run Code Online (Sandbox Code Playgroud)

c# multithreading design-patterns idisposable

7
推荐指数
1
解决办法
625
查看次数