我想在linux上的perl程序中快速实现某种锁定,这可以在不同的进程之间共享.
所以我用作mkdir原子操作,1如果目录不存在0则返回,如果存在则返回.我在关键部分后立即删除目录.
现在,有人向我指出,这不是一般的好习惯(独立于语言).我认为这很好,但我想问你的意见.
编辑:为了显示一个例子,我的代码看起来像这样:
while (!mkdir "lock_dir") {wait some time}
critical section
rmdir "lock_dir"
Run Code Online (Sandbox Code Playgroud) 如果它包含非ASCII字节,我不知道如何将Python的bitarray转换为字符串.例:
>>> string='\x9f'
>>> array=bytearray(string)
>>> array
bytearray(b'\x9f')
>>> array.decode()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0x9f in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
在我的例子中,我只想以某种方式从bytearray中获取字符串'\ x9f'.那可能吗?
我最近对关于"new-ish"JavaScript的文章中的以下术语感到困惑:
似乎其中一些是其他的子集,特征,但我不清楚哪些子集.
我有一个带GWT前端的java应用程序,可以做一些事情.
现在我想实现用户及其注册,例如"忘记密码",登录和注销.
我的问题是 - 这是一个事情,几乎每个人都在他们的应用程序,但有很多事情要做错(哈希密码,有人伪造"忘记密码",等等),所以必须有一些通用的解决方案或图书馆.
我的意思是客户端的一些GUI小部件和服务器端的东西,它们将处理用户登录并保存他们的密码.
这样的事情存在吗?
我需要用Java精确地表示一些数字,并在小数点后固定小数点的数量;小数点后,我不在乎。(更具体地说-金钱和百分比。)
我现在使用Java自己的BigDecimal,但发现它确实很慢,并且开始在我的应用程序中显示。
因此,我想用“规则”整数和定点算术(长整数具有足够大的精度满足我的目的)来解决它。
现在,我想我不是第一个遇到这种问题的人,并且已经有一个针对该问题的库,该库已经实现了乘法/除法-但似乎并非如此。
现在,我很可能可以自己写(也许我会写),但是,实际上,我真的是第一个需要它的人吗?还没有图书馆吗?
我有一个文本文件,有很多行.我也有一定数量的线要打印出来,按一定的顺序排列.比方说,例如,"5,3,10,6".按此顺序.
这样做有一些简单和"规范"的方式吗?(使用"标准"Linux工具和bash)
当我尝试这个问题的答案时
它总是按照文件中的顺序打印行.
我想在Python中按范围切片,似乎不可能.
>>> a='0123456789'
>>> a[range(1,2)]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: string indices must be integers, not list
Run Code Online (Sandbox Code Playgroud)
我为什么要这样做?我想在我的脚本的一部分中定义"切片",将其放在变量中,并在其他地方进行实际切片.像这样:
myrange=range(1,2)
a='0123456789'
a[myrange] #<-----raises TypeError
Run Code Online (Sandbox Code Playgroud)
是否有可能,如果没有,如何做正确和正确的事情?
在node.js的应用程序中,我使用crypto模块进行对称加密/解密.
我使用的是AES-256-CTR.我最初假设crypto.createCipher将"正常工作"和"手动"的细节.现在我正在阅读文档:
注意:createCipher使用OpenSSL函数EVP_BytesToKey派生密钥,摘要算法设置为MD5,一次迭代,无盐.缺少盐允许字典攻击,因为相同的密码始终创建相同的密钥.低迭代计数和非加密安全散列算法允许非常快速地测试密码.
根据OpenSSL建议使用pbkdf2而不是EVP_BytesToKey,建议您使用crypto.pbkdf2派生密钥并自行定义,然后使用createCipheriv()创建密码流.
好吧,我可以自己推导出IV和键.
但是,我不确定,这样做的正确和推荐方法是什么 - 我应该分别对不同的盐进行密钥推导吗?我应该进行一次密钥推导,然后将其减半吗?对于这个特定的用例,我应该使用盐吗?我应该随机生成盐并将其与数据一起保存吗?
我在我的应用程序中使用 CloseNotifier,代码如下所示
func Handler(res http.ResonseWriter, req *http.Request) {
notify := res.(CloseNotifier).CloseNotify()
someLogic();
select {
case <-notify:
someCleanup()
return;
default:
}
someOtherLogic();
}
Run Code Online (Sandbox Code Playgroud)
我注意到 CloseNotifier 现在已被弃用。从源代码:
// Deprecated: the CloseNotifier interface predates Go's context package.
// New code should use Request.Context instead.
Run Code Online (Sandbox Code Playgroud)
但是,我不确定如何在这里使用 Request.Context。
我有节点 14.13.0,即使有--harmony-top-level-await,顶级 await 也不起作用。
$ cat i.js
const l = await Promise.new(r => r("foo"))
console.log(l)
$ node -v
v14.13.0
$ node --harmony-top-level-await i.js
/Users/karel/i.js:1
const l = await Promise.new(r => r("foo"))
^^^^^
SyntaxError: await is only valid in async function
at wrapSafe (internal/modules/cjs/loader.js:1001:16)
at Module._compile (internal/modules/cjs/loader.js:1049:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32)
at Function.Module._load (internal/modules/cjs/loader.js:791:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
java ×2
javascript ×2
linux ×2
node.js ×2
python ×2
python-2.7 ×2
aes ×1
bash ×1
cryptography ×1
ecmascript-6 ×1
ecmascript-7 ×1
encryption ×1
fixed-point ×1
go ×1
gwt ×1
locking ×1
pbkdf2 ×1