react.js做的网站免费空间有哪些
react.js做的网站,免费空间有哪些,龙江行程二维码下载,建设网站比较好的公司一、Tomcat#xff08;一#xff09;WEB 技术1.前端三大核心技术#xff08;1#xff09;HTML超文本标记语言#xff08;HTML#xff09;的本质与核心总结#xff1a;HTML 并非传统意义上的编程语言#xff0c;而是一种专门用于构建网页的标记语言。其核心思想在于“超…一、Tomcat一WEB 技术1.前端三大核心技术1HTML超文本标记语言HTML的本质与核心总结HTML 并非传统意义上的编程语言而是一种专门用于构建网页的标记语言。其核心思想在于“超文本”即它超越了纯文本的限制不仅能呈现文字本身还能通过特定语法定义文本的格式如颜色、大小、字体并能无缝嵌入图片、音频、视频等多媒体非文本内容。HTML 的功能主要由一个个标签标记来实现。这些标签分工明确、各司其职构成了网页的骨架——有的负责定义网页的元信息有的负责结构化文本有的负责插入多媒体还有的负责搭建整体的网页布局。因此任何一个 HTML 文件本质上都是由格式标签与实际数据内容组合而成的文档。为了呈现出超文本定义的排版格式如图片、表格、字体样式必须依赖专门的解读软件浏览器。超文本的诞生是为了解决纯文本显示单调的问题追求更好的视觉效果。而为了让这些内容能被远程分享和获取人们又制定了 HTTP协议规定了数据在网络中的传输规则使得浏览器能够请求并接收网页最终将“好看”的文档连接成全球共享的万维网。2CSS随着网页对视觉效果的需求日益增长HTML 被迫不断加入样式功能而变得臃肿这促使了专门负责样式的 CSS层叠样式表诞生。1994年 W3C 成立后CSS 设计小组全体加入并推动标准研发微软随后也参与其中。CSS 1.0于1996年12月发布1998年5月推出 CSS 2.0。此后的 CSS 3采用模块化思想在 CSS 2基础上对各功能模块分别进行增强和陆续发布。然而由于不同浏览器厂商使用不同的渲染引擎对 CSS 标准的支持程度存在差异导致同一份网页在不同浏览器中的布局和样式表现不一致这使得跨浏览器保持统一的视觉效果成为前端开发中长期存在的挑战。3JavaScriptJavaScript简称JS是一种动态、弱类型的脚本解释性语言与 HTML、CSS 并列为三大 WEB 核心技术几乎被所有主流浏览器支持。1994年网景公司推出 Netscape Navigator 浏览器并占据市场主导地位为了满足网页动态化的需求于1995年9月发布 LiveScript同年12月更名为 JavaScript。同期微软在IE中推出 JScript以抗衡。1997年ECMA欧洲计算机制造商协会制定了 ECMAScrip t标准JavaScript 和 JScript 均成为该标准的实现。2008年后Chrome 浏览器搭载的 V8 引擎发布它通过本地编译和深度优化使 JS 运行速度堪比二进制程序。V8 引擎用 C 开发可嵌入任何 C 程序。2009年基于 V8 的 Node.js 诞生并创建了 npm 包管理系统。自此JavaScript 实现了在服务器端的大规模应用成为唯一能够前后端通用的编程语言。同步在同步交互中用户每次提交请求如注册表单后浏览器都必须等待服务器返回一个全新的完整 HTML 页面并重新渲染。这种机制导致了三个核心问题一是用户体验差页面会强制刷新导致输入内容丢失二是资源浪费严重为了更新局部信息却要传输整个页面消耗了不必要的网络带宽和渲染性能三是效率低下整体过程笨重且不友好。这也间接引出了对这种落后交互方式进行改进的必要性。异步Ajax 并非一项全新的发明而是一种技术的重新组合与发现。它的核心思想起源于1998年微软的Outlook Web Access 团队早期经历了 iframe 标签和笨重的 ActiveX 插件的探索。1999年微软推出的 XMLHttpRequest 组件被大多数浏览器支持为 Ajax 的普及奠定了基础。Ajax 的全称是Asynchronous JavaScript And XML异步JavaScript和XML。其最大价值在于改变了传统网页必须重载整个页面的同步交互模式通过浏览器内置的 XMLHttpRequest 对象JavaScript 可以在后台与服务器进行少量数据交换实现网页的局部异步更新。虽然早期常结合XML 格式但现在更多使用 JSON。这项技术不仅极大地推动了 JavaScript 的发展更重要的是实现了前后端开发的彻底分离改变了传统的 Web 开发模式深远地影响了整个互联网行业。二WEB 框架1.web 资源和访问从静态服务器请求 HTML、CSS、JS 等文件发送到浏览器端浏览器端接收后渲染在浏览器上从图片服务器请求图片资源显示。从业务服务器访问动态内容动态内容是请求后有后台服务访问数据库后得到的最终返回到浏览器端。为了提升加载性能和用户体验移动 App 通常会内置 HTML 和 JS 文件在本地而非每次启动都从静态服务器下载。这样做主要是为了规避现代前端工程中JS文件过多或过大的问题减少网络传输开销。在实际运行中App 采用按需加载策略仅在有需要时才从图片服务器请求静态资源从业务服务器请求动态数据。面对多样化的用户需求大部分实时内容仍需由后端提供因此业务服务器往往是由一组服务器组成的集群以支撑高并发和复杂业务逻辑保障服务的稳定与高效。2.后台应用架构1单体架构核心特征all in one所有功能模块商品、订单、支付、库存、登录等都放在同一个工程中统一打包如jar/war部署运行在同一个进程内。部署方式通常先部署到一台服务器若负载不足则通过水平复制多份部署 负载均衡来扩展。优点易于开发和测试部署方便。扩展简单复制应用多份即可。缺点耦合度高模块间相互依赖修改或升级某一功能如支付必须重新打包部署整个应用。容错性差任何一个模块出问题如内存泄漏都可能导致全站不可访问。维护困难项目庞大时代码管理、团队协作难度大。发布效率低每次发布都需要停服重启影响业务连续性。典型代表开源Tomcat、Jetty、Glassfish商用WebLogic、WebSphere、Jboss2微服务微服务架构是 SOA面向服务架构的一种具体实现和子集其核心是将传统的一站式应用按业务边界拆分为多个独立服务每个服务只专注于单一业务功能实现彻底解耦。从技术角度看每个微服务都是一个独立的进程可自行启动或销毁能够独立部署到生产环境多个服务共同构成分布式系统各自可使用独立的数据库服务之间采用基于 HTTP 的 RESTful API 等轻量级通信机制进行交互。微服务设计思想也深刻影响了企业研发团队的组织架构改变了传统的水平团队模式前端、后端、DBA 各成团队更倾向于垂直架构——按业务划分团队如用户业务由一个团队全栈负责支付业务由另一个团队全栈负责。当然实际企业中并不会拆分得绝对垂直架构更多是一种理想模式。微服务有多种实现框架如 Spring Cloud、Dubbo 等不同的应用架构对应着不同的部署方式。3微服务优缺点优点微服务架构的核心优势在于其小而专、松耦合的设计理念。每个服务只聚焦单一业务功能代码规模小、内聚性强易于开发者理解、修改和维护。这种独立性使得开发效率显著提升小团队2-5人可以独立负责一个服务无需跨团队协作即可实现价值。在技术层面微服务允许不同服务使用不同的编程语言和技术栈便于融合最新技术同时实现了前后端分离服务只关注业务逻辑易于与第三方集成。部署方面微服务支持独立的持续集成和自动部署如通过 Jenkins 等工具每个服务可以独立发布、升级或回滚互不影响。存储上每个服务可根据需要选择独立数据库或统一数据库灵活性高。缺点然而微服务也带来了显著的复杂性提升。将一个完整的项目拆分为多个独立工程后开发、测试、运维、监控的难度都大幅增加。分布式环境下跨服务的数据一致性成为挑战需要引入分布式事务和异步补偿机制增加了设计和开发成本。开发人员和运维人员必须掌握分布式系统的相关知识对技术能力要求更高。此外服务间的通信延迟、故障处理、调用链追踪等问题都需要额外处理。需要强调的是微服务并非适用于所有场景——对于小型应用而言盲目拆分只会徒增维护和开发成本得不偿失。常见的微服务框架Dubbo阿里开源贡献给了 ASF 目前已经是 Apache 的顶级项目一款高性能的 Java RPC 服务框架微服务生态体系中的一个重要组件将单体程序分解成多个功能服务模块模块间使用 Dubbo 框架提供的高性能 RPC 通信内部协调使用 Zookeeper实现服务注册、服务发现和服务治理Spring cloud一个完整的微服务解决方案相当于 Dubbo 的超集微服务框架将单体应用拆分为粒度更小的单一功能服务基于 HTTP 协议的 REST(Representational State Transfer 表述性状态转移风格实现模块间通信三Tomcat 的功能介绍Tomcat 是一个免费、开源的轻量级 Web 应用服务器由 Apache 软件基金会ASF管理。它起源于 Sun 公司的一个 Servlet 参考实现项目Java Web Server由 James Duncan Davidson开发1999年贡献给 ASF 并与 JServ 项目合并最终开源成为顶级项目。核心特性主要功能作为 Servlet 和 JSP 容器同时具有处理 HTML 页面的能力。规范实现仅实现了Java EE 规范中与 Servlet、JSP 相关的部分是 Java EE 的不完整实现。适用场景广泛应用于中小型系统和并发访问用户不是很多的场合。版本演进Tomcat 3.01999年初始版本实现了 Servlet 2.2 和 JSP 1.1 规范Tomcat 4.x内建 CatalinaServlet容器和 JasperJSP引擎当前版本正式版已更新至9.0.x但企业中主流仍使用8.x和7.x版本资源链接官网http://tomcat.apache.org/官网文档https://tomcat.apache.org/tomcat-8.5-doc/index.html帮助文档https://cwiki.apache.org/confluence/display/tomcat/1.Tomcat 的文件结构和组成目录结构2.Tomcat 的启动文件主配置文件路径/usr/local/tomcat/conf/tomcat.conf启动脚本文件四结合反向代理实现 Tomcat 部署1.常见部署方式standalone 模式Tomcat 单独运行直接接受用户的请求不推荐。反向代理单机运行提供了一个 Nginx 作为反向代理可以做到静态由 nginx 提供响应动态jsp代理给 TomcatLNMTLinux Nginx MySQL TomcatLAMTLinux ApacheHttpd MySQL Tomcat前置一台 Nginx给多台 Tomcat 实例做反向代理和负载均衡调度Tomcat 上部署的纯动态页面更适合LNMTLinux Nginx MySQL Tomcat多级代理LNNMTLinux Nginx Nginx MySQL Tomcat2.利用 nginx 反向代理实现利用 nginx 反向代理功能实现图中的代理功能将用户请求全部转发至指定的同一个 tomcat 主机。利用 nginx 指令 proxy_pass 可以向后端服务器转发请求报文,并且在转发时会保留客户端的请求报文中的 host 首部3.实现 Tomcat 中的负载均衡动态服务器的问题往往就是并发能力太弱往往需要多台动态服务器一起提供服务。如何把并发的压力分摊这就需要调度采用一定的调度策略将请求分发给不同的服务器这就是 Load Balance 负载均衡。当单机 Tomcat演化出多机多级部署的时候一个问题便凸显出来这就是 Session。而这个问题的由来都是由于 HTTP 协议在设计之初没有想到未来的发展。1HTTP 的无状态HTTP 协议本身是无状态的服务器无法识别两次请求是否来自同一个浏览器。解决方案首次请求浏览器第一次请求服务器时服务器生成一个唯一的 SessionID 并返回给浏览器。存储 SessionID浏览器将 SessionID 保存在 Cookie 中通常为临时存储浏览器关闭即消失。后续请求浏览器每次 HTTP 请求都会携带该 SessionID服务器通过比对 ID 来识别用户。生命周期Session 通常保存在服务器内存中未持久化则易丢失且有过期时间过期后服务器会重新生成新的 SessionID。特殊情况更换浏览器会获得新的 SessionID。2HTTP 的有连接HTTP 协议依赖于 TCP是面向连接的通信前需要进行三次握手建立连接通信结束后需要四次挥手断开连接。3HTTP 的短连接HTTP/1.1之前每个请求都需要独立创建和销毁 TCP 连接连接创建销毁成本高对服务器压力大。HTTP/1.1及以后支持并默认开启 keep-alive长连接机制。一个 TCP 连接打开后会保持一段时间浏览器再次访问该服务器时可复用该连接从而减轻服务器压力提高效率。注意当使用 HAProxy 或 Nginx 等做负载均衡时如果请求被调度到不同的 Tomcat 服务器上且 Session 未共享会导致找不到 SessionID 的问题。此外即使 Session 被持久化如果服务器故障且未恢复也无法使用这些 SessionID。五Memcached1.简介基本特性Memcached 是一款基于 Key-Value 的内存缓存系统只支持能序列化的数据类型不支持数据持久化无 RDB 和 AOF。单个 key 最大支持 1MB 存储对象超过可通过客户端压缩或拆分处理。高性能机制借助 libevent 库实现高效读写该库统一封装了 Linux 的 epoll、BSD 的 kqueue 等事件处理接口即使连接数增加也能保持高性能支持 Linux、BSD、Solaris 等操作系统。数据一致性保障虽无持久化但可通过集群同步实现数据一致集群中各节点数据保持一致单节点故障不影响整体可用故障节点恢复后可自动从正常节点同步数据内存管理采用 slab/page 机制每次申请 1MB 内存作为一个 slabpage进行存储管理。应用场景与支持最佳实践适合保存用户 Session实现分布式环境下的 Session 共享多语言支持提供 Java、C、Python、PHP、C#、Ruby、Perl 等多种开发语言接口官网http://memcached.org/2.操作命令五种基本 memcached 命令执行最简单的操作。包括set、add、replace、get、delete前三个命令是用于操作存储在 memcached 中的键值对的标准修改命令,都使用如下所示的语法command key flags expiration time bytesvalue参数说明如下command set/add/replacekey key 用于查找缓存值flags 可以包括键值对的整型参数客户机使用它存储关于键值对的额外信息expiration time 在缓存中保存键值对的时间长度以秒为单位0 表示永远bytes 在缓存中存储的字节数value 存储的值始终位于第二行增加 key过期时间为秒bytes 为存储数据的字节数add key flags exptime bytes六session 共享服务器1.msm 介绍项目概述MSM 是一个开源项目旨在将 Tomcat 的 Session 数据存储到 Memcached 中从而实现高可用环境下的 Session 共享。项目早期托管于 Google Code现已在 GitHub 上维护。版本支持支持 Tomcat 6.x、7.x、8.x、9.x 等多个主流版本。核心组件Session 管理类针对不同 Tomcat 版本提供特定的管理器 Jar 包例如通用包 memcached-session-manager-2.3.2.jar 和对应 Tomcat 9 的 memcached-session-manager-tc9-2.3.2.jar。序列化工具负责 Session 数据的序列化与反序列化官方推荐使用 Kryo。客户端驱动作为连接缓存服务器的驱动支持 spymemcached (对应 Memcached) 和 jedis (对应 Redis)。部署位置需要将上述 Jar 包放置在 webapp/WEB-INF/lib/ 目录下。2.安装参考链接: https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration将 spymemcached.jar、memcached-session-manage、kyro 相关的 jar 文件都放到 Tomcat 的 lib目录中这个目录是 $CATALINA_HOME/lib/ 对应本次安装就是 /usr/local/tomcat/lib。t1 和 m1 部署可以在一台主机上t2 和 m2 部署也可以在同一台。当新用户发请求到 Tomcat1 时, Tomcat1 生成 session 返回给用户的同时,也会同时发给memcached2 备份。即 Tomcat1 session 为主 sessionmemcached2 session 为备用 session使用 memcached 相当于备份了一份 Session如果 Tomcat1 发现 memcached2 失败,无法备份 Session 到 memcached2,则将 Sessoin备份存放在 memcached1 中七Tomcat 实验1.Tomcat 安装部署下载安装包部署启动制作启动脚本安转好主机 rs2 的环境后上传启动脚本2.Tomcatmemcached 实现 session 会话零丢失Tomcat 加载模块安装 memcache两台主机均要配置 Tomcat两台主机均要