Web技术简史、前后端分离、游戏

news2024/10/6 10:38:34

Web技术简史

从最早的大型机到个人电脑,再到互联网、移动互联网,Web技术发展极大促进了编程语言发展,短短几十年,编程模式变化巨大,从浏览器网页需求,到Corba/Java/DCOM解决不同语言互联,到PHP/JSP/ASP,到.NET/Java中间件技术,再到手机、平板网络访问,云服务、微服务、前后端分离,技术层出不穷,用户体验越来越好。

Web编程语言简史

  • 最早浏览器访问服务器静态html页面,没有任何动态页面机制。

  • 逐渐人们发现动态生成网页的需求,如订单需求不可避免,CGI应运而生,Perl语言是第一个写CGI的正式语言。Servlet是利用Java语言生成动态HTML,PHP/JSP/ASP都可看到一种CGI.

  • CGI一般是每次请求调用对应进程,结束后退出进程。多次访问效率很低,Fast-CGI产生,避免每次请求都新建进程(也包括从外存加载)的开销,让CGI进程常驻,大幅提升效率。

  • 为了缓解CGI产生过多的客户端和服务器消息传递,客户端脚本应运而生。如VBScript和JavaScript.

前后端分离

随着移动互联网快速发展,大数据、高并发和安全愈发重要,前后端分离成大势所趋。

不分离和分离优缺点

  • 前后端不分离可能带来安全风险
    • 跨站脚本攻击(XSS):在前后端不分离的情况下,前端代码负责处理所有的用户输入和输出,如果未正确地过滤或转义这些输入,攻击者可以利用漏洞注入恶意代码,导致XSS攻击。
    • 跨站请求伪造(CSRF):在前后端不分离的情况下,攻击者可能会利用一些信任漏洞,例如通过在用户浏览器中存储一些令牌,来伪造用户的请求。
    • 数据泄露和敏感信息泄露:如果前后端不分离,前端代码可能会直接与后端数据库进行交互,从而可能导致数据泄露或敏感信息泄露。

  • 分离带来的优势
    • 前后端分离有助于提高开发效率,改善用户体验,简化代码结构,提高代码可维护性和应用性能,同时为后期功能升级和扩展提供便利。

前后端编程语言

  • 前端
    • HTML、CSS、JavaScript、TypeScript等。

  • 后端
    • Go、Java、Python、Node.js、PHP、Ruby、C#等。

游戏

游戏作为一种特殊的程序,讨论游戏需要谨慎,不同类别的游戏占用的服务器或客户端资源大有不同,基本上所有编程语言都可以做游戏,只是根据效能、FPS、绚丽程度,可使用的编程语言有极大不同。

游戏标准

  • OpenGL (ES) 和DirectX

游戏引擎

  • BigWorld
    • C++做引擎。

  • Unity 3D
    • 覆盖主流PC/移动和消费平台,代表作品王者荣耀、完美世界、诛仙等。
    • 运行环境是.NET.
    • 核心物理引擎PhysX, 采用C/C++,游戏引擎是C#,给开发者C#/C++编程接口,除此之外,Unity也提供Lua、Javascript和Python脚本接口,早期还支持Boo语言(一种非常类似Python的脚本语言,运行于.NET框架).
    • Unity客户端开发官方建议C#,服务器端为了提升效率也可选用C++. 客户端代码可使用Mono JIT或利用IL2CPP转换成C++.
    • Unity C#代码可编译成本机DLL,以加速执行效率。
    • 为支持Lua, Unity环境一般集成Lua虚拟机, 此虚拟机用C语言编写。
    • UnityScript是指U3D使用的JS, 它是JS的增强,静态类型检查并有OOP, 运行能力超过JS.

  • Cocos2d-x
    • 核心引擎采用C++,提供C++、Lua、Javascript三种开发者编程接口,支援涵盖主流PC/移动端/浏览器,基于OpenGL ES和Metal(Apple 2014年推出)。

高性能

