编程技术宇宙

其他

TOP2本科计算机女生,走开发还是运维?

大家好,我是轩辕。最近我看到了一个帖子:原帖有点长,总结一下,一位名校计算机科班应届女生,自己本身对运维感兴趣,想去做运维方向的工作,但现在老师推荐了一个开发方向的工作,在纠结要不要去,向网友求助。看到有美女求助,一群人开始评论区献计献策起来。第一波人是反对运维岗的人。比如这位网友:运维不适合女生,想一想在机房呆十几个小时一天,天天
4月2日 上午 8:44
其他

程序员赛道太卷,逆向工程师怎么样?

大家好,我是轩辕。最近有很多粉丝问我,做开发太卷了,网络安全怎么样,逆向方向怎么样等等。针对这些问题,我其实在星球里面已经写过很多次了。网络安全,尤其是包括逆向在内的二进制安全赛道上,因为本身需求量没有程序员那么大,所以来卷这个赛道的相对要少很多。有很多公司想招一个合适的二进制安全研究分析的岗位,常常很久都找不到合适的人。反之如果你挂一个Java开发的岗位到boss直聘,要不了几天,简历能塞满你邮箱。不卷的原因,除了刚刚说的需求量的原因,还有就是这个东西学习起来难度大,比起前后端这种培训班可以批量培训来说,二进制安全方向需要大量的计算机基础知识,这把很多想两三个月速成的人挡在了外面。不过,总的来说,包括逆向在内的二进制安全岗位可替代性要远低于普通的前后端岗位,在如今卷成麻花的IT市场还是一个不错的细分赛道,值得一入。大家知道,我从去年底开始一直在制作《从零开始学逆向》系列课程,如今已经更新了26节课。每节课均采用录播的方式制作视频课程,配套PPT课件、课后作业。这是我第一次制作个人课程,也不会是最后一次。所以我倾注了大量心血在课程上。每节课都需要经过资料搜集、文案编写、录制音频、PPT课件制作、实操录屏、视频剪辑几个步骤。还有日常大家的反馈搜集、学员答疑,这些都花费了我大量的时间和精力。好在付出有回报,课程收获了很多小伙伴的肯定与好评。就连这个学习群,都成了我众多群里,含金量最高的群:小伙伴们也经常在群里分享学习经验,为了把大家分享的有价值的学习资料沉淀下来,我特地创建了在线共享文档《二进制安全推荐学习资料与工具软件》,让后面入群的小伙伴也可以看到。群内每天都活跃着小伙伴的学习讨论信息,有的小伙伴经常熬夜学习到凌晨。为了让大家真正掌握逆向分析的技能,能够学以致用,我不断搜集大家的日常反馈,对课程的编排进行调整优化,增加了很多硬核的内容,课程也从原计划的32节课扩充到了40多节课!说实话,这对我来说确实增加了不少工作量,所以,正如上面小伙伴所说,课程得涨价了。从群满400人开始(目前是350),本套逆向学习课程将在原来的基础上涨价,由目前的256涨价到299元。其实即便是涨价之后,这个价格在同类课程来说,也算是非常便宜的,我参看了某些网站上同类型的课程,定价是我的2-3倍,甚至更高。因为培训机构的运营成本在那里摆着,包括逆向在内的整个二进制安全领域,也算是一个比较小众的领域,受众少,培训机构要是卖便宜了根本覆盖不了成本。而我就自己一个人,算是业余时间兼职来做,不需要额外给别人发工资,所以定价实惠。但我缺少平台优势,只能靠提高课程质量吸引大家。群里不少小伙伴都是通过口碑转介绍来的,这也是最让我获得满足感的地方。毕竟只有自己真正觉得好才会推荐朋友一起学习。学习群里很多小伙伴都在反馈课程物超所值,说我为了普及逆向知识不计成本,亏本卖课程。老实说我也没有那么高尚,我的经济条件远远不足以支持我仅凭热爱持续输出课程。花了这么久时间在这套课程上,大家根据微信群的人数也能算的过来,真的是亏本在做。那为啥亏本还要做呢?首先,我相信每个做公众号的博主一定是乐意分享的。但一旦开始有读者追更、期待持续输出高质量的内容后,就必须投入越来越多的时间精力。接着会开始变现维持持续更新的动力。与其接广告推广别人的课程,不如自己制作课程直接售卖。因为读者如果通过广告买了别人的课程觉得不值我没有办法弥补,但我可以为自己的课程负责!所以这次的课程是我自己全新的尝试,也是我下决心认真打磨的产品。从课程制作、课后作业布置、课程答疑、大家的学习进度跟进全是我本人一条龙服务。这些时间算到一起这套课程卖999都打不住。但是我不想只顾眼下的利益收割韭菜,希望能够在知识普及和商业上尽量平衡,如果课程口碑好,后续能够持续吸引小伙伴购买,那么就可以逐渐弥补我前期的亏损。所以,也希望已经加入学习的小伙伴们能够帮忙多多宣传、推荐。现在距离400人还有一些名额,目前还是256,想要入手的小伙伴不要再错过了,等过两周估计就是299了,两百多块就能学逆向的事儿,遇到了就赶紧上车吧!有很多小伙伴问我,这套课程学完之后是个什么水平,这里也给大家解答一下:本套课程是从零开始学逆向,包含了大量的C/C++编程、软件调试技术、汇编分析、操作系统原理等知识。学完之后,找一份逆向分析、样本分析相关的工作问题不大,如果后面要去做内核方向、漏洞方向,这也是非常重要的基础。除了找工作,自己遇到一些软件,也具备自己逆向分析破解的能力。比如我曾经自己破解过某思维导图,某16进制编辑器,某编程工具,这都是省了真金白银啊。另外即便不做安全方向,对做C/C++软件开发来说,也是非常有价值的,学习这套课程,会让你对计算机软件背后底层的工作原理有一个更清晰的认识,工作中遇到问题也能知道从哪些地方排查解决。如何购买我把视频课程放在了我的知识星球里,扫描下面的二维码加入星球就能观看视频了,相当于是购买课程免费赠送知识星球。加入后,记得添加我的微信,拉你进入微信群。很多小伙伴疑问,星球为什么是一年有效期?这里解释一下:一年是星球的有效期,但课程是永久可看的。一年以后,只是看不了星球里新的内容,但过期之前的内容都是永久可看的!另外PS:如果你是安卓手机,可以直接扫描二维码加入。如果你是苹果手机的话,欢迎加我微信,直接微信购买,因为苹果抽手续费实在太狠了
3月27日 下午 4:30
娱乐

笑不活了!微软这些翻译,我差点笑死在知乎评论区!

大家好,我是轩辕。最近逛知乎,发现了一个提问:什么是微软式中文微软操作系统中的很多中文翻译因为奇奇怪怪,让人摸不着头脑,所以有了这么一个提问。然后回答区的网友们纷纷放大招了。首先来看这位网友:程序员一定对“缺省”和“本地”两个词不陌生,基本上天天都在打交道。但你有没有想过,计算机里的这两个词是怎么来的。然后下面有位网友来做了解释:除了这两个词,小时候有个“脱机”处理,也困惑了不少人:句柄和套接字也是让人摸不着头脑:这里还有因为“格式化”酿成的惨剧:刚接触电脑那会,我就因为格式化这个看起来人畜无害的词,让自己陷入万劫不复,说多了都是泪。这几个词的翻译,都还只能算奇怪,但接下来,要注意了,真正的大招要来了,如果你在吃东西,千万别看,别怪我没提醒你。1、将微软边缘放在您的码头上你知道这是哪个单词吗?2、微软边缘酒吧来了我想了很久,才明白它这里是怎么在翻译的,你能想到吗?3、滚回到之前的版本这也太不礼貌了,回滚和滚回,那还是不太一样啊4、免费存储空间我猜,这里应该是free吧,免费这翻译非常接地气!5、来自微软的警告微软这也太不客气了,用户会被吓跑的6、幸福倒计时真的好期待这份幸福呢7、请勿™关闭计算机为啥非得加这俩字母?8、我们都有不顺利的时候一条非常有温度的翻译9、好一招优化游戏体验这让我想起了那个段子:成功击毙自杀者,防止其自杀!10、现在可以拨打911次你猜,这又是哪个单词?最后来个王炸:如果觉得好笑的话,欢迎分享到群和朋友圈,独乐了不如众乐乐,或者点个在看,让更多的朋友看到~对了,最近公众号的推荐机制变了,大家帮忙给公众号加个星标,第一时间收到推送哦。素材来源:https://www.zhihu.com/question/39569160往期推荐这是要搞死博客园的节奏啊医生都是越老越吃香,为啥程序员却不是?可怕!CPU暗藏了这些未公开的指令!我是Redis,MySQL大哥被我害惨了!CPU被挖矿,Redis竟是内鬼!
3月22日 下午 2:38
其他

可怕!虚拟机里点了个链接,物理机居然被黑了!

大家好,我是轩辕。试想一个场景:当你在虚拟机中的Chrome浏览器点开一个链接,然后外面的真实电脑就被黑了。你觉得这可能吗?虚拟机大家应该都用过吧,尤其是咱们网络安全从业者,基本上都必不可少的要与虚拟机打交道。很多时候一些敏感的网址、文件,都不敢在真机上直接点开,而是在虚拟机中点开。这样即便遇到恶意程序,虚拟机重置一下快照就好了。但你有没有想过,虚拟机也不是固若金汤的,在虚拟机里面点开一个链接,也可能直接让你电脑中招!前几天,我在安全大佬tk教主的微博里就看到了这么一个案例。这是一家韩国安全公司发布的演示案例,他们用6个漏洞组成了一套攻击链,让你在VMware虚拟机里的Chrome浏览器中点开一个链接,然后外面真实的物理计算机就中招了。在微博评论区,另一位安全大佬sunwear给出了这6个漏洞:具体这6个漏洞的攻击细节非常繁琐,我研究了一下,尝试用大白话的方式给大家捋一捋,到底是怎么样的6个漏洞,就完成在虚拟机里面攻击外面物理机的过程。首先,在Chrome里点开一个链接,这个链接里面有特定的恶意JS代码。这第一个漏洞,就是CVE-2023-3079,它利用Chrome
3月12日 下午 5:09
其他

