我使用 jar 命令来构建 jar 文件。在尝试使用 md5 签名缓存 jar 文件时,我发现从完全相同的来源构建的 jar 具有不同的 md5 签名。
经过仔细检查,我发现每次创建 jar 时,内容都完全相同(diff -qr 为空)。事实证明,创建的时间戳被编码在 jar 文件中,该文件丢弃了 md5 签名。其他人在这里也发现了同样的情况。
甚至有一篇关于如何每次使用 maven 创建相同的 jar 文件的博客文章。但是,我想要一个简单的解决方案,使用命令行使用现成的命令,例如 jar 和 zip(可能必须在没有安装权限的服务器上执行此操作),这可能会导致与我目前使用的“功能性”jar 相同jar 命令。
编辑:为了我的目的,即使罐子不相同,也可以快速找到 md5 以便跨版本相同。到目前为止,我发现的唯一方法是提取 jar 中的文件并将所有组件文件 md5。但是我担心这对于更大的罐子来说很慢,并且会破坏缓存它们以避免首先构建它们的目的。有没有更好更快的解决方案?
我定义了一个这样的高阶函数:
val func : int -> string -> unit
Run Code Online (Sandbox Code Playgroud)
我想以两种方式使用这个功能:
other_func (func 5)
some_other_func (fun x -> func x "abc")
Run Code Online (Sandbox Code Playgroud)
即,通过使用已定义的参数之一创建函数.但是,第二种用法比第一种用法更简洁和可读.是否有更可读的方法来传递第二个参数来创建另一个函数?
ocaml functional-programming readability higher-order-functions
我是OCaml的初学者,所以这个问题可能是微不足道的.我有一些这样的功能:
let rec
f1 <list of args> state = ...
and
f2 <list of args> state = ...
and
f3 <list of args> state = ...
and
f4 <list of args> state = ...
;;
Run Code Online (Sandbox Code Playgroud)
这些函数中的每一个都使用最后一个参数作为状态调用其他函数.因此,对于每个执行'树',state是一种全局只读变量.如何以抽象出状态的方式模拟这个,但函数可以访问它.请注意,我不想使用OCaml类,涉及模块/子模块/仿函数的解决方案会很好!
Python的BaseHTTPRequestHandler对于通过邮寄发送的表单存在问题!
我见过其他人问同样的问题(为什么GET方法比POST更快?),但我的情况时差太大(1秒)
Python服务器:
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import datetime
def get_ms_since_start(start=False):
global start_ms
cur_time = datetime.datetime.now()
# I made sure to stay within hour boundaries while making requests
ms = cur_time.minute*60000 + cur_time.second*1000 + int(cur_time.microsecond/1000)
if start:
start_ms = ms
return 0
else:
return ms - start_ms
class MyServer(BaseHTTPRequestHandler, object):
def do_GET(self):
print "Start get method at %d ms" % get_ms_since_start(True)
field_data = self.path
self.send_response(200)
self.end_headers()
self.wfile.write(str(field_data))
print "Sent response at %d ms" % get_ms_since_start()
return
def …Run Code Online (Sandbox Code Playgroud)