
Java
一只努力的微服务
努力坚持终会有收获
展开
-
【SpringCloud源码】EurekaClient服务注册流程
Eureka-Client服务注册服务的注册和服务的发现其实是两个概念,发现所描述的是instance作为调用者,获取需要调用的下游服务的列表信息的过程,注册所描述的是instance作为被调用者,要将自己的信息注册到注册中心的过程,共给其他instance(包括自己)进行服务发现使用。对于注册过程,需要配置eureka.client.register-with-eureka = true,默...原创 2020-04-18 19:14:09 · 723 阅读 · 1 评论 -
Hystrix参数说明
一、什么情况下会触发fallback方法?名字描述触发fallbackEMIT值传递NOSUCCESS执行完成,没有错误NOFAILURE执行抛出异常YESTIMEOUT执行开始,但没有在允许的时间内完成YESBAD_REQUEST执行抛出HystrixBadRequestExceptionNOSHORT_CIRCUITED...转载 2019-11-05 21:08:56 · 720 阅读 · 0 评论 -
MySQL JDBC PreparedStatement
JDBC作为JAVA访问数据库的一套规范与标准,统一了数据库操作的API,大大简化了程序开发工作。不过由于历史原因,MySQL对JDBC默认的实现与规范定义或者说其它数据库如Oracle并不一致,为了更完整记录这些差异,计划抽空写个系列,整理下这些可能会误解的常用功能。第一篇首先聊聊PreparedStatement。MySQL JDBC PreparedStatementPrepare SQ...转载 2019-11-05 21:07:10 · 1520 阅读 · 0 评论 -
springboot自启动脚本shell、systemctl以及service文件Environment用法
springboot通用管理脚本在springboot打包成jar包之后,往往需要很多启动参数辅助服务启动,为了避免每次都写很长的启动命令,可以将这些重复性工作写成脚本。shell脚本:#!/bin/bash# jar包的名字APP_NAME=appname# 环境配置文件,如application-dev.ymlPROFILE=devJAR_NAME=$APP_NAME\.jar...原创 2019-10-26 22:19:24 · 9613 阅读 · 1 评论 -
Java ClassLoader详解
Java ClassLoader笔记Java语言系统自带有三个类加载器- Bootstrap ClassLoader 最顶层的加载类,主要加载核心类库,%JRE_HOME%\lib下的rt.jar、resources.jar、charsets.jar和class等。另外需要注意的是可以通过启动jvm时指定-Xbootclasspath和路径来改变Bootstrap Clas...原创 2019-08-23 22:27:24 · 237 阅读 · 0 评论 -
Collections.unmodifiableMap()用法
Collections.unmodifiableMap()用法中间层有时会初始化一些final的静态的Map供给一些字段做映射,一般如下:public final static Map<String, String> TYPE = new HashMap();static { TYPE.put(MYSQL,"mysql"); TYPE.put(SQLSERVER,...原创 2019-08-23 22:22:32 · 10253 阅读 · 2 评论 -
Netty的优雅退出
Daemon线程// 若应用的所有非守护线程都结束则程序退出,守护线程会随之自动退出Thread t = new Thread();t.setDaemon(false); // 设为非守护线程,默认为falset.setDaemon(true); // 设为守护线程Java优雅退出机制1.通过注册JDK的ShutdownHook实现public static void main(S...原创 2019-08-23 22:11:35 · 1226 阅读 · 0 评论 -
【SpringCloud源码】Hystrix的fallBack过程
Hystrix是SpringCloud全家桶中的熔断和隔离器,可实现服务的降级策咯、隔离策略、批量请求等等功能。一般使用方法:1.pom.xml中添加:<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starte...原创 2019-05-11 22:38:12 · 680 阅读 · 0 评论 -
SpringBoot中starter原理简介
在springboot项目的pom文件中会发现很多带starter的pom包,这也是springboot的一个典型特点,starter是什么?怎么用的?开发springboot最常见的starter就是:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>...原创 2019-07-31 17:33:55 · 30167 阅读 · 1 评论 -
SpringBoot多环境配置
springboot在创建空项目时,会生成一个application.propertites的配置文件,可以在该文件中配置项目所需要的参数配置。通常的项目都有开发环境、测试环境和生产环境等,一个配置文件可能就要换来换去,springboot专门为适应这种情况做了优化。可以分环境来读取配置文件。springboot的配置文件常见的有两种格式,一种是application.yml(或applicat...原创 2019-07-31 17:34:35 · 308 阅读 · 0 评论 -
Java流控的各种实现方案
1.使用Guava的RateLimiter原理:RateLimiter使用的是一种叫令牌桶的流控算法,RateLimiter会按照一定的频率往桶里扔令牌,线程拿到令牌才能执行,比如你希望自己的应用程序QPS不要超过1000,那么RateLimiter设置1000的速率后,就会每秒往桶里扔1000个令牌。代码:LxRateLimit.javaimport java.lang.annotati...原创 2019-07-13 21:52:21 · 5827 阅读 · 0 评论 -
ThreadPoolExecutor工作原理源码分析
通过Executors的4个静态方法(newSingleThreadExecutor、newCachedThreadPool、newFixedThreadPool、newScheduledThreadPool)可以创建不同类型的线程池(阿里规范不建议用Executors,因为线程参数不直观),其实质都是调用ThreadPoolExecutor来实现的,ThreadPoolExecutor是java...原创 2019-05-11 22:35:48 · 287 阅读 · 0 评论 -
【SpringBoot源码】SpringBoot启动流程
SpringBoot启动过程@SpringBootApplicationpublic class MySpringApplication { public static void main(String[] args) { ApplicationContext applicationContext = SpringApplication.run(MySpringAppl...原创 2019-05-11 22:33:14 · 202 阅读 · 0 评论 -
Netty ServerBootstrap加载启动过程源码分析
Netty一般的server创建代码public class NettyServer { // 日志 private Logger log = LoggerFactory.getLogger(getClass()); // 端口号 @Value("${netty.port}") private int port; // 启动服务器方法 ...原创 2019-05-19 17:43:30 · 273 阅读 · 0 评论 -
Netty NioEventLoopGroup实例化过程源码分析
Netty一般的server创建代码public class NettyServer { // 日志 private Logger log = LoggerFactory.getLogger(getClass()); // 端口号 @Value("${netty.port}") private int port; // 启动服务器方法 ...原创 2019-05-19 16:28:58 · 386 阅读 · 0 评论