使用简单的文件加密/解密进行一些练习,目前只是读取一堆字节并一次一个地对每个字节执行适当的位操作,然后将它们写入输出文件.
这种方法看起来很慢.例如,如果我想要将每个字节的XOR异或0xFF,我会遍历每个字节并将XOR循环0xFF,而不是做一些魔术,并且每个字节都快速异或.
是否有更好的方法来执行位操作而不是一次执行一个字节?
我已定义了一个包含多个字段的自定义对象.
例如,假设我有一个Student对象,它由名称,ID和年龄组成.为了比较两个学生并确定他们是否是同一个学生,我实施了一种__ eq__方法,该方法将返回两个学生的年龄,姓名和ID是否匹配.
def __eq__(self, other): return self.name == other.name and self.ID == other.ID and self.age == other.age
请记住,学生只是一个例子,因此不考虑学生ID往往是独特的事实.
假设我有以下注册列表,其中包含任意数量的Student对象
[S1, S2, S3] [S2, S3] [S3, S5, S4] [S1, S4, S2, S1]
我想创建一些包含以下元素的数据结构
S1, S2, S3, S4, S5
最简单的方法是初始化一些数据结构,它可以容纳大量的东西,抓取一个项目,检查它是否存在于结构中,如果不存在则添加它.
new_list = some_new_list
for each list of students:
for each student in the list:
check if the student is in new_list
#decide what to do
如果我决定将其作为一个简单的列表来实现,我可能会进行大量的比较,因为我的列表会继续增长,特别是如果我有大量的学生和注册列表.
实现这个的有效方法是什么?两者都用于比较两个对象,然后使用该比较方法生成一组唯一的对象.
编辑:所以我尝试了一个简单的设置实现.
>>>a = Student("sample", 1234, 18)
>>>b = Student("sample", 1234, 18)
>>>students … 我有一组名称如下的文件名
"file001" "file0001" ... "file002" "file0002" ... ... "file100" "file0100" ... ...
模式非常明显:
name, padded_number
因此,如果我想对第一列中的文件使用字符串格式,我会写
"%s%3d" %[name, number]"
但这个硬编码填充(3).我怎样才能这样做,以便我可以将pad指定为变量,并以某种方式格式化提供的整数以使用指定的填充?
如何将一堆实例变量从一个对象添加到另一个对象?
例如,想象您拥有基础机器人的机器人,您可以使用附加组件对其进行自定义.
class Robot
def initialize
@name = "simple robot"
@power = nil #no power
@speed = nil
# more attributes
end
def add_attributes(addon)
@power = addon.power
@speed = addon.speed
#the rest of the attributes that addon has
end
end
我想重新编写add_attributes方法来简单地迭代每个插件的属性,而不是逐个编写它们,因为可能有几十个属性.
一些插件可能有Robot没有的实例变量,我也想将它们添加到Robot.就像在运行中创建实例变量一样?
只需对两个非常相似的图像(一个图像是另一个图像的编辑版本)进行逐像素比较,然后将差异写入新文件。
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
pix1 = src.GetPixel(x, y);
pix2 = comp.GetPixel(x, y);
if (pix1 != pix2)
{
dest.SetPixel(x, y, pix1);
}
}
}
Run Code Online (Sandbox Code Playgroud)
src并且comp是两个图像进行比较,并dest仅仅是一个新的形象。这需要相当长的时间。
什么是更快的方法?
也许没有必要为了比较而实际获取像素?
这不是特定于 Ruby 的,但我目前正在使用 Ruby。
这是一个提供文本打印功能的类。
class Printer
# some static methods
def self.fancy_print(text)
# do fancy formatting
end
def self.print(text)
fancy_print(text)
end
# some instance methods
def initialize(text)
@text = text
end
def print
#somehow call fancy_print(@text)
end
end
Run Code Online (Sandbox Code Playgroud)
在一个类中同时提供实例和静态方法是不是设计很糟糕?
有时我想保留几个Printer躺着的实例。其他时候,我只需要说Printer.print(text),只需抓取该文本,而不必为以后存储它,因此会产生一个静态print方法和一个实例print方法。
为什么下面的代码会像我希望的那样运行?我的印象是一个类只能有一个超类,并且在第一次定义类时放置除了原始超类之外的其他东西会引发类型不匹配异常.
class Test
end
class MyTest < Test
def run
p 'my test'
end
end
class MyTest < Object
def run
p 'redefine my test'
end
end
MyTest.new.run
Run Code Online (Sandbox Code Playgroud)
结果
redefine my test
Run Code Online (Sandbox Code Playgroud) 如何在剪贴板中复制二进制数据?例如,如果我将数字1打包为4字节的小端整数,我希望我的剪贴板显示00 00 00 01
对于文本数据,这是微不足道的,可以选择使用unicode文本或ascii文本.
Clipboard.SetData(DataFormats.Text, "Some text");
Clipboard.SetData(DataFormats.UnicodeText, "?");
Run Code Online (Sandbox Code Playgroud)
但是对于二进制数据,我不知道该怎么做.
我非常喜欢吸管,因为我不知道我在问什么,但问题就在这里.
我一直在寻找纯粹兴趣的3D建模,并且遇到了骨骼的概念.现在,我甚至不太确定在wiki上查看之后是什么骨头,但它们看起来像是现实生活中的骨架和诸如此类的抽象,因此在一个人类的模型中我只是将它们视为骨架.
根据我的理解,骨骼是由x,y和z轴上的平移,旋转和缩放定义的.(这不仅仅是一个点吗?)
我有兴趣在blender或max中获取模型并导出用于定义这些骨骼的信息(无论它们是什么).我绝对可以在这些程序中看到这些骨头,但是我想把它变成文本文件有没有办法导出它?
我不确定术语,所以在寻找潜在客户时遇到一些麻烦.
基本上假设我有类似的东西
<book>
<genre>sci-fi</genre>
<genre>happy</genre>
</book>
<book>
<genre>romance</genre>
</book>
Run Code Online (Sandbox Code Playgroud)
我想查询一些没有"科幻"作为其中一种类型的书籍.我尝试了一些简单的事情
//book[//book/genre != "sci-fi"]
Run Code Online (Sandbox Code Playgroud)
认为它将返回所有没有具有"科幻"价值的流派元素的书籍,但它仍将返回第一个,因为它的一个类型不是"科幻"
另外,我怎么会以一种让人们知道我在说什么的方式来表达这个问题呢?
ruby ×4
c# ×2
python ×2
3d-modelling ×1
3ds ×1
blender ×1
class ×1
clipboard ×1
encryption ×1
image ×1
inheritance ×1
performance ×1
terminology ×1
xpath ×1