9 编程技术宇宙

尚未进行身份认证

我要认证

一个编程技术界的“漫威宇宙”,一趟故事与技术的奇幻之旅

等级
TA的排名 1w+

从创建进程到进入main函数,发生了什么?

前几天,读者群里有小伙伴提问:从进程创建后,到底是怎么进入我写的main函数的?今天这篇文章就来聊聊这个话题。首先先划定一下这个问题的讨论范围:C/C++语言这篇文章主要讨论的是操作系统层面上对于进程、线程的创建初始化等行为,而像Python、Java等基于解释器、虚拟机的语言,如何进入到main函数执行,这背后的路径则更长(包含了解释器和虚拟机内部的执行流程),以后有机会再讨论。所以这里就重点关注C/C++这类native语言的main函数是如何进入的。本文会兼顾叙述Linux和Win

2020-10-29 09:19:55

一口气看完45个寄存器,CPU核心技术大揭秘

序言前段时间,我连续写了十来篇CPU底层系列技术故事文章,有不少读者私信我让我写一下CPU的寄存器。寄存器这个太多太复杂,不适合写故事,拖了很久,总算是写完了,这篇文章就来详细聊聊x86/x64架构的CPU中那些纷繁复杂的寄存器们。长文预警,时速较快,请系好安全带~起飞~自1946年冯·诺伊曼领导下诞生的世界上第一台通用电子计算机ENIAC至今,计算机技术已经发展了七十多载。从当初专用于数学计算的庞然大物,到后来大型机服务器时代,从个人微机技术蓬勃发展,到互联网浪潮席卷全球,再到移动

2020-10-21 09:19:56

一个故事看懂AI神经网络工作原理

我是一个AI神经元我是一个AI神经元,刚刚来到这个世界上,一切对我来说都特别新奇。之所以叫这个名字,是因为我的工作有点像人类身体中的神经元。人体中的神经元可以传递生物信号,给它输入一个信号,它经过处理后再输出一个信号传递给别的神经元,最终传递到大脑完成对一个信号的决策和处理。聪明的计算机科学家们受到启发,在代码程序里发明了我:神经元函数。在我们的世界里,我只是普普通通的一员,像我这样的神经元有成百上千,甚至上万个,我们按照层的形式,组成了一个庞大的神经网络。很快我和隔壁工位的

2020-10-14 09:23:21

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

爬虫原理我是一个爬虫,每天穿行于互联网之上,爬取我需要的一切。说起来还要感谢HTTP协议,因为它,全世界的网站和浏览器才能够连接通信,而我也是借助HTTP协议,获取我想要的数据。我只需要伪装成一个浏览器,向服务器发送HTTP请求,就能拿到网页HTML文件。接着,我再按照HTML的格式规范,去解析其中的图片<img>、链接<a>、表单<form>等等我关注的信息。获取链接标签以后,我又可以进一步爬取链接背后的网页,如此反复,要不了多久,一个网站中

2020-10-10 09:28:27

深夜,我偷听到程序员要对session下手……

我是一个web服务器我是一个web服务器,我的工作是给人类提供上网服务,我每天要为数以万计的人提供网页浏览服务。已经是深夜了,我还在和手下几个兄弟为了一件事紧张讨论着。“老大,现在咱们每天处理的请求越来越多了,session同步的问题不能再拖了,必须想个办法”“二哥说的是啊,老大,不能再拖了”“老二,老三,咱们是一个集群,你们说的问题我不是不知道,我昨天听程序员们在讨论说要给我们接入一个叫Redis的家伙,相信这一问题很快就能得到解决啦,大家再忍忍。”“Redis,他是谁,什

2020-09-23 15:38:58

突然挂了!Redis缓存都在内存中,这下完了!

我是Redis,一个叫Antirez的男人把我带到了这个世界上。“快醒醒!快醒醒!”,隐隐约约,我听到有人在叫我。慢慢睁开眼睛,原来旁边是MySQL大哥。“我怎么睡着了?”“嗨,你刚才是不是出现了错误,整个进程都崩溃了!害得一大堆查询请求都给我怼过来了!”,MySQL说到。刚刚醒来,脑子还有点懵,MySQL大哥扶我起来继续工作。“糟了!我之前缓存的数据全都不见了!”“WTF?你没有做持久化吗?”,MySQL大哥一听脸色都变了。我尴尬的摇了摇头,“我都是保存在内存中的,所以

2020-09-18 09:32:37

还不懂Redis?看完这个故事就明白了!

我是Redis你好,我是Redis,一个叫Antirez的男人把我带到了这个世界上。说起我的诞生,跟关系数据库MySQL还挺有渊源的。在我还没来到这个世界上的时候,MySQL过的很辛苦,互联网发展的越来越快,它容纳的数据也越来越多,用户请求也随之暴涨,而每一个用户请求都变成了对它的一个又一个读写操作,MySQL是苦不堪言。尤其是到“双11”、“618“这种全民购物狂欢的日子,都是MySQL受苦受难的日子。据后来MySQL告诉我说,其实有一大半的用户请求都是读操作,而且经常都是重复查询一个东西

