小编ana*_*and的帖子

如何在Perl中读取文件末尾的行?

我正在使用Perl脚本来读取CSV文件并进行一些计算.CSV文件只有两列,如下所示.

One Two
1.00 44.000
3.00 55.000
Run Code Online (Sandbox Code Playgroud)

现在这个CSV文件非常大,可以从10 MB到2GB.

目前我正在使用大小为700 MB的CSV文件.我试着在记事本中打开这个文件,excel但看起来好像没有软件打开它.

我想阅读可能是CSV文件中的最后1000行并查看值.我怎样才能做到这一点?我无法在记事本或任何其他程序中打开文件.

如果我编写一个Perl脚本,那么我需要处理完整的文件以转到文件末尾,然后读取最后1000行.

有没有更好的方法呢?我是Perl的新手,任何建议都将不胜感激.

我搜索过网络,有一些脚本可用,比如File :: Tail,但我不知道它们会在windows上运行吗?

perl large-files

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

strcpy中的分段错误

考虑下面的程序

    char str[5];
    strcpy(str,"Hello12345678");
    printf("%s",str);
Run Code Online (Sandbox Code Playgroud)

运行此程序时会出现分段错误.

但是当strcpy被替换为以下时,程序运行正常.

strcpy(str,"Hello1234567");
Run Code Online (Sandbox Code Playgroud)

所以问题是当尝试复制到str超过5个字符长度的任何其他字符串时它应该崩溃.

那么为什么它不会因为"Hello1234567"崩溃而只会崩溃为"Hello12345678",即长度为13或超过13的字符串.

该程序在32位机器上运行.

c c++ undefined-behavior

6
推荐指数
3
解决办法
5993
查看次数

Android中的Floodfill算法

我无法找到Android的Floodfill算法实现.

知道Android中是否有Floodfill API,如果没有,还有其他选择吗?

graphics android

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

检测引用计数对象中的内存泄漏

我正在尝试打印调用addref和release的行.这是代码

在下面的代码中,我在ReferenceCount类上创建了其主要功能,以增加和减少引用计数.Referencemanager类跟踪引用计数,并在对象达到0时删除它.

Test1是测试类.主要是我创建了Test1指针并用CReferenceManager类包装它.现在,在创建CReferenceManager类时,将调用AddRef类,同时调用destroy Release.

如果存在内存泄漏,那么当AddRef和Release调用此时引用计数时,检测是否可以打印出FILE和LINE编号会更容易.

如果有一种方法可以打印调用AddRef和Release的FILE和LINE编号.一种方法是我可以在派生类和prinf FILE和LINE编号中覆盖AddRef和Release

//ReferenceCount.h
#include <string>
#include <Windows.h>

using namespace std;
class CReferenceCount
{
public:
   CReferenceCount();
   virtual ~CReferenceCount();
   virtual void AddRef();
   virtual bool Release();


private:
   LONG m_ref;

};


// RefCount.cpp 
//

#include "stdafx.h"
#include "ReferenceCount.h"


CReferenceCount::CReferenceCount():m_ref(0)
{
   AddRef();

}

CReferenceCount::~CReferenceCount()
{
}

void CReferenceCount::AddRef()
{
    InterlockedIncrement(&m_ref);
}

bool CReferenceCount::Release()
{
   if (InterlockedDecrement(&m_ref) == 0)
   {
      delete this;
      return true;
   }

   return false;
}



//ReferenceManager.h
#include <string>
#include <Windows.h>

using namespace std;
class CReferenceCount
{
public:
   CReferenceCount(); …
Run Code Online (Sandbox Code Playgroud)

c++ pointers memory-leaks reference-counting

6
推荐指数
2
解决办法
2540
查看次数

http post 不是从代码工作而是从邮递员工作

这是代码

public class PostRequestMain {