3A大作往往意味着客户端较高渲染能力和服务器端多帧实时处理计算和网络能力。

  • 客户端
    • 需要高fps, 客户端渲染每秒需要处理完30~60fps不等,就是16~33ms一帧。搭配带虚拟机或者脚本语言会更慢,最优的做法是用接近硬件的语言。

  • 服务端
    • 服务器端处理所有客户端请求,假设人数为N,需要将数据包状态发送到每个客户端,耗时复杂度为O(N2).
    • 例如在线100人,每个客户端每秒至少同步10个数据包,理论计算,每秒服务器需要处理100 * 99 * 10 = 99000个数据包。
    • 网络游戏为了解决客户端外挂欺诈问题,例如碰撞检测等功能会在客户端和服务器端全部做一遍。
    • 如果不采用高性能编程语言,服务器无法承载如此大的数据处理。


若文章对您有帮助,欢迎关注。助您在编程路上越走越好!

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2191701.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

openEuler 24.03 (LTS) 部署 K8s(v1.31.1) 高可用集群(Kubespray Ansible 方式)

写在前面 实验需要一个 CNI 为 flannel 的 K8s 集群之前有一个 calico 的版本有些旧了,所以国庆部署了一个v1.31.1 版本 3 * master 5 * work时间关系直接用的工具 kubespray博文内容为部署过程以及一些躺坑分享需要科学上网理解不足小伙伴帮忙指正 😃,生活加油 99…

IEC104规约的秘密之七----配置参数t1,t2,t3

104通讯前需要配置通讯参数,一般有如下参数: IP地址,端口号,k,w,t1,t2,t3,公共地址,遥控超时参数,104主规约还有一个t0参数。 本次只讲解t1&#…

2-113 基于matlab的图像的配准融合

基于matlab的图像的配准融合,采用互信息配准,PV差值,powell算法,小波变换的图像融合算法。在GUI界面输入两幅图像,完成图像的配准融合。融合图像要求像素 一样。程序代码已经有详细的注释。程序已调通,可直…

对操作系统中的用户态和内核态的理解

目录 引言 为什么要有用户态和内核态?只有一个内核态不行么? 一、用户态(User Mode) 定义 特点 应用 二、内核态(Kernel Mode) 定义 特点 应用 三、用户态与内核态的联系和区别 四、用户态和内…

通过dem2terrain生成MapboxGL地形服务

概述 MapboxGL在2的版本之后通过地形服务开始支持三维的展示了,之前也有文章“mapboxGL2中Terrain的离线化应用”对该服务进行过说明与分析。前些天在翻公众号的时候翻到了dem2terrain可以生成地形服务,同时做了一些优化,今天就给大家分享一…

2024全面升级!从零开始的大模型开发学习路线图——精通之路

第一阶段:基础理论入门 目标:了解大模型的基本概念和背景。 内容: 人工智能演进与大模型兴起。 大模型定义及通用人工智能定义。 GPT模型的发展历程。 第二阶段:核心技术解析 目标:深入学习大模型的关键技术和工…

多文件并发多线程MD5工具(相对快速的MD5一批文件),适配自定义MD5 Hash I/O缓存。

自己写的多文件 MD5校验工具,一个文件开一个线程,有最大I/O 缓存设置,兼容读写MD5后缀文件。 共计91个文件,合计180G左右 12分钟左右,UI基本卡废,但程序没蹦,属于正常。 卡的原因是基本是用 I/O…

每日OJ题_牛客_牛牛冲钻五_模拟_C++_Java

目录 牛客_牛牛冲钻五_模拟 题目解析 C代码 Java代码 牛客_牛牛冲钻五_模拟 牛牛冲钻五 (nowcoder.com) 描述: 牛牛最近在玩炉石传说,这是一款一对一对战的卡牌游戏,牛牛打算努力冲上钻五分段,获得丰厚的天梯奖励。…

力扣 中等 78.子集

文章目录 题目介绍解法解法一&#xff1a;解法二&#xff1a; 题目介绍 解法 有两种解法&#xff0c;对于计算[1,2]的子集问题&#xff1a; 解法一&#xff1a; 站在输入的角度思考&#xff1a;每个元素都可以选/不选 代码如下&#xff1a; class Solution {List<List&…

