如果我获取包含7位ASCII表之外的字符的字符串的长度,我会在Windows和Linux上得到不同的结果:
Windows: strlen("ö") = 1
Linux: strlen("ö") = 2
Run Code Online (Sandbox Code Playgroud)
在Windows机器上,字符串显然以"扩展"ascii格式编码0xF6
,而在Linux机器上,它以UTF-8编码0xC3 0x96
,其长度为2个字符.
为什么C字符串在Windows和Linux机器上的编码方式不同?
我在与Code Review的论坛成员讨论时提出了这个问题(参见本主题).
我有一个 python 脚本,我想在 AWS 上作为 lambda 函数运行。不幸的是,解压后的包比允许的 250 MB 大,主要是由于 numpy (85mb) 和 pandas (105mb)
我已经做了以下但大小仍然太大:
1) 排除未使用的文件夹:
package:
exclude:
- testdata/**
- out/**
- etc/**
Run Code Online (Sandbox Code Playgroud)
2)压缩python包:
custom:
pythonRequirements:
dockerizePip: true
zip: true
Run Code Online (Sandbox Code Playgroud)
如果我解压缩由serverless package
我生成的 zip 文件,我会找到一个.requriements.zip
包含我的 python 包的.virtualenv/
文件夹,然后文件夹中还有我的虚拟环境,其中再次包含所有 python 包。我试图排除 中的.virtualenv/../lib/python3.6/site-packages/**
文件夹serverless.yml
,但随后在调用该函数时出现内部服务器错误。
还有其他参数可以减小封装尺寸吗?
I have a git repository with a bunch of large csv in them, which I don't want to clone, so I came across git sparse-checkout and this post: https://github.blog/2020-01-17-bring-your-monorepo-down-to-size-with-sparse-checkout/
From this post I took following:
git clone --no-checkout https://github.com/john_doe/repo-with-big-csv.git
cd repo-with-big-csv
git sparse-checkout init --cone
Run Code Online (Sandbox Code Playgroud)
Then I edit the .git/info/sparse-checkout
and add the following (adapted from example in page above):
/*
!**/*.csv
Run Code Online (Sandbox Code Playgroud)
但它似乎不能正常工作。有些文件夹克隆后git pull
,有些则没有。我还注意到一个警告,当我这样做时,git sparse-checkout list
我得到:
warning: unrecognized pattern: '**/*.csv'
warning: disabling cone pattern matching
/* …
Run Code Online (Sandbox Code Playgroud) 我有一个foo.hex
由两个进程访问的文件.一个进程可以O_RDONLY
访问,另一个进程可以O_RDWR
访问.
在第一次启动系统时,读取过程不应在写入过程初始化之前访问该文件.
因此,我写了这样的东西来初始化文件.
fd = open("foo.hex", O_RDWR|O_CREAT, 0666);
flock(fd, LOCK_EX);
init_structures(fd);
flock(fd, LOCK_UN);
Run Code Online (Sandbox Code Playgroud)
这仍然使读者进程在初始化之前访问该文件的可能性.
我不能找到一种方法,open()
并flock()
以原子方式.除了互斥体之外,还有其他可能性以尽可能少的开销以优雅的方式实现我的目标(因为它只使用过一次,系统第一次启动时)?