2020-09-14 09:56:18

可怕!公司部署了一个东西,悄悄盯着你···

我是一个网络监控软件,我被开发出来的使命就是监控网络中进进出出的所有通信流量。这个网络中所有人的上网内容我都看的清清楚楚,是不是很可怕?我被一家公司老板买来运行在一个配置极高的Linux服务器上,这台服务器上的网卡可不得了,公司进出的网络数据包都得流经它,它源源不断的把数据包抓上来交给我来分析。你们应该也知道,网络通信是分层的,最常见的就是那个TCP/IP协议体系了。拿到数据包后,我就得按照这个协议规范,一层层的脱去协议的外壳,拿到它们的负载数据。TCP会话重组我重点要照顾的是T

2020-09-09 09:24:31

小白怎么入门网络安全?看这篇就够啦!

由于我之前写了不少网络安全技术相关的故事文章,不少读者朋友知道我是从事网络安全相关的工作,于是经常有人在微信里问我:我刚入门网络安全,该怎么学?要学哪些东西?有哪些方向?怎么选?不同于Java、C/C++等后端开发岗位有非常明晰的学习路线,网路安全更多是靠自己摸索,要学的东西又杂又多,难成体系。常读我文章的朋友知道,我的文章基本以故事为载体的技术输出为主,很少去谈到职场、面试这些方面的内容。主要是考虑到现在大家的压力已经很大,节奏很快,公众号上是让大家放松的地方,尽量写一些轻快的内容。不

2020-09-04 14:09:56

CPU有个禁区,内核权限也无法进入!

神秘项目我是CPU一号车间的阿Q,是的,我又来了。最近一段时间,我几次下班约隔壁二号车间虎子,他都推脱没有时间,不过也没看见他在忙个啥。前几天,我又去找他,还是没看到他人,却意外地在他桌上发现了一份文件,打开一看是一个代号为SGX的神秘项目,还是厂里领导亲自带头攻坚。仔细看了看,原来,自从上次的攻击事件(详情:完了!CPU一味求快出事儿了!)发生以来,领导一直忧心忡忡,虽然当时依靠操作系统提供的办法暂解了燃眉之急,不过治标不治本,我们自身的缺陷一直存在,保不准哪天还要翻车。这个代号为

2020-09-02 09:51:37

多图详解!10大高性能开发核心技术

程序员经常要面临的一个问题就是:如何提高程序性能?这篇文章,我们循序渐进,从内存、磁盘I/O、网络I/O、CPU、缓存、架构、算法等多层次递进,串联起高性能开发十大必须掌握的核心技术。- I/O优化:零拷贝技术- I/O优化:多路复用技术-线程池技术-无锁编程技术-进程间通信技术-RPC&&序列化技术-数据库索引技术-缓存技术&&布隆过滤器-全文搜索技术-负载均衡技术准备好了吗,坐稳了,发车!首先,我们从最简单的模...

2020-08-19 09:20:11

CPU:别再拿我当搬砖工了!

数据搬运工Hi,我是CPU一号车间的阿Q,有段日子没见面了。还记得上回说到咱们厂里用上了DMA技术(太慢不能忍!CPU又拿硬盘和网卡开刀了!)之后,我们总算解放了,再也不用奔波于网卡、硬盘与内存之间搬运数据了。前段时间,我到二号车间虎子那里去串门,发现他正忙的满头大汗。“老哥,你这是接到什么任务了?看把你给你忙的”虎子一看我过来,擦了擦头上的汗说到:“我这是在搬运数据啊,刚刚搬完一批,累死我了”我有些疑惑:“咱们现在不是有DMA技术了吗,找外包DMA控制器搬运啊,你干嘛还亲自上阵

2020-08-11 14:05:14

完了!TCP出了大事!

前情回顾:《非中间人就不能劫持TCP了吗?》不速之客夜黑风高,乌云蔽月。两位不速之客,身着黑衣,一高一矮,潜入Linux帝国。这一潜就是一个多月,直到他们收到了一条消息······高个:“上峰终于给我们派任务了”矮个:“什么任务?我都闲的发慌了”高个:“上峰让我们配合他们完成TCP连接的劫持”矮个:“TCP劫持?我们就是个普通程序,并没有内核权限,怎么去修改网络连接啊,这不是强人所难嘛”高个:“是啊,我也很奇怪。信上只约定了让我们到时候告诉他们一个计数器的值就行,其他我们不用管”矮个

2020-07-30 09:29:02

揭开电脑上登录多个微信的秘密

微信电脑端也能多开昨天,偶然从好朋友小林(微信公众号:小林Coding)处得知,他的电脑居然可以同时上两个微信号。手机端多开微信我知道,像华为、小米等手机系统都对此做了支持,不过在运行Windows系统的电脑上怎么启动两个微信呢,这倒是一下引起了我的好奇。小林告诉我他是这样做的,写了一个批处理:start D:\WeChat\WeChat.exestart D:\WeChat\WeChat.exe然后直接双击批处理文件,就能启动两个微信进程。我试了一下,果然如此!随后我又加了一行,竟然还能

