我有同事偶尔使用typedef来避免打字.例如:
typedef std::list<Foobar> FoobarList;
...
FoobarList GetFoobars();
Run Code Online (Sandbox Code Playgroud)
就个人而言,我总是讨厌遇到这样的代码,很大程度上是因为它迫使我去查找typedef所以我可以告诉如何使用它.我也觉得这种事情是一个潜在的滑坡...如果你这样做,为什么你不这样做呢?(很快,你的代码完全被混淆了).我在这个问题上发现了这个问题:
我有两个问题:1)我真的一个人不喜欢这个吗?2)如果绝大多数人认为这种typedef使用正常,你用什么标准来确定是否键入一个类型?
我想在python中子类化一个数字类型(比方说,int),并给它一个闪亮的复杂构造函数.像这样的东西:
class NamedInteger(int):
def __init__(self, value):
super(NamedInteger, self).__init__(value)
self.name = 'pony'
def __str__(self):
return self.name
x = NamedInteger(5)
print x + 3
print str(x)
Run Code Online (Sandbox Code Playgroud)
这在Python 2.4下工作正常,但Python 2.6给出了弃用警告.在较新的Python版本中,为数字类型子类化并重新定义内置类型的构造函数的最佳方法是什么?
编辑:在评论中发现这没有super()行,所以它可能是这样的:
class NamedInteger(int):
def __init__(self, value):
self.name = 'pony'
def __str__(self):
return self.name
x = NamedInteger(5)
print x + 3
print str(x)
Run Code Online (Sandbox Code Playgroud)
我相信这是有效的,因为int是不可变类型并且只有__new__方法.但是我很高兴知道一种正确的子类化方法,所以我可以用这样的行为构建一个类:
x = NamedInteger(5, 'kitty')
Run Code Online (Sandbox Code Playgroud)
第二次编辑:
最终版本现在看起来像这样:
class NamedInteger(int):
def __new__(cls, value, name='pony'):
self = super(NamedInteger, cls).__new__(cls, value)
self.name = name
return self
def __str__(self):
return self.name
x = …Run Code Online (Sandbox Code Playgroud) 如果我只是close()在输出流中调用,输出是保证的,还是需要我flush()总是调用?
如果我在一个文件中工作,更改到另一个缓冲区,然后更改回来,我丢失了我的撤消历史记录.
有没有解决这个问题?
我有奇怪的编码文件的列表:02 - Charlie, Woody and You?Study #22.mp3我想是没有那么糟糕,但也有它的Django nginx的OR似乎是受阻于一些特定的字符.
>>> test = u'02 - Charlie, Woody and You?Study #22.mp3'
>>> test
u'02 - Charlie, Woody and You\uff0fStudy #22.mp3'
Run Code Online (Sandbox Code Playgroud)
我使用nginx作为反向代理连接到django内置的webserver(仍处于开发阶段)和postgresql for my database.我的数据库和表都是en_US.UTF-8,我使用pgadmin3来查看django之外的表.我的问题有点超出了我的标题,首先我应该如何在我的数据库中保存可能很糟糕的文件名?我目前的方法是
'path': smart_unicode(path.lstrip(MUSIC_PATH)),
'filename': smart_unicode(file)
Run Code Online (Sandbox Code Playgroud)
当我打印出他们确实展示的价值观时 u'whateverthecrap'
我不确定这是否应该如何做,但假设现在我有问题试图吐出下载.
我的下载视图看起来像这样:
def song_download(request, song_id):
song = get_object_or_404(Song, pk=song_id)
url = u'/static_music/%s/%s' % (song.path, song.filename)
print url
response = HttpResponse()
response['X-Accel-Redirect'] = url
response['Content-Type'] = 'audio/mpeg'
response['Content-Disposition'] = "attachment; filename=test.mp3"
return response
Run Code Online (Sandbox Code Playgroud)
与大多数文件下载,但是当我到达02 - Charlie, Woody and You?Study …
我的朋友被问到以下问题:对象语言和面向对象语言之间有什么区别?
这是一个有点难以理解的问题.术语"对象语言"对应什么?这是否意味着"纯粹的"面向对象语言,就像维基百科的文章所说:
语言称为"纯"OO语言,因为它们中的所有内容都被一致地视为对象,从字符和标点符号等原语一直到整个类,原型,块,模块等.它们是专门为促进而设计的,甚至强制执行OO方法.示例:Smalltalk,Eiffel,Ruby,JADE,VB.NET.
我正在使用ASP.NET MVC + NHibernate + Postres堆栈编写Web应用程序.我想知道上传的图像是作为二进制blob存储在数据库中还是存储在文件系统上(仅在db中引用).我可以想到的数据库存储的一个优点是可以轻松备份/恢复所有数据,而无需恢复到文件系统复制工具.另一方面,我怀疑文件系统访问可能更快(但是在处理许多并发请求时尤其如此?)您有什么建议?
一个)
SQL语句是单个SQL命令(例如,SELECT*FROM table1或SET NOCOUNT ON).另一方面,批处理是将许多SQL语句发送到服务器以作为整体执行.批处理中的语句将编译为单个执行计划.批处理由GO命令分隔
因此,SQL语句和Batch之间的唯一区别是每个SQL语句作为单独的单元发送到服务器,因此与其他SQL语句分开编译,而Batch中的SQL语句是一起编译的?
b)我假设存储过程和批处理之间的主要区别之一是存储过程是预编译的,而批处理不是?
感谢名单
我如何阅读目录中的所有文件?
在C#中,我将获得一个DirectoryInfo对象,并将所有文件放入FileInfo []对象中.
C++中的STD命名空间中是否有类似的功能?
假设我有一个名为'Animal'的类的2个实例.
Animal有3个字段:Name,Age和Type
name字段是可空的,所以在我插入一个Animal的实例作为Lucene索引文档之前,我检查Animal.Name == null,如果是,我不会将它作为字段插入到我的文档中.如果我要检索所有动物,我会看到Name字段不存在,我可以将其值设置为null.
但是,在某些情况下我可能会说"让我找到所有尚未指定名称的动物".在这种情况下,我想从我的动物索引中检索不包含Name字段的所有Lucene.NET文档.
使用Lucene.NET有一个简单的方法吗?我想远离不必执行某种黑客来检查我的名字字段是否具有值'null'.
c++ ×2
file-io ×2
python ×2
architecture ×1
ascii ×1
asp.net ×1
asp.net-mvc ×1
c# ×1
django ×1
indexing ×1
java ×1
lucene ×1
lucene.net ×1
nginx ×1
nhibernate ×1
oop ×1
postgresql ×1
sql ×1
sql-server ×1
t-sql ×1
typedef ×1
unicode ×1
vim ×1