自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringBoot的自动加载配置的原理和过程

springboot提倡: 约定大于配置springboot最常见的面试题:1.springboot是如何实现自动加载配置呢?2.如何写一个starter呢?带着问题,我们以mybatis-spring-boot-starter为例,看一下,Starter如何写,然后SpringBoot又是如何加载的.1.引入在springboot项目中引入mybatis是很简单的,只需要配置一个依赖...

2019-12-31 16:14:04 2301 3

原创 面试:线程池常见面试问题

1.什么是线程池? 优点有哪些?顾名思义,由多个线程组成的池,线程池使用的是池化的思想,类似的还有连接池,资源池等.使用线程池有以下几个优点:1.1 方便对线程统一管理,不会出现’野线程’,并且统一提供一些管理的方法,管理线程的执行状态,比如shutdown()1.2 线程作为服务器的稀缺资源,通过线程池可以做一定约束,提高线程的利用率,避免了无限创建线程,对服务性能损耗.1.3 提高服...

2020-04-03 16:14:19 4358 2

原创 zookeeper漫谈

1.zk是如何保证一致性的一致性协议有很多种,比如Paxos,Raft,2PC,3PC等等,zk主要使用的是ZAB.Zookeeper Atomic Broadcast(Zookeeper 原子广播协议).它是为分布式协调服务 Zookeeper 专门设计的一种支持崩溃恢复和原子广播协议.2.zxid的作用2.1 保证数据顺序性zk会给每个事物分配一个zxid,一个64位数字,前32...

2019-12-03 17:31:31 266

原创 分布式CAP漫谈

1.CAP在经典的CAP理论中:C: 一致性A: 高可用P: 容错性在目前这个微服务中,注册中心选择中ZK和Eureka比较常见的,zookeeper在设计之初是为了解决各个服务之间的数据(状态)都保持一致,所以使用zk做注册中心时,会将这一特性带过来,所以大家常说使用zk的服务,而当zk内部发生选举,或者有一半节点挂掉时,没有办法对外提供服务,所以不是高可用性的,是CP.Eure...

2019-12-02 17:23:18 204

原创 面试题:手写LRU缓存

题目:手写实现一个LRU缓存,支持get() put()思路1.可以使用最基础的单向链表处理2.使用双向链表,可以加入hash表做优化3.最简单的实现是使用JDK中自带的LinkedHashMap,需要重写removeEldestEntry()方法,这是LinkedHashMap提供的一个删除最老条目的方法; Map<String,String> map = new L...

2019-08-26 17:35:54 1958

原创 面试算法篇-链表

