
Java
文章平均质量分 63
Sc_Cloud
这个作者很懒,什么都没留下…
展开
-
20220825每日一题:力扣658.找到k个最接近的元素
给定一个 排序好 的数组 arr ,两个整数 k 和 x ,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。由于题目中数组是已经排序好的,因此最靠近x的数应该是分布在x两侧的连续k个数。由于答案一定为连续的数组,因此可以采用双指针的方式,从数组两端向中间逼近,确定最终数组位置。...原创 2022-08-25 19:46:48 · 423 阅读 · 0 评论 -
20220817每日一题:力扣层数最深叶子节点的和
在该题,只需解决以上两个问题。因此简单实现可以通过一遍遍历确认最大深度,再一次遍历统计叶子节点和,完成该题。考虑到该题涉及树深度,因此直观思路通过层序遍历树结构,取最深层并把节点数累加,即为最终答案。一般来说,树,图的相关操作除了BFS(广度优先外),还能考虑从DFS(深度优先角度做)。可以做到用一次遍历完成任务。,请你返回 层数最深的叶子节点的和。给你一棵二叉树的根节点。原创 2022-08-18 16:51:47 · 313 阅读 · 0 评论 -
JVM-参数汇总(持续更新)
在我们生产中,常常涉及JVM性能调优。这里整理汇总了部分常见的参数,后续会对各参数进行实验测试(持续更新ing)JVM参数主要分为三类,标准参数(一般以-开头),非标准参数(一般以-X开头)和非Stable参数(一般以-XX开头)关于JVM选项的几点:1)布尔型参数选项:-XX:+ 打开,-XX:- 关闭。(比如-XX:+PrintGCDetails)**2)数字型参数选项:**通过-XX:=设定。数字可以是m/M(兆字节),k/K(千字节),g/G(G字节)。比如:32K表示32768字节。**3)字符行原创 2022-06-29 21:38:49 · 349 阅读 · 0 评论 -
深入探索String、StringBuffer和StringBuilder区别(源码 + 代码验证)
String、StringBuffer和StringBuilder都是Java中用来表示字符串的。在Java中,String类是一个不可变类,任何对String的改变都会引发新的String对象的生成。StringBuffer和StringBuilder则都是可变类,任何对他所指代的字符串都不会产生新的对象。StringBuilder是Java5后提出来的,与StringBuffer相比,StringBuilder有更高的执行效率,但其不是线程安全的。1. 性能对比下面对String,StringBuf原创 2022-04-11 19:15:00 · 2870 阅读 · 0 评论 -
20220321每日一题:力扣653.两数之和IV - 输入BST
题目给定一个二叉搜索树 root 和一个目标结果 k,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。示例输入: root = [5,3,6,2,4,null,7], k = 9输出: true输入: root = [5,3,6,2,4,null,7], k = 28输出: false解法一:基于Set查询由于题目仅涉及到两数相加,且当其中一个数确定为x,仅需判断搜索树中是否存在另一个元素k - x即可。因此我们可以通过构建一个Set存储树结构内所有元素,原创 2022-03-21 14:21:54 · 733 阅读 · 0 评论 -
Java基础(一)-ArrayList和LinkedList性能对比与原因探索
今天学习的时候,看到一篇文章,说LinkedList的作者自己不用LinkedList,感觉十分的吃惊。本着实践出真知的态度,立刻写了几行代码用于测试ArrayList和LinkedList的在增删查改四大方面的性能对比(测试所有代码放在文末)。经过一番测试后,我得到了如下的对比图(由于随即插入,查找,删除,修改等操作LinkedList的时间简直慢得令人发指,因此只测试了在大量数据情况下对少量数据的更改操作):有意思的是,在我们学习数组和链表上,经常有如下结论:数组随机访问快,但随即插入删除原创 2022-03-18 14:08:48 · 1087 阅读 · 0 评论 -
20220310每日一题:力扣589.N叉树的前序遍历
题目给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 。n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。示例输入:root = [1,null,3,2,4,null,5,6]输出:[1,3,5,6,2,4]输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]输出:[1,2,3,6,原创 2022-03-10 16:34:36 · 235 阅读 · 0 评论 -
Java容器遍历--List,Set,Map
在日常编码中常常需要对Java的常用容器进行遍历,这里对List,Set,Map的常用遍历方法进行汇总。在Java基础容器篇中,我们了解到Iterator是遍历集合的工具,即我们通常通过Iterator迭代器来遍历集合。Collection的实现类都要实现iterator()函数,返回一个Iterator对象。因此我们可以考虑使用迭代器遍历Collection的容器。对于Map容器,因为没有继承Collection类,因此我们无法直接使用Iterator进行遍历。但是在Map中提供了一个entrySet原创 2022-03-08 14:12:51 · 195 阅读 · 0 评论 -
220226每日一题:力扣2016.增量元素之间的最大差值
题目给你一个下标从 0 开始的整数数组 nums ,该数组的大小为 n ,请你计算 nums[j] - nums[i] 能求得的 最大差值 ,其中 0 <= i < j < n 且 nums[i] < nums[j] 。返回 最大差值 。如果不存在满足要求的 i 和 j ,返回 -1 。示例输入:nums = [7,1,5,4]输出:4解释:最大差值出现在 i = 1 且 j = 2 时,nums[j] - nums[i] = 5 - 1 = 4 。注意,尽管 i =原创 2022-02-26 17:27:00 · 519 阅读 · 0 评论 -
220218每日一题:力扣1791.找出星型图的中心节点
题目有一个无向的 星型 图,由 n 个编号从 1 到 n 的节点组成。星型图有一个 中心 节点,并且恰有 n - 1 条边将中心节点与其他每个节点连接起来。给你一个二维整数数组 edges ,其中 edges[i] = [ui, vi] 表示在节点 ui 和 vi 之间存在一条边。请你找出并返回 edges 所表示星型图的中心节点。示例输入:edges = [[1,2],[2,3],[4,2]]输出:2解释:如上图所示,节点 2 与其他每个节点都相连,所以节点 2 是中心节点。解法一:分原创 2022-02-18 13:57:06 · 181 阅读 · 0 评论 -
220214每日一题:力扣540.有序数组的单一元素
题目给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。请你找出并返回只出现一次的那个数。你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。示例输入: nums = [1,1,2,3,3,4,4,8,8]输出: 2输入: nums = [3,3,7,7,10,11,11]输出: 10解法一:暴力最简单直观的解法自然是暴力解法。考虑到除了一个数字外,其余元素均会出现两次。因此可以考虑使用异或进行运算去重,找出单一值。具体实现原创 2022-02-15 11:00:28 · 6850 阅读 · 0 评论 -
Java基础-反射
在了解Java反射机制前,我们先来聊聊Java程序的执行流程。Java程序在运行时必须经过编写、编译和运行三个步骤:编写:是指在Java开发环境中进行程序代码的输入,最终形成后缀名为.java的源文件;编译:是指使用Java编译器对源文件进行错误排查的过程,编译完成后将生成后缀名为.class的字节码文件;运行:是指使用Java解释器将字节码文件翻译成机器代码,执行并显示结果。其主要流程如下图所示:字节码文件是一种和任何具体机器环境及操作系统环境无关的中间代码。它是一种二进制文件,是 Jav原创 2022-02-14 22:59:27 · 93 阅读 · 0 评论 -
Redis架构基础(一)
Redis简介Redis(Remote Dictionary Server),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可给予内存亦可持久化的日志型、Key-Value数据库,并提供多语言的API。Redis支持存储的value类型很多,包括string,list,set,zset和hash。这些数据类型都支持push/pop、add/remove及取交集并集和差集操作,且这些操作满足原子性。为了保证效率,数据都是缓存在内存中,redis会周期性的把更新的数据写入磁盘或者把修改操原创 2022-01-28 13:37:58 · 226 阅读 · 0 评论 -
Java基础(一)-容器篇(Map专题)
在上一篇章中,我们对Java的基本容器类有了一个比较全面的了解,Java为数据结构中的映射定义了一个借口java.util.Map。此借口主要有四个常用的实现类。分别是HashMap、HashTable、LinkedHashMap和TreeMap。一、HashMap、HashTable、LinkedHashMap与TreeMap概述(1) HashMap:它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 HashMap最多只允许一条原创 2022-01-22 20:13:58 · 508 阅读 · 0 评论 -
220119每日一题:力扣219. 存在重复元素II
220119每日一题:力扣219. 存在重复元素II题目给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。示例输入:nums = [1,2,3,1], k = 3输出:true输入:nums = [1,0,1,1], k = 1输出:true解法一:暴力最直观的解法自然是我们的暴力解法,遍历数组,并查原创 2022-01-19 17:38:50 · 778 阅读 · 0 评论 -
Java基础(一)–容器篇
Java基础(一)–容器篇容器,是Java中封装的一批用于数据存储处理的工具类。在Java中,其容器主要可以划分为4个部分:List列表类、Set集合类、Map映射类和其余工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)。容器类UML类图通过上图,我们可以把Java中容器类主要分为两个基本主体,Collection和Map。Collection是一个接口,是高度抽象出来的集合,它包含了集合的基本操作和属性。Collection包含了List和S原创 2022-01-17 20:15:25 · 575 阅读 · 0 评论