哈哈,有人爬我网站,我把他教育了一顿!

作为一个站长,你是不是对爬虫不胜其烦?爬虫天天来爬,速度又快,频率又高,服务器的大量资源被白白浪费。看这篇文章的你有福了,我们今天一起来报复一下爬虫,直接把爬虫的服务器给干死机。本文有一个前提:你已经知道某个请求是爬虫发来的了,你不满足于单单屏蔽对方,而是想搞死对方。很多人的爬虫是使用Requests来写的,如果你阅读过Requests的文档,那么你可能在文档中的Binary
3月8日 下午 2:12
其他

抓了个包,发现日本也有···

大家好,我是轩辕。前几天,有位国外的粉丝遇到了一个网络问题,发现访问不了国内的某个网站。这让我想起三年前的一个事情,跟他的情况类似。当时这篇文章有点敏感,发了不到半个小时就删掉了,估计有很多人都没看到过。今天我做了修改,大家可以看下。当时的情况是这样的:总结:人在日本,开着WIFI访问不了极客时间,为啥?随后她还给我转发了一张浏览器的截图:我一下发现了不对劲,请注意这几个字:如果是我们的请求到不了服务器造成的无法访问,一般是这样提示的:或者请求能够到达服务器,但服务器拒绝访问,一般是这样提示的:而连接被重置,事情就不简单了。接下来,我让这位在日本的朋友装上了抓包神器wireshark,想抓一下网络通信,看看到底发生了什么。先看一下这位朋友的机器上,ping一下极客时间官网的域名,得到的IP地址:这是一个阿里云的服务器,在抓到的网络通信中,我看到了浏览器发起了多次的请求尝试连接,下面每一行都是一个会话:点开一个来看看,TCP的三次握手是正常的,服务器能够正常返回握手包,说明服务器是能够访问的,443端口也是能触达的:因为是443端口,HTTPS,按照协议规定,三次握手之后,接下来,客户端该发起SSL握手了,但诡异的事情就发生了,客户端刚刚发出了SSL的握手包,服务器就返回了一个RST报文:好家伙,这下知道为什么显示连接被重置了吧。什么是RST包?RST,就是ReSet,重置的意思,在《TCP/IP详解·卷一》中有提到:一般来说,当发现一个到达的报文段对于相关连接而言是不正确的时,
1月29日 下午 4:11
其他

我想了4年的事情终于在今年达成了!

各位小伙伴大家下午好,今天是2023年的最后一天上班,有没有很激动~不知不觉这一年又即将过去,时间真的过得太快了。一直以来都有很多粉丝在咨询我怎么学习网络安全,我之前也写过一些文章讲过这个问题,但还是有很多人希望有更详细的指导。所以我打算花时间来制作一系列的视频课程,既能帮助到需要的人,我自己也能挣点零花钱,上个月我开始行动起来,就先从逆向分析入手,制作一套帮助想入行的新手从零开始学习逆向分析的课程。逆向分析是网络安全领域一个重要的分支,也是做二进制安全研究领域一个重要的组成部分。软件的破解、样本的分析、漏洞的挖掘等都离不开逆向分析。掌握逆向这门技术,对将来深入学习网络安全领域的其他内容大有帮助!时间一晃一个月了,不知不觉,已经制作了13节课:视频里除了实际动手操作以外,为了帮助大家理解一些复杂的技术原理,我还制作了大量的动画,甚至有粉丝笑称,让我出PPT课程😂这里截取了几张图,大家可以先看一下静态图,感受一下:这段时间,我很少在公众号宣传这件事,主要是想着先看看大家的反馈,如果大家都认可我再宣传。有过自学经验的小伙伴都知道,过程中往往面临几大难题:1)没有系统的知识路线,不知道从何学起;2)不知道学习的重点是哪些,学了也不会实际运用;3)遇到问题需要花费大量精力去自己查找、验证答案;4)没有人互相监督、鼓励,容易半途而废。针对这些问题,轩辕采取了系统性的【视频课程】+【星球提交作业】+【组建学习群】的方式来帮助大家学好这门课程。视频课程是我结合自己近10年学习、工作实战经验总结的适合小白从零开始学习的系列课程。为了能够更加贴合大家的实际需求,所以采取一边制作一边搜集大家反馈进行后续优化的方式。为了让大家更好的掌握这门课程,目前计划录制的视频比我原计划多了至少5节!学习群是为了方便大家互相交流学习经验,有问题可以即时反馈得到解答。一群人一起干一件事比一个人干更容易坚持。群里还有不同城市、不同公司、不同学校的小伙伴,大家通过这段时间的学习交流也可以结交更多志同道合的朋友,拓宽人脉资源。星球提交作业是为了让大家把学习结果沉淀下来,同时可以参考别人解决问题的思路进行自我总结。功夫不负有心人,我的努力还是得到了不少小伙伴的认可。还有一些小伙伴把我的课程推荐给了自己的朋友,这一点真的让我很感动,说明是真的认可我的课程!甚至有小伙伴说这套课程价值1999(虽然可能是开玩笑的,但我也很开心):更有每晚为我“沉沦”的同学:每次看到这些暖心的评论,我都感到动力十足,自己花心思准备的内容真正有帮助到他们,非常有成就感。这段时间,除了制作视频,我还给大家布置学习任务和作业,经常要花时间去查看大家的作业和解答大家提交的问题,而且还主动给大家再加一些原来没计划的课时进去,我的业余时间基本上被这套课程占据了。欢迎想学逆向但又不知道从何开始的小伙伴加入,开始做一件事情最好的时机就是现在!马上元旦节就来了,大家想要偷偷卷的这是个好时机哦~轩辕计划在元旦节期间进行一次期中考试,让大家检验一下这段时间的学习成果。考得好的同学还有小惊喜哦~后面加入的同学也不用担心,我把课程都放在知识星球了,只要加入星球就能参与学习,一份投资两份收获~后面随着这套课程内容不断的丰富,我投入的时间精力也越来越多,可能会考虑涨价,所以还没有上车的小伙伴可以抓紧机会咯。
2023年12月29日
其他

这是要搞死博客园的节奏啊!

大家好,我是轩辕。今天一大早,博客园的公众号又更新了一篇文章:我赶紧点进去看了下,博客园摊上事儿了!据博客园官方声明,他们收到了两场诉讼,被人给告了!而离谱的是,侵权的不是他们,而是博客园里的园友,这2个诉讼都是因为园友转载了公众号文章,诉讼1没有注明原文链接,诉讼2注明了原文链接。就因为这事儿他们被告了!博客园原文的评论区有人贴出了相关的法律法规:关于法律法规,我不是专业的,但我知道,如果这种形式要被告的话,那网上那些博客平台几乎一个都跑不掉,还有你关注的一大票公众号主也一个都跑不掉。知乎、CSDN、公众号等等平台,抄袭、搬运、洗稿的人简直不要太多。作为一个原创作者,我是对这类人深恶痛绝的。但作为一个平台,他很难起到监管作用,他无法知道一个人写下的文字是不是从别处Ctrl+C,Ctrl+V复制过来的,如果问题都算到平台身上,那这些网络平台都赶紧关门大吉了。博客园作为一个纯粹干净的博客平台,一直深受程序员群体的喜爱。本来维持日常的运营都举步维艰,国庆期间还遇到DDoS攻击,如今又来这么一出。这是要彻底把博客园弄死的节奏啊!作为一个喜欢博客园和深受博客园推荐的博主,我能做的很有限,尽量帮他们扩散一下这件事,让更多的人知道,有些用心险恶的人躲在背后想置博客园于死地。下面是博客园文章的原文链接,大家可以去看看:https://www.cnblogs.com/cmt/p/17774595.html往期推荐博客园被攻击了!可怕!CPU暗藏了这些未公开的指令!我是Redis,MySQL大哥被我害惨了!CPU被挖矿,Redis竟是内鬼!CPU摸鱼被抓,上了一个新技术!
2023年10月20日
其他

博客园被攻击了!

Collapsar,实际上,CC攻击也算是DDoS攻击中的一种子类型,它的目标也是消耗攻击目标的CPU、内存、I/O、带宽等资源。只不过,比起TCP
2023年10月7日
其他

医生都是越老越吃香,为啥程序员却不是?

