在80年代从16位转换到32位期间,int是16位或32位.使用当前的64位转换命名法,我知道ILP32和LP32机器的传播非常均匀.当时我相信它被理解为int总是遵循任何给定架构的寄存器或指针宽度,并且long将保持32位.
快进25年,我发现LP64是相当主流的,但直到我遇到64位平台[我在2007年发现桌面Linux :)],我总是期望IP64成为下一个合乎逻辑的步骤.
char <= short <= int <= long关系如何适应这种将整数类型固定到我们留下的每个平台的新方案?{l,u}case)WORD/ DWORD在各种平台上使用相关?INT16位的表单.Windows会不会发展成LLP64还是为时已晚?int选择这次被抛弃,而不是在32位过渡期间?假设我有以下对象:
class Foo(object):
def __init__(self, name=None):
self.name = name
def __repr__(self):
return self.name
Run Code Online (Sandbox Code Playgroud)
以及包含多个实例的列表,例如:
list = [Foo(name='alice'), Foo(name='bob'), Foo(name='charlie')]
Run Code Online (Sandbox Code Playgroud)
如果我想找到一个具有给定名称的对象,我可以使用以下内容:
def get_by_name(name, list):
return [foo for foo in list if foo.name == name][-1]
Run Code Online (Sandbox Code Playgroud)
这显然意味着:
print get_by_name('alice', list)
>> alice
Run Code Online (Sandbox Code Playgroud)
但是,是否有更有效的数据结构或方法来检索此类对象?实际上,对象名称仅在运行时已知,并且理论上可以在对象的整个生命周期中发生变化.
有什么建议?
更新:
感谢Matt Joiners的回答,我更新了它以支持多个具有相同名称的Foo:
class Foo(object):
_all_names = {}
def __init__(self, name=None):
self._name = None
self.name = name
@property
def name(self):
return self._name
@name.setter
def name(self, name):
if self._name is not None:
self._all_names[self._name].remove(self)
self._name = name
if name …Run Code Online (Sandbox Code Playgroud) 嗨,我一直在编写一个控制台版本的扫雷,只是为了学习一些Python的基础知识.它使用记录在字典中的坐标系.现在,我已经能够成功实现它,但是使用坐标的"x,y"变量来访问或分配特定坐标键的值似乎......笨重.我提出了两种不同的方法,但是当我不得不经常使用它们时,它们似乎并不优雅.
for i in range(1, ROWS+1):
for j in range(1, COLS+1):
mine_field["%i,%i" % (i,j)] = 0
Run Code Online (Sandbox Code Playgroud)
要么
for i in range(1, ROWS+1):
for j in range(1, COLS+1):
mine_field[",".join([i, j])] = 0
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但在分配或交换值时确实看起来很乱.有没有更好的方法可以做到这一点?
提前致谢.
我在Mercurial(HG)存储库上有一个项目.我即将开始一个新项目,我想首先使用与上述项目完全相同的代码.这两个项目完全不相关.即使他们做类似的事情,每个人都是为不同的客户,不同的名字,不同的品牌,不同的艺术.
我的问题是:
建议的方法是什么:
非常感谢.
我可以安全地忽略哪些文件/文件夹以包含在git中?
我复制了一个好的项目,删除了它的gen和bin文件夹,并尝试运行该应用程序.Android Launch窗口显示"您的项目包含错误,请在运行您的应用程序之前修复它们.在Package Explorer中项目左侧的图标上有一个红色X.虽然gen文件夹不存在于Windows资源管理器,它在包资源管理器中.
我有以下代码
int m[4]={1,2,3,4}, *y;
y=m;
*y = f(y++); // Expression A
Run Code Online (Sandbox Code Playgroud)
我的朋友告诉我,Expression A行为定义明确,但我不确定他是否正确.
根据他的功能f()介绍sequence point介于两者之间,因而行为定义明确.
有人请澄清一下.
PS:我知道我们不应该为实际目的编写这样的代码.这只是为了学习的目的.:)
我正在使用加载图像
OpenFileDialog open = new OpenFileDialog();
Run Code Online (Sandbox Code Playgroud)
选择文件后,"打开"将填充多个项目,包括路径.
现在我想将文件加载到文件流(或类似的东西)中,通过网络服务发送......这可能吗?
谢谢
我有三段代码给我带来麻烦.
这个设置cookie
setcookie("verify", "$value", time()+3600);
Run Code Online (Sandbox Code Playgroud)
这个位于不同的页面上,它确保cookie具有正确的值
if ( $_COOKIE["verify"] != file("name.txt")) {
header("location: notset.html");
} else { die; }
Run Code Online (Sandbox Code Playgroud)
这个删除cookie
setcookie("verify", "", time()-3600);
Run Code Online (Sandbox Code Playgroud)
编写cookie的代码实际上并不写cookie.并且变量已设置,但无论cookie何时不设置.因此,当我通过编写"test"手动输入值并将测试写入"name.txt"并转到带有IF语句的页面时,它将带我去notset.html.关于为什么这不起作用的任何想法?
哦,当我在cookie和name.txt中输入测试时删除cookie代码.所以删除代码有效,但前两个没有.
这是正常的吗?
文档说
"可以多次调用onStart()和onStop()方法,因为活动在对用户可见和隐藏之间交替"
当我按下后退按钮时,它将返回上一个完全覆盖旧活动的活动.
这里发生了什么?
我已经在一个项目上工作了一段时间,它有一个内置的HTTP服务器,它运行在端口8080上.用户被告知通过例如http://192.168.1.4:8080/访问设备- 效果很好.最近我意识到应用程序可以使用端口80来消除对":8080"的需要,但是如果我尝试将端口设置为80,则会因"常规CFSocket错误"而崩溃.
有关如何在应用程序上为Web服务器启用端口80的任何想法?
以下是一些屏幕截图:
首先 - 在iPad上,应用程序显示您可以访问它的URL.
iPad http://enrogue.com/port80/ipad.jpg
第二 - Firefox,IP:
FF by IP http://enrogue.com/port80/firefox_byip.png
以上是来自商店的真实应用程序,它不是越狱魔法或任何东西.我知道端口<1024是为UNIX系统上的管理员保留的,所以上面的应用程序显然正在做一些特定的事情来访问端口.
android ×2
c ×2
python ×2
algorithm ×1
architecture ×1
c# ×1
c++ ×1
dictionary ×1
eclipse ×1
filestream ×1
git ×1
history ×1
iphone ×1
key ×1
list ×1
mercurial ×1
networking ×1
performance ×1
php ×1
platform ×1
variables ×1
web-services ×1
word-size ×1