技术原理

虚函数实现原理

我是研究僧i 提交于 2019-12-07 18:44:26
转自:https://blog.csdn.net/weixin_40237626/article/details/82313339 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家一个清晰的剖析。 当然,相同的文章在网上也出现过一些了,但我总感觉这些文章不是很容易阅读,大段大段的代码,没有图片,没有详细的说明,没有比较,没有举一反三。不利于学习和阅读,所以这是我想写下这篇文章的原因。也希望大家多给我提意见。 言归正传,让我们一起进入虚函数的世界。 虚函数表 对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样

2019总结:Android 寒冬难前行?—我的进阶之路,送给正在迷茫的你!

孤街醉人 提交于 2019-12-06 21:14:42
前言 很多做 android 开发的同学都想多快好省,现实是真的是这样吗,借着前人的经验,我们的目标可以更加清晰,可以计划划分阶段去学习,但是学习的路是不会变的,别人会遇到什么我们也会遇到什么,别人躺过的坑我们一样得趟。 接着这里,我想表达我们对 android 学习之路的理解,也分享我收集到的前人经验,让前路不再晦暗,让脚下的路笔直一些,仅此而已~ 继续吐槽,分享下自己关于如何学习的想法 我想看我文章的至少都是有1年开发经验以上的了,至少都是熟练的初级 coder 了吧,在这个阶段甚至之后的几个阶段,android 的 coder 们内心其实都是惶恐焦虑的,一是大环境没有以前热了,找工作的难度提升了,对 coder 们的要求也是节节攀升;二是 coder 们在学习过程中发现了大量的知识点和面,这些东西实在太多了,看了 A 会勾连出 BCDEF,这里面又涉及到大量的 java 等其他知识点,都是比较难搞,耗时的。 种种以上让大家变得不再自信了,加之环境趋紧,所以焦虑由此产生。大家也不必太过因此而焦虑,焦虑了也没有啊,这些东西迟早都是我们的菜,都得学,都得趟过去,当然越早趟过去越好。 这里面就涉及到如何学习的问题了,会学习的 coder 效率会很高,学的会比较透,记得会比较牢,并且还会记录相关的技术博客,所以学过了基本就不用再重复了 我们在学习哪些没有吸收的知识点时

直播系统前后端技术原理

非 Y 不嫁゛ 提交于 2019-12-06 17:12:16
手机直播系统,可以分为采集、前处理、编码、传输、解码、渲染这几个环节,下面小编分别解释一下啊: 1、直播采集: iOS是比较简单的,Android则要做些机型适配工作,PC稍微麻烦一点,各种摄像头需要驱动,所以需要做各种适配,不断地进行优化处理。 2、直播前处理: 现在直播美颜SDK已经是标配了,大部分的主播没有美颜根本没法看。美颜算法需要用到GPU编程,需要懂图像处理算法的人。 3、直播编码: 肯定要采用硬编码,软编码720p完全没希望,勉强能编码也会导致CPU过热烫到摄像头。硬编码兼容性又是一个大坑,android上要有人去填。编码要在分辨率,帧率,码率,GOP等参数设计上找到最佳平衡点。 4、直播传输: 自己做不现实,交给CDN服务商吧,也就是贵了点,相信有志于做直播系统改变世界的你不差钱。假设2W PCU大约每月带宽费用10万左右,因为清晰流畅的720p要1.5mbps左右。CDN只提供了带宽和服务器间传输,发送和接收端的网络连接抖动缓冲还是要自己写的。不想要卡顿,必然要加大缓冲,会导致延迟高,延迟高影响互动性,要做权衡。 5、直播解码: 也肯定要硬解码,目前手机普遍支持硬解了,只是android上还是有兼容性大坑要填。 6、直播渲染: 这个难点不在于绘制,而在于音画同步,目前只有几家专业的直播系统开发者做得非常好。 拓幻科技一站式直播解决方案,包含了前后端的所有功能

面视必备,史上最通俗计算机网络分层详解

