小编Nei*_*eil的帖子

如何为插座打开IPCOMP?

由于我无法进入的原因,我们的系统使用非常小的MTU(128字节).这些嵌入式设备位于完全独立的网络上,因此无法访问互联网或与其他设备进行交互.

显然,TCP每个数据包占用66个字节,而有效负载则不大.

经过一些谷歌搜索,我遇到了IPCOMP,看起来它可能有助于减少网络上的流量.

我的问题是如何启用此功能?有没有setsockopt,还是需要一个特殊的驱动程序?

我见过的唯一例子是:

socket(PF_INET, SOCK_RAW, IPPROTO_COMP)
Run Code Online (Sandbox Code Playgroud)

但这意味着我需要手动创建IP/TCP /有效负载.

任何人都有这方面的经验.

编辑:也许更好的方法是在此连接上启用cslip或ppp.我可以找到关于在串行端口上启用PPP的教程(用于拨号调制解调器),但在以太网上启用PPP没有任何内容.
我已经看过有关PPPoE的文章,但这似乎为有效载荷增加了更多而不是减少它.
有人能帮忙吗?

linux tcp

16
推荐指数
1
解决办法
1252
查看次数

是否可以通过编程方式设置gdb观察点?

我想在我的C++程序中暂时设置一个观察点(硬件写入中断)来查找内存损坏.

我已经看过所有通过gdb手动完成的方法,但我想通过我的代码中的某些方法实际设置观察点,所以我不必闯入gdb,查找地址,设置观察点然后继续.

就像是:

#define SET_WATCHPOINT(addr) asm ("set break on hardware write %addr")
Run Code Online (Sandbox Code Playgroud)

c++ gdb watchpoint

15
推荐指数
3
解决办法
6221
查看次数

大纲绘图算法

我的妻子给了我这个任务,所以这是头等大事:-)

我有一系列积分(实际上是Northings和Eastings,但这并不重要).我想取这些点并创建一组代表轮廓的矢量,这样我就可以在Google地球上绘图.

所以,像:

  #                       #
           #             #       #
#             #    #
      #   #

            #
Run Code Online (Sandbox Code Playgroud)

会给:

  #-----------------------#--
 /                            \ --#
#                  #------------/
 \-----#         /
         \     /
            #
Run Code Online (Sandbox Code Playgroud)

我想出的一个可能的解决方案是计算每个点之间的向量,并丢弃与另一个向量重叠的每个向量.我还没有实现这个(不太确定如何),但我想知道是否还有其他方法.

该算法只需要运行几次,所以如果每次运行需要一个小时,那么RAM就不是问题.

algorithm computational-geometry

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

如何使用白色勾选或取消勾选数据网格视图中的复选框

我有一个WinForms应用程序,它显示一个DataGridView.它从BindingSource自动填充,并包含多行数据.列包括字符串等标准内容.其中一些列是CheckBoxes.

Name | User | Admin ---- ---- ----- John | X |
Fred | | X

我正在使用TestStack.White编写一些自动化测试.我可以毫无问题地阅读CheckBoxes的现有状态.

如何设置或清除复选框?我试过了:

  1. Table.Rows[0].Cells[1].Value = true;

失败,因为在White可以回读当前值之前删除了基础行/单元格.

并且:

  1. Table.Rows[0].Cells[1].SetValue(true);

无法设置新值.

.net c# datagridview white-framework winforms

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

如何使用 EF Core 3.1 将 IEnumerable<string> 的属性存储在 Cosmos 表中

我的项目使用 EF Core 3.1,并以 Azure Cosmos 作为数据库。

我有一个这样的实体:

public class MyEntity
{
    public IEnumerable<string> Names {get;set;}
    ... other fields
}
Run Code Online (Sandbox Code Playgroud)

我希望最终得到这样的 Cosmos 文档:

{
    "Names": ["Name1", "Name2"]
}
Run Code Online (Sandbox Code Playgroud)

对于实体 ( IEnumerable<string>) 我收到错误:

无法映射属性“MyEntity.Names”,因为它的类型为“IEnumerable”,该类型不是受支持的基元类型或有效的实体类型。

如果我将实体更改为:

public class NameEntity
{
    public string Name {get;set;}
}
public class MyEntity
{
    public IEnumerable<NameEntity> Names {get;set;}
    ... other fields
}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<MyEntity>(e =>
    {
        e.OwnsMany(p => p.Identifiers);
    });
}
Run Code Online (Sandbox Code Playgroud)

该文档如下所示:

{
    "Id": "XXXXXX",
    "Names:" [
       {},
       {}
    ],
} …
Run Code Online (Sandbox Code Playgroud)

