小编seh*_*ehe的帖子

新的linux tc排队规则创造了爆发...耗尽了知识

我想为linux内核编写一个新的tc排队规则.目标是排队等等.十个数据包,然后将它们全部发送出去(我知道,这对网络来说并不是一件好事,但我想对此进行一些研究).

那么,已经做了什么:我有一个新的sched-module(enqueue,dequeue函数等)的框架,它也正确编译并正确工作(一个数据包排队,一个数据包发送 - 没什么特别的).我正在使用与正在运行的内核相同的源代码在ubuntu maverick上编译它,并将我的模块放在Makefile和Kconfig中.

我想,每次调用enqueue函数,之后qdisc_restart(在sch_generic.c中)调用dequeue函数 - 并且只发送一个数据包.

我的问题是:如何从我的模块向网络接口发送多个数据包,就像我收集的那样.10包现在我想把它们全部发送出去?

我尝试使用与qdisc_restart(和锁定机制)相同的参数调用sch_direct_xmit函数(来自sch_generic.c) - 但是,然后,我的模块的编译失败:未知符号sch_direct_xmit(但greping/proc/kallsyms为此给了我结果).有什么想法,那有什么不对?如果需要一些代码,请告诉我(我在sched_generic.c中包含了相同的.h)

BR Christoph

linux queuing linux-kernel

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

在我的单元测试中夹具和工厂之间有什么区别?

这里有点困惑,工厂和灯具有什么区别?

所以我正在使用工厂女孩,当我使用工厂创建一个对象时,它是否应该持久保存到db?或者是固定装置是什么,数据通过模型等持久存储到数据库.

或者这些完全不相关:)

rspec ruby-on-rails factory-bot

5
推荐指数
2
解决办法
2419
查看次数

脚本中的“history -s”不起作用

我对 linux 比较陌生,并且疯狂地尝试精益 bash,最终是 zsh。无论如何,目前这让我很难过:

#!/bin/bash
history -s "a_string"
Run Code Online (Sandbox Code Playgroud)

.... 不起作用。我已经对这个想法尝试了十几种变体,但没有任何效果。有任何想法吗?

bash

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

在文本文件的顶部添加一行

我的应用程序提取数据并将其附加到文本文件,但我需要找出如何以编程方式查看文本文件的第一行,看它是否与以下文本匹配:

日期时间,VirtualIP,VirtualPort,VirtualName,DestinationIP,DestPort,状态,期望

如果它确实然后继续执行正常功能(下面的代码段),如果第一行与上面不同,那么我想在第一行插入上面的内容而不覆盖当前的那些.我怎样才能做到这一点?(基本上把所有东西都按下一行,这样我就可以在第一行添加我想要的东西了)...顺便说一句,这是保存为可以在excel中打开的csv文件.