1.如何在一次递归后找到单链表的中间元素思路使用两个指针,一个一次走一步,一个一次走两步,一次走两步的走完时,另一个刚好走到中间.public ListNode findMid(ListNode head){ int i = 0; ListNode quick = head; ListNode slow = head; whil...

2019-08-23 15:28:30 196

原创 面试算法篇-数组

0.各种基础排序(快排*,归并*,选择,希尔等)1.给定一个 1-100 的整数数组,请找到其中缺少的数字。思路1:只缺少一个数,其不重复的情况下可以求和,已知1-100的和是5050,对应的数组求和sum,用5050-sum=result,这个result就是缺少的数字,思路2创建一个array length=100,index和实际值对号入座,遍历对应index为空的,就是缺少的数字...

2019-08-23 15:25:57 207

原创 面经:mysql索引

1. 数据结构 mysql 使用的是(Balance+ Tree,也就是平衡树)B+树,在B树的基础上做了优化,B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具有 B Tree 的平衡性,并且通过顺序访问指针来提高区间查询的性能。2. 查询性能和原理2.1 减少IO次数 树的查询速度是取决于树的高度,一般的树,如红黑树每个节点挂了2个子叶,mysql为了提供...

2019-07-15 11:39:41 316

原创 j.u.c中atomic实现原理

一. atomic包与JMM并发包下的atomic下的有很多支持原子性的类:AtomicBoolean,AtomicInteger,AtomicLong,AtomicReference…等等, 如果你在代码中使用一个他们中的一个做为变量的话,可以让这个变量变成所有线程都共享的,都可见的.这里不得不要数一下,java内存模型(JMM),通常来说我们启动程序时使用的启动参数一般是:-...

2018-08-21 11:19:26 355

原创 Docker搭建开发环境: Nginx和Mysql

Docker搭建开发环境: Nginx和Mysql1.拉取Nginx和Mysql imagedocker pull nignxdocker pull mysql:5.7.222.启动Nginxdocker run -d --name mynginx -p 80:80 -v /opt/local/nginx/logs:/var/log/nginx -v /opt/...

2018-08-01 10:08:04 568

原创 Dubbo架构向SpringCloud架构兼容,过渡

1.为什么是SpringCloud目前我们所有的服务都是基于阿里的Dubbo框架,目前Dubbo已经捐献给了Apache,处于孵化状态:https://github.com/apache/incubator-dubbo; Github上,该项目有19K个Start,更新频率显示是最近一次更新是两个小时前(2018年6月29日15:51:47),上一次频繁更新是10天前.总的来说Dub...

2018-07-09 16:27:47 6127

原创 日志收集为什么用kafka

1.什么是kafka根据kafka官网(http://kafka.apache.org/intro)的介绍: Apache Kafka® is a distributed streaming platform(一个分布式流媒体平台)2. kafka的主要有三个功能:1.发布和订阅记录流,类似于消息队列或企业消息传递系统。2.以容错持久的方式存储记录流。3.处理记录发生的流...

2018-03-22 14:06:07 13473

原创 kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.

之前刚安装玩kafka使用它自带的shell脚本 创建了一个topic:test 打开了test的一个生产者和一个消费者,测试是没有问题的,今天再次要调试突然报错:创建一个生产者: bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test &gt;test1[2018-03-08 13:59:36...

2018-03-08 14:29:01 75045 17

原创 Spring中的两种代理方式比较

1.区别在spring框架中,你直接输出一个由spring框架代理创建的对象,和我们自己new一个对象输出的对象的堆栈地址的形式是不同的.这种代理也是spring框架核心AOP的实现基础.在spring框架中使用了两种代理方式:1.JDK自带的动态代理.2.Spring框架自己提供的CGLIB的方式.这两种方式使用其实还是有区别的,打个比方吧.你有个哥哥他能通过内部买到春运的火...

2018-03-01 10:40:59 5095

原创 kibana在centos上的汉化

Kibana的汉化使用1.初学者可以选择汉化github上有汉化的项目,地址:https://github.com/anbai-inc/Kibana_Hanization1.1汉化安装下载.zip汉化文件,确保在centos上下载有解压.zip工具,如果没有yum install zip unzip -y解压在kibana的安装目录unzip xxxx.z...

2018-02-08 15:16:44 2079

原创 教你无脑在springBoot项目中集成ELK+Kafka

ELK+Kafka从0开始简介(1)Kafka:接收用户日志的消息队列(2)Logstash:做日志解析,统一成json输出给Elasticsearch(3)Elasticsearch:实时日志分析服务的核心技术,一个schemaless,实时的数据存储服务,通过index组织数据,兼具强大的搜索和统计功能。(4)Kibana:基于Elasticsearch的数据可视化组件

2018-02-06 18:51:06 5286 2

原创 非对称加密 - 数字签名,数字证书

非对称加密对我们现在来说,其实是比较常见的,Https,git代码管理,最新的bitchain交易时,都使用到了非对称加密做核心的数据传输来完成.而数字签名,数字证书也是非对称加密的衍生品,非对称加密非对称加密的主要实现是通过一对私钥(privateKey)和公钥(publicKey)完成的,这个过程就是原始信息用私钥加密(公钥加密也可以),再用对应的公钥解密(对应的私钥), 这

2018-01-15 14:30:21 534

原创 Spring 创建Bean的过程及其源码浅析

Spring 创建Bean的过程及其源码浅析spring在加载创建bean的过程中使用了好几种开发模式,主要是:单例模式,和工厂模式(据说spring中有70-80个工厂类),还有代理模式.(这里我使用的springBoot 1.5.9 对应的spring版本是:4.3.12)一.创建前的准备工作Spring在创建我们自定义的bean的时候会有一个准备过程:1.首先他们要加载单例的工厂对象,并且将他

2018-01-02 10:26:12 3596

原创 SpringBoot内嵌的Tomcat启动过程及其做过的工作

SpringBoot内嵌的Tomcat启动过程及其做过的工作Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4

2017-12-18 10:20:27 5557

原创 Spring是如何加载XML文件中的标签的

Spring是如何加载XML文件中的标签的spring中的标签分为默认标签和自定义标签,这两种标签的加载方式是不一样的这里主要还是说一下默认标签的加载方式.并且基础的标签只有四种分别是:import,alias,beans,bean;解析标签spring的实现代码在package org.springframework.beans.factory.xml.DefaultBeanDefinitionD

2017-12-01 16:35:32 1657

原创 Spring是如何加载Xml文件的

Spring是如何加载Xml文件的这是一个很有意思的话题,在我刚学习spring框架的时候是使用Junit测试配置的DataSource是否配置成功,那时候要写一段这样的代码来加载我们配置好的XML文件:@Testpublic void loadXML(){ ApplicationContext factory = new ClassPathXmlApplicationContext("cl

2017-11-24 17:41:15 7303 2

原创 SpringBoot项目集成RabbitMq

SpringBoot项目 集成RabbitMqRabbitMq是目前比较流行的几个Mq之一,也是Spring官方AMQP的实现,官方文档地址:https://docs.spring.io/spring-amqp/docs/2.0.0.RELEASE/reference/html/RabbitMq也是国内很多互联网公司都在使用,今天主要说一下,它咋SpringBoot项目中的具体实现.1.首先在pom

2017-11-15 14:01:47 399

原创 mybatis使用时候的两个小细节

1.关于接受参数时 #{} 与${} 之间的区别简单一句句话说这两个符合#,$都可以接受参数,区别在于接受到的参数一个会给你自动加’ ‘而另一个不会,举个栗子: select <include refid="baseColumns"/> from mt_room_resource WHERE is_delete = 0 <if test="comId !

2017-11-14 11:14:18 425

原创 教你无脑在centos上安装redis

centos安装redis1.装gcc编译因为后面安装redis的时候需要编译,所以事先得先安装gcc编译 $ yum install gcc-c++2.下载、解压和编译 安装在home目录下 $ cd /home 下载 $ wget http://download.redis.io/releases/redis-3.2.2.tar.gz 解压

2017-09-01 18:08:00 1328

原创 内存动态分配和垃圾自动回收机制(一)

内存动态分配和垃圾自动回收机制(一)关于垃圾回收机制自己的一点感悟(如有不对忘指正)java和C语言中间隔着一个很厚的墙—-内存动态分配和垃圾回收机制,墙外面的想进来,墙里面的真会玩.其实java并不是内存动态分配和垃圾自动回收机制的最早的实践者,这个构想在1960年就已经在MIT的Lisp中提出.《think in java》的作者也说,很多优秀的C语言项目是死于内存的开销并未及时的回收而造成的内

2017-08-23 11:36:21 1864

原创 JVM学习笔记-03-常量池

关于常量池常量池是方法区的一部分: (2017年8月14日14:17:00)1.String常量池String这个类型是Java开发中最使用的类型: String类型是由final修饰的,它是常量池中最常见的一种类型.` public static void main(String[] args){ String str = "helloword"; String str1

2017-08-14 17:13:15 325

原创 JVM学习笔记-02-JVM的分区及其创建对象的过程

一.JVM分区JVM其实按我理解应该这样写 J’VM,其实它就是运行java程序的虚拟机,虚拟机说白了就相当于我们平时用的各种操作系统,windows,linux,等等.他的分区是和系统分区大体原则上是一致的.(2017年8月9日10:23:22)JVM的运行时 分区情况 如图: 当初刚接触java的时候就了解过,堆,栈,方法区的概念,其实这是JVM的数据存储模型.1.程序计数器程序计数器是一

2017-08-14 16:25:27 361

原创 JVM学习笔记-01-Java及Jvm发展历史

Java的历史与Jvm的演化 前几天终于看完了算法和数据结构的书,其实就是草草的看了一遍,其实是为了给研究JVM打前站,有人告诉我深入jvm这本书里有很多的源码,涉及到低沉的算法,毕竟自己这块也是没有研究过,所以找了本书,花了点时间先把算法和数据结构先研究了一遍.一.Java的发展历史,JVM的更迭1.java之父:詹姆斯.高斯林 1991年4月,由James Gosling主导的团队创造

2017-08-14 16:24:08 1071

原创 算法笔记

最近在阅读关于算法书,想把算法在过一遍,毕竟自己不是科班出身,网上有人说我们java攻城狮不懂算法一样可以写代码,我个人的观点是你要想当码农,是可以不需要懂底层算法,要是你想研究底层,看底层源码实现,算法是必须要懂的,没见过那个真正的大佬是不懂算法的,懂算法能加深自己对底层的理解,纯属个人观点.一.简单算法 O(N²)先从最简单的算法说起,也是我们最熟悉的算法,他们的复杂度都是O(N²),说他们简单

2017-07-27 11:36:37 388

原创 初体验redis

第一次使用redis:redis不用说了现在最火的NoSQL数据库,昨天开源中国上发了一篇文章专门介绍datasource的排行榜,除了Oracle和mysql等传统的关系型数据库以外,NoSQL数据库也有上榜,阿里的MongoDB高居第第五,redis排在第9.(链接:http://mp.weixin.qq.com/s/y5b0-cwTE3Ia3omSvJk3ww).其实redis和mongoDB

2017-06-02 15:16:48 512

原创 GC浅谈

GC对一个java开发人员来说是个比较重要的东西,虽然在我们开发的过程中我们很少主动的调用它,但是它确实是我们开发中必不可少的部分.传说中的守护线程GC. 之前面试看过一些关于GC的面试题,感觉自己对GC的理解深入了一点,想写一些自己的体悟. 1.首先说GC就要说Java是如何储存对象的,我们说new一个对象,实际是给这个对象在内存中开一个内存区域,(这里说一下Java中new一个对象实际是完成了

2017-05-18 09:16:14 374

原创 关于Comparable<T>解决List<bean>,依据bean的某个属性对list进行排序

之前在开发的过程中遇到调用Dao,返回一个list集合,需要对list进行排序,排序的标准假如是bean.creatTime(),在从数据库中查询的时候,可以再sql语句中加一个 order by creat_time , 但是现在很流行的微服务架构,你的需求需要依赖其他的微服务数据时,可能需要我们自己处理我们收到的数据,这个时候就需要使用Comparable. Comparable是一个in

2017-05-12 16:22:31 1866

原创 使用MultiValueMap巧妙解决拼字符串问题

MultiValueMap可以让一个key对应多个value,感觉是value产生了链表结构,这里可以很好的解决一些不好处理的字符串问题。MultiValueMap&amp;lt;String, String&amp;gt; stringMultiValueMap = new LinkedMultiValueMap&amp;lt;&amp;gt;(); stringMultiValueMap.add(&amp;quot;早班 9:00-11:00&amp

2017-05-06 09:53:45 5817 4

原创 使用注解实现AOP功能

最近做项目,需要使用注解绑定一个切面去实现一个需求,讲真的本人菜鸟,可能之前就没有写多少切面,更不要说用注解的形式去实现了,现学现卖,希望写点东西,随着理解的深入可能我会修改这篇博客。闲话少说,首先是些注解的编写: 一.注解(Annotation): 编写注解必须要了解元注解的概念,其实就是定义注解的注解,meta-Annotation,Java1.5以后一共定义了四个元注解,     1.

2017-04-21 17:07:00 912

原创 参数效验@Valid

最近在看spring boot的文档(http://docs.spring.io/spring-boot/docs/1.5.2.RELEASE/reference/htmlsingle/),里面提到了使用@Valid 参数验证,这个注解比较实用,这里介绍一下如何在spring-boot中使用:import javax.validation.Valid;import com.framework.co

2017-04-20 20:11:22 798

空空如也

空空如也

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

TA关注的人

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