自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(94)
  • 收藏
  • 关注

转载 Spring中的InitializingBean接口的使用

InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候都会执行该方法。测试,如下:import org.springframework.beans.factory.InitializingBean;public class TestInitializingBean impleme...

2020-01-21 14:24:16 394

转载 浅谈Spring之@Nullable、@NonNull注解

@NonNull可以标注在方法、字段、参数之上,表示对应的值不可以为空 @Nullable注解可以标注在方法、字段、参数之上,表示对应的值可以为空以上两个注解在程序运行的过程中不会起任何作用,只会在IDE、编译器、FindBugs检查、生成文档的时候有做提示;我使用的IDE是STS,不会做自动的检查,只有安装了FindBugs插件并运行后会做对应的提示...

2020-01-21 14:14:01 467

转载 Spring RootBeanDefinition,ChildBeanDefinition,GenericBeanDefinition

RootBeanDefinition,ChildBeanDefinition,GenericBeanDefinition均继承了AbstractBeanDefiniton,其中BeanDefinition是配置文件<bean>元素标签在容器中内部表示形式。<bean>元素标签拥有class、scope、lazy-init等配置属性,BeanDefinition则提供了相应的...

2020-01-21 14:12:04 687

转载 @PostConstruct

原文地址@PostConstruct注解好多人以为是Spring提供的。其实是Java自己的注解。Java中该注解的说明:@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。Construc...

2020-01-15 20:20:16 131 1

转载 ExceptionHandler运行机制分析

原文地址ExceptionHandler是如何触发的ExceptionHandler是spring里面的一个注解,非常方便去掉try...catch这类冗余难看的代码,有利于代码的整洁和优美。还能统一处理异常,是个非常好的技巧。下面以我写的一个最简单的工程来说明ExceptionHandle是如何工作的。一共4个类:1、springboot的启动类DemoApplication...

2020-01-12 14:20:39 645

原创 Collections.emptyList() 和 Collections.EMPTY_LIST的区别

/** * 调用方法list.isEmpty(),list.size()方法,返回值都一致 * Collections.emptyList()返回的是范型的空集合,内部调用的Collections.EMPTY_LIST做范型转换 * Collections.EMPTY_LIST返回的是空集合 * Collec...

2020-01-10 10:48:48 456 1

转载 ReflectionToStringBuilder的使用分析与优化

原文地址昨天看视频无意间看到这个工具,终于不用重写toString方法了。相对于toString方法,代码简洁 , 无须任何配置, Model 属性变化 , 无需修改 toString缺陷:安全性问题 , 反射私有属性值也会暴露 .为了防止暴露,我们可以重写accept方法,剔除不想暴露的属性。改进:利用ToStringBuilder弥补(通过 ReflectionToStri...

2020-01-10 10:29:15 384

转载 @ConditionalOnProperty

1. 简介Spring Boot通过@ConditionalOnProperty来控制Configuration是否生效2. 说明@Retention(RetentionPolicy.RUNTIME)@Target({ ElementType.TYPE, ElementType.METHOD })@Documented@Conditional(OnPropertyCondi...

2020-01-09 17:11:17 207

转载 ApplicationPidFileWriter

SpringBoot用于生成pid文件的方法程序部署在linux环境,若需要配置成系统服务,使用systemctl(CentOS7系统服务命令)进行程序的启动、停止、重启等操作,则需要在程序启动后,生成一个pid文件,其内容则是该进程的pid。SpringBoot已经提供了pid文件的生成方式,只需要做简单的配置即可。启动引导类代码如下,重点是添加一个ApplicationPidFil...

2020-01-09 16:55:48 3656

原创 SpringApplicationBuilder

项目启动SpringApplication.run(Application.class,args);new SpringApplicationBuilder(ZuulApplication.class).web(true).run(args);可以传递参数boolean isWeb = true;// options parser,parse -wnew SpringApp...

2020-01-09 16:52:17 2323

转载 StringUtils在commons-lang3和commons-lang中的区别

Java中的jar包,commons.lang和commons.lang3的区别?鉴于lang3 不完全兼容之前的版本 所以重开一个路径避免冲突 ,lang3 完全支持1.5以上的特性StringUtils在commons-lang3和commons-lang中的区别原文地址最近经常需要对String做一些判断和处理,于是就用到了Apache提供的StringUtils这个工具类,...

2020-01-09 14:29:42 2747

转载 Spring、Spring Boot、Spring Frame、Spring MVC区别

Spring进化Spring、Spring Boot、Spring Frame、Spring MVC区别spring、springboot、springcloud的区别Spring,是整个生态,其下有很多产品,如Spring Boot、Spring Frame、Spring MVC等。Spring Boot,用于快速、方便、简单的搭建一个Spring项目。之所以如此,是因为Spri...

2020-01-09 14:17:23 319

原创 秒杀活动,提高性能,防止超卖,订单超时

目录初步思考秒杀活动订单防止超卖订单超时如何处理初步思考原文地址前端:页面尽可能静态化,css/js合并,减少请求数扩容:增加机器,提高处理请求能力限流:应用限流(nginx,tomcat设置线程池,最大请求数),服务限流(限流算法,令牌桶/漏桶),MQ堆积消息,用户请求限制(单位时间内访问接口次数)【主要保证每台机器能够处理自己能力之内的任务】使用多线程开...

2020-01-05 17:29:10 1927

转载 假设字符串类似这样的aba和aab,abc和bca就相等,现在随便给你二组字符串,请编程比较他们看是否相等

public static equals(String s1,String s2){if (s1.length() != s2.length()) return false;if (s1.equals(s2)) return true; if (s1 == s2) return true;char[] ca1 = s1.toCharArray();char[] ca2 = s2.t...

2020-01-04 13:10:11 1197

转载 用List实现栈和对列

栈实现栈功能:后进先出,进栈,出栈,返回栈元素;package com.test.thread;import java.util.LinkedList;import java.util.Stack;public class MyStack { /* 声明容器 */ private LinkedList<Object> stack = new Link...