    private static String ReadFile(String path) {
        String entityBody = new String();
        FileReader file;
        try {
            file = new FileReader(path);
            try {
                entityBody = IOUtils.toString(file);
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
        }
        return entityBody;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
        Map map = new HashMap<String, String>();
        map.put("Content-Type", "text/plain");
        map.put("userName", "username");
        map.put("password", "pass");

        String payLoad = ReadFile("src/main/resources/SamplePayload.html"); …
Run Code Online (Sandbox Code Playgroud)

java http-post postman

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

受保护的派生类

 #include <iostream>
using namespace std;

class Base
{
    public:
        Base(){cout <<"Base"<<endl;}
        virtual ~Base(){cout<<"~Base"<<endl;}
        virtual void foo(){ cout<<"foo base"<<endl;}
};

class Derived: private Base
{
    public:
        Derived(){cout<<"Derived"<<endl;}
        virtual ~Derived(){cout<<"~Derived"<<endl;}
        virtual void  foo(){ cout<<"foo dervied"<<endl;}
};


int main(int argc, char *argv[])
{
    Base *pb = new Derived;
    Derived d;
    d.foo();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我执行上面的示例程序时,我得到以下错误:protected.cpp:在函数'int main(int,char**)'中:protected.cpp:26:错误:'Base'是'Derived'的一个不可访问的基础

为什么不可能用基指针创建Derived对象????


所以我可以创建一个Derived类的instanse

Derived d
Derived d1= new Derived;
Run Code Online (Sandbox Code Playgroud)

但是从Base类指针创建实例就像

Base * b = new derived 
Run Code Online (Sandbox Code Playgroud)

将失败.

这是因为当衍生出来并私有时,Derived不是来自Base的派生类.

它是否正确?????

c++ inheritance

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

Oleview 报错“错误加载类型库”?

类型库声明由应用程序或动态链接库 (DLL) 公开的类、接口、常量和过程。类型库通常是程序文件中的资源;它也可以是扩展名为 .tlb 或 .olb 的独立二进制文件。

那么是否有可能某些 DLL 仍然公开接口而没有被声明为 TypeLib。

实际上,我试图从 oleview 打开一个 dll 并显示错误消息“错误加载类型库”。

根据我的理解,如果我们有从 DLL 公开的接口,那么它应该由 oleview 打开,否则它不能有公开的接口或函数。

任何可能我们有dll暴露接口并且仍然无法被Oleview查看的可能性。

com dll typelib oleview

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

EnumChildWindows还是FindWindowEx?

我可以选择使用API​​ EnumChildWindows或FindWindowEx中的任何一个.

有什么建议api更好的性能导向?

FindWindowEx内部是否使用EnumChildWindows来处理特定窗口?

c++ winapi

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

在破坏CComPtr期间的异常

我有一个成员变量声明为

CComPtr<IXMLDOMDocument2> m_spXMLDoc;
Run Code Online (Sandbox Code Playgroud)

XML文档就是这样创建的

CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER,
    IID_IXMLDOMDocument2, (void**)&m_spXMLDoc));
Run Code Online (Sandbox Code Playgroud)

现在,当应用程序退出时,会抛出异常.Callstack指向p->Release()

~CComPtrBase() throw()
{
   if (p)
      p->Release();
}
Run Code Online (Sandbox Code Playgroud)

当我将鼠标悬停p在VS调试器中时,它指向一些有效的内存.

最后一个callstack指向msxm6中的异常

msxml6.dll!3d6cXX03() 
Run Code Online (Sandbox Code Playgroud)

有什么建议,可能是什么原因?我不认为这是一个CComPtr问题.

com atl exception smart-pointers visual-c++

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

服务没有及时响应启动或控制请求

我在 win32,c++ 中创建了一个服务。我能够创建该服务,但是当我尝试启动它时,出现以下错误。

[SC] StartService FAILED 1053:服务未及时响应启动或控制请求。

找到根本原因的最佳方法是什么,因为此错误消息没有传达任何有意义的信息

c++ service winapi

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