大家好,我是轩辕。知乎上有个问题:明明是工作经验越久越吃香,为什么程序员却不是?仔细一想,好像确实是这样啊。你们看,大家去医院挂号的时候,都喜欢挂年纪大一点的医生,因为年纪大的经验更丰富。我们装修选设计师、施工团队的时候,也不喜欢选初出茅庐的年轻人。但为什么在IT行业,却反过来了,企业都喜欢用刚毕业的年轻人,程序员才35岁就要面临职业危机,这背后的原因是什么呢?1、市场饱和首先最重要的是市场趋于饱和。2010-2020这十年,互联网发展如火如荼,各种公司如雨后春笋般冒出来,那时候招聘需求量大,互联网就业市场一片欣欣向荣。而现在,没有了当年的辉煌,很多互联网公司业务发展停滞,同时经过前面多年的发展,产品架构已经成熟稳定,不再需要这么多的程序员,势必要进行结构优化,那优化的对象自然是性价比低的人群。而同时,IT行业高薪的宣传又吸引了一大批年轻人跑步进场,需求变少,人又变多,内卷就这么来了。关于这一点,很多人很多文章都在提及,我就不展开说了,点到即止,今天我想聊聊另一个角度。2、技术变得廉价是的,技术变得越来越廉价,不再是必须要工作多年的大佬才能驾驭的高级东西。这里面有个很重要的原因,就是开源的力量。大家可以想一想自己参与的一些项目,用到了多少开源的东西。以一个典型的后端项目为例,可能涉及到了Redis、MySQL、ElasticSearch、Kafka、RabbitMQ、Nginx、SprintBoot、MinIO、Docker···程序员要做的就是根据业务需求,把上面那一堆组件堆在一起。一般就是Nginx负载均衡,Spring写后端业务,Redis做缓存,MySQL、ES、MinIO做数据存储,RabbitMQ和Kafka做一个消息队列,最后塞到docker里面部署运行。如果没有上面这一套东西,估计有一大批公司要倒下。别的不说,就一个亿级别数据的全文检索功能,放到十几年前,没有了ES,有几个公司能玩得转?现在一个十几个人的小公司,都能玩大数据,这在十几年前是不可能的事情。2010年左右开始,开源浪潮滚滚袭来,在成就了一大批公司的同时,也把技术变得越来越廉价。很多年前,还没有这么多成熟的开源组件的时候,想要架构一个复杂一点的后端还是需要一些真本事的。企业得要花高工资聘请工作多年的专业的架构师才能搞得定。而现在,绝大多数的功能,开源组件都能提供,再加上云计算时代,各种服务都上云了,问题就更简单了,一些中级甚至刚毕业的都能把一整套后端架构玩转。开源技术+云计算,这两把利剑把技术的价格一压再压,原来是非高手不能玩的技术,现在新手摸几天就能上手,程序员通过工作时间增长的那一点技术经验,几乎被这两把利剑给磨平了。一个程序员,可能穷尽几年之力搞了个自以为很厉害的技术,结果一个开源项目出来,瞬间就被打败。说起来,程序员是自己革了自己的命。现在,大模型的浪潮再一次滚滚而来,各种AI写代码工具软件层出不穷,再迭代个几轮,看吧,程序员迟早要把自己的饭碗给干没。回到知乎的这个问题上,为什么其他行业不存在这个现象呢?轩辕觉得,最本质原因还是IT行业的特殊性在于产出是可迭代的。这个行业程序员的产出就是软件代码,而这个东西就是可以不断的迭代的。一群天才程序员聚在一起,开发一个牛逼的东西出来,然后一开源,瞬间就让全世界所有程序员站在了巨人的肩膀上。然后这样的事情不断的发生,最后的结果必然是有技术含量的东西基本上都被人搞遍了,后面来的程序员只需要站在无数个巨人的肩膀上做一些搬砖的低技术含量工作了。相反的,文章开头举的那个例子,医生这个行业就是一个典型的“低可迭代性”的行业。医生多年形成的经验是没法无损的传递给他们的学生的。假如有一天,医生毕生积累的东西可以全面数字化,然后以类似“开源”的方式贡献给全世界,这样全世界所有的医生一下也站在巨人的肩膀上。如果能做到这样,医生这个行业可能也会变得像程序员一样。那程序员要如何来破局呢?了解了上面的原因,就有针对性了。软件代码这些东西是可迭代的,但有些东西是没法复制和迭代的,像是沟通协调能力,解决问题能力,规划组织能力,管理能力,人脉资源能力等等,这些其实就是我们经常说的软实力,这些能力才是越久越吃香。打开认知的局限,不要只着眼于手里的那点技术,拓展了综合能力,了解了不是只有靠技术才能活下去,才能无惧所谓的35岁危机。个人愚见,欢迎鲜花,也欢迎拍砖~我是轩辕,咱们下篇文章见。往期推荐核弹级漏洞!我把log4j扒给你看!可怕!CPU暗藏了这些未公开的指令!我是Redis,MySQL大哥被我害惨了!CPU被挖矿,Redis竟是内鬼!主板上来了一个新邻居,CPU慌了!
2023年9月20日
国产科技

国产 CEC-IDE,卡脖子问题解决,国产崛起了?

