9 hfmbook

尚未进行身份认证

我要认证

毕业于西安交通大学,拥有10年的工作经验,拥有两年多的授课经验。先就职于知名互联网公司担任Team Leader

等级
TA的排名 1w+

高级面试题--SpringBoot启动流程解析

写在前面:由于该系统是底层系统,以微服务形式对外暴露dubbo服务,所以本流程中SpringBoot不基于jetty或者tomcat等容器启动方式发布服务,而是以执行程序方式启动来发布(参考下图keepRunning方法)。本文以调试一个实际的SpringBoot启动程序为例,参考流程中主要类类图,来分析其启动逻辑和自动化配置原理。总览:上图为SpringBoot启动结构图,我们发现启动流程...

2019-09-03 09:13:32

阿里云主机没有swap, 来我们手动给他加一个吧

查看系统当前的分区情况:free -m可以清晰看到,swap total显示未0B,那接下来开始 创建swap分区吧block_size 是swap分区的大小,count 是分区的个数dd if=/dev/zero of=/whatever/swap bs=block_size count=number_of_block设置交换分区文件mkswap /data/swap加入...

2019-08-28 11:46:58

Spring Boot面试通关

一.AOP 四个步骤AOP是spring面试经常问的面试题,很多人都卡在这里,我使用简单的三个步骤讲解AOP,更方便记忆1.1创建代理对象相关类:1、AbstractAutowireCapableBeanFactory2、AbstractAutoProxyCreator3、AbstractAdvisorAutoProxyCreator4、AnnotationAwareOrderCom...

2019-08-14 18:15:56

redis+lua分布式高并发--限流算法

