摘要: 1.基本算法 快速排序是一种分治的排序算法。它将一个数组分成两个子数组,再对这两个数组独立地排序。快速排序的大致过程如下图所示: 整个算法分为三步: 1. 选择一个元素作为枢轴(pivot) 2. 扫描并交换数组元素,使得小于枢轴的元素处于左边,大于枢轴的元素处于右边,这个过程称为切分(partit 阅读全文
posted @ 2019-06-30 13:23 Datartvinci 阅读(333) 评论(0) 推荐(0) 编辑
摘要: 1. ThreadLocal 1.1 简介 ThreadLocal是线程内部的数据存储类,通过它可以指定的线程中存储数据,数据存储以后,只有在指定线程中可以获取到存储的数据,对于其他线程来说则无法获取数据。 它能够满足以下需求: 同一个变量在不同的线程中需要有不同的副本 经常应用于static方法, 阅读全文
posted @ 2019-06-22 18:37 Datartvinci 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 1.简介 加密方法分为对称加密和非对称加密,区别在于对称加密只有有一个密钥,而非对称加密有两个密钥 对称加解密:enccrypt(明文,密钥)=密文,decrypt(密文,密钥)=明文 非对称加解密:encrypt(明文,公钥)=密文,decrypt(密文,私钥)=明文 2.密钥 2.1.密钥格式 阅读全文
posted @ 2019-06-06 16:50 Datartvinci 阅读(1983) 评论(1) 推荐(0) 编辑
摘要: 基本用法? 说说wait? 说说notify? 为什么要synchronized? 基本用法? 说说wait? 说说notify? 为什么要synchronized? 1.简介 wait()和notify()是用于多线程之间协作的方法。如果一个线程调用了wait(),会阻塞直到其他线程调用了noti 阅读全文
posted @ 2019-06-01 02:26 Datartvinci 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 题目描述 https://leetcode.com/problems/distinct-subsequences/ 这道题的分类是动态规划,动态规划很难掌握,对于没搞过信息学竞赛的人来说更是难上加难,接下来我会用一个接地气的方法教大家如何推导出这道题的动态规划递推公式。 题目大意是给定一个字符串S和 阅读全文
posted @ 2019-06-01 02:19 Datartvinci 阅读(750) 评论(0) 推荐(0) 编辑
摘要: 为什么设置final 为什么安全性不如char[] new String("")的过程 怎么比较大小? 怎么比较相等? 怎么计算hashcode? intern的作用? 说说字符串常量池 substring方法做了什么 包私有构造器 大小写转换的原理 为什么设置final 为什么安全性不如char[ 阅读全文
posted @ 2019-06-01 02:10 Datartvinci 阅读(249) 评论(0) 推荐(0) 编辑