web速览

news2025/1/23 7:28:40

web速览

1. 前端开发

  • 概述: 前端开发是构建网站用户界面的过程,主要关注网站的视觉效果和用户体验。又称为客户端

  • 技术栈

    • HTML(超文本标记语言):用于创建网页的结构和内容。
    • CSS(层叠样式表):用于样式和布局设计,包括颜色、字体、边距等。
    • JavaScript:用于实现网页的交互性和动态效果。
  • 前端框架

    • React:一个用于构建用户界面的 JavaScript 库,采用组件化设计。
    • Vue.js:一个渐进式的 JavaScript 框架,易于上手,适合小到中型项目。
    • Angular:一个全面的框架,适合大型应用开发,提供多种功能。

2. 后端开发

  • 概述:后端开发是指构建管理网站服务器、应用程序和数据库的部分,它直接处理数据存储和业务逻辑。又称服务端。

  • 技术栈

    • 编程语言:常用语言包括 Node.js(JavaScript)、Python、Java、PHP、Ruby 等。
    • 框架:如 Express.js(Node.js)、Django(Python)、Spring Boot(Java)。
  • 数据库

    • 关系型数据库:如 MySQL、PostgreSQL,使用表格结构。
    • 非关系型数据库:如 MongoDB、Cassandra,使用文档或键值对存储数据。

3. API(应用程序接口)

  • 概述:API 是允许不同软件组件之间进行通信和交互的接口。

类型

RESTful API
特点:
  • 资源导向:REST(Representational State Transfer)围绕资源进行设计,每个 URL 代表一个资源。

  • HTTP 方法

    • GET:获取资源(读取)。
    • POST:创建新资源(添加)。
    • PUT:更新现有资源(替换)。
    • DELETE:删除资源。
  • 无状态性:每个请求都是独立的,服务器不存储客户端的状态信息。

优点:
  • 易于理解和实现。
  • 广泛支持,几乎所有编程语言都有库来构建 RESTful API。
  • 具有良好的缓存机制。
缺点:
  • 查询复杂时,可能需要多个请求(如,获取资源及相关数据)。
  • 不够灵活,客户端需要确切知道 API 的结构。
GraphQL
特点:
  • 查询语言:允许客户端描述所需数据的结构,仅返回请求的数据。
  • 单个端点:与 REST API 不同,GraphQL 通常通过一个端点提供服务。
优点:
  • 灵活性高,客户端能精确请求所需数据,避免过载和不足。
  • 有助于减少 API 调用次数,提升性能。
  • 强类型系统,提供良好的自我文档功能(如使用 GraphiQL 工具可以交互查询)。
缺点:
  • 学习曲线较陡,需要了解 GraphQL 的语法和最佳实践。
  • 实现上可能更复杂,尤其是在处理缓存和批处理请求时。

4. Web 服务器

  • 概述:Web 服务器是处理来自浏览器请求的程序,并向用户反馈网页内容,主要用于托管网站。

  • 常见的 Web 服务器

    • Apache:一个功能强大的开源服务器,支持多种模块和配置选项。
    • Nginx:以高并发和低内存消耗著称,常用作反向代理和负载均衡器。
    • Tomcat:专门用于运行 Java web 应用的容器。

5. 安全性

HTTPS

  • 概述:HTTPS(安全超文本传输协议)是通过 SSL/TLS(安全套接层/传输层安全协议)加密的 HTTP。它的主要目的是保护数据在传输过程中的安全性。
  • 工作原理
    • 使用公钥和私钥进行加密,确保数据在传输过程中不会被窃听或篡改。
    • 用户与 Web 服务器之间建立安全的连接,通常可以通过浏览器中的小锁图标来验证。
  • 好处
    • 提高用户信任度(尤其是在线购物或敏感信息输入时)。
    • SEO 方面有益:搜索引擎(如 Google)更喜欢 HTTPS 网站。

