V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  lesismal  ›  全部回复第 4 页 / 共 53 页
回复总数  1059
1  2  3  4  5  6  7  8  9  10 ... 53  
72 天前
回复了 yueyuea 创建的主题 问与答 兄弟们你们怎么看程序员信风水这件事
从科学的角度讲:
风水改变人的心态,心态变了处事方式就变了
能信的人,至少态度变得柔和了,懂得心存敬畏了,懂得和气生财了
所以就跟心理医生类似

从有神无神的角度讲:
顶尖科学家穷其一生最后基本都是有神论论吧,受过几年无神论教育就自信没有封建迷信了?
73 天前
回复了 chowdpa02k413 创建的主题 NAS 一张图展示绿联 NAS 现状
哦哦有了,之前图没刷出来只看到了文字。。
73 天前
回复了 chowdpa02k413 创建的主题 NAS 一张图展示绿联 NAS 现状
文不对题,我是进来看一张图的,图呢?
百度 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 位置就可以

红黑树也可以用来做这个,但这个场景堆比红黑树要好
78 天前
回复了 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

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

虽然秒级 =》虽然毫秒级
79 天前
回复了 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 也就知道了
80 天前
回复了 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. 会不会有订阅机制、竞品订阅了实时收到通知?

实在不行加上抓包分析下网络吧
1  2  3  4  5  6  7  8  9  10 ... 53  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   990 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 30ms · UTC 21:23 · PVG 05:23 · LAX 14:23 · JFK 17:23
Developed with CodeLauncher
♥ Do have faith in what you're doing.