自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java中的类加载机制

类加载机制类加载过程类加载时机父类与子类初始化类加载的加载阶段类加载的链接阶段验证准备解析类加载的初始化阶段类加载过程类从加载到卸载为止,生命周期包括:加载(Loading)→验证(Preparation)→解析(Resolution)→初始化(Initialization)→使用(Using)→卸载(UnLoading)。其中验证、准备和解析三个部分称为链接(Linking)。类加载时机类加载时机有且只有以下情况:遇到 new、getstatic、putstatic、invokestatic

2021-07-26 21:45:59 174

原创 static关键字详解

static关键字static——静态修饰符作用static修饰变量static修饰方法static修饰类static——静态修饰符作用static修饰变量静态修饰变量:用来声明独立于对象的静态变量,无论类实例化多少,其静态变量都只有一份拷贝,静态变量也被称为类变量。静态变量和实例变量的区别:存储位置不同:静态变量存储在JVM的方法区中,实例变量存储在JVM的堆区静态和类有关:一个类只有一份静态变量(同一静态变量只有一份);实例变量和对象有关:有多少对象就有多少实例变量使用方式不同:静态变

2021-07-21 19:25:05 609

原创 接口与抽象类详解

接口与抽象类抽象类定义特征抽象方法总结接口定义特征总结接口与抽象类的区别语法层面设计层面图示抽象类定义抽象类:一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。类被关键字Abstract修饰。特征不能用来实例化对象,抽象类必须被继承才能被使用抽象类的修饰符不能是private抽象类中不一定包含抽象方法,但有抽象方法的类一定是抽象类抽象类的子类必须实现抽象类中的方法,除非子类也是抽象类抽象方法抽象方法:该方法的具体实现由它的子类确定,那么你可以声明该方法为抽象方法。

2021-07-21 18:01:46 239

原创 final关键字