身份验证和授权

  • 身份验证:确认用户的身份,确保访问者是他们所声称的那个人。

    • 常用方式
      • OAuth:一种开放标准,允许用户在不分享用户名和密码的情况下进行身份验证,常用于第三方应用授权。

      • JWT(JSON Web Token):一种紧凑的,URL 安全的方式,用于表示请求之间传输的信息,支持无状态认证。

          JWT 的工作流程
          
          用户登录:用户通过用户名和密码登录系统。
          生成 JWT:服务器验证用户的凭据,生成 JWT,并将其返回给用户。
          客户端存储 JWT:客户端(如网页应用或移动应用)将 JWT 存储在本地存储或 Cookies 中。
          请求 API:在后续的请求中,用户将 JWT 作为 HTTP 请求头(通常为 Authorization: Bearer <token>)发送到服务器。
          服务器验证 JWT:服务器接收到请求后,解码并验证 JWT的有效性。如果令牌有效且未过期,服务器根据载荷中的信息授权用户访问请求的资源。
        
  • 授权:确定已验证用户是否具有访问特定资源的权限,确保用户只能查看和操作他们有权限的数据。

防火墙和 DDoS 防护

  • 防火墙
    • 概述:防火墙是网络安全设备,用于控制进入和离开网络的数据流,防止未经授权的访问。
    • 工作原理:通过设置规则允许或阻止特定类型的流量,保护内部网络的安全。
  • DDoS(分布式拒绝服务)攻击防护
    • 概述:DDoS 攻击是通过大量请求使目标服务器过载,导致正常用户无法访问。
    • 防护措施
      • 使用流量清洗服务来识别并过滤恶意流量。
      • 部署负载均衡,通过分散流量来减轻攻击的影响。
      • 设置速率限制,限制单个用户的请求速率,从而减轻攻击到网站的影响。

6. Web 性能优化

  • 资源压缩:减少 CSS、JS 和图片文件的大小,提高加载速度。

缓存机制

1. 浏览器缓存:

  • 浏览器缓存允许将静态资源(如图片、JavaScript 和 CSS 文件)存储在用户的浏览器中。这样,当用户再次访问网站时,浏览器可以直接从缓存中加载资源,而不是重新向服务器请求,从而减少加载时间和服务器负担。
  • 实现方法:
    • 使用 HTTP 头部(如 Cache-ControlExpires)设置资源的过期时间。
    • 确保版本号的管理,例如通过在资源 URL 中添加版本号或哈希值来强制重新加载更新的资源。

2. CDN 缓存:

  • 内容分发网络(CDN)是在多个地理位置部署的服务器网络。当用户请求某个资源时,CDN 会把请求转发给离用户最近的服务器,这样可以显著提高加载速度。
  • 实现方法:
    • 将静态资源上传到 CDN,设置相应的缓存策略,使 CDN 节点能缓存这些资源。
    • 利用 CDN 提供的缓存失效机制,当资源更新时,可以手动或自动使 Cache 失效。

懒加载

懒加载是一种延迟加载的策略,主要用于提高页面的性能和用户体验。懒加载只有在用户滚动到图像或内容时,才会加载这些资源,从而减少初始页面加载的时间。

实现方法:

  1. 图像懒加载:

    • 使用 JavaScript 或数据属性(如 data-src),当元素进入视口时,将实际的图像 URL 设置为 src

      <img data-src="image.jpg" class="lazy" alt="Image"/>
      
      const lazyLoad = () => {
        const images = document.querySelectorAll('img.lazy');
        images.forEach(img => {
          if (img.getBoundingClientRect().top < window.innerHeight) {
            img.src = img.dataset.src;
            img.classList.remove('lazy');
          }
        });
      };
      window.addEventListener('scroll', lazyLoad);
      
  2. 内容懒加载:

    • 对于较大的文档或内容块,可以在用户滚动到一定位置时异步加载更多内容。
    • 这可以通过监听滚动事件或使用 Intersection Observer API 来实现。

7. 响应式设计

  • 概述:响应式设计是通过 CSS 媒体查询,确保网站在各种设备和屏幕尺寸上的良好呈现。

  • 工具

    • CSS GridFlexbox:用于创建灵活布局。
    • Bootstrap:流行的前端框架,提供预设样式和组件,方便快速开发。

