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,但我不是很确定.
有任何想法吗?
我必须检查磁盘上的目录是否为空.这意味着,它不包含任何文件夹/文件.我知道,有一个简单的方法.我们得到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内执行.这是非常缓慢的,我相信,它可以更快地完成.
有什么建议?
在下面的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) 如何使用公钥加密大文件,以便除了拥有私钥的人之外没有人能够解密它?
我可以制作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位的密钥,没有运气,同样的错误
我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?
我很期待你的回答.
我正在使用该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)
它似乎"-------"以某种方式覆盖了第一根弦.
我需要能够填充stackpanel,buttons但按钮必须首先出现在stackpanel的底部并向上填充.这些按钮是动态创建的,并且它们的数量未知,因此视觉上的hackery将无法正常工作.我尝试过垂直对齐,但无济于事.
任何人都可以帮我解决这个问题吗?
我正在尝试将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对应于在该进程上运行的参数.
谢谢!
我对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) 我从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)
那么,有什么想法吗?