小编use*_*812的帖子

确定性地创建 .jar 文件(每次都相同)

我使用 jar 命令来构建 jar 文件。在尝试使用 md5 签名缓存 jar 文件时,我发现从完全相同的来源构建的 jar 具有不同的 md5 签名。
经过仔细检查,我发现每次创建 jar 时,内容都完全相同(diff -qr 为空)。事实证明,创建的时间戳被编码在 jar 文件中,该文件丢弃了 md5 签名。其他人在这里也发现了同样的情况。

甚至有一篇关于如何每次使用 maven 创建相同的 jar 文件的博客文章。但是,我想要一个简单的解决方案,使用命令行使用现成的命令,例如 jar 和 zip(可能必须在没有安装权限的服务器上执行此操作),这可能会导致与我目前使用的“功能性”jar 相同jar 命令。

编辑:为了我的目的,即使罐子不相同,也可以快速找到 md5 以便跨版本相同。到目前为止,我发现的唯一方法是提取 jar 中的文件并将所有组件文件 md5。但是我担心这对于更大的罐子来说很慢,并且会破坏缓存它们以避免首先构建它们的目的。有没有更好更快的解决方案?

java ant zip md5 jar

6
推荐指数
1
解决办法
1076
查看次数

OCaml:首先应用第二个参数(高阶函数)

我定义了一个这样的高阶函数:

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

3
推荐指数
1
解决办法
560
查看次数

在不使用类的情况下隐藏OCaml中的函数参数

我是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类,涉及模块/子模块/仿函数的解决方案会很好!

state ocaml functional-programming function

3
推荐指数
1
解决办法
124
查看次数

为什么do_GET比do_POST快得多

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)

post http basehttpserver httpserver basehttprequesthandler

3
推荐指数
1
解决办法
669
查看次数