ReGCL Rethinking Message Passingin Graph Contrastive Learning

AAAI24 推荐指数&#xff1a; #paper/⭐ 总体说&#xff1a;利用梯度对对比正负样本加权的。个人觉得和与正负样本加权没有区别&#xff0c;读完之后不想做笔记了。

成都睿明智科技有限公司真实可靠吗?

在这个日新月异的电商时代&#xff0c;抖音作为短视频与直播电商的佼佼者&#xff0c;正以前所未有的速度重塑着消费者的购物习惯。而在这片充满机遇与挑战的蓝海中&#xff0c;成都睿明智科技有限公司以其独到的眼光和专业的服务&#xff0c;成为了众多商家信赖的合作伙伴。今…

RAG再总结之如何使大模型更好使用外部数据:四个不同层级及查询-文档对齐策略

我们来看看RAG进展。《Retrieval Augmented Generation (RAG) and Beyond: A Comprehensive Survey on How to Make your LLMs use External Data More Wisely》(https://arxiv.org/abs/2409.14924)&#xff0c;主要讨论了如何使大型语言模型&#xff08;LLMs&#xff09;更明智…

【Canvas与标志】白座红芯辐射标志

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>白座红芯辐射标志</title><style type"text/css"…

23.1 k8s监控中标签relabel的应用和原理

本节重点介绍 : relabel的源码在 7.7节做过详细的解读强大的relabel能力 在k8s中的应用 应用1&#xff1a; labelmap 在采集cadvisor指标时 对服务发现标签key名字截取应用2&#xff1a; 采集pod自定义指标中replace 和 keep的应用应用3&#xff1a; k8s服务组件采集时的endpo…

资产管理系统建设方案,资产盘点,rfid,出入库,消耗品管理,系统方案,系统源码(word原件)

固定资产管理系统需求要点&#xff1a; 1. 实现公司内部固定资产管理全生命周期管理&#xff0c;包括资产采购、资产入库、资产领用、资产借用、资产归还、资产报废、资产维修、资产调拨等全过程管理。 2. 可实现集团内部固定资产盘点管理&#xff0c;包括盘点计划、盘点查询等…

【深度解析】从电视广播到互联网接入:通信卫星如何改变我们的世界?

1.通信卫星的发展历程和现状 1.1 早期发展 通信卫星的发展历程可以追溯到20世纪50年代末期和60年代初期。 1957年10月4日&#xff0c;苏联成功发射了第一颗人造卫星“斯普特尼克1号”&#xff0c;标志着人类进入了太空时代&#xff0c;也推动了通信卫星的发展。 1958年12月18…

.NET 一款支持天蝎的免杀WebShell

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

【ubuntu】【VirtualBox】VirtualBox无法加载USB移动设备的解决方法(支持U盘启动盘)

TOC 提示&#xff1a;测试可用 一、安装VirtualBox VirtualBox-7.1.2-164945-Win。 下载路径。 Download_Old_Builds_7_0 – Oracle VirtualBox 二、安装Oracle_VirtualBox_Extension_Pack-7.1.2 下载路径见上文。 三、安装增强功能 四、挂载USB 4.1 设置USB协议 4.2 挂…

深度学习基础—目标检测算法

目录 1.滑动窗口算法 2.滑动窗口的卷积实现 &#xff08;1&#xff09;1*1卷积的作用 &#xff08;2&#xff09;全连接层转化为卷积层 &#xff08;3&#xff09;在卷积层上实现滑动窗口 3.Bounding Box预测&#xff08;YOLO算法&#xff09; 1.滑动窗口算法 假如要构建一…

YOLOv10改进 | 融合篇,YOLOv10改进主干网络为GhostNetV3+MLCA注意机制

摘要 GhostNetV3 引入了多分支重参数化机制,通过在卷积层中添加额外的平行分支来改善性能。这些分支在训练过程中提供更多的表征能力,最终通过将多个分支重组为一个卷积层来实现推理时的高效性。通过添加配备 BatchNorm 层的重复分支将再参数化引入紧凑型模型。因此作为YOLO…