人走茶凉 提交于 2019-12-06 06:44:25
1、引言 整个暑假去面试,面试了很多家公司(无论是小厂还是大厂)问到的深度不同,网络原理是面试最容易问到的问题,虽然我们在项目中很少去实践它,但是了解其原理,会让我们背后网络通信是如果工作的,既能在面试官面前体现出你的基础是否扎实,也能对以后深入网络这部分学习有更多的了解。 很多同学面试在准备这部分的时候,都会去背,这部分确实很难掌握,我个人总结的最好的学习网络原理的方法就是不用刻意的去记忆而是完全的结合实际去讲整个原理融会贯通。虽然一开始学习起来很吃力,但是稍微用点心,多看几遍,多问自己为什么,把自己当做是开发网络原理的开发者,面试前的准备只要理清逻辑就足够了,而不是去背这部分内容。 而且这部分相同的知识点面试官有多种提问方式,但是其中很多都是换汤不换药。我记得最多的问的是输入URL,到页面呈现出来,其中经历了什么?这道面试题的背后,涉及到了很多网络原理的知识,我们这篇文章不会全部分享到,而是先把由来和网络层次划分弄清楚,就完成了这篇文章的目的。 (本文同步发布于: http://www.52im.net/thread-2851-1-1.html ) 相关文章: 《 网络编程懒人入门(一):快速理解网络通信协议(上篇) 》(* 力荐) 《 网络编程懒人入门(二):快速理解网络通信协议(下篇) 》(* 力荐) 《 网络编程懒人入门(六):史上最通俗的集线器、交换机

CSMA/CD技术的原理及算法分析

房东的猫 提交于 2019-12-06 02:16:28
简介 CSMA /CD(Carrier Sense Multiple Access with Collision Detectio)即带碰撞检测的载波监听多路访问技术,是一种争用型的介质访问控制协议,采用半双工通信,最早应用于总线型局域网。在传统的共享以太网中,所有的节点共享传输介质。如何保证传输介质有序、高效地为许多节点提供传输服务,就是以太网的介质访问控制协议要解决的问题。也被称为共享介质的灵魂。 CS:载波侦听: 在发送数据之前进行监听,以确保线路空闲,减少冲突的机会。 MA:多点接入: 每个站点发送的数据,可以同时被多个站点接收。 CD:碰撞检测: 边发送边检测,发现冲突就停止发送,然后延迟一个随机时间之后继续发送。冲突的检测由于两个站点同时发送信号,经过叠加后,会使线路上电压的摆动值超过正常值一倍。据此可判断冲突的产生。 原理 1、终端设备不停的检测共享线路的状态,只有在空闲的时候才发送数据,如果线路不空闲则一直等待。 2、发送过程中,若其他设备也同时发送数据,则其发送的数据必然产生碰撞,导致线路上的信号不稳定,终端设备检测到这种不稳定之后,马上停上发送自己的数据,然后再发送一连串干扰脉冲,然后等待一段时间之后再进行发送。 缺点:带宽窄,冲突检测机制,传输时间必须大于延迟时间导致物理长度限制51.2μs的冲突检测窗口,1位在2500m,加上四个中继器的往返时间

NAT技术原理与应用

梦想的初衷 提交于 2019-12-06 00:09:30
公有IP地址: 也叫全局地址,是指合法的IP地址,它是由NIC(网络信息中心)或者ISP(网络服务提供商)分配的地址,对外代表一个或多个内部局部地址,是全球统一的可寻 址的地址。 私有IP地址: 也叫内部地址,属于非注册地址,专门为组织机构内部使用。因特网分配编号委员会(IANA)保留了3块IP地址做为私有IP地址: 10.0.0.0 ——— 10.255.255.255 172.16.0.0——— 172.16.255.255 192.168.0.0———192.168.255.255 地址池: 地址池是有一些外部地址(全球唯一的IP地址)组合而成,我们称这样的一个地址集合为地址池。在内部网络的数据包通过地址转换到达外部网络时,将会在地址池中选择某个IP地址作为数据包的源IP地址,这样可以有效的利用用户的外部地址,提高访问外部网络的能力。 1.1.2关于NAT NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术,如下图所示。因此我们可以认为

如何才能做一个合格的前端开发者呢?

梦想与她 提交于 2019-12-04 21:44:54
如何才能做一个合格的前端开发者呢? 第一,必须掌握基本的Web前端开发技术,其中包括:CSS、HTML、SEO、DOM、BOM、Ajax、Java等,在掌握这些技术的同时,还要清楚地了解它们在不同浏览器上的兼容情况、渲染原理和存在的Bug。 第二,在一名合格的前端工程师的知识结构中,网站性能优化、SEO和服务器端的基础知识也是必须掌握的。 第三,必须学会运用各种工具进行辅助开发。 第四,除了要掌握技术层面的知识,还要掌握理论层面的知识,包括代码的可维护性、组件的易用性、分层语义模板和浏览器分级支持,等等。 来源: CSDN 作者: 前端碎碎念 链接: https://blog.csdn.net/zhongqw_00/article/details/88929162

ShadowMapping的技术原理

浪子不回头ぞ 提交于 2019-12-04 06:46:03
在计算机视觉中实现三维物体阴影比较出名的一种方案是ShadowMapping,它的基本思路如下: 第一步: 1. 创建camera:创建一个位于光源位置的camera,叫做lightCamera。 2. 创建shadowMap:创建一个有深度纹理的FBO,这个FBO只需要存储深度纹理,不需要颜色缓存区。深度纹理的长宽我们可以根据不同的应用场景自定义,不过在大多数情况下都是和viewPort的长宽一致。 3. 渲染场景深度到shadowMap: 将上一步创建的FBO设置为当前的FrameBuffer,然后从lightCamera渲染场景。 第二步: 1. 创建camera: 创建一个用于正常场景渲染camera,叫做normalCamera。 2. 正常渲染场景:从normalCamera渲染场景,并且把shadowMap传递到fragment shader。 3. 顶点转换:顶点坐标在vertext shader需要做两次转换: (1): 使用正常渲染场景中的MVP矩阵对顶点做一次转换,然后将新的顶点通过gl_position输出。 (2): 使用光源位置渲染场景的MVP矩阵对顶点做一次转换,将这个新的顶点命名为lightCoordinate,然后将lightCoordinate通过varying输出。 4. 将lightCoordinate转换为纹理坐标:在fragment

【转发】防火墙技术原理

与世无争的帅哥 提交于 2019-12-04 05:38:11
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/u014209205/article/details/83070305 一、防火墙的概念 防火墙(Firewall),也称防护墙,是由Check Point 创立者Gil Shwed于1993 年发明并引入国际互联网(US5606668(A)1993-12-15)。 它是一种位于内部网络与外部网络之间的网络安全系统。是一项信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。 (图片来源于网络) 在网络的世界里,要由防火墙过滤的就是承载通信数据的通信包。 在网络中,所谓“防火墙”,是指一种将内部网和公众访问网(如Internet)分开的方法,它实际上是一种隔离技术。防火墙是在两个网络通讯时执行的一种访问控制尺度,它能允许你“同意”的人和数据进入你的网络,同时将你“不同意”的人和数据拒之门外,最大限度地阻止网络中的黑客来访问你的网络。换句话说,如果不通过防火墙,公司内部的人就无法访问Internet,Internet上的人也无法和公司内部的人进行通信。 二、防火墙的发展历程 防火墙从诞生开始,已经历了四个发展阶段: 基于路由器的防火墙 用户化的防火墙工具套 建立在通用操作系统上的防火墙 具有安全操作系统的防火墙

c++虚函数的原理及实现

梦想的初衷 提交于 2019-12-03 22:09:02
虚函数是在类中被声明为virtual的成员函数,当编译器看到通过指针或引用调用此类函数时,对其执行晚绑定,即通过指针(或引用)指向的类的类型信息来决定该函数是哪个类的。通常此类指针或引用都声明为基类的,它可以指向基类或派生类的对象。 多态指同一个方法根据其所属的不同对象可以有不同的行为(根据自己理解,不知这么说是否严谨)。 举个例子说明虚函数、多态、早绑定和晚绑定: 李氏两兄妹(哥哥和妹妹)参加姓氏运动会(不同姓氏组队参加),哥哥男子项目比赛,妹妹参加女子项目比赛,开幕式有一个参赛队伍代表发言仪式,兄妹俩都想 去露露脸,可只能一人去,最终他们决定到时抓阄决定,而组委会也不反对,它才不关心是哥哥还是妹妹来发言,只要派一个姓李的来说两句话就行。运动会如期举 行,妹妹抓阄获得代表李家发言的机会,哥哥参加了男子项目比赛,妹妹参加了女子项目比赛。比赛结果就不是我们关心的了。 现在让我们来做个类比(只讨论与运动会相关的话题): (1)类的设计: 李氏兄妹属于李氏家族,李氏是基类(这里还是抽象的纯基类),李氏又派生出两个子类(李氏男和李氏女),李氏男会所有男子项目的比赛(李氏男的成员函 数),李氏女会所有女子项目的比赛(李氏女的成员函数)。姓李的人都会发言(基类虚函数),李氏男和李氏女继承自李氏当然也会发言,只是男女说话声音不一 样,内容也会又差异,给人感觉不同