entity-framework-core .net-core azure-cosmosdb

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

迭代地图和删除项目的最佳模式是什么?

我正在研究一些基本上做的代码:

mapSize = map.size();
for(iter=map.begin;iter!=map.end();)
{
  call function which might delete a map item;
  if(map.size()==mapSize )
  {
     iter++;
  }
  else
  {
     mapSize = map.size();
     iter=map.begin(); /* Start again if something was deleted */
  }
}
Run Code Online (Sandbox Code Playgroud)

我认为必须有更好的方法来做到这一点.有什么建议?

c++ iterator stl

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

重载operator <用于多字段类

我正在尝试插入地图,其中键是一个类.我已经重载了我的类中的operator <函数,如下所示:

struct MyType
{
    int a, b, c;
    bool operator<(const MyType& Rhs) const
    {
       return (a<Rhs.a) || (b<Rhs.b) || (c<Rhs.c);
    }
}
Run Code Online (Sandbox Code Playgroud)

但对于某些(唯一)键,值会在地图中被覆盖.

什么是多值键的首选运算符<方法?

我已经看到定义运算符<用于使用元组的结构,但如果可以的话,我宁愿长手写.

c++ stl operator-overloading map

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

使用元数据类覆盖MVC视图模型中的EF字段名称不起作用

我正在编写一个MVC5 / EF6网站,并且试图保持数据模型和视图模型的分离尽可能完整。

因此,我的EF类(存储在单独的程序集中)如下所示:

public class WorksOrder
{
    [Key]
    public int Id { get; set; }

    public string CreatedById { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的视图程序集(视图控制器所在的地方)中有一个元数据类,在其中重写显示名称并添加错误消息

public class WorksOrder
{
    [Display(Name = "Created by")]
    [Required(ErrorMessage = "created by cannot be blank")]
    public string CreatedById { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我将两个类附加到我的视图模型中:

TypeDescriptor.AddProviderTransparent(
    new AssociatedMetadataTypeTypeDescriptionProvider(typeof(EF.Models.WorksOrder),
    typeof(ViewMetadata.WorksOrder)), typeof(EF.Models.WorksOrder));
Run Code Online (Sandbox Code Playgroud)

当我显示表单时,字段标签是“ CreatedById”,而不是元数据类中指定的显示属性(“创建者”)。我知道AddProviderTransparent起作用了,因为如果我尝试使用CreatedById字段为空提交表单,则会收到错误消息(“创建者不能为空”)。

编辑:这是剃刀文件(我已经清除了不重要的东西(divs等)。

@model App.Models.WorksOrderCreateModel

@using (Html.BeginForm())
{
    @Html.LabelFor(model => model.WorksOrder.CreatedById, new { @class = "control-label col-md-3" })
    @Html.TextBoxFor(model => model.WorksOrder.CreatedById, new { @class = …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc entity-framework asp.net-mvc-5

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

为基于字典的类创建多个自定义比较器

我希望我的班级从字典中返回一个列表,但允许使用预先编写的比较方法进行自定义排序.在我正在转换的原始java代码中,我在我的类中使用Google Guava Ordering创建了比较方法,然后在一个公共比较器方法中传递了一个名为以下的方法,类似于:

public List<Word> getWords(Comparator c) { }
Run Code Online (Sandbox Code Playgroud)

我试图在C#中重新创建它,但我无法弄清楚如何.基本上在下面的代码中,您可以看到每种类型的排序有三个版本,此外我最终为每个返回值创建两个列表,这似乎有点浪费.

我看着创建委托但有点迷失,然后想我可以创建一个IComparable,但后来看到IComparator然后看到Sort方法需要一个Comparator.

有人可以指出我以最佳方式将其转换为单一类型的"GetWords",允许客户调用GetWords从预先提供的排序集中检索排序列表.

public partial class WordTable
{
    private Dictionary<string, Word> words;

    public WordTable()
    {
        //for testing
        words = new Dictionary<string, Word>();
        words.Add("B", new Word("B", WordTypes.Adjective));
        words.Add("A", new Word("A", WordTypes.Noun));
        words.Add("D", new Word("D", WordTypes.Verb));
    }
    public List<Word> GetWords()
    {
        return words.Values.ToList();
    }
    public List<Word> GetWordsByName()
    {
        List<Word> list = words.Values.ToList<Word>();
        return list.OrderBy(word => word.Name).ToList();
    }
    public List<Word> GetWordsByType()
    {
        List<Word> list = words.Values.ToList<Word>();
        return list.OrderBy(word => word.Type).ToList();
    }
}
Run Code Online (Sandbox Code Playgroud)

c#

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