小编seh*_*ehe的帖子

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

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

日期时间,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
查看次数

什么是Windows DIB?

我只是在论坛中讨论是否有一个替代的Windows图形库到GDI和Direct X. 有人提到WinDIB.可悲的是,他没有解释更多.

现在我搜索了谷歌.

  • Windows DIB似乎没有维基百科的文章.

  • 似乎某些图形库(如SDL)使用WinDIB后端.

那究竟什么是WinDIB?它有任何文件吗?我在哪里可以了解更多信息?

c windows directx gdi dib

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

在struct inode中存储一些数据

您好,我是内核编程的新手.我正在编写一个基于wrapfs模板的小内核模块来实现备份机制.这纯粹是为了学习的基础.

我正在扩展wrapfs,以便在进行write调用时,wrapfs透明地在单独的目录中创建该文件的副本,然后对该文件执行write.但我不希望我为每次写入调用创建一个副本.

一个天真的方法可能是我检查该目录中是否存在文件.但我认为,对于每次通话检查,这可能是一个严重的惩罚.

我还可以检查第一次写入调用,然后使用private_data属性存储该特定文件的值.但那不会存储在磁盘上.所以我需要再次检查一下.

我也在考虑利用修改时间.我可以节省修改时间.如果较旧的修改时间早于该时间,那么只创建一个副本,否则我将不会做任何事情.我尝试使用inode.i_mtime,但即使在调用write之前它也是修改过的时间,应用程序也可以修改那个时间.

所以我想在磁盘上的inode中存储一些值,表明它已经创建了备份.那可能吗?欢迎任何其他建议或方法.

linux filesystems kernel inode linux-kernel

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

烦人的 vim 标签行标签

这不是缩进问题。

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

在此处输入图片说明

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

在此处输入图片说明

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

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

有什么办法让它停止吗?

vim tabs window

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

是否允许使用递归提升精神语法?

我即将为类似mathematica的语言编写一个解析器,并且已经发现,有时会调用我的精神语法来解析表达式的子部分.

即如果我要解析

a+b*c+d 
Run Code Online (Sandbox Code Playgroud)

parse()在查询"+"符号时调用'b*c'部分会很方便.

使用同一个语法实例时可以这样做吗?(语法参数为'*this')

虽然我还不完全相信这是否是完成这项特定任务的最佳方式,但我发现这个问题相当有趣,因为我在文档中找不到任何内容.

如果我使用这种技术,我不应该依赖于类本地变量或全局变量.但我想知道它是否主要由精神设计所允许.

编辑:

我的语法实例如下:

class MyGrammar : public boost::spirit::qi::grammar<...>  
{  
    /* a few rules. Some with local and/or inherited attributes */  
    MyGrammar( void )  
    {
         /* assign all the rules, use a few 'on_error' statements */
         // In one or two rules I would like to invoke parse(...,*this,...)  
         // on a subrange of the expression
    }
}  
Run Code Online (Sandbox Code Playgroud)

谢谢!

c++ boost boost-spirit

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

如何以OpenXML格式更快地阅读

当我使用OLEDB时,从Excel工作表中读取3200行只需2-3秒.现在我改为OpenXML格式,现在从Excel表读取3200行需要1分钟以上.

以下是我的代码:

