- 博客(184)
- 资源 (86)
- 问答 (8)
- 收藏
- 关注
原创 springboot admin+nacos+钉钉机器人监控不到服务上线通知问题
最近在搞admin监控时,遇到一个坑。背景是这样得,使用得事nacos做注册中心,开发了admin server服务以后,服务offline,down状态可以正常推送到钉钉,但是up状态一直监控不到,网上查了一些资料,相关说明较少,有一篇文章是说要复制NacosWatch.java,本地实现一下,因为nacos没有监听上线通知。按说明操作了,但是还是不好使。相关代码如下:NacosWatch.java/** * @ClassName: NacosWatch * @Author: shuyu.w
2020-06-03 12:34:59
3157
2
原创 springboot admin+nacos+钉钉机器人实现服务监控
nacos做为注册中心和配置中心springboot微服务集成springboot admin做服务监控钉钉机器人及时推送服务下线、上线通知摘要Spring Boot Admin是一个开源社区项目,用于管理和监控SpringBoot应用程序。 应用程序作为Spring Boot Admin Client向为Spring Boot Admin Server注册(通过HTTP)或使用SpringCloud注册中心(平台使用nacos)发现。 UI是的Vue.js应用程序,展示Spring Boot
2020-06-03 10:09:40
3999
5
原创 Docker部署springboot项目
一、架构Docker架构图Docker daemon( Docker守护进程):Docker daemon是一个运行在宿主机( DOCKER-HOST)的后台进程。可通过 Docker客户端与之通信。 Client( Docker客户端):Docker客户端是 Docker的用户界面,它可以接受用户命令和配置标识,并与 Docker daemon通信。图中, docker build...
2019-10-20 20:53:44
676
原创 Spring Boot教程十七:防止接口恶意刷新和暴力请求
在实际项目使用中,必须要考虑服务的安全性,当服务部署到互联网以后,就要考虑服务被恶意请求和暴力攻击的情况,下面的教程,通过intercept和redis针对url+ip在一定时间内访问的次数来将ip禁用,可以根据自己的需求进行相应的修改,来打打自己的目的;首先工程为springboot框架搭建,不再详细叙述。直接上核心代码。首先创建一个自定义的拦截器类,也是最核心的代码;/** *...
2019-10-13 13:28:28
12707
11
原创 剑指offer链表中倒数第k个结点
题目:输入一个链表,输出该链表中倒数第K个节点;为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第一个结点。题目分析:代码如下:public class LinkK { public static LinkNode getReciprocalK(LinkNode linkNode,int k){ //头指针 LinkNode head=linkNode...
2019-06-02 15:12:04
280
原创 剑指offer3.3 数的整数次方
题目:实现函数double Power(double base,int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。解题思路:代码如下:public class Power { public static Double powerWithUnsignedExponent(double base,int exponent){ ...
2019-05-12 18:02:56
270
原创 SpringBoot+Dubbo整合
此demo是SpringBoot中整合使用Dubbo,以及Mybaits;以达到分布式服务项目。项目结构如下图:分为三个项目,将service接口、service实现、web层分开。springboot-dubbo-api此项目为service接口层,主要放service接口、实体类、dto、枚举类、异常类等其它两个module中通用类和相关方法。springboot-dub...
2019-05-07 19:44:09
300
原创 剑指offer2.4.3位运算
题目:请实现一个函数,输入一个整数,输出该整二进制表示中1的个数。例如把9表示成2进制是1001,有2位是1。因此如果输入9,该函数输出2.代码如下:public class offer243 { public static int numberOf1(int n){ int count=0; while (n!=0){ count++; n=(n-1)&...
2019-05-04 17:15:11
237
原创 IDEA 2018.3.*本地启动tomcat项目无法设置Application content
记录一个开发中遇到的坑,在网上找了好久也没有找到相应的解决方法。旧版的idea启动web项目,在tomcat配置环节,有设置Application content的功能。我们可以设置成“/”,这样可以直接通过http://localhost:8080/访问本地服务,无需加其他前缀。但是idea到了2018.3版本以后,在配置tomcat的环节,Application content的配置找不...
2019-04-17 22:53:06
2322
1
原创 剑指offer2.3.5栈和队列
题目描述用两个栈来实现一个队列,完成队列的添加和删除操作。 队列中的元素为int类型。解题思路-代码实现public class StackToQueue { private Stack<Integer> stack1 = new Stack<>(); private Stack<Integer> stack2 = new S...
2019-04-14 20:25:33
319
原创 java开发常用注解汇总
lombok注解整理@Data 注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法@Setter :注解在属性上;为属性提供 setting 方法@Setter :注解在属性上;为属性提供 getting 方法@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j ...
2019-04-11 11:51:50
2791
2
原创 剑指offer2.3.3从尾到头打印链表
输入一个单向链表的头结点,从尾到头反过来打印出每个结点的值。解题思路:利用栈先进后出的原理,遍历链表,将数据顺序存储到栈中,然后打印出栈中所有的数据。代码实现 public static void readLinkReverse(LinkNode linkNode) { if (linkNode == null) { System...
2019-04-03 17:21:32
218
原创 八种排序算法总结
8种基本排序情况概述:1、稳定性归并排序、冒泡排序、插入排序、基数排序是稳定的选择排序、快速排序、希尔排序、堆排序是不稳定的2、时间复杂度最基础的四个算法:冒泡、选择、插入、快排中,快排的时间复杂度最小O(n*log2n),其他都是O(n2)排序法 平均时间 最差情形 稳定度 额外空间 备注 冒泡 O(n2) O(n2)...
2018-12-19 00:07:29
919
1
原创 实现自己的SpringBoot starter
在学习Spring Boot的过程中,接触最多的就是starter。可以认为starter是一种服务——使得使用某个功能的开发者不需要关注各种依赖库的处理,不需要具体的配置信息,由Spring Boot自动通过classpath路径下的类发现需要的Bean,并织入bean。 本篇将通过一个简单的例子来演示如何编写自己的starter。Starter要实现的功能,很简单,提供一个Serv...
2018-12-11 22:23:10
424
原创 Elasticsearch线程池
Elasticsearch在实际的开发使用中发现,如果每次使用都建立一次连接,那么对系统资源的消耗是巨大的,严重影响程序的性能,那么针对这种情况,我们自己实现一种线程池的,在使用时建立一次连接,然后将连接放入map中,每次使用中从map获取该连接。具体代码如下:/** * @author Shuyu.Wang * @package:com.ganinfo.utils * @clas...
2018-12-07 23:41:22
1494
原创 中介者模式
中介者模式:用一个对象来封装一系列对象的交互。中介者使各对象不需要显示的相互引用,从而使得耦合松散,而且可以独立的改变他们之间的交互。主要解决:对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应的处理。何时使用:多个类相互耦合,形成了网状结构。实例UML图:@Datapublic cla...
2018-12-05 23:58:12
199
原创 职责连模式
职责链模式:为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。意图:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。主要解决:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责...
2018-12-05 00:00:32
333
原创 命令模式
命令模式:是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适。何时使用:在某些场合,比如要对行为进...
2018-11-30 23:07:24
216
原创 桥接模式
桥接模式:是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。应用实例: 1、猪八戒从天蓬元帅转世投胎到猪,转世投胎的机制将尘世划分为两个等级,即:灵魂和肉体,前者相当于抽象化,后者相当于实现化...
2018-11-29 23:59:27
328
原创 组合模式
组合模式:将对象组合成树形结构以表示‘部分-整体’的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。透明方式:就是在component中声明所有用来管理子对象的方法,其中包括add,remove等,这样实现的Component接口的所有子类都具有add和remove,这样的好处是叶子节点和枝节点对于外界没有区别,他们具有完全一致的接口行为。但是问题也很突出,叶子节点不具有add...
2018-11-28 22:28:33
1171
原创 备忘录模式
备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原来保存的状态。应用实例: 1、后悔药。 2、打游戏时的存档。 3、Windows 里的 ctri + z。 4、IE 中的后退。 4、数据库的事务管理。实例UML图:代码实现:/** * @author Shuyu.Wang * @package:com....
2018-11-28 13:18:14
193
原创 适配器模式
适配器模式:将一个类的接口转换成客户希望的另外一个接口,适配器模式让原来由于接口不兼容而不能一起工作的那些类可以一起工作。 使用场景,系统的数据和行为都正确,但接口不符合,我们应该考虑用适配器类,目的是使控制范围之外的一个原有对象与某个接口匹配,适配器模式主要应用于希望复用一些现存的类,但是接口与复用 环境要求不一致的情况。主要解决:主要解决在软件系统中,常常要将一些"现存的对象"...
2018-11-25 23:38:23
166
原创 状态模式
状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是的当控制一个对象状态转换的条件表达式过于复杂时的情况,把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。好处:消除庞大的条件分支语句,将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。通常命令模式的接口中只有一个方法。而状态模式的接口中有一个或者多个...
2018-11-25 22:27:20
188
原创 迭代器模式
迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部元素;为遍历的对象提供一个如开始、下一个、是否结束、当前哪一项等统一的接口。优点: 1、它支持以不同的方式遍历一个聚合对象。 2、迭代器简化了聚合类。 3、在同一个聚合上可以有多个遍历。 4、在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。缺点:由于迭代器模式将存储数据和遍历数据的职责分离...
2018-11-22 23:19:04
226
原创 单例模式
单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例,这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问改实例的方法;实现:代码实现:懒汉试,线程不安全/** * @author Shuyu.Wang * @package:...
2018-11-22 22:20:48
171
原创 观察者模式
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。何时使用:一个对象(目标对象)...
2018-11-20 23:43:06
174
原创 建造者模式
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时适用的模式。Builder:是为创建一个product对象...
2018-11-19 23:48:35
116
原创 外观模式
外观模式:为子系统中的一组接口提供一个一直的界面,此模式定义一个高层接口,这个接口使得这个子系统更加容易使用。什么时候使用:首先,在设计初期阶段,应该有意识的将不同的两个层分离,降低耦合性;其次,子系统往往会变得越来越复杂,增加外观Facede可以提供一个简单的接口,减少他们之间的依赖。第三,维护一个遗留的大型系统是,可能这个系统已经难以维护和扩展了,但是新的开发需求还要依赖于它,此时使用外观...
2018-11-18 23:13:07
161
原创 模板模式
模板模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板模式可以使得子类可以不改变一个算法的结构就可以重新定义改算法的某些特定的步骤。当我们要完成在某一细节层次一致的一个过程或一系列步骤,单其个别步骤在更详细的层次上的实现可能不同时,我们通过开率用模板方法模式来处理。 模板模式是通过把不变行为搬到父类,去除子类中的重复代码来提现他的优势。模板模式提供了一个很好的代码复用平台...
2018-11-17 23:24:29
173
原创 原型模式
原型模式:用原型实例指定创建指定对象的种类,并且通过复制这些原型创建新的对象,同时又能保证性能。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。注意:如果字段是值类型的,则对该字段执行逐位复制,如果字段是引用类型,则复制引用但是不复制引用的对象,因此,原始对象及其复本引用同一对象。潜复制:被复制对象的所有变量都含有原来的对象相同的值...
2018-11-17 00:01:38
148
原创 工厂模式
简单工厂模式最大的有点在于工厂类里包含了必要的逻辑判断条件,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。但是这违背了开放-封闭原则。工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂主要解决:主要解决接口选择的问题。何时使用:我们明确地计划不同条件下创建不同实例时。如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品。...
2018-11-14 00:23:26
846
原创 代理模式
代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。 代理分类: 1:远程代理,就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。 2:虚拟代理,根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象。这样可以达到性能优化的目的,比如你打开一个很大的HTML网页,里面有很多文字和图片,但是你可以很快的...
2018-11-12 22:42:59
888
原创 装饰器模式
装饰器模式是为已有的功能动态添加更多功能的一种方式。他把每个要装饰的功能放在单独的类中,并让这个类包装他要装饰的对象。因此,当需要执行特殊行为时,客户代码就可以根据需要有选择的、按顺序的使用装饰功能包装对象了。意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着...
2018-11-09 23:40:39
2321
原创 策略模式
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决:在有多种算法相似的情况下,使用 if......
2018-11-08 17:51:56
2051
原创 java设计模式教程
使用设计模式能够增加系统的健壮性,易修改性和可扩展性,当你进行开发的软件规模比较大的时候,良好的设计模式会给编程带来便利,让系统更加稳定,这些在自己编写小程序的时候是体现不出来的。现在大多数框架都使用了很多设计模式,正是因为有了这些设计模式,才能让程序更好的工作,例如烟水晶框架的单例模式,struts的mvc模式,java类库中iterator的迭代器模式等等,都是设计模式良好的应用。自己在写代码...
2018-11-07 21:26:54
2538
原创 简单工厂模式
从今天开始,我们来学习java的设计模式;简单工厂模式又称静态工厂模式,她不属于23种模式之一,我们从它开始一步一步开始我们的设计模式之路。它属于类创建模式,根据需求,我们可以根据传入的参数来返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂模式包含如下角色: 工厂角色(Creator) 是简单工厂...
2018-11-07 14:44:56
3664
原创 Spring Boot教程十六:SpringBoot注入类实现多线程
在使用springboot框架开发的过程中,难免也会用到多线程业务处理的需求,如果是普通的类实现多线程,那使用我们上一篇文章中的方法就足够了。但是大部分的使用环境是是我们需要将一个注入容器的实例类实现多线程,比如业务中要操作数据库调用其他方法等都难免要引用其他的实例。但是spring中的实例默认是单例的,针对这种情况我们应该怎么实现多线程呢,下面给大家用demo详细解释一下: 在spri...
2018-11-02 16:34:39
13543
2
原创 Mysql查询当前数据库有哪些事务、都锁定哪些资源
SELECT trx_id AS `事务ID`, trx_state AS `事务状态`, trx_requested_lock_id AS `事务需要等待的资源`, trx_wait_started AS `事务开始等待时间`, trx_tables_in_use AS `事务使用表`, trx_tables_locked AS `...
2018-11-01 14:14:47
11914
原创 Spring Boot教程十五:多线程
实际的开发应该开发过程中,经常需要使用到多线程,而且大多时候需要获取到每个线程执行的结果,然后再执行剩下的业务逻辑。具体实现如下;pom文件引用: <dependency> <groupId>com.google.guava</groupId> <artifactId>guava&...
2018-10-28 20:27:03
16899
SSM进阶3(Spring+SpringMVC+Mybatis)
2017-06-28
SSM进阶2(Spring+SpringMVC+Mybatis)
2017-06-27
SpringMVC事务管理
2017-06-25
Maven SpringMVC进阶
2017-06-12
java redis demo
2017-06-02
java 反编译工具(jar)
2017-05-08
Java+MySQL+redis缓存
2016-12-18
springMvc(注解)
2016-11-08
Spring+SpringMvc+Mybatis
2016-10-25
MyBatisCodeHelper插件破解版
2018-12-12
windows下搭建redis集群工具
2017-10-26
idea 鼠标悬浮到引用的类或者方法上提示注释不完整
2019-05-07
feign使用中遇到的问题
2018-03-17
Springboot admin监控
2018-03-13
springboot admin和springcloud配合使用
2018-03-13
springboot main方法启动报错
2017-11-22
Java数据库操作方式还有哪些
2016-12-18
log4j配置日志第二天不自动保存
2016-11-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人