本系列博客为《游戏引擎架构》一书的阅读笔记,旨在精炼相关内容知识点,记录笔记,以及根据目前(2022年)的行业技术制作相关补充总结。
编者按:作者从计算机的架构说起,阐述了计算机架构的变革历程。由计算机到网络架构,是侧重终端还是侧重网络?这又引出了计算机厂商与电信运营商历史之战,20多年的纠葛以互联网的终端侧告胜。 互联网和PC一样,都是冯.诺伊曼架构的计算机,是这一架构的又一实现,又一成功案例。 移动互联网与PC互联网的架构一致,甚至连扩展都几乎没有。云计算也只是冯.诺伊曼架构计算机的一个变种,数据中心就是计算机。 架构差异体现在要素细节处。 互联网中一些功能只能让终端去做,一些功能只能让网络去做,因此首先可以把互联网架构划分为终端和网络两大部分。但一些功能终端做得,网络也做得,重叠部分的麻烦来了。 技术轮回决定了,没有永远正确的架构,只有适应技术和市场环境的架构。而云计算,虽然仍然是冯.诺伊曼架构的,却正在把互联网的控制权,从终端侧悄悄转移到网络侧,转移到云服务商。
要如何求出权重向量呢?基本做法和回归时相同,将权重向量用作参数,创建更新表达式来更新参数。这就需要一个被称为感知机的模型。
2-3树正是一种绝对平衡的树,任意节点到它所有的叶子节点的深度都是相等的。 2-3树的数字代表一个节点有2到3个子树。它也满足二分搜索树的基本性质,但它不属于二分搜索树。 2-3树查找元素 2-3树的查找类似二分搜索树的查找,根据元素的大小来决定查找的方向。 动画:2-3树插入 2-3树删除元素 2-3树删除元素相对比较复杂,删除元素也和插入元素一样先进行命中查找,查找成功才进行删除操作。 2-3树为满二叉树时,删除叶子节点 2-3树满二叉树的情况下,删除叶子节点是比较简单的。 动画:2-3树删除 -----END---
站在技术的角度来看,其实各个大型互联网公司的技术架构基本是一样的。再将视角放大,你会发现整个互联网行业的技术发展,最后都是殊途同归。 互联网的标准技术架构如下图所示,这张图基本上涵盖了互联网技术公司的大部分技术点,不同的公司只是在具体的技术实现上稍有差异,但不会跳出这个框架的范畴。 下图是淘宝TFS的架构: 大文件存储 互联网行业的大文件主要分为两类:一类是业务上的大数据,例如Youtube的视频、电影网站的电影;另一类是海量的日志数据,例如各种访问日志、操作日志、用户轨迹日志等。 但是当我们站在一个公司的的角度来思考架构的时候,单个系统的高可用和高性能并不等于整体业务的高可用和高性能,互联网业务的高性能和高可用需要从更高的角度去设计,这个高点就是“网络”。 用户层技术 用户管理 互联网业务的一个典型特征就是通过互联网将众多分散的用户连接起来,因此用户管理是互联网业务必不可少的一部分。
架构演变 在大型网站中,其最核心的功能就是 计算 和 存储。因此系统演变过程也主要围绕这两点进行。 1 单机系统 在网站刚刚起步时,数据量、访问量都非常小,通常情况下,只需一台应用服务器就可以了。 此时,架构显得清晰很多,但我们发现一个问题,就是系统对静态资源和动态资源的处理是完全不同的。 对于静态资源的处理,相对简单,只是简单的文件读写。 此时,我们需要引入服务化架构。 8 服务化架构 我们可以将通用功能封装成一个服务,独立开发、独立部署、独立维护。 ? 相比之前的架构,变化很小,只是在各个业务服务间添加了另外的一种调用方式。 10 小结 冰冻三尺非一日之寒,一个大型系统的构建也不是一朝一夕的事情。 切记,架构不是越复杂越好,而是“适合自己的便是最好的“
2-3树 VS 二叉搜索树 同样的一组数据,在2-3树和二叉搜索树里面的对比如下: ? 可以看到2-3树的节点分布非常均匀,且叶子节点的高度一致,并且如果这里即使是AVL树,那么树的高度也比2-3树高,而高度的降低则可以提升增删改的效率。 2-3树的插入 为了保持平衡性,2-3树的插入如果破坏了平衡性,那么树本身会产生分裂和合并,然后调整结构以维持平衡性,这一点和AVL树为了保持平衡而产生的节点旋转的作用一样,2-3树的插入分裂有几种情况如下 2-3树的删除 2-3树节点的删除也会破坏平衡性,同样树本身也会产生分裂和合并,如下: ? 总结 本篇文章,主要介绍了2-3树相关的知识,2-3树,2-3-4树以及B树都不是二叉树,但与二叉树的大致特点是类似的,它们是一种平衡的多路查找树,节点的孩子个数可以允许多于2个,虽然高度降低了,但编码相对复杂
一体架构 在计算机软件发展早期,一般桌面软件都是采用这种架构,不管是界面还是业务处理还是数据处理都放到一个包中。这种其实谈不上架构,但也可以说是很好的架构,因为它足够简单。 对于web系统,一体架构难以满足前后端分离的开发需求,因而便产生了MVC架构。 但随着应用规模的不断扩大,应用模块不断增加,整个应用也显得越来越臃肿,维护起来也更加困难,因此便又产生了多应用架构。 多应用架构 多应用架构很简单,就是把原来的应用按照业务特点拆分成多个应用。 分布式架构 对于一个大型的互联网系统,一般会包含多个应用,而且应用之间往往还存在共同的业务,并且应用之间还存在调用关系。 除此之外 ,对于大型的互联网系统还有一些其它的挑战,比如如何应对急剧增长的用户,如何管理好研发团队快速迭代产品研发,如何保持产品升级更加稳定等等 。
近两年,工业互联网产业联盟连续发布了《工业互联网体系架构1.0》和《工业互联网体系架构2.0》,报告提出了工业互联网的内涵、目标、体系架构、关键要素和发展方向,并且调研了国内外上百家典型企业和机构。
一起看下大型互联网关于商品详情的架构。源码: ? (一)讲解上图的的详细信息 这些架构是根据业务多年演变而来的,可不是最终就是这样的。 3.nginx(应用层)转发到缓存服务,类似tomcat的一个应用,缓存服务在实际的大型互联网公司肯定有很多台,都是水平扩展的。 (二)介绍本书 其实之前的几次关于互联网的技术方案,都是通过这个书【亿级流量网站架构核心技术】里面的内容分享出来的,我加入了自己的思路。 【亿级流量网站架构核心技术PDF】 链接:https://pan.baidu.com/s/1FOWxvd30iOd7KzR4COa-5g 提取码:o0oo PS:通过看的技术文章,在详细的看看这本书,其实互联网技术不过如此 ,自古真情留不住,唯有套路的人心,都是前人总结的解决问题的方案和套路,对于有互联网经验这本书还是很不错的,大大的拓宽技术经验,光看这本书的目录估计都被虎的一愣一愣的,其实都不复杂,都是一些经验,其实在互联网公司呆过这些都是常用的技术
本文链接:https://blog.csdn.net/shiliang97/article/details/101050371 2-3 链表拼接 (20 分) 本题要求实现一个合并两个有序链表的简单函数
架构就不灵了。 Web Service 架构 互联网行业偏向于服务化,最流行的微服务起源于服务化,服务化最早体现在web service,web service 以IBM为首的各大公司制定的标准,webservice特点服务开发完毕后 在互联网里面如果不是高可用的,服务也不是最优化的。 ? ESB架构 企业服务总线,侧重于企业服务总线。 上边是提供的服务,下面是数据库数据源,消息队列,大数据,ERP。 犹豫在互联网高并发的线上。用户量非常大,上千,上万,上亿的,单体的服务架构和单体数据库很难撑起来这么大的量,所以就需要它们之前进行分而治之,在网上进行分开,进行分开,分片。 互联网上很多的高并发项目,都使用了分布式事务都进行打折了,完成了最终一致性。使用了BASE原理,CAP限制了它不可能三者同时存在。 一致性协议 两个阶段的协调者 ? 三阶段的协调者 ?
验证类的格式是否正确 (一)文件格式的验证,class (二)元数据验证,是否有父类,有父类先加载父类,一般的类都有父类,object (三)字节码验证,数据流是不是合法的符合逻辑的。方法体进行检测 (四)符号引用验证,访问的时候判断是否有权限来进行引用
架构师的水平和经验了。 一致性和同步时间本身就是双刃剑,没有完全的通用解决方案,只能通过业务和性能综合考量选择最优解。 互联网主流的主从的方案 ? ? 一主一从,小公司使用比较多,并没有进行读写分离,slave节点主要是热备的。出现问题很快的恢复。 Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。
JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。 JVM产品有哪些 HotSpot,Jrockit,J9 为什么出现JVM 1.C,C++是基于os架构,CPU架构。64位的版本在32位无法运行的。性能非常高,编写底层实现。
源码:https://github.com/limingios/netFuture/tree/master/源码/『互联网架构』软件架构-eureka集群(99)/ ? (一)eureka集群 上图是来自eureka的官方架构图,这是基于集群配置的eureka 处于不同节点的eureka通过Replicate进行数据同步 Application Service为服务提供者
上次说了单体架构和微服务之前优缺点的对比,也说了zookeeper和Eureka理论上的区别,也说了Eureka高水平的架构。 源码:https://github.com/limingios/netFuture/tree/master/源码/『互联网架构』软件架构-Eureka使用(92)/ ?
在一些互联网的创业公司刚开始技术的工种,并不是分的那么清楚,可能都要会的。环境的搭建,运维,框架搭建,开发都必须拿得下来。
1 2G tomcat1 Centos7 192.168.66.112 tomcat 1 2G tomcat2 Nginx如何实现高速缓存(一) 场景介绍 假设在做一个大型项目,面向全国的,公司对架构师的要求是做到 在上边图的架构,其实内网走了2次,一个是通过nginx访问商品的详情服务,一个是详情服务访问redis。 如果想解决上边的2次内网的通信最理想的方式,上图中的2个节点都不要就可以了。 PS:一般用nginx比较多就是反向代理,其实很多特殊的配置也是在大型互联网电商经常使用的。所以这个高速缓存和防盗链也是一个不错的功能。
2-3 T-SQL函数 学习系统函数、行集函数和Ranking函数;重点掌握字符串函数、日期时间函数和数学函数的使用参数以及使用技巧 重点掌握用户定义的标量函数以及自定义函数的执行方法 掌握用户定义的内嵌表值函数以及与用户定义的标量函数的主要区别 我们首先运行一段SQL查询:select tno,name , salary From teacher,查询后的基本结构如图2-3所示。我们看见,分别有三位教师的薪水是一样高的。 图2-3 薪酬排序基本情况 图2-4 row_number函数排序 图2-5 row_number另一使用 我们可以使用Row_number函数来实现查询表中指定范围的记录,一般将其应用到Web应用程序的分页功能上