看透 Spring MVC 源代码分析与实践——网站基础知识

news/2024/5/9 14:22:00/文章来源:https://blog.csdn.net/sincegc/article/details/96444485

每天都会分享Java架构文章,喜欢的朋友关注我。ps:文末有彩蛋,惊喜等着你


网站架构及其演变过程

基础结构

网络传输分解方式:

  • 标准的 OSI 参考模型
  • TCP/IP 参考模型

 

海量数据的解决方案

  • 缓存和页面静态化
  • 缓存
  • 通过程序直接保存在内存中
  • 使用缓存框架 (Encache、Redis、Memcache)
  • 页面静态化
  • 使用模板技术生成(Velocity、FreeMaker等)
  • 数据库优化
  • 表结构优化
  • SQL 语句优化
  • 分区
  • 分表
  • 索引优化
  • 使用存储过程代替直接操作过程
  • 分离活跃数据
  • 批量读取和延迟修改
  • 读写分离

 

  •  
  • 分布式数据库

 

  •  
  • NoSQL 和 Hadoop

高并发的解决方案

  • 应用和静态资源的分离:静态文件(图片、视频、JS、CSS等)放在专门的服务器上
  • 页面缓存(Nginx 服务器、Squid 服务器)
  • 集群与分布式
  • 反向代理
  • CDN
  • 底层优化:网络传输协议

常见协议和标准

TCP/IP 协议

IP:查找地址,对应着国际互联网

TCP:规范传输规则,对应着传输层

TCP 在传输之前会进行三次沟通,称 “三次握手”,传完数据断开的时候要进行四次沟通,称 “四次挥手”。

TCP 两个序号,三个标志位含义:

  • seq:表示所传数据的序号。TCP 传输时每一个字节都有一个序号,发送数据的时候会将数据的第一个序号发送给对方,接收方会按序号检查是否接收完整了,如果没接收完整就需要重新传送,这样就可以保证数据的完整性。
  • ack:表示确认号。接收端用它来给发送端反馈已经成功接收到的数据信息,它的值为希望接收的下一个数据包起始序号。
  • ACK:确认位,只有 ACK = 1 的时候 ack 才起作用。正常通信时 ACK 为 1,第一次发起请求时因为没有需要确认接收的数据所以 ACK 为 0。
  • SYN:同步位,用于在建立连接时同步序号。刚开始建立连接时并没有历史接收的数据,所以 ack 也就没有办法设置,这是按照正常的机制就无法运行了,SYN 的作用就是解决这个问题的,当接收端接收到 SYN = 1 的报文时就会直接将 ack 设置为接收到的 seq + 1 的值,注意这里的值并不是检验后设置的,而是根据 SYN 直接设置的,这样正常的机制就可以运行了,所以 SYN 叫同步位。SYN 会在前两次握手时都为 1,这是因为通信的双方的 ack 都需要设置一个初始值。
  • FIN:终止位,用来在数据传输完毕后释放连接。

 

DNS 的设置

DNS 解析

参考域名设置,如下是我在腾讯云域名的设置

 

记录类型:

A记录: 将域名指向一个IPv4地址(例如:8.8.8.8)

CNAME:将域名指向另一个域名(例如 www.54tianzhisheng.cn)

MX:将域名指向邮件服务器地址

TXT:可任意填写,长度限制255,通常做SPF记录(反垃圾邮件)

NS:域名服务器记录,将子域名指定其他DNS服务器解析

AAAA:将域名指向一个iPv6地址(例如:ff06:0:0:0:0:0:0:c3)

SRV:记录提供特定服务的服务器(例如xmpp-server.tcp)

显性URL:将域名301重定向到另一个地址

隐性URL:类似显性URL,但是会隐藏真实目标地址

主机记录:

要解析 www.54tianzhisheng.cn,请填写 www。主机记录就是域名前缀,常见用法有:

www: *解析后的域名为 www.54tianzhisheng.cn。

*@: 直接解析主域名 54tianzhisheng.cn。

*: 泛解析,匹配其他所有域名 *.54tianzhisheng.cn。

mail: 将域名解析为 mail.54tianzhisheng.cn,通常用于解析邮箱服务器。

二级域名: 如:abc.54tianzhisheng.cn,填写abc。

手机网站: 如:m.54tianzhisheng.cn,填写m。

Java 中 Socket 的用法

普通 Soket 的用法

Socket 分为 ServerSocket 和 Socket 两大类。

ServerSocket 用于服务器端,可以通过 accept 方法监听请求,监听到请求后返回 Socket;

