创建例外的最佳做法是什么?我刚看到这个,我不知道我是否应该感到恐惧或喜欢它.我在书中多次阅读异常永远不会持有字符串,因为字符串本身可以抛出异常.这有什么真相吗?
基本上我从脚本的理解是这样做,所以所有内部Python库将有一个共同的错误消息格式(迫切需要的东西)所以我可以理解为什么把错误消息字符串是一个好主意.(几乎每种方法都会抛出异常,因为完全不需要无效的通过).
有问题的代码如下:
"""
Base Exception, Error
"""
class Error(Exception):
def __init__(self, message):
self.message = message
def __str__(self):
return "[ERROR] %s\n" % str(self.message)
def log(self):
ret = "%s" % str(self.message)
if(hasattr(self, "reason")):
return "".join([ret, "\n==> %s" % str(self.reason)])
return ret
class PCSException(Error):
def __init__(self, message, reason = None):
self.message = message
self.reason = reason
def __str__(self):
ret = "[PCS_ERROR] %s\n" % str(self.message)
if(self.reason != None):
ret += "[REASON] %s\n" % str(self.reason)
return ret
Run Code Online (Sandbox Code Playgroud)
这只是冰山一角,但有人可以给我一些洞察力,这是一个什么使这个可怕的想法?或者,如果有一个更好的异常编码过程/风格.
这对我来说还不是很清楚.例:
NSArray*arr = [[NSMutableArray alloc] init];
我的意思是......是的,它有效.但是:为什么我可以告诉编译器"嘿,我的var只是一个NSArray,你只需要保留空间以便它适合那里"然后,实际上,有一个大的,胖的NSMutableArray进入那个有道路的地方更多的方法,更多的实例变量,只需要更多的空间.我的意思是......这怎么可能?
我会理解另一种方式:左侧是大胖子NSMutableArray,右侧是小型NSArray.根据我的理解,超类总是比子类更小,更复杂.子类可能会覆盖一些东西,但它也可能会添加一些东西.对?
想象一下,你买了一个车库,因为你的妻子通过电话告诉你,她买了一些可以开车的东西.然后,它不仅仅是你想象的小型车.她买了一辆大卡车.它不适合那里.
那么我该如何思考这个问题呢?;)
这适用于社区维基,只是因为其他人也感到困惑.
我们一直是英特尔商店.所有开发人员都使用英特尔机器,最终用户的推荐平台是英特尔,如果最终用户希望在AMD上运行,那就是他们的了望.也许测试部门有一台AMD机器在哪里检查我们没有运送任何完全损坏的东西,但那是关于它的.
直到几年前我们才使用MSVC编译器,因为它并没有真正提供超出SSE级别的许多处理器调优选项,所以没有人担心代码是否有利于x86供应商而不是另一个.但是,最近我们一直在使用英特尔编译器.我们的东西肯定会从它(在我们的英特尔硬件上)获得一些显着的性能优势,并且它的矢量化功能意味着更少需要去asm/intrinsics.然而,人们开始对英特尔编译器是否真的不能为AMD硬件做得如此出色而感到有些紧张.当然,如果你进入英特尔CRT或IPP库,你会看到许多cpuid查询显然设置跳转表到优化的功能.看起来英特尔似乎不太可能为AMD芯片做任何好事.
任何有这方面经验的人都可以评论这在实践中是否是一个大问题?(我们还没有真正对AMD进行任何性能测试).
更新2010-01-04:支持AMD的需求从来没有变得足够让我自己做任何测试.还有在这个问题上一些有趣的阅读在这里,这里和这里虽然.
更新2010-08-09:看来英特尔-FTC和解有话要说这个问题-请参阅"编译器和肮脏的把戏"的部分文章.
当使用mmap分配一些匿名mem时,我们经常将起始地址设置为0/null,因此mmap将自己计算出起始地址.并且为了获得起始地址,它会工作以为整个虚拟存储空间找到一个可以分配mem的chuck的空洞.我想这是用户cpu而不是sys cpu计算的.如果虚拟内存是碎片化的,那么找到起始地址的时间会使用更多的用户cpu,是我理解正确的
我已经设计了很长一段时间的Web服务,但直到最近才开始提供"复杂的"WCF服务.我对WCF中对抽象类型明显缺乏"适当支持"感到困惑.当然 - 你可以使用它们 - 确保你可以让它们"工作"......你最终不会得到你想要的东西......
第一个问题是,如果从具有抽象类型的wsdl生成代码,则会得到截然不同的代码,因为它会回退到xmlserializer而不是DataContractSerializer.这显然有点不太理想......我想使用花哨的新的更快的序列化器,请谢谢...(以及Service/DataContract附带的所有内容)
另一方面 - 如果你先从代码开始并将正确归属的抽象wcf类暴露为Web服务,那么暴露的wsdl不包含abstract ="true"属性,使得"抽象类"在技术上具体......这不是我当然想要的......
我有一个解决方法,但它涉及一个疯狂的'hackery'我首先创建wsdl/xsd合同,删除任何abstract ="true"(哦 - 我不能提到我不能在xsd中使用属性然后svcuitl结果......但是现在我离开了ac#api,它有一个CONCRETE抽象类,然后我需要修改它来添加抽象关键字......这个'有效'但它是一个巨大的皮塔 - 而且不容易'可编写脚本'......
这一切都被打败了!我希望有人可以向我解释'为什么'这是......我欢迎那些没有引用"可靠"资源的答案,但我真的在等待这个人告诉我 - 用适当的文件(比如来自好朋友Don Box本人)为什么这才是......因为我只是不明白......
谢谢大家 - 如果有人想了解更多细节 - 请告诉我!
更新样本请求的更新 - 以c#开头
[ServiceContract]
public interface IShapeTest
{
[OperationContract]
AbsShape EchoShape(AbsShape shape);
}
public class ShapeTestImpl : IShapeTest
{
public AbsShape EchoShape(AbsShape shape)
{
return shape;
}
}
[KnownType(typeof(Square))]
public abstract class AbsShape
{
[DataMember]
public int numSides;
}
public class Square : AbsShape
{
public Square() : base()
{
numSides = 4;//set the numSides …Run Code Online (Sandbox Code Playgroud) 我正在创建一个入门工具包,它将已编译的程序集从开源项目安装到GAC中,以便更容易地引用模板中的程序集.由于他们将加入GAC,因此需要签署.
我是否需要密码保护并保护密钥文件,或者是否可以将其保持打开并将文件包含在源代码管理中?
如何查询并显示记录,直到达到一定数量?
假设您要选择学生,直到学生的总金额达到1000?
Student ID Student Name Student Money
--------- ----------- --------------
1 John 190
2 Jenny 290
3 Ben 200
4 Andy 120
5 Lynna 300
Run Code Online (Sandbox Code Playgroud)
如果我想在500点停下来,我会得到1号和2号记录(190 + 290).如果我想在1000停止,我将获得记录1直到4.
我在自定义小部件中继承了QProgressBar,并使用以下代码覆盖了paintEvent方法:
void myProg::paintEvent(QPaintEvent *pe)
{
QProgressBar::paintEvent(pe);
QRect region = pe->rect();
QPainter *painter = new QPainter(this);
QPen *pen = new QPen;
painter->begin(this);
painter->setBrush(Qt::red);
int x = this->x();
int y = this->y();
pen->setWidth(10);
painter->setPen(*pen);
painter->drawLine(x,y,x+100,y);
painter->end();
}
Run Code Online (Sandbox Code Playgroud)
我试图显示一条红线作为起点,看看我可以将自己的修改添加到小部件.但是,这不起作用.我只将小部件视为常规QProgressBar.关于什么可能出错的任何想法?
我试图让存储过程绝对怪异,而且我没有太多运气.是否有任何免费工具可以帮助查看查询或至少将语法格式化为更易读的格式?
任何提示和技巧也欢迎.
我使用的数据库类型是MS sql server 2005
c++ ×3
c ×1
c# ×1
cpu ×1
exception ×1
gac ×1
intel ×1
mmap ×1
mysql ×1
objective-c ×1
open-source ×1
optimization ×1
python ×1
qprogressbar ×1
qt ×1
solaris ×1
sql ×1
sum ×1
wcf ×1
widget ×1