![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础篇
子之乐鱼之乐
偷得浮生半日闲
展开
-
JMM Java内存模型
JMM Java内存模型1 CPU和内存的交互1.1.1 内存屏障(Memory Barrier)为什么需要内存屏障内存屏障的作用volatile型变量volatile型变量拥有如下特性2 Java内存区域2.1 五大内存区域2.1.1 程序计数器2.1.2 Java栈(虚拟机栈)2.1.3 本地方法栈2.1.4 堆2.2 对象的内存布局2.2.1 对象头【markword】2.2.2 实例数据2...转载 2019-08-13 13:36:59 · 329 阅读 · 0 评论 -
Java中的锁分类
Java中的锁分类公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁公平锁/非公平锁公平锁是指多个线程按照申请锁的顺序来获取锁。非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先级反转或者饥饿现象。对于Java ReentrantLock而言,通过构造函数指定该锁是否是...转载 2019-08-13 11:00:37 · 79 阅读 · 0 评论 -
简单解释可重入锁与不可重入锁
简单解释可重入锁与不可重入锁相关内容地址:https://blog.csdn.net/u012545728/article/details/80843595可重入锁与不可重入锁的区别可以简单解释为:可重入锁在线程中使用时,可以反复嵌套调用同一个锁控制的代码块该种情形下会使该代码块的计数器增加(执行完毕相关代码块则会释放锁,计数器递减)而不可重入锁的使用必须保证该锁被释放后才能下一次获取该...原创 2019-08-13 10:56:20 · 233 阅读 · 0 评论 -
synchronized与ReenTrantLock详解
synchronized与ReenTrantLock详解相似点:功能区别:底层实现区别便利性区别细粒度和灵活度区别性能的区别:SynchronizedReentrantLock公平锁、非公平锁的创建方式:ReenTrantLock实现的原理:相似点:这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一个线程获得了对象锁,进入了同步块,其他访问该同步块的线程...转载 2019-08-13 10:49:03 · 135 阅读 · 0 评论 -
设计模式概述
设计模式概述软件设计模式的产生背景软件设计模式的概念与意义1. 软件设计模式的概念2. 学习设计模式的意义软件设计模式的基本要素1. 模式名称2. 问题3. 解决方案4. 效果软件设计模式的产生背景“设计模式”这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977 年,美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher A...转载 2019-08-13 09:12:34 · 86 阅读 · 0 评论 -
抽象工厂模式
抽象工厂模式前言抽象工厂模式的定义与特点抽象工厂模式的优缺点抽象工厂模式的结构前言前面介绍的工厂方法模式中考虑的是一类产品的生产,如畜牧场只养动物、电视机厂只生产电视机、计算机软件学院只培养计算机软件专业的学生等。同种类称为同等级,也就是说:工厂方法模式只考虑生产同等级的产品,但是在现实生活中许多工厂是综合型的工厂,能生产多等级(种类) 的产品,如农场里既养动物又种植物,电器厂既生产电视机又...转载 2019-08-12 20:23:44 · 142 阅读 · 0 评论 -
工厂模式
工厂模式简介定义工厂方法模式的优缺点工厂模式的结构简介在现实生活中社会分工越来越细,越来越专业化。各种产品有专门的工厂生产,彻底告别了自给自足的小农经济时代,这大大缩短了产品的生产周期,提高了生产效率。同样,在软件开发中能否做到软件对象的生产和使用相分离呢?能否在满足“开闭原则”的前提下,客户随意增删或改变对软件相关对象的使用呢?这就是本节要讨论的问题。模式的定义与特点定义工厂方法(Fa...转载 2019-08-12 20:19:25 · 87 阅读 · 0 评论 -
代理模式及反向代理
代理模式简介代理模式的定义与特点代理模式的优缺点代理模式的结构简介在有些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代理对象。例如,购买火车票不一定要去火车站买,可以通过 12306 网站或者去火车票代售点买。又如找女朋友、找保姆、找工作等都可以通过找中介完成。在软件设计中,使用代理模式的例子也很多,例如,要访问的远程对象比较大(如视频或大...转载 2019-08-12 20:12:45 · 496 阅读 · 0 评论 -
单例模式
单例模式1. 使用Singleton的好处在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbage collection)。2.应用场景:3.优缺点:4.注意事项:5.五种单例模式相关博客:1.https://blog.csdn.net/ljhljh8888/article/details/8017701/ 单例的好处2.https://www.cnblogs.com...原创 2019-08-12 20:04:05 · 142 阅读 · 0 评论 -
Java8日期处理
Java8日期处理使用示例示例 1、在 Java 8 中获取今天的日期示例 2、在 Java 8 中获取年、月、日信息示例 3、在 Java 8 中处理特定日期示例 4、在 Java 8 中判断两个日期是否相等示例 5、在 Java 8 中检查像生日这种周期性事件示例 6、在 Java 8 中获取当前时间示例 7、如何在现有的时间上增加小时示例 8、如何计算一周后的日期示例 9、计算一年前或一年后...转载 2019-08-13 09:26:22 · 112 阅读 · 0 评论 -
形参实参引用传递
Java中的形参和实参的区别以及传值调用和传引用调用参考资料1,Java实参和形参与传值和传引用https://blog.csdn.net/wanliguodu/article/details/556538762,Java中的形参和实参的区别以及传值调用和传引用调用https://blog.csdn.net/miniminiyu/article/details/520614011,名词...转载 2019-08-13 09:34:56 · 915 阅读 · 0 评论 -
树 特性比较
二叉搜索树 平衡二叉树 红黑树 B树 B+树的简单对比名称简称特点平衡性查找插入删除优势应用二叉搜索树BST索引树,由于构建不稳定,查找效率不稳定无不稳定,跟具体构建树相关,最好O(logn),最差O(N)直接插入删除的是叶子节点或只有左或右子树比较简单,如同时存在左右子树,那么要找到前驱或后继代替原先节点,再删除性能高于线性查找暂无平衡二...原创 2019-08-29 14:34:40 · 90 阅读 · 0 评论 -
简单的利用正则对字符串进行格式化并去除字母及中文字符外的特殊符号
样例 public static String replace(String str) { if(str==null){ return null; }else if(StringUtils.isBlank(str)){ return ""; } String regEx = "...原创 2019-08-28 11:14:09 · 683 阅读 · 0 评论 -
迭代器常见使用与集合遍历
迭代器常见使用手段前言List的遍历Map的遍历前言此处主要介绍对于List及Map的遍历方式。List的遍历 //第一种:for循环,指定下标长度,使用List集合的size()方法,进行for循环遍历 for (int i = 0; i < list.size(); i++) { String temp=list.get(i); ... } //第二种:...原创 2019-08-28 11:09:04 · 269 阅读 · 0 评论 -
流式文件操作
流式文件操作IO资源的自动释放流式文件内容追加流式文件读取读取文件最后一行(随机读取)清空文件IO资源的自动释放在try块中使用try( 申明及初始化IO资源 ) 数据流会在 try 执行完毕后自动被关闭;前提是,这些可关闭的资源必须实现 java.lang.AutoCloseable 接口。例子可见后面内容;流式文件内容追加 // 写一行 并 换行 private vo...原创 2019-08-22 19:21:59 · 495 阅读 · 0 评论 -
Java NIO内存映射文件
Java NIO 内存映射文件文件操作的四大方法文件操作的四大方法前提:内存的访问速度比磁盘高几个数量级,但是基本的IO操作是直接调用native方法获得驱动和磁盘交互的,IO速度限制在磁盘速度上 由此,就有了缓存的思想,将磁盘内容预先缓存在内存上,这样当供大于求的时候IO速度基本就是以内存的访问速度为主,例如BufferedInput/OutputStream等 而我们知道大多数OS...转载 2019-08-13 10:12:42 · 191 阅读 · 0 评论 -
深复制浅复制
深复制与浅复制:本质上都是基于原型模式的理念,复制本身即是以原对象的数据及结构为原型进行拷贝,深复制即是对于对象及其子对象(数据与结构)的完全克隆,而浅复制只是对对象本身克隆。Java中:浅复制只需对象实现cloneable接口即可,接口中对于clone()的实现即是浅复制;深复制则需重写clone()方法或自定义方法,一般最简单的深复制实现是将对象整个序列化为流式数据后再反序列化为O...原创 2019-08-13 09:52:30 · 142 阅读 · 0 评论 -
行为型模式
行为型模式概览十一种行为型模式:概览行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大...转载 2019-08-13 09:44:00 · 202 阅读 · 0 评论 -
结构型模式
结构型模式结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。结构型模式分为以下 7 种:结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复...转载 2019-08-13 09:40:16 · 163 阅读 · 0 评论 -
MongoDb总结
MongoDb总结主要功能特性:MongoDB的优势MongoDB使用场景MongoDB限制MongoDB与其他数据库区别MongoDB基于分布式文件存储的数据库高性能、可扩展、易部署、易使用,存储数据非常方便https://www.mongodb.org.cn/https://blog.csdn.net/hsd2012/article/details/51279472主要功能特性:...原创 2019-08-12 19:56:55 · 225 阅读 · 0 评论 -
Redis小结
Redis小结1.Redis是什么:2.数据结构:3.持久化方式:RDB AOF4.主从数据库同步:5.Redis事务处理:6.Redis配置:内容来源1.Redis是什么:redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。2.数据结构:1.字符串(strings)2.字符串列表(lists)——链表结构,元素定位较慢,顶部新增较...原创 2019-08-12 19:52:35 · 71 阅读 · 0 评论 -
List的三种实现类ArrayList、LinkedList、Vector及其对比
java中三种主要的List的实现类特性及其比较。转载 2019-08-12 11:38:46 · 553 阅读 · 0 评论 -
JavaCollection集合概览
该文章是要展示了java中集合类的主要框架与简单介绍转载 2019-08-12 11:29:35 · 200 阅读 · 0 评论 -
Java基础数据结构介绍
该概览主要讲述了Java中基础的数据结构,并不涉及具体实现与使用。相关内容来源于菜鸟教程介绍,https://www.runoob.com/java/java-data-structures.html转载 2019-08-12 10:26:58 · 106 阅读 · 0 评论 -
Java IO\NIO\AIO
Java IO\NIO\AIO概述同步与异步(synchronous/asynchronous)阻塞与非阻塞与IO结合BIO、NIO、AIO的概述一、IO流(同步、阻塞)1、概述2、分类3、字符流 (只用来处理文本数据)4、字节流 (用来处理媒体数据)5、Java Scanner类二、NIO(同步、非阻塞)三个主要组成部分(1)Channel(通道)(2)BuffercopyFile实例(NIO)...转载 2019-08-14 11:25:48 · 160 阅读 · 0 评论 -
ES分布式增删改查
ES分布式增删改查1 第一步——路由文档到分片2 分片交互3 写操作replication参数consistency参数timeout参数注意4 读操作5 多文档操作多文档模式多文档模式请求处理步骤1 第一步——路由文档到分片这涉及到新文档存储的主分片的判定:shard = hash(routing) % number_of_primary_shards 这也是主分片数目不可变得根本原因...原创 2019-08-14 10:37:20 · 174 阅读 · 0 评论 -
ES倒排索引及类型映射与分析器(SE倒排及搜索实现基础)
ES倒排索引及类型映射与分析器/SE倒排及搜索实现基础前言1 数据类型映射2 非结构化的全文文本查询与倒排索引(模糊的相关度的查询方式与倒排索引)3 分析器3.1 字符过滤器3.2 分词器3.3 标记过滤4. 映射注意5 复合类型5.1 多值字段5.2 空值5.3 多层对象前言ES快速搜索的基础是建立在逆序索引设计的基础上的, 逆序索引的建立最基础的设计则是对于字符串的词语拆分 ;通过将全文...原创 2019-08-14 10:29:55 · 404 阅读 · 0 评论 -
ES搜索
ES搜索1 搜索结果解析2 多索引和多类别3 分页在集群系统中深度分页(为什么搜索引擎很难做到大量结果排序搜索)4 字符串查询4.1 简易搜索_all字段TIP更复杂的语句TIP(下面部分的内容留待后续整理充实)4.2 DSL语句:4.3 全文搜索:(相比于短语搜索更为广泛、内容按相关性排序)4.4 短语搜索:4.5 高亮支持:4.6 聚合:https://es.xiaoleilu.com/010...转载 2019-08-14 10:03:06 · 306 阅读 · 0 评论 -
ES入门篇
ES入门篇1 ES查询入门1.1 基础1.2 特性1.3 数据结构层级1.4 搜索方式2 ES数据结构入门2.1 document:即ES中的一条数据,为JSON obj,但特指根节点的Obj2.2 文档元数据:除数据外的部分:2.3 自增ID2.4 文档增删改操作~2.5 版本控制2.6 Mget批处理查询请求2.7 批量更新3 ES集群3.1 基础概念3.2 集群健康度3.3 添加索引3.4 ...转载 2019-08-13 14:08:23 · 370 阅读 · 0 评论 -
Map的主要实现类HashMap、HashTable、TreeMap及其对比
概要学完了Map的全部内容,我们再回头开开Map的框架图。第1部分 Map概括(01) Map 是“键值对”映射的抽象接口。(02) AbstractMap 实现了Map中的绝大部分函数接口。它减少了“Map的实现类”的重复编码。(03) SortedMap 有序的“键值对”映射接口。(04) NavigableMap 是继承于SortedMap的,支持导航函数的接口。(05) H...转载 2019-08-12 13:23:26 · 415 阅读 · 0 评论 -
Set主要实现类HashSet 与TreeSet和LinkedHashSet及其对比
HashSet 与TreeSet和LinkedHashSet的区别一、Set二、HashSet三、TreeSet四、LinkedHashSet一、Set 1.Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false。 2.Set判断两个对象相同不是使用==运算符,而是根据equals方法。也就是说,只要两个对象用equals方法比较返回true,Se...转载 2019-08-12 13:36:45 · 428 阅读 · 0 评论 -
Hbase总结
1.类数据库存储层(结构化存储)2.分布式的Hbase依赖于HDFS3.与Hive相比性能更高,容错性更强,具有及时性;但不支持SQL(Hive适用于静态数据分析工作)4.Poenix是使用Hbase的好帮手5.与传统数据库相比:HBaseRDBMS硬件架构类似于 Hadoop 的分布式集群,硬件成本低廉 传统的多核系统,硬件成本昂贵容错性由软件架构实现,由...原创 2019-08-12 16:12:30 · 98 阅读 · 0 评论 -
Hbase深入浅出(IBM社区)
Hbase深入浅出HBase 在大数据生态圈中的位置HBase 与传统关系数据库的区别HBase 相关的模块以及 HBase 表格的特性MasterRegion ServerZookeeperHBase 的使用建议Phoenix 的使用总结HBase 在大数据生态圈中的位置提到大数据的存储,大多数人首先联想到的是 Hadoop 和 Hadoop 中的 HDFS 模块。大家熟知的 Spark、以...转载 2019-08-12 15:51:59 · 174 阅读 · 0 评论 -
红黑树总结
红黑树与AVL树的区别:AVL树是严格要求平衡度(最大左右子树高度差异)的二叉搜索树,这导致了一种情况,AVL树在使用过程中,面临插入与删除时会导致大量的平衡操作,消耗大量性能,因此降低了可用性;红黑树相较于AVL树,放低了对于左右子树平衡的要求(红黑节点可以为均衡左右子树的平衡做出缓冲,即通过将黑节点变红降低树的高度,从而延缓了高度产生较大差异而被迫平衡的操作)因此在实际使用中,红黑树可以...原创 2019-08-12 15:03:33 · 91 阅读 · 0 评论 -
红黑树
https://www.cnblogs.com/ysocean/p/8004211.html图片较多建议连接查看 上一篇博客我们介绍了二叉搜索树,二叉搜索树对于某个节点而言,其左子树的节点关键值都小于该节点关键值,右子树的所有节点关键值都大于该节点关键值。二叉搜索树作为一种数据结构,其查找、插入和删除操作的时间复杂度都为O(logn),底数为2。但是我们说这个时间复杂度是在平衡的二叉搜索树上体...转载 2019-08-12 15:00:49 · 72 阅读 · 0 评论 -
哈希之开散列,闭散列,多阶哈希,一致性哈希
https://blog.csdn.net/xxpresent/article/details/55806298哈希表(闭散列、拉链法–哈希桶)https://blog.csdn.net/qq_38646470/article/details/79417829拉链法https://blog.csdn.net/a519640026/article/details/76157944一致性HA...转载 2019-08-12 14:21:48 · 252 阅读 · 0 评论 -
迭代器使用(List/Map)
如何使用迭代器通常情况下,你会希望遍历一个集合中的元素。例如,显示集合中的每个元素。一般遍历数组都是采用for循环或者增强for,这两个方法也可以用在集合框架,但是还有一种方法是采用迭代器遍历集合框架,它是一个对象,实现了Iterator 接口或ListIterator接口。迭代器,使你能够通过循环来得到或删除集合的元素。ListIterator 继承了Iterator,以允许双向遍历列表和...原创 2019-08-12 14:12:38 · 418 阅读 · 0 评论 -
Java 操作集合的工具类:Collections
Java 操作集合的工具类:CollectionsCollectionsCollections对集合排序操作方法:(均为static方法)Collections对集合查找、替换方法集合 解决多线程并发访问集合时的线程安全问题CollectionsCollections 是一个操作 Set、List 和 Map 等集合的工具类Collections 中提供了一系列静态的方法对集合元素进行排序、...转载 2019-08-12 14:00:35 · 118 阅读 · 0 评论 -
Java集合总结与比较
Java集合总结与比较1.线程安全的集合类:2. hashtable跟hashmap的区别3.扩容机制;4.简单的总结;5.获取异步的集合类的方式:1.线程安全的集合类:vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用。在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的。statck:堆栈类,先进后出hashtable:...原创 2019-08-12 13:50:23 · 176 阅读 · 0 评论 -
ES查询技巧方式大全
题记本文详细论述了Elasticsearch全文检索、指定字段检索实战技巧,并提供了详尽的源码举例。是不可多得学习&实战资料。0、前言为了讲解不同类型ES检索,我们将要对包含以下类型的文档集合进行检索: 1 title 标题; 2. authors 作者; 3. summary 摘要; 4. release data 发布日期; 5. number of revie...转载 2019-09-05 09:58:39 · 670 阅读 · 0 评论