我正在寻找用Python编写的SHA-256哈希函数的实现.我想用它来更好地理解SHA-256函数的工作原理,我认为Python是理想的语言.伪代码有一个限制,我无法运行/测试它,看看我的代码修改对输出做了什么.
我很想听听人们对在FPGA上实现编译器有多难的看法.这可能只是一个编译器后端,例如LLVM,实现只需要LLVM IR和输出机器代码.
这样做的目的是允许 - 可以这么说 - 实时执行源代码(或中间代表代码),在这个意义上:
对于给定的系统,FPGA的或多或少的静态部分可以是LLVM后端,即.决定输出什么类型的机器代码的部分,例如带有SSE4的x86-64.或带有NEON和VFP指令的ARM Thumb-2.除非您的系统具有多个CPU,否则这将保持不变.这不应该是完全静态的,因此不能在硬件中实现,因为编译器的优化是不断进行的,并且需要不时地更新.更频繁变化的FPGA部分是前端,即从给定语言产生LLVM IR的部分:C,C++,Vala等.
这个系统的巧妙之处在于代码总是针对手头系统中的CPU进行优化.在目前的情况下,很少有构建利用CPU中的所有额外功能:SSE,AVX,3DNow!,Neon,VFP.使用这种(完全假设的)方法,可以通过实时编译特定体系结构并在之后立即执行生成的指令来利用CPU的全部潜力.这对于基于ARM的系统尤其有用,在这些系统中我们需要从CPU中挤出所有的汁液,而CPU本身在编译时非常慢.
我知道gcc可以设置为使用线程,并且,我认为并行化编译器会相对容易.即,只是并行编译所有源文件.
我们也可以抛弃前端 - 编译器特定于编程语言的部分 - 并且只是将程序作为LLVM IR之类的中间表示代码进行分发.
这有什么可行的吗?
我正在尝试创建一个 F# 函数,该函数将返回int任意嵌套的s列表的总和。IE。它适用于 a list<int>、 alist<list<int>>和 a list<list<list<list<list<list<int>>>>>>。
在 Haskell 中,我会写一些类似的东西:
class HasSum a where
getSum :: a -> Integer
instance HasSum Integer where
getSum = id
instance HasSum a => HasSum [a] where
getSum = sum . map getSum
Run Code Online (Sandbox Code Playgroud)
这会让我做:
list :: a -> [a]
list = replicate 6
nestedList :: [[[[[[[[[[Integer]]]]]]]]]]
nestedList =
list $ list $ list $ list $ list $
list $ list $ list $ list $ list …Run Code Online (Sandbox Code Playgroud) 所以我一直在为 Flutter 寻找一些 ORM,我找到了两个候选对象Moor和Floor.
似乎Moor 有一个更活跃的存储库,但是当我来自 Android 世界时,Floor 似乎更类似于 我曾经喜欢的Room。
目前,我赞成使用 Floor,但在生产中使用它之前是否有任何我应该注意的隐藏问题?
据我所知,这段代码片段应该编译没有问题:
import Data.Digits (digits)
-- |convert integer to arbitrary base with specified charset
-- base/radix is charset string length.
-- eg. convert the integer 255 to hex:
-- intToBaseN 255 "0123456789abcdef" = "ff"
numToBaseN :: Integral n => n -> [Char] -> String
numToBaseN num charlst = map (\i -> charlst !! (fromIntegral i)) lst where
lst = digits (length charlst) num
Run Code Online (Sandbox Code Playgroud)
但是GHC抱怨说,num在lst表达不是Int.但是类型digits是
digits :: Integral n => n -> n -> …Run Code Online (Sandbox Code Playgroud) 文档Text.Megaparsec.Char.Lexer.charLiteral建议char '"' *> manyTill charLiteral (char '"')用于解析字符串文字(在库manyTill中的模块Control.Applicative.Combinators中定义parser-combinators)。
然而,Control.Applicative.Combinators也定义了between,它-只要我能看见-像这样使用时也应该这样做的上述建议:between (char '"') (char '"') (many charLiteral)。
但是,使用between上面的解析器不能解析字符串文字——以“意外的输入结束。期待 '”' 或文字字符“(表示永远不会检测到结束引号)而失败。为什么不呢?
此外,更一般地说,为什么不between pBegin pEnd (many p)等于pBegin *> manyTill p pEnd?
所以我写了索引的Bitcoin通过地址blockchain,使用性LevelDB数据库(Python脚本PY-性LevelDB),它会持续吃越来越多的内存,直到它崩溃.我已经在下面的代码示例中复制了该行为.当我运行代码时,它继续使用越来越多的内存,直到它耗尽了我系统上的可用RAM并且进程被杀死或抛出"std :: bad_alloc".
难道我做错了什么?我一直在写批处理对象,并且每隔一段时间提交一次,但即使我在WriteBatch对象中提交数据,内存使用量也在不断增加.我甚至在编写后删除了WriteBatch对象,所以据我所知它不会导致内存泄漏.
我的代码是以错误的方式使用WriteBatch还是py-leveldb中存在内存泄漏?
代码需要运行py-leveldb,从这里获取:https://pypi.python.org/pypi/leveldb
警告:如果运行时间过长,运行此代码将耗尽您的内存.不要在一个关键的系统上运行.此外,作为脚本运行中,我的系统在此文件夹中包含约1.5GB值得数据库文件的内存枯竭型之前,将数据写入到一个文件夹在同一文件夹(它结束了耗时超过3GB的内存).
这是代码:
import leveldb, random, string
RANDOM_DB_NAME = "db-DetmREnTrKjd"
KEYLEN = 10
VALLEN = 30
num_keys = 1000
iterations = 100000000
commit_every = 1000000
leveldb.DestroyDB(RANDOM_DB_NAME)
db = leveldb.LevelDB(RANDOM_DB_NAME)
batch = leveldb.WriteBatch()
#generate a random list of keys to be used
key_list = [''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(KEYLEN)) for i in range(0,num_keys)]
for k in xrange(iterations):
#select a random key from the key list
key_index = random.randrange(0,1000) …Run Code Online (Sandbox Code Playgroud) 我正在尝试从Python Imaging Library向Image类添加一个新方法.我想要一个名为DilateImage的新类,它与原始的Image类完全相同,除了它还包含一个dilate()函数,该函数在一个实例上执行时修改它.这是我的示例代码(不起作用):
import Image
def DilateImage(Image):
def dilate(self):
imnew = self.copy()
sourcepix = imnew.load()
destpix = self.load()
for y in range(self.size[1]):
for x in range(self.size[0]):
brightest = 255
for dy in range(-1,2):
for dx in range(-1,2):
try:
brightest = min(sourcepix[x+dx,y+dy], brightest)
except IndexError:
pass
destpix[x, y] = brightest
Run Code Online (Sandbox Code Playgroud)
当我尝试使用这个新的类类型来创建一个使用基类"open"函数的实例时,它失败了:
>>> test = DilateImage.open("test.jpg")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'function' object has no attribute 'open'
Run Code Online (Sandbox Code Playgroud)