lua脚本 limit.lualocal key = KEYS[1]local limit = tonumber(ARGV[1])local current = tonumber(redis.call('get', key) or '0')if current + 1 > limit then return 0else redis.call("INCRBY", key,"1...

2019-08-05 13:57:09

redis高性能分布式锁

<dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>2.11.5</version></dependency>import org.redisson.Redis...

2019-08-02 17:18:05

zookeepr 实现分布式锁

引入jar包<dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>4.0.0</version&...

2019-07-15 19:29:08

Redis-ShardedJedis

redis 通过key进行shard ,将key放到不同的 redis缓存数据库上public class RedisApplication { public static final Pattern KEY_TAG_PATTERN = Pattern.compile("(.{1})"); public static ShardedJedisPool jedisPool(){...

2019-07-04 15:53:01

RabbitMQ 实战 -- 消息确认Ack

消费者确认消费者确认或者说消费者应答指的是RabbitMQ需要确认消息到底有没有被收到自动应答boolean autoAck = true;channel.basicConsume(QUEUE_NAME, autoAck, consumer);内容提供者import rabbitmq.util.ResourceUtil;public class AckProducer {...

2019-06-17 09:20:39

架构师技术选型 -- 我们如何选择MQ

参与选型的MQactivemq,RocketMQ,rabbitmqactivemq单机吞吐量:万级topic数量都吞吐量的影响:  时效性:ms级  可用性:高,基于主从架构实现高可用性  消息可靠性:有较低的概率丢失数据  功能支持:MQ领域的功能极其完备  总结:    非常成熟,功能强大,在早些年业内大量的公司以及项目中都有应用    偶尔会有较低概率丢失消息    ...

2019-06-04 17:49:43

spring-boot应用之Kubernetes微服务实践

一、Kubernetes 安装简介:kubernetes 是什么? 首先,它是一个全新的基于容器技术的分部署架构领先方案。这个方法虽然还很新,但它是谷歌十几年依赖大规模应用容器技术的经验积累和升华的一个重要成果。确切的说Kubernetes是谷歌严格保密十几年的秘密武器--Brog的一个开源版本。1.1 机器配置节点名称 hostname 组件 ip...

2019-03-26 19:41:15

微服务-调用连选型报告

什么是调用链一个业务功能可能需要多个服务协作才能实现,一个请求到达服务A,服务A需要依赖服务B,服务B又依赖服务C,甚至C仍需依赖其他服务,形成一个调用链条,即调用链。微服务为什么要使用调用链微服务是一个特别复杂的系统,微服务存在一下几个缺点:出现问题后,定位困难,需要对整个调用链路有个完善的监控链路复杂,需要清晰的链路图谱反映服务之间的依赖、调用关系整体系统性能及运行情况,需要明...

2019-01-02 10:55:35

Docker-swarm 集群

集群列表 主机名 IP地址 备注 k8s1 192.168.18.111 主节点 k8s2 192.168.18.112 node1配置docker启动参数vim /usr/lib/systemd/system/docker.service 只需要修改复制出来的这一行,其他的不要做任何改变,节点每台机器都要做该修改E...

2018-04-14 20:14:17

ajax跨域解决方案

1、spring 解决跨域方案1 JSONP参考该文档: http://hpgary.iteye.com/blog/2389640 2、spring 解决跨域方案2服务器端resetful接口类或者方法上加注解 @CrossOrigin,一键轻松实现跨域,类写法如下:@RestController@CrossOriginpublic class TestController ...

2018-04-08 20:27:54

docker-compose 快速入门

简介Compose是定义和运行多容器Docker应用程序的工具安装 dockerhttps://blog.csdn.net/hfmbook/article/details/70209155安装 docker-compose根据不同的操作系统下载不同的软件 https://github.com/docker/compose/releases/ ,下载下来 后更改文件名为...

2018-03-26 16:13:17

Mysql-GTID复制跳过错误的方法

gtid复制出现错误是个比较麻烦的问题,需要人工处理,如果直接跳过可能导致数据丢失或者数据不一致的情况,所以建议人工处理。下面我来介绍Mysql gtid复制出现错误的情况,按照下来方式处理前必需找出错误的sql和错误的数据,处理完成前将数据修改成为一致数据。1、数据库版本mysql >select version()+-----------------------------...

2018-03-01 21:41:26

Mysql 基于GTID的复制

一、什么是GTIDGTID(GlobalTransaction ID)是Mysql5.6开始的一种新的主从复制方式,其实现方式和基于日志点的复制存在很大差异。原来基于日志点的复制方式中,从db链接主db从哪个日志文件的偏移量开始增量同步,如果偏移量设置不对就可能造成遗漏或者重复同步数据。GTID复制中,从库会讲主库上所有没有在从库上执行的事务执行一次,并且保证只执行一次。 说了这么多到底什么...

2018-02-28 09:51:35

数据库中间件---Mycat配置

一、配置文件1.1、schema.xmlschema.xml 作为 MyCat 中重要的配置文件之一,管理着 MyCat 的逻辑库、表、分片规则、 DataNode 以及 DataSource。弄懂这些配置,是正确使用 MyCat 的前提。这里就一层层对该文件进行解析。1.1.1 熟悉schema.xmlschema 节点用于配置Mycat逻辑库,这里可以拥有多个逻辑库,...

2018-02-01 11:18:16

数据库中间件---Mycat入门

入门宣言:不怕从零开始,只怕从未开始。1、Mycat简介(摘自Mycat权威指南 http://www.mycat.io )2013 年阿里的 Cobar 在社区使用过程中发现存在一些比较严重的问题,及其使用限制,经过 Mycat 发 人第一次改良,第一代改良版——Mycat 诞生。 Mycat 开源以后,一些 Cobar 的用户参与了 Mycat 的 开发,最终 Mycat 发展

2018-01-31 17:55:01

Java缓存技术-google guava cache

一、简介guava和ehcache一样也是本地缓存,虽然都是本地缓存,但是有着不同的使用场景。guava是谷歌提供的一个Java工具包,而Guava的Cache部分提供了一套分词完善的本地存储缓存机制,在Guave之前ConcurrentMap,因为能友好的支持并发而经常被用作本地缓存,但它毕竟不具备缓存的一些特性,比如缓存过期,缓存数据加载和刷新等。 二、使用场景1、原意消耗一些

2018-01-09 07:46:57

Java 动态加载jar包

最近在研发一款maven插件一键生成增删改查的插件,需要动态加载 数据库驱动包到内存中import java.io.File;import java.io.IOException;import java.lang.reflect.Field;import java.net.URL;import java.net.URLClassLoader;import org.apache.commons

2017-05-27 16:17:58

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享王者
    分享王者
    成功上传51个资源即可获取