2020-07-23 16:26:22

太慢不能忍!CPU又拿硬盘和网卡开刀了!

总线技术我是CPU一号车间的阿Q,最近为了一件事儿搞得我挺烦的。当初我们CPU工厂刚刚来到主板上建厂时,那时候主板上的单位还不多,跟我们打交道最多的就是内存那家伙了。后来,键盘、鼠标、硬盘、网卡、声卡、显卡等等设备纷纷入驻主板,这块土地变得越来越热闹起来。不过,他们的到来并没有影响我们的地位,毕竟我们是中央处理器,所有人都得听我们指挥。为了和主板上这些家伙们通信,我们花了重金铺了一条线路,主板上家家户户都连上了这条线路,我们把它叫做总线,虽然说是一条,但实际上它包含了传输数据的数据总线,传输地址

2020-07-20 09:40:02

内存疯狂换页!CPU怒批操作系统

内存访问瓶颈我是CPU一号车间的阿Q,前一阵子我们厂里发生了一件大喜事,老板拉到了一笔投资,准备扩大生产规模。不过老板挺抠门的,拉到了投资也不给我们涨点工资,就知道让我们拼命干活,压榨我们的劳动力。老板说了,投资的钱要用来添置设备,招聘新员工,咱们原来就有八个车间了,这一下直接double,变成了十六个!我们的工资要是也能double就好了···现在我们变成了一个16核的CPU啦!原以为我们生产效率也能double,没想到却遇到了新的问题。我们CPU里面各个车间访问内存都要通过内存控制器和总线

2020-07-03 09:13:22

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

云计算时代,计算资源如同小马哥当年所言,已经成为了互联网上的水和电。虚拟主机、web服务器、数据库、对象存储等等各种服务我们都可以通过各种各样的云平台来完成。而在云计算欣欣向荣的背后,有一个重要的功臣,那就是虚拟化技术。可以毫不客气的说,没有了虚拟化技术,云计算无从谈起。说起虚拟化你会想到什么?从我们常用的虚拟机三件套VMware、VirtualPC、VirutalBox到如今大火的KVM和容器技术Docker?这些技术是什么关系,背后的技术原理是怎样的,又有什么样的区别,各自应用的场景又是什么

2020-06-29 15:34:00

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

中断机制我是CPU一号车间的阿Q,我又来了!我们日常的工作就是不断执行代码指令,不过这看似简单的工作背后其实也并不轻松。咱不能闷着头啥也不管一个劲的只管执行代码,还得和连接在主板上的其他单位打交道。经常保持联系的有键盘、鼠标、磁盘,哦对,还有网卡,这家伙最近把我惹到了,待会再说这事儿。原以为内存那家伙已经够慢的了,没想到跟上面这几位通个信比他更慢,咱CPU工厂的时间一刻值千金,不能干等着,耽误工夫。后来厂里一合计,想了个叫中断的办法。在我们车间装了个大灯,这些单位想联系我们办事儿,就先给我们发一

2020-06-23 09:49:11

在Java虚拟机上班是一种怎样的体验?

228 人赞同了该回答利益相关,匿了!JVM公司里面线程众多,派系林立,尤其是执行引擎那波人,因为是核心部门,经常diss别的部门。428 人赞同了该回答不请自来。其实在JVM工作没有你们想象的那么辛苦,其他部门不清楚,就拿我所在的垃圾回收部(这名字不好听,叫GC部门吧)来说说。我的工作是负责执行对象的finalize方法,你们也知道,现在的程序员,很少实现类的这个方法了,所以我的工作大部分时间都可以摸鱼。--------------------分割线...

2020-06-22 11:12:06

什么?一个核同时执行两个线程?

CPU里的时间Hi,好久不见,我是CPU一号车间的阿Q,不认识我的话,可以看看:完了!CPU一味求快出事儿了!真的是好久不见了,人类有个说法叫天上一天,地上一年,而在我们的世界里,人类一天,我们不知要过多少年~~在我所在的CPU这座工厂里,时间的概念有些不太一样。工厂大门外的中央广场上挂着一个大大的钟表,整个计算机世界里的居民能够掐着时间过日子全都仰仗它,你们人类把它叫做晶振。这个钟表每隔66000000分之一秒就会报一次时,比人类的钟表不知道快到哪里去了。早些年还是够用的,不过随着我们CPU工

2020-06-16 09:19:35

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力探索
    原力探索
    参与《原力计划【第二季】——打卡挑战》的文章入选【每日精选】的博主将会获得此勋章。
  • 原力突破
    原力突破
    参与《原力计划【第二季】— 打卡挑战》的文章入选【打卡挑战周榜】的博主,即可获得此勋章。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。