小编ist*_*iuk的帖子

"标记枚举"中所有值的"OR"的最佳方法是什么?

鉴于enum:

[Flags]
public enum mytest
{
    a = 1,
    b = 2,
    c = 4
}
Run Code Online (Sandbox Code Playgroud)

我想出了两种方法来表示单个变量中的所有值:

    var OR1 = (mytest)Enum.GetNames(typeof(mytest)).Sum(a => (int)Enum.Parse(typeof(mytest), a));
    var OR2 = (mytest)(typeof(mytest).GetEnumValues() as mytest[]).Sum(a => (int)a);
Run Code Online (Sandbox Code Playgroud)

现在,虽然它们都有效,但还有更简洁的方法吗?可能是我缺少的.NET方法?

编辑:为了澄清,我需要函数是动态的 - 我不想通过指定每个enum值来计算它.

c# enums

16
推荐指数
3
解决办法
2147
查看次数

相交两个数组

如何快速找到C#中2个数组之间的交叉?

arrays intersection c#-4.0

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

layoutSubviews在旋转时调用两次

当我的主视图旋转时,我想重新排列子视图,所以在我的ViewController中,我重写

willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration
Run Code Online (Sandbox Code Playgroud)

并在那里设置子视图的帧.这一切都很好,但在子视图中我也被覆盖了

 layoutSubviews
Run Code Online (Sandbox Code Playgroud)

所以他们正确地布置自己.但问题是这个现在被调用两次 - 大概一次我在willAnimateRotationToInterfaceOrientation中设置Frame而一次因为旋转而设置.(如果我没有设置Frame,它会被调用一次.)

当然,ViewController负责布局框架,这看起来像是一个设计缺陷 - 什么是解决方案,所以layoutSubviews只调用一次?

rotation viewcontroller ios layoutsubviews

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

多个Ack用于相同的交付标签 - RabbitMQ

在我的项目中,我看到有两次同一个交付标签的确认.当发生这种情况时,消费者从队列中取消绑定,并且没有其他消息传递给消费者(使用RabbitMQ管理仪表板观察到这一点).我如何检查给定的送货标签已经确定了?或使用rabbitmq api处理此类场景的任何其他推荐方法.

我试图在我的代码中避免上面的重复ack,但遗憾的是由于某些设计问题,它是不可能的.

rabbitmq rabbitmq-exchange

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

RabbitMQ - 按优先级使用多个队列

我需要升级我们的生产者/消费者基础设施。

当前设置如下所示:

  • 一组具有不同优先级(低、中、高)的 3 个队列。
  • 当我们的客户生成任务(即处理图像)时:
    • Producer 将消息添加到相关队列中。
    • 其中一名工人解决了这个问题。

这种方法的问题在于,如果客户生成大量任务,它可能会占用队列中的所有可用插槽,这可能会导致该队列中的服务拒绝(或巨大延迟)。

建议更改:

  • 每个客户(或一组)都应该有专门的Consumer(或一组)。
  • 当消费者空闲时,他们应该处理其他客户的消息。

例如,我们有一组消息:

 1. Producer: Customer1, Queue: High, Payload: {}, Created: Today 16:00:00
 2. Producer: Customer2, Queue: High, Payload: {}, Created: Today 16:00:01
 3. Producer: Customer1, Queue: High, Payload: {}, Created: Today 16:00:02
 4. Producer: Customer1, Queue: High, Payload: {}, Created: Today 16:00:03
Run Code Online (Sandbox Code Playgroud)

我们有以下消费者:

1. Consumer1: Dedicated for Customer1
2. Consumer2: Dedicated for Customer1
3. Consumer3: Dedicated for Customer2
Run Code Online (Sandbox Code Playgroud)

预期结果:

1. Consumer1 will address Message#1
2. Consumer2 will …
Run Code Online (Sandbox Code Playgroud)

priority-queue amqp rabbitmq consumer producer

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

原子别名交换在完全不相关的索引上失败并带有index_not_found_exception

我想用零停机时间替换和索引,如ES文档中所述.

我这样做是这样的:

  • my_index_v2使用新数据创建新索引
  • 刷新新索引
  • 然后通过执行以下请求在原子操作中交换它们:

POST /_aliases

{
    "actions": [
        { "remove": { "index": "*", "alias": "my_index" }},
        { "add":    { "index": "my_index_v2", "alias": "my_index" }}
    ]
}
Run Code Online (Sandbox Code Playgroud)

这可以按预期工作,除非它随机响应404响应.错误消息是:

{
   "error": {
      "root_cause": ... (same)
      "type": "index_not_found_exception",
      "reason": "no such index",
      "resource.type": "index_or_alias",
      "resource.id": "my_unrelated_index_v13",
      "index": "my_unrelated_index_v13"
   },
   "status": 404
}
Run Code Online (Sandbox Code Playgroud)
  • 之后,只有当交换工作时,我们才会删除与此关联的现在未使用的索引,并且只删除此别名.

整个操作每隔几分钟就会定期发生.与所描述的操作类似的操作可能在群集中同时发生在其他别名/索引上.每隔几个小时就会随机发生错误.