今天早上就被这个重磅消息吸引了,这个文章得好好宣传一下继国产自研浏览器、国产自研操作系统、国产自研手机系统后的全新力作:国产自研IDE!先给不了解的小伙伴介绍一下什么是IDE:IDE代表集成开发环境(Integrated
2023年8月25日
其他

CPU摸鱼被抓,上了一个新技术!

我叫阿Q,是CPU一号车间里的员工,我所在的这个CPU足足有8个核,就有8个车间,干起活来杠杠滴。我们CPU的任务就是执行程序员编写的程序,只不过程序员编写的是高级语言代码,而我们执行的是这些代码被编译器编译之后的机器指令。那一天,我正在忙活着···“阿Q,工作时间你怎么在摸鱼啊!”,领导突然到访,吓得我一哆嗦。“领导,我正在执行的这条指令,需要从内存读取数据,这您是知道的,内存那家伙可慢了,所以我只好等着,这可不是摸鱼哦···”,我小心地解释到。领导眉头紧锁,指着一片电路问道:“这些是做什么的,怎么没在工作?”“那是读取指令的电路”“旁边那些呢”“那是指令译码的电路,我手里这条指令还没执行完,现在还轮不到它们工作”“反正也是闲着,就不能提前处理下一条指令吗?”,领导问道。“不行啊,我们一直都是一条指令处理完成才处理下一条指令”“这些电路单元闲着有点浪费啊,可惜了”,领导嘴里念叨着离开了我们一号车间,留下不知所措的我呆在原地。指令流水线没过几天,领导找我们几个车间的代表开了个会。会上,领导问道:“各位,咱们执行指令的效率能不能提一提,竞争对手快追上我们了”“这怎么提啊,我们干活够卖力的了”“是啊,也没有划水偷懒”各车间代表七嘴八舌地说到。“还说没有划水?我最近去各车间巡视,经常发现有人摸鱼”一听这话,大家都沉默,我也羞愧地低下了头。领导接着说道:“我在想啊,咱们现在执行指令的过程存在不少的资源浪费,大家能不能别等一条指令执行完再执行下一条,而是提前执行下一条”这话一出,在场各车间的代表都满脸问号。我们平时都是一条一条地执行指令,怎么还能提前执行后面的指令呢,这简直有点不可思议。见大家一脸茫然,领导接着说道:“咱们现在执行指令的过程其实是分了好几个步骤的,不同的步骤需要用到的电路设备基本上是不一样的,在执行后面步骤的同时,前面步骤所用到的电路就可以腾出来用于处理后面的指令了”就在我还有些似懂非懂时,二号车间小虎站起来说道:“我明白了!”领导露出了满意的笑容,问道:“说说看,你明白什么了”小虎转身来到一旁的画板上,画了一张图:“大家请看,我们平时执行指令,差不多四个主要的步骤:读取指令、指令译码、指令执行、数据回写。在第一条指令进入指令译码的步骤时,负责读取指令的电路模块就闲下来了,这时可以用来读取下一条指令,提前节省了时间。等到第一条指令进入执行的步骤时,指令译码的电路就能用来处理第二条指令,而读取指令的电路就能用来读取第三条指令,以此类推!”,小虎得意的说到。“妙啊,妙啊!”,我也忍不住称赞道:“整个过程就像一条流水线一样,一环扣一环!这效率肯定能提升不少”“流水线?这个名字好,要不咱们就把这项技术叫做指令流水线吧!”,领导说到。不久,咱们CPU各个车间就开始正式推行这项技术,把原来执行指令的过程流水线化。在我们一号车间又增加了一些人手:负责指令读取的小A、负责指令译码的小胖,负责结果回写的老K,至于我嘛,就负责具体的指令执行。流水线的级数用上了流水线之后,我们CPU的工作性能一下有了非常明显的提升,甩开了竞争对手一大截,领导高兴坏了。但还没高兴太久,不知道谁走漏了消息,竞争对手CPU们也知道了这项技术,也用上了指令流水线,我们的差距又一次缩小了。领导又一次召开会议。“现在该怎么办?大家想想办法啊”会场一度陷入了沉默,过了一会儿,六号车间的代表小六才站起来发言:“领导,我有一个办法”“什么办法?”小六润了润嗓子说道:“我先问大家一个问题,在我们没有使用指令流水线技术的时候,假设执行一条指令需要4个步骤,每个步骤需要1ns,那执行完一条指令总共需要多少时间?4条指令全部执行完又需要多少时间呢?”“一个步骤1ns,一条指令总共4个步骤就是4ns,4条指令就是16ns,这也太简单了吧”,二号车间小虎说到。“没错,那用上流水线以后呢?”“让我想想,用了流水线技术以后,从第4ns开始,每过1ns就会有1条指令从流水线上完成,完成上面4条指令,总共只需要7ns,比原来省了一半的时间。”“说的没错,大家发现没有,如果我们把执行步骤拆的再细一些,每个小步骤需要的时间更短一些,这样流水线的深度就会更深一些,流水线中容纳的指令也就越多,性能就会变得更高。”,小六激动的说到。领导也听得有些糊涂,打断问道:“等等,你慢一点,我没太明白”小六继续说道:“比如从现在的4个步骤,拆成8个更小的步骤,每个小步骤需要的时间减半为0.5ns,这样一来,流水线跑起来后,每隔0.5ns的时间就会有一条指令完成,比4个步骤的情况更快了!““妙啊!妙啊!”,领导忍不住鼓掌说道:“就这么干”我总觉得哪里不太对劲,却一时也说不上来。回去之后,我们就进行升级改造,将现在的四级流水线,改造成八级。你还别说,效果还真是立竿见影,将指令执行过程拆分得更细以后,流水线中容纳的指令数变得更多了,进一步减少了CPU电路资源的浪费,执行性能比以前更强了。但没过多久,竞争对手CPU也把流水线级数增加了,而且比我们的还多,这可急坏了领导。没有办法,我们也只好再一次提升流水线级数来应对。就这样双方你来我往,我们玩起了流水线级数大战,最疯狂的时候,我们把流水线级数做到了三十级。终于,我们搞出了事情。我们把一条指令的执行过程拆分的越来越细,虽然是提高了资源的利用率,但每个小步骤之间都需要做好交接,就需要增加很多额外的电路设备。步骤之间交接不仅有额外的时间开销,增加的电路设备也会产生额外的功耗。流水线级数到了一定深度后,发现性能没有增加反而下降了,而且功耗越来越大,风扇都要疯狂转起来给我们降温。看来这流水线级数也不是越多越好啊!我们又主动降低了流水线级数,在性能和功耗上选择了一个平衡点。流水线里的冒险不仅如此,我们在使用指令流水线的过程中,也渐渐地发现了一些其他问题。有时候,我执行到一些指令,需要从内存读取数据到寄存器中。不巧的是,负责读取指令的小A也准备从内存中读取后面的指令,这同一时间咱俩都要访问内存,都要使用访存电路,这下尴尬了,搞得流水线只好停顿下来等待,等我用完了小A再用,白白浪费了时间。还有的时候,我执行到一些指令,所需要的数据来自于前一条指令计算的结果,可流水线中前一条指令还没有结束,结果还拿不到,流水线只好又停顿下来等待。这都还不算啥,更要命的是,遇到了有分支的时候,根本不知道要去把哪个分支的指令加入流水线中处理。于是,我们把这些问题都集中反馈了上去,后来我发现不仅仅是我们车间,其他车间也遇到了这些问题。大家把这些问题叫做流水线里的冒险,还给这三种问题分别取了三个名字:结构冒险
2023年7月24日
其他

昨晚,因为核酸系统崩溃,这家公司被骂上了热搜第一

大家好,我是轩辕。昨天晚上,成都因为疫情又一次上了热搜,而这一次,热搜上的词条是一家软件公司的名字。事情的起因是这样的:从9月1号开始,成都市政府宣布了为期四天的全员核酸检测。昨天下午,我们小区物业通知了预计14:00-17:00会进行检测,告诉我们会挨个楼栋通知下去检测。结果一直拖到晚上也没收到通知,我一直忙别的也没留意,结果上网一看,关于成都核酸系统崩溃的各种段子已经满天飞了。是的,成都核酸检测系统,又崩溃了!辛苦的大白们没有办法,都用上了这种古老的方式来寻找“信号”。因为这个系统出了问题,导致核酸检测工作非常缓慢,大量的市民排队等待,平常排队半小时能完成的,昨晚都要排队好几个小时。到晚上23点半,物业直接通知只给部分人做,其他人可以洗洗睡了。好家伙,不知道有多少人白排了几个小时队。这好好的系统它咋就崩溃了呢?有网友挖出了一个中标公告,说这套系统背后使用的是浪潮的服务器:一千多万的项目,结果就这?但随后,有疑似浪潮的人出来回复:人家说的很清楚,上面中标的只是基础运维,这套软件系统的设计另有其人。随后有人又开喷健康码,喷鹅厂。但实际上,崩的不是健康码,而是大白使用的核酸采集录入系统,这是两套独立的系统。再接着,有人爆出这套软件是东软公司做的。于是一时间,所有人把怒火对准了东软,很快就把东软这个词条送上了微博热搜榜第一的位置。关于崩溃的原因,也有各种说法在朋友圈、微信群里流传,一时难辨真假。有说是这套系统背后使用的MySQL使用了超宽的大表:有说是MySQL单表容量太大,造成性能下降:还有的说是因为负载均衡不行,没法支撑高并发。总结起来基本上就两个原因:1、数据库的问题,数据量大后,查询检索效率低下。成都全市人口超过2000万,每天一次核酸,那就是单日新增两千万条记录,最近几天一直在做,数据容量很快就是几亿的规模,如果后端用MySQL还不分表,那确实够呛。2、高并发的问题,同一时间大量请求,服务器扛不住。一般情况下,使用nginx负载均衡,单机能做到几万的并发量。但成都2000W+的人口规模,全面做核酸的情况下,几万的并发肯定是不够用的。倘若这套系统背后真的就是一个nginx+mysql(不分表),那昨晚的情况也就不足为奇了。好了,吃瓜归吃瓜,我们还是要来点干货,作为一个程序员,要在吃瓜中学会成长。高并发之路这篇文章,我们来回答一个问题:到底该怎么做高并发?让我们从零开始。1、单机时代一开始的时候,用户量很少,一天就几百上千个请求,一台服务器就完全足够。我们用Java、Python、PHP或者其他后端语言开发一个Web后端服务,再用一个MySQL来存储业务数据,它俩携手工作,运行在同一台服务器上,对外提供服务。2、应用与数据库分离慢慢的,用户量开始多了起来,一台服务器有点够呛,把它们拆开成两台服务器,一台专门运行Web服务,一台专门用来运行数据库,这样它们就能独享服务器上的CPU和内存资源,不用互抢了。3、缓存系统后来,用户量进一步增加,每一次都要去数据库里查,有点费时间,引入一个缓存系统,可以有效缩短服务的响应时间。4、软件负载均衡用户量还在增加,一个Web服务的吞吐量开始达到了上限,系统开始出现卡顿。这时候,可以复制多个Web服务出来,再用一个nginx来进行负载均衡,将请求分摊到所有Web服务器上,提高并发量。5、数据读写分离随着系统的运行和用户的增长,数据量越来越多,数据库的瓶颈开始显现,读写明显变慢。这时候,可以增加新的数据库服务器,将读写进行分离,二者做好数据同步,提高数据库服务的整体I/O性能。6、数据库分库分表系统中的数据越来越多,即便是读写分离了,但一张表中的记录越来越多,从几百万到几千万,甚至要过亿了。把它们全部塞在同一张表里,检索查询耗时费力,是时候进行分库分表,把数据拆分一下,提高数据查询效率。7、硬件负载均衡再后来,业务发展很不错,用户量激增,以至于强劲的Nginx也扛不住了。一台不够,那就多整几台,再引入一个硬件负载均衡的服务器,比如F5,将网络流量分发到不同的Nginx服务器上,再一次提高性能。8、DNS负载均衡再再后来,用户量还在蹭蹭蹭的增长,强悍如F5这样的硬件负载均衡服务器也扛不住这样的高并发。老办法,一个不够那就多整几个。这一次,咱们在域名解析上下功夫,不同地区的用户,在访问同一个域名时,解析到不同的IP地址,以此来将流量进一步拆分。上面就是从最简单的单机到复杂集群的高并发演进之路。高并发是一个很大的话题,它所涵盖的东西其实远远不止上面这些内容。除了这些之外,像是消息队列、数据库选型、CDN、编程语言中的协程等等技术都能为提高并发助力。回到这次崩溃事件上,我想着经过一夜的折腾,今天总该好点了吧,结果下午一开始,又继续摆烂了:在我写这篇文章的时候,当事公司已经发布了说明:网络:你的意思是怪我咯?我是轩辕,欢迎关注我,我们下次再见。往期推荐核弹级漏洞!我把log4j扒给你看!可怕!CPU暗藏了这些未公开的指令!我是Redis,MySQL大哥被我害惨了!CPU被挖矿,Redis竟是内鬼!主板上来了一个新邻居,CPU慌了!
2022年9月3日
其他

计算机死机的时候,它在干什么?

大家好,我是轩辕。今天花几分钟跟大家分享一个很有意思又能涨知识的问题:电脑死机的时候到底在干什么?电脑死机,应该每个接触计算机的小伙伴都经历过吧。尤其是早些年,电脑配置还没现在这么高的时候,多开几个重量级应用程序,死机就能如约而至,就算你把键盘上的CTRL+ALT+DELETE按烂了,任务管理器也出不来,最后只能默默含泪长按关机按钮,强制关机。那么,你有没有想过,电脑在死机的时候,它到底在干嘛呢?众所周知,计算机的核心中枢是中央处理器CPU。上过计算机基础课程的同学都被教导过:CPU是一根筋死脑筋,只知道不断的取出指令来一条条执行,直到关机方休。所以理论上,死机分为两种,一种是CPU罢工不干了,不再执行下一条指令了,这属于硬件死机,不过这种情况基本不会发生。更多的是软件层面的死机,也就是CPU被困在了某个地方出不来了,导致本该执行的程序得不到执行,看起来就是死机了一般。聪明的你可能马上想到,如果写一个死循环,把CPU陷在里面出不去,是不是就能死机了?比如这样:void
2022年7月26日
其他

国内怎么就做不出JetBrains那样的产品?

template。最后是ctrl+shift+a以及alt+enter几乎可以在任何地方完成绝大部分写代码的常用操作。我并没有觉得vim在这方面有比JetBrains的效率高多少。另外就是
2022年6月21日
其他

戴尔官网618企采狂欢季,12代新品低至5折再减500元!

电脑采购预算不充足?戴尔官网618企采狂欢季来了!三重福利,错过等半年戴尔Latitude/OptiPlex/Precision全线领至高800元神券企采豪礼,至高领24英寸FHD显示器服务特惠升级,服务器送1年售后延保
2022年6月20日
其他

可怕!CPU暗藏了这些未公开的指令!

大家好,我是轩辕。我们知道,我们平时编程写的高级语言,是经过编译器编译以后,变成了CPU可以执行的机器指令:而CPU能支持的指令,都在它的指令集里面了。很久以来,我都在思考一个问题:CPU有没有未公开的指令?或者说:CPU有没有隐藏的指令?为什么会有这个问题?平常我们谈论网络安全问题的时候,大多数时候都是在软件层面。谈应用程序的漏洞、后端服务的漏洞、第三方开源组件的漏洞乃至操作系统的漏洞。但很少有机会去触及硬件,前几年爆发的熔断和幽灵系列漏洞,就告诉我们,CPU也不是可信任的。要是CPU隐藏有某些不为人知的指令,这是一件非常可怕的事情。如果某一天,某些国家或者某些团体组织出于某种需要,利用这些隐藏的指令来发动攻击,后果不堪设想。虽然想到过这个问题,但我一直没有付诸实践去认真的研究。直到前段时间,极客时间的一位老师分享了一份PDF给我,解答了我的疑惑。这份PDF内容是2017年顶级黑客大会Black
2022年4月13日
其他

如果美国封了DNS,俄罗斯将从网络消失?

俄乌战争还在持续,网络中的战争也同样在上演着。从最近几天的微博热搜就能看出,舆论阵地是何等的重要,一张图、一个视频、一段文字就能把人带跑偏,可见保持独立思考和判断的能力多么难能可贵。网络阵地如此之重要,大家有没有想过一个问题:美国那么爱制裁,互联网是美国人发明的,如果美国制裁俄罗斯互联网,把根域名服务器封了,俄罗斯是否就从互联网消失了?美国会不会干出这事儿我不知道,咱们就从技术上来分析一下,通过封禁根服务器,能不能实现将一个国家从互联网消失。要回答这个问题,需要了解一些互联网工作的基本常识。我们平时上网,其本质就是用你手里的客户端软件(比如微博、抖音、微信、浏览器等等)去访问它们背后的服务器(微博服务器、抖音服务器、微信服务器、其他网站的服务器等等),请求数据然后呈现给你。那如何访问呢?这些服务器都有属于它们的IP地址,这是一个在互联网中使用的身份标识号码,凭借这个数字,我们手机和电脑发出的网络数据包就能被网络中的“快递系统”不断转发,最终投递到目标服务器。但这些号码数字对我们人类来说没那么好记忆,所以,人们发明了域名这个东西。www.baidu.com,这就是百度的域名。这个东西可比数字好记多了!但互联网的协议是用IP地址进行身份识别的,现在搞了这么个域名,怎么用起来呢?计算机科学家们又搞了一个翻译系统出来:域名解析系统DNS。在访问真正的服务器之前,先通过这个解析系统,把这个域名“翻译”成对应的IP地址,拿到这个IP地址后,再去进行后面的网络访问。当然,这个过程都被现在的软件自动化的进行了,比如你在浏览器里输入www.baidu.com之后按下回车,浏览器自动完成了这个解析的过程,这对我们普通的用户来说是透明的(看不见的)。那么问题来了,这个负责域名解析的东西是什么样的?它是一台服务器吗?它位于哪个地方呢?首先,它不是一台服务器,万一崩了,那全世界都上不了网了。其次,它也不是一个简单的多点集群,全世界的网站这么多,每个节点要存储所有的域名——IP映射关系,那也是不切实际的。事实上,真正的域名解析系统它是一个分层级的庞大系统。本地DNS服务器权威域名服务器顶级域名服务器根域名服务器我们每个电脑和手机里面都设置了本地DNS服务器(简称LDNS),需要解析域名的时候,就向LDNS发出请求。大家可以在自己的电脑上执行nslookup或ipconfig命令,查看自己电脑上配置的DNS服务器地址是什么:我们以www.example.com这个域名为例,来看一下DNS的解析过程。你的电脑问LDNS:www.example.com的IP是什么?LDNS:查无此域名,问一下根服务器看看:www.example.com的IP是什么?根服务器:我可是十三大长老,哪管这些。你去问负责.com域名解析的顶级域名服务器吧,它肯定知道。LDNS问.com顶级域名服务器:大佬,www.example.com的IP是什么?.com顶级域名服务器:这我也不知道,你问问ns.example.com看看,它负责解析所有example.com下面的域名。LDNS问ns.example.com:大佬,www.example.com的IP是什么?ns.example.com:这我知道,是xxx.xxx.xx.xxxLDNS:谢谢大佬LDNS回复你的电脑:查到了,是xxx.xxx.xx.xxx,可累死我了···整个过程大概是下面这图所示,不过需要说明的是,并不是每一次DNS请求都会经历这样的过程,有些时候中间节点有缓存,路径就会变得不一样了。由此可见,根域名解析服务器在整个过程中扮演的角色至关重要。那么,问题又来了,全世界有多少根DNS?答案是13个,其中10个在美国,英国和瑞典各1个,日本1个。这13个根的名字和IP在这里可以公开查阅:https://www.internic.net/domain/named.root他们的名字从A.root-servers.net到M.root-servers.net。其中,A开头那个是主根,其他12个(B、C、D、E、F、G、H、I、J、K、L、M)是辅根。由于技术上的历史原因,根服务器只有13个,想知道具体原因的朋友,可以看看这篇文章:为何根域名服务器只有13个?但是需要注意的是,这里说的13个,并非真的只有13台物理机器,全球的互联网如果都只靠这十三台计算机维系,那风险还是很大的。在逻辑上,根确实只有13个,但每个根都有镜像啊!所以,根服务器实际上总共有1518个(截止2022-02-27)之多,在下面这个网站,你可以看到全球所有的根服务器分布情况:https://root-servers.org/从A到M,每一个根服务器背后都有许多镜像节点,分布在全球不同的地方。下面是我们中国所拥有的根镜像服务器:单是北京,就拥有8个节点。再次注意,根服务器的IP只有13个,但是却有一千多个物理服务器节点。那这是怎么办到的呢?这里用到了一个叫“任播”的网络技术。简单理解就是:可以让世界上不同的多台计算机,拥有同一个IP地址。注意,这里的IP地址是公网地址,如果是私有地址那没啥讨论的。小伙伴儿们可能一脸问号了,具体在网络路由的时候,具体选择哪一台计算机呢?这个问题说来话长,也不是今天的重点,感兴趣的同学可以看看这个:https://docs.microsoft.com/zh-cn/windows-server/networking/dns/deploy/anycast我国境内发出的对根DNS的请求,基本上都由国内的镜像完成了,并没有路由到国外的根服务器上去。注意这一点,非常重要!这么多台根服务器,它们是如何协同工作的呢?简单来说:所有的辅根从主根同步数据,而所有的镜像从对应的根服务器来同步数据。按照这个逻辑,A根就是超级大boss,只要它改了,其他一千多个节点都得跟着改。那么,如果某一天美国把A根中关于.cn的相关信息全部删掉,那全世界的根服务器都会跟着删掉,那中国将从互联网消失吗?这个时候,建设自主可控的根镜像服务器的重要性就体现出来了。服务器在我这儿,我不同步删除的内容,或者同步完加上删除的内容,就能破解这个问题!因为前面交代了,国内对根DNS的请求,基本都是国内镜像完成的,并没有路由出去。当然,其他国家的根镜像我们控制不了,他们可能无法访问.cn的域名,但只要他们想要访问,就会加回去,并拒绝同步美国删除的内容,如此一来,最后只有美国人自己访问不了.cn的域名。同样的道理也适用于俄罗斯,在root-servers网站上,也可以看到俄罗斯同样建设了许多的根镜像服务器,比如首都莫斯科:他们同样可以拒绝同步删除俄罗斯的国家域名.ru的解析信息。所以,想通过封禁根域名解析服务让一个国家从互联网消失,没那么容易。但如果是一个没有建设根镜像服务器的国家呢?往期推荐核弹级漏洞!我把log4j扒给你看!全中国一共有多少IP地址?30天开发一个Web服务器!
2022年2月28日
其他

恭喜这5个同学!

大家好,我是轩辕。前段时间,我在知识星球发起了一次学习活动:30天开发Web服务器,今天来做个总结吧。首先,这一次活动,整体来说不算是太成功。一开始没有写代码的时候,大家还算积极活跃,毕竟只需要看看书,看看我发的资料就能完成每天的学习作业,大部分人还是能跟得上节奏。但随着正式开始编程,能够坚持下来的人就一天比一天少了。有些同学要忙着期末考试,没时间参与。有些同学没有编程基础,一边学编程语言,一边参与项目,跟不上。还有的同学想着过几天再一次性完成,就先鸽一下。结果一步跟不上,步步跟不上,累积了几天的作业没有完成后,很多人便放弃了。造成这个结果的主要责任在我,没有考虑到大家的基础不一样,也没有考虑大家有没有时间完成每天的任务,学习任务的安排也欠妥。但还是有不少同学对此非常上心,积极完成作业,而且代码的质量都非常不错,这里特别表扬一下五位球友:@letangers@安深深@月@Embrace@柒我决定,给这五位球友下一期星球免费续费的福利,同时还会每人送一份神秘礼物(哈哈,
2022年1月4日
其他

核弹级漏洞!我把log4j扒给你看!

大家好,我是轩辕。相信大家这两天应该被这么一条新闻刷屏了:这个漏洞到底是怎么回事?核弹级,真的有那么厉害吗?怎么利用这个漏洞呢?我看了很多技术分析文章,都太过专业,很多非Java技术栈或者不搞安全的人只能看个一知半解,导致大家只能看个热闹,对这个漏洞的成因、原理、利用方式、影响面理解的不到位。这篇文章,我尝试让所有技术相关的朋友都能看懂:这个注定会载入网络安全史册上的漏洞,到底是怎么一回事!log4j2不管是什么编程语言,不管是前端后端还是客户端,对打日志都不会陌生。通过日志,可以帮助我们了解程序的运行情况,排查程序运行中出现的问题。在Java技术栈中,用的比较多的日志输出框架主要是log4j2和logback。今天讨论的主角就是log4j2。我们经常会在日志中输出一些变量,比如:logger.info("client
2021年12月11日
其他

全中国一共有多少IP地址?

大家好,我是轩辕。这段时间不是某某云的云服务器广告铺天盖地嘛,而我去年双十一用新用户搞的那个服务器也到期了,到了续费的时间一看,还真是肉疼啊。果然还是应了那句话:白piao一时爽,续费火葬场幸好我那上面也没啥重要的数据,关了就关了吧。然后我又换了个账号享受新用户的低价,这一次,直接买了三年。话题扯远了,今天要聊的话题是关于IP地址。IP地址因为我平时会弄个小程序,搭个网站博客之类的,所以在购买云服务器的时候,一般会再申请一个公网IP。看着申请到的IP地址,我突然想到了一个问题:不是早就说IP地址已经耗尽了吗,为什么我随便就能申请到,阿里云到底屯了多少IP地址,咱们中国总共又有多少IP地址呢?大家知道,我们现在的互联网主要还是采用的IPv4的地址,虽然我上大学那会儿就在吼IPv6了,但这么多年过去了,IPv4的地位依旧没有动摇。IPv4的IP地址,是采用4个字节的整数来表示,学过编程的都知道,4个字节能够表示的范围是0-4294967295(无符号数)。也就是说,全世界最多只有42.9亿个IPv4的地址。当然,为了书写和记忆方便,我们一般不会用整数来表示,而是采用点分十进制的形式。从
2021年12月2日
其他

CPU被挖矿,Redis竟是内鬼!

却说这一日,Redis正如往常一般工作,不久便收到了一条SAVE命令。虽说这Redis常被用来当做缓存,数据只存在于内存中,却也能通过SAVE命令将内存中的数据保存到磁盘文件中以便持久化存储。只见Redis刚打开文件,准备写入,不知何处突然冲出几个大汉将其擒住。到底是怎么回事?Redis一脸懵。这事还得要从一个月之前说起。挖矿病毒前情回顾:CPU深夜狂飙,一帮大佬都傻眼了···一个月前,突如其来的警报声打破了Linux帝国夜晚的宁静,CPU占用率突然飙升,却不知何人所为。在unhide的帮助下,总算揪出了隐藏的进程。本以为危机已经解除,岂料···夜已深了,安全警报突然再一次响了起来。“部长,rm那小子是假冒的,今天他骗了我们,挖矿病毒根本没删掉,又卷土重来了!”安全部长望向远处的天空,CPU工厂门口的风扇又开始疯狂地转了起来···无奈之下,部长只好再次召集大家。unhide再一次拿出看家本领,把潜藏的几个进程给捉了出来。kill老哥拿着他们的pid,手起刀落,动作干脆利落。这一次,没等找到真正的rm,部长亲自动手,清理了这几个程序文件。“部长,总这么下去不是个办法,删了又来,得想个长久之计啊!”,一旁的top说到。“一定要把背后的真凶给揪出来!”,ps说到。“它们是怎么混进来的,也要调查清楚!”,netstat说到。“对,对,就是”,众人皆附和。部长起身说道,“大家说得没错,在诸位到来之前,我已经安排助理去核查了,相信很快会有线索。”此时,防火墙上前说道:“为了防止走漏消息,建议先停掉所有的网络连接”“也罢,这三更半夜的,对业务影响也不大,停了吧!”,安全部长说到。不多时,助理行色匆匆地赶了回来,在部长耳边窃窃私语一番,听得安全部长瞬时脸色大变。“sshd留一下,其他人可以先撤了”,部长说到。大伙先后散去,只留下sshd,心里不觉忐忑了起来。“等一下,kill也留一下”,部长补充道。一听这话,sshd心跳的更加快了。助理关上了大门,安全部长轻声说到:“据刚刚得到的消息,有人非法远程登录了进来,这挖矿病毒极有可能就是被人远程上传了进来”sshd一听这话大惊失色,慌忙问道:“难道登录密码泄露了?”“应该不是,是使用的公私钥免密登录”,一旁的助理回答到。“你看,在/root/.ssh/authorized_keys文件中,我们发现了一个新的登录公钥,这在之前是没有的”,随后,助理输出了这文件的内容:[root@xuanyuan
2021年11月16日
其他

电脑关机了,黑客还能偷内存数据!

提到网络攻击技术,你脑子里首先想到的是什么?是DDoS?是SQL注入、XSS?还是栈溢出、RCE(远程代码执行)?这些最常见的网络攻击技术,基本上都是与网络、软件、代码、程序这些东西相关。这也好理解,计算机网络安全,不跟这有关,还与什么有关系?今天跟大家介绍一下,攻击技术,除了这些,还有一些脑洞大开的方式,它们可能跟时间、震动、频率、温度等各种物理相关的元素相关,看完绝对让你瞠目结舌!这些不同于传统软件安全方向,而是从其他侧面进行的网络攻击,称作侧信道攻击,也叫边信道攻击。内存冷冻请大家思考一个问题:如果计算机突然断电,内存里的数据是不是瞬间就没了?内存大家都知道,计算机运行离不开这东西,程序指令和数据都存储在这里,但你知道内存条存储数据的原理吗?看到图中那一块块黑色的东西了吗?那就是内存条存储数据的地方:内存颗粒。在内存颗粒里面,是超大规模集成电路,里面是密密麻麻的存储单元格,每一个单元格存储一个比特位:这个单元格中的核心部件是一个电容,电容有电压,如果电压在一定范围内,这个单元格就是1,否则就是0。通过无数个这样的单元格,构成了GB级的存储空间。但大家学过物理应该知道,电容是一个不稳定的元件,随着时间的流逝,电荷会泄漏,如果不加以控制,内存条中的电压最终就会变成0,内存中的数据也就不准确了。因此,内存在工作的时候,需要定时的进行数据刷新,对电容进行充电,一般最多64ms就得充一次电,才能保存数据的准确性。好了,内存的背景知识交代完毕,现在回到本节一开始提到的那个问题:计算机突然断电了,内存中的数据瞬间就没了吗?内存中的数据是通过电容这种电子元件在承载,电容充放电都是需要时间的,所以可以大胆猜测,即使断电了,内存中的数据全部消失也是需要时间的。国外有人脑洞大开,做了一项实验,测试内存条断电后,里面的数据随着时间的流逝,消失的情况。普通数据不方便观察,用图片最直接,实验中将一张蒙娜丽莎的图片载入内存中,然后断电,然后计算不同时间后,这张图的变化情况:可以看到,在断电后的5s内,图片数据肉眼上看不到变化,30s后也影响不大,一分钟后也能依稀可见,5分钟后才彻底看不到。而更重要的是,如果温度降低时,电容中电荷遗漏的速度将更加缓慢。下面这个表格是测试内存条数据错误率在正常情况和冷冻情况下的比较。如上图所示,红色框是不冷冻情况,蓝色框是在零下50摄氏度情况,可以看到,在冷冻情况下,一分钟后,数据的错误率是0,即便是在300秒(5分钟)后,错误率也只有惊人的0.0095%。所以,一种新的攻击方式就出来了:使用内存冷冻的方式,可以从内存条中提取数据。内存中有什么数据?很多程序的密码密钥可能都存在于内存之中,最典型的比如Windows的开机密码。以为电脑关机了就安全了?可不是这么回事哦!熔断与幽灵熔断与幽灵漏洞攻击大家应该不会陌生,在2017年刚刚爆发出来的时候,占据了无数媒体的头条,可见影响力之广。在讲述这个漏洞之前,先请大家看一个故事。学过计算机组成原理的朋友可能都知道,CPU有两个重要的特性:分支预测和乱序执行。在执行到判断分支的时候(比如if判断),CPU会根据它自己的“经验”来判断,一会儿可能会走入哪一个分支,从而提前执行一些这个分支的指令,这叫分支预测。另外,CPU在执行一些指令的时候,可能并不是按照顺序一条执行完再执行下一条,而是可能在会预执行一些CPU认为可以提前执行,对程序流程无关的指令,这个叫乱序执行。但CPU认为可以提前执行,那就真的可以提前执行吗,执行了可能对程序本身流程没有影响,但会不会有什么副作用呢?先留这个问题,一会儿再说,先来看另一个概念:缓存。CPU执行程序需要频繁与内存通信,读取数据或者写入数据。但内存的响应速度比CPU慢多了,于是CPU在其内部加了一块缓存,将最近要用的数据放到这里来,避免每一次都从内存访问,提高工作效率。因此,同样读取一个数据,从内存读和从缓存读,时间上是有差异的。熔断与幽灵正是利用这一点,来进行了系统攻击。假如你想读取操作系统内核的数据,但因为系统安全机制,应用程序是无法直接访问内核空间的,但这个漏洞就可以帮你实现内核空间数据的读取。下面这段程序,先执行几十次,每次传入的x都小于16,每次都走入同一个分支,训练CPU,让它获得一些“经验”,让它认为
2021年8月13日
其他

为了一个HTTPS,浏览器操碎了心···

我是一个浏览器,每到夜深人静的时候,主人就打开我开始学习。为了不让别人看到浏览记录,主人选择了“无痕模式”。但网络中总是有很多坏人,他们通过抓包截获我和服务器的通信,主人干了什么,请求了什么数据全被他们知道了!光窃听也就罢了,他们还经常篡改内容,在网页里面插入诱人的小广告,真是太坏了!为了保护主人的隐私还他一个干净的上网环境,我决定对通信加密!第一版:直接简单加密加密嘛,很简单,把原来要发送的数据加密处理后再发给服务器就行了。为了安全,密钥当然不能固定,每一次通信都要随机生成。不过接下来我犯难了,我该怎么把这个秘钥告诉服务器呢,服务器没有秘钥就解不了密,也就不知道我在请求什么资源了。也不能直接弄个字段告诉服务器密钥,那样别人也能拿到,就跟没加密一样了。我左思右想,灵机一动,决定把密钥放在数据的开头几个字节藏起来,只要私下跟服务器约定好,他用这前几个字节作为密钥解密,就能解开我发送的数据了。你还别说,这办法还真好使,我跟服务器开始秘密通信起来。后来,找我使用这种办法通信的服务器变得越来越多。再后来这事就在圈子里传开了,大家都知道数据的前几个字节是密钥了,谁都能解密了。看来这个办法不行,我得重新思考加密方法了。第二版:非对称加密服务器告诉我,我们之前用的那种加密算法叫对称加密算法,也就是加密和解密使用的同一个秘钥。还有一种叫非对称加密算法,这种算法有两个秘钥,一个公开的叫公钥,一个私藏的叫私钥。最关键的是,公钥加密后只能用私钥解开,反过来也一样。只要在正式的数据传输前,服务器把他的公钥告诉我,我后面用它加密数据就行了,就算被别人抓包,他也解不开,因为只有拥有私钥的服务器才能解开。不得不说,这非对称加密真是个好东西啊!不过这样一来只能单程加密,服务器能解密我发的,但他发给我的,我却解不了,也不能让他用私钥加密,我用公钥解密,因为公钥是公开的,谁收到都能解,不安全。没办法,我也弄了一对儿秘钥,通信之前我们双方都交换一下彼此的公钥,这样就可以双向加解密了!虽然是有点麻烦,但为了数据安全,忍了吧!第三版:非对称与对称加密结合但我忍了没几天就忍不住了。这个非对称加密算法好是好,就是加解密太费时间了,导致我渲染一个网页要花很久时间,卡的不行。我打算去跟服务器商量一下办法,没想到服务器比我更头疼,他要服务很多浏览器,每一个都这么加解密,把他累的够呛。于是我们决定,还是用原来的对称加密算法,这样快得多。但是一开始的时候可以用非对称加密算法来传输后面要用的秘钥,把两种算法的优势结合起来。这一来,我只需要把后面要用到的秘钥,通过服务器公钥加密后发给他就行了,我省去了不少事儿。第四版:秘钥计算有一天,服务器告诉我,我们现在的秘钥就是一个随机数,而随机数并不是真正随机的,可能被预测出来,所以我们得提升这个秘钥的安全性。一个随机数不够,那就多弄几个!一端容易被猜出来,那就两端一起生成!我们决定各自生成一个随机数发给对方,我再额外加密传输一个随机数给服务器,这一来,咱们双方都有3个随机数了,然后双方都用这三个随机数计算出真正的秘钥,这可比一个单纯的随机数要安全得多了。不过为了验证双方计算出来的秘钥是一样的,我们在正式数据传输前,需要先来测试一下,现在的流程变成了这个样子:我们的这一方案很快得到了大家的认可,圈子里的浏览器和服务器们纷纷用上了这套方案。第五版:数字证书原以为这个方案已经万无一失了,没想到我和服务器的通信还是泄露了···原来有个家伙冒充服务器跟我通信,然后又冒充我跟服务器通信,把我的请求进行了转发,我们俩都被蒙在鼓里,这就是中间人攻击。看来还缺乏一个认证机制!我得知道和我通信的是不是真的服务器。经过大家的商量,圈子里的服务器们推选了一个德高望重的前辈做公证人,让这公证人准备一对非对称加密的密钥,并在圈子里公开了公钥,所有人都得把他的公钥记下来。服务器得去公证人这里先登记,把自己的公钥、名字等等信息报上去,公证人拿到这些信息后,计算一个Hash值,然后再用公证人的私钥把Hash值进行加密,加密后的结果就是数字签名。证书的签发最后,公证人把登记的信息和这个数字签名合在一起,封装了一个新的文件发给服务器,登记就完成了,而这个新的文件就是数字证书。服务器拿到证书后,可要好生保管,因为通信的时候,服务器须要将他们的证书发给我们浏览器验证。证书的验证我们浏览器拿到证书后,把证书里面的信息也计算一遍Hash,再用提前记录好的公证人的公钥把证书里的数字签名进行解密,得到公证人计算的Hash,两个一对比,就知道这证书是不是公证人签发的,以及有没有被篡改过了!只有验证成功才能继续后面的流程,要不然就是冒充的!这一下总算解决了中间人冒充的问题,除非中间人偷到了公证人的私钥,否则他是没办法伪造出一个证书来的。非对称加密除了加密数据,还能用来验证身份,真是YYDS!第六版:信任链我们这加密方案一传十,十传百,很快就传遍了整个互联网,想要使用这套方案的服务器越来越多,毕竟,谁都不希望自己的网站被人插入小广告。可原来的那个公证人有些忙不过来了,于是,大家开始推选更多的公证人,公证人开始多了起来,不仅多了起来,而且还形成了产业链。原来的公证人变成了一代目,一代目可以给新的公证人签发证书,新的公证人就变成了二代目,还有三代目,搞得跟传销似的。原来只有一个公证人的时候,大家直接保存他的公钥就行了。现在公证人越来越多,我们没办法保存所有的公证人的公钥了,就算能保存得下,但有新的公证人出现的时候我们也做不到实时更新。于是,大家约定,让所有的一代目公证人自己给自己签发一个证书,叫做根证书,并安装在我们的操作系统中。以后在验证网站服务器的证书时,就得先去验证证书的签发者,然后再继续验证上一级签发者,直到验证最终的签发者是不是在根证书列表中。只要最终的签发者在系统的根证书列表中,那这条链上签署的证书就都是受信任的,否则我们就会弹窗提醒用户:如今,这套方案已经推广到了全世界,现在遇到使用这套方案的网站服务器时,我们浏览器就会在地址栏加上一把小锁,表示网站很安全,还把URL地址,从HTTP,改成了HTTPS···PS:本文用故事形式讲述了HTTPS是如何工作的,只是起一个引领入门的作用,略去了很多细节,实际情况远比这复杂,比如对称加密秘钥的计算方式、秘钥的交换算法(RSA、DH、ECDH还有区别),双方测试秘钥正确性的方式都没有体现出来,有机会再写一篇正经的技术文来详细抓包剖析HTTPS详细流程。希望本文对大家理解HTTPS机制有一些帮助,再看其他专业介绍时不再吃力。往期相关推荐一个故事看懂Redis一个故事看懂Docker一个故事看懂CPU中断技术
2021年8月6日
其他

我刚按下666,计算机发生了神奇的事情···

计算机领域有一个经典的问题:从你在浏览器中输入URL并按下回车,到网页渲染出来,这中间发生了什么?通过这个问题,可以考察候选人对计算机网络的理解程度,因此出现在数不清的面试场合。毋庸置疑,这是一个好问题,我也看到不下100篇文章在探讨这个问题的答案。而今天,我想跟大家探讨的是另外一个问题:从你在键盘上按下一个“6”,到屏幕上显示出来,计算机发生了什么?这个问题无论从空间尺度还是时间尺度比起开始那个问题都更小得多。空间尺度上,这个问题探讨的范围只限于一台计算机上,没有跨越网络。时间尺度上,第一个问题的时间尺度在秒级别,而这个问题的时间尺度在毫秒级别。尺度虽然小了但背后的技术知识并不少。我相信,等你看完这篇文章,搞清楚这个问题的答案,你将对计算机组成原理、操作系统、CPU这些东西有完全不一样的理解。准备好,咱们出发!0x01:
2021年4月19日
其他

CPU深夜狂飙,一帮大佬都傻眼了···

本故事根据上次的挖矿病毒事件改编傍晚时分,警报声乍起,整个Linux帝国都陷入了惊恐之中。安全部长迅速召集大家商讨应对之策。“诸位,突发情况,CPU占用率突然飙升,并且长时间没有降下来的趋势,CPU工厂的阿Q向我们表达了强烈抗议”这时,一旁的kill命令说到:“部长莫急,叫top老哥看一下谁在占用CPU,拿到进程号pid,我把他干掉就好了”此言一出,在座的大伙都点头赞许,惊恐之色稍解。top命令站了起来,面露得意之色,说到:“大家请看好了”,说完,打印出了当前的进程列表:众人瞪大了眼睛,瞅了半天,也没看出哪个进程在疯狂占用CPU,top老哥这下尴尬了。这时,一旁的ps命令凑了上来,“让我来试试”ps命令深吸了一口气,也打印出了进程列表。然而,依旧没有任何可疑的进程。“你俩怎么回事,为什么没有?”,安全部长有些不悦。“部长,我俩都是遍历的
2021年1月23日
其他

吓人!半夜,这个程序从虚拟机里跑出来了!

误入陷阱夜黑风高,两个不速之客又一次来到了一片新的土地。“老二,总算进来了,咱们依计行事,你去扫描硬盘上的文件,看看有没有有价值的,我去修改开机启动项,把咱们加进去”“等一下,老大,我感觉有点不对劲”“哪里不对劲了?”,老大问到。“我们去过的其他地方都很热闹,这里怎么这么安静?你看,连QQ、微信这些进程都没有!”,老二说到。老大环顾四周,也察觉到了一丝异常。稍等了一小会儿,老大突然惊呼:“不好!这里是个虚拟机,咱们掉入虚拟机中了!”“你怎么看出这是一个虚拟机的?”,老二不解的问到。“你看,那里有个vmware的进程,注册表里还有一堆vmware的标记”“那怎么办?完蛋了,咱们要被人扒的干干净净了~”,老二一脸焦急。老大眉头紧锁,来回踱步,突然面露喜色说到:“别着急,临行前,主人偷偷给了我一个锦囊,叮嘱我在紧急时候打开”“那还等什么?赶紧拿出来啊!”老大从兜里掏出了锦囊,里面有一纸信,两人认真的看了起来。片刻之后,老大大声笑道:“老弟!稳了!”老二一脸问号,没太明白,“大哥,恕我眼拙,这怎么就稳了?”“你看这里,主人交代了虚拟机逃逸大法,告诉我们如何从虚拟机中逃离”“大哥,小声一点,小心被发现了。咱们快开始行动吧,晚了说不定就来不及了”“别急,让我仔细研究一下”信纸上密密麻麻写了一大堆,看起来有些复杂的样子,两个人刚刚放松的眉头又慢慢皱了起来。没一会儿,老二失去了耐心,“大哥,这也太复杂了,我是看不懂了,靠你了”“我明白了,虚拟机会和外面的真实世界通信,咱们只要抓住通信过程中的漏洞,把我们的指令代码参杂在通信数据中,让外面世界负责通信的一端执行这些指令代码,咱们就能传输过去,逃逸到外面的真实世界去!”“原来如此,可咱上哪里去找这样的漏洞呢?”“有了,看这里,主人给我们找了好几个漏洞,真是太贴心了!”CVE-2016-7461CVE-2017-4901CVE-2019-14378“这一串串字符和数字是什么意思?”,老二问到。“这个呀,叫漏洞编号,CVE就Common
2020年12月22日
其他

那天,我被拉入一个Redis群聊···

以上就是我们的日常工作了,通过咱们几个小伙伴的齐心协力,构成了一个高可用的缓存服务,MySQL大哥再也不敢小瞧我们了。
2020年11月2日
其他

一个爬虫的故事:这是人干的事儿?

爬虫原理我是一个爬虫,每天穿行于互联网之上,爬取我需要的一切。说起来还要感谢HTTP协议,因为它,全世界的网站和浏览器才能够连接通信,而我也是借助HTTP协议,获取我想要的数据。我只需要伪装成一个浏览器,向服务器发送HTTP请求,就能拿到网页HTML文件。接着,我再按照HTML的格式规范,去解析其中的图片、链接、表单等等我关注的信息。获取链接标签以后,我又可以进一步爬取链接背后的网页,如此反复,要不了多久,一个网站中暴露出来的内容我就能爬个干净。当然了,咱们做爬虫也还是有底线的。干我们这一行,有一个约定俗成的规定,那就是Robots协议。只要你在网站的根目录下放置一个叫robots.txt的文件,里面写上哪些目录禁止访问,我就会绕道而行,就像这样:User-agent:
2020年10月9日
其他

我是Redis,MySQL大哥被我害惨了!

后来,我俩去找应用程序商量了,不仅把键值的过期时间随机了一下,还设置了热点数据永不过期,这个问题缓解了不少。哦对了,我们还把这两次发生的问题分别取了个名字:缓存击穿和缓存雪崩。
2020年9月11日
其他

10大高性能开发宝石,我要消灭一半程序员!

程序员经常要面临的一个问题就是:如何提高程序性能?这篇文章,我们循序渐进,从内存、磁盘I/O、网络I/O、CPU、缓存、架构、算法等多层次递进,串联起高性能开发十大必须掌握的核心技术。-
2020年8月18日
其他

弹窗!到底谁是幕后黑手?

夜深了,程序员的电脑却没关······突然,桌面右下角弹出了一个窗口······五分钟后······又五分钟后······[
2020年7月13日
其他

懂了!VMware/KVM/Docker原来是这么回事儿

云计算时代,计算资源如同小马哥当年所言,已经成为了互联网上的水和电。虚拟主机、web服务器、数据库、对象存储等等各种服务我们都可以通过各种各样的云平台来完成。而在云计算欣欣向荣的背后,有一个重要的功臣,那就是虚拟化技术。可以毫不客气的说,没有了虚拟化技术,云计算无从谈起。说起虚拟化你会想到什么?从我们常用的虚拟机三件套VMware、VirtualPC、VirutalBox到如今大火的KVM和容器技术Docker?这些技术是什么关系,背后的技术原理是怎样的,又有什么样的区别,各自应用的场景又是什么样的?看完这篇文章,相信大家都能回答上面问题。历史背景什么是虚拟化技术?维基百科中的解释是这样的:虚拟化(技术)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分割、组合为一个或多个电脑配置环境。对于一台计算机,我们可以简单的划分为三层:从下到上依次是物理硬件层,操作系统层、应用程序层1974年,两位计算机科学家Gerald
2020年6月29日
其他

CPU明明8个核,网卡为啥拼命折腾一号核?

我们给办事单位都分配了一个编号,叫做中断向量。我们还准备了一个表格叫中断描述符表IDT,表格里记录了很多信息,其中就有处理这个中断号对应的函数地址。我们找PIC拿到编号后就执行处理函数就OK了。
2020年6月22日
其他

真惨!连各大编程语言都摆起地摊了!

摊主一听来了劲头,开始滔滔不绝:“有些数据啊他不适合存在数据库里,比如文档啊,JSON啊,这些东西你要用数据库存储,增加字段和查询,可麻烦了,你用MongoDB就方便都多了······”
2020年6月10日
其他

一个神秘URL酿大祸,差点让我背锅!

我叫小风,是Windows帝国一个普通的上班族。上一回说到因为一个跨域请求,我差点丢了饭碗,好在有惊无险,我的职场历险记还在继续。
2020年6月4日
其他

因为一个跨域请求,我差点丢了饭碗

然而太平日子没过多久,投诉又多了起来。我一打听才知道,原来现在开始流行什么前后端分离技术,数据和展示解耦,数据不再直接放在网页文件里,而是需要单独通过JavaScript去从服务器拿回来动态展示。
2020年5月27日
其他

就为了一个原子操作,其他CPU核心罢工了

会议还有另外一个收获,以前被各车间诟病的每次原子操作都要锁定总线,导致大家需要访问内存的都只能干等着的问题也得到了解决。以后总线主任不再需要锁定总线了,通过这次的缓存一致性协议就可以办到。
2020年5月21日
其他

可怕!CPU竟成了黑客的帮凶!

“是的,就是我,我先故意给你连续多次小于16的参数,误导你们,误以为后面的参数还是小于16的,然后突然来一个特意构造的大于16的参数,你们果然上钩了,预测失败,提前执行了一些本不该执行的指令。”
2020年5月12日
其他

完了!CPU一味求快出事儿了!

我开始组织兄弟几个商讨方案,“兄弟们,我们最主要的时间都浪费在等待内存数据上了,如果我们能在等待的时间里把后续指令需要的数据提前准备到缓存中来,那可就节约不少时间了,不用每次都等那么久。”
2020年5月9日
其他

哈希表哪家强?几大编程语言吵起来了!

“是这样的,按照我们既定的规则,在查找的时候就需要额外做一些工作,另外删除的时候也不能直接删除,否则会破坏规则链条·····”,接下来一段时间,dict{}给大家仔细介绍了他们的处理思路。
2020年4月26日
其他

内核地址空间大冒险4:线程切换

我小心翼翼的执行了这里的代码,只是简单输出了一行日志,然后来到了一个叫__restore_rt()的函数,又一条syscall指令摆在了我的面前,我没有犹豫再一次一头扎进了内核空间。
2020年4月22日
其他

震撼!全网第一张源码分析全景图揭秘Nginx

main函数的最后,根据是否启用多进程模型,分别进入多进程版本的ngx_master_process_cycle和单进程版本的ngx_single_process_cycle()。
2020年4月16日
其他

一个Java对象的回忆录:那些被锁住的日子

“那是一个ObjectMonitor对象,哦,也就是我说的重量级锁啊”,一边说,一边准备了一个ObjectWaiter对象,把自己线程地址放了进去,随后将这个对象放入monitor对象的等待列表中。
2020年4月8日
其他

一个整数+1引发的灾难

“没错,有符号数的最高位是用来标记正负的,如果这个config最高位为1,后面的位经过精心设计,不仅能瞒天过海骗过那里第9行的验证,还能将某个位置的数字进行一个原子+1操作。”,小王继续说道。
2020年3月26日
其他

一网打尽!每个程序猿都该了解的黑客技术大汇总

TCP劫持技术是一种很老的技术,1995年被提出来后深受黑客青睐。不过近些年来,随着操作系统层面的安全机制增强和防火墙软件的检测能力提升,这种基础的攻击方式越来越容易被发现,慢慢的淡出了人们的视野。
2020年3月19日
其他

看过无数Java GC文章,这5个问题你也未必知道!

...}需要注意的是,上面VMThread的工作线程中,并非处理所有的VMOpration都会执行安全点的同步工作,会根据VMOpration的情况处理,为求清晰简单,上述代码中略去了这些逻辑。
2020年3月12日
其他

Python一键转Jar包,Java调用Python新姿势!

include_dirs=['/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/include',
2020年3月9日
其他

一个Java对象的回忆录:垃圾回收

“你醒啦!”,迷迷糊糊中听到一个声音,我睁开了眼睛,发现一个小伙伴正看着我。
2020年3月5日
其他

内核地址空间大冒险3:权限管理

在我休息的间隙,隔壁generic_permission房间又传来了几下错误的提示音,不知道哪个倒霉蛋要空手而归了。
2020年2月25日