- 博客(64)
- 收藏
- 关注
原创 LinkedList 源码 透析
LinkedList 源码 透析LinkedList 是 一个 实现了 List 接口 和 Deque 接口 的 双端链表。LinkedList 继承了 AbstractSequentialList实现了 Cloneable Serializable 接口LinkedList 是 线程不安全的 。LinkedList 底层 的 链表结构 使得 能够 高效的 插入 和 删除 操作。另外 实现了 Deque 接口 , 使得 LinkedList 具有 队列 的 特性。如果想使Linked
2021-09-29 22:35:36
76
原创 ArrayList 源码透析
ArrayList 源码透析ArrayList 的 底层 是 数组队列 ,相当于 动态数组。与 java 数组 相比 , 容量 能 动态 增长。在 添加 大量元素 前 ,可以 通过 ensureCapacity(int minCapacity) 操作 增加ArrayList 实例 的 容量 , 这可以 减少 递增式 在 分配 的 数量。ArrayList 继承于 AbstaractList ,实现了 List RandomAccess Cloneable Serializable
2021-09-29 21:15:45
81
原创 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
137
原创 ConcurrentHashMap 源码解析
ConcurrentHashMap 源码解析线程安全的。ConcurrentHashMap 1.7数据结构: Segment 数组 + HashEntry 数组 + 链表···ConcurrnetHashMap 由很多个 Segment 组合,而每一个 Segment 是一个类似于 HashMap 的结构,所以每一个 HashMap 的内部可以进行扩容。但是 Segment 的个数一旦初始化就不能改变,默认 Segment 的个数是 16 个,(你也可以认为 ConcurrentHash
2021-09-29 16:35:37
152
原创 集合(容器)
java集合 的 两大接口 :Collection 接口 存放 单一元素。Map 接口 存放 键值对。Collection 接口 有 三个 子接口ListSetQueue** List Set Queue Map 区别 **List(对付顺序的好帮手): 存储的元素是有序的、可重复的。Set(注重独一无二的性质): 存储的元素是无序的、不可重复的。Queue(实现排队功能的叫号机): 按特定的排队规则来确定先后顺序,存储的
2021-09-28 20:00:42
195
原创 面试 --- Redis
redis的数据 是 存储在 内存中的 ,所以 读写 速度非常快。redis 除了 做缓存外, 还可以做 分布锁 , 消息队列。redis 支持 事务 持久化 Lua脚本 多种集群方案。分布式缓存主要解决的是单机缓存的容量受服务器限制并且无法保存通用信息的问题。因为,本地缓存只在当前服务里有效,比如如果你部署了两个相同的服务,他们两者之间的缓存数据是无法共同的。** 说一下 Redis 和 Memcached 的区别和共同点 **共同点:1.都是基于 内存 的 数据库 ,一般 做缓存使用..
2021-09-26 16:30:02
226
原创 实现一个栈, 栈 带有 出栈 入栈 取最小元素 时间复杂度为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
194
原创 子序列问题
子序列 是值 一个字串 中 非连续 的 字串 ;字串: 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
174
原创 判断链表是否有环 环距 入环点
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
84
原创 计数排序 和 桶排序
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
94
原创 快速排序---双边循环法,单边循环法 , 非递归法
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
256
原创 冒泡排序和鸡尾酒排序
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
57
原创 数组的中间插入 和 中间删除
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
256
原创 单链表 双链表实现
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
67
原创 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
734
原创 ConcurrentHashMap 补充
HashTable性能差主要是由于所有操作需要竞争同一把锁,而如果容器中有多把锁,每一把锁锁一段数据,这样在多线程访问时不同段的数据时,就不会存在锁竞争了,这样便可以有效地提高并发效率。这就是ConcurrentHashMap所采用的"分段锁"思想。put的主要逻辑也就两步:1.定位segment并确保定位的Segment已初始化 2.调用Segment的put方法。get方法无需加锁,由于其中涉及到的共享变量都使用volatile修饰,volatile可以保证内存可见性,所以不会读取到过期数据。Co
2021-09-18 10:18:43
82
原创 队列入队出队
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
122
原创 二叉树的遍历
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
63
原创 最大优先队列 由 二叉堆的最大堆完成。
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
63
原创 二叉堆实现
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
77
原创 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
380
转载 Oracle-dblink查看、创建、删除与java实际例子
目录一、含义二、查看数据库创建的dblink三、dblink权限四、创建dblink连接五、删除dblink连接六、使用dblink连接七、Java实际例子一、含义dblink(Database Link)数据库链接顾名思义就是数据库的链接 ,就像电话线一样,是一个通道,当我们要在本地数据库,跨库访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。二、查看数据库创建的dblink执
2021-09-06 10:38:12
1238
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