- 博客(137)
- 收藏
- 关注
原创 了解ConcurrentHashMap
JDK1.7和JDK1.8中ConcurrentHashMap的结构JDK1.7的ConcurrentHashMap:JDK1.8的ConcurrentHashMap(TreeBin: 红黑二叉树节点 Node: 链表节点): 答:ConcurrentHashMap 结合了 HashMap 和 HashTable 二者的优势。HashMap 没有考虑同步,HashTable 考虑了同步的问题。但是 Has
2020-08-28 10:12:40
281
原创 二分查找相关习题理解
剑指 Offer 53 - II. 0~n-1中缺失的数字一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 1:输入: [0,1,3]输出: 2示例 2:输入: [0,1,2,3,4,5,6,7,9]输出: 8class Solution { public int missingNumber(int[] nums) { int i = 0, j =
2020-08-15 11:32:19
294
原创 Git相关知识点
1.Git与SVN区别Git 属于分布式版本控制系统,而 SVN 属于集中式版本控制系统。分布式版本控制每个人的电脑上就有一份完整的代码,而集中式版本控制只有中央服务器拥有一份代码。所以集中式版本控制存在安全问题,当中央服务器挂了所有人都没办法工作了。集中式版本控制需要连网才能工作,如果网速过慢,那么提交一个文件会慢的无法让人忍受。而分布式版本控制不需要连网就能工作。分布式版本控制新建分...
2020-03-19 00:41:33
223
原创 LeetCode 链表 习题
一.涉及删除问题83. 删除排序链表中的重复元素给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3/** * Definition for singly-linked list. * public ...
2020-03-17 16:25:02
865
原创 LeetCode 字符串(简单题)
答案摘抄自:https://leetcode-cn.com/tag/string/13. 罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D ...
2020-03-15 01:37:39
4941
原创 Leetcode 数组(简单题)[1000题之后]
答案摘抄自:https://leetcode-cn.com/tag/array/1002. 查找常用字符给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。你可以按任意顺序返回答案。示例 1:输入:[“bella”,“label”,“...
2020-03-15 00:47:28
879
原创 Leetcode 数组(简单题)[1-1000题]
1. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]方法一...
2020-03-14 15:38:31
2290
原创 程序员代码面试指南 [需要排序的最短子数组长度,数组中出现次数超过一半的数字,数组中出现次数超过一半的数字]
需要排序的最短子数组长度https://www.nowcoder.com/questionTerminal/fccb5d14b44b4b99b34839bdf20588e9?orderByHotValue=1&page=1&onlyReference=false来源:牛客网给定一个无序数组arr,求出需要排序的最短子数组的长度,对子数组排序后能使得整个数组有序,即为需要排序的...
2020-03-10 21:05:31
319
原创 Java集合类
整理自:https://blog.youkuaiyun.com/pcwl1206/article/details/864790661、Java 中常用的容器有哪些?常见容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。CollectionSetSetTreeSet:基于红黑树实现,支持有序性操作,例如...
2020-03-08 14:52:12
194
原创 理解MySQL
整理自:https://blog.youkuaiyun.com/pcwl1206/article/details/843415401、请说下你对 MySQL 架构的了解?先看下 MySQL 的基本架构图: 大体来说,MySQL 可以分为 Server 层和存储引擎两部分。  ...
2020-03-08 01:48:53
359
原创 理解Java虚拟机
整理自:https://blog.youkuaiyun.com/pcwl1206/article/details/102952811一.Java虚拟机内存的各个区域1、Jvm 的主要组成部分及其作用。类加载器(ClassLoader)运行时数据区(Runtime Data Area)执行引擎(Execution Engine)本地库接口(Native Interface) &nb...
2020-03-08 01:27:52
269
原创 Java并发总结(高级)
1.谈谈 synchronized和ReenTrantLock 的区别① 两者都是可重入锁两者都是可重入锁。“可重入锁”概念是:自己可以再次获取自己的内部锁。比如一个线程获得了某个对象的锁,此时这个对象锁还没有释放,当其再次想要获取这个对象的锁的时候还是可以获取的,如果不可锁重入的话,就会造成死锁。同一个线程每次获取锁,锁的计数器都自增1,所以要等到锁的计数器下降为0时才能释放锁。② syn...
2020-03-07 02:04:55
251
原创 sychronized总结(包括sychronized底层实现原理)
一.sychronized的特性1.原子性:一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。注意:一条 java 语句不一定是原子的,也不一定只是一条指令。2可见性:当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。所有的变量都存储在主内存中。每个线程都有自己独立的工作内存,里面保存该线程使用到的变量的副本(主内存中...
2020-03-06 16:01:20
1003
原创 Java并发总结(基础)
一.并发基础1.什么是进程,什么是线程?进程与线程之间的区别。进程:操作系统中一个程序的执行周期称为一个进程。线程:一个程序同时执行多个任务。通常,每个任务就称为一个线程。没有进程就没有线程,进程一旦终止,其内的线程也将不复存在。多进程与线程的区别:(1)根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位。(2)线程依赖于进程而存在,一个线程只能属于一个进程,...
2020-03-05 23:54:24
195
原创 Linux中安装VMware-Tools步骤(实现Linux与Windows之间的复制与粘贴)
Linux中安装VMware-Tools的步骤说明1.进入CentOS2.点击左上角菜单虚拟机,选择安装VMware-Tools3.CentOS会出现一个vm的安装包4.点击右键复制,到/opt/目录下进行粘贴5.打开终端,依次输入命令cd /opt/lstar -zxvf VMwareTools-10.0.5-3228253.tar.gz之后会产生一个解压过后的文件夹输...
2020-02-25 16:32:24
614
原创 详解网络体系结构中的传输层(包含TCP的“三报文握手”和“四报文挥手”)
5.1传输层概述计算机网络体系结构中的物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信。但实际上在计算机网络中进行**通信的真正实体是位于通信两端主机中的进程**。通信的真正端点并不是主机而是主机中的进程。也就是说,端到端的通信是应用进程之间的通信。过程:倘若不同主机的不同应用进程要进行网络通信,在应用层需要用不同的端口号代表不同...
2020-02-23 02:12:49
1611
原创 HTTP协议
一、HTTP协议初相识HTTP协议(超文本传输协议),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。1.一次HTTP请求的完整过程:1.域名解析1>浏览器会首先搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存),查找自身的缓存中是否存在域名对应的IP地址,如果查找到且没有过期则解析到此结束 。2>...
2020-02-19 20:44:45
254
原创 左神算法5:哈希函数、哈希表、布隆过滤器、一致性哈希、并查集问题和岛结构
1.哈希函数和哈希表1.1哈希函数特点经典的哈希函数的输入域是无穷大的哈希函数的输出域是有穷尽的,虽然很大,但是是个固定的数值当输入参数固定的情况下,得到的输出参数固定,它不是随机函数,样本固定得到的输出值固定输入不一样,也有可能得到相同的哈希值(哈希碰撞)虽然会有两个输入对应同一个输出,但是对于大量的输入对应的输出域基本是平均分的即S域上均匀分布。推论:对于输入对应的哈希值,使...
2020-02-15 13:47:58
591
原创 LeetCode905.按奇偶排序数组~~~~724. 寻找数组的中心索引~~~~66.加一~~~~414.第三大的数
LeetCode905.按奇偶排序数组给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。你可以返回满足此条件的任何数组作为答案。示例:输入:[3,1,2,4]输出:[2,4,3,1]输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。提示:1 <= A.length <= 50000 <=...
2020-02-14 20:33:46
180
原创 左神算法4.二叉树及相关习题理解
题目1:实现二叉树的先序、中序、后序遍历[递归方式和非递归方式]1.1递归实现public class BinaryTreeWithRecur { public static class Node{ public int value; public Node left; public Node right; publi...
2020-02-13 20:28:17
405
原创 LeetCode217.存在重复元素~~~~~~917.仅仅反转字母~~~~~~977.有序数组的平方
LeetCode217.存在重复元素给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: trueclass S...
2020-02-12 19:31:09
183
原创 左神算法3:栈、队列、链表、矩阵结构及相关习题
一、栈和队列题目1:用固定的大小的数组实现栈和队列固定大小的数组实现栈public class StackWithArray { private int[] array; private int index; //指向即将放入的位置 public StackWithArray(int initialSize){ if(initialSize&l...
2020-02-12 18:11:55
377
原创 LeetCode88.合并两个有序数组
LeetCode88.合并两个有序数组给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0],...
2020-02-11 23:44:39
143
原创 LeetCode58.最后一个单词的长度
LeetCode58.最后一个单词的长度给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成、不包含任何空格的 最大子字符串。示例:输入: “Hello World”输出: 5class Solution { pub...
2020-02-11 23:37:31
167
原创 LeetCode9.回文数
LeetCode9.回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一...
2020-02-11 23:34:24
145
原创 LeetCode383.赎金信
LeetCode383.赎金信给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串ransom能不能由第二个字符串magazines里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。)注意:你可以假设两个字符串均只含有小写字母。canConst...
2020-02-11 23:29:09
219
原创 左神算法2:排序(快排、堆排、桶排、计数与基数排序简单介绍) 荷兰国旗问题 大根堆小根堆 排序稳定性 比较器 相邻两数的最大差值问题
1.荷兰国旗问题定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。要求时间复杂度为O(N)、额外空间复杂度为O(1)。分析:三个指针法:一个指向前头less,一个指向尾部more,一个是当前下标cur。当前下标由指向前面的指针推着前进。import java.util.Arrays;public class...
2020-02-11 18:20:05
518
原创 左神算法1:小和问题和逆序对问题
1. 小和问题在一个数组中,每一个数左边比当前数小的数累加起来,叫做这个数组的小和。求一个数组的小和。例子:[1,3,4,2,5]1左边比1小的数,没有;3左边比3小的数,1;4左边比4小的数,1、3;2左边比2小的数,1;5左边比5小的数,1、3、4、2;所以小和为1+1+3+1+1+3+4+2=16分析:小和问题,由当前数左侧所有比自己小的数之和相加 ==》转换为 =...
2020-02-11 15:13:44
671
原创 LeetCode35.搜索插入位置
LeetCode35.搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6]...
2020-02-11 00:59:40
144
原创 LeetCode27.移除元素
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为...
2020-02-11 00:54:07
139
原创 LeetCode189.旋转数组
LeetCode189.旋转数组给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [...
2020-02-11 00:50:54
131
原创 LeetCode709.转换成小写字母
LeetCode709.转换成小写字母实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。示例 1:输入: “Hello”输出: “hello”示例 2:输入: “here”输出: “here”示例 3:输入: “LOVELY”输出: “lovely”class Solution { pu...
2020-02-11 00:47:10
185
原创 剑指Offer 数组系列 Java实现
题目描述:数组中重复的数在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。public class Solution { // Parameters: // ...
2020-02-09 19:33:13
169
原创 JavaSE总结【初识+基础】
一、初识1.字节字节是我们常见的计算机中最小存储单元。计算机存储任何的数据,都是以字节的形式存储,右键点击文件属性, 我们可以查看文件的字节大小。 8个bit(二进制位) 0000-0000表示为1个字节,写成1 byte或者1 B。8 bit = 1 B1024 B =1 KB1024 KB =1 MB1024 MB =1 GB1024 GB = 1 TB2.常用命令3.JR...
2020-02-06 14:56:07
212
原创 Thread和Runnable的区别
实现Runnable接口比继承Thread类所具有的优势:1.避免了单继承的局限性一个类只能继承一个类(一个子类只能有一个父类),类继承了Thread类就不能继承其他的类。而实现了Runnable接口,还可以继承其他的类,实现其他的接口。2.增强了程序的扩展性,降低了程序的耦合性(解耦),代码和线程独立。实现Runnable接口的方式,把设置线程任务和开启新线程进行了分离(解耦)实现类...
2020-02-05 14:49:17
126
原创 ArrayList类的详解
ArrayList类1.基本使用:import java.util.ArrayList;public class StudentArrayList { public static void main(String[] args) { //创建学生数组 ArrayList<String> list = new ArrayList<&g...
2020-02-03 19:18:36
767
原创 Object类用例
Object类的equals和toString方法 Person.javaimport java.util.Objects;public class Person { private String name; private int age; public Person() { } public Person(String name, int ...
2020-02-03 18:39:07
176
原创 System类用例
java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有: public static long currentTimeMillis(): 返回以毫秒为单位的当前时间。 public static void arraycopy(Object src, int srcP...
2020-02-03 17:50:14
158
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人