SpirngBoot开源Demo源码分析:
记录的是Springboot开源Demo的解读过程。
https://github.com/ityouknow/spring-boot-examples
dockercompose-springboot-mysql-nginx:
1,DockerCompose:
简介 - Docker — 从入门到实践Docker Compose | 菜鸟教程
使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
123456789101112131415161718192021222324252627282930313233343536version: '3'services: nginx: container_name: v-nginx image: nginx:1.13 restart: always ports: - 80:80 - 443:443 volumes: - ./nginx/conf.d:/etc/nginx/conf.d mysql: container_na ...
Shell命令(红帽):
1.ps1命令:
用于定义用户的命令行显示:
2.创建链接:https://cloud.tencent.com/developer/article/1392619?from=15425&areaSource=102001.2&traceId=UcK5hJ3TZF5NAsnSbGkMx
语法: ln -d source_path target_path 硬链接文件 ;In:info in 命令; ln -s source_file softlink_file 创建软链接软链接类似window的快捷方式,里面储存的是目的地址的路径,对软链接文件的读写操作就是对源文件的读写,删除软链接,不会影响源文件。硬链接:源文件的另外一个文件名, 不允许给目录创建硬链接; 只有在同一文件系统中的文件之间才能创建链接。 对硬链接文件进行读写和删除操作时候,结果和软链接相同,这里可以看出硬链接和cp文件的区别是,硬链接是同步变化的。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了原有的内容。 这时,系统就“忘记”了它曾经是硬链接文件。而把他当成一个普通文件。 ...
Session的理解:
Tomcat中的Session小结 - 风一样的码农 - 博客园
什么是Session:
对Tomcat而言,Session是一块在服务器开辟的内存空间,其存储结构为ConcurrentHashMap;
Session的目的:
Http协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;Session的主要目的就是为了弥补Http的无状态特性。简单的说,就是服务器可以利用session存储客户端在同一个会话期间的一些操作记录;
如何理解同一会话:
"同一会话"是指在一个Web应用程序中,由同一个客户端发起的一系列请求和响应之间的关联。每当客户端与Web应用程序建立连接并发送请求时,Tomcat会为该客户端创建一个唯一的会话标识符(Session ID)并返回给客户端,客户端拿到这个会话标识符号后就储存在cookie中,以后每次请求都携带着这个session Id;这样就可以在tomcat服务器中确定该客户端的session了!
实现机制
1、服务器如何判断客户端发送过来的请求是属于同一个会话?答: ...
Redis学习
1.环境配置IDEA连接远程redis:
ubantu22下载docker,下载redis:
一、更新系统软件包索引
1sudo apt update
二、安装docker
1sudo apt install docker.io
三:拉取redis:
1docker pull redis
IDEA连接远程国外服务器的docker:
1.直接连接是无法连成功的!因为我购买的vps是国外的!被墙了的!我们需要先配置IDEA的http代理!这里我使用的是clash下载的代理:2.打开设置查看windown的系统代理:记住地址和端口:3.IDEA配置http代理:4.设置IDEAdocker连接:同理也可以根据上面ssh连接海外服务器!如果上述方法无法连接成功就是节点的问题!
IDEA中docker连接远程redis容器:
redis默认只能本地访问远程访问需要额外的配置:1.新建远程的ssh连接:2.创建docker中redis容器的数据卷!分别映射redis容器中的data和配置信息:
123mkdir -p /mydata/redis/datamkdir -p /mydata/r ...
Rabbitmq基础知识
https://kangshitao.github.io/2021/10/26/rabbitmq/
基础知识:
2.消息应答:**消费者在接 收到消息并且处理该消息之后,告诉 rabbitmq 它已经处理了,rabbitmq 可以把该消息删除了。 **
1.安装:
Ubuntu20.04安装RabbitMQ,并配置远程调用,详细教程_ubuntu20.04 rabbitmq安装使用-CSDN博客
2.hello项目:
12345671.生产者创建连接工厂,连接工厂创建连接2.发送消息(创建Channel)3.消费者创建连接工厂,连接工厂创建连接(需要提供服务器地址,端口,用户,密码)4.接收信息(创建Channel,5.消费者内部有消费成功的回调函数和失败的回调函数,消费者会监听生产者生成消息6.当只有一个生产者,多个消费者的时候,消费者默认按照轮询的方式消费信息7.
消息应答:
1.默认为自动应答,也就是信息发出去后队列就删除这条信息。我们可以设置为手动应答,当我们发送成功后,但是某一个消费者挂掉了,这个时候发送丢失的消息就会重写入队。
持久化:
1.保障当 RabbitM ...
Quartz基础
一、初识Quartz
1. 概念
quartz是一款开源且丰富特性的**“任务调度库”,能够集成与任何的java** 应用,下到独立应用,大到电子商业系统。quartz就是基于java实现的任务调度框架,用于执行你想要执行的任何任务。
什么是任务调度?任务调度就是我们系统中创建了N个任务,每个任务都有指定的时间进行执行,而这种多任务的执行策略就是任务调度。
quartz的作用就是让任务调度变得更加丰富,高效,安全,而且是基于Java实现的,这样子开发者只需要调用几个接口坐下简单的配置,即可实现上述需求。
2. 核心
1)任务 Job
我们想要调度的任务都必须实现org.quartz.job接口,然后实现接口中定义的**execute( )**方法即可
2)触发器 Trigger
Trigger作为执行任务的调度器。我们如果想要凌晨1点执行备份数据的任务,那么Trigger就会设置凌晨1点执行该任务。其中Trigger又分为SimpleTrigger和CronTrigger两种
3)调度器 Scheduler
Scheduler为任务的调度器,它会将任务Job及触发器Trigger整合起 ...
尚硅谷mysql复习
1.概述:
2.一对一关系:
3.一对多关系:
4.多对多关系:
5.自我引用:
2.mysql的安装:
1.查看mysql的版本:
方法一:mysql --version
方法二:select version();
2.5.7的mysql安装后会有字符集的问题的解决:
1.查看表的创建信息:show create table 表名词;可以发现使用的是latin1字符集
2.查看数据库的创建信息:show create table 数据库名;发现也是使用的拉丁字符集
3.修改mysql中的my.ini配置文件:
BOM头:
1234567BOM(byte-order mark),即字节顺序标记,它是插入到以UTF-8、UTF16或UTF-32编码Unicode文件开头的特殊标记,用来识别Unicode文件的编码类型BOM的作用是告诉文本处理程序,这个文件是用哪种Unicode编码方式保存的,以及字节的顺序是怎样的BOM的存在有利有弊。有利的一面是,它可以帮助文本处理程序正确地识别Unicode文件的编码方式,避免乱码或错误的解释。有弊的一面是,它可能会被一些不支持BOM的程 ...
Caffeine介绍及使用
Cache是一种带有存储和移除策略的Map。
二、Caffeine基础
Caffeine官网: https://github.com/ben-manes/caffeine
1. 功能一览
Caffeine 提供了灵活的构造来创建具有以下功能组合的缓存:
自动将条目自动加载到缓存中,可以选择异步加载
基于频率和新近度超过最大值时基于大小的逐出,提供过期策略
自上次访问或上次写入以来测得的基于时间的条目到期
发生第一个陈旧的条目请求时,异步刷新
键自动包装在弱引用中
值自动包装在弱引用或软引用中
逐出(或以其他方式删除)条目的通知
写入传播到外部资源
缓存访问统计信息的累积
2. 缓存加载策略介绍
2.1 Cache手动创建
最普通的一种缓存,无需指定加载方式,需要手动调用put()进行加载。需要注意的是put()方法对于已存在的key将进行覆盖,这点和Map的表现是一致的。在获取缓存值时,如果想要在缓存值不存在时,原子地将值写入缓存,则可以调用get(key, k -> value)方法,该方法将避免写入竞争。调用invalidate()方法,将手动移除缓存。 ...
SQL-递归查询(with recursive)
MySQL with Recursive是一种基于递归思想的MySQL查询方式,可以实现对数据的递归查询和处理,返回符合条件的数据,在MySQL 8.0版本中,该功能被正式引入。
12345678WITH RECURSIVE cte_name (column_list) AS ( SELECT initial_query_result UNION [ALL] SELECT recursive_query FROM cte_name WHERE condition)SELECT * FROM cte_name;
123456789101112-- 创建表DROP TABLE IF EXISTS `sys_region`;CREATE TABLE sys_region ( id int NOT NULL AUTO_INCREMENT COMMENT '地区主键编号', name varchar(50) COMMENT '地区名称', short_name varchar(50) COMMENT '简称& ...
spring杂项
1.springboot自定义start讲解:使用SpringBoot自定义一个starter启动包,超详细_自定义starter 如何导入目标工程-CSDN博客
InitializingBean的作用是什么?
12345InitializingBean的作用是Bean注入到Spring容器且初始化后,执行特定业务化的操作。Spring允许容器中的Bean,在Bean初始化完成后或者Bean销毁前,执行特定业务化的操作,常用的实现方式有以下三种:通过实现InitializingBean/DisposableBean接口来处理初始化后/销毁前的操作;通过标签的init-method/destroy-method属性处理初始化后/销毁前的操作;在指定方法上加上@PostConstruct或@PreDestroy注解来处理初始化后/销毁前的操作。
XXXAware相关的接口:
SpringBoot项目的目录结构及名规范:
目录说明
1234567891011121314151617181920212223242526272829303132333435363738394041424344 ...