有没有理由说这些操作会相互干扰?到底是怎么回事?

编辑:最后阐明了DELETE步骤.

elasticsearch elasticsearch-2.4

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

如何在没有扩展内联asm的情况下在gcc内联汇编中声明和初始化局部变量?

我知道这是一个非常基本的问题,但我真的很困惑.事实上,我绝对是gcc语法的新手.我希望在不使用扩展内联汇编的情况下拥有局部变量(事实上堆栈地址带有标签); 类似于intel语法中的代码:

DATA1 DB 100

MOV AL,DATA1

这是我猜可能在gcc中替代的代码:

- (int)someFunction:(int)x {

DATA1  DB  100 
MOV AL, DATA1
Run Code Online (Sandbox Code Playgroud)

但是这段代码导致了这个错误:

找不到架构x86_64的符号

我可以在x86中使用全局变量,但x64或x86_x64中的结果相同.

设置:LLVM 4.1; Xcode中使用的Cocoa 4

什么是正确的语法?

gcc scope local-variables inline-assembly

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

为假装URL地址抛出新的例外

我做了一些东西,检索我输入的URL的IP地址.

InetAddress ip = InetAddress.getByName("www.fake.cao");
return ia.getHostAddress();
Run Code Online (Sandbox Code Playgroud)

我还抛出了UnknownHostException来尝试捕获错误的URL错误.

问题是,www.fake.cao被识别为真正的URL并返回一个不可用的IP地址,并且不会抛出异常.

任何人都可以告诉我,我能做些什么来捕捉这些自命不凡的URL?

java url exception

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

如何使用Rich Domain Model处理持久性

我正在重新设计NodeJS应用程序,因为我想使用Rich Domain Model概念。目前,我正在使用Anemic域模型,并且扩展性不好,我到处都看到“ ifs”。

我已经阅读了许多博客文章和与DDD相关的博客,但是有些事情我根本无法理解...我们如何正确处理持久性。

首先,我想描述一下我定义的图层及其用途:

持续性模型

  • 定义表模型。定义表名称,列,键和关系
  • 我将Sequelize用作ORM,因此将用Sequelize定义的模型视为我的持久性模型

领域模型

  • 实体和行为。对应于作为业务域一部分创建的抽象的对象
  • 我已经创建了几个类,并且这里最好的是,我可以受益于层次结构来解决所有问题(无需加载ifs yay)。

数据访问对象(DAO)

  • 负责数据管理以及将持久性模型的条目转换为域模型的实体。所有与持久性相关的活动都属于此层
  • 在我的情况下,DAO在基于持久性模型创建的Sequelize模型的基础上工作,但是,我正在根据其属性在不同对象中序列化数据库交互返回的记录。例如:如果我有一个表,该表的列名为“ UserType”,其中包含两个值[ADMIN,USER],则当我在该表上选择条目时,我会根据用户类型对返回值进行序列化,因此,一个用户类型为: ADMIN将是AdminUser类的实例,其中类型为USER的User将只是DefaultUser ...

服务层

  • 负责所有通用业务逻辑,例如不属于任何域对象行为的公用事业和其他服务

客户层

  • 任何与对象玩耍并负责触发持久性的Consumer类

现在,当我实现客户端层时,混乱就开始了。

假设我正在实现一个新的REST API:

POST: .../api/CreateOrderForUser/
{
  items: [{
    productId: 1,
    quantity: 4
  },{
    productId: 3,
    quantity: 2
  }]
}
Run Code Online (Sandbox Code Playgroud)

在我的处理程序函数上,我将有类似以下内容:

function(oReq){
  var oRequestBody = oReq.body;
  var oCurrentUser = oReq.user; //This is already a Domain Object
  var aOrderItems = oRequestBody.map(function(mOrderData){
    return new OrderItem(mOrderData); //Constructor sets the properties internally
  });
  var oOrder = new Order({
    items: aOrderItems
  });

  oCurrentUser.addOrder(oOrder); …
Run Code Online (Sandbox Code Playgroud)

architecture domain-driven-design node.js sequelize.js rich-domain-model

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

http://一个href链接在Android中不起作用

我正在Android应用中使用webview.

我有3个按钮1用于指向网站的链接,用于呼叫号码和一个电子邮件按钮.

首先调用我的网站按钮工作,http://www.somelink.com .

但我的电话:链接无法正常工作.所以我集成了一些使我的tel:按钮工作的代码.

问题是它使我的网站或http:按钮不起作用?

单击它时,html按钮不执行任何操作.

package de.sonae.novolam;

import android.annotation.SuppressLint;
import android.app.Fragment;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.webkit.WebViewClient;


@SuppressLint("SetJavaScriptEnabled")
public class DFragment extends Fragment {

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View mainView = (View) inflater.inflate(R.layout.dfragment, container, false);
WebView webView = (WebView) mainView.findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);

webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView wv, String url) {
    if (url.startsWith("tel:")) { 
            Intent intent = new Intent(Intent.ACTION_DIAL,
                    Uri.parse(url)); 
            startActivity(intent); …
Run Code Online (Sandbox Code Playgroud)

java android android-intent

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