在ruby中快速生成长字符串的最佳方法是什么?这有效,但速度很慢:
str = ""
length = 100000
(1..length).each {|i| str += "0"}
Run Code Online (Sandbox Code Playgroud)
我还注意到,创建一个相当长的字符串,然后将其附加到现有字符串,达到所需的长度会更快:
str = ""
incrementor = ""
length = 100000
(1..1000).each {|i| incrementor += "0"}
(1..100).each {|i| str += incrementor}
Run Code Online (Sandbox Code Playgroud)
还有其他建议吗?
我正在尝试在ruby中生成自签名证书,但遇到了麻烦.这就是我现在所拥有的:
require 'openssl'
if ARGV.length != 3 then
puts "USAGE: #{__FILE__} <type[der|pem]> <private-out> <public-out>"
exit
end
type = ARGV[0].downcase
privateKeyFile = ARGV[1]
publicKeyFile = ARGV[2]
values = [{ 'C' => 'US'},
{'ST' => 'SomeState'},
{ 'L' => 'SomeCity'},
{ 'O' => 'Organization'},
{'OU' => 'Organizational Unit'},
{'CN' => "somesite.com"}]
name = values.collect{ |l| l.collect { |k, v| "/#{k}=#{v}" }.join }.join
key = OpenSSL::PKey::RSA.generate(1024)
pub = key.public_key
ca = OpenSSL::X509::Name.parse(name)
cert = OpenSSL::X509::Certificate.new
cert.version = 2
cert.serial = 1
cert.subject = …Run Code Online (Sandbox Code Playgroud) 也许我已经把我的套接字编程方式混淆了,但不应该像这样的工作吗?
srv = TCPServer.open(3333)
client = srv.accept
data = ""
while (tmp = client.recv(10))
data += tmp
end
Run Code Online (Sandbox Code Playgroud)
我几乎尝试了从客户端TCPSocket"获取"数据的所有其他方法,但所有这些方法都挂起并且永远不会突破循环(getc,get,read等).我觉得我忘记了什么.我错过了什么?