小编Noa*_*m M的帖子

为什么这段代码容易受到缓冲区溢出攻击?

int func(char* str)
{
   char buffer[100];
   unsigned short len = strlen(str);

   if(len >= 100)
   {
        return (-1);
   }

   strncpy(buffer,str,strlen(str));
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

此代码容易受到缓冲区溢出攻击,我正在试图找出原因.我认为它与len被宣布为一个short而不是一个int,但我不是很确定.

有任何想法吗?

c security buffer-overflow

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

如何快速检查文件夹是否为空(.NET)?

我必须检查磁盘上的目录是否为空.这意味着,它不包含任何文件夹/文件.我知道,有一个简单的方法.我们得到FileSystemInfo的数组并检查元素的数量是否等于零.像这样的东西:

public static bool CheckFolderEmpty(string path)
{
    if (string.IsNullOrEmpty(path))
    {
        throw new ArgumentNullException("path");
    }

    var folder = new DirectoryInfo(path);
    if (folder.Exists)
    {
        return folder.GetFileSystemInfos().Length == 0;
    }

    throw new DirectoryNotFoundException();
}
Run Code Online (Sandbox Code Playgroud)

这种方法似乎没问题.但!!从表现的角度来看,这是非常非常糟糕的.GetFileSystemInfos()是一种非常难的方法.实际上,它枚举文件夹的所有文件系统对象,获取它们的所有属性,创建对象,填充类型化数组等.所有这些只是为了简单地检查长度.那是愚蠢的,不是吗?

我只是描述了这样的代码并确定,这种方法的〜250次调用在~500ms内执行.这是非常缓慢的,我相信,它可以更快地完成.

有什么建议?

.net directory io

129
推荐指数
8
解决办法
12万
查看次数

如何让ScrollViewer在StackPanel内部工作?

在下面的WPF XAML中,ScrollViewer不起作用(它显示滚动条但不能滚动,内容从窗口向下移动到底部).

我可以将外部StackPanel更改为Grid,它将起作用.

但是,在我复制以下代码的应用程序中,我需要一个外部StackPanel.我需要对StackPanel做什么才能让ScrollViewer显示一个可用的滚动条?例如VerticalAlignment ="Stretch"Height ="Auto"不起作用.

 <StackPanel>
        <ScrollViewer>
            <StackPanel>
                <TextBlock Text="This is a test"/>
                <TextBlock Text="This is a test"/>
                <TextBlock Text="This is a test"/>
                <TextBlock Text="This is a test"/>
                <TextBlock Text="This is a test"/>
                <TextBlock Text="This is a test"/>
                <TextBlock Text="This is a test"/>
                <TextBlock Text="This is a test"/>
                <TextBlock Text="This is a test"/>
                <TextBlock Text="This is a test"/>
                <TextBlock Text="This is a test"/>
                <TextBlock Text="This is a test"/>
                <TextBlock Text="This is a test"/>
                <TextBlock Text="This is a …
Run Code Online (Sandbox Code Playgroud)

wpf xaml scrollviewer stackpanel

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

如何使用公钥加密openssl中的大文件

如何使用公钥加密大文件,以便除了拥有私钥的人之外没有人能够解密它?

我可以制作RSA公钥和私钥,但是在使用此命令加密大文件时:

openssl rsautl -encrypt -pubin -inkey public.pem -in myLargeFile.xml -out myLargeFile_encrypted.xml
Run Code Online (Sandbox Code Playgroud)

我怎样才能执行解密....

我通过以下命令创建我的私钥和公钥

openssl genrsa -out private.pem 1024
openssl rsa -in private.pem -out public.pem -outform PEM -pubout
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

RSA operation error
3020:error:0406D06E:rsa routines:RSA_padding_add_PKCS1_type_2:data too large for key size:.\crypto\rsa\rsa_pk1.c:151:
Run Code Online (Sandbox Code Playgroud)

我试图制作大小从1024到1200位的密钥,没有运气,同样的错误

linux openssl

69
推荐指数
6
解决办法
10万
查看次数

您是否需要在析构函数中删除事件处理程序?

UserControls在运行期间使用了一些在我的应用程序中创建和销毁的内容(通过创建和关闭内部带有这些控件的子窗口).
它是一个WPF UserControl并继承自System.Windows.Controls.UserControl.Dispose()我无法覆盖任何方法.
PPMM是一个Singleton具有相同的寿命为我的应用程序.
现在在我的(WPF)的构造函数中UserControl,我添加了一个事件处理程序:

public MyControl()
{
    InitializeComponent();

    // hook up to an event
    PPMM.FactorChanged += new ppmmEventHandler(PPMM_FactorChanged);
}
Run Code Online (Sandbox Code Playgroud)

我习惯在析构函数中删除这样的事件处理程序:

~MyControl()
{
    // hook off of the event
    PPMM.FactorChanged -= new ppmmEventHandler(PPMM_FactorChanged);
}
Run Code Online (Sandbox Code Playgroud)

今天我偶然发现了这件事,并想知道:

1)这是必要的吗?或者GC会照顾它吗?