final关键字finalfinal修饰变量final修饰方法final修饰类finalfinal关键字可以用来修饰变量,方法,和类。final修饰变量当final修饰变量时,就等同于一个常量。这里定义了一个参赛选手的类,public class People{ private String name; private int id; private String gender; private final int joinNumber =1000;//这里定义了

2021-07-20 22:52:27 153

原创 面向对象三/四大特征(二)——封装、多态、(抽象)

面向对象的特征面向对象三(四)大特征——封装、多态封装访问修饰符封装的步骤多态多态的优点多态实现的条件多态的实现原理静态绑定——重载动态绑定——重写多态的实现方式面向对象三(四)大特征——封装、多态封装封装:是指一种将抽象性函式接口的实现细节部分包装,隐藏起来的方法。访问修饰符修饰符同类同包子类不同包public√√√√protected√√√×默认√√××private√×××封装的步骤1.修改属性访问的可见性

2021-07-20 20:37:49 98

原创 Java重载与重写

方法的重载与重写重载重载规则重载举例重写重写规则重写举例重载与重写的区别总结重载重载:即相同的作用域(同一类中),方法名相同,参数列表不同(参数个数或类型不同)。重载规则被重载的方法必须改变参数列表被重载的方法可以改变返回类型被重载的方法可以改变访问修饰符被重载的方法可以声明新的或更广的检查异常方法能够在同一类中或者子类中被重载无法以返回值类型作为重载函数的区别标准重载举例最常用的重载就是构造方法中:有参构造方法和无参构造方法。public class Animal {

2021-07-20 19:15:33 85

原创 面向对象的三/四大特征(一)——继承

面向对象的特征三(四)大特征继承封装多态抽象三(四)大特征继承封装多态抽象

2021-07-20 17:25:42 62

原创 Java线程的并发及并行

并发与并行并发与并行的区别并发概念临界资源和临界区什么是线程安全?并发的特性原子性可见性有序性并发与并行的区别并发是指多个线程操作同一个资源,不是同时执行,而是交替执行。单核CPU,只不过因为CPU的时间片很短,速度太快,看起来是同时执行。并行才是真正的同时执行,多核CPU。每个线程使用一个单独的CPU的资源来运行。并发示意图:并行示意图:但在多数情况下,我们的即使有多核,也同样存在并行的情况,且存在并行与并发同时存在的情况。并发概念Java并发的重要性毋庸置疑,可以最大化的提高计算资源

2021-07-19 16:55:44 911

原创 Redis事务详解

Redis事务事务事务的执行过程事务命令事务命令使用正常执行事务放弃事务编译时异常执行时异常watch正常执行事务被打断事务说到事务,我们都能一下想到事务的四个特性(ACID):原子性(Atomic):整个事务中的操作只有两种情况,全部完成和全部没有完成。一致性(Consistency):事务开始之前和事务结束以后,数据库的完整性约束没有被破坏或前后状态一致。隔离性(Isolation):一个事务内部的操作及使用的数据对其他事务是隔离的,并发执行的各个事务之间不能相互干扰。持久性(Durabi

2021-07-18 22:02:37 101

原创 Redis持久化机制

Redis持久化持久化RDB内存快照触发时机优缺点AOF日志文件AOF回写机制优缺点持久化Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘中,那么一旦服务器进程退出,服务器中的数据库状态也就会消失,所以Redis提供了持久化的功能。持久化的方式有两种:RDBAOFRDB内存快照RDB:Redis DataBase,是Redis默认的持久化方式。快照:是特定数据集的一个完整可用的拷贝,该数据集包含源数据在拷贝点的静态映象,它可以是数据再现的一个副本或者复制。内存快照:基于内存

2021-07-12 22:07:54 103

原创 Redis配置文件详解

配置文件详解配置文件文件开头部分IncludesNetwork——网络General——通用配置Snapshotting——快照Security——安全Limits——限制Append Only Mode——AOF持久化模式配置文件Redis的配置文件,在Linux系统和Windows系统上的配置文件是不同的。Linux系统:redis.confWindows系统:redis.windows.confRedis启动时,通过读取配置文件启动。本文的讲解,基于Windows系统下,部分图片有文字

2021-07-11 22:45:26 108

原创 Redis特殊类型(三)—— Bitmaps

Redis特殊类型(三)Bitmaps常用命令setbitgetbitbitcount应用场景BitmapsBitmaps是位图存储,都是通过二进制来进行记录位图最大的优点之一是,在存储信息时,它们通常可以极大地节省空间。位图的位操作分为两组: (1)恒定时间单个位操作:例如将位设置为 1 或 0,或获取其值,(2)位组的操作:例如计算集合的数量给定范围内的位(例如,人口计数)。注意: 部分图片中有文字步骤常用命令setbit在Bitmap中添加数据:setbit key offset

2021-07-10 18:58:28 110

原创 Redis特殊类型(二)—— Hyperloglogs

Redis特殊类型(二)Hyperloglogs基数集与基数常用命令pfaddpfcountpfmerge应用场景Hyperloglogsredis中通过hyperloglogs用来进行基数统计的算法,技术估算存在一定的误差优点:在输入元素的数量或者体积非常大时,计算基数所需的空间总是固定的、且很小基数集与基数基数集:一串数据集中,除去重复元素后的得到的数据集。基数:基数集中数据的个数(不重复的元素的个数)举例:数据集:{1,3,4,8,8,4,0}基数集:{1,3,4,8,0}

2021-07-10 18:30:33 146

原创 Redis特殊类型(一)——Geospatial

Redis特殊类型地理空间——Geospatial常用方法geoaddgeoposgeodistgeohashgeoradius应用场景georadiusbymemberGeospatial应用场景地理空间——Geospatial时间复杂度:每一个元素添加是O(log(N)) ,N是sorted set中的元素数量。Geospatial指定的地理空间位置添加到指定的key中,这些数据将会存储到sorted set中,方便使用命令对数据查询等操作。常用单位有: m(米) km(千米) mi(英里)

2021-07-10 16:21:18 116

原创 Redis基本类型(五)——Zset类型

Redis基础命令(五)有序集合——Zsetzaddzrangezrangebyscorezremzcardzcount应用场景有序集合——Zset每个元素都会关联一个double类型的分数,Redis正是通过分数为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数是可以重复。有序集合中的命令是以z开头的。注意: 部分图片有步骤显示zadd添加元素:zadd key score value注:Key取名为zsetzrange获取Key中一定范围内的值 格式:zrange k

2021-07-09 17:18:47 504

原创 Redis基本类型(四)——Hash类型

Redis基础命令(四)哈希——Hashhset和hgethmset和hmgethgetallhdelhexitstshkeys和hvalshsetnx应用场景哈希——Hashhash是一个map集合,存储形式同样是key-value,但value中又是哈希的另一种形式field-value形式。命令都是以H开头的。注意: 部分图片中也是有内容的hset和hget插入哈希的值:hset key field value获取哈希的值:hget key fieldhmset和hmget批量的插

2021-07-09 16:34:29 134

原创 Redis基本类型(三)——Set类型

Redis基本命令(三)集合——Setsaddsmemberssismemberscardsremsrandmemberspopsdiff、sinter和sunion应用场景集合——Setset中元素不能重复。set实现是基于哈希表结构实现,在修改、添加等操作复杂度是O(1)。sadd在set集合中添加数据:sadd key value且可以一次添加多个value值。smembers获取set集合中所有value值:smembers keysismember判断某个值是否在set中:

2021-07-09 15:45:35 130

原创 Redis基本类型(二)——List类型

Redis基本命令(二)列表——Listlpush、rpush和lrangelpop和rpoplindexllenlremltrimrpoplpushlset应用场景列表——List类似于linkedlist链表结构,可以添加元素到列表的头部或者是尾部,同样头部和尾部都可以进行获取。list底层是一个链表,在链表插入或者改动值时,效率高,中间位置修改,相对效率低。lpush、rpush和lrange列表左侧插入:lpush key value(类似于头插法),可同时插入多个value值。列表右侧

2021-07-08 23:36:53 182

原创 Redis基本类型(一)——String类型

Redis中的基本命令(一)字符串——Stringget和setgetrange和setrangeexistsappendstrlenincr和decrincrby和decrbysetex和ttlsetnxmset和mgetgetset应用场景字符串——Stringget和set设置值:set key value获取值:get key可以看出,当key值相同时,value会进行新值覆盖旧值,且当key不存在时,返回空(NIL)。getrange和setrange获取范围内key的value值

2021-07-08 21:53:18 225

原创 Redis基础内容介绍

Redis基础介绍Redis基本概念Redis是单线程Redis的基本类型与操作基本类型字符串——string列表——list集合——set哈希——hash有序集合——zset基本操作切换数据库查看所有的key查看数据库大小清除数据库Redis基本概念Redis是一个开源的(BSD协议),内存中的数据结构存储系统,可以用来作为数据库,缓存和消息中间件。支持多种类型的数据结构,如 字符串(strings),散列(hashes), 列表(lists), 集合(sets),有序集合(sorted sets)

2021-07-08 20:59:33 68

原创 Redis前言及NoSQL

Redis介绍前言及NoSQL前言单机MySQL时代缓存和读写分离分库分表和集群NoSQLNoSQL特点NoSQL四大分类应用场景前言单机MySQL时代这种模式存在一定的性能问题:若数据量太大,一个机器放不下若数据的索引太大一个机器放不下若访问量(读写)太大,放不下缓存和读写分离网站上的访问大部分都是在读、写数据库,效率很低,因此需要中间引入缓存机制,第一次去MySQL读取数据,将数据返回给用户的同时,会将数据存储在缓存中,第二次访问时,就能直接在缓存中读取。分库分表和集群分

2021-06-29 19:12:25 70

原创 Java线程状态及其转换

Java线程的状态及转换线程状态及其转换线程的状态详细介绍:新建状态(NEW):就绪状态(RUNNABLE):运行状态(RUNNING):阻塞状态(BLOCKED):等待状态(WAITING):睡眠等待状态(TIMED_WAITING)终止状态(TERMINATED)线程状态的转换线程状态及其转换线程的状态线程的状态,在java中是提供了枚举类型的State。public enum State { NEW, //创建状态 RUNNABLE, //运行状态

2021-06-27 20:16:43 496

原创 Java线程基础方法及线程分类

线程基础方法介绍及线程分类线程基础方法start()方法run()方法yield()方法sleep()方法join()方法interrupt()方法线程的分类守护线程方法用户线程线程优先级方法:线程基础方法线程中有这么一些基础方法:start():启动线程run():子线程的执行体,常需要重写run()方法yield():线程让步sleep():线程睡眠join():线程同步interrupt():线程中断start()方法附源代码:public synchronized vo

2021-06-27 20:01:41 179

原创 Java线程的创建

多线程的创建线程的创建1.实现Runnable接口2.继承Thread类3.实现Callable接口线程的创建多线程有三种创建的方式:1.实现Runnable接口;2.继承Thread类;3.实现Callable接口;※还有一种通过匿名内部类来实现线程的创建,可以当做是一种也可以不当做一种。1.实现Runnable接口Runnable接口:public interface Runnable { public abstract void run();}Runnable接口中提供了一

2021-06-25 22:40:06 91

原创 Iterator的基础介绍与使用

Iterator(迭代器)的介绍与使用Iterator基本信息介绍功能使用Collection接口下的使用Map接口下的使用注意点Iterator基本信息介绍迭代器是一种行为型设计模式。迭代器模式提供了一个方法访问容器中的各个元素,而不用暴露其内部实现。功能能够遍历一个聚合对象/容器/集合我们不需要了解容器内部结构能够提供不同的遍历方式使用迭代器提供了三个方法:(1)HasNext()、(2)Next()、(3)remove();HasNext():boolean类型判断集

2021-06-21 17:18:52 164

原创 Map接口下的TreeMap详细

TreeMap详解(基于jdk1.8)TreeMapTreeMap源码分析继承关系属性默认值构造方法扩容机制常用方法put方法详解remove方法详解应用场景HashMap、LinkedHashMap、TreeMap的区别和联系区别联系TreeMapTreeMap底层数据结构是红黑树,红黑树是一种平衡二叉树。关于树以及红黑树的内容,详戳【树及红黑树】。TreeMap特点:不可以存储重复的数据(当Key值相同时,Value值会新值覆盖旧值)Key和Value不能存储NULL值存储的数据有序(默认

2021-06-21 15:23:32 1570

原创 二叉树,失衡二叉树,平衡二叉树及红黑树简介

二叉树,失衡二叉树,平衡二叉树,红黑树基础二叉树特点性质遍历顺序1.先序遍历2.中序遍历3.后序遍历失衡二叉树特点平衡二叉树特点平衡二叉树实例——红黑树红黑树特点:红黑树操作左旋:右旋:二叉树二叉树(Binary tree)是树形结构的一个重要类型,二叉树是每个结点最多只能有两棵子树,且有左右之分 。特点每个结点最多有两个子结点(也可以说度最大为2)任何结点的值大于其左孩子,且小于右孩子性质二叉树的第i层上至多有2i-1(i≥1)个结点深度为k的二叉树中最多含有个…结点(k≥1)对

2021-06-19 19:56:08 510

原创 Map接口下的LinkedHashMap详解

LinkedHashMap详解(基于jdk1.8)LinkedHashMap集合LinkedHashMap源码分析继承关系属性默认值构造方法accessOrder构造方法举例扩容机制常用方法应用场景LinkedHashMap集合LinkedHashMap是具有HashMap的特征:包括默认值、扩容机制…唯一不同的是:LinkedHashMap能保证数据有序性(这里是插入有序,还有一个访问顺序):插入有序:根据put的顺序访问有序:使用到get()方法后,该键值对放将会被放在最后,每当被访问,就会

2021-06-18 15:04:16 559

原创 Map接口下的HashMap

Map接口中的HashMap(基于jdk1.8)Map顶层接口HashMap集合HashMap源码分析继承关系属性默认值构造方法扩容机制常用方法put方法详解如何解决哈希冲突?应用场景Map顶层接口集合框架图Map接口是以键值对Key-Value的形式存储数据的,其中Key必须的唯一的,Value可以是多个,但会发生新值覆盖旧值的情况。Map接口下有AbstractMap接口和SortedMap接口,Map接口下集合的实现类我们可以大致分为以下三种:HashMap、LinkedHashMap、Tre

2021-06-15 21:52:17 162

原创 Queue接口下的PriorityQueue

PriorityQueue详解Queue接口PriorityQueuePriorityQueue源码解析继承关系属性默认值构造方法扩容机制常用方法add方法过程解析remove方法过程解析应用场景Queue接口Queue实质就是队列。其下有不同的Queue实现类,用的方式上是不同的。Queue接口下有以下子接口:BlockingDeque,BlockingQueue和Deque。BlockingQueue用于多线程,这里主要讲PriorityQueue。队列的性质:先进先出(FIFO)。Queue

2021-06-14 19:13:38 148

原创 Set接口下的三种实现类集合HashSet、LinkedHashSet和TreeSet

HashSet、LinkedHashSet和TreeSet详解(基于jdk1.8)Set接口HashSetHashSet源码解析继承关系属性构造方法默认值扩容机制常用方法LinkedHashSetLinkedHashSet源码解析继承关系属性构造方法默认值扩容机制常用方法TreeSetTreeSet源码剖析继承关系属性构造方法默认值扩容机制常用方法Set接口Set接口是Collection接口下的子接口,Set接口下有AbstractSet实现类和SortedSet接口,不管是继承自AbstractS

2021-06-14 14:33:44 863

原创 ArrayList和LinkedList详解

ArrayList和LinkedList详解(基于jdk1.8)ArrayList集合ArrayList源码解析继承关系属性构造方法默认值扩容机制常用方法LinkedList集合LinkedList源码剖析继承关系属性构造方法默认值扩容机制常用方法ArrayList和LinkedList的区别应用场景ArrayList集合ArrayListList实现自AbstractList抽象类,是基于数组实现List接口的实现类。特点:可以存储重复的数据,存入的数据是有序的(插入有序),可以存储NULL值。A

2021-06-13 00:56:14 242

原创 Java集合框架基础介绍

Java集合框架Java集合框架基础介绍集合框架的组成介绍IteratorCollectionList接口Set接口Queue接口Map接口HashMapLinkedHashMapTreeMapWeakHashMapHashTable工具类CollectionsArraysJava集合框架基础介绍我们都学习过基础的数据结构了,比如说数组、链表等。为什么还需要学集合框架呢?这其中最重要的一点就是集合更加高级和灵活。除此之外集合还提供了一系列的方法供我们使用,比起我们单独使用数组或者链表要方便的多。集合

2021-06-12 01:19:55 1226 1

原创 Java中this的用法与区别

this的用法:目录this的用法:1.局部变量和成员变量重复时,用this区分。2.在类或者构造方法中,用this来引用成员变量。3.在一个类中,用this来引用构造函数4.总结:1.局部变量和成员变量重复时,用this区分。 例如:setXXX()方法中:this.name = name; 下面来举个简单的例子:这里的setXXX()方法,就是用来区分局部变量和成员变量的。public class People { ...

2021-05-16 02:11:43 1493

空空如也

空空如也

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

TA关注的人

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