shark-Gao
HashMap详解
HashMap详解 HashMap 概述 如果你没有时间细抠本文,可以直接看 HashMap 概述,能让你对 HashMap 有个大致的了解。 HashMap 是 Map 接口的实现,HashMap 允许空的 key-value 键值对,HashMap 被认为是 Hashtable 的增强版,HashMap 是一个非线程安全的容器,如果想构造线程安全的 Map 考虑使用 ConcurrentHashMap。HashMap 是无序的,因为 HashMap 无法保证内部存储的键值对的有序性。 HashMap 的底层数据结构是数组 + 链表的集合体,数组在 HashMap 中又被称为桶(bucket)。遍历 HashMap 需要的时间损耗为 HashMap 实例桶的数量 + (key - value 映射) 的数量。因此,如果遍历元素很重要的话,不要把初始容量设置的太高或者负载因子设置的太低。 HashMap 实例有两个很重要的因素,初始容量和负载因子,初始容量指的就是 hash 表桶的数量,负载因子是一种衡量哈希表填充程度的标准,当哈希表中存在足够数量的 entry,以至于超过了负载因子和 ...
MyBatis二级缓存全详解
MyBatis 二级缓存全详解 MyBatis 二级缓存介绍 上一篇文章中我们介绍到了 MyBatis 一级缓存其实就是 SqlSession 级别的缓存,什么是 SqlSession 级别的缓存呢?一级缓存的本质是什么呢? 以及一级缓存失效的原因?我希望你在看下文之前能够回想起来这些内容。 MyBatis 一级缓存最大的共享范围就是一个SqlSession内部,那么如果多个 SqlSession 需要共享缓存,则需要开启二级缓存,开启二级缓存后,会使用 CachingExecutor 装饰 Executor,进入一级缓存的查询流程前,先在CachingExecutor 进行二级缓存的查询,具体的工作流程如下所示 当二级缓存开启后,同一个命名空间(namespace) 所有的操作语句,都影响着一个共同的 cache,也就是二级缓存被多个 SqlSession 共享,是一个全局的变量。当开启缓存后,数据的查询执行的流程就是 二级缓存 -> 一级缓存 -> 数据库。 二级缓存开启条件 二级缓存默认是不开启的,需要手动开启二级缓存,实现二级缓存的时候,MyBatis要求返回的P ...
Java中Comparable和Comparator的理解
Java中Comparable 和 Comparator的理解 对Comparable 的解释 Comparable是一个排序接口 此接口给实现类提供了一个排序的方法,此接口有且只有一个方法 1public int compareTo(T o); compareTo方法接受任意类型的参数,来进行比较 list或者数组实现了这个接口能够自动的进行排序,相关类的方法有Collections.sort(),Arrays.sort(); SortedMap 接口的key内置了compareTo方法来进行键排序,SortedSet 也是内置了compareTo方法作为其内部元素的比较手段 compareTo()方法与equals()方法的比较 compareTo()方法不同于equals()方法,它的返回值是一个int类型 1234int a = 10,b = 20,c = 30,d = 30;a.compareTo(b) // 返回 -1 说明 a 要比 b 小c.compareTo(b) // 返回 1 说明 c 要比 b 大d.compareTo(c) // 返回 0 说明 d 和c ...
Java中equals和hashcode的区别
Java ==、equals()和hashcode()的区别 ==、equals与hashcode的作用类似,但也各有不同。 Jvava == ==运算符用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能使用 “==” 运算符。 具体而言,如果两个变量是基本数据类型,那么可以直接使用 “==” 运算符来比较其对应的值是否相等。如果一个变量指向的数据是对象(引用类型),那么,此时涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存。 例如,对于赋值语句 String s=new String(),变量 s 占用一块存储空间,而 new String() 则存储在另外一块存储空间里,此时,变量 s 所对应的内存中存储的数值就是对象占用的那块内存的首地址。 对于指向对象类型的变量,如果要比较两个变量是否指向同一个对象,那么要看这两个变量所对应的内存中的数值是否相等(这两个对象是否指向同一块存储空间),这时候就可以用 “==” 运算符进行比较。但是,如果要比较这两个对象的内容是否相等,那么用 “ ...
IDEA快捷键大全
Idea快捷键大全(Windows) Ctrl 快捷键 介绍 Ctrl + F 在当前文件进行文本查找 (必备) Ctrl + R 在当前文件进行文本替换 (必备) Ctrl + Z 撤销 (必备) Ctrl + Y 删除光标所在行 或 删除选中的行 (必备) Ctrl + X 剪切光标所在行 或 剪切选择内容 Ctrl + C 复制光标所在行 或 复制选择内容 Ctrl + D 复制光标所在行 或 复制选择内容,并把复制内容插入光标位置下面 (必备) Ctrl + W 递进式选择代码块。可选中光标所在的单词或段落,连续按会在原有选中的基础上再扩展选中范围 (必备) Ctrl + E 显示最近打开的文件记录列表 Ctrl + N 根据输入的 类名 查找类文件 Ctrl + G 在当前文件跳转到指定行处 Ctrl + J 插入自定义动态代码模板 Ctrl + P 方法参数提示显示 Ctrl + Q 光标所在的变量 / 类名 / 方法名等上面(也可以在提示补充的时候按),显示文档内容 Ctrl + U 前往当前光标所在的 ...
Java学习路线目录索引
Java学习笔记目录索引 (持续更新中) 博主的其他笔记汇总 : 👉 学习数据结构与算法,学习笔记会持续更新: 《恋上数据结构与算法》 学习Java虚拟机,学习笔记会持续更新: 《Java虚拟机》 学习Java并发编程,学习笔记会持续更新: 《Java并发编程》 学习Java设计模式,学习笔记会持续更新: 《Java设计模式》 学习网络协议,学习笔记会持续更新: 《网络协议》 MySQL笔记: B站宋红康最新教程 (持续更新中) Java学习路线目录索引 👍 一、Java基础 UML 一 类图关系 (泛化、实现、依赖、关联、聚合、组合) Java注解详细介绍 (转载) Java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一 (转载) 枚举类 — 概述、常用方法、自定义枚举类、Enum创建枚举类 抽象类(abstract class)、接口(interface) String类 — 概述、String的性质、内存解析、常用API Java 异常介绍 (转载) 线程 — 创建方式、常用方法、线程安全问题、通信 Java集合 — Collection、Iterator、 ...
Java集合整合
什么是集合 集合就是一个放数据的容器,准确的说是放数据对象引用的容器 集合类存放的都是对象的引用,而不是对象的本身 集合类型主要有3种:set(集)、list(列表)和map(映射)。 集合的特点 集合的特点主要有如下两点: 集合用于存储对象的容器,对象是用来封装数据,对象多了也需要存储集中式管理。 和数组对比对象的大小不确定。因为集合是可变长度的。数组需要提前定义大小 集合和数组的区别 数组是固定长度的;集合可变长度的。 数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引用数据类型。 数组存储的元素必须是同一个数据类型;集合存储的对象可以是不同数据类型。 使用集合框架的好处 容量自增长; 提供了高性能的数据结构和算法,使编码更轻松,提高了程序速度和质量; 可以方便地扩展或改写集合,提高代码复用性和可操作性。 通过使用JDK自带的集合类,可以降低代码维护和学习新API成本。 常用的集合类有哪些? Map接口和Collection接口是所有集合框架的父接口: Collection接口的子接口包括:Set接口和List ...
Java对象和多态
Java对象和多态 (面向对象) 面向对象基础 面向对象程序设计(Object Oriented Programming) 对象基于类创建,类相当于一个模板,对象就是根据模板创建出来的实体(就像做月饼,我们要做一个月饼首先需要一个模具,模具就是我们的类,而做出来的月饼,就是类的实现,也叫做对象),类是抽象的数据类型,并不能代表某一个具体的事物,类是对象的一个模板。类具有自己的属性,包括成员变量、成员方法等,我们可以调用类的成员方法来让类进行一些操作。 1234Scanner sc = new Scanner(System.in);String str = sc.nextLine();System.out.println("你输入了:"+str);sc.close(); 所有的对象,都需要通过new关键字创建,基本数据类型不是对象!Java不是纯面对对象语言! 不是基本类型的变量,都是引用类型,引用类型变量代表一个对象,而基本数据类型变量,保存的是基本数据类型的值,我们可以通过引用来对对象进行操作。(最好不要理解为引用指向对象的地址,初学者不要谈内存,学到JVM时再来 ...
Java中的语法糖
Java 中的语法糖 我们在日常开发中经常会使用到诸如泛型、自动拆箱和装箱、内部类、增强 for 循环、try-with-resources 语法、lambda 表达式等,我们只觉得用的很爽,因为这些特性能够帮助我们减轻开发工作量;但我们未曾认真研究过这些特性的本质是什么,那么这篇文章,cxuan 就来为你揭开这些特性背后的真相。 语法糖 在聊之前我们需要先了解一下 语法糖 的概念:语法糖(Syntactic sugar),也叫做糖衣语法,是英国科学家发明的一个术语,通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会,真是又香又甜。 语法糖指的是计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。因为 Java 代码需要运行在 JVM 中,JVM 是并不支持语法糖的,语法糖在程序编译阶段就会被还原成简单的基础语法结构,这个过程就是解语法糖。所以在 Java 中,真正支持语法糖的是 Java 编译器,真是换汤不换药,万变不离其宗,关了灯都一样。。。。。。 下面我们就来认识一下 Java 中的这些语法糖 泛型 泛型是一种语法糖。在 JDK1.5 ...
三种遍历方式的比较
for 、foreach 、iterator 三种遍历方式的比较 习惯用法 for、foreach循环、iterator迭代器都是我们常用的一种遍历方式,你可以用它来遍历任何东西:包括数组、集合等 for 惯用法: 12345678List<String> list = new ArrayList<String>();String[] arr = new String[]{"1,2,3,4"};for(int i = 0;i < arr.length;i++){ System.out.println(arr[i]);}for(int i = 0;i < list.size();i++){ System.out.println(list.get(i));} foreach 惯用法: 12345678910String[] arr = new String[]{"1,2,3,4"};List<String> li ...
Exception和Error
Exception 和 Error 在 Java 中的基本理念是 结构不佳的代码不能运行,发现错误的理想时期是在编译期间,因为你不用运行程序,只是凭借着对 Java 基本理念的理解就能发现问题。但是编译期并不能找出所有的问题,有一些 NullPointerException 和 ClassNotFoundException 在编译期找不到,这些异常是 RuntimeException 运行时异常,这些异常往往在运行时才能被发现。 我们写 Java 程序经常会出现两种问题,一种是 java.lang.Exception ,一种是 java.lang.Error,都用来表示出现了异常情况,下面就针对这两种概念进行理解。 认识 Exception Exception 位于 java.lang 包下,它是一种顶级接口,继承于 Throwable 类,Exception 类及其子类都是 Throwable 的组成条件,是程序出现的合理情况。 在认识 Exception 之前,有必要先了解一下什么是 Throwable。 什么是 Throwable Throwable 类是 Java 语言中所有错 ...
emoji表情包
emoji 😀😃😄😁😆😅🤣😂🙂🙃😉😊😇🥰😍🤩😘😗☺️😚😙😋😛😜🤪😝🤑🤗🤭🤫🤔🤐🤨😐😑😶😏😒🙄😬🤥😌😔😪🤤😴😷🤒🤕🤢🤮🤧🥵🥶🥴😵🤯🤠🥳😎🤓🧐😕😟🙁☹️😮😯😲😳🥺😦😧😨😰😥😢😭😱😖😣😞😓😩😫🥱😤😡😠🤬😈👿💀☠️💩🤡👹👺👻👽👾🤖😺😸😹😻😼😽🙀😿😾🙈🙉🙊💋💌💘💝💖💗💓💞💕💟❣️💔❤️🧡💛💚💙💜🤎🖤🤍💯💢💥💫💦💨🕳️💣💬👁️‍🗨️🗨️🗯️💭💤👋🤚🖐️✋🖖👌🤏✌️🤞🤟🤘🤙👈👉👆🖕👇☝️👍👎✊👊🤛🤜👏🙌👐🤲🤝🙏✍️💅🤳💪🦾🦿🦵🦶👂🦻👃🧠🦷🦴👀👁️👅👄👶🧒👦👧🧑👱👨🧔👱‍♂️👨‍🦰👨‍🦱👨‍🦳👨‍🦲👩👱‍♀️👩‍🦰👩‍🦱👩‍🦳👩‍🦲🧓👴👵🙍🙍‍♂️🙍‍♀️🙎🙎‍♂ ...
avatar
🐟认真摸鱼中
shark-Gao
Future is now 🍭🍭🍭
前往小窝
公告栏
--- 主域名 ---
shark-Gao | gaoziman.vercel
--- 备用域名 ---
gzm.vercel🍧
Eason.vercel🍧
小站资讯
文章数目 :
32
本站总字数 :
40.8w
本站访客数 :
本站总访问量 :
最后更新时间 :
空降评论复制本文地址
随便逛逛昼夜切换关于博客美化设置切换全屏打印页面