8. DevOps 和持续集成

  • 概述:DevOps 是开发与运维的结合,旨在加速软件开发和交付。

  • 工具

    • Docker:用于创建和管理容器,简化应用的部署。
    • CI/CD 工具:如 Jenkins、GitLab CI,帮助实现自动化测试和部署。

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

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

相关文章

基于SpringBoot+Vue的旅游管理系统【源码+文档+部署讲解】

系统介绍 基于SpringBootVue实现的旅游管理系统采用前后端分离架构方式&#xff0c;系统设计了管理员、用户两种角色&#xff0c;系统实现了用户登录与注册、个人中心、用户管理、景点信息管理、订票信息管理、用户评价管理、景点咨询、轮播图管理等功能。 技术选型 开发工具…

Agent群舞,在亚马逊云科技搭建数字营销多代理(Multi-Agent)(下篇)

在本系列的上篇中&#xff0c;小李哥为大家介绍了如何在亚马逊云科技上给社交数字营销场景创建AI代理的方案&#xff0c;用于社交动态的生成和对文章进行推广曝光。在本篇中小李哥将继续本系列的介绍&#xff0c;为大家介绍如何创建主代理&#xff0c;将多个子代理挂载到主代理…

【Ubuntu】安装SSH启用远程连接

【Ubuntu】安装OpenSSH启用远程连接 零、安装软件 使用如下代码安装OpenSSH服务端&#xff1a; sudo apt install openssh-server壹、启动服务 使用如下代码启动OpenSSH服务端&#xff1a; sudo systemctl start ssh贰、配置SSH&#xff08;可跳过&#xff09; 配置文件 …

后端开发Web

Maven Maven是apache旗下的一个开源项目&#xff0c;是一款用于管理和构建java项目的工具 Maven的作用 依赖管理 方便快捷的管理项目依赖的资源&#xff08;jar包&#xff09;&#xff0c;避免版本冲突问题 统一项目结构 提供标准、统一的项目结构 项目构建 标准跨平台(…

STM32项目分享:智能宠物喂食系统(升级版)

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 PCB图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; https://www.bilibili.com/video/BV19hmMY6ErU…

【程序化广告】相关技术(RTB竞价原理、Cookie映射流程、数据统计原理、程序化创意、防作弊方法)

上一篇介绍了【程序化广告】广告投放流程/漏斗/要素/策略/指标&#xff0c;本篇介绍一下程序化广告所使用到的相关技术&#xff0c;包括RTB竞价原理、Cookie映射流程、数据统计原理、程序化创意、防作弊方法等。 1. RTB竞价原理 1&#xff09;竞价逻辑 用户开启电脑&#xf…

STM32补充——IAP

0 前置知识&#xff1a; FLASH相关内容&#xff1a;前往STM32补充——FLASH STM32三种烧录方式&#xff08;看看就行&#xff09;&#xff1a; 1.ISP&#xff1a;In System Programming&#xff08;在系统编程&#xff09; 执行芯片厂商的 Bootloader 程序进入 ISP 模式&…

Spring Boot中选择性加载Bean的几种方式

说明&#xff1a;用过Spring框架的都知道其自动装配的特性&#xff0c;本文介绍几种选择性加载Bean的方式。Spring自动装配参考以下两篇文章&#xff1a; 基于SpringBoot的三层架构开发&统一响应结果 SpringBoot自动装配原理简单分析 ConditionalOnProperty Conditiona…

AI刷题-策略大师:小I与小W的数字猜谜挑战

问题描述 有 1, 2,..., n &#xff0c;n 个数字&#xff0c;其中有且仅有一个数字是中奖的&#xff0c;这个数字是等概率随机生成的。 Alice 和 Bob 进行一个游戏&#xff1a; 两人轮流猜一个 1 到 n 的数字&#xff0c;Alice 先猜。 每完成一次猜测&#xff0c;主持会大声…

利用Java爬虫获取eBay商品详情:代码示例与教程

在当今的电商时代&#xff0c;获取商品详情数据对于市场分析、价格监控和竞品研究至关重要。eBay作为全球最大的电商平台之一&#xff0c;拥有海量的商品信息。通过Java爬虫技术&#xff0c;我们可以高效地获取这些数据&#xff0c;为商业决策提供支持。本文将详细介绍如何使用…

