百科问答小站 logo
百科问答小站 font logo



以王垠的水平,他可以开发出像 nginx 和 redis 这样的软件吗? 第1页

  

user avatar    网友的相关建议: 
      

先不说王垠水平能不能开发出Nginx和Redis这样的软件。

这个问题下某些回答给人的感觉是只要懂了底层原理,大部分人都会觉得Nginx和Redis不难。那既然“大部分人”都觉得不难,你们怎么没写个Nginx和Redis出来?哦,然后你又要说国内996,修福报,35岁下岗,怎么有时间写?或者是这么简单的事,我这么牛逼,我不屑于写。那你跟你口中说的王垠有啥区别?

不才Redis源代码没看过,不评价了。我看Nginx源代码的时候Nginx的版本号才1.2.6,现在已经到1.19.0了。断断续续看了近5年才差不多融会贯通。各位觉得大部分能写个差不多的大佬,如果有这个自信,NGINX, Inc.在2019年被F5收购了,卖了6.7亿美元,你要能写出个差不多的,你还干个鸡毛现在的工作啊?直接写个差不多的干翻Nginx得了,到时候说不定哪个公司看上你写的东西,你不成了人生赢家了?

Nginx难在哪儿?

首先,Nginx作者Igor编写代码不按套路出牌,我相信很多人学C语言的时候,教科书或者老师都会说最好不要使用void *这种指针,因为它类型不明,编写的时候麻烦,调试的时候更麻烦,Igor偏不,老子到处用void *,不只void *,老子还要用void ****。敢问觉得不难的大佬们,你们能画出这个void ****的数据结构吗?

其次,Nginx是全异步(其实按照异步的定义看,不算异步)非阻塞的,异步非阻塞有个问题,就是回调函数地狱。调试Nginx不像调试一般的C语言程序,从上往下一步一步执行就行了,你以为这个函数执行完了,并没有,它可能被挂到定时器或者epoll(kqueue)去了,一会儿可能还会执行。你说这不简单么?函数指针赋值的时候看准了它是哪个函数,打个断点就行了。这不是最骚的操作,最骚的操作是运行时换回调函数。那你看源代码里很多地方有类似这种调用方式:

ev->handler(ev);

你猜猜这个handler它究竟是啥?

然后,Nginx依赖的数据结构与算法,基本上都是作者自己造的轮子。Nginx只依赖了PCRE(正则表达式),OpenSSL(加密)和zlib(压缩)这三个库,而且可以通过configure去掉。想必是大佬们人均红黑树水平,分分钟造出一堆基本的数据结构和算法。

再然后,Nginx为什么高效?十有九个都只能回答出Nginx用了epoll(Linux)和kqueue(FreeBSD,包括苹果的MacOS)等高效的网络IO复用接口(包括这个问题下的回答)。然后呢?回答不出来了。如果只靠这一点的话,在反向代理服务器(七层)和静态Web服务器领域,用epoll和kqueue的千千万,为什么越来越多的网站首选Nginx呢?

