11 2021 档案
摘要:1 JMM 学习此篇文章, 先学习基础java内存模型(JMM)基础详解 然后学习入门JMM之并发模型,重排序规则,顺序一致性 1.1 锁 1.1.1 锁的释放-获取建立的happens-before 关系 锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取
阅读全文
摘要:1 JMM 所谓JMM就是Java内存模型,看此篇文章先学习java内存模型(JMM)基础详解 1.1 并发编程模型 1.1.1 并发编程模型分类 在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在
阅读全文
摘要:目录1 CAS1.1 CAS应用分析1.2 CAS原理1.3 CPU锁分类1.4 CAS缺点1.4.1 ABA问题1.4.2 循环时间长开销大1.4.3 只能保证一个共享变量的原子操作1.5 concurrent包的实现1.6 和其他锁比较1.6.1 CAS锁和Synchronized比较2 原子操
阅读全文
摘要:目录1 Java热部署1.1 热部署问题1.2 类加载的探索1.4 自定义加载器的实现1.5 利用ASM修改class文件1.6 改变创建对象的行为1.7 使用 JavaAgent 拦截默认加载器的行为 1 Java热部署 1.1 热部署问题 在 Java 开发领域,热部署一直是一个难以解决的问题,
阅读全文
摘要:1 日志管理工具 日志管理工具有Splunk、Sumo Logic、LogStash、GrayLog、Loggly和PaperTrails等等,数不胜数。日志就像石油,我们一直想摆脱它,却一直没有做到。 为了处理日益增长的数据,近年来出现了一大批分析和管理日志的工具,开发和管理人员能够借助这些工具来
阅读全文
摘要:目录1 从jar包中读取资源文件1.1 问题引入1.2 问题分析及解决1.3 直接读取jar资源文件 1 从jar包中读取资源文件 1.1 问题引入 在代码中读取一些资源文件(比如图片,音乐,文本等等)。在单独运行的时候这些简单的处理当然不会有问题。但是,如果我们把代码打成一个jar包以后,即,使将
阅读全文
摘要:1 Queue 1.1 定义 前面讲了Stack是一种先进后出的数据结构:栈,那么对应的Queue是一种先进先出(First In First Out)的数据结构:队列 对比一下Stack,Queue是一种先进先出的容器,它有两个口,从一个口放入元素,从另一个口获取元素。如果把栈比作一个木桶,那么队
阅读全文
摘要:1 Stack源码 前面我们已经接触过几种数据结构了,有数组、链表、Hash表、红黑树(二叉查询树),今天再来看另外一种数据结构:栈 1.1 栈定义 什么是栈,直接举个例子,栈就相当于一个很窄的木桶,我们往木桶里放东西,往外拿东西时会发现,我们最开始放的东西在最底部,最先拿出来的是刚刚放进去的。所以
阅读全文
摘要:1 集合容器中Strategy设计模式 前面我们说TreeMap和TreeSet都是有顺序的集合,而顺序的维持是要靠一个比较器Comparator或者map的key实现Comparable接口 既然说到排序,首先我们不用去关心什么是Strategy设计模式,也不用关心它为了解决什么问题而存在,我们直
阅读全文
摘要:1 TreeSet TreeSet是一个有序的Set集合。 既然是有序,那么它是靠什么来维持顺序的呢,TreeMap中是通过一个比较器Comparator比较大小,因此TreeSet要实现比较也必须依靠于Comparator接口。 Map和Set有很大渊源关系,比如Map有HashMap,Linke
阅读全文
摘要:1 TreeMap TreeMap是基于红黑树结构实现的一种Map,要分析TreeMap的实现首先就要对红黑树有所了解。 要了解什么是红黑树,就要了解它的存在主要是为了解决什么问题,对比其他数据结构比如数组,链表,Hash表等树这种结构又有什么优点。 1.1 二叉查询树、红黑树 简单总结一下数组,链
阅读全文
摘要:1 HashSet源码解析 HashSet也是一种java容器,这里不再赘述hash的概念原理等一大堆东西了,需要在啰嗦一句的是hash表是基于快速存取的角度设计的,也是一种典型的空间换时间的做法 先来看下Set的特点:Set元素无顺序,且元素不可以重复 无顺序,由于散列的缘故;不可重复,HashM
阅读全文
摘要:1 LinkedHashMap(jdk1.7之前) 我们知道Map其底层数据存储是一个hash表(数组+单向链表)。接下来我们看一下另一个LinkedHashMap,它是HashMap的一个子类,他在HashMap的基础上维持了一个双向链表(hash表+双向链表),在遍历的时候可以使用插入顺序(先进
阅读全文
摘要:1 HashMap源码 前面了解了jdk容器中的两种List,回忆一下怎么从list中取值(也就是做查询),是通过index索引位置对不对,由于存入list的元素时安装插入顺序存储的,所以index索引也就是插入的次序。 Map是这样一种容器,它可以存储两个元素键和值,根据键这个关键字可以明确且唯一
阅读全文
摘要:1 Iterator设计模式 由于ArrayList和LinkedList这两种list是我们工作中最常用到的List容器。当然数组和链表也是两种常见的基本数据结构,其他基本数据结构还有堆栈、队列、树等,对java容器的学习,也可以看做是对数据结构的学习和使用。 在ArrayList和LinkedL
阅读全文
摘要:目录1 LinkedList源码1.1 链表的概念1.1.1 单向链表1.1.2 单向循环链表1.1.3 双向链表1.1.4 双向循环链表1.2 定义1.2.1 类的属性1.2.2 Node 的静态内部类1.2.3 构造函数1.2.4 查找 - get1.2.5 添加add1.2.6 修改1.2.7
阅读全文
摘要:目录1 ArrayList源码1.1 ArrayList定义1.2 底层存储1.3 构造方法1.4 增加1.5 删除1.6 更新1.7 查找1.8 是否包含1.9 容量判断1.10 ArrayList和LinkedList1.10.1 二者区别1.10.2 应用场景区别 1 ArrayList源码
阅读全文
摘要:1.1 List 1.1.1 遍历ArrayList package com.test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ArrayListDemo
阅读全文
摘要:声明:以下文章是以jdk7之前源码分析,而非现在jdk8源码分析,学习过去源码可以方便打牢源码基础,点击此处学习jdk8之Map语法 1 分析Hash存储机制 1.1 概述 HashSet 和 HashMap 之间有很多相似之处,对于 HashSet 而言,系统采用 Hash算法决定集合元素的存储位
阅读全文
摘要:1 MemCache讲解 1.1 MemCache是什么 MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。MemCaChe是一个存储键值对的HashMap
阅读全文
摘要:目录1 final1.1 final总结1.2 使用final意义1.3 String中使用final2 static2.1 static总结2.2 理解Java的static import静态引入机制2.2.1 精确导入的方式2.2.2 按需导入的方式2.2.3 可以导入的种种东西2.2.4 导入
阅读全文
摘要:目录1 类访问权限1.1 四种访问权限解析1.2 Protected分析1.3 private失效情况1.3.1 Java内部类 1 类访问权限 1.1 四种访问权限解析 Java有四种访问权限, 其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰
阅读全文
摘要:目录1 Java敏感词过滤1.1 DFA简介1.2 Java实现DFA算法实现敏感词过滤1.3 具体代码实现1.3.1 设置检索库1.3.2 查询检索库1.3.3 测试检索库 1 Java敏感词过滤 敏感词、文字过滤是一个网站必不可少的功能,如何设计一个好的、高效的过滤算法是非常有必要的。 1.1
阅读全文
摘要:目录1 反射1.1 反射概述1.2 获取class对象三种方式1.3 反射实例分析1.3.1 获取反射方法1.3.2 获取class对象方式应用1.3.3 反射一个类的属性值1.3.4 反射创建类对象1.3.5 反射操作数组1.4 newInstance()和new()区别 1 反射 1.1 反射概
阅读全文
摘要:目录1 模仿在线预览1.1 背景需求1.2 具体实现1.2.1 安装必备工具组件1.2.2 软件开发过程2 模仿文库2.1 基本说明2.2 基本代码2.2.1 doc转pdf2.2.2 swftools将PDF转换swf2.2.3 flexPaper显示swf 1 模仿在线预览 1.1 背景需求 J
阅读全文
摘要:目录1 JACOB1.1 概述1.2 JACOB 项目的由来1.3 JACOB操作邮箱1.3.1 使用背景1.3.2 配置您的开发和运行环境1.3.3 实现业务逻辑1.4 JACOB操作word1.4.1 环境配置1.4.2 常用类以及方法1.4.3 初始化com线程1.4.4 创建应用程序对象1.
阅读全文
摘要:目录1 JDK设计模式1.1 问题引入1.2 jdk中设计模式1.2.1 Singleton(单例)1.2.2 Factory(静态工厂)1.2.3 Factory Method(工厂方法)1.2.4 bstract Factory(抽象工厂)1.2.5 Builder(构造者)1.2.6 Prot
阅读全文
摘要:目录1 Java编码转换1.1 String转换图1.2 String和Unicode编码1.3 new String()的理解1.4 实际例子1.5 java编码转换过程1.5.1 编辑源文件1.5.2 编译源文件1.5.3 运行编译类1.5.3.1 Console上运行的类1.5.3.2 JSP
阅读全文

浙公网安备 33010602011771号