小编Fro*_*sen的帖子

C字符串编码Windows/Linux

如果我获取包含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的论坛成员讨论时提出了这个问题(参见本主题).

c c-strings

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

减少无服务器部署包的大小

我有一个 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,但随后在调用该函数时出现内部服务器错误。

还有其他参数可以减小封装尺寸吗?

amazon-web-services aws-lambda serverless-framework

5
推荐指数
1
解决办法
2953
查看次数

git sparse-checkout ignore specific file type

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)

linux git sparse-checkout git-sparse-checkout

5
推荐指数
1
解决办法
2423
查看次数

原子打开并锁定文件

我有一个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()以原子方式.除了互斥体之外,还有其他可能性以尽可能少的开销以优雅的方式实现我的目标(因为它只使用过一次,系统第一次启动时)?

c linux file

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