自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LinkedList 源码 透析

LinkedList 源码 透析LinkedList 是 一个 实现了 List 接口 和 Deque 接口 的 双端链表。LinkedList 继承了 AbstractSequentialList实现了 Cloneable Serializable 接口LinkedList 是 线程不安全的 。LinkedList 底层 的 链表结构 使得 能够 高效的 插入 和 删除 操作。另外 实现了 Deque 接口 , 使得 LinkedList 具有 队列 的 特性。如果想使Linked

2021-09-29 22:35:36 111

原创 ArrayList 源码透析

ArrayList 源码透析ArrayList 的 底层 是 数组队列 ,相当于 动态数组。与 java 数组 相比 , 容量 能 动态 增长。在 添加 大量元素 前 ,可以 通过 ensureCapacity(int minCapacity) 操作 增加ArrayList 实例 的 容量 , 这可以 减少 递增式 在 分配 的 数量。ArrayList 继承于 AbstaractList ,实现了 List RandomAccess Cloneable Serializable

2021-09-29 21:15:45 111

原创 HashSet源码解析

**HashSet源码解析 **蓝色线条:继承 绿色线条:接口实现public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable{HaspSet 继承 HashSet 实现 Cloneable Set Serializable(Cloneable 表明它支持克隆,可以调用超类的clone()方法进行浅拷贝

2021-09-29 17:15:18 171

原创 ConcurrentHashMap 源码解析

ConcurrentHashMap 源码解析线程安全的。ConcurrentHashMap 1.7数据结构: Segment 数组 + HashEntry 数组 + 链表···ConcurrnetHashMap 由很多个 Segment 组合,而每一个 Segment 是一个类似于 HashMap 的结构,所以每一个 HashMap 的内部可以进行扩容。但是 Segment 的个数一旦初始化就不能改变,默认 Segment 的个数是 16 个,(你也可以认为 ConcurrentHash

2021-09-29 16:35:37 207

原创 HashMap 源码 透析

HashMap

2021-09-28 20:10:42 149

原创 集合(容器)

java集合 的 两大接口 :Collection 接口 存放 单一元素。Map 接口 存放 键值对。Collection 接口 有 三个 子接口ListSetQueue** List Set Queue Map 区别 **List(对付顺序的好帮手): 存储的元素是有序的、可重复的。Set(注重独一无二的性质): 存储的元素是无序的、不可重复的。Queue(实现排队功能的叫号机): 按特定的排队规则来确定先后顺序,存储的

2021-09-28 20:00:42 229

原创 面试 --- Redis

redis的数据 是 存储在 内存中的 ,所以 读写 速度非常快。redis 除了 做缓存外, 还可以做 分布锁 , 消息队列。redis 支持 事务 持久化 Lua脚本 多种集群方案。分布式缓存主要解决的是单机缓存的容量受服务器限制并且无法保存通用信息的问题。因为,本地缓存只在当前服务里有效,比如如果你部署了两个相同的服务,他们两者之间的缓存数据是无法共同的。** 说一下 Redis 和 Memcached 的区别和共同点 **共同点:1.都是基于 内存 的 数据库 ,一般 做缓存使用..

2021-09-26 16:30:02 291

原创 计算机基础---设计模式

** 简述 设计模式 七大原则 **

2021-09-22 15:32:45 541

原创 实现一个栈, 栈 带有 出栈 入栈 取最小元素 时间复杂度为o(1)

package shujujiegou.Stack;import java.util.Stack;/*实现一个栈, 栈 带有 出栈 入栈 取最小元素时间复杂度为o(1)*/public class GetStack {//主栈private Stack mainStack=new Stack<>();//辅助栈private Stack minStack=new Stack<>();public static void main(String[] args)

2021-09-21 12:09:32 227

原创 子序列问题

子序列 是值 一个字串 中 非连续 的 字串 ;字串: 123456789 子序列a: 13579(非连续)字串b : 12345(连续)** 子串 问题** 1.求最大子串 **class Solution {public int lengthOfLIS(int[] nums) { int get=vector(nums,0,nums.length-1); return get;}//就最大子串public int vector(int[] nums,int be

2021-09-20 12:33:21 232

原创 判断链表是否有环 环距 入环点

package shujujiegou.Node;public class Node {private Node next;private int data;public Node(int data) { this.data = data;}public static void main(String[] args) { Node node1=new Node(1); Node node2=new Node(4); Node node3=new Node(3)

2021-09-19 21:40:43 110

原创 计数排序 和 桶排序

package shujujiegou.Quit;import java.util.Arrays;/**计数排序*/public class CountSort {public static void main(String[] args) {int[] array=new int[]{4,2,5,1,5,23,78,8,5,8,49,9,0,0,5,2,2};System.out.println(Arrays.toString(array)); //得到更新后的数组 int[] s

2021-09-19 11:26:24 121

原创 快速排序---双边循环法,单边循环法 , 非递归法

package shujujiegou.Quit;import java.util.Arrays;/*快速排序 双边 循环 法*/public class QuitSort {public static void main(String[] args) { int[] array=new int[]{4,4,6,5,3,2,8,1}; QuitSort quitSort=new QuitSort(); quitSort.QuitSort(array,0,array.len

2021-09-19 02:53:50 302

原创 冒泡排序和鸡尾酒排序

package shujujiegou.Sort;import shujujiegou.数组.Array;import java.util.Arrays;public class MPsort {public static void main(String[] args) {int[] arry=new int[]{2,4,6,4,24,8,9};MPsort sort=new MPsort();//冒泡排序sort.MPsort(arry);//鸡尾酒排序sort.JWsort(arr

2021-09-19 02:53:18 85

原创 数组的中间插入 和 中间删除

package shujujiegou;public class Array {public static void main(String[] args) {Array a = new Array(); /* int[] array = new int[8]; array[0] = 10; array[1] = 11; array[2] = 12; array[3] = 13; array[4] = 14; final int[] insert

2021-09-18 10:21:22 291

原创 单链表 双链表实现

package NODE;public class NodeController {//头节点指针private Node head;//尾节点指针private Node last;//链表实际长度private int size;public static void main(String[] args) { NodeController mynode=new NodeController(); //链表的插入 mynode.insert(0,0); m

2021-09-18 10:20:23 94

原创 hashmap线程不安全的原因

不安全原因:(1)在put的时候,因为该方法不是同步的,假如有两个线程A,B它们的put的key的hash值相同,不论是从头插入还是从尾插入,都会有一个丢失。假如A获取了插入位置为x,但是还未插入,此时B也计算出待插入位置为x,则不论AB插入的先后顺序肯定有一个会丢失;(2)在扩容的时候,jdk1.8之前是采用头插法,当两个线程同时检测到hashmap需要扩容,在进行同时扩容的时候有可能会造成链表的循环, 主要原因就是,采用头插法,新链表与旧链表的顺序是反的,在1.8后采用尾插法就不会出现

2021-09-18 10:19:13 757

原创 ConcurrentHashMap 补充

HashTable性能差主要是由于所有操作需要竞争同一把锁,而如果容器中有多把锁,每一把锁锁一段数据,这样在多线程访问时不同段的数据时,就不会存在锁竞争了,这样便可以有效地提高并发效率。这就是ConcurrentHashMap所采用的"分段锁"思想。put的主要逻辑也就两步:1.定位segment并确保定位的Segment已初始化 2.调用Segment的put方法。get方法无需加锁,由于其中涉及到的共享变量都使用volatile修饰,volatile可以保证内存可见性,所以不会读取到过期数据。Co

2021-09-18 10:18:43 116

原创 队列入队出队

package Queue;public class MyQueue {int[] array=new int[6];//队头private int fornt;//队尾private int last;public static void main(String[] args) throws Exception { MyQueue myQueue=new MyQueue(); //入队 myQueue.enQueue(1); myQueue.enQueue

2021-09-18 10:18:32 141

原创 二叉树的遍历

package shujujiegou.二叉树;import java.util.Arrays;import java.util.LinkedList;import java.util.Queue;import java.util.Stack;/**实现前序遍历中序遍历后序遍历*/public class TreeNodeMain {public static void main(String[] args) {LinkedList linkedList = new

2021-09-18 10:17:19 87

原创 最大优先队列 由 二叉堆的最大堆完成。

package shujujiegou.二叉树;import java.util.Arrays;import java.util.PriorityQueue;/*最大优先队列 由 二叉堆的最大堆完成。*/public class PriorityQueueMax {private int[] array;private int size;public PriorityQueueMax() { //队列初始化长度为32 this.array =new int[32];

2021-09-18 10:16:50 90

原创 二叉堆实现

package shujujiegou.二叉树;import java.util.Arrays;public class BinaryHeap {public static void main(String[] args) { int[] array=new int[]{1,3,2,6,5,7,8,9,10,0}; updateJust(array); System.out.println(Arrays.toString(array)); array=new int[

2021-09-18 10:16:15 101

原创 hashmap线程不安全的原因 hashmap补充

不安全原因:(1)在put的时候,因为该方法不是同步的,假如有两个线程A,B它们的put的key的hash值相同,不论是从头插入还是从尾插入,都会有一个丢失。假如A获取了插入位置为x,但是还未插入,此时B也计算出待插入位置为x,则不论AB插入的先后顺序肯定有一个会丢失;(2)在扩容的时候,jdk1.8之前是采用头插法,当两个线程同时检测到hashmap需要扩容,在进行同时扩容的时候有可能会造成链表的循环, 主要原因就是,采用头插法,新链表与旧链表的顺序是反的,在1.8后采用尾插法就不会出现

2021-09-18 10:15:31 429

转载 Oracle-dblink查看、创建、删除与java实际例子

目录一、含义二、查看数据库创建的dblink三、dblink权限四、创建dblink连接五、删除dblink连接六、使用dblink连接七、Java实际例子一、含义dblink(Database Link)数据库链接顾名思义就是数据库的链接 ,就像电话线一样,是一个通道,当我们要在本地数据库,跨库访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。二、查看数据库创建的dblink执

2021-09-06 10:38:12 1585

空空如也

空空如也

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

TA关注的人

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