Socket 用户具体完成数据传输,客户端直接使用 Socket 发送请求并传输数据。

随便写了个单方面发送消息的 demo:

客户端:

 
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
/*** Created by 10412 on 2017/5/2.* TCP客户端:①:建立tcp的socket服务,最好明确具体的地址和端口。这个对象在创建时,就已经可以对指定ip和端口进行连接(三次握手)。②:如果连接成功,就意味着通道建立了,socket流就已经产生了。只要获取到socket流中的读取流和写入流即可,只要通过getInputStream和getOutputStream就可以获取两个流对象。③:关闭资源。*/
//单方面的输入!
public class TcpClient
{public static void main(String[] args) {try {Socket s = new Socket("127.0.0.1", 9999);OutputStream o = s.getOutputStream();o.write("tcp sssss".getBytes());s.close();} catch (IOException e) {e.printStackTrace();}}
}

服务器端:

 
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*** Created by 10412 on 2017/5/2.*/
public class TcpServer
{public static void main(String[] args) {try {ServerSocket ss = new ServerSocket(9999);//建立服务端的socket服务Socket s = ss.accept();//获取客户端对象String ip = s.getInetAddress().getHostAddress();int port = s.getPort();System.out.println(ip + " : " + port + " connected");// 可以通过获取到的socket对象中的socket流和具体的客户端进行通讯。InputStream ins = s.getInputStream();//读取客户端的数据,使用客户端对象的socket读取流byte[] bytes = new byte[1024];int len = ins.read(bytes);String text = new String(bytes, 0, len);System.out.println(text);//关闭资源s.close();ss.close();} catch (IOException e) {e.printStackTrace();}}
}

彩蛋时间:免费分享Java系列技术资料,需要的朋友可以在后台私信我

 

 
作者:白天不懂夜的黑 来源:知乎 原文:https://zhuanlan.zhihu.com/p/74209609 

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用户在电商网站中购买成功了,那么在微服务中经历了什么?

当我傻啊,用户在电商网站购买成功,还在微服务中,那肯定就是有一套微服务架构的电商系统。 设计一套电商系统还不简单 简单想象一下,既然是一个电商系统,有用户去购买,就肯定得有一个用户模块,…

JAVA爬取网站查询网络IP所在地

JAVA爬取网站查询网络IP所在地 网络中我们上网都是一个ip地址,在获取对象网络ip的时候,如果想查询他所在网络的地址怎么搞呢?上代码 1.写一个方法通过站长工具网站查询到你输入的ip的地址,需要用URL去爬取网站数据 /**ip就是需要…

建站技术是一锤子买卖,而建站服务则是长久性的共赢吗?

近年来,服务外包需要越来越多,业务也越来越多样化,特别是IT服务外包。随着资本市场的进入,人力成本的提升,素质教育与实际工作环境的脱钩,可谓是一将难求,所以很多公司或单位开始将目光关注到第…

手机微信小程序公众号交友平台网站定制开发,相亲网站系统建设,婚恋相亲网站制作

10几年的技术团队,专业定制交友网站开发,交友平台网站建设,婚恋网站平‌‌‌‌台开发建设,可仿百合网,世纪佳缘网,支持电脑版手机版微信版小程序版APP版,由10年的技术团队专业定制,需…

网站站内、站外链接优化技巧与作用

其实网站站内链接优化和站外链接优化一样重要,两者是相辅相成的,可能在对不同的搜索引擎的时候有些不一样,在相同条件下百度更加注重的是内容,谷歌更加注重的是链接,所以这两个都要同时做好才能让网站对搜索引擎更加友…

国际版云购网站代码开发实现案例

最近把之前的中文版元购夺宝网站做了改变,感觉还是比较不错的,算是高大上国际版云购网站代码开发实现案例,现在分享给大家看看。 预览效果图: function is_php($version 5.0.0){static $_is_php;$version (string)$version;if …

Google有三个.cn网站可以访问了,但它们只面向开发者

12 月 8 日,Google 在北京举办了一场规模空前的开发者活动,推出了三个不需科学上网就能访问的子站点。 developers.google.cn firebase.google.cn developer.android.google.cn 虽然 Google 早在 2010 年就正式退出了中国市场,但它在开发者…

Nginx之坑:完全理解location中的index,配置网站初始页

文章目录index指令的作用index指令详解基本内容(中文文档和官方文档都可见):核心内容(中文文档没有或一笔带过,而官方文档作详细解释):实例Nginx中文文档Nginx官方文档吐槽index指令的作用 在前…

2019fresco依赖_在2019年建立一个无依赖网站

我的新改进个人网站的屏幕截图 经过几年的基本无视后,我最近决定是时候刷新我的个人站点了 。 先前的迭代结合了Gulp和Bower,并结合了Susy(网格系统的Sass库)(版本2,而不是最新的版本3)。 我上一…

2007最牛X网站收集

50. 经典桌面 这个名叫东子的偏执狂不知花了多少工夫,mydeskcity.com的内容量达到了40G,很多图片都是站长本人在国外搜集后,自己进行加工的作品。 http://www.mydeskcity.com/ 49. 画猪头 在指定的对话框里面随便画一个猪头&#…

纯css实现网站导航条下拉效果

不用javascript效果实现导航条的下拉效果。 纯css属性实现&#xff0c;主要应用到绝对定位中的left&#xff1a;auto和 left&#xff1a;-9999px&#xff1b;来隐藏或者鼠标经过的时候显示下拉菜单。 下面是代码&#xff1a; <!DOCTYPE html> <html> <head&g…

网站右侧导航条的玩法

最近心情很不好&#xff0c;各种工作生活上面的事情&#xff0c;让我很是受伤&#xff0c;刚出来工作感觉程序员确实是个神奇的行业&#xff0c;一个个都觉得自己的智商挺高的&#xff0c;哎&#xff0c;每天起早贪黑的上下班&#xff0c;还天天受气&#xff0c;真是日了够了&a…

谷歌浏览器调试网站技巧教程

1.样式的调试&#xff0c;盒子模型。 2找到hover样式 3 4.样式所对应的标签&#xff0c;所在文件名

mouseover事件,鼠标移上去数据出不来且数据错乱

我要做如下的效果&#xff0c;就是鼠标移上去有一个信息提示框 但是我用mouseover一直就是鼠标移上去第一下&#xff0c;直接位置那里是空的&#xff0c;然后再次移动之后&#xff0c;数据一直都是错乱的&#xff0c;比如&#xff0c;从第一个人移动到第二个人那里&#xff0c;…

MySQL在大型网站的应用架构演变

可扩展性 架构的可扩展性往往和并发是息息相关&#xff0c;没有并发的增长&#xff0c;也就没有必要做高可扩展性的架构&#xff0c;这里对可扩展性进行简单介绍一下&#xff0c; 常用的扩展手段有以下两种&#xff1a; Scale-up : 纵向扩展&#xff0c;通过替换为更好的机器…

互联网网站架构升级----消息中间件的实现方案

消息中间件对目前大中型互联网来说是非常重要的&#xff0c;在业务数据流动中仅次于RPC服务调用&#xff0c;担负着越来越复杂的网站业务从主流程上解耦的重要责任&#xff1b; 伦理片 http://www.gxuy.com/ 从目前互联网对消息中间件的需求来看应该分为两种类型&#xff0…

20 步打造完美网站布局设计

英文原文&#xff1a;Pro tips: 20 steps to the perfect website layout&#xff0c;编译&#xff1a;蝶月猋欢yeeyan Claudio Guglieri 在纽约广告公司 B-Reel 任职总监&#xff0c;他撰写了本网站设计培训指南&#xff0c;旨在帮助您了解设计网站布局的全过程。 开始讲述设计…

Bootstrap Jetstrap-快速构建你的网站

Boostrap来自于Twitter&#xff0c;是一个基于html&#xff0c;css&#xff0c;javascript的时尚的、直观的、强大的流行前端框架及交互组件集&#xff0c;可用于快速&#xff0c;简单构建你的网站。 Bootstrap拥有以下特性&#xff1a; 由匠人建&#xff0c;为匠人用 和您一样…

HTML一键打包IPA(苹果IOS应用)工具 网站打包 APP

工具简介 HTML一键打包IPA&#xff08;苹果应用&#xff09;工具可以把本地HTML项目或者网站打包为一个苹果应用IPA文件&#xff0c;无需编写任何代码&#xff0c;支持在苹果设备上安装运行。 打包工具群&#xff1a;429338543 下载地址&#xff1a; 点击进入下载页面 加群获…

2016谷歌重返中国,体验Google中国开发者网站

我早上起床时拿起手机看新闻&#xff0c;一个标题瞬间吸引了《Google搜索要重返中国&#xff0c;但这次是靠中国开发者找回 “丢失的那6年”》&#xff0c;激动点开一看&#xff0c;文章巴拉巴拉一大推&#xff0c;选择性阅读完后&#xff0c;怀着无法按捺的心情在没翻墙的手机…