V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  lesismal  ›  全部回复第 4 页 / 共 53 页
回复总数  1055
1  2  3  4  5  6  7  8  9  10 ... 53  
百度 AI ,欢乐开怀!
众里寻她千百度,请到红包领取处
@shanwu 国外非 IT 研发的不少普通工作在用 8g ,而且有不少是 5 年以上的老设备,中介、医生、会计、普通家用等等。
而且这些普通用户甚至都不关心性能、配置这些,因为他们的普通需求,确实随便够用了,不只是内存只有 8G ,甚至硬盘 128 、256 对他们很多人都够用、512G 硬盘对他们来说都是很大的空间(回想下十几年前,那时候 500 硬盘也确实算是很大了)。如果果子基础配置更高,意味着打击这部分群体的积极性。

所以如果不考虑价格因素,只聊 8G 够不够用,那苹果起步 8G 完全没问题。但可惜的是,这部分普通用户,基本没人来讨论果子配置够不够用的话题。

对苹果 8G 不够用的这种主流评价,也是类似幸存者偏差效应,因为跑到网上来这么评价的,比如 V 站主力用户、测评 UP 主们,都是属于你讲的“懂行的用户”,包括我自己,我日常 25G 起步,稍微开点东西就 30G 了。

如果考虑价格因素,果子是真贵、真黑心,我也抵制。但 8G 对于普通用户确实够用
骂苹果 8g 的多数是 it 互联网研发人员
但其实,苹果这 8g 主要是给广大非 it 互联网研发人员准备的
所以吵没用,爱用不用,要么忍要么滚一个道理
> 原来你的思路和我的不一样,设置一个堆 Heap ,每 5s 超时,取出堆顶最后的 fd ,进行 closed 吧。这种设计只有一个 timer_fd 。

用堆就不是固定 5s 超时了,而是根据堆顶的超时时间设置超时时间。
也不是只取出堆顶,因为代码可能导致延迟误差,所以是需要循环查看堆顶是否超时、超时就 close ,没超时则更新当前堆顶的超时时间为触发器的超时时间


> 而我的是每一个 accept 后,就创建一个 timer_fd 。然后被挤爆了。

这种是最浪费的方式之一,没必要拿来对比,应该用来改进


> 堆的删除只能在对顶进行,fd 接收数据后必须删除这个堆中的数据,但是没法删除堆中。

堆可以删除任意元素,up 、down fix 位置就可以

红黑树也可以用来做这个,但这个场景堆比红黑树要好
54 天前
回复了 drymonfidelia 创建的主题 English 网站前台和后台用英文怎么表示?
front desk 是指 front desk girl 吧?
合着我说的你根本就没好好看,或者看不懂:

> 我要接的不是 bind 和 listening 的一个 listen fd 连接,而是 accept(listen_fd)出来的几十万个 client_fd 连接。我也无法区分。

switch(fd) {
case listenerfd:
handle_accept()
case timerfd:
handler_timer()
default: // 除去 listener 和 timerfd 就是已经 accept 了的 socket
handle_socket()
}

再不济,你在 event 里那个 void*存储这个 fd 对应的结构体指针、或者只存一个 fd type 也是可以的

> 另外:试了在每个 socket_fd 同时绑定一个 timer_fd ,文件描述符会膨胀 2 两倍。普通使用没有感觉,但是高并发测试下性能急剧下降。

不需要每个 fd 一个 timer_fd ,一个 eventloop 只需要一个 timer_fd ,具体的你看我上一楼的回复吧


我认认真真给 OP 写了一大段,OP 连看都不好好看就来随便回复,如果这次还不看,那请 OP 不要回复我了
@lesismal #19

=》除非你对精确度要求非常低、时间轮间隔很小这种,否则真没必要用时间轮:一是不精确,越想要精确则间隔越小越可能空跑,二是小堆做优先级队列定时器这种性能已经足够强、基本是行业认可的最佳实践

虽然秒级 =》虽然毫秒级
54 天前
回复了 csfreshman 创建的主题 C++ 如何从 c++菜鸟转型 c++高手
有学 cpp 这功夫,早把 rust 玩 6 了,如果懒得学 rust ,go 可是太容易上手了。

https://m.thepaper.cn/newsDetail_forward_26518590

直接贴一部分吧:

