前网易架构师-高司机
2014年优快云博客之星TOP10;资深游戏服务器架构师;曾在IBM的Platform Computing,淘米网,网易搬砖;开发团队上线了多个国内外爆款游戏+人工智能相关的边缘计算软硬件产品;欢迎+V gao_ke104 探讨咨询服务器架构设计,游戏运营,人工智能等领域的问题。
展开
-
epoll的内核实现
epoll是由一组系统调用组成。 int epoll_create(int size); int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); int epoll_wait(int epfd, struct epoll_event *events,int maxevents, in原创 2024-02-27 16:05:52 · 8188 阅读 · 0 评论 -
让你不再害怕指针
让你不再害怕指针前言:复杂类型说明要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样,所以我总结了一下其原则:从变量名处起,根据运算符优先级结合,一步一步分析.下面让我们先从简单的类型开始慢慢分析吧:int p; //这是一个普通的整型变量原创 2010-11-28 15:53:00 · 159757 阅读 · 13 评论 -
关于wParam和lParam
在VC的函数参数中常出现WPARAM和LPARAM,这两个有什么特殊意义么?它们的含义是不是要事先定义? WPARAM和LPARAM一般在消息里面用的很多,其实没有特殊的含义的。 是两普通的变量 。 是怎样通过wParam,lParam传参数的呢?有时候表示点的坐标,有时表示控件的ID, 是不是事先定义好的? W原创 2023-09-14 11:25:42 · 16237 阅读 · 1 评论 -
换个花样玩C++(14) 全方位认识C++的左值,右值,左值引用,右值引用,亡值
早期学习C语言的时候,认为可以被修改的左值是放在左边的,右边的则通常放置右值,后来转C++之后,随着C++不断地完善更新,发现有时候越来越捉摸不透C++了,右值已经与它最初的概念完全不一样了,越来越丰富。这篇文章我尽可能用一些浅显易懂的文字和简要的代码示例来解释下左值,右值,左值引用,右值引用和亡值的特点和用法。在C++11之前的版本中,一个值要么是右值,要么是左值。左值是指任何可能位于赋值=运算符左侧的值。右值是指允许位于赋值右侧但不位于左侧的任何值。int i = 0;原创 2023-05-22 11:36:27 · 547 阅读 · 4 评论 -
换个花样玩C++(13)一文深度全面剖析类构造,析构,赋值运算和移动构造
为什么我要把C++类的构造,析构函数,赋值运算符重载函数,移动构造函数还要拿出来嚼一嚼,因为最近面试的一些3-7年经验的程序员,我每次都会问一些特别基础的问题,但是我总是得不到想要的答案,我就在思考,是不是大家都觉得有些知识点太简单了,流于高大上的东西,而我个人认为,”五在浮沙筑高台“,基础一定要打扎实,否则你的架构,你的逻辑都将是千疮百孔,最终受害的是自己,我认为一个技术要有不断学习的能力和兴趣,不排斥任何技术,我最开始在IBM(platform)经历C语言,到淘米网,网易经历C++,到后来我们使用C+原创 2023-05-18 11:12:10 · 767 阅读 · 1 评论 -
换个花样玩C++(12)匿名类和匿名对象的使用误区避坑指南
我是在2011年的时候在Platform参与了LSF的开发,当然我也受到Platform的codereview的文化影响,这也是作为C/C++开发者锱铢必较的一个态度,对自己写的每一行代码负责,因为你的代码质量影响着整个庞大的系统正常运行(当时的客户大都是NASA,还有欧洲生物科学实验的,DNA蛋白质大数据分布式计算的),这里我不由得想到了C++中的一个不得不说的点。这些类既不能作为参数传递给函数,也不能用作函数的返回值,或者类不能用作函数中的元素,即不能将其作为参数传递,也不能接受函数返回的值。原创 2023-05-17 09:41:18 · 1031 阅读 · 9 评论 -
换个花样玩C++(11)对深拷贝和浅拷贝的误解
若您未定义拷贝构造函数,C++在为对象进行初始化操作的时候则使用默认的拷贝构造函数,当进行默认的拷贝构造函数时,很多人说是进行浅拷贝,其实不然,这完全取决于每个成员的复制行为,并不保证一定是深拷贝或者浅拷贝 ,当然如果你想使用深拷贝,在你提供了拷贝构造函数和赋值运算符重载函数的时候你有没有想到他的副作用?还有没有优化的空间呢?原创 2023-05-16 14:36:00 · 610 阅读 · 0 评论 -
换个花样玩C++(10) 网易老司机带你吃透this指针的多种玩法,完美绕过多个陷阱
在C++使用过程中,我们经常会和this指针打交道,或许是使用习惯,却很少直接通过this指针来访问他的成员变量或者成员函数,这篇文章我们来抛出几个问题:this指针是什么时候创建的、this指针又是什么时候销毁的、this指针为什么不占用类空间大小、什么情况下必须显示使用this指针?使用多态this又是如何识别他属于哪个类的、赋值运算符为什么要返回this指针、 带着问题我们来研究分析下this指针到底是什么,使用过程中干了什么事?首先看一段代码,如果你对this指针很熟悉,但我认为你看到这段代码可能会原创 2023-05-15 16:01:14 · 656 阅读 · 0 评论 -
换个花样玩C++(9)用C语言来告诉你C++虚函数的真相
我是网易的老高,欢迎大家关注我的专栏,我们很多时候都直接使用C++的虚函数来实现多态,那么你有没有想过他在运行时是如何查找到他要调用的函数呢?这篇文章将打开你的疑问大门,并且通过C语言的方式来实现虚函数指针,虚函数表,让你用另外一个角度看虚函数表。原创 2023-05-08 17:28:59 · 1007 阅读 · 3 评论 -
换个花样玩C++(8)吃不透内存布局,坑的是自己,万字经验告诉你类的内存布局
C++内存布局是老生常谈的话题,无论是笔试面试,都会涉及到该类问题,那么这一章节,我们就聊聊内存布局到底是怎么布局的,聊完之后我保证你仍然会回味无穷,并且我提供的几个例子也会让你再一步步踩入雷区。C++程序的内存布局C++的内存布局区域我们大体上分为四个:全局数据区(data area),代码区(code area),栈区(stack area),堆区(heap area)(或者叫自由存储区)。原创 2023-05-08 16:32:21 · 975 阅读 · 4 评论 -
换个花样玩C++(7) 你以为的C++类成员变量的初始化顺序太简单?
我们都知道,C++类成员变量通过构造函数体初始化时,初始化顺序由构造函数体中的变量初始化顺序决定,与类成员变量的定义顺序无关系, 关于如何初始化,巴拉巴拉的我就不多说了,就说大家容易踩的雷区 下面这段代码,你很容易能确定结果:原创 2023-05-06 16:46:27 · 748 阅读 · 2 评论 -
换个花样玩C++(6)static,const,引用,枚举类成员的避坑指南
程序员是不孤独的,因为他不缺对象,自己就可以new出来,尤其是C++开发者,他们可以在有限的空间内,尽可能的容纳更多的对象。这节我们只说static成员,const成员,引用成员,类内枚举这几种特殊的成员(暂不讨论this指针),大多数情况下你会踩雷的场景,我们依旧用简单的例子来逐个解释这些雷区。 被static修饰的成员变量 ,不管这个类创建了多少个对象,静态成员只有一个拷贝,这个拷贝被所有属于这个类的对象共享。你可以通过对象(对象.静态成员)、对象指针(对象指针->静态成员)、类访问(类名:原创 2023-05-06 14:37:01 · 870 阅读 · 3 评论 -
换个花样玩C++(5)玩转空类,空类不是一个sizeof=1就这么简单就能讲完的
相信很多关于C++的笔试面试题里都有这样的题目:C++中一个空对象为什么还要占用一个字节空间?(或者C++的一个空对象占多少字节空间)这篇文章我们来分析下为什么是这样的,继承空基类,组合空基类,空基类优化和使用场景。原创 2023-05-05 17:48:14 · 567 阅读 · 2 评论 -
换个花样玩C++(4)细聊C++的引用精妙之处
引用是C++引入的新语言特性。而且在日常工作开发过程中,经常会使用到引用,对于一些做系统架构的架构师而言,这也是不可或缺的一门基本功,我在工作中发现,很多人并没有搞清楚引用。因此我在本篇中将对引用进行详细讨论,希望对大家更好地理解和使用引用起到抛砖引玉的作用。原创 2023-04-28 17:15:07 · 813 阅读 · 0 评论 -
换个花样玩C++(3)const_cast不是一行代码这么简单
我先不说const_cast的事情,还是回到我们之前遇到的一个问题,先看代码。原创 2023-04-28 10:41:54 · 843 阅读 · 0 评论 -
换个花样玩C++(2)柔性数组怎么玩
这里你会看到有report_msg 这个结构体,他的msg成员是一个数组,数组长度是0,当然你也可以写成 char msg[0];到这里就引出数组的另外一种玩法---柔性数组。原创 2023-04-28 11:03:43 · 652 阅读 · 0 评论 -
换个花样玩C++(1)步步深入窥探const
很高兴你能看到我的这个专栏,这个专栏我将秉承着庖丁解牛,打破砂锅问到底的精神来一个个发现问题,剖析问题,解决问题。问题主要是C++的语法,特殊用法,易用错的点,新特性,适合有C++基础的技术来阅读。原创 2023-04-27 16:50:48 · 585 阅读 · 1 评论