2020-01-04 12:47:10 154

转载 判断一个链表是否有环

如何判断一个单链表是否有环,若有环,找出环的入口?下图是一个有环链表设置两个链表指针fast, slow,初始值都指向链表头结点,然后两个指针都往后走,不同的是slow每次前进一步,即前进一个节点。fast每次前进两步,如果存在环,两个指针必定相遇。因为只有存在环的情况,我们才可能出现走的快的指针能再次遇到慢的指针。并且还有一点就是,若该链表存在环,则在慢指针还没走完一整个环的...

2020-01-04 12:06:20 96

转载 两个单链表相交,找出第一个交点

目录题目理解解法题目给两个单链表,如何判断两个单链表是否相交?若相交,则找出第一个相交的节点理解解这道题之前,我们需要首先明确一个概念:如果两个单链表有共同的节点,那么从第一个共同节点开始,后面的节点都会重叠,直到链表结束因为两个链表中有一个共同节点,则这个节点里的指针域指向的下一个节点地址一样,所以下一个节点也会相交,依次类推。所以,若相交,则两个链表呈“Y”...

2020-01-04 11:09:26 1323

转载 将数组中最小的数输出<Java>

【题目要求】:编写Java程序,将数组中最小的数输出。【题目分析】:思想一:采用冒泡排序由小到大,则最小的数在首位,输出首位即可。 思想二:调用方法 思想三:for循环嵌套if条件句,输出最小值【编程实现】:思想一:public class Test2 { public static void main(String[] args) { int ar...

2020-01-03 17:07:23 599

转载 HashMap与HashTable

HashMapHashMap底层是一个Entry[]数组;当发生hash冲突的时候,hashMap是采用链表的方式来解决;在对应的数组位置存放链表的头节点;新加入的节点会从头节点加入;超过阀值(默认8),单链表就会转为红黑树,提高检索速度;HashMap扩容的条件是:当size大于threshold时,对HashMap进行扩容(threshold=容量*加载因子)默认加载因子为0.75...

2020-01-03 14:00:33 81

转载 ==与equals与hashCode

==a==b比较的是两个对象的引用,equals方法默认使用==进行比较;基本数据类型之间的比较应该用过==,比较的是他们的值;引用类型用==比较时,比较的是他们在内存中的存放地址;所以,除非是同一个new出来的对象,比较的结果为true,否则为false;对象是存放在堆中的,栈中存放的是对象的引用(地址),可见“==”是对栈中的值进行比较;如果要比较堆中的对象的内容是否相同,就需...

2020-01-03 13:17:31 122

原创 微服务

目录微服务定义微服务定义职责单一:一个微服务只需做一件事情;服务自治:可以独立开发,独立部署,有自己的技术栈;敏捷开发:最终目的是为了敏捷开发;...

2020-01-03 11:04:58 68

转载 原子操作类AtomicInteger

目录为什么需要原子操作类如果使用volatile修饰变量呢使用AtomicIntegerCAS指令incrementAndGet()方法JUC包原子类的类型及方法为什么需要原子操作类原子操作,是指一个操作是不可分割,不可中断的;在java中的运算操作,例如自增或自减,若没有进行额外的同步操作,在多线程环境下操作就是线程不安全的;(n++解析为n=n+1,明显这个...

2020-01-03 10:36:46 158

转载 集群、分布式、集中式、伪分布式

集中式将项目部署到一台机器上;对机器性能要求高;(单体应用)分布式将项目拆分(按业务或者服务),将项目部署在不同的机器上运行;对机器性能要求下降;集群集群是对机器数量的一个概念(一个项目,多机备份,做负载均衡及容错);所有集群节点分布在多台机器上;集群主要作用就是分散请求,分散压力,提高并发处理能力;(减轻单一应用的压力;单一应用可以通过调优方式提高请求处理:调整tomcat运...

2020-01-01 10:57:46 421

转载 ReentrantLock与Synchronized的区别

目录可重入性锁实现性能区别功能区别ReentrantLock独有能力ReentrantLock实现原理可重入性都是可重入锁,都对当前线程可重入;线程每进入一次计数器+1,直到计数器下降为0才能释放锁;锁实现Synchronized依赖jvm实现(操作系统实现),ReentrantLock是JDK实现(代码实现)性能区别Synchronized优化后,...

2019-12-30 11:05:34 225

转载 可重入锁与不可重入锁

不可重入锁只判断这个锁有没有被锁上,只要被锁上申请锁的线程都会被要求等待可重入锁不仅判断锁有没有被锁上,还会判断锁是谁锁上的,当是自己锁上的时候,那么他依旧可以再次访问临界资源,并把加锁次数加一。设计了加锁次数,以在解锁的时候,可以确保所有加锁的过程都解锁了,其他线程才能访问。不然没有加锁的参考值,也就不知道什么时候解锁?解锁多少次?才能保证本线程已经访问完临界资源了可以唤醒其他线...

2019-12-30 10:34:31 82

原创 Zookeeper

目录Zookeeper安装教程运行部署方式配置详解节点类型使用场景zk实现分布式锁流程操作zk其他文章ZookeeperZookeeper是一个高性能的分布式数据一致性解决方案;它是一种集中式服务,用于维护配置信息、命名服务、同步服务;在实际项目中,zk是集中式存储和管理分布式系统的配置中心,以及分布式锁的最佳候选者;文件系统+监听通知机制z...

2019-12-28 17:08:24 130

转载 SpringCloud之Hystrix Dashboard与Hystrix Turbine

目录Hystrix Dashboard引入Hysterix DashboardHystrix Turbine引入Hystrix TrubineHystrix Dashboard在微服务架构中为保证程序的可用性,防止程序出错导致网络阻塞,提出了断路器模型;断路器的状况反应了程序的可用性和健壮性,它是一个重要指标;Hystrix Dashboard是作为断路器状态的一个组件,提...

2019-12-27 16:07:53 2719

转载 SpringCloud之Sleuth

Spring Cloud SleuthSleuth主要功能就是在分布式系统中提供追踪解决方案,并集成了zipkin组件。服务追踪微服务架构通过业务进行服务划分;通过对外暴露接口,进行服务间通信(REST调用);而一个功能可能需要多个服务协同才能完成;如果链路上任何一个服务出现问题或网络超时,都会导致调用失败;随着业务的扩张,服务之间的调用会越来越复杂;与之对应的,调用链路会越复杂;最终...

2019-12-27 15:47:13 105

转载 SpringCloud之Bus

目录Spring CloudBus使用Bus实现通知微服务架构配置文件更改架构分析Spring CloudBusSpring Cloud Bus将分布式的节点用轻量的消息代理连接起来。它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控。使用Bus实现通知微服务架构配置文件更改引入依赖:spring-cloud-starter-bus-amqp(bus依赖...

2019-12-27 15:23:55 132

转载 SpringCloud之Config

目录配置中心组件Config集成步骤访问流程高可用的分布式配置中心配置中心组件Config使用场景分布式系统中,服务数量巨多,为了方便服务配置文件统一管理,所以需要分布式配置中心组件。存放位置Spring Cloud Config(分布式配置中心组件),支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。支持角色有两个角色,confi...

2019-12-27 14:07:54 144

转载 SpringCloud之Zuul

ZuulZuul主要功能是路由转发和过滤器路由功能:/api/user转发到user服务,/api/shop转发到shop服务 过滤器:做一些安全验证使用引入依赖:spring-cloud-starter-netflix-zuul 开启zuul功能:在启动类加注解@EnableZuulProxy 添加配置zuul: routes: api-a: pa...

2019-12-27 13:27:06 89

转载 SpringCloud之Hystrix

服务雪崩在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕...

2019-12-23 12:13:25 82

原创 SpringCloud之Ribbon与Feign

SpringCloud服务通讯SpringCloud中,服务与服务之间的通讯是基于http restful的。提供了两种调用方式:ribbon+restTemplate feignRibbonRibbon是一个负载均衡客户端,可以很好的控制http和tcp的行为。(Feign默认集成了Ribbon)Ribbon+restTemplate使用导入依赖:spring-cloud...

2019-12-23 11:31:36 283

转载 Eureka集群保持数据一致性

Eureka 的设计理念保留可用及过期的数据总比丢掉可用的数据好。分布式数据复制方式分布式系统的数据在多个副本之间的复制方式,主要有主从复制,Master-Slave模式;所有写操作提交到主服务,再由主服务更新到从服务;写压力集中在主服务上,从服务分担读请求; 对等复制,Peer to Peer,副本间不分主从,任何副本都可以接受写操作,然后副本间进行数据更新;但副本间数据同步时...

2019-12-21 19:58:05 3335

原创 SpringCloud之Eureka

目录Eureka介绍具体使用Eureka配置详解Eureka控制台参数说明深入理解Eureka集群搭建数据存储参数调优Eureka集群保持数据一致性Eureka介绍Eureka,服务注册与发现的组件;其是一个高可用组件,没有后端缓存,每一个实例注册之后需要向注册中心发送心跳(30秒);Eureka Server默认也是一个Eureka Client,所以...

2019-12-21 19:25:55 280

转载 Eureka 参数调优

常见问题为什么服务下线了,Eureka Server 接口返回的信息还会存在。 为什么服务上线了,Eureka Client 不能及时获取到。 为什么有时候会出现如下提示EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THR...

2019-12-21 19:21:20 239

转载 SpringBoot与SpringCloud版本说明及版本对应

目录为什么需要版本对应版本对应关系版本说明F版本小版本关于spring cloud1.x版本和2.x版本区别参考资料地址为什么需要版本对应SpringBoot需与SpringCloud版本对应,否则可能会出现意料之外的错误,比如使用Eureka后找不到服务的地址,jar包导入失败。版本对应关系大版本对应关系 Spring Cloud Spring...

2019-12-21 11:14:44 184

转载 Java SPI机制

SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现的动态加载机制。系统设计的各个抽象,往往有很多不同的实现方案,在面向的对象的设计里,一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的...

2019-12-17 10:48:55 76

转载 Zookeeper

Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务。分布式应用可以基于它实现更高级的服务,比如分布式同步,配置管理,集群管理,命名管理,队列管理。使用文件系统目录树作为数据模型。服务的跑在java上。Zookeeper数据模型ZnodeZookeeper树中的每个节点被称为znode,每个节点可以拥有自节点。每个节点有3部分组成:stat,状态信息,描述zn...

2019-12-16 18:10:55 71

转载 分布式下自增主键实现方案

分布式ID的几种生成方案UUID,代码生成简单,本机生成,没有性能问题,迁移容易;缺点是无序的,字符串存储,查询效率慢,且占取空间大。Mysql主键自增,利用了mysql主键自增,默认每次ID+1;优点是id自增,查询效率高;缺点是数据库压力大,高并发抗不住;Mysql多实例自增主键,在表上设置自增步长,比如5个实例,自增初始id为1-5;缺点还是数据库压力大,并且无法扩容;Red...

2019-12-16 17:48:32 1624

空空如也

空空如也

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

TA关注的人

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