小编In *_*ico的帖子

C#中的这个参数修饰符?

我对这段代码感到好奇:

public static class XNAExtensions
{
    /// <summary>
    /// Write a Point
    /// </summary>
    public static void Write(this NetOutgoingMessage message, Point value)
    {
        message.Write(value.X);
        message.Write(value.Y);
    }
    // ...
};
Run Code Online (Sandbox Code Playgroud)

this关键字在参数类型旁边的含义是什么?我似乎无法在任何地方找到任何关于它的信息,即使在C#规范中也是如此.

c#

21
推荐指数
2
解决办法
6355
查看次数

跨类提供Java属性?

我选择使用属性文件来自定义某些设置.我使用以下代码在类中提供属性对象

Properties defaultProps = new Properties();
    try {
        FileInputStream in = new FileInputStream("custom.properties");
        defaultProps.load(in);
        in.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

我是否必须将此添加到每个班级?可能不是因为那时每个类都会打开一个流到这个文件.但我不确定如何妥善处理这个问题.我应该创建一个类MyProperties并在任何类需要属性中实例化它吗?

提前致谢!

java properties

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

AES解密算法

我要简短地说一下.我想要实现自己的AES加密/解密程序已经有一段时间了.加密程序运行良好,加密没有任何错误或奇怪的输出(因为我已经将我的程序的输出与工作的商业输出进行比较,结果是相同的).

维基百科是我在这个实现中的指南,我在其中读到"使用相同的加密密钥将一组反向回合应用于将密文转换回原始明文."

我实现了几个模块:

  1. 添加圆键
  2. 转移行
  3. 子字节
  4. 混合柱

我还实现了上面模块的几个反向实现:

  1. 反向移动行
  2. 反向子字节
  3. 反向混合柱

注意:我没有实现反向轮密钥,因为它是用加密密钥对明文进行异或,而异或的反转是异或(如果我错了,请纠正我)

所以我按照我加密的相反顺序推出这些模块,但从来没有得到我的纯文本:

expandkey128(key);
rev_subbytes(data);  
rev_shiftrows(data);
addroundkey(data,key,10);

for(int i = 9; i>= 1; i--) { 
    rev_subbytes(data); 
    rev_shiftrows(data);
    rev_mixColum(data);
    addroundkey(data,key,i);
}

addroundkey(data,key,0);

// Please note that I also did from 0 to 10 ,
// instead of 10 to 0 and didn't workout
Run Code Online (Sandbox Code Playgroud)

而且我想,也许我不应该实现模块的反向模型,也许我必须使用那些我加密的模块,只是按相反的顺序; 好吧猜怎么着?没用!:

expandkey128(key);
addroundkey(data,key,0);

for(int i = 1; i<= 9; i++) {
    subbytes(data); 
    shiftrows(data);
    mixColum(data);
    addroundkey(data,key,i);
}

subbytes(data);
shiftrows(data);
addroundkey(data,key,10);
Run Code Online (Sandbox Code Playgroud)

所以这是一个问题:出了什么问题?|| 如果你愿意,应用这些所谓的模块或功能的正确顺序是什么?

cryptography aes

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

浮点数的标志

有没有一种简单的方法来确定浮点数的符号?

我进行了实验并想出了这个:

#include <iostream>

int main(int argc, char** argv)
{
 union
 {
  float f;
  char c[4];
 };

 f = -0.0f;
 std::cout << (c[3] & 0x10000000) << "\n";

 std::cin.ignore();
 std::cin.get();
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

其中(c [3]&0x10000000)为负数给出的值> 0但我认为这要求我做出以下假设:

  • 机器的字节大8位
  • 一个浮点数是4个字节大吗?
  • 机器最重要的位是最左边的位(字节顺序?)

如果任何这些假设错误或者我错过了任何假设,请纠正我.

c++ floating-point signedness

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

是否可以在C或C++中实现小型磁盘操作系统?

不是想做任何这样的事情,但我想知道是否可以在C中实现"整个操作系统"(不一定像Linux或Microsoft Windows那样大,但更像是一个类似DOS的操作系统)和/或C++使用no或little程序集.

通过实现操作系统,我的意思是从头开始使用C或C++将启动加载程序和内核启动到图形驱动程序(以及可选的GUI).通过编译器访问低级功能,我在C++中看到了一些低级的东西.这可以在整个操作系统上完成吗?

我不是在问这是不是一个好主意,我只是想问它是否可以远程实现?

c c++ operating-system systems-programming

10
推荐指数
1
解决办法
479
查看次数

如何检查我的AVL树实现是否正确?

家伙.我想我已经创建了一个AVL树实现,但由于AVL Tree是一个非常复杂的结构,我需要测试它.所以问题是 - 我该如何测试呢?你有什么想法吗?到目前为止,我有以下测试:

  1. 基本健全性检查 - 检查每个节点高度是否等于最大值.子节点的高度+ 1,余额在[-1,1],左子键<此节点的键<右子键,并且没有循环引用(如节点的左子节点本身就是节点);

  2. 检查AVL树上的inorder遍历(以及整个二进制搜索树)将按顺序从底层集返回值;

  3. 检查AVL树的高度是否严格小于1.44*log2(N + 2)-1(N是元素数) - 由AVL树创建者证明;

  4. 视觉检查 - 效果不好,我尝试画一棵树(第一行的rootnode,下一行的直接孩子,第三行的rootnode直接孩子的孩子,等等),但这只适用于小树,大树变得一团糟;

  5. (?????)俄罗斯维基百科说,实验证明,两次插入需要一次重新平衡,五次移除也需要一次重新平衡,但实际上是这样吗?英语维基百科对此一无所知,对于我的AVL,需要进行两次插入或四次删除所需的重新平衡,这并不完全相同.

也许这些测试已经足够,但如果还有更多测试,不难实现,为什么不这样做?

testing algorithm avl-tree data-structures

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

Windows上的"正确"对话框/ UI字体

当使用CreateWindow动态创建控件(例如编辑控件)时,它通常以丑陋(粗体无衬线字体)字体开始.

通常我通过抓住父对话框的字体并将其设置为控件来解决这个问题 - 我甚至不能说这是不是一个好主意.

我如何"合法"获取正确的字体?

windows user-interface winapi fonts

8
推荐指数
1
解决办法
1628
查看次数

未解决的外部符号与glib和VS C++

从源代码编译FluidSynth 1.1.1.我使用glib进行了未解析的外部符号,使用Visual C++ Express 2010,如何在IDE中正确链接glib.lib?我也需要wsock库吗?

1>------ Build started: Project: fluidsynth_dll, Configuration: Release Win32 ------
2>------ Build started: Project: fluidsynth_lib, Configuration: Release Win32 ------
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(990,5): warning MSB8012: TargetPath(C:\Users\Wildfire\Desktop\fluidsynth-1.1.1\winbuild\fluidsynth_dll\.\Release\fluidsynth_dll.dll) does not match the Linker's OutputFile property value (C:\Users\Wildfire\Desktop\fluidsynth-1.1.1\winbuild\fluidsynth.dll). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile).
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(992,5): warning MSB8012: TargetName(fluidsynth_dll) does not match the Linker's OutputFile property value (fluidsynth). …
Run Code Online (Sandbox Code Playgroud)

c visual-c++

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

用Bresenham线算法绘制线条

我的计算机图形作业是仅使用绘制点的能力来实现OpenGL算法.

所以显然我需要开始drawLine()工作才能画出其他东西. drawLine()必须仅使用整数来完成.没有浮点.

这就是我的教导.基本上,线可以分为4个不同的类别,正陡,正浅,负陡和负浅.这是我应该画的图片:

预期结果

这是我的程序绘制的图片:

实际结果

颜色是为我们完成的.我们给出了顶点,我们需要使用Bresenham的Line算法根据起点和终点绘制线条.

这是我到目前为止:

int dx = end.x - start.x;
int dy = end.y - start.y;

//initialize varibales
int d;
int dL;
int dU;

if (dy > 0){
        if (dy > dx){
                //+steep
                d = dy - 2*dx;
                dL = -2*dx;
                dU = 2*dy - 2*dx;

                for (int x = start.x, y = start.y; y <= end.y; y++){
                        Vertex v(x,y);
                        drawPoint(v);

                        if (d >= 1){
                                d += dL;
                        }else{
                                x++;
                                d += dU;
                        } …
Run Code Online (Sandbox Code Playgroud)

c++ graphics bresenham

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

如何释放()一个正确的malloc()结构?

我有一个结构malloc()'d,在使用它们之后,我想释放()它,但我的程序冻结在这里.谁能告诉我,我做错了什么?

这是我的代码:

struct data  
{  
char *filename;  
char *size;  
};   
 //primarypcs is a long type variable
struct data *primary = (struct data *)malloc( primarypcs * sizeof( struct data ) );  
memset( primary, 0, sizeof(struct data *) * primarypcs );  
...
...
...
for ( i = 0; i < primarypcs; i++ )  
{
   free( primary[i].filename );  //<----my program freezes here
   free( primary[i].size );      //<----or here
}
free( primary );  
Run Code Online (Sandbox Code Playgroud)

提前致谢!

kampi

编辑:

我如何正确malloc内存的文件名和大小?

EDIT2:

对不起,但我很着急,我没有告诉你所有你需要的信息.现在让我这样做:)基本上,我想创建一个应用程序,它获取两个给定驱动器/文件夹的文件列表,然后比较它们.我想(并且仍然这样),最简单的方法是,当我将文件名及其大小存储在如上所述的结构中时.所以我必须动态分配内存(我认为这就是他们所说的)文件名和大小以及结构的内容.

c malloc free pointers

7
推荐指数
1
解决办法
2816
查看次数