编译Android平台使用的FFmpeg库

目录 前言 一、编译环境 二、搭建环境 1.安装MSYS2 2.更新系统包 2.1 打开MSYS2 MinGW 64-bit终端&#xff08;mingw64.exe&#xff09; 2.2 更新所有软件包到最新版本 2.3 安装必要的工具和库。 3. 克隆FFmpeg源码 4. 配置编译选项 5. 执行编译 总结 前言 记录学习…

30天开发操作系统 第 17 天 -- 命令行窗口

前言 今天一开始&#xff0c;请大家先回忆一下任务A的情形。在harib13e中&#xff0c;任务A下面的LEVEL中有任务因此FIFO为空时我们可以让任务A进入休眠状态。那么&#xff0c;如果我们并未启动任务B0~ B0~ B2, B2的话&#xff0c;任务A又将会如何呢&#xff1f; 首先&#xf…

阿九的python 爬虫进阶课18.3 学习笔记

文章目录 前言1. 爬取大标题2. 爬取小标题3. 证券栏下的标题4. 某篇文章里的具体内容 前言 网课链接&#xff1a;https://www.bilibili.com/video/BV1kV4y1576b/新浪财经网址&#xff1a;https://finance.sina.com.cn/需先下载库&#xff1a; conda install lxml布置爬取的一…

Qt 5.14.2 学习记录 —— 십팔 对话框

文章目录 1、Qt对话框2、自定义对话框1、代码方式2、图形化方式 3、模态对话框4、QMessageBox5、QColorDialog6、QFileDialog7、QFontDialog8、QInputDialog 1、Qt对话框 Qt的对话框用QDialog类来表示&#xff0c;可以自定义一些类来实现自定义对话框&#xff0c;但需要继承自…

web3py+flask+ganache的智能合约教育平台

最近在学习web3的接口文档&#xff0c;使用web3pyflaskganache写了一个简易的智能合约教育平台&#xff0c;语言用的是python&#xff0c;ganche直接使用的本地区块链网络&#xff0c;用web3py进行交互。 代码逻辑不难&#xff0c;可以私信或者到我的闲鱼号夏沫mds获取我的代码…

java中的String类、StringBuffer类、StringBuilder类的详细讲解(包含相互之间的比较)

文章目录 一、String 类1 String 类的介绍2 String 对象创建的两种方式3 测试题加深理解&#xff08;1&#xff09; 例题一&#xff08;2&#xff09;例题二&#xff08;3&#xff09; 例题三 4 String 类的常用方法&#xff08;1&#xff09;equals()&#xff08;2&#xff09…

外设链接与中断

外设链接与中断 PC键盘处理过程 定制键盘的输入过程

考研408笔记之数据结构(五)——图

数据结构&#xff08;五&#xff09;——图 1. 图的基本概念 1.1 图的定义 1.2 有向图和无向图 在有向图中&#xff0c;使用圆括号表示一条边&#xff0c;圆括号里元素位置互换没有影响。 在无向图中&#xff0c;使用尖括号表示一条边&#xff0c;尖括号里元素位置互换则表示…

71,【3】buuctf web [HITCON 2017]SSRFme

进入靶场 左上角是IP地址&#xff0c;下面有一堆代码 <?php // 检查是否存在 HTTP_X_FORWARDED_FOR 头部信息 if (isset($_SERVER[HTTP_X_FORWARDED_FOR])) {// 如果存在&#xff0c;将其按逗号分隔&#xff0c;并将第一个元素作为新的 REMOTE_ADDR$http_x_headers explo…

【TypeScript】模块化和命名空间、类型查找、类型缩小

模块化和命名空间 ts 在模块化中遵循 esm 规范&#xff0c;而且推荐导入类型时前面加上 type 字段&#xff0c;这些可以让一个非TypeScript编译器比如Babel、swc或者esbuild知道什么样的导入可以被安全移除。 TypeScript有它自己的模块格式&#xff0c;名为namespaces&#x…