- 博客(19)
- 收藏
- 关注
原创 狂啃HashMap--put()函数
狂啃HashMap–put()函数/** * 一个键对应一个值 * 如果当前map中已经包含一个相同的key,原来的value会被替换 * @param key * @param value * @return 返回当前的key原先关联的value, * 如果当前key先前没有绑定value则返回null */public V put(K key, V value) { return putVal(hash(key), key, value, false, true);}/*
2020-05-20 09:48:39
210
原创 狂啃HashMap--resize()函数
狂啃HashMap–resize()函数触发时机当前table未被初始化时当前键值对的个数 > threshold(loadfactor * capacity)阈值时触发扩容JDK8的resize()/** * 初始化或翻倍table的大小,如果table还未被初始化 * 为null时,则分配threshold的值给table的初始化大小 * 否则,由于是根据2的次幂扩容,每个桶中的元素不是在相同 * 的下标,就是在新的哈希表中2的次幂的下标中 * @return the ta
2020-05-20 09:05:47
181
原创 狂啃HashMap--基本结构
狂啃HashMap–基本结构类图类变量/** * 默认的初始化容量,必须是2的次幂 */static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16/** * 最大容量,当更大的参数通过有参构造器传入时。 * 2的次幂必须 <= 1 << 30 */static final int MAXIMUM_CAPACITY = 1 << 30;/** * 默认的加载因子,表示当前哈
2020-05-20 09:05:03
140
原创 对动态规划理解
无后效性问题:任何到达子问题的路径的过程都不影响当前子问题的返回结果。无后效性问题均能通过动态规划求解(求解步骤):1)先写出暴力递归版本,找出递归函数中的可变参数(可能为一维,二维,三维····),定义解空间(解空间每一个值即为当前状态可变参数下的递归结果)。2)确定最终状态(找出要求解的值在解空间中的位置)。3)根据base case定义初始值4)分析普遍位置依赖于哪些位置5)根据...
2019-09-29 11:17:25
138
转载 Java垃圾回收机制
分代垃圾回收机制,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的回收算法,以便提高回收效率。我们将对象分为三种状态:年轻代、年老代、持久代。JVM将堆内存划分为 Eden、Survivor 和 Tenured/Old 空间。1. 年轻代所有新生成的对象首先都是放在Eden区。 年轻代的目标就是尽可能快速的收集掉那些生命周期短的对象,对应的是Minor...
2019-08-20 11:24:47
133
转载 JVM内存模型分析
注意: 当前JVM内存模型基于JDK8,10和11以后内存模型有所改变!Java虚拟机的内存可以分为三个区域:栈stack、堆heap、方法区method area。栈的特点如下:1. 栈描述的是方法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)2. JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等)3. 栈属于线程私有,...
2019-08-20 08:53:12
77
原创 HashMap底层实现原理
9.4.2 HashMap底层实现详解【节选自高淇老师300集中的内容,该文章的源码来自JDK1.6,在JDK1.8中Entry已换成Node,并且哈希算法有所改变,可自行查看源码,但底层原理是一样的】 HashMap底层实现采用了哈希表,这是一种非常重要的数据结构。对于我们以后理解很多技术都非常有帮助(比如:redis数据库的核心技术和HashMap一样),因此,非常有必要让大家理解。...
2019-08-19 21:28:44
541
1
原创 #牛客问答项目总结
登录和注册1.1 登录功能:(1) 校验密码时取出该用户对应的密码和盐进行md5加密后与数据库的密码(密文)进行校对。讲讲md5:md5算法是一种不可逆的算法,使用的是hash算法,只有加密过程没有解密过程,但因为存在彩虹表(黑客将常用的密码通过md5加密后存储到表中,将用户密码进行暴力破解),因此需要加盐,即给每一个用户密码后面添加一个随机的字符串再进行加密。(2) 校验密码成功后,向...
2019-08-11 19:30:56
829
1
原创 mysql5.7.26使用groupby从句报错Expression #1 of SELECT list is not in GROUP BY clause....
使用的是docker+linux写groupby语句报错,查了网上资料说是要改mysql配置文件。使用 docker ps -a 查看所有容器docker start mysql容器id 启动mysql容器docker ps 查看当前运行的mysql容器docker exec -it 931cf3c30f33(容器id) /bin/bashca...
2019-07-26 11:01:27
818
原创 敏感词算法/优化
/** * @author cj * @date 2019/7/22 * 敏感词过滤 * 词典树/前缀树 * 特殊字符只针对空格或者&*……之类 * 若敏感词中间插字母或数字则无效 */ @Component public class SensitiveUtil impleme...
2019-07-23 17:23:43
925
原创 springboot2.1.6.RELEASE定制和修改Servlet容器的相关配置
官方链接:https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-developing-web-applications.html#boot-features-customizing-embedded-containers第一种方法:第二种方法:...
2019-07-13 18:38:43
164
原创 springboot2.1.6.RELEASE自定义异常错误页面(来自官方文档)
https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-developing-web-applications.html#boot-features-error-handling-custom-error-pages <==链接
2019-07-13 18:26:38
220
原创 springboot无法加载或找不到主类
创建新项目时莫名其妙一直报这个错。解决方法: clean之后再install maven项目就能够启动成功了。
2019-07-10 23:32:20
253
原创 堆排序思路和理解
堆排序思路: 1.先把数组中的元素依次传入构造为大根堆2.交换根节点(数组第一个元素)和末尾的叶节点(数组最后一个元素)3. 调整此时交换后的乱序大根堆4. 调整完毕后,重复2,3步骤5. 总结: 通过每次将大根堆中的栈顶元素和末尾元素交换,达到将该栈顶元素排好序的目的,依次 循环。6. 要注意的点:6-1 注意边界值的控制,设置区间[0, heapSize)为大根堆的范围,以此...
2019-07-09 10:33:47
207
原创 对递归函数的理解
关键是不要去深究递归的细节,这一部分应该交给计算机来做,我们应该考虑的是1. 缩小问题的规模,数学归纳法。2. 递归函数的设置: 函数返回值是你要得到的结果的最小单位,比如你要创建一个链表,那么返回值就是一个节点,函数的参数即为题目所给出的条件。3. 在假设递归函数成立的条件下思考调用递归函数函数之前要做什么事情,即假设调用递归函数递归完成后必定能达成某个你所期望的结果。4. 考虑边界值。...
2019-07-04 11:32:42
144
原创 递归函数写法思路,递归控制,递归算法
递归书写方法:每次写递归算法题都会很乱,无从下手,看了https://coding.imooc.com/class/132.html的教程,把里面老师讲的的笔记记录一下,具体可以去看该老师的教程第七章的7-4节1. 严格定义递归函数作用,包括参数,返回值,Side-effect.side-effect指的是我们需要去控制一些出现在函数中的变量的状态,最好确保变量的状态在递归完之后恢复为原来的...
2019-07-03 12:20:29
450
转载 Java线程中的6种状态
初始(NEW):新创建了一个线程对象,但还没有调用start()方法。运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就绪状态(ready)。就绪状态的线程在获得CPU时...
2019-06-30 16:14:26
85
原创 使用idea中的Git上传至码云报错push to origin/master was rejected
使用idea中的Git上传至码云报错push to origin/master was rejected注: 使用idea中的Git上传至GitHub无任何报错成功上传。网上查找的所有方法基本上都试过了仍然不行,最后发现当我将Git仓库地址设置为IdeaProjects即当前idea项目根目录 就会一直报 push t...
2019-06-28 15:20:28
334
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人