- 博客(19)
- 收藏
- 关注
原创 RabbitMQ之交换器和队列
交换器和队列是MQ中high-level层面的构建模块,应用程序需确保在使用它们的时候就已经存在了,在使用之前需要先声明它们。以下源码是基于spring-amqp-1.7.7.RELEASE.jar的源码分析交换机源码分析:public abstract class AbstractExchange extends AbstractDecla...
2019-07-29 17:21:06 467
原创 Spring Cloud之Eureka Server启动流程分析
启动流程分析图如下:Eureka Server启动类:/** 1. 启动一个服务注册中心,只需要一个注解@EnableEurekaServer */@EnableEurekaServer@SpringBootApplicationpublic class EurekaServerApplication { public static void main(String[] ...
2019-07-28 18:27:19 441
原创 SpringBoot之ApplicationRunner
我们在开发中可能会需要在容器启动的时候执行一些内容。比如读取配置文件,加载路由信息,数据库连接之类的。SpringBoot给我们提供了两个接口来帮助我们实现这种需求。这两个接口分别为CommandLineRunner和ApplicationRunner。他们的执行时机为容器启动完成的时候。ApplicationRunner源码如下:@FunctionalInterfacepublic int...
2019-07-24 11:57:44 260
原创 @RequestBody请求使用postman调用
@RequestBody的传参格式:@RequestMapping(value = "query.do", method = { RequestMethod.POST }) public JsonHeaderWrapper<Object> query(HttpServletRequest request,@RequestBody OpenApiReqVO<Map<Str...
2019-07-23 19:13:38 5531
原创 spring cloud gateway之限流
Spring Cloud Gateway限流概述在开发高并发系统时可以用三把利器来保护系统:缓存,降级和限流。缓存:提升系统访问速度和增大系统处理的容量,是提高并发流量的”银弹“;降级:当服务出现问题或者影响到核心流程时,需要暂时将其屏蔽掉,待高峰过去之后或者问题解决后再打开;限流:通过对并发访问、请求进行限速或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务,...
2019-07-21 17:16:01 213
原创 数据库索引
数据库索引失效的情况like “%_" 百分号在前;字符型字段为数字时在where条件里不添加引号;在索引列上使用函数,如substr,decode,instr等,或对索引列进行运算;B-tree索引is null不会走索引,is not null会走索引;位图索引is null, is not null 都会走索引;联合索引is not null 只要在建立的索引列(不分先后)都会走...
2019-07-16 15:47:15 267
原创 创建一个存储过程
创建一个存储器://删除已存在的drop procedure if exists create_data;//分隔符delimiter ;;create PROCEDURE create_data()BEGINdeclare i int DEFAULT 1;while i<1000doinsert into test.t_student ( name, subject,...
2019-07-16 12:12:59 2254
原创 线程的基础知识(五)之线程通信
传统的线程通信当线程在系统内运行时,线程的调度具有一定的透明性,程序通常无法准确控制线程的轮换执行,单Java也提供了一些机制来保证线程协调运行。为了实现这一机制,可以借助Object类提供的wait(),notify()和notifyAll()三个方法:wait() :导致当前线程等待,直到其他线程调用该同步监视器的notify()方法或notifyAll()方法来唤醒该线程。调用wait...
2019-07-13 18:16:05 124
原创 mysql左连接中on and和on where的区别
on and是进行韦恩运算时 连接时就做的动作select * from a left join b on a.sid=b.sid and a.sid=1; 等价于:select * from a left join b on (a.sid=b.sid and a.sid=1);where是全部连接完后,再根据条件过滤select * from a left join b on a...
2019-07-13 16:42:54 265
原创 线程的基础知识(四)
本博客整理来源于《疯狂java讲义》。线程同步因为run()方法的方法体不具有同步安全性,为了解决这个问题,Java的多线程引入了同步监视器来解决这个问题,使用同步监视器的通用方法就是同步代码块。格式如下:synchronized (obj) { ... //同步代码块}任何时刻只有一个线程可以获得对同步监视器的锁定,当同步代码块执行完毕后,该线程会释放对该同步监...
2019-07-13 14:11:04 76
原创 线程的基础知识(三)
Join线程Thread提供了让一个线程等待另一个线程完成的方法:join()方法代码演示:package com.dalingjia.thead;public class JoinThread extends Thread{ public JoinThread(String name) { super(name); } public void run(){ for (...
2019-07-11 01:55:55 126
原创 线程的基础知识(二)
线程的生命周期当线程被创建并启动以后,它既不是一启动就进入执行状态,也不是一直处于执行状态,在线程的生命周期中,他要经过新建(new),就绪(Runnable),运行(Running),阻塞(Blocked),死亡(Dead)5种状态。尤其是当线程启动以后,他不可能一直占有CPU独自云溪,所以CPU需要在多个线程之间切换,于是线程状态也会多次在运行,就绪之间切换。新建状态和就绪状态:当程序...
2019-07-11 00:32:19 111
原创 线程的基础知识(一)
线程概述:几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序;每个运行中的程序就是一个进程。当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程。也可以说每一个请求就是一个线程。线程的创建和启动:...
2019-07-08 18:42:24 129
原创 多线程之ThreadLocal类
ThreadLocal类ThreadLocal,是Thread Local Variable(线程局部变量)的意思。线程局部变量(ThreadLocal)的功能其实非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,使每一个线程都可以独立地改变自己的副本,而不会和其他线程的副本冲突。从线程的角度看,就好像每一个线程都完全拥有该变量一样。使用ThreadLocal工具类可以很简洁地隔离多...
2019-07-08 16:25:48 566
原创 Comparable和Comparator的区别
Comparable和Comparator都是用于比较数据大小的,Comparable位于java.lang包下,实现该接口需要重写compareTo方法;Comparator位于java.util包下,实现该接口需要重写compare方法。Comparable接口只有一个方法:public int compareTo(T o);调用此方法的对象,也就是this和o进行比较,若返回值大于0...
2019-07-07 01:49:19 119
原创 SpringCloud Gateway的工作原理
Spring Cloud Gateway的工作原理Spring Cloud Gateway 的核心处理流程如下图,Gateway的客户端回向Spring Cloud Gateway发起请求,请求首先会被HttpWebHandlerAdapter进行提取组装成网关的上下文,然后网关的上下文会传递到DispatcherHandler。DispatcherHandler是所有请求的分发处理器,Disp...
2019-07-03 21:19:20 28893 2
原创 JetCache快速入门小案例
本文是基于SpringBoot的小案例,废话不多说,直接上代码:pom依赖:<dependency> <groupId>com.alicp.jetcache</groupId> <artifactId>jetcache-starter-redis</artifactId> <version>2.5.12&...
2019-07-03 18:41:03 1503
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人