自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mysql架构与Mysql执行流程

Mysql架构与Mysql执行流程整体架构从整体架构上来说,mysql可以分为三层(连接层、服务层、存储引擎层)连接层查询连接数可以通过查询语句:show global status like "%thread%";查看当前mysql的连接数(客户端没发起一个连接或一个会话,mysql服务端都会创建一个线程来处理)变量名称含义Threads_cached缓存的线程连接数Threads_connected当前打开的连接数Threads_created

2020-12-09 16:02:33 241

原创 Sentinel源码解析

Sentinel源码解析目录Sentinel源码解析sentinel与spring cloud集成核心方法SphU.entry(..)lookProcessChain(..)chain.entry(..)方法NodeSelectorSlot(@SpiOrder(-10000))ClusterBuilderSlot(@SpiOrder(-9000))LogSlot(@SpiOrder(-8000))StatisticSlot(@SpiOrder(-7000))AuthoritySlot(@SpiOrder(

2020-10-09 17:34:42 1150 1

原创 Nacos配置中心源码解析

Nacos配置中心源码解析目录Nacos配置中心源码解析入口分析PropertySourceBootstrapConfiguration加载共享配置loadSharedConfiguration(composite)加载扩展配置加载应用本身的配置客户端动态感知NacosConfigServicecheckLocalConfig(..)方法checkUpdateDataIds(..)方法checkUpdateConfigStr(..)方法服务端处理长轮询请求inner.doPollingConfig(req

2020-09-24 15:02:15 2983

原创 dubbo的异步化调用分析

话不多说,开始分析dubbo的异步化调用。该文章以org.apache.dubbo的2.7.8最新版本为准。dubbo支持的调用模式dubbo支持四种调用方式(oneway/sync/future/callback)这里引用文章Dubbo 2.7新特性之异步化改造的图oneway:一次调用,不需要返回,客户端线程请求发出即结束,立刻释放线程资源。sync:同步调用,客户端线程发送请求后,会阻塞,等到服务端返回后,才会重新唤醒线程,并继续执行后续代码步骤。future:异步化调用,客户端

2020-09-19 09:36:14 1301

原创 为什么类加载器要使用双亲委派模式来设计?

为什么类加载器要使用双亲委派模式来设计?类与类加载器类加载器的类型类加载器和双亲委派模式的关系类与类加载器jvm中,确定一个类的唯一性是依赖于加载这个类的类加载器和这个类本身的。只有加载类的类加载器和类本身两者都一直,jvm才会认为这个类是唯一的。类加载器的类型从JVM层面来讲,有两种:1、启动类加载器(Bootstrap ClassLoader)该加载器由C++语言实现,属于JVM内部。2、其他的类加载器该类有java语言编写,属于JVM外部,全部继承于抽象类java.lang.Class

2020-06-11 17:32:37 1857 2

原创 设计模式学习笔记(1)

设计模式学习笔记(1)前言正文单例模式实现方式饿汉式单例优点缺点代码实现懒汉式单例优点缺点代码实现测试效果解决线程不安全问题1、加锁(synchronized)线程安全且不影响性能的懒汉式单例实现方式为什么静态内部类能实现线程安全呢?前言今天学习单例模式和原型模式。正文单例模式单例模式:主要是为了实现资源共享,只需要初始化一次,后续就能够重复使用,而不需要重新创建。实现方式饿汉式...

2018-11-30 17:18:46 364

原创 JAVA集合源码攻坚战(20)——BlockingQueue

JAVA集合源码攻坚战(20)——BlockingQueue前言正文什么是BlockingQueue?介绍方法注意点前言好,接下来看BlockingQueue。正文什么是BlockingQueue?BlockingQueue就是阻塞队列,它是继承了Queue的一个接口,它在检索和插入元素时,如果条件不满足,会阻塞等待,直到满足条件,继续执行。BlockingQueue的结构Inter...

2018-11-06 17:24:36 183

原创 JAVA集合源码攻坚战(19)—— Deque

JAVA集合源码攻坚战(19)—— Deque前言正文什么是Deque?前言今天任务完成,继续学习源码~~正文什么是Deque?根据官方文档,Deque是一种两端都支持插入和移除操作的线性集合结构。Deque是“double ended queue”的缩写,发音同“deck”。双端队列不仅支持固定容量的,也支持不固定容量的。一般来说,双端队列的容量大小都是不固定的。java.uti...

2018-11-06 13:02:31 211

原创 JAVA集合源码攻坚战(18)——AbstractQueue

JAVA集合源码攻坚战(18)——AbstractQueue前言正文前言正文

2018-11-05 10:08:32 257

原创 JAVA集合源码攻坚战(17)—— Queue

JAVA集合源码攻坚战(17)—— Queue前言正文源码解析前言本篇开始我们来分析Collection的最后一个主要分支——Queue队列。正文源码解析package java.util;/** * 设计用于在处理之前保留元素的集合。 * 除了基础的Collection操作,队列提供了额外的插入、提取和检查操作。 * 这些方法中的每个都支持两种形式: * 1、如果操作失败...

2018-10-31 17:23:49 340

原创 JAVA集合源码攻坚战(16)—— NavigableSet

JAVA集合源码攻坚战(16)—— NavigableSet前言正文源码分析查找操作查找并移除操作迭代器获得子集操作前言NavigableSet是对SortedSet的一个增强实现,能够进行数据的匹配。具体我们看分析代码。正文java.util Interface NavigableSet<E>参数类型 E - 由此集合维护的元素的类型 All Superinterf...

2018-10-30 15:00:11 527

原创 JAVA集合源码攻坚战(15)—— SortedSet

JAVA集合源码攻坚战(14)—— SortedSet前言正文标准源码解析子集操作元素操作比较器前言前面我们已经分析了HashSet这一个分支,今天我们来分析SortedSet这个分支。正文前面的HashSet实现是无序的,而这条线上的SortedSet,顾名思义,是有序的set集合。java.util Interface SortedSet<E>参数类型 E - 由...

2018-10-30 10:37:26 532

原创 JAVA集合源码攻坚战(14)—— LinkedHashSet

JAVA集合源码攻坚战(14)—— LinkedHahSet前言正文前言今天快下班了,简单看了下LinkedHashSet的相关源码 o(*^@^*)o正文通过源码,我们可以看到,LinkedHashSet的源码很少很少。/* * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. ...

2018-10-29 17:29:10 194

原创 JAVA集合源码攻坚战(13)—— HashSet

JAVA集合源码攻坚战(13)—— HashSet前言正文什么是HashSetHashSet如何存储数据属性解析方法解析构造方法迭代器基础操作前言前面介绍了Set这一分支的接口和抽奖类,今天来看看它的一个具体实现类——HashSet。正文HashSet层次结构java.util Class HashSet<E>java.lang.Object java.util.Abs...

2018-10-29 17:04:40 172

原创 JAVA集合源码攻坚战(12)—— AbstractSet

JAVA集合源码攻坚战(12)—— AbstractSet前言正文实现的方法equals方法hashCode方法removeAll方法无参构造器前言上一篇对Set接口的方法做了个简单的介绍,主要需要注意的,就是Set是不支持重复元素,并且,无法用索引来获取对应元素。因为可以看到,声明的方法里没有根据位置信息来查找元素的。正文这里我们来介绍Set的一个抽象实现类AbstractSet。ja...

2018-10-26 17:32:20 214

原创 JAVA集合源码攻坚战(11)—— Set

JAVA集合源码攻坚战(11)—— Set前言正文前言好,今天开始学Set,你说为什么?没有为什么!!W( ̄_ ̄)W正文

2018-10-26 11:35:13 272 1

原创 JAVA集合源码攻坚战(10)——Stack

JAVA集合源码攻坚战(10)——Stack前言正文前言上篇我们简单介绍了下Vector,没有细讲,因为Vector和ArrayList实在没有什么很大的区别,最主要的就是一个是否是同步,一个扩容机制的区别。然后我们这篇就干脆把这一条支线讲完,接下来就是Vector的一个子类,有名的栈Stack。栈Stack作为学习数据结构只是的一个必学知识点,他的知名度比父亲Vector可要大的多了,正所...

2018-10-24 12:13:48 172

原创 JAVA集合源码攻坚战(9)—— Vector

JAVA集合源码攻坚战(9)—— Vector前言正文Vector前言上一篇博文已经讲到了AbstractSequentialList这个接口类,本来是想先看LinkedList的源码的,但是发现LinkedList实现了队列相关接口,所以这里还是先把list的其他部分讲完。正文Vector...

2018-10-22 16:36:54 238

原创 JAVA集合源码攻坚战(8)——AbstractSequentialList

JAVA集合源码攻坚战(8)——AbstractSequentialList前言正文简介构造函数get操作set操作add操作remove操作addAll操作前言前面已经初步介绍过了Arraylist了,那么后面就应该讲讲经常会拿来和ArrayList进行对比的LinkedList吧,不过因为这之间还有个区别,因为LinkedList并不是直接继承了AbstractList的,中间还有个抽象类...

2018-10-12 14:34:27 217

原创 JAVA集合源码攻坚战(7)——ArrayList

前言前面都是分析了一些接口或抽象类。是不是感觉很枯燥?那么今天就来看看十分常用的ArrayList,看看它到底是如何来实现前面说的那些接口或者抽象类的。ArrayList数据结构我们说一个集合,不得不提的就是他存储的数据结构到底是怎样的。ArrayList,通过名字就能看出,是Array + List,虽然不能等同,但是能从这方便去思考。ArrayList底层就是数组一个数组结构,但是...

2018-10-11 18:13:23 233

原创 JAVA集合源码攻坚战(6)——AbstractList

前言前面我们已经分析过AbstractCollection和List这两个接口类了,接下来分析AbstractList。AbstractList的父母刚刚灵光一闪,想到一个不太恰当的比喻。比如AbstractList,继承了AbstractCollection,实现了List接口,那么AbstractCollection相当于是父亲,子承父业,List相当于母亲,百善孝为先,应该实现母亲的愿...

2018-10-10 18:00:46 199

原创 JAVA集合源码攻坚战(5)——AbstractCollection

前言前面讲到Collection后,把这个类给漏掉了。AbstractCollection是对Collection接口的一个直接实现,而像list和set集合的具体实现的抽象类,也都是通过继承它来实现的。正文根据官方文档:This class provides a skeletal implementation of the Collection interface, to minim...

2018-10-09 16:52:14 172

原创 JAVA集合源码攻坚战(4)——List

前言根据java 8 的官方文档,Collection接口类下面有三个子接口类,List、Set、Queue。List基础List接口是定义了一个元素有序的、可重复的、可为null的集合结构。为什么List中元素是有序的呢?根据官方文档描述The user of this interface has precise control over where in the list e...

2018-10-09 14:52:14 189 1

原创 JAVA集合源码攻坚战(3)——Collection

前言集合作为java中一个重要的组成部分,必须攻克!什么是集合在我看来,从本质上来说,集合首先是一个容器,里面可以存放数据,不管是基本类型还是其他类型的数据。从作用上来说,集合又提供了一些方法,能对存放在里面的数据进行操作,增删查等等。什么是集合框架在java 2 之前,已经有许多类来存储和操作数据对象,但是没有一个统一的标准,使得使用不同的集合类有很大的不同,而为了解决这个问题,建立了...

2018-10-09 10:40:31 165

原创 JAVA集合源码攻坚战(2)——ListIterator

前言上一篇主要介绍了java集合框架的一个整体结构,并简单分析了下Iterator接口的源码,接下来分析ListIterator的源码ListIteratorListIterator也是一个接口类,继承了Iterator接口,对比于Iterator,它的方法如下:boolean hasNext() // 判断后面是否还有元素E next() // 返回下一个元素boolean ha...

2018-10-09 09:19:19 157

原创 JAVA集合源码攻坚战(1)——Iterator

前言工作了两年了,对JAVA集合框架部分,只知道怎么用,却不知道原理,不能说是一个合格的java程序员,深感知识的缺乏,所以趁最近有空,进行JAVA集合攻坚战,学习JAVA集合部分的源码,以jdk 1.8为准。整个JAVA集合框架的概图这里先看一张取自菜鸟教程的java集合框架图菜鸟教程的这张图已经包括了大部分类和接口之间的关系,不过还有一些遗漏的,而且也没有很好的表示出继承或实现的关系...

2018-10-08 17:04:59 204

原创 python爬虫学习——糗事百科

python爬虫学习——糗事百科正文前言准备工作网站页面分析利用模块代码备注正文前言最近在学习python爬虫,忍不住手痒,拿了糗事百科试试水。准备工作python2.7.14版本开发工具:pycharm网站页面分析https://www.qiushibaike.com/hot/page/1/利用浏览器进行分析,这里获取段子的发布人名称和内容,具体的网页分析不赘述。利用模块...

2018-09-21 14:14:25 189

原创 java 利用common-httpclient包来实现post请求

项目中需要请求第三方接口,而且要求请求参数数据为json类型的。本来首先使用的是httpclient的jar包,但是因为项目中已经使用了common-httpclient的jar包,引起了冲突,所以不得不使用common-httpclient来实现。import java.io.BufferedReader;import java.io.FileOutputStream;import ja...

2018-06-15 18:06:01 5525

原创 jdk1.8 源码解读系列(三)——StringJoiner类

在看String类时,看到有使用StringJoiner类,所以顺便看了下StringJoiner类, 源码如下:/* * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license...

2018-05-22 14:13:57 472

原创 jdk1.8 源码解读系列(二)——String类

最近研究了java.lang.String类的代码。 如下: 本人才疏学浅,文中翻译有点乱,凑合着看看吧,多多包涵!/* * Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to l...

2018-05-22 13:10:25 964

原创 jdk1.8 源码解读系列(一)——Object类

/* * Copyright (c) 1994, 2012, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * */package java.lang;/** * Class {@code ...

2018-05-13 09:08:03 1064

原创 设计模式学习之旅(三)——基于菜鸟教程

设计模式-桥接模式桥接模式的定义引用菜鸟教程上的定义, 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。 我们通过下面的实例来演示桥接模式(Br...

2018-05-12 10:32:18 136

原创 设计模式学习之旅(一)——基于菜鸟教程

2018-05-09 12:17:39 683 1

原创 多线程之ThreadLocal分析

一、前言最近在项目中用到ThreadLocal,所以在此做个对ThreadLocal的分析总结。二、ThreadLocal是什么ThreadLocal看上去是一个线程,其实它并不是一个Thread,而是一个threadlocalvariable,即线程局部变量,它的功能很简单,就是为每一个使用该变量的线程提供一个副本,使得每一个线程都可以独立的改变自己的副本,而不用担心影响其他线程...

2018-05-02 10:49:14 223

原创 Linux 删除文件和文件夹命令

最近用到linux系统,需要删除文件和文件夹,干脆做个记录。 1、删除文件夹 rm -rf 目录名或目录路径 -r 表示向下递归,会一层一层的往下找 -f 表示强制,force的意思2、删除具体文件 rm -f 文件名或文件路径...

2018-04-27 17:09:14 268 1

原创 数据库设计三大范式

前言最近在知乎上看要怎么才能打好java的基础,看到有大佬回答说对于数据库要懂得数据库设计三大范式。故此查询了一些资料,做了些整理。 一个好的数据库结构,能够有效减小数据冗余,减少增删改中出现的问题,提高开发人员对数据库的操作。深入理解数据库设计的三范式,对于设计“健壮的数据库“十分有必要。数据库三范式是设计数据库 时参考的准则,接下来做一个简单的介绍。第一范式数据的原子性数据库...

2018-04-24 17:08:44 258

原创 利用WebMvcConfigurerAdapter来配置springmvc相关内容

前言最近,接手了一个项目,要开发迭代版本,那么久势必要看看这个项目原来的架构。 首先就去找了spring相关的配置文件,发现竟然没有,就奇怪了,那是怎么配置的呢?然后就想到了可能是用java类来配置的,果不其然,找到了相关的类,该类继承了WebMvcConfigurerAdapter,达到配置的目的。配置代码下面说说几个重要的配置,其他的都是大同小异,与xml配置一样,只是写法不...

2018-04-23 17:22:25 926

原创 乐观锁和悲观锁的区别

定义悲观锁(Pessimistic Lock)顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整...

2018-04-19 22:49:33 600

原创 使用js控制input标签的值和属性

最近在项目中,做一个表单提交验证,要求一个公司名称和一个公司编号都不能为空,这个简单,只要利用jQuery Validate来进行表单验证即可。 但是因为需求,需要对某个特殊公司进行特殊处理,该公司没有公司编码,无法填写公司编码。 所以,根据公司名称对该公司做了特殊处理。 这里运用了js对input标签的属性控制和值控制,并且使用鼠标移除事件blur来处理。 基本上只要有过开发经验的,都知...

2018-04-19 13:41:31 17687 2

原创 hashmap的存储机制

HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。在Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是指针(引用),HashMap就是通过这两个数据结构进行实现。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。 如上图所示,hashm...

2018-04-18 22:21:15 2005

空空如也

空空如也

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

TA关注的人

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