public static DataTable ReadExcelFileDOM(string filename) 
{ 
    DataTable table; 

    using (SpreadsheetDocument myDoc = SpreadsheetDocument.Open(filename, true)) 
    { 
        WorkbookPart workbookPart = myDoc.WorkbookPart; 
        Sheet worksheet = workbookPart.Workbook.Descendants<Sheet>().First(); 
        WorksheetPart worksheetPart = 
         (WorksheetPart)(workbookPart.GetPartById(worksheet.Id)); 
        SheetData sheetData = 
            worksheetPart.Worksheet.Elements<SheetData>().First(); 
        List<List<string>> totalRows = new List<List<string>>(); 
        int maxCol = 0; 

        foreach (Row r in sheetData.Elements<Row>()) 
        { 
            // Add the empty row. 
            string value = null; 
            while (totalRows.Count < r.RowIndex - 1) 
            { 
                List<string> emptyRowValues = new List<string>(); 
                for (int i = 0; i < maxCol; i++) 
                { 
                    emptyRowValues.Add(""); …
Run Code Online (Sandbox Code Playgroud)

.net c# excel openxml c#-4.0

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

尝试在 C++ 中使用递归组合模板化多项式类的相似项

我正在自学 C++。

我正在尝试组合多项式。为此,我使用简单的值组合定义了简单的类: Polynomial<T>,Term<T>Coefficient<T>(也可能只是 complex<T>)。我已经定义了所需的运算符重载。

多项式的比较通过对它们的项进行排序 ( std::sort)。

我正在工作combineLikeTerms();调用此方法时,将首先调用另一个成员方法,该方法将对此项向量进行排序。例如:

4x^3 + 5x^2 + 3x - 4 
Run Code Online (Sandbox Code Playgroud)

将是一个可能的结果排序向量。

问题

我在这个向量上使用了两个迭代器,我试图合并相同顺序的相邻项。

假设我们排序后的初始向量是这样的:

4x^3 - 2x^3 + x^3 - 2x^2 + x ...
Run Code Online (Sandbox Code Playgroud)

在函数完成其迭代后,临时堆栈向量将如下所示 2x^3 + x^3 - 2x^2 + x ...如果我们看起来仍然需要再次重构的术语。

我该怎么做呢?我正在考虑使用递归。

// ------------------------------------------------------------------------- //
// setPolynomialByDegreeOfExponent()
// should be called before combineLikeTerms
template <class T>
void Polynomial<T>::setPolynomialByDegreeOfExponent()
{
    unsigned int uiIndex = _uiNumTerms - 1;
    if ( uiIndex < …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm recursion templates vector

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

搜索/迭代boost :: spirit :: qi ::符号

如果我有一个符号表:

struct MySymbols : symbols<char, MyEnum::Fruits>
{
    MySymbols ()
        : symbols<char, MyEnum::Fruits>(std::string("MySymbols"))
    {
        add("apple", MyEnum::Apple)
           ("orange", MyEnum::Orange);
    }
};
Run Code Online (Sandbox Code Playgroud)

我想迭代表格,以便按数据值搜索符号.我不能使用lambda表达式,所以我实现了一个简单的类:

template<typename T>
struct SymbolSearcher
{
    SymbolSearcher::SymbolSearcher(T searchFor)
        : _sought(searchFor)
    {
        // do nothing
    }

    void operator() (std::basic_string<char> s, T ct)
    {
        if (_sought == ct)
        {
            _found = s;
        }
    }

    std::string found() const { return _found; }

private:
    T _sought;
    std::string _found;
};
Run Code Online (Sandbox Code Playgroud)

我正在使用它如下:

SymbolSearcher<MyEnum::Fruits> search(ct);
MySymbols symbols;

symbols.for_each(search);
std::string symbolStr = search.found();
Run Code Online (Sandbox Code Playgroud)

如果我设置断点,_found = s我可以确认_found正在设置,但是search.found()总是返回一个空字符串.我猜它与for_each中调用仿函数的方式有关,但我不知道.

我究竟做错了什么?

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

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

pthread强大的互斥锁有多安全?

我想使用Posix强大的互斥锁来保护不同进程之间的共享资源(在Linux上).然而,在不同情况下对安全性存在一些疑问.我有以下问题:

  1. 是否在内核或用户代码中实现了强大的互斥锁?

  2. 如果是后者,如果在调用pthread_mutex_lock或pthread_mutex_unlock并且共享的pthread_mutex数据结构更新时进程发生崩溃会发生什么?

    我理解如果一个进程锁定互斥锁并死掉,另一个进程中的线程将被唤醒并返回EOWNERDEAD.但是,如果正在更新pthread_mutex数据结构(在共享内存中)时,如果进程死亡(在不太可能的情况下)会发生什么?在这种情况下,互斥锁会被破坏吗?如果要调用pthread_mutex函数,映射到同一共享内存的另一个进程会发生什么?在这种情况下,互斥锁是否仍然可以恢复?

  3. 此问题适用于具有PTHREAD_PROCESS_SHARED属性的任何pthread对象.在同一个来自不同进程的对象上同时调用pthread_mutex_lock,pthread_mutex_unlock,pthread_cond_signal等函数是否安全?它们是否在不同进程中是线程安全的?

unix multithreading mutex ipc pthreads

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

提升精神istream_iterator从流中消耗太多

考虑从更复杂的代码中提取的以下示例:

#include <boost/fusion/adapted.hpp>
#include <boost/fusion/include/std_pair.hpp>
#include <boost/phoenix.hpp>
#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/support_istream_iterator.hpp>
#include <map>
#include <string>

namespace qi  = boost::spirit::qi;
namespace phx = boost::phoenix;

// The class implements a XML tag storing the name and a variable number of attributes:
struct Tag
{
    // The typedef defines the type used for a XML name:
    typedef std::string name_type;

    // The typedef defines the type used for a XML value:
    typedef std::string value_type;

    // The typedef defines the type of a XML attribute: …
Run Code Online (Sandbox Code Playgroud)

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

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