最后,从Nginx诞生起,到现在的版本,源代码大的框架基本上没大改过,编写一个第三方模块,在最新的Nginx源代码中可以顺利编译,大概率它也可以在10年前的Nginx源代码中顺利编译(可能要加些#if#else#endif,修改一下config,毕竟早期的一些函数参数跟后来的不一样了,1.9.11开始支持了动态模块)。可能很多人觉得这不算啥,那你回过头去看看自己写的代码,别说10年前,现在的代码拿到一年前的系统中编译可能都错误百出。所以可以看出,Nginx提供了很出色的接口抽象能力,便于用户编写程序介入Nginx而不需要修改Nginx的源代码。

所以,不要以为中国历史上早晚会出现个朱元璋,他干了一番惊天动地的事业,你看了史书记载后,你就觉得这有什么难的,我也会。


user avatar   thewarrior 网友的相关建议: 
      

一个nginx最基础的feature,就是nginx的conf配置。

就这么个配置文件的设计,能支持全世界无数大型商业应用,十多年不变,从单体应用到如今service mesh时代~~~

就这个,国内基本就没见过能做到的。这东西说起来原理也不复杂,无非是不要hard code实现逻辑,抽离出来松耦合。

就这么点原则,要国内的好好设计一下像是要他们命。

你要国内的“高手”来讲,一来就给你讲原理讲理论,说原理并不复杂(就cs发展到现在,有什么原理很复杂?区块链还是metaverse很复杂?),实际实现简直惊掉大牙。。

*****

评论区大把人认为我拿conf说事是侮辱了nginx,说没讲到点子,说没有抓住nginx精髓…

这就是国内从业人员的弊病:精髓?讲到点子?什么东西?一天到晚扯epoll什么的不嫌烦?你能从其中学到个啥?

就拿每个人都会接触到的conf来说话,就拿最直白的…各位动辄精髓或者奥义的,你们自己项目代码里的配置文件,请问怎么设计的?适配了多少场景?


user avatar   jiang-xun-93 网友的相关建议: 
      

王垠能不能写出来不知道

不过光这个话题下面好像已经有至少半打人表示“不难”,“可以做到”了

知乎毕竟就是知乎


user avatar   honokajiang 网友的相关建议: 
      

这个问题其实就是“Talk is cheap, show me the code”的翻版,不过把code换成tool,换汤不换药。而老王早在下面的博客中对这个观点批判了一番:

代码不能代替思想交流和讨论。代码不能清晰的表达一个人的想法,也不能显示一个人的思维深度。任何程序员都可以写出复杂冗长的代码,你有时间去看吗?就算水平很高的程序员,他的代码组织方式你不熟悉,也会看不出来本来的想法。实际的代码里面往往会充斥着因为编程语言,硬件,系统,历史遗留问题导致的各种复杂性。如果每个想法真要“show me the code”才被考虑的话,那效率实在太低了。

简单来说,老王的价值观里,像代码及其工具不过是一系列相对简单的Idea的最终产品。而在垠·王的审美光谱中,这些最终产品是位于价值谱系的最末端,如同尼采笔下最被鄙视和无价值的末人。相反,他将那些大道至简的idea视为最具有价值的事物。拥有great idea的human在垠的眼中仿佛是尼采笔下具有超人意志的大神,应该被世人尊敬。

所以,以老王的性格,估计根本不屑于浪费时间做一个像nginx和redis这类原理简单、但是实现复杂的系统。估计看到这话题,老王的想法只会是“这类繁琐无聊的工作就交给那些审美和思想贫乏的996员工去搞定好了,我垠·王要干的是启迪众生智商的大业”。

这大概就是为啥老王开始搞在线教育的原因吧(雾


user avatar   guo-zhong-ming-26 网友的相关建议: 
      

以王垠的水平,开发出nginx,redis 这样的软件,能力足够,但是实际就是做不出来。

国内一些程序员有能力也能实际做出这样的软件,技术上这两个软件不是那种做不出的难题,只是选择做与不做的问题,商业上的考虑,做到多快和多大规模的问题,以及是否作为长期战略任务的考量。我们团队也有做过性能超过 memcache 的指令集全兼容的自研软件,3万多行代码,初始版本也就几个月的开发量。

以下纯属调侃,

以王垠的经历推测,开始开发前先发一篇博客,我的XXXABC计划,各种完美的设想和理想化架构,前几个月能写出一些代码,很快被完成的美好代码感动,32行代码 震铄古今,先发一篇博客,美上几天。完成一个模块例如B+树模块,新写的代码很棒,明显已经前无古人后无来者了,太优秀了,这么优秀,给经理讲了,为什么还不马上升职加薪,从此走向人生巅峰? 这么多天过去了, 开篇博客开喷,这么优秀的人天天干这种脏活累活,还不被周围每个人认可,光凭完成的这个模块,已经足以说明能力完全可以胜任更高层次的理论专家的位置了,这是赤裸裸的剥削。因为长期遭受不公正待遇决定不干活了,先写一篇博客《一个人的罢工》,这几个月发呆中,等待公司反省亏欠优秀员工的问题。几个月后,一篇宏大博文 《我为什么离开XXXX公司》面世,资本太残酷,王垠太天真,又被某公司剥削了一次。开始的 ABC 计划由于资本的无良自然是无法完成了。


user avatar   Ivony 网友的相关建议: 
      

他应该不屑于干这种脏活儿……


user avatar   ling-jian-94 网友的相关建议: 
      

克劳备忘录也好,凯南电报也好,有两大共同点。首先,都是以现实主义的眼光去分析双方的关系。然后,给出的建议都是阳谋,并不是什么不可告人的阴谋,执行起来需要的不是鸡鸣狗盗的小聪明,而是惊人的意志力。

而美国现在战略界现实主义被边缘化,我推测,布热津斯基,基辛格那帮人应该写过不少。不过没所谓,美国能执行大战略的时代过去了。现在这一代精英上半年能管下半年就已经很了不起了。一个需要两代人以上持之以恒去完成的大战略,搞出来他们也执行不了。

冷战时期,从杜鲁门艾森豪威尔到肯尼迪尼克松,最后到李根老布什,个人性格和政治偏好差距不要太大,但是都忠实地完成了他们历史任务,沿着围堵政策做下去。这种战略定力和延续性,世间少见。在中国领导集团上能看见一些相似的东西,但是我们离得距离太近,反而看不清。但在美国精英层身上完全看不到这一点。

个人愚见。


user avatar   foo_hack 网友的相关建议: 
      

真·天龙人来了。

我屁股下的这个embody罗技款不知道值不值天龙人的一台电脑?

不知道有几个天龙人当初跑到香港自提首发四公主?

不知道天龙人的电视几万?我这个早买的了,75z9d。psvr也是入的首发。

再比比打机环境?

朋友帮忙给我找的原价国行。(不帮买,朋友的店里之前就已经排队到了一百多人)



这电脑在天龙人里什么水平?为了玩4k的原神换的xg43uq和3080,纯娱乐用,非图形工作者。

其他小玩意就不显摆了。

就想说一句话,玩个游戏还玩出优越感的都是什么心态啊????

之前看了一个回答说得很好,你以为你是婆罗门,实际上在别人眼里你们都是印度阿三。

拿原神对比3A,想得出来什么结论?原神比不上那些3a,所以原神玩家就比不上3a玩家?我呸,那游戏是你做的?


装半天13其实没有真正回答这个问题,因为觉得懂得都懂,但是鉴于一些朋友很“幸运”没有接触过这类人,我就多唠叨几句。

天龙人,不是单机玩家(我就是单机玩家)的代名词,是以玩过看过听过甚至知道3a大作为荣的一群人。就像百万塞尔达不是指野炊玩家(我就是野炊玩家),而是看着像就说抄袭,像疯狗一样攻击别人,疑似水军的人。

天龙人鄙视原神,但是原神在进步,成绩也越来越好,打了曾经预言原神会暴毙人的脸。

玩家喜欢原神,自然热度高,还会夸,但这在天龙人眼里就是尬吹,他们通过用3a顶级大作去对比原神,说明原神辣鸡,去鄙视原神玩家,各种侮辱性的模版语录被传播,逻辑不严谨,但侮辱性极大。

其中最让我无法接受的就是“玩过好游戏的不可能玩原神”,“你觉得原神做得好是因为你没玩过好游戏”。这两句话把天龙人的优越感体现的淋漓尽致,何不食肉糜溢出屏幕,且不说画风不同,萝卜白菜各有所爱,就是人们的时间和设备也有很大差别,选择哪款游戏喜欢哪款游戏是玩家的自由,你哪来的脸指指点点说三道四?更何况,我遇到的很多说这话的人只是知道几个游戏,甚至玩盗版,模拟器,属实是精神天龙人了。

所以你喜欢鄙视是吧?那我就让你尝尝被鄙视的滋味。


玩家“尬吹”原神有没有错,个人认为只要不到处ky,踩一捧一,那吹一吹没问题。换位思考,我吹过p5天下第一,mhw天下第一,血源诅咒天下第一。

这时候有个不玩游戏的过来和我说,“什么电子海洛因就天下第一?玩游戏玩傻了吧?玩游戏有什么意思,几百几千的东西,来玩模型/文玩/改装车啊,随便一件就顶你们一堆。”

大家觉得这话有错吗?人家说的没错啊,确实一个模型几千上万,一件好的文玩也价格不菲,确实顶一堆。

但这人说话合适吗?太欠揍了,因为大家本就不是一个圈子的,我玩我的,碍着你了吗?你有病啊跑我这来?

同理,天龙人跑到原神这来用3a对比也是这样。有人可能会说,原神和3a同属游戏,是一个圈子。真的是吗?原神虽然上了ps5,但他的模式和以往的单机作品是不一样的,他可以算作是一种网游,生产周期,盈利模式,游玩设备,和以往的几年出一作的传统单机完全不一样,玩家群体也很不相同,根本不算一个圈子。

如果你觉得是一个圈子,那我没啥好说的,游戏/模型/文玩还都属于休闲娱乐圈子哩。

所以大家明白为什么天龙人用3a对比原神恶心了吗?首先主语是天龙人,他的对比就不是想好好对比,而是粗暴的把3a当武器,去攻击原神和玩家。其次这群天龙人见不得别人吹原神,跑到圈子里来恶心人。最后您要想说原神圈子里也有恶心的人,这我承认,哪个圈子没极端?甚至我看到这种言论也说他两句。当然如果你认为你遇到的所有原神玩家都极端…那请你先审视下自己的话有没有问题吧。我见过不少说原神玩家听不得别人说原神的一点不好。我翻看他的资料看他说的“一点不好”,呵呵,全是偏见与傲慢。不被喷才怪。


哎,管理员告诉我不样挂人,行吧,我都删了,反正大家知道有几个特别懂礼貌的高贵天龙人来私信我请我喝欧泡果奶就行了,咱也不知道咱是ky了还是尬吹了,现在以其人之道,还治其人之身也要被骂了?反正这些人不是破防了,一定不是。

还有某位同学呀,坐井观天不可取,你不能自己还啃老呢,就觉得别人都啃老。我啃我自己,放我自己家的照片也碍着您了?想反驳我也要找好角度是不是?你看看评论区有几个朋友反驳的就很好,当然他们要是能对天龙人也一视同仁就更好了。


再次声明,本人觉得一个人一个活法,一个人一个爱好,鄙视链装13不可取,本无意扮小丑,只是以暴制暴,恶心天龙人,非天龙人请勿在意,如引起您的不适我先道歉了。


请大家友好交流,很多评论不予显示或者被删除了,这里面没有一条是我删的,都是系统判定不友善。




  

相关话题

  只会增删改查的计算机专业学生真的不适合做开发吗? 
  如何减少团队的低质量代码? 
  在大学如何避免自我感动?如何学会更多的知识和技能? 
  计算机(CS)专业大学生怎样平衡绩点和编程能力? 
  科学计算的程序编写和通常所说的码农的编程有多大的区别? 
  依靠 IDE 会让程序员的水平变差吗? 
  最短的可以造成崩溃且编译器无法优化掉的 C++ 代码是什么? 
  你都用 Python 来做什么? 
  「传输自动生成代码并执行、生成所需文件」能否成为未来的下载方式? 
  Notepad++的开发者侯今吾是一个怎样的人? 

前一个讨论
如果医生把我的脑残治好了,那他算不算剥夺了我作为傻*的权利?
下一个讨论
Ps4pro 玩游戏帧率只有30,为什么大家不用pc玩,还用ps4呢?





© 2025-02-21 - tinynew.org. All Rights Reserved.
© 2025-02-21 - tinynew.org. 保留所有权利