我最近在我的大学开设了数据压缩课程.但是,我发现使用术语"熵",因为它适用于计算机科学而不是模棱两可.据我所知,它大致转化为系统或结构的"随机性".
计算机科学"熵"的正确定义是什么?
computer-science entropy data-compression information-theory
这个学期,我在我的大学学习了计算机图形学课程.目前,我们开始研究一些更先进的东西,如高度图,平均法线,细分等.
我来自面向对象的背景,所以我试图将我们所做的一切都放到可重用的类中.我在创建相机类方面取得了很大的成功,因为它主要取决于对gluLookAt()的一次调用,它几乎独立于OpenGL状态机的其余部分.
但是,我在其他方面遇到了一些麻烦.使用对象来表示原语并没有真正成功.这是因为实际的渲染调用依赖于很多外部事物,比如当前绑定的纹理等.如果您突然想要从特定类的表面法线更改为顶点法线,则会导致严重的问题.
我开始怀疑OO原则是否适用于OpenGL编码.至少,我认为我应该让我的课程不那么精细.
什么是堆栈溢出社区对此的看法?您的OpenGL编码最佳实践是什么?
我注意到C++中的分段错误的常见原因列表没有问题,所以我想我会添加它.
自然它是社区维基,因为没有一个正确的答案.
我认为这对于学习C++的新程序员可能有用,如果你不同意,可以随意关闭它.
目前,我正在研究新版本控制系统,作为大学最后一年项目的一部分.我们的想法是使其具有高适应性和可插拔性.
我们正在使用OSGi框架(Equinox实现)来管理我们的插件.我的问题是我找不到一个简单易用的方法来测试OSGi包.
目前,我必须使用Maven构建捆绑包,然后执行测试工具.我正在寻找像Eclipse的JUnit测试运行器这样的东西,因为它会节省我一大堆时间.
有没有一种快速简便的方法来测试OSGi包?
编辑:我不需要测试Eclipse插件或GUI组件,只需要测试OSGi包.
EDIT2:是否有一些支持JUnit4的框架?
最近,在阅读这篇博文之后,我有一个危险的想法.这个想法可以这样表达:
我不需要C++标准库提供的大部分内容.那么,为什么我不实现一个不太通用但更易于使用的版本?
作为一个例子,使用STL吐出大量难以理解和损坏的编译器错误.但是,我不关心分配器,迭代器等.那么为什么我不花几个小时来实现一个易于使用的链表类,例如?
我想从StackOverflow社区了解到的是:对于C++中的大多数现有功能而言,"滚动我自己"有哪些危险,可能的缺点和可能的优势?
编辑:我觉得人们对这个想法误解了我.当时的想法是要了解自己是否可以实现一个非常小的一组被大大简化STL功能-更多的项目来教我关于数据结构等.我不建议从头开始重新发明整个车轮,只是我需要和想要了解的部分.我想我想弄清楚的是,使用STL的复杂性是否需要创建更小,更简单的版本.
重新使用提升或类似.
我编写的大部分内容都是针对大学的,我们不允许使用外部库.所以它可以是C++标准库,也可以是我自己的类.
这个问题的客观性.
这个问题不是主观的.也不应该是社区维基,因为它不是民意调查.我想要具体的论点,强调我的方法可能出现的一个优点或一个缺点.与流行的看法相反,这不是意见,而是基于经验或良好的逻辑论证.
格式.
请为每个答案发布一个缺点或一个优势.这将允许人们一次评估个人想法而不是所有想法.
请...
没有宗教战争.我不是任何语言的粉丝.我用任何适用的东西.对于图形和数据压缩(我目前正在研究的),似乎是C++.请限制您对问题的回答,否则他们将被低估.
在C++中,函数的声明和定义,变量和常量可以像这样分开:
function someFunc();
function someFunc()
{
//Implementation.
}
Run Code Online (Sandbox Code Playgroud)
实际上,在类的定义中,通常就是这种情况.通常使用.h文件中的成员声明类,然后在相应的.C文件中定义这些类.
这种方法有哪些优缺点?
说我有一个这样的课:
class Test
{
int x;
SomeClass s;
}
Run Code Online (Sandbox Code Playgroud)
我像这样实例化它:
Test* t = new Test;
Run Code Online (Sandbox Code Playgroud)
是堆栈上的x还是堆?怎么样?
假设您正在编写必须实现HTTP协议的应用程序.协议非常复杂,可能允许多个命令,具体取决于它们所处的事务的哪个阶段.
例如,看看SMTP.如果在接收"rcpt"和"mail"之前发送"data"命令,则SMTP服务器必须抛出错误.
我的问题是:在代码中处理诸如此类协议的最佳方法是什么?有没有与此相关的设计模式?
编辑:这个问题涉及实施协议背后的理论.我知道使用库是实践中最好的方法.
给定诸如(0,0,0)的点和诸如(x,y,z)的向量.将负(0,0,0)中心的负Z轴对齐到该向量方向的最简单方法是什么?使用OpenGL的示例将受到欢迎,但不是必需的.
我有一个名为"Matrix.h"的标题中定义的模板矩阵类类.
在我的程序中反复使用某些矩阵.我以为我会在"Matrix.h"头文件中定义这些,如下所示:
const Matrix<GLfloat> B_SPLINE_TO_BEZIER_MATRIX(4, 4, values);
Run Code Online (Sandbox Code Playgroud)
当我这样做时,g ++抱怨我重新定义了有问题的常量.发生这种情况是因为我将Matrix.h包含在两个不同的源文件中.当编译这些文件的目标文件时,两者最终都会得到上面矩阵的定义,从而导致出现错误消息.
我的问题是如何避免这种情况?我想要一个可以访问多个文件的常量,但我不知道在哪里放置它.