try
{
    // ...
    for (int j = 0; j < memberStatus.Result.Count; j++)
    {
        VirtualMemberStatus status = memberStatus.Result[j];

        //text += String.Format("Name: {4}, Member: {0}:{1}, Status: {2}, Desired: {3}" + Environment.NewLine, status.Member.Address, status.Member.Port, status.EffectiveStatus, status.DesiredStatus, virtualKey.Key);
        text += String.Format("{5},{4},{0},{1},{2},{3}" + Environment.NewLine, status.Member.Address, status.Member.Port, status.EffectiveStatus, status.DesiredStatus, virtualKey.Key.Replace(":", ","), DateTime.UtcNow);
    }
}
catch
{
    //ERROR CODE 2
    //MessageBox.Show("Error occurred, check device name (case senstive) and admin group. This error may also occur due to connection loss, try again.");
    errors += …
Run Code Online (Sandbox Code Playgroud)

.net c# csv formatting

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

烦人的 vim 标签行标签

这不是缩进问题。

Vim 的窗口导航行为真的让我很恼火。假设当前打开的windows有这个配置,并且文件wp-config-sample.php是当前的:

在此处输入图片说明

由于所有其他文件都在不同的目录中,如果我将它们中的任何一个集中在执行 a <ESC>gt,它们都会更改其内容,并且选项卡也会调整大小:

在此处输入图片说明

这是一个简单的示例,但是当打开了很多选项卡并且我无法弄清楚我在哪里时,问题就会真正出现,因为焦点选项卡的位置与原始选项卡的位置发生了显着变化。

我期望的良好行为是 Firefox 上的相同系统,其中聚焦和未聚焦的选项卡永远不会改变它们的位置,而聚焦的选项卡只会稍微强调一下。

有什么办法让它停止吗?

vim tabs window

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

解析成几个向量成员

我想以递归方式解析字符串并将结果存储在一个结构中.我编写了一个可以处理一次迭代的解析器.输入格式如下:

v  1.5 2.0 2.5
v  3.0 3.5 4.0
f 1 2 3
f 4 5 6 
v  4.5 5.0 5.5
v  6.0 6.5 7.0
f 7 8 9
f 10 11 12
Run Code Online (Sandbox Code Playgroud)

问题是它只解析前4行,它在第三行遇到'v'时停止.完整的代码如下.如何修改此代码,以便将其余输入解析为同一个结构?我已经尝试将启动规则修改start = vertex >> elementsstart = *(vertex >> elements),但这只会产生巨大的编译错误.同样如此start = +(vertex >> elements).有什么想法我应该如何修改规则?

#include <iostream>
#include <sstream>
#include <fstream>

#include "boost/spirit/include/qi.hpp"
#include "boost/spirit/include/support_iso8859_1.hpp"
#include "boost/fusion/include/adapt_struct.hpp"


struct ElemParseData
{
    std::vector<float> verts;
    std::vector<unsigned int> idx;
};

BOOST_FUSION_ADAPT_STRUCT(
    ElemParseData,
    (std::vector<float>, verts)
    (std::vector<unsigned int>, idx) …
Run Code Online (Sandbox Code Playgroud)

c++ boost-spirit wavefront boost-spirit-qi

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

如何在不关闭它们的情况下切换fstream文件(同时输出文件) - C++

我有一点C++问题,我无法通过在线浏览解决.这是我的代码(摘录):

if(File.is_open()) {
    while(!File.eof())  {
        i++;
        getline(File,Line);
        if(i>=2) {                //Skip Headers
            int CharCount=0;
            for(int CharPosition=0; CharPosition<Line.size(); CharPosition++)                       {
                if(Line[CharPosition]==',') {
                    Length=CharPosition;
                    break;
                }
            }
            NameText=Line.substr(0,Length);
            Path= Path_Folder + "\\" + NameText + ".csv";
            if(!CheckExistance(Path.c_str())) {
                fstream Text_File;
            }
            Text_File.open(Path, fstream::in | fstream::out | fstream::app);
            Text_File<<Line<<"\n";
            Text_File.close();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常,但我想改变它Text_File每次进入while循环时关闭它的事实.

基本上,这个程序在很多较小的文件中分割出一个大的输入文件.随着我的小文件变得越来越大,执行变得越来越慢(正常).我的目标是让所有较小的文件(Text_File)在这个while循环中打开,只需将fstream指针(指针?)从一个切换到另一个.

我试图改变为:

...

NameText=Line.substr(0,Length);
Path= Path_Folder + "\\" + NameText + ".csv";

if(!CheckExistance(Path.c_str())) {
    fstream Text_File;
}

if(!Text_File.open()) {
    Text_File.open(Path, fstream::in |fstream::out | fstream::app);
}

Text_File<<Line<<"\n"; …
Run Code Online (Sandbox Code Playgroud)

c++

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

C++使用类Classname;

我正在查看cocos2dx c ++源代码,其中有很多地方使用它们

class Classname;
Run Code Online (Sandbox Code Playgroud)

例如在CCNode.h第43行

class CCCamera;
Run Code Online (Sandbox Code Playgroud)

Classname是他们正在使用的类的名称,后来我没有看到任何我之前从未见过的引用.

我想知道这意味着什么.

c++ oop class cocos2d-x

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

撤消合并/重置更改状态

我使用 Gerrit 犯了一个致命的错误,想知道是否有人可以为此提供解决方案/想法:

目前的情况是我有一个分支feature-foo,我们的团队正在将更改推送到该分支以供审核。其中一些更改已经提交/合并,并且仍有大量更改供审核。现在,昨天我决定将补丁集推送到特定更改,其中包含大约 15 个之前的更改(尚未合并)。

我不小心推过了代码审查(是的,我确实有这些权限,是的,我很愚蠢,为了我自己的安全没有停用它们 - 吸取了教训)。这导致这 15 个更改/提交被直接推送到分支而不是代码审查。所以现在所有这些更改都MERGED在 Gerrit 中进行了标记。我的直接想法是push -f使用我知道最初是feature-foo.

这正确地将分支重置到它应该在的位置。但是 - 这 15 个更改仍然MERGED在 Gerrit 中标记。我想要的是:我需要将这些更改返回到“正在审核”状态,因为它们实际上仍在进行中。

任何想法,任何人?我无法想象这之前没有发生在某人身上......

问候,

--qu

编辑 1:澄清 - 错误推送的提交导致快进 - 而不是合并。尽管如此,对于 Gerrit 来说,这些更改/提交仍然是“已合并”,就好像有人在 Gerrit-Web 界面中按下了“提交更改”一样。所以 -这个问题实际上是关于 Gerrit,而不是 Git 本身

关键词:意外推送,意外合并

git gerrit

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

unordered_map,IP地址作为密钥

我正在尝试在我的应用程序中构建链表的列表.该列表将包含唯一的IP地址,并且对于每个IP地址,我都有一个应用程序列表.我正在尝试使用unordered_map构建它,将Boost :: boost :: asio :: ip :: address作为键,将std :: list作为值:

#include <boost/unordered/unordered_map.hpp>
#include <iostream>
#include <list>

using namespace boost::asio::ip;
using namespace std;

typedef int     ApplicationID;
typedef address IPAddress;
typedef list <ApplicationID> APP_LIST;
typedef boost::unordered::unordered_map <IPAddress, APP_LIST> USER_MAP;

USER_MAP user_map;
Run Code Online (Sandbox Code Playgroud)

后来我尝试获取与IP地址关联的列表,如下所示:

APP_LIST *list = &user_map[ip];
Run Code Online (Sandbox Code Playgroud)

但是我在编译中遇到错误,所以请指出问题是什么?

  1. 是否可以使用Boost:IPaddress作为关键功能?

  2. 另一个问题是可以使用char [some_size]作为键值吗?

错误输出:

In file included from /boost/functional/hash/hash.hpp:535:0,
                 from /boost/functional/hash.hpp:6,
                 from /boost/unordered/unordered_map.hpp:21,
                 from ipc_module.cpp:18:
/boost/functional/hash/extensions.hpp: In member function ‘std::size_t boost::hash<T>::operator()(const T&) const [with T = boost::asio::ip::address, std::size_t = long unsigned int]’:
/boost/unordered/detail/unique.hpp:331:55:   instantiated …
Run Code Online (Sandbox Code Playgroud)

boost c++11

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