其实,这并不是美国官方机构第一次呼吁放弃使用 C 和 C++ 了。
去年 12 月,美国网络安全和基础设施局( CISA )联合其他机构颁发了一份《内存安全路线图指南》, 其中就指出了 C 和 C++ 是内存不安全的编程语言,并呼吁软件开发商采用 Rust 、Java 等其他内存安全的编程语言。
2022 年 11 月,美国国家安全局 (NSA) 发布了一份网络安全信息表,详细介绍了它认为内存安全的编程语言
Rust
Go
C#
Java
Swift
JavaScript
Ruby
Python
Delphi/Object Pascal
Ada
定时器的实现主要有两个点:
1. 管理定时器的数据结构
如果你用 c++ ,priority_queue 维护每个 fd 的超时时间:
https://en.cppreference.com/w/cpp/container/priority_queue
如果用 c ,找个或者自己实现个小堆也可以
除非你对精确度要求非常低、时间轮间隔很小这种,否则真没必要:一是不精确,越想要精确则间隔越小越可能空跑,二是小堆做优先级队列基本是行业认可的最佳时间

2. 定时器的触发器,简单点可以用 epoll_wait ,虽然秒级精确度但对于 read deadline 足够了,如果想更精确或者框架提供通用的精确定时器,可以用 timer_fd

1 、2 结合起来,如果更新、设置超时时间都是在 epoll event loop 里,就是把 priority_queue 堆顶最小超时时间作为 epoll_wait 下一轮的 timeout 参数或者 timer_fd 的超时时间,如果跨线程设置还要考虑唤醒 epoll_wait 或者更新 timer_fd 相关

这只是简单实现方案,涉及到完整框架的你还要考虑并发调用、锁、一致性等各种细节


> 这个方法刚才试了试,发现接到(event[i].events & EPOLLIN)后,无法区分是 timer_fd 还是 socket_fd ,就不能直接 accept(),因为可能接到 accept(timer_fd),就会错误,在程序看来都是 fd 。

#11 这就是说胡话了,你自己创建的 listener fd 、自己创建的 timer_fd ,你 switch case listener case timer default socket 一下就知道是哪个了,再不济,你存储 fd 对应的结构的地方,结构体加个字段标记 type 也就知道了
56 天前
回复了 CLCLCLCLCL 创建的主题 机械键盘 宁芝 X108 三模 45g 侧刻 T 系, 求助
NIZ 的品质细节是真的不行,比如支脚生硬支起来的时候键盘滑动不舒服、而且掰支脚的时候要一次发力到位否则就容易坏
燃风太丑否则就燃风了
NIZ 白色的颜值是我最喜欢的,键的触感也够好、不同克数我都喜欢,所以两把、单个克数用久了腻了切着用
如果味道太淡,可以蘸盐
再不济,加钱请技术咨询来协助定位、开发
暂时想到几点,OP 可以参考下:
1. 多用一些出口 IP ,对方没有限制并发可能是不直接报错但对单 IP 高频可能也有频率限制
2. 是每个请求一个短链接吗?还是 keepalive 的复用长连接?如果是 keepalive 复用长连接,http 1.x 很多不支持 pipeline 的所以要请求-响应然后才发下一个这就比较慢了,如果是 http2.0 又有 4 层线头阻塞的问题、并发量大了也是慢的很,所以也确认清楚这个
3. py 的实现是怎样的,for 循环发送 8000 个? 10 台机器每个节点 for 循环 800 个?这个 for 循环调用所有请求一共多久?请求回来再处理、虽然是异步的但是处理响应的代码是 py 的吧?有没有把这部分也统计上?
4. 对比下其他语言的实现?比如 go ,如果姿势 http 请求也是比较容易的
5. 会不会有订阅机制、竞品订阅了实时收到通知?

实在不行加上抓包分析下网络吧
64 天前
回复了 Corybyte 创建的主题 程序员 2024 有推荐的 go 开源项目吗 想深入学习
@kingphang tidb 的核心是 rust ,go 虽然也算重要但只能算是周边而且用其他语言也能做好这些周边,但 rust 的部分做不了
本来 star 过 OP 这个 repo 了,看到 OP 这个贴,我先 unstar 了
不差这点意外之财,不希望助长这种风气
@xiaoshu 哦大概想明白了,只是统一接入层、登陆鉴权这些,不涉及太多具体的业务吧?这样的话那就正常了,现在确实大家都用微信多、qq 用的少了
如果涉及业务本身,业务逻辑的请求远大于这个了
@xiaoshu 对,我说的也是接口
1  2  3  4  5  6  7  8  9  10 ... 53  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2496 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 40ms · UTC 16:00 · PVG 00:00 · LAX 09:00 · JFK 12:00
Developed with CodeLauncher
♥ Do have faith in what you're doing.