自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小道仙的后宫

快节奏,慢生活。

  • 博客(413)
  • 资源 (6)
  • 论坛 (3)
  • 收藏
  • 关注

原创 Redis集群之主从、哨兵、分片集群,SpringBoot整合Redis集群

在我看来主从集群和哨兵这都不能算是真正的集群,只有Redis集群模式才是真的集群。 可能看到这么说大家会很疑惑,那么请看下面相信你一定会有所获。Redis集群中文文档之前一直担心搭建集群虚拟机内存不足,搭建完发现6个Redis只用了0.1G内存文章目录一、主从集群二、哨兵集群2-1、哨兵的作用2-2、哨兵原理三、分片集群3-1、分片集群简单理解3-2、分片集群深入理解3-3、Redis集群图3-4、其它补充三、集群搭建3-1、环境准备3-2、配置文件修改3-3、启动全部的redis3-4、.

2021-04-27 22:31:04 51

原创 SpringCloud Alibaba入门篇

上一篇博客我们对SpringCloud有了一个详细的描述,这一次我们根据上次的理念来一个落地实现。SpringCloud微服务详解(springcloud alibaba)本篇博客的架构图如下文章目录一、前期准备1-1、创建一个父工程1-2、创建公共pom二、创建一个服务提供方(用户服务)2-1、创建项目2-2、修改pom2-3、新增yml配置文件2-4、新增启动类文件2-5、新增用户服务2-6、测试三、注册中心(nacos)3-1、下载3-2、启动3-3、用户服务注册进nacos四、网关 (g

2021-04-17 20:51:56 2304 9

原创 自定义微信公众号客服,微信客服1.0(及时通信)

先来看看效果图,图片大小受限,只展示聊天部分,更多效果请看视频文章目录一、准备1-1、映射外网工具1-2、一个测试微信号1-3、MySql数据库二、启动项目三、视频讲解四、文字讲解4-1、xml解析4-2、异步处理4-3、主要的业务逻辑4-4、其它业务逻辑4-4-1、WebSocket4-4-2、WxHandler4-4-3、MsgController4-4-4、SessionController4-4-5、UserController一、准备1-1、映射外网工具微信公众号和我们代码之前交互

2021-03-28 18:32:08 49

原创 第一个开源并且打算长期维护的小程序

B站地址:https://www.bilibili.com/video/BV1q54y1U7vXGitHub地址: https://github.com/xdxTao/amnesia如果觉得不错的话,可以给我一个start嘛?有问题可以联系我

2020-08-24 13:42:40 118

原创 IDEA查看历史记录【文件历史和项目历史】

有时候我们写代码发现修改之前的代码才是正确的,如果重写又感觉麻烦,我们可以使用IDEA工具查看文件历史版本最近因为GIT冲突,导致我还没上传的文件没了,这时候我们可以查看项目的历史记录,然后恢复。...

2021-04-28 13:19:05 52

原创 Java进阶之单点登录详解

之前对单点系统这几个字还挺敬畏的,也有点害怕,来公司很久了系统也一直使用单点登录,但是一直没有时间和机会研究,近来研究一下发现不过尔尔。文章目录一、前言1-1、何为单点1-2、架构图1-3、其它二、单点详解2-1、用户请求2-2、前端跳转登录页面2-3、页面登录2-4、业务系统login接口三、其它一、前言1-1、何为单点我们知道每个系统都应该有登录操作,如果你们有10个系统,并且这十个系统的用户都在一个集合里面的(常见的比如集团用户),那么你让用户注册10次记录10个密码,也对用户不友好也对代

2021-04-23 13:30:05 20

原创 SpringCloud微服务详解(springcloud alibaba)

文章目录一、前言二、架构图三、过程详解3-1、服务的调用方3-2、负载均衡(Nginx)3-3、网关3-4、注册中心3-5、服务负载均衡调用3-6、服务提供方3-7、服务熔断、降级、监控3-7-1、熔断3-7-2、降级3-7-3、监控3-8、统一配置文件3-9、分布式事务一、前言截止目前来说微服务架构算是Java程序员的最后一站了(就我所理解是这样的)。初学者对它会有些恐惧,它的架构图很复杂,也很庞大,但只要你明白了其中的逻辑,代码的编写就不那么难了,就像写代码最难的是不知道写什么,并不是怎么写,这篇文

2021-04-11 14:52:02 143

原创 Nginx负载均衡当其中一台服务器挂掉之后,Nginx负载将会怎样呢?

之前写过Nginx负载均衡的配置,详情可以看这里 Nginx实现负载均衡Linux版本(六种负载策略)今天来探讨一下当我们有多台服务的时候,其中一台服务挂掉了会怎么样呢?我们使用上文中的思路去搭建一个简单的负载均衡,然后关闭其中一台再来访问,会发现我们的浏览器卡住一直转圈圈,过了很久才会显示结果。由此我们可以得出结论Nginx负载的时候如果其中一台服务挂掉了,它会把请求转发到另一个可以提供服务的机器,其中这之间的超时等待默认是60s我们可以通过这一个配置去改变这个时间(proxy_conne.

2021-04-01 20:02:46 377 1

原创 MySql分组查询规则

思考一下假如你有一个这样的需求 有一张账单表(bill_detail),一张开票表(open_invoice)每一个用户有三种费用类型,分别是水费、污水费、违约金。(分别对应cost_type = 01、02、03)现在要查询每个用户的欠费总额,和是否开票。(注:只有水费可以开票,其它的不需要)账单表(bill_detail)CREATE TABLE `bill_detail` ( `id` VARCHAR(50) NOT NULL COMMENT 'id', `cost_type`.

2021-03-30 14:40:24 51

原创 MySql关键字GROUP_CONCAT,组合连接查询

一、试着想一下如果有这样一个需求应该怎么去做:有一张学生表,和一张分数表。要查出每个学生姓名和分数,分数以逗号隔开eg:张三 80,90,100这个需求很简单,有很多种办法来解决,最简单的是我们可以先查询学生,然后再去查询分数,最后由程序代码组装。学生表(stu)idname1张三2李四3王五分数表(course)idnamestu_idscore1语文1802数学1903英语175

2021-03-25 15:09:01 25

原创 MySql分表设计,Java分表设计

文章目录一、前言1-1、什么时候需要分表呢?1-2、分表的规则是什么呢?1-2-1、分表前后1-2-2、其它二、举例场景三、实现分表功能3-1、数据的增删改3-2、数据的查询3-3、自动创建表3-4、其它一、前言1-1、什么时候需要分表呢?这个其实就很简单了,就是当表数据太大的时候,一个表里面存储不下,或者存储后影响使用(比如数据多的时候就影响查询效率)1-2、分表的规则是什么呢?一般来说我们都是根据数据量来分表的,数据存储是为了后面使用,所以我们表名也应该清楚明了。我们可以根据数据量分为、天

2021-03-09 19:51:53 52 1

原创 你真的懂hashCode和equals吗???

前言今天还在感概说,可能三年后我的简历和刚毕业那会没啥区别,因为现在已经毕业快一年了,上次重写简历除了多了两个项目经验外没啥区别,而简历上面的技术我还需要好久才能掌握。一、关于hashCode和equals我们知道下面几点hashCode相同的两个对象不一定相同equals相同的两个对象,hashCode一定相同重写equals一定要重写hashCode其它的== 比较的是两个对象的内存地址值equals比较的是两个对象里面的值是否相同,没有重写的equals和==一样二、ha

2021-03-03 17:28:37 45

原创 超好用的Java反编译工具jd-gui【Java反编译工具】

有时候我们需要对已经打包好的jar包进行查看,这里推荐一个好用的工具jd-gui,无需安装,打开后直接把jar包拖动进去即可。效果演示关注微信公众号回复:jd-gui

2021-02-28 17:04:56 34

原创 Idea插件,MyBatis Log Plugin,自动生成完整的sql

我们在使用MyBatis的时候,打印出来的sql都是sql本体和参数分离,一两个参数倒也还好,参数多了复制起来就很麻烦了,使用插件MyBatis Log Plugin 可以完美解决这个问题。重启IDEA后的操作如下:...

2021-02-28 16:51:41 149

原创 微信公众号接入自己的客服系统,自定义客服系统

微信公众号客服功能对接(微信自己的客服系统)

2021-02-25 19:25:52 188

原创 RocketMQ单机版详解,事务消息、顺序消息、转换消息、可回复消息等

文章目录一、说明1-1、安装和快速测试1-2、下面的代码使用的版本1-3、相关文档二、RocketMQ组件2-1、封装RocketMQTemplate2-2、生产者(Producer)2-3、消费者(consumer)2-3-1、push消费2-3-1-1、获取不需要返回值的消息2-3-1-2、获取需要返回值的消息2-3-2、pull消费2-3-2-1、默认的消费者2-3-2-2、自定义消费者2-3-2-3、其它2-3、发送消息2-3-1、普通消息2-3-2、可接受回复的消息2-3-3、单向消息2-3-4、

2021-02-20 15:33:10 98

原创 Nginx负载WebSocket

一、安装Nginxwindow10安装nginx【1.8.1版本】CentOS7 安装 nginx 选择一个安装即可。二、Nginx配置文件修改map $http_upgrade $connection_upgrade { default upgrade; '' close;}upstream xdx97.com { server 127.0.0.1:1997; server 127.0.0.1:1998;}server { listen 8089; location

2021-02-04 14:22:30 44

原创 window10安装nginx【1.8.1版本】

一、下载去nginx网站上面下载一个版本下来,我下载的是1.8.1http://nginx.org/en/download.html二、安装解压后把它拖动到你喜欢的文件目录下2-1、2-2、2-3、在浏览器中输入 http://127.0.0.1, 然后你就可以看到下面的nginx欢迎页面。如果访问不了,很可能是80端口被占了,我们去修改nginx的配置文件再次访问我们的新端口就可以看到了三、常用命令开启nginxstart nginx.exe关闭ng

2021-02-04 14:19:54 58

原创 MySql左连接(left join)无法全部查询出来问题

今天在写一个sql的时候,碰到一个知识盲区,也是我对 left join 理解的错误。一、表结构学生表CREATE TABLE stu ( `id` varchar(50) NOT NULL COMMENT '主键ID', `name` varchar(50) NOT NULL COMMENT '学生姓名', PRIMARY KEY (`id`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生表';课.

2021-02-01 20:07:17 320

原创 基于WebSocket实现Web端聊天系统【Vue+SpringBoot】

最终效果如下:github地址:如果对你有帮助,点个start,谢谢。可以关注我的微信公众号,一个有趣的程序员。微信搜索:小道仙97一、WebSocket概述一般我们前后端交互都是使用http,http是前端发起一个请求,然后后端回复。它的特点就是前端发起请求后端返回数据,一次交互就没了。 而我们在聊天的时候,A给B发送了一个消息,我们后台接收到了消息然后主动推送给B去显示。 websocket是一个双向通信的协议,前后端都可以主动的去发送消息。二、代码websocket

2021-01-20 16:58:53 175

原创 Git使用命令删除分支

1、查看本地全部的分支git branch2、删除master分支git branch -D master3、查看远程分支git branch -r4、删除远程分支 git push origin -d master

2020-12-31 14:58:29 55

原创 Java全局异常处理

为了避免错误直接抛出去给用户,我们一般都是try catch 处理。但是存在这样一个问题,我们try catch 捕获了,这时候系统就不会回滚了,我们需要手动回滚。如果我们一个新增方法出现了异常,我们想给用户提示一个系统异常,但是这之前我们知道某个异常是要给用户明确提示的,比如该用户缺少手机号。一、使用try catch的方式解决上面的问题@RestControllerpublic class TestController { private Logger log = Logger.

2020-12-30 20:01:56 100

原创 Nginx实现负载均衡Linux版本(六种负载策略)

一、负载均衡介绍所谓负载均衡,就是我的一个后台可能只能承受100个访问量,但是最高访问量有150个,这时候怎么办呢?我们可以再加一个服务,让这两个服务以某种算法去分摊请求,这样我们的服务就不会被击垮了。之前我们的请求都是直接访问我们提供服务的服务器,现在我们在前面加一个nginx,让所有的请求先请求nginx,然后nginx再决定具体的去访问那个服务器。二、负载均衡搭建2-1、准备两个服务我这里使用SpringBoot创建两个项目,在资源文件夹里面创建一个resources/static/in

2020-12-28 21:53:18 67

原创 SpringBoot实现SpringAop,AOP实现日志

关于什么是AOP,AOP用来做什么,AOP里面的两种代理这里都不做讨论。本文只是在应用的层面去讲解AOP一、关于AOP里面的一些概念Joinpoint(连接点): 类里面可以被增强的方法,这些方法称为连接点Pointcut(切入点):所谓切入点是指我们要对哪些Joinpoint进行拦截的定义Advice(通知):所谓通知是指拦截到Joinpoint之后所要做的事情就是通知.通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能)Aspect(切面): 是切入点和通知(引.

2020-12-20 19:01:00 77

原创 git冲突解决,代码冲突、合并冲突。【IDEA版本】

其实所谓的冲突就是同一个文件同时被多个人修改了,导致git服务不知道要保存谁的。一、同一个版本冲突解决1-1、当我们正常拉取代码的时候,结果是这样的。1-2、如果有冲突的时候,将是这样的解决冲突的办法也有很多种选择自己的代码,也就是不要别人的,保留自己的。(Accept Yours)选择别人的代码,也就是不要自己的,保留别人的。(Accept Theirs)合并你们的代码,然后自己去手动解决冲突对于我们熟悉的代码,我们可以选择保留别人或者自己的,但是一般我们都是选择合并,然后手动.

2020-12-18 17:07:41 95 1

原创 IDEA启动项目Build很长时间~

有一个项目每次启动都要build很长时间,最开始还可以忍着,后面十几分钟都不行。其它项目都是正常的,只有这一个项目是这样的,也找不到原因,准备删掉从git上面拉取,结果发现 target文件夹无限大删掉target文件夹启动立马快速了~~~...

2020-12-16 19:24:39 1029

原创 Linux开启定时任务,定时备份MySql数据

一、编辑定时任务为了直观的体现定时任务,这里模拟一个简单的场景,就是每次往一个txt文件里面添加数据1-1、准备一个txt文件touch /xdx/xdx.txt1-2、准备一个追加信息的命令echo "hello word" >> /xdx/xdx.txt1-3、写到定时任务里面去vim /var/spool/cron/root 把下面的这个命令写进去,前面是定时任务执行的频率,现在配置的是每分钟执行一次。*/1 * * * * echo "hello word"

2020-12-09 16:47:26 61

原创 Git分支问题

最近有这么一个需求:本来有一套代码,给A公司部署好了,现在要给B公司部署一份,但是B公司会有一些不一样的东西。(下面称为A代码,B代码)这个问题苦恼了我许久,毫无疑问最先想到的就是创建一个新的分支就好了。但是这样后面会有一个问题:如果我要修改一些公共的代码怎么去解决呢?如果按照上面的拉取一个分支,其实和新建一个项目没啥区别,后面如果修改了代码基本上没办法去合并,因为你总会冲突,只要改过同一个文件就会冲突。这个问题直到现在也没能有一个万全之策,目前我的解决办法是:前端加权限,后端新增文件。前端定义.

2020-12-05 19:10:10 139

原创 SpringBoot多线程,线程池讲解

一、默认线程当我们开启一个SpringBoot的项目,我们并未设置任何和线程相关的操作,但是我们的程序还是可以执行多个请求。甚至说绝大多数的项目,我们不需要对线程这块做任何操作。但是如果是单线程的话,它显然满足不了我们系统的需求,所有我们有必要了解一下,它默认的线程情况。1-1、测试默认线程池import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotati

2020-12-05 18:38:55 283

原创 Idea回退commit

idea我commit了,但是还没有push,这时候我发现commit错了,需要撤回commit

2020-12-01 14:13:37 248

转载 spring boot 中@Mapper和@Repository的区别

一、相同点它们都是用来标识dao层的注解,作用也是一样的。import org.springframework.stereotype.Repository;import org.apache.ibatis.annotations.Mapper;二、不同点@Mapper: 单独使用,通过xml里面的namespace里面的接口地址,生成了Bean后注入到Service层中。@Repository: 配合 @MapperScan 注解一起使用。import org.mybatis.sprin

2020-11-26 16:34:11 186

原创 SpringBoot整合Redis附带视频源码

一、环境Linux下安装Redis1-1、SpringBoot 2.2.01-2、JDK 111-3、spring-boot-starter-data-redis 2.2.0<!--Redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</arti

2020-11-22 20:00:29 125

原创 SpringBoot自定义异常

为什么要自定义异常呢?已有的异常,我们无法更改它的信息(比如我们无法添加一个异常code),并且已有的异常是所有人都在用的异常,我们不好对它进行拦截特殊处理。一、自定义异常

2020-11-17 19:03:16 152

原创 SpringBoot整合Mybatis和MyBatisPlus

SpringBoot的版本是2.2.0一、整合Mybatis1-1、引入pom文件 <!-- MySQL 连接驱动依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.19</version> </depende.

2020-11-17 19:01:22 326 2

原创 SpringBoot日志框架之使用logback作为日志框架

一、前言1-1、slf4j log4j logback 的区别可以理解成slf4j相当与List,而log4j相当于arrayList,logback相当于linkedList。也就是slf4j是一个日志接口,具体日志实现交给其它的框架。1-2、为什么要使用logback来实现日志呢log4j和logback都是出自一个人之手,而且logback是后面出来的,它各方面性能更好,所以我们新的项目可以直接使用logback。SpringBoot默认使用的日志框架就是logback,我们在Spri

2020-11-17 18:59:26 140

原创 SpringBoot搭建文件服务器

1、代码实现 FileUtilspackage com.xdx97.frame.common.utils;import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletResponse;import java.io.*;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLCon

2020-11-08 20:42:11 397

原创 Sql一对多关联最新的一条数据

我们有如下表结构,一个是用户表,一个是记录表,一个用户会有多条记录,现在我们需要去查询出来每个用户的信息和最新的操作记录(这里以id值最大为最新的)CREATE TABLE `record` ( `id` int(11) NOT NULL, `u_id` int(11) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;C

2020-11-08 17:35:41 354

原创 SpringBoot定时任务,@Async多线程异步执行

一、使用SpringBoot实现定时任务这个不是重点,就简单的实现一下,至于cron表达式怎么写也不是重点,自行百度即可。1-1、基于 @Scheduled 注解的方式import org.springframework.scheduling.annotation.EnableScheduling;import org.springframework.scheduling.annotation.Scheduled;import org.springframework.stereotype.Co

2020-10-28 14:38:50 429

原创 从GitLab拉取代码(不同分支拉取)

一、安装githttps://blog.csdn.net/Tomwildboar/article/details/82312646二、配置SSHhttps://blog.csdn.net/Tomwildboar/article/details/82313476三、拉取代码1、创建一个空文件夹,然后进去右键选择git bash输入下面的代码git clone xxxxxxxxxx 来自下面的截图如果你要拉取的是master分支那么你已经好了其它分支,我们需要关闭当前的git bash

2020-10-15 17:11:21 1186

原创 移动MAS发送短信,接受状态和接受回复【HTTP】

移动MAS短信平台就是一个发送短信的平台,可以发送普通短信、模板短信、一对一,一对多等短信 下面主要是基于Java实现短信的下行(发送)上行(接受)和接受短信状态

2020-10-11 17:18:17 759 1

okio-1.6.0.jar

内容如标题所示。 用七牛云上传文件异常。可以用此包

2018-08-14

java上传文件到七牛云需要的jar

此包是java上传七牛云所需要的官方jar包,从七牛云文档上copy的代码加上此包,直接使用

2018-08-14

表单校验-validate

此包里面有,validate的详细文档,和相对应的js包。也有我自己写的关于validate的校验规则,和自定义校验(判断用户名是否存在)。

2018-05-12

mybatis-generator-gui-0.9.0

window界面版,代码生成器。最简单的代码生成器,资源共享

2019-03-22

springmvc实现上传文件到七牛云

此包包含了springmvc单独运行的jar包,和java上传文件到七牛云的jar包

2018-08-14

hibernate基本配置

本资源,是hibernate配置的基本资料,因为写了个关于hibernate基本配置的博客,为了方便读者操作,便一同公布这个配置资料。

2018-06-14

小道仙的留言板

发表于 2020-01-02 最后回复 2020-03-15

为什么的我排名很久就没有动过了?

发表于 2018-08-19 最后回复 2019-12-09

难道博客不是写作的?不然编辑器为什么这么恶心?

发表于 2018-01-23 最后回复 2018-01-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除