forcecharlie 最近的时间轴更新
forcecharlie

forcecharlie

V2EX 第 115646 号会员,加入于 2015-05-07 13:15:50 +08:00
今日活跃度排名 25311
根据 forcecharlie 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
forcecharlie 最近回复了
ZIP 可以强制使用 UTF8 编码,这个时候在单个条目中会设置特殊的字段,其他时候就是 codepage ,一般而言与压缩和解压的代码页有关,如果你的是 CP936 ,压缩的 codepage 不是这个就可能乱码,正确的做法是 all UTF-8 ,但历史原因都做的不好,有一种解决方案,对文件名做编码检测,解压时自动转换,这个很少有 ZIP 解压软件做到。

利益相关:做包管理器解压 ZIP 刚好做过编码检测自动转换。
2023-07-18 10:22:23 +08:00
回复了 LxnChan 创建的主题 问与答 求问一下 git 提交时报错 invalid format 怎么解
你这个问题可能的解决方案有两种:
第一种看文件的属性,Git for Windows ( MINGW64 )的 SSH 可能要求 SSH 私钥的 filemode 是 0600 ,你可以在 Git for Windows (MINGW64) 的 bash 中 stat /c/Users/Username/.ssh/id_rsa ,如果不正确,则使用 chmod 0600 /c/Users/Username/.ssh/id_rsa 然后重试。
第二种是看文件换行符,Git for Windows ( MINGW64 )的 SSH 需要 LF 的换行符,而 Windows 移植的 SSH 可能能处理 CRLF ,将私钥的换行符换回去就可以了。

在 cmd 中的 SSH 实际上是微软 PowerShell 团队移植的 [OpenSSH]( https://github.com/PowerShell/Win32-OpenSSH),与 Git for Windows ( MINGW64 )的并不一致。

这里我也只是做个推测,并没有验证。
2023-02-15 10:34:41 +08:00
回复了 Yeen 创建的主题 程序员 问个 win32 技术问题
类似自解压软件的逻辑,可以把 exe 追加到 dll 尾部,然后解析 PE ,算出所有 sections 的大小就可以得出 exe 的偏移,然后解压出来。PE 文件可以,POSIX 系统中 ELF 也可以这么玩。
2023-01-05 10:15:46 +08:00
回复了 balabalaXMX 创建的主题 C++ 为什么哈希表是无序的?
如果你知道 unordered_map 的存储原理,你就知道它为啥是无序的。
unordered_map 使用的是字符串哈希算法去将 Key 转变成一个数字,然后这个数对 bucket 取余,这样实现存储和读取,但是你迭代的时候可不是这么玩的,而是 bucket 一个个遍历。
当然,实际情况比这复杂。

不同的 STL 采用的哈希算法一般是不同的,比如 MSVC STL 使用的是 FNV1a:

```
// These FNV-1a utility functions are extremely performance sensitive,
// check examples like that in VSO-653642 before making changes.
#if defined(_WIN64)
_INLINE_VAR constexpr size_t _FNV_offset_basis = 14695981039346656037ULL;
_INLINE_VAR constexpr size_t _FNV_prime = 1099511628211ULL;
#else // defined(_WIN64)
_INLINE_VAR constexpr size_t _FNV_offset_basis = 2166136261U;
_INLINE_VAR constexpr size_t _FNV_prime = 16777619U;
#endif // defined(_WIN64)

_NODISCARD inline size_t _Fnv1a_append_bytes(size_t _Val, const unsigned char* const _First,
const size_t _Count) noexcept { // accumulate range [_First, _First + _Count) into partial FNV-1a hash _Val
for (size_t _Idx = 0; _Idx < _Count; ++_Idx) {
_Val ^= static_cast<size_t>(_First[_Idx]);
_Val *= _FNV_prime;
}

return _Val;
}

```

https://github.com/microsoft/STL/blob/main/stl/inc/xhash

而 libc++ 用的是 murmur2 ( 32bit ) cityhash64 ( 64bit ): https://github.com/llvm/llvm-project/blob/main/libcxx/include/__functional/hash.h
2022-09-26 10:11:19 +08:00
回复了 x199ian 创建的主题 git git 协议可能被中间人攻击吗?
git 协议与 Git Over SSH/ Git Over HTTP 不一样,git 协议是非安全协议,传输流没有加密环节,公网传输可能是不安全的,Git Over SSH (ssh:// or [email protected]:some/some.git) 走的是 SSH 安全通道,Git Over HTTP 可以走 https 。

很多代码托管平台并不开放 git 协议,但可以使用 git 协议作为内部存储节点之间的传输协议。

利益相关:从事 git 代码托管开发多年。
2022-09-15 10:03:35 +08:00
回复了 dangyuluo 创建的主题 C++ 怎样在 C++里用 C-style 按行读取文件并不分配 heap 内存?
用栈变量就可以按行读取了,如果是 Windows 用 ReadFile 如果是其他系统用 read ,换行的话用 memchr 快速查找 '\n',不用 fstream 就可以实现。当然这里为了支持任意长度的一行,你需要引入状态。
2022-07-07 10:19:44 +08:00
回复了 syhsyh9696 创建的主题 问与答 遇见这种 Git 警告应该怎么解决?
cat .git/packed-refs 看看有没有
Github Copilot 我还可以免费用
2022-05-17 10:32:20 +08:00
回复了 soupure 创建的主题 git 为什么 git 不能获取远程最新的 log 必须要 pull 才能看到
升级 git 待最新版本,可以使用浅表克隆特定的 commit ,也可以使用部分克隆,当然你这个需求最好使用平台的 API ,那个简单的多。

如果是 Github ,你还可以使用 RSS/Atom 的方式去获取 commit 信息:

eg:

curl https://github.com/baulk/baulk/commits/master.atom
2022-05-17 10:23:53 +08:00
回复了 soupure 创建的主题 git 为什么 git 不能获取远程最新的 log 必须要 pull 才能看到
@FrankHB 部分克隆解君愁,但命令稍微有点复杂。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1088 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 10ms · UTC 19:03 · PVG 03:03 · LAX 11:03 · JFK 14:03
Developed with CodeLauncher
♥ Do have faith in what you're doing.