- 博客(121)
- 资源 (16)
- 收藏
- 关注
原创 Java源码之Vector
Java源码之Vector存储实现特征源码分析Vector构造方法如下带初始容量的构造方法继承关系存储实现Vector底层存储实现是通过可变数组来存储元素的特征可以通过数组下标寻找元素,时间复杂度为O(1)对于add(int index, E element) 时间复杂度为O(n),空间复杂度为O(n)Vector是一种查找快速的数据结构源码分析Vector构造方法如下 /** * Constructs an empty vector so that its inte
2020-09-21 09:50:44 98
原创 java异常处理的一些思考
java异常处理的一些思考public class ExceptionTest { public static void main(String[] args) throws Exception { for (int i=0;i<5;i++){ System.out.println(i); if ((i==3)){ catchMethod(); } }
2021-06-01 18:14:10 169
原创 2020-10-19
Java源码之HashSet特征存储实现源码分析构造方法add方法特征HashSet是一个存储不重复元素的数据结构,存储实现HashSet底层存储实现是通过一个HashMap来存储元素的,存储的元素为hashmap的key,值为new Object()源码分析构造方法 /** * Constructs a new, empty set; the backing <tt>HashMap</tt> instance has * default
2020-10-19 16:00:42 175
原创 Java源码之HashMap
Java源码之HashMap特征存储实现源码分析构造方法put方法get方法特征HashMap是一个存储K-V的数据结构,key可以为null 时间复杂度为O(1),空间复杂度为O(n)存储实现HashMap底层存储实现是通过数组链表实现的![在这里插入图片描述](https://img-blog.csdnimg.cn/20201019110841748.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,te
2020-10-19 15:54:12 186
原创 java数据结构总览
java数据结构总览java数据结构总览Collection类介绍java数据结构总览下图为java数据结构的整体介绍Collection类介绍Collection类是java集合层次中的根接口,在Collection源码中介绍到Collection下的元素有 /** * * @author Josh Bloch * @author Neal Gafter * @see Set * @see List * @see Map * @see Sort
2020-07-10 10:33:48 156
原创 Java源码之ArrayList
Java源码之ArrayList存储实现源码分析ArrayList构造方法如下带初始容量的构造方法继承关系存储实现ArrayList底层存储实现是通过数组来存储元素的源码分析ArrayList构造方法如下 /** * Constructs an empty list with an initial capacity of ten. */ public ArrayList() { super(); this.elementData
2020-07-09 19:39:12 148
原创 Consumer Liveness检测机制
Consumer liveness检测机制;Consumer livelock介绍和规避策略 我们都知道能够触发Rebalance的原因有很多,其中就包括Group中新增或者移除Consumer Client。除去客户端主动断开连接会通知Coordinator执行Client的移除操作外,Kafka本身提供了多种机制来检测Consumer liveness(Consumer的消费能力/Consumer的活跃度)。 熟悉的有session.timeout.ms和heartbeat.interv
2020-05-23 10:11:39 423
原创 spring源码阅读之循环依赖的解决
循环依赖就是循环引用,就是两个或多个Bean相互之间的持有对方,比如CircleA引用CircleB,CircleB引用CircleC,CircleC引用CircleA,则它们最终反映为一个环。此处不是循环调用,循环调用是方法之间的环调用。如下图所示:循环调用是无法解决的,除非有终结条件,否则就是死循环,最终导致内存溢出错误。循环依赖的产生和解决的前提循环依赖的产生可能有很多种情况...
2020-04-22 14:47:15 180
转载 spring源码阅读之AbstractBeanFactory与bean的加载过程
AbstractBeanFactory的层次结构一. AbstractBeanFactory的作用api里是这样说的,是抽象BeanFactory的基类,同时实现了ConfigurableBeanFactory的SPI,提供了所有的功能 也可以从我们定义的资源中resource中来获取bean的定义. 也提供了单例bean的缓存通过DefaultSingletonBeanRegis...
2020-04-21 22:28:24 435
原创 spring源码之二:Spring容器启动与单例bean的初始化
在上一篇文章中分析了spring容器的初始化过程,这篇文章分析spring容器的初始化与单例bean的初始化过程这里说一个IDE看源码的过程,有时候你找不到源码之间的调用关系,在方法上使用快捷键CTRL+G,查找方法被调用的过程上一篇文章说过spring通过initWebApplicationContext类的initWebApplicationContext()方法初始化web容器,代码...
2020-04-21 17:09:59 274
原创 spring扩展点之BeanFactoryPostProcessor和BeanPostProcessor
先来看下这两个接口的定义:/* * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance wit...
2020-04-21 16:22:55 304
原创 Spring之一 Spring容器XmlWebApplicationContext实例化与启动过程
XmlWebApplicationContext它既是 DispatcherServlet 的 (WebApplicationContext)默认策略,又是 ContextLoaderListener 创建 root WebApplicationContext(根容器,同时也是 DispatcherServlet 的 WebApplicationContext 的父容器)的默认策略。X...
2020-04-21 12:35:01 1059
原创 关于缓存击穿、缓存雪崩、缓存穿透
设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。缓存穿透缓存穿透是指查询一个在DB中根本不存在的key,由于缓存一般是不命中时被动写入的,如果从存储层查不到数据是不写入缓存,这将导致这个不存在的数据请求每次都要请求到存储层,失去了缓存的意义,流量大的时候,可能会导致DB宕机。解决方案1、采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitma...
2019-08-15 10:23:37 105
原创 关于Redis分布式锁
关于Redis分布式锁参考:https://redis.io/topics/distlock关于分布式锁的一些设计要点:安全性保证:互斥,在任何一个时刻,只有一个客户端能获取锁。 可靠性A:不会发生死锁,最终会获取到锁,即使持有锁的客户端宕机。 可靠性B:容错,只要集群中的大多数redis节点正...
2019-08-09 14:19:41 114
原创 Redis学习笔记
Redis学习笔记单线程架构redis使用了单线程架构和I/O多路复用模型来实现高性能的内存数据库服务为什么单线程还能这么快 纯内存访问,Redis将所有数据放在内存中,内存的响应时长大约为100ns 非阻塞I/O,Redis使用epoll作为I/O多路复用技术的实现,再加上Redis自...
2019-08-08 18:20:07 158
原创 KAFKA学习记录
KAFKA学习记录我学习kafka主要是通过《kafka权威指南》这本书,以及网上的一些博客,看书遇到不明白的地方就去网上找一些资料,包括以下几个博客美团的一个技术写的:https://blog.csdn.net/lizhitao/article/details/39499283看书的过程还是...
2019-08-07 15:57:21 132
原创 springboot实现自定义starter
springboot实现自定义starter上一篇文章说了springboot的原理,接下来就来实现自定义的starter创建一个maven工程,名称为hello-starter,pom如下<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www...
2019-07-11 15:28:40 150
原创 springboot原理
springboot原理springboot是一种简化了spring配置的技术,使用“约定优于配置”的架构理念让项目快速运行起来。spring boot核心功能独立运行的spring项目 内嵌servlet容器 提供starter简化maven配置 自动配置 springboot会根据在类路径中的jar包...
2019-07-11 09:40:10 350
原创 spring cloud之Zuul
经过前几篇文章,微服务架构已经初据雏形,思考下,这种架构还有一些问题-不同的微服务一般会有不同的网络地址,而客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有如下的问题客户端会多次请求不同的微服务,增加了客户端的复杂性 认证复杂,每个服务都需要独立认证 难以重构,随着项目的迭代,可能需要重新划分微服务,例如可能将多个服务合并成一个或者将一个服...
2019-07-10 10:38:04 113
原创 spring cloud之Hystrix
雪崩效应:微服务架构的应用系统通常包含多个服务层。微服务之间通过网络进行通信,从而支撑起整个应用系统,因此,微服务之间难免存在依赖关系。任何微服务都并非100%可用,网络往往也很脆弱,因此有些请求会失败。我们常把”基础服务故障“导致”级联故障“的现象称为雪崩效应,雪崩效应描述的是提供者不可用导致消费者不可用,并将不可用逐渐放大的过程。雪崩效应形成过程如上图所示,服务A作为服务提供者(基...
2019-07-09 17:41:09 187
原创 springCloud之Ribbon负载均衡
常见负载均衡算法轮询法:将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。 随机法:通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问。由概率统计理论可以得知,随着客户端调用服务端的次数增多,其实际效果越来越接近于平均分配调用量到后端的每一台服务器,也就是轮询的结果。 源地址哈希:源地址哈希的...
2019-07-09 15:49:44 365
原创 springcloud之eureka
在微服务架构中,服务发现组件是一个非常关键的组件,使用服务发现组件后的架构图如下服务提供者、服务发现组件、服务消费者这三者的关系如下各个微服务在启动时,将自己的网络地址等信息注册到服务发现组件(注册中心),服务发现组件会储存这些信息服务消费者可从服务发现组件查询服务提供者的网络地址,并使用该地址调用服务提供者提供的接口各个微服务与服务发现组件之间使用一定机制通信,服务发现组件...
2019-07-07 22:57:31 109
原创 微服务架构
微服务架构:微服务架构就是一种将单一应用程序开发为一组小型服务的方法,每个微服务运行在自己的进程中,服务间采用轻量级通信机制(通常是http资源api),这些服务围绕业务能力构建并且可以通过独立部署,服务可用不同的语言开发,使用不同的数据存储技术。微服务架构特性:每个微服务运行在独立的进程里。 一系列独立运行的微服务共同构建起整个系统 每个服务为独立的业务开发,一个微服务只关注某个特定...
2019-07-07 17:14:05 268
原创 springcloud学习记录
最近几年微服务比较流行,所以趁着周末把最近学习的微服务以及微服务框架过程记录下来,一方面是加深学习印象,另一方面是为了日后复习用的。关于微服务的一些概念这里就不重复了,有需要的可以去网上找些资料来看看。我这边学习参考的主要有两本书,一本是《Spring Cloud微服务实战》,另一本是《Spring Cloud与Docker微服务架构实战》网上都有pdf版本,先看下pdf版本的,觉得还不错的可...
2019-07-07 16:47:41 85
原创 设计模式学习
最近在学习设计模式,在网上看到一系列很优秀的关于设计模式的文章,给出博客地址去看原文https://blog.csdn.net/LoveLion/article/details/17517213
2019-06-19 14:54:40 94
原创 Redis开发与运维读书笔记
Redis开发与运维读书笔记虽然一直使用redis,但是对redis缺少整体的一个学习,这两天趁着有时间就把这本书拿出来看了下,这本书应该来说是很有阅读空间的,读的过程做了些笔记,相当于备忘单线程架构redis使用了单线程架构和I/O多路复用模型来实现高性能的内存数据库服务为什么单线程还能这么快 纯内存访问,Redis将所有...
2019-04-23 19:05:31 271
原创 ThreadLocal原理解析
ThreadLocal原理解析 import java.util.concurrent.atomic.AtomicInteger; public class ThreadId { // Atomic integer containing the next thread ID to be assigned ...
2019-03-31 19:11:35 160
原创 elasticsearch的内部分片原理
elasticsearch的内部分片原理我们知道elasticsearch的搜索是基于倒排索引,倒排索引被写入磁盘后是不可改变的:它永远不会修改。不变性有重要的价值:不需要锁。如果你从来不更新索引,你就不需要担心多进程同时修改数据的问题。 一旦索引被读入内核的文件系统缓存,便会留在哪里,由于其不变性。只要文件系统缓...
2019-03-28 12:53:11 1317
原创 elasticsearch之分布式搜索过程
elasticsearch之分布式搜索过程elasticsearch搜索被执行成一个两阶段过程,我们称之为query then fetch查询阶段:在初始查询阶段时,查询会广播到索引中每一个分片拷贝(主分片或者副本分片)。 每个分片在本地执行搜索并构建一个匹配文档的 _优先队列_。一个优先队列仅仅是一个存有top-n匹配文档的...
2019-03-28 10:14:31 247
原创 elasticsearch之查询
elasticsearch之查询Elasticsearch 使用一种称为倒排索引的结构,它适用于快速的全文搜索。一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表例如,假设我们有两个文档,每个文档的content域包含如下内容:The quick brown fox jum...
2019-03-27 19:30:24 141
原创 【springMvc学习记录之一】spring DispatcherServlet
【springMvc学习记录之一】DispatcherServletspringMvc model-view-controller (MVC)是spring为web开发提供的一个框架。这个框架就是围绕DispatcherServlet类来设计。springMvc框架类似于其他mvc框架,都是由请求驱动的(request-driven)。Disp...
2019-03-25 18:59:51 231
原创 spring container
spring containerorg.springframework.context.ApplicationContext接口代表一个spring container,它通过读取元数据来初始化、配置和组装beans。元数据的变现形式一般为xml配置文件、java注解、java代码。元数据允许开发者表达组成应用程序的对...
2019-03-25 15:00:42 894
原创 Spring之基于注解的容器配置
Spring之基于注解的容器配置@Required@required注解用于bean的property注解,egpublic class SimpleMovieLister { private MovieFinder movieFinder; @Required public void setMovieF...
2019-03-25 12:41:15 181
原创 spring容器扩展之FactoryBean
Spring容器扩展之FactoryBean FactoryBean接口是Spring IoC容器实例化逻辑的扩展点。一、区别FactoryBean和BeanFactory首先不要混淆FactoryBean和BeanFactory。BeanFactory直译是生产Bean的工厂,在Srping中就是容器,常用的Applica...
2019-03-25 10:54:39 409 1
原创 spring容器扩展之BeanFactoryPostProcessor
spring容器扩展之BeanFactoryPostProcessorpring允许BeanFactoryPostProcessor在容器创建bean之前读取bean配置元数据,并可进行修改。例如增加bean的属性和值,重新设置bean是否作为自动装配的侯选者,重设bean的依赖项等等。在srping配置文件中可以同时配置多个BeanFactoryPo...
2019-03-24 23:15:22 169
原创 spring 容器扩展之BeanPostProcessor
spring 容器扩展之BeanPostProcessorspring的BeanPostProcessor接口给开发者提供了一个容器扩展的入口,在Spring容器完成Bean实例化和属性设置后,并且在bean调用初始化方法之前或之后。因此BeanPostProcessor(Bean后置处理器)常用在:对bean内部的值进行修改;实现Bean的动态...
2019-03-24 22:56:01 263
原创 spring bean 生命周期
spring bean 生命周期spring bean的生命周期从容器启动开始到容器停止运行,如图代码如下package com.spring.model;import org.springframework.beans.factory.DisposableBean;import org.springfra...
2019-03-24 19:56:50 180
原创 spring aware
Aware,是感应和感知的意思。当bean实现了对应的Aware接口时,BeanFactory会在生产bean时根据它所实现的Aware接口,给bean注入对应的属性,从而让bean获取外界的信息。aware的层次结构如下简单分析下各个接口的使用org.springframework.context.ApplicationContextAware接口实现该接口的类将会获取App...
2019-03-24 16:23:00 153
原创 spring容器生命周期回调
spring容器生命周期回调上一篇文章中我们谈了spring bean生命周期回调,这些都是建立在容器已经启动的前提下,那么如果想参与spring 容器的生命周期回调,我们该怎办?spring提供了一些接口Lifecycle接口如下public interface Lifecycle { void star...
2019-03-24 15:09:29 758
axis2-eclipse服务端插件
2017-09-26
axis2-eclipse插件
2017-09-26
课程设计 软件园
2013-06-13
学生成绩管理系统
2012-09-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人