Keep Learning

永远年轻,永远热泪盈眶

LeetCode 题解

数组问题 LeetCode 283.Move Zeroes LeetCode 27.Remove Element LeetCode 26. Remove Duplicates from Sorted Array LeetCode 80. Remove Duplicates from Sorte...

2018-05-12 11:53:34

阅读数 249

评论数 0

Redis实现分布式锁

转载自https://blog.csdn.net/fengshizty/article/details/53561562 Redis实现分布式锁 在集群等多服务器中经常要使用到同步处理一下业务,...

2018-08-05 10:09:07

阅读数 88

评论数 0

乐观锁与悲观锁

转载自 https://www.cnblogs.com/qjjazry/p/6581568.html 首先介绍一些乐观锁与悲观锁:   悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里...

2018-07-26 21:11:18

阅读数 141

评论数 0

Java 中的锁—偏向锁、轻量级锁、自旋锁、重量级锁

转载自 https://blog.csdn.net/zqz_zqz/article/details/70233767 之前做过一个测试,详情见这篇文章《多线程 +1操作的几种实现方式,及效率对比》...

2018-07-26 17:58:50

阅读数 112

评论数 0

JVM的运行时数据区相关总结

                          JVM的内存区域划分   学过C语言的朋友都知道C编译器在划分内...

2018-07-22 14:43:08

阅读数 87

评论数 0

常量池与运行时常量池

* 转载自 [java虚拟机:运行时常量池](https://www.cnblogs.com/xiaotian15/p/6971353.html) ———- 一、运行时常量池简介 运行时常量池(Runtime Constant Pool),它是方法区的一部分。Class文件中除了有类的版本...

2018-07-22 14:35:56

阅读数 1475

评论数 0

快速失败(fail-fast)和安全失败(fail-safe)的区别

一:快速失败(fail—fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出Concurrent Modification Exception。 原理:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCount 变...

2018-07-21 16:22:20

阅读数 334

评论数 0

HashMap与Hashtable的对比

首先,关于 Hashtable的源码相关解析可以看 Java8源码-Hashtable(2) HashMap为什么线程不安全 多线程 put 操作后, get 操作导致死循环,导致 cpu100%的现象。 主要是多线程同时put 时, 如果同时触发了 rehash 操作, 会导致扩...

2018-07-21 10:23:52

阅读数 86

评论数 0

Java中Map相关类的总结

Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMap,类继承关系如下图所示: HashMap:它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的...

2018-07-20 10:46:06

阅读数 78

评论数 0

基于JDK8的HashMap源码解析

常见概念解释 常量解释 hash 值的计算 put 操作 resize 扩容操作

2018-07-19 10:57:44

阅读数 2005

评论数 6

LinkedList源码解析

本文对LinkedList的实现讨论都基于JDK8版本Java中的LinkedList类实现了List接口,是一种链表类型的数据结构,支持高效的插入和删除操作,同时也实现了Deque接口,使得LinkedList类也具有队列的特性。LinkedList类的底层实现的数据结构是一个双端的链表。Lin...

2018-07-15 16:15:07

阅读数 76

评论数 0

ArrayList的源码分析

ArrayList使用的存储的数据结构ArrayList的初始化ArrayList是如何动态增长ArrayList如何实现元素的移除ArrayList小结 ArrayList是我们经常使用的一个数据结构,我们通常把其用作一个可变长度的动态数组使用,大部分时候,可以替代数组的作用,我们不用事先设定A...

2018-07-15 15:13:35

阅读数 82

评论数 0

Redis基础知识集命令总结

1. Redis是内存数据库,支持数据持久化,当服务重启之后,可以再将数据reload进内存中。 2. Redis服务启动后,对外提供服务的端口号为6379 3. 如果执行的是 ./redi-cli,那么自动连接本机的redis服务 4. 如果想要redis服务后台启动: ./redis-...

2018-05-29 21:49:57

阅读数 127

评论数 2

IntelliJ IDEA 安装使用教程以及激活码

转载自 史上最简单的 IntelliJ IDEA 教程 温馨提示:本教程的 GitHub 地址为「intellij-idea-tutorial」,欢迎感兴趣的童鞋Star、Fork,纠错。 1 简介   ...

2018-05-17 20:55:47

阅读数 494

评论数 0

LeetCode 435. Non-overlapping Intervals

问题描述 给定一组区间,问最少删除多少个区间,才能让剩下的区间不重合 地址 问题描述 问最少删除多少个区间,等价于最多保留多少个区间。 该题有两种解法: 动态规划: 该解法类似于 LeetCode 300. Longest Increasing Subsequence(最长递增...

2018-05-12 09:43:27

阅读数 108

评论数 0

LeetCode 392. Is Subsequence

问题描述 地址 问题分析 验证串s 是否是字符串t的子序列,有以下几种做法: 方法1: 贪心 用两个指针从前向后,若s[sIndex] == t[tIndex],说明在t中已经找到一个,则两指针都后移,若s[sIndex] != t[tIndex],则将tIndex后移,看t的下...

2018-05-11 21:14:45

阅读数 380

评论数 0

LeetCode 455. Assign Cookies

问题描述 地址 问题分析 贪心问题,对两个数组进行排序,然后分配 经验教训 贪心问题常和排序搭配使用 代码实现 class Solution { public int findContentChildren(int[] g, int[] s) { ...

2018-05-11 16:17:51

阅读数 57

评论数 0

最长公共子串问题

问题描述 给出两个字符串,找到最长公共子串,并返回其长度。 Example : 给出A=“ABCD”,B=“CBCE”,返回 2 牛客地址 LintCode地址 问题分析 与 最长公共子序列(Longest Common Subsequence)问题 不同,该题是求最长公共子串的长度...

2018-05-11 15:00:26

阅读数 273

评论数 0

最长公共子序列(Longest Common Subsequence)问题

问题描述 给出两个字符串,找到最长公共子序列(LCS),返回LCS的长度。 Example : 给出”ABCD” 和 “EDCA”,这个LCS是 “A” (或 D或C),返回1 给出 “ABCD” 和 “EACB”,这个LCS是”AC”返回 2 牛客地址 LintCode地址 问题分析...

2018-05-11 10:14:53

阅读数 649

评论数 0

LeetCode 376. Wiggle Subsequence

问题描述 地址 问题分析 在 O(N) 的时间复杂度下求一个数组的最长摆动(升序降序间或变化)子序列长度。 用贪心的思想,用up 来记录上一个子序列末尾两位数字是升序的最长子序列的长度,用down 来记录上一个子序列末尾两位数字是降序的最长子序列的长度,初始化都为1,从i = 1 ...

2018-05-10 21:27:01

阅读数 54

评论数 0

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