设计模式
创建型模式:创建型模式关注对象的创建过程,主要包括简单工厂模式、工厂方法模式、抽象工厂模式、单例模式、建造者模式和原型模式。
结构型模式:结构型模式关注对象之间的组合和协作关系,主要包括适配器模式、桥接模式、组合模式、装饰者模式、外观模式、享元模式和代理模式。
行为型模式:行为型模式关注对象之间的交互和通信,主要包括模板方法模式、策略模式、命令模式、职责链模式、状态模式、观察者模式、中介者模式和访问者模式。
1、单例模式
饿汉模式:在类加载时就完成了初始化,但是加载比较慢,获取对象比较快
12345678910public class Singleton_hungry { //构造函数私有化 private Singleton_hungry(){} //定义私有的引用 private static Singleton_hungry instance = new Singleton_hungry(); //对外提供获取实例的方法 public static Singleton_hungry getInstance()& ...
springBoot
1、Spring Boot基础应用1.1、springBoot特征概念:
约定优于配置,简单来说就是你所期待的配置与约定的配置一致,那么就可以不做任何配置,约定不符合期待时才需要对约定进行替换配置。
特征:
1.SpringBoot Starter:他将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中
2.使编码变得简单,SpringBoot采用 JavaConfig的方式对Spring进行配置,并且提供了大量的注解,极大的提高了工作效率,比如@Configuration和@bean注解结合,基于@Configuration完成类扫描,基于@bean注解把返回值注入IOC容器。
3.自动配置:SpringBoot的自动配置特性利用了Spring对条件化配置的支持,合理地推测应用所需的bean并自动化配置他们
4.使部署变得简单,SpringBoot内置了三种Servlet容器,Tomcat,Jetty,undertow.我们只需要一个Java的运行环境就可以跑SpringBoot的项目了,SpringBoot的项目可以打成一个j ...
jvm
1、jvm概念1.1、JVM JRE JDK区别
JVM:就是一个虚拟的用于执行bytecode字节码的”虚拟计算机”。一般与OS操作系统打交道
JRE:java运行环境,包含Java虚拟机、库函数、运行Java应用程序所必须的文件
javaw(windos java启动器,不显示黑窗口),libraries(外部类库),rt_jar(核心库)
JDK:java开发工具,包含JRE,以及增加编译器和调试器等用于程序开发的文件
javac(编译器),debugging(调试器),tools,javap(反编译工具)
2、内存结构
注意:常量池,运行时常量池,字符串常量池逻辑上属于方法区,只是存储的物理位置在堆(所以他们属于方法区)
2.1、程序计数器当前线程所执行的字节码的行号指示器。在JVM的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令
特点:(1).为了在线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,独立存储,互不影响。所以,程序计数器是线程私有的内存区域(2).如果线程执行的是一个Java方法,计数器记 ...
mqtt
1、简介MQTT 可以简单看做一个网络协议,用于机器对机器的通信(与客户端到服务器的传输有点区别)。智能传感器、可穿戴设备和其他物联网(IoT)设备通常必须通过带宽有限的资源受限网络传输和接收数据。这些物联网设备使用 MQTT 进行数据传输,因为它易于实施,并且可以有效地传输物联网数据。MQTT 支持设备到云端和云端到设备之间的消息传递。
1.1、特点
轻量级:MQTT协议是一种轻量级的协议,它的开销非常小,可以在低带宽、不稳定的网络环境下运行。
灵活性:双向通信,MQTT协议支持多种消息传输模式,包括点对点、发布/订阅和请求/响应等模式,可以根据不同的应用场景选择合适的模式。
可靠性:MQTT协议支持QoS(服务质量)等级,可以确保消息的可靠传输,同时还支持消息持久化和重传机制,保证消息不会丢失。
易于集成:MQTT协议可以与各种不同的平台和设备集成,包括传感器、嵌入式设备、移动设备和云平台等,可以实现跨平台、跨设备的通信。
安全性:MQTT协议支持TLS/SSL加密和认证机制,可以保证消息的安全传输和身份验证,防止数据泄露和攻击。
1.2、 ...
shiro
1、shiro基本概念Shiro是Apache组织下的一个开源的安全框架,常常用来做:安全认证、权限管理、会话管理、加密
1.1、安全认证可用于验证用户的身份凭证,如用户名和密码。通过配置 Shiro 的 Realm(领域)来自定义身份验证的逻辑,通过 Subject 对象进行身份验证,可以获取用户的身份信息和执行相关操作
1.2、权限管理可以通过配置 Shiro 的 Realm 来定义用户的角色和权限信息,或者使用注解方式进行权限控制。通过 Subject 对象进行权限检查,可以判断用户是否具有某个角色或权限,并根据结果进行相应的处理
1.3、会话管理shiro 提供了会话管理的功能,用于跟踪用户的登录状态和管理用户的会话信息。Shiro 的会话管理可以基于 Web 容器的 HttpSession,也可以使用自己的非 Web 环境会话管理(redis等)
1.4、加密对密码进行加密和解密操作,以保护用户的密码安全。Shiro 支持常用的加密算法,如MD5、SHA、AES等。你可以根据需求选择适当的加密算法进行使用
2、shiro架构
2.1、主体(Subject)Subject即主体 ...
thymeleaf
1. 简介Thymeleaf 是一个服务器端 Java 模板引擎,能够处理 HTML、XML、CSS、JAVASCRIPT 等模板文件。Thymeleaf 模板可以直接当作静态原型来使用,它主要目标是为开发者的开发工作流程带来优雅的自然模板,也是 Java 服务器端 HTML5 开发的理想选择
2. 创建模板文件创建一个html模板文件:
12345678910<!DOCTYPE HTML><html xmlns:th="http://www.thymeleaf.org"><head> <title>Index Page</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body> <p th:text="${message}">Welcome ...
java core
1、Java概述1.1、java特点
Java 语言是面向对象的(oop)
Java 语言是健壮的。Java 的强类型机制、异常处理、垃圾的自动收集等是 Java 程序健壮性的重要保证
Java 语言是跨平台性的。[即: 一个编译好的.class 文件可以在多个系统下运行,这种特性称为跨平台]
java是一种半编译,半解释型语言。 . Java–>. class是由 Javac 编译,这个过程符合编译型语言的特点。而. class–>对应平台机器码 的这一过程 是由Java解释执行
1.2、访问修饰符
2、变量2.1、java基本数据类型java基本数据类型 - 四类八种
整型
byte 、short 、int 、long
浮点型
float 、 double
字符型
char
布尔型
boolean
数据类型名称
占用字节
范围
封装器类
byte(字节型)
1
-(2^7)2^7-1(-128127)
Byte
shot(短整型)
2
-(2^15)2^15-1(-3276832767)
Short
int(整形)
4
-(2 ...
mysql
1、数据库基础概念1.1、mysql数据类型
分类
类型名称
类型说明
整数
tinyInt
微整型:占8位二进制,1个字节 (-128-127)
smallint
小整型:占16位二进制,2个字节(-32768-32767)
mediumint
中整型:占24位二进制,3个字节(-8388608-8388607)
int(integer)
整型:占32位二进制,4个字节(-2147483648-2147483647)
bigint
大整型:占64位二进制,8个字节(-9223372036854775808-9223372036854775807)
小数
float
单精度浮点数,占4个字节
double
双精度浮点数,占8个字节
decimal(m,n)
高精度小数型,最大精度为65,最大占用空间30字节
日期
time
表示时间类型 yyyy-MM-DD ,3字节
date
表示日期类型 hh:mm:ss ,3字节
datetime
同时可以表示日期和时间类型,8字节
字符串
char(m)
固定长度的字符串,无 ...
中国古代史
1、史前时期1.1、中国人种起源及生存环境人类进化链环的各个阶段,在中国境内大都可以找到对应的遗址。
直立人: 西侯度人(山西,180万年前)、元谋猿人(云南,170万年前)、蓝田人(陕西,115-70万年前)、北京猿人(70-23万年前)
早期智人 (古人):长阳人(湖北,距今19.5万年)、丁村人(山西,距今20多万年)、大荔人(陕西,距今20-15万年前)
晚期智人(新人):猿类特征已经退化,体质特征接近现代人。柳江人(距今5-4万年,广西),河套人(距今5-3.7万年,内蒙古),山顶洞人(距今3万年,北京)
1.2、中国境内旧石器和新石器时代在考古学上,根据人类使用工具的进化程度不将历史划为:石器时代 (旧石器时代,新石器时代) -> 青铜时代 -> 铁器时代
旧石器时代:距今250万年-1万年,特点是使用粗糙的打制石器,过着采集和渔猎生活,相当于人类历史上的原始人阶段
新石器时代:距今1万-5000年,氏族公社时期,包括母系氏族公社和父系氏族公社,特点是使用磨制石器,能够制造陶和纺织,发明农业和畜牧业,有固定生活来源,不再依赖采集为生。(大汶口文化,红山文化 ...
redis
1、基本概念Redis诞生于2009年全称是Remote Dictionary Server,远程词典服务器,是一个基于内存的键值型NoSQL数据库。
1.1、redis特性
键值(key-value)型,value支持多种不同数据结构,功能丰富
单线程,每个命令具备原子性
Redis的网络IO和键值对读写是由一个线程来完成的,但Redis的其他功能,例如持久化、异步删除、集群数据同步等操作依赖于其他线程来执行
低延迟,速度快
原因:基于内存、采用多路复用非阻塞I/O、单线程
支持数据持久化
支持主从集群、分片集群
支持多语言客户端
1.2、数据类型
Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样
2、redis常见命令2.1、StringString是Redis中最基本的数据类型,可以存储任何数据,包括二进制数据、序列化的数据、JSON化的对象甚至是图片。
String类型,也就是字符串类型,是Redis中最简单的存储类型底层SDS结构。为什么不直接实用字符串?①C 语言字符数组最后一个元素总 ...