javaweb核心元知识
HTTP协议
这是javaweb元知识库中的一个组成部分,通过标签分类可快速抵达
彩色文字在一段话中方便插入各种颜色的标签,包括:红色、黄色、绿色、青色、蓝色、灰色。
不同的颜色以为意味这不同的重点度,红色最高,意味着出现频率越高(其实这玩意恨不得全搞成红色的各凭心情吧)
本文章基本为了快速通过面试和抽查,只收录了高频问题标签样式示例:danger 提示块标签
warning 提示块标签
success 提示块标签
HTTP请求报文和响应报文的结构HTTP 报文是纯文本格式的结构化数据,分为请求报文(客户端→服务器)和响应报文(服务器→客户端),二者核心结构相似,均由起始行 + 首部字段 + 空行 + 消息体四部分组成,空行(CRLF)是首部和消息体的唯一分隔符,是报文解析的关键。
请求报文结构(request)[这是客户端发送给服务器的报文]【一般格式为json】
第一部分(请求行)【请求方法、请求URI、HTTP版本】
第二部分(请求头)键值对结构,是多组的头部字段名,头部字段值
第三部分(空行)这是头部和主体的分隔符
第四部分(请求体)携带请求参数
响应报文结构(r ...
SpringBoot框架结构速查
SpringBoot框架结构速查用户登录模块1.系统资源分类
- 公共资源(游客资源)
- 不需要登录就可以访问,系统不需要知道你是谁
- 所有人看到的数据是一样的
- 认证资源(登录后资源)
- 需要登录后才可以访问,系统需要知道你是谁
- 不同用户看到的数据是不同的
拦截器拦截器是什么拦截器是控制器的请求门卫,所有的HTTP请求先经过拦截器在进入控制器在springboot中不需要额外添加依赖,拦截器和控制器都包含在Spring web的基础框架中了
如何创建拦截器自定义拦截器实现拦截器父接口的HandlerInterceptor,父接口提供了三个默认方法被子类
之前说子类必须实现父类的所有抽象方法
在jdk1.8后子类提供了一种新的方法,运行子类可选重写,让接口更加灵活、
抽象方法和默认方法的区别
抽象方法没有方法体,要求子类必须重写
默认方法有方法体,子类可以不重写,默认
重写preHandle方法(在进入控制器之前拦截)
http请求的潜质拦截方法
在潜质拦截方法中可以获取请求报文
这个方法一般必须重写
该方法的返回值是boolean ...
keepalived+nginx+tomcat实现高可用天猫商城系统部署
keepalived+nginx+tomcat实现高可用天猫商城系统部署设备需求
5台虚拟机 (2台负载均衡+2台tomcat应用+MySQL数据库)
操作流程如下:
一、环境准备安装一台全新的LINUX机器,或者查询当前有的主机的环境状态
首先查看和配置网卡信息,以便远程连接控制
1id addr
连接远程控制
检查防火墙情况
1systemctl status firewalld
防火墙在学习环境下建议完全关闭,实际生产过程中禁止关闭,规则开放特定端口
检查框架部署环境
12345678910# ========== Nginx 检查 ==========# 1. 检查Nginx是否安装rpm -qa | grep nginx# 2. 检查Nginx运行状态systemctl status nginx# ========== Keepalived 检查 ==========# 1. 检查Keepalived是否安装rpm -qa | grep keepalived# 2. 检查Keepalived运行状态systemctl status keepalived
如果 ...
zerotier搭建免费moon服务器
zerotier搭建免费moon服务器zerotier是一个开源的基于P2P的虚拟局域网软件,它可以在不同的设备之间建立一个虚拟的局域网,实现设备之间的通信。
他的作用机理是:
每个设备都有一个唯一的ID,这个ID是在设备第一次连接到zerotier网络时生成的。
当两个设备想要通信时,它们会先交换自己的ID。
交换完成后,设备会根据ID建立一个P2P连接。
连接建立后,设备之间就可以直接通信了。
zerotier本身是免费的,在进行虚拟局域网的搭建的过程中,只要将你所有的设备都拉拢的到同一个虚拟局域网组中就可以正常使用了,但是在进行通信时,每个设备之间的通信都是通过zerotier服务器来转发的,在建立P2连接后就不需要再通过服务器转发流量了,这个过程我们称打洞成功。
但是在国内网络环境下,由于GFW的限制,设备之间的P2P连接是无法建立的,这就导致了通信的延迟和不稳定性。而且国内用户普遍缺少公网ip,虚拟局域网的应用需求挺高的
所以为了避免每次都得去境外寻找根服务器来进行流量转发,我们可以在国内找一台有公网ip的服务器,将zerotier的moon服务器部署在上面,这样就不 ...
SQL语法整理整合(快速使用)
SQL语法整理整合(快速使用)
之前经过系统性的学习,有几份很详细的笔记,但是我发现那一份查起来比较麻烦,所以现在这一份重点在于整理常用的SQL语句,而且是方便查询的版本
这份是蓝图,后续可能还会持续更新的
我们将用SQL核心模块功能进行划分
数据库操作
表操作
数据操作
约束操作
索引操作
视图操作
存储过程操作
事务操作
锁机制
性能优化
一、数据库操作(DDL:数据定义语言)1. 创建数据库— 功能:创建指定名称的数据库,若数据库已存在则不执行(避免报错)— create[创建] database[数据库] db_name[数据库名]— if[如果] not[没有] exists[存在]1CREATE DATABASE IF NOT EXISTS shop; -- 实例:创建名为「shop」的电商数据库
2. 查看所有数据库— 功能:查询当前数据库服务器中所有已存在的数据库— show[显示] databases[数据库列表]1SHOW DATABASES; -- 实例:查看所有数据库
3. 选择(切换)数据库— 功能:指定后续 SQL 操作的目标数据库— use[使用] ...
SpringMVC
SpringMVC
开始啦,这是SpringMVC框架的学习博客内容,最近高强度更新,我的学习压力也很大
首先先区分两个东西,MVC和SpringMVC
MVC是一种设计模式,Model-View-Controller的缩写,模型-视图-控制器
SpringMVC是Spring框架中的一个模块,是基于MVC设计模式实现的Web框架
三层架构&MVC三层架构是指将应用程序分为表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)三部分。每一层都有其特定的职责和功能。
我们这样搞简直是强迫症福音,可以将每个部分负责的功能都老老实实的分离开来,互不干扰,每个部分都有自己的职责和功能。
表现层:web层,用来与客户端进行数据交互,表现层一般会采用MVC的设计模型。
业务层:处理具体业务逻辑的
持久层:用来操作数据库
MVC全称Model View Controller,是一种设计创建Web应用程序的模式。这三个单词分别代表Web应用程序的三个部分:Model(模型):指数据模型。 ...
Spring
SpringSpring简介
听说这玩意是春天,说是可以给JAVA程序员带来的春天,但是我感觉不是那么回事,我感觉确实是个春天,只是我没有看到。
spring的主要作用就是为了代码解耦,降低代码之间的偶是和。让对象和对象之间关系不是使用代码关联,同时通过配置来说明。Spring的核心控制反转(IOC)和面向切面(AOP),简单来说Spring是一个分层JavaEE一站式轻量级开源框架。
IOC:控制反转/依赖注入,在之前学习的过程中,比如有一个类,我们想要调用类里面的方法,就要创建该类的对象,使用对象调用方法来实现。但是对于Spring来说,不用再自己创建要使用的对象,而是由Spring容器统一管理,自动注入,注入就是赋值AOP:面向切面编程,简单来说就是我们可以在不修改源码的情况下,对程序的方法进行增强,将涉及多业务流程的通用功能抽取并单独封装,形成独立的切面,再合适的时机将这些切面横向切入到业务流程的指定的位置中
Spring的体系结构是由7个模块构成的,主要由Data Access/Integration(数据访问/集成)、Web、AOP(面向切面编程)、Core Contai ...
Spring常用注解速查
Spring常用注解速查本文整理了Spring、Spring MVC和Spring Boot中常用的注解,方便快速查阅和使用。
虽然我认为不是那么简洁明了,但是够用了不是吗?,如果要找具体的注解用法,建议去Spring官方文档查找。
以下内容基于Spring 5.3.20、Spring MVC 5.3.20和Spring Boot 2.6.7版本。
我只是个普通的学习者,但是也是尽可能的收集齐了,在初学者阶段完全够用的。
前置依赖要使用Spring、Spring MVC和Spring Boot中的注解,需要在项目中添加相应的依赖。以下是常用的依赖配置:
Maven依赖
如果你要找到具体版本的依赖,建议去Maven仓库查找。
123456789101112131415161718192021222324252627<!-- Spring Core --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-context&l ...
个人整理面试大宝典
个人整理面试超级大宝典
源自于JAVA面试宝典,个人学习笔记等,整合出来的用于面试使用的终极面试大纲,希望可以通过面试
经过再三考虑,考虑到时间成本等关系,所以我打算采用难点补充来完善这份笔记,所以简单的,或者我认为没有什么必要去归纳在这个文章里面的我就不做进来了
重点会集中放在集合,反射,序列化,多线程&并发,JVM,String,spring boot,Mybatis
==这个里面的内容必须!必须!必须!全部背记熟练,而且可以做出延伸和联系==
[toc]
面向对象面向对象的设计原则类的设计原则有七个,包括:开闭原则、里氏代换原则、迪米特原则(最少知道原则)、单一职责原则、接口分隔原则、依赖倒置原则、组合/聚合复用原则。
什么是B/S架构,什么是C/S架构
B/S(Browser/Server),浏览器/服务器
C/S(Client/Server),客户端/服务器
Java语言的特点面向对象跨平台可靠安全支持多线程
JDK(Java Development Kit)是开发工具包(含编译器),JRE(Java Runtime Environment)是运行环境(含JV ...
MyBatis学习笔记
MyBatis一、框架概述什么是框架框架对通用的代码的封装,通过使用框架,提高开发效率,而不需要关心一些繁琐的、复杂的底层代码实现,把更多的经历用于所在需求的实现上。
框架可以理解为一个半成品,我们选用这个半成品,然后加上业务需求来最终实现整个功能。
软件开发的分层在我们进行程序设计以及程序开发时,尽可能让每一个接口、类、方法的职责更单一(单一原则)
单一原则:一个类或者一个方法,就只做一件事情,只管一个功能。这样就可以让类、接口、方法的复杂度更低,可读性更强、扩展性更好,也便于后期的维护。
以前我们写代码,从组成可以分成三个部分:
数据访问:负责业务数据的维护操作
逻辑处理:负责业务逻辑处理的代码
请求处理:接受请求,给页面响应数据
在我们项目开发中,将代码分为三层:
前端发起的请求,由controller层接收,控制器响应数据给前端
controller层调用service层进行逻辑处理,service层处理后,把处理结果返回给controller层
dao层操作底层的数据,负责拿到数据返回给service层
分层就是分工,划分环节,通过分层架构的设计,使代码的职责分明,容 ...
