RabbitMQ简介和使用场景
转载于:RabbitMQ 简介以及使用场景 - 海向 - 博客园 (cnblogs.com)
简介MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求
RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、 安全。AMQP协议更多用在企业系统内,对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次
使用场景使用场景有:解耦、异步提升效率、流量削峰
解耦为面向服务的架构(SOA)提供基本的最终一致性实现
场景说明:用户下单后,订单系统需要通知库存系统
传统的做法是,订单系统调用库存系统的接口
传统模式的缺点:①假如库存系统无法访 ...
MySQL创建计算字段
介绍如果存储在表中的数据都不是应用程序所需要的,那么我们需要直接从数据库中检索出转换、计算或格式化过的数据,而不是检索出数据,然后再在客户机应用程序或报告程序中重新格式化。
拼接字段介绍所谓拼接,就是将值联结到一起构成单个值,即把两个列拼接起来
在MySQL的SELECT语句中,可使用Concat()函数来拼接两个列
普通拼接拼接姓名和年龄
1SELECT CONCAT('姓名:',student_name,',年龄:',age) FROM t_student;
使用别名拼接姓名和年龄,并且设置别名为student_message,第一行数据的上方就是别名
1SELECT CONCAT('姓名:',student_name,',年龄:',age) AS student_message FROM t_student;
去除空格
函数
作用
TRIM()
去除两端的空格
LTRIM()
去除左侧的空格
RTRIM()
去除右侧的空格
去除学生姓名两端的空格
1SELECT CONC ...
MySQL使用正则表达式
简介正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较,在搜索子句中使用正则表达式,必须使用REGEXP操作符
实例基本字符匹配选出学生姓名中包含“赵六”的学生
1SELECT * FROM t_student WHERE student_name REGEXP "赵六";
选出学生姓名以一个字符+“赵六”开头的学生,一个.匹配一个字符
1SELECT * FROM t_student WHERE student_name REGEXP '.赵六';
区分大小写正则表达式默认是不区分大小写的,要区分大小写就使用BINARY关键字
选出学生姓名中包含“a”的学生,如果不使用BINARY关键字就选出学生姓名中包含“a”或“A”的学生
1SELECT * FROM t_student WHERE student_name REGEXP BINARY 'a';
OR匹配|为正则表达式的OR操作符,它表示匹配其中之一
选出学生姓名中包含“张三”或“赵六”的学生
1SELECT * FROM t_student ...
MySQL使用通配符过滤数据
简介MySQL通配符有百分号(%)通配符和 下划线(_)通配符,在搜索子句中使用通配符,必须使用LIKE操作符。
百分号通配符最常使用的通配符是百分号(%),在搜索串中,%表示任何字符出现任意次数,不出现也可以。
单个%%在开头
选出学生姓名以 “赵六” 结尾的学生
1SELECT * FROM t_student WHERE student_name LIKE "%赵六";
%在结尾
选出学生姓名以 “赵六” 开头的学生
1SELECT * FROM t_student WHERE student_name LIKE "赵六%";
两个%一个在开头,一个在结尾,可用于模糊搜索
选出学生姓名中包含 “赵六” 的学生
1SELECT * FROM t_student WHERE student_name LIKE "%赵六%";
下划线通配符下划线的用途与%一样,但下划线只匹配单个字符而不是多个字符,匹配多少个字符就要多少个下划线,下面例子都只匹配了1个字符
单个__在开头
选出学生姓名以 “赵六” 结尾且前面有一个字符的 ...
SELECT语句的WHERE子句
介绍在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤,WHERE子句在表名(FROM子句)之后给出
操作符
操 作 符
说 明
=
等于
<>
不等于
!=
不等于
<
小于
<=
小于等于
>
大于
>=
大于等于
BETWEEN
在指定的两个值之间
实例=选出 年龄为10岁 的学生
1SELECT * FROM t_student WHERE age=10;
<>选出 年龄不是10岁 的学生
1SELECT * FROM t_student WHERE age<>10;
!=选出 年龄不是10岁 的学生
1SELECT * FROM t_student WHERE age!=10;
<选出 年龄小于10岁 的学生
1SELECT * FROM t_student WHERE age<10;
<=选出 年龄小于等于10岁 的学生
1SELECT * FROM t_student WHERE age<=10;
>选出 年龄大于 ...
SELECT语句的ORDER BY子句
学生表数据
实例升序默认就是升序排序,即可以不加ASC关键字
按年龄升序排序
1SELECT * FROM t_student ORDER BY age ASC;
降序使用DESC关键字
按年龄降序排序
1SELECT * FROM t_student ORDER BY age DESC;
多个列排序先根据年龄升序排序,如果有年龄相同的学生,再根据班级id升序排序这些年龄相同的学生
1SELECT * FROM t_student ORDER BY age,classId;
取最大值使用ORDER BY和LIMIT的组合,能够找出一个列中最高或最低的值
选出年龄最大的
1SELECT * FROM t_student ORDER BY age DESC LIMIT 1;
Nginx+Redis+Tomcat实现负载均衡共享session
说明Nginx、Tomcat和Redis都是Docker创建的容器
下载项目下载将项目拉到idea上,GitHub地址为:a6678696/RedisSessionDemo: Redis存储session例子 (github.com),,这个项目实现了Redis存储session,实现Redis存储session的博客地址为:Spring Boot 实现 Redis 存储 session | LeDao 的博客 (zoutl.cn)
修改根据Docker的Tomcat容器端口号修改一下application.yml、info.html、login.html、main.html的端口号,方便测试时辨认出访问的是哪个Tomcat的项目
将application.yml的spring.redis.host修改为Docker给Redis分配的IP地址,查看IP地址命令如下:
1docker inspect Redis容器id
打包将项目打包成war包,具体步骤查看:idea将Spring Boot项目打包成war包 ,打包时会报错,跳过Maven打包项目时测试步骤就行了(点击Maven工具栏 ...
Spring Boot实现Redis存储session
创建项目引入依赖创建一个Spring Boot项目,引入Spring Boot DevTools、Spring Web、Thymeleaf依赖,这里是创建项目时引入,下面是创建后引入,可以创建时引入就尽量创建时引入,比较方便
项目结构
引入依赖在pom文件中添加:
123456789101112131415161718<!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.6.2</version></dependency><!-- https://mvnrepository.com/artifact/org.springframework.session/spring-session-data-redis --><d ...
Docker安装Redis
拉取镜像1docker pull redis:5
创建并运行容器只运行不进入,要创建并运行就把 -d 改为 -it ,或者使用下面的进入Redis容器命令
1docker run -d -p 6379:6379 Redis镜像id
进入容器进入容器命令行界面后就可以愉快地玩耍了
1docker exec -it Redis容器id redis-cli
Redis可视化工具下载我使用的是AnotherRedisDesktopManager,下载地址:AnotherRedisDesktopManager 发行版 - Gitee.com,Windows下载第一个,像一般软件那般安装接口
使用点击新建连接,地址填Linux服务器IP地址,端口一般都是6379,连接名称根据自己的需求填
连接成功后,就可以管理Redis了
Keepalived+Nginx+Tomcat负载均衡
启动Tomcat主机和备用机分别使用Docker启动一个Tomcat,版本号最好不同,启动成功后有可能通过外部浏览器无法访问,解决方法查看博客:Docker启动Tomcat成功后外部却无法访问
修改Nginx配置修改主机和备用机的Nginx配置,修改内容一样
修改nginx.conf配置文件(在/etc/nginx目录下),在include /etc/nginx/conf.d/*.conf上方加上:
1234upstream www.123.com{ server 192.168.0.106:8080 weight=5; server 192.168.0.107:8080 weight=10;}
修改default.conf配置文件(在/etc/nginx/conf.d目录下),在location /节点加上:
1proxy_pass http://www.123.com;
server_name可以修改成 www.123.com ,也可以不修改
重启Nginx1systemctl restart nginx
测试浏览器地址输入:http://192.1 ...