RabbitMq 消息队列
一、为什么使用消息队列解耦、异步、削峰
1.1 解耦看这么个场景。A 系统发送数据到 BCD 三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃……
在这个场景中,A 系统跟其它各种乱七八糟的系统严重耦合,A 系统产生一条比较关键的数据,很多系统都需要 A 系统将这个数据发送过来。A 系统要时时刻刻考虑 BCDE 四个系统如果挂了该咋办?要不要重发,要不要把消息存起来?头发都白了啊!
如果使用 MQ,A 系统产生一条数据,发送到 MQ 里面去,哪个系统需要数据自己去 MQ 里面消费。如果新系统需要数据,直接从 MQ 里消费即可;如果某个系统不需要这条数据了,就取消对 MQ 消息的消费即可。这样下来,A 系统压根儿不需要去考虑要给谁发送数据,不需要维护这个代码,也不需要考虑人家是否调用成功、失败超时等情况。
总结:通过一个 MQ,Pub/Sub 发布订阅消息这么一个模型,A 系统就跟其它系统彻底解耦了。
1.2 异步再来看一个场景,A 系统接收一个请求,需要在自己本地写库,还需要在 BCD 三个系统写库,自己本地写库 ...
MySql 主从复制
MySql 主从复制主要介绍mysql 主从复制是一个异步的复制过程,底层是基于mysql数据库自带的二进制日志功能。就是一台或多台Mysql数据库(slave从库)从另一台(master主库)进行日志的复制然后再解析日志并应用到自身,最终实现从库数据与主库数据保持一致。mysql主从复制是mysql自带功能,无需借助第三方工具
mysql复制过程主要分三步:
1.master将改变记录到二进制日志(binary log)
2.slave 将master的二进制日志 拷贝到它的中继日志(relay log)文件中
3.slave重做中继日志中的事件,将改变应用到自己的数据库中
配置过程:1.准备两个服务器master: 192.168.31.128slave: 192.168.31.127
2.配置主服务器master1.进入my.cnf文件, vim /etc/my.cnf 添加以下内容:
log-bin=mysql-bin # 启用二进制日志server-id=128 # 服务器唯一ID,可以任意设置,但必须唯一
binlog-ign ...
Java SpringBoot常见面试问题
常见SpringBoot面试问题1.介绍下SpringBoot答: Spring Boot就是一个java web的开发框架,与 MVC类似,对比其他java web框架的好处,官方说是简化开发,约定大于配置, you can “just run”,能迅速的开发web应用,几行代码开发一个http接口。SpringBoot它是基于Spring创建的一个上层应用级框架。从14年发布1.0版本 ,17年发布2.0版本。它比以前那种SSSM框架,基于配置的开发更为高效
2.SpringBoot有哪些优点答:
• 独立运行,内嵌式容器简化Web项目• 开箱即用,提供各种默认配置来简化项目配置• 自动配置• 没有冗余代码生成和XML配置
• 自带Actuator应用监控
3.SpringBoot中核心注解答:
1.@SpringBootApplication
它是一个组合注解.里面包含@SpringBootConfiguration ,@EnableAutoConfiguration ,@ComponentScan 三个注解
2.@ComponentScan
自动扫描当前包及子包下被@Co ...
Linux下 安装Ngnix方法及配置
Linux下 安装Ngnix方法及配置1.Ngnix下载安装
安装相关依赖
yum -y install gcc zlib-devel pcre-devel openssl openssl-devel
使用wget 下载 ,若没安装(yum install wget)
cd /usr/localmkdir nginxcd nginxwget http://nginx.org/download/nginx-1.16.1.tar.gz//解压
tar -zxvf nginx-1.16.1.tar.gz
//指定安装位置
./configure –prefix=/usr/local/nginx
//编译与安装
make && make install
2.Ngnix 目录结构
–conf /nginx.conf nginx配置文件
–html 存放静态文件(html,css,js等)
–logs 日志目录 存放日志文件
– ...
HtmlUnit 获取抖音无印视频
Java获取抖音无印视频
有时候,想下载抖音里的视频 有权限或者有水印。这篇文章可以教你怎么下载抖音无印视频
复制分享链接 url 和 抖音API获取视频信息接口 如下:
12String url = "4.61 Nws:/ 复制打开抖音,一起来回顾2016年骑士夺冠时刻# nba# 骑士# 詹... https://v.douyin.com/j472ue4/";String API = "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=";
定义正则匹配https://后面链接地址 :https://v.douyin.com/j472ue4/
1234567 String regex = "https+://[^\\s]*"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(url); String baseUrl = "";whil ...
Java 生成数据库表结构文档
Java 生成数据库表结构文档工作需要熟悉表结构或书写数据字典开发文档,此时可以使用Screw+HikariCP实现生成数据库文档Mysql数据库生成:引入依赖包:
1234567891011121314151617181920<dependencies> <!-- Screw Core --> <dependency> <groupId>cn.smallbun.screw</groupId> <artifactId>screw-core</artifactId> <version>1.0.2</version> </dependency> <!-- HikariCP --> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> ...
Java Stream流式处理集合-去重排序分组转换操作
Java Stream流式处理集合 去重排序分组转换操作 工作中Stream流操作集合 很方便快捷,以下是记录常用的去重排序分组转换操作
去重1.首先使用Integer 和String 类型集合 进行操作 代码如下:
123456789101112131415161718//定义两组数据类型集合List<Integer> integers = Arrays.asList(12, 13, 5, 4, 6, 6, 8);List<String> strs = Arrays.asList("12", "23","3","a","8","3","a");//数据去重integers.stream().distinct().forEach(System.out::println);strs.stream().distinct().forEach(System.out::println);//数据排序 默认正序integers.st ...
使用HtmlUnit 爬取网站壁纸资源
HtmlUnit 爬取网站壁纸资源当你想一些资源又无从找时,那么就可以在别人网中爬取。OωO
HtmlUnit 官方简介:
HtmlUnit 是“Java 程序的无 GUI 浏览器”。它对 HTML 文档进行建模并提供一个 API,允许您调用页面、填写表单、单击链接等……就像您在“普通”浏览器中所做的一样。
它具有相当好的 JavaScript 支持(不断改进),甚至能够使用相当复杂的 AJAX 库,根据使用的配置模拟 Chrome、Firefox 或 Internet Explorer。
它通常用于测试目的或从网站检索信息。
总之 htmlunit可以模拟浏览器执行,不会正真打开一个浏览器界面,是webdriver的轻量级实现。 可用于获取网站信息。
相比其他java中支持爬虫的框架(WebMagic、Spider、Jsoup),HtmlUnit运行速度快,操作元素API丰富。官方API文档
爬取乌云高清壁纸站 风景壁纸类壁纸1.创建WebClient浏览器:
123//无参构造创建 默认使用谷歌浏览器 WebClient webClient = new WebClient() ...
Java 菲波那切数列之递归迭代算法求值
斐波那契数列,又称黄金分割数列,以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、55 、……数列从第3项开始,每一项都等于前两项之和。求该数列的第N项数值
1.递归方法递归重要的规则:当满足一定条件时 需要终止递归调用。否则陷入调用死循环
此数列 当x=1 或 x=2 时 可以当做满足 跳出递归条件
123456//x 表示第几个数f(x)=f(x-1)+f(x-2) f(x-1)=f(x-2)+f(x-3)f(x-2)=f(x-3)+f(x-4)......当x-n=1 或 2时 直接返回1
代码如下:
1234567publix static int t1(){ if (x == 1 || x == 2) { return 1;}return t1(x - 1) + t1(x - 2);}}
2.迭代方法如:
1 1 2 3 5 8 m n result=m+n1 result = m+n = 0+ ...
Linux 防火墙常见操作命令
Linux 防火墙操作查看防火墙状态systemctl status firewalld
开启防火墙systemctl start firewalld
关闭防火墙systemctl stop firewalld
永久关闭防火墙systemctl disabled firewalld
开放指定端口123firewall-cmd --zone=public --add-port=8080/tcp --permanent
命令含义: –zone #作用域
–add-port=8080/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
关闭指定端口1234firewall-cmd --zone=public --remove-port=8080/tcp --permanent##### 查看开放的端口
1firewall-cmd --zone=public --list-ports
重新加载防火墙配置12firewall-cmd --reload
查看端口号netstat -ntlp & ...





