![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 71
1999xiaoshuai
这个作者很懒,什么都没留下…
展开
-
Trie树
又称单词查找树,字典树,前缀树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。class Trie { Trie[] next; boolean isEnd = false; public Trie() { next = new Trie[26]; } .原创 2021-04-19 17:23:55 · 86 阅读 · 0 评论 -
算法题解3
061、LeetCode26-删除有序数组中的重复项(双指针)本题目一道衍生题详见:leetcode-27. 移除元素,两道题目都是使用双指针的做法来求解,两道题目都限制我们只能使用原地算法,不可以使用额外的空间。针对26题:起始左右指针在索引为0和1处如果发现左右指针指向的元素相等,移动右指针+1如果不相等,将右指针的值覆盖到左指针的下一个元素中最后返回左指针的索引+1,即为新数组的大小/** * 时间复杂度:O(n) n为数组的长度 * 空间复杂度:O(1) */class S原创 2021-04-19 17:22:42 · 93 阅读 · 0 评论 -
算法题解2
033、LeetCode688-“马”在棋盘上的概率(dfs,dp)本题目可以很简单的用dfs做出来,但是时间复杂度较高。思路:模拟马在棋盘上走,对走到的任意一地方如果不在就返回0如果在就继续走,当走的步数等于K,发现还在棋盘中就返回0对返回的8个方向的数据取平均数/** * 时间复杂度:O(8 ^ k) 每次能往8个方向走,一共能走K次 * 空间复杂度:O(K) 递归栈 */class Solution { // 移动的方向 int[][] move = {原创 2021-04-19 17:21:41 · 676 阅读 · 0 评论 -
序列化和反序列化
序列化说的是对象,静态字段不属于对象,所以无法序列化1、为什么需要序列化对于一个复杂的对象,因为对象中到处引用,导致这个对象在堆内存中到处都是,比较凌乱,当想要将这个对象传输到另一台机器(RPC)时,不是很方便,所以需要将它序列化。通常将对象变为文件(text)或者二进制流(binary),然后就可以传输,在远端可以重构出来(反序列化)把对象的字节序列永久地保存在硬盘上,通常存放在一个文件中(内存吃不消的情况下)在网络上传送对象的字节序列(RPC),接收方通常需要反序列化将二进制流生成为对象2原创 2021-03-27 14:56:30 · 79 阅读 · 0 评论 -
java并发和内存
Java并发和内存1、三个性质1.1、原子性指事务的不可分割性,一个事务的所有操作要么不间断地全部被执行,要么一个也没有执行。Java原子性的理解:这个(些)指令不可以再被分割Java违反了原子性会引发指令交错的现象,这里的交错指的是多个线程执行指令的交错synchronized可以解决原子性问题,volatile不可以1.2、可见性可见性指的是,当一个线程对一个共享变量进行写操作后,另一个线程会不会立即收到最新的结果为什么会出现可见性问题? ——> JMM + CPU缓存结构如原创 2021-03-23 23:15:30 · 132 阅读 · 0 评论 -
Java 深浅拷贝
引用拷贝、对象拷贝、浅拷贝、深拷贝1、什么是引用拷贝拷贝时只拷贝了一个对象的引用,使得拷贝引用和被拷贝引用指向同一个对象Student a = new Student();Student b = a;2、什么是对象拷贝拷贝时会将待拷贝的对象创建一个新的放在堆中,然后生成一个新的引用指向它。前提是Student重写了了clone方法,注意不需要非得继承Cloneable接口,只是一个声明接口clone()接口是Object类中一个protected final方法Student a =原创 2021-03-23 16:34:43 · 79 阅读 · 0 评论 -
java 集合容器
Java ContainerContainer 容器是什么?用来组织多个相同类型的数据,进行增删改查操作的集合Java中已经有数组了,为什么还需要Container?数组长度固定、集合长度可变,数组不可以满足我们的自定义要求,如:按照一定顺序存取, 一组数据之间不能相同1、继承关系四大接口:Set、List、Queue、MapSet的重要实现类:HashSet、LinkedHashSet、TreeSetQueue重要的实现类:PriorityQueue、LinkedListL原创 2021-03-23 16:33:56 · 153 阅读 · 0 评论 -
concurrenthashmap源码分析
ConcurrentHashMapJava7ConcurrentHashMap是一个线程安全的map集合多线程下的hashmap有什么问题?JDK1.7:死链、元素覆盖JDK1.8:元素覆盖1、底层数据结构Segment数组(每个里面是HashEntry数组 + 链表),ConcurrentHashMap(分段锁) 对整个桶数组进行了分割分段(Segment),每一把锁只锁容器其中一部分数据,多线程访问容器里不同数据段的数据,就不会存在锁竞争,提高并发访问率。// jdk1.7st原创 2021-03-23 16:33:29 · 114 阅读 · 0 评论 -
arraylist源码分析
ArrayList源码分析1、成员变量public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{ private static final long serialVersionUID = 8683452581122892189L; private static原创 2021-03-23 16:30:12 · 94 阅读 · 0 评论 -
linkedlist源码分析
LinkedList源码分析public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable{ ..}LinkedList实现了Deque接口,可以将LinkedList当做队列使用;实现了cloneable表示能被克隆,实现了Serializa原创 2021-03-23 16:28:03 · 155 阅读 · 0 评论