V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  xziar  ›  全部回复第 1 页 / 共 1 页
回复总数  8
主要是贵,不然租几条 10G 专线,整个机柜把配置拉满,再怎么也比什么两盘位入门 NAS 体验要好吧。
当然理论上延迟会高一些,毕竟内网可以只要一跳甚至直连,机房不可能单独拉光纤进你家。
另外机房/宽带只能租给你,跟自己买设备还是有点区别的。
131 天前
回复了 ychen997 创建的主题 NAS NAS 有啥不可替代的功能?
NAS 又不是什么商标,定义本来就宽泛,你说的是哪个 NAS ?
https://i.imgur.com/3TuJKnZ.jpeg
NAS 搭 docker 或者跑几个虚拟机,那都算是迈入 homelab 了。你既然有 homelab ,NAS 功能建个虚拟机/容器就行……

虽然现在的风气好像 NAS 就必须“7x24 小时在线,备份手机照片,离线下载并存储视频资源,进 jellyfin 之类软件刮削,硬件转码后穿透给外网手机放视频”……
进安全模式好像也会蓝,但失败三次后的提示界面进 CMD 是能删除的(用的 RE 系统吧),不过 RE 系统需要解 bitlocker……
所以归根到底,bitlocker 恢复密钥丢了大概就完了
334 天前
回复了 BaymaxK 创建的主题 程序员 m.2 sata 延长线不能接同协议的 2.5G 网卡吗
B+M 能跑 SATA 也能跑 pciex2 ,但不同模式下可能用不同的 pin ,谁知道这根延长线是不是满 pin 的……
延长线兼容性问题很玄学的,不同电脑不同设备不同环境都可能跑不了或者降速。
建议先上电脑确定能识别网卡,然后直接买线去尝试,不能用再退呗。
2019-09-20 02:39:43 +08:00
回复了 hrong 创建的主题 宽带症候群 这两天 KDDI 到中国电信的线路貌似断了
家里的 comcast 宽带也被封了,全部卡在电信 /联通主干网上……平时也就 v2ray 回国。
感觉面对墙,除了 cdn,其他都是不堪一击。
2017-10-28 02:21:19 +08:00
回复了 scenix 创建的主题 C C++的 set 爆内存,求助
@yokuhama 无论什么都会用到栈内存,但 unordered_map 的数据肯定是在堆上的。

@scenix 一段代码的效率和测试数据也有关的,可能我的数据倾向于往 set 里塞重复东西,你的数据却重复比较少。不同数据没什么好比的。
C++的话,自带的 STL 的 unordered 并不见得就是效率最高的,换用其他第三方库的 hashmap 可能效率能更高。能预估数据大小的话也可以提前预留些空间。
至于 python 和 C++速度相等也不是没可能啊。
2017-10-26 13:27:32 +08:00
回复了 scenix 创建的主题 C C++的 set 爆内存,求助
@scenix 不明白你为什么还是要用 set 的指针做 value。
有 new 没 delete,这就不是好的 C++代码,跟别提代码耦合在一起了。

我随便找了自己的文档测了一下,程序热点在 hash,其次是 getline。
vs2017.4 x64 默认 o2
2017-10-26 00:42:27 +08:00
回复了 scenix 创建的主题 C C++的 set 爆内存,求助
big_dict[key]->insert(value);
就这个,每次都要在 big_dict 里查找一边 key。虽然是 O(1)但用多了也会影响速度(并不确定有多大影响)。
这个写法就非常不 C++。之前 find 的时候就该缓存一下查找结果。
具体的你可以贴出最终代码,vs 或者 vtune 什么的都可以跑 profile 找程序热点。
字符串分割的话 boost 之类的库都有,我也自己写过一个简单的(导出 string_view 避免拷贝的)

/**
** @brief split source using judger, putting slice into container
** @param src source
** @param judger a function that accepts one element and return (bool) whether it is delim
** @param container a container that allows push_back to put a slice of std::basic_string_view<CharT>
** @param keepblank whether should keep blank splice
**/
template<class T, class CharT = T::value_type, class Judger, class Container>
inline void split(const T& src, const Judger judger, Container& container, const bool keepblank = true)
{
using namespace std;
size_t cur = 0, last = 0, len = src.length();
for (; cur < len; cur++)
{
if (judger(src[cur]))
{
if (keepblank || cur != last)
container.push_back(basic_string_view<CharT>(&src[last], cur - last));
last = cur + 1;
}
}
if (keepblank || cur != last)
container.push_back(basic_string_view<CharT>(&src[last], cur - last));
}
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3973 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 19ms · UTC 04:13 · PVG 12:13 · LAX 20:13 · JFK 23:13
Developed with CodeLauncher
♥ Do have faith in what you're doing.