2)这甚至有用吗?或者我是否必须存储新创建的ppmmEventHandler

我很期待你的回答.

c# wpf events destructor event-handling

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

c ++ boost split string

我正在使用该boost::split方法拆分字符串,如下所示:

我首先确保包含正确的标题以访问boost::split:

#include <boost/algorithm/string.hpp>
Run Code Online (Sandbox Code Playgroud)

然后:

vector<string> strs;
boost::split(strs,line,boost::is_any_of("\t"));
Run Code Online (Sandbox Code Playgroud)

这条线就像

"test   test2   test3"
Run Code Online (Sandbox Code Playgroud)

这是我使用结果字符串向量的方式:

void printstrs(vector<string> strs)
{
    for(vector<string>::iterator it = strs.begin();it!=strs.end();++it)
    {
        cout << *it << "-------";
    }

    cout << endl;
}
Run Code Online (Sandbox Code Playgroud)

但是为什么在结果中strs我只得到,"test2"而且"test3"不应该"test","test2"并且"test3",\t字符串中有(tab).

2011年4月24日更新:在我更改了一行代码后,printstrs我可以看到第一个字符串.我变了

cout << *it << "-------";
Run Code Online (Sandbox Code Playgroud)

cout << *it << endl;
Run Code Online (Sandbox Code Playgroud)

它似乎"-------"以某种方式覆盖了第一根弦.

c++ boost split

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

WPF StackPanel如何从下到上垂直填充?

我需要能够填充stackpanel,buttons但按钮必须首先出现在stackpanel的底部并向上填充.这些按钮是动态创建的,并且它们的数量未知,因此视觉上的hackery将无法正常工作.我尝试过垂直对齐,但无济于事.

wpf stackpanel

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

将awk输出保存到变量

任何人都可以帮我解决这个问题吗?

我正在尝试将awk输出保存到变量中.

variable = `ps -ef | grep "port 10 -" | grep -v "grep port 10 -"| awk '{printf "%s", $12}'`
printf "$variable"
Run Code Online (Sandbox Code Playgroud)

编辑:$ 12对应于在该进程上运行的参数.

谢谢!

linux bash shell awk centos

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

无框和透明窗口qt5

我对qt和c ++很新,我遇到了一个我似乎无法弄清楚的问题.当我点击主ui上的按钮时,我想打开一个无框和透明的窗口.当我按下主ui上的按钮时,我已经有代码工作打开一个新窗口,但我似乎无法使无框和透明部分工作.

这是我为了解这个而编写的小程序的源代码

main.cpp中

#include "learnwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    LearnWindow w;
    w.show();

    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

这是LearnWindow.h

#ifndef LEARNWINDOW_H
#define LEARNWINDOW_H

#include <QMainWindow>
#include <transwindow.h>

namespace Ui {
class LearnWindow;
}

class LearnWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit LearnWindow(QWidget *parent = 0);
    ~LearnWindow();

private slots:
    void on_pushButton_clicked();

private:
    Ui::LearnWindow *ui;
    TransWindow *winTrans;

public slots:
    void openTrans();
};

#endif // LEARNWINDOW_H
Run Code Online (Sandbox Code Playgroud)

这是learnwindow.cpp

#include "learnwindow.h"
#include "ui_learnwindow.h"

LearnWindow::LearnWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::LearnWindow) …
Run Code Online (Sandbox Code Playgroud)

c++ qt

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

如何使用Jade迭代数组创建一个html表

我从node expressjs框架开始,我遇到了这个我无法解决的问题.

我正在尝试显示一个包含一些博客文章的表(是的,一个博客......),但我没有完成它.

这是Jade模板代码:

div
  table
    thead
      tr: th Posts
    tbody
      each post, i in userPosts
        tr(class=(i % 2 == 0) ? 'odd' : 'even'): a(href='/admin/post/' + post.id) #{post.author} - #{post.title}
Run Code Online (Sandbox Code Playgroud)

这是HTML输出:

<div>
  <a href="/admin/post/1">Post 1</a>
  <a href="/admin/post/2">Post 2</a>
  <a href="/admin/post/3">Post 3</a>
  <table>
    <thead>
      <tr>
        <th>Posts</th>
      </tr>
    </thead>
    <tbody>
      <tr class="odd"></tr>
      <tr class="even"></tr>
      <tr class="odd"></tr>
    </tbody>
  </table>
</div>
Run Code Online (Sandbox Code Playgroud)

那么,有什么想法吗?

node.js express pug

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