首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Hutool该怎么用?

hutool-poi针对 POI Excel Word 封装。hutool-socket基于 Java NIO AIO Socket 封装。...① 保留小数保留小数方法主要有两种:NumberUtil.round 方法主要封装 BigDecimal 方法来保留小数,返回 BigDecimal,这个方法更加灵活,可以选择四舍五入或者全部舍弃等模式...④ 随机数NumberUtil.generateRandomNumber 生成不重复随机数 根据给定小数最大数字,以及随机数个数,产生指定不重复数组。...NumberUtil.generateBySet 生成不重复随机数 根据给定小数最大数字,以及随机数个数,产生指定不重复数组。...布隆过滤器原理是,当一个元素被加入集合时,通过 K 个散列函数将这个元素映射成一个位数组 K 个点,把它们置为 1。

13210

带你图解 Java 程序结构,变量类型

另一个角度讲,所有的复杂都是简单元素加工组合,百变不离其宗,基础就是这种简单元素。 所以,我们先来学习下 Java 基础部分!本篇文章聊聊 Java 程序结构,变量以及数据类型。...Java 程序结构 学习一个新东西,我建议先看它结构,这样有了整体认知之后,再去学习细节,就能更好认识到每个细节点在整体位置作用,可以更好理解整体和局部之间关系。...命名时候一般大写字母开头,可以是字母数字下划线组合,不过规范是大写字母开头驼峰式命名。 main 方法Java 程序必备一个东西,它是 Java 程序执行入口,声明也是固定。...但在我经验里,有它比没有它强,因为代码虽说是给机器执行,但却是给人看,好代码注释,是能够提升代码可读性可维护性。我这个例子里写注释有类注释、方法注释、行注释多行注释。...相应地,有两种数据值可以存储在变量,作为参数传递,由方法返回,并对其进行操作: 原始值引用值。 ? 基本类型 我们先看下基本类型。

67120
您找到你想要的搜索结果了吗?
是的
没有找到

效率工具:Hutool 嘎嘎香,被秀到了!

Hutool 工具方法来自每个用户精雕细琢,它涵盖了 Java 开发底层代码方方面面,它既是大型项目开发解决小问题利器,也是小型项目中效率担当; Hutool 是项目中“util”包友好替代...hutool-poi 针对 POI Excel Word 封装。 hutool-socket 基于 Java NIO AIO Socket 封装。...① 保留小数 保留小数方法主要有两种: NumberUtil.round 方法主要封装 BigDecimal 方法来保留小数,返回 BigDecimal,这个方法更加灵活,可以选择四舍五入或者全部舍弃等模式...④ 随机数 NumberUtil.generateRandomNumber 生成不重复随机数 根据给定小数最大数字,以及随机数个数,产生指定不重复数组。...NumberUtil.generateBySet 生成不重复随机数 根据给定小数最大数字,以及随机数个数,产生指定不重复数组

35310

LeetCode-面试题04-二维数组查找

# LeetCode-面试题04-二维数组查找 在一个 n * m 二维数组,每一行都按照从左到右递增顺序排序,每一列都按照从上到下递增顺序排序。...请完成一个函数,输入这样一个二维数组一个整数,判断数组是否含有该整数。...可以从第一行最大数开始与目标数target比较,如果第一行最大数比target大的话,这一列就可以排除不是要找位置了,因为第一行也是一列小数,只有当target比第一行某一列大时候,才需要往下面找...整个过程一直重复下去就能找到目标数,没有就返回false # 解题思路2 每行是从左往右递增有序,所以只需要对每行进行二分查找,也能快速得到结果 # Java代码 class Solution {...elif target > matrix[rowlen][collen]: rowlen += 1 return falg # Java

21310

典型Top K算法_找出一个数组里面前K个最大数...或找出1亿个浮点数中最大10000个...一个文本文件,找出前10个经常出现词,但这次文件比较长,说是上亿行或十亿行,总之无法一次读入内存,

那么能不能有更好方法来存储,而时间复杂度更低呢?        ...算法三:堆        在算法二,我们已经将时间复杂度由NlogN优化到N*K,不得不说这是一个比较大改进了,可是有没有更好办法呢?       ...这里我们注意一下,该数组是有序,一次我们每次查找时候可以采用二分方法查找,这样操作复杂度就降到了logK,可是,随之而来问题就是数据移动,因为移动数据次数增多了。...基于以上分析,我们想想,有没有一种既能快速查找,又能快速移动元素数据结构呢?        回答是肯定,那就是堆。        借助堆结构,我们可以在log量级时间内查找调整/移动。...只待循环完毕返回临时数组K个元素,即是需要K个最大数。同算法一其平均时间复杂度为O(KLogK + (N - K))。具体代码实现可以自行完成。

5.3K30

《剑指offer》专题—算法训练 day01

文章目录 《剑指offer》专题—算法训练 day01 一、二维数组查找 思路一 思路二 二、旋转数字小数字 思路一 思路二 三、奇偶互换 相对位置变化 相对位置不变 四、数组中出现次数超过一半数字...(最小值在开始),要么是一个旋转(最小值在中间某个地方) 而且,旋转之后有个特征,就是在遍历时候,原始数组是非递减,旋转之后,就有可能出现递减,引起递减数字,就 是最小值 采用二分查找方式...(注意,只要有两者不相等,我们就能判定应该如何缩小范围) 相关代码: // 二分查找 import java.util.ArrayList; public class Solution {...右 三值都相等时,我们无法判断 mid下标元素在左区间还是右区间 // 我们只能从头遍历,查找数组最小值 if(array[left...大家做这种题目一定要看好,调换奇数偶数时候 ,有没有说明 相对位置是否发生改变.   当然了,这道题原题是不需要保证奇偶位置不变,先给大家说一下 相对位置发生改变题目.

31620

如何使用ChatGPT进行编程(完整教程)

国内小伙伴可以访问:https://chatgpt.rrjike.com/ 现在,让我们看一下它在编程用例,这最终将帮助您成为一名更好程序员。 如何在编程中使用ChatGPT?...因此,如果您想要 Java 代码查找最大和最小数字,那么您可以使用 ChatGPT 命令“编写Java 方法数组查找最大和最小数字”,它将为您提供代码解释。...从这段代码,您还可以提出后续问题。就像 – 解释您不理解任何特定代码集。 例如 – 从上面提供代码解决方案,您可以问“这段代码‘ arr[i] >largest ’做了什么?”。...如果您想为上述 Java 程序创建 JUnit 测试用例,那么您只需输入“为该方法编写单元测试”,它就会为您提供上述方法测试用例。 5. 代码改进 代码优化是每个程序员必须具备最重要技能之一。...生成样本数据 您还可以使用 ChatGPT 生成虚拟数据,方法是发出命令“为名为 Student 表生成虚拟数据”。每列都应该有一个 ID、名字、姓氏、卷号地址“。

3.4K30

Java初学者30个常见问题

(注意后边结果0带负号) A. 在Java里,整数是用补码表示。在补码0只有一种表示方法。另一方面,浮点数则是用 IEEE 标准表示, 对于0有两种表示方法, 0 -0。 Q....某些Java开发人员使用 int a[] 而不是 int[] a 去声明一个数组。这两者有什么区别? A. 在Java这两种用法都是合法,他们作用都是一样。前者是在C定义数组方法。...在递归代码创建大数据类型(比如数组)时需要额外注意,随着递归推进,内存使用将会迅速增加,由于内存使用增加,操作系统管理内存时间开销也会增加。 4.2 排序与查找 Q....Knuth 教授在 1946年就发表了二分查找论文,但是第一个正确二分查找程序在 1962年在出现。 Q. 在JAVA内建库中有没有排序查找函数? A. 有的。...在 java.util.Arrays 包含了 Arrays.sort() Arrays.binarySearch() 方法

1.7K51

面试专题-并发篇

,而 sleep 则无此限制 wait 方法执行后会释放对象锁,允许其它线程获得该对象锁(我放弃 cpu,但你们还可以用) 而 sleep 如果在 synchronized 代码执行,并不会释放对象锁...,synchronized 做了很多优化,如偏向锁、轻量级锁,性能不赖 在竞争激烈时,Lock 实现通常会提供更好性能 公平锁 公平锁公平体现 已经处在阻塞队列线程(不考虑超时)始终都是公平...假设小数组长度是 2^n,key 在小数组索引是 key 二次 hash 值低 n 位 扩容:每个小数组扩容相对独立,小数组在超过扩容因子时会触发扩容,每次扩容翻倍 Segment[0]...3/4 时就会扩容 扩容单位:以链表为单位从后向前迁移链表,迁移完成将旧数组头节点替换为 ForwardingNode 扩容时并发 get 根据是否为 ForwardingNode 来决定是在新数组查找还是在旧数组查找...ThreadLocal 自己作为 key,资源对象作为 value,放入当前线程 ThreadLocalMap 集合 调用 get 方法,就是以 ThreadLocal 自己作为 key,到当前线程查找关联资源值

56910

2w字 详解 String,yyds

* 这个String类包含了一些测评单个字符序列方法,比如字符串比较,查找字符串, * 提取字符串,拷贝一个字符串大小写副本。...可选“limit”是一个整数,第一个方法默认是0,允许各位指定要返回最大数组元素个数。 常见方法源码分析就这么多了,下面我们再回顾到使用场景来,尤其是面试。...看下面这段代码: String str1 = "abc"; // 在常量池中 String str2 = new String("abc"); // 在堆上 关于这段代码,创建了几个对象,网上答案有多重...请看下面这段代码: String s1 = new String("Java"); String s2 = s1.intern(); String s3 = "Java"; System.out.println...答:首先字符串内容是由一个字符数组 char[] 来存储,由于数组长度及索引是整数,且String类返回字符串长度方法length() 返回值也是int ,所以通过查看java源码类Integer

27020

2w字 详解 String,yyds

* 这个String类包含了一些测评单个字符序列方法,比如字符串比较,查找字符串, * 提取字符串,拷贝一个字符串大小写副本。...可选“limit”是一个整数,第一个方法默认是0,允许各位指定要返回最大数组元素个数。 常见方法源码分析就这么多了,下面我们再回顾到使用场景来,尤其是面试。...看下面这段代码: String str1 = "abc"; // 在常量池中 String str2 = new String("abc"); // 在堆上 关于这段代码,创建了几个对象,网上答案有多重...请看下面这段代码: String s1 = new String("Java"); String s2 = s1.intern(); String s3 = "Java"; System.out.println...答:首先字符串内容是由一个字符数组 char[] 来存储,由于数组长度及索引是整数,且String类返回字符串长度方法length() 返回值也是int ,所以通过查看java源码类Integer

38321

C语言数组应用-学习十五

数组排序 排序算法是程序设计中最基本、最重要算法之一。 排序算法有很多,比较常用有选择法、冒泡法、比较法插入法等。...选择排序法 1.从n个数中选出最小数下标,然后将最小数与第一个数交换位置; 2.除第1个数外,其余n-1个数再按步骤1方法选出次小数,与第2个数交换位置; 3.重复步骤n-1遍,最后构成递增序列。...2.一轮排序后,最大数换到了最下面(即小数往上冒,大数往下沉); 3.除最后一个数外,其他n-1个数按步骤:方法使次大数下沉; 4.重复步骤n-1遍,最后构成递增序列。...顺序查找思路: 将查找关键值与数组元素一一比较, 若相同,则查找成功,否则查找失败。...; } image.png image.png ---- 二分法查找(折半查找) 可大大提高查找速度,必须是有序数组

37150

LeetCode-31-下一个排列

为了满足这个要求,我们需要: 在尽可能靠右低位进行交换,需要从后向前查找 将一个 尽可能小「大数」 与前面的「小数」交换。...比如 123465,下一个排列应该把 5 4 交换而不是把 6 4 交换 将「大数」换到前面后,需要将「大数」后面的所有数重置为升序,升序排列就是最小排列。...算法流程: 标准“下一个排列”算法可以描述为: 从后向前查找第一个相邻升序元素对 (i,j),满足 A[i] < A[j]。...,说明当前 [begin,end) 为一个降序顺序,则直接跳到步骤 4 # Java代码 class Solution { public void nextPermutation(int[] nums...,使后面的数组升序,保证整个数组是下一个最大数组 reverse(nums, j, len - 1); } public void swap(int[] nums, int

18230

数组还可以这样用!常用但不为人知应用场景

代码分析:  这段代码是一个二分查找算法,接收一个已排序整数数组一个关键字,返回关键字在数组索引值(如果存在)或者-1(如果不存在)。  ...最后,我们使用Arrays.copyOf()方法返回一个新数组,长度为j。代码分析:  这段代码是一个静态方法,接收一个整数数组作为参数,并返回一个去重后整数数组。  ...:  这段代码实现了一个移除数组重复元素方法,算法时间复杂度是O(nlogn),其中n为数组长度。...在 main 方法,没有任何代码。执行结果:小结  数组Java中常用数据结构之一,能够优化算法并提高性能。...通过学习这些应用场景,可以更好地优化算法并提高性能,同时也能够帮助开发者更好地应对实际工作问题。  总的来说,本文对数组应用场景进行了详细讲解,并提供了相应示例代码测试用例。

26021

猿进化系列4——超速进化,一发入魂

所谓数组,就是一个长度固定容器,是一个固定长度元素序列,在java程序,还必须保证容器元素都具备相同数据类型。...创建数组 我们先看下面这段代码: int a[]; a= new int[5]; 在java[]表示数组,int a[]; 声明了一个int类型数组,数组名也就是我们变量名...数组在内存存储 数组元素存储在一个连续性内存块数组变量名,其实存储就是数组内存地址。 我们看下面这段代码: ?...至于完整输出是啥,上一小节,你敲了代码,自己应该猜得到!!! 数组元素查找 下面我们来处理一个实际性问题——编写一个方法,把数组a最大元素找出来。...代码可以给你,好好看看,但是想要使用嘛,还是自己敲代码吧。 小思考: 思考下还有没有其他实现方式? 课后小练习: 编写一个方法,遍历输出数组值。 编写一个方法,返回数组里最小元素。

54020

你写二分法可能有个bug

在二分法发明之前,如果要查找某个数是否在数组,就只能是把数组遍历一遍,然后一个一个依次比较了,在数据量不大情况下这么做其实也没啥问题,但是数据量达到一定级别,或者在一些比较极端情况下,比如数组不存在这个数...下面我再结合一段用 python 实现二分算法代码,你可以对照着看。...1、循环终止条件,是 low <= high,不能写成 low < high,不然查找数组边界值(数组第一个元素或最后一个元素)可能会查找失败,你自己可以去试一下。...3、在每次对半缩小数组后,low high 移动问题,可以看到代码里都分别有加一减一操作,如果是直接写成 low = mid high = mid 的话可能会造成死循环,我觉得死循环在这里不太好理解...当然这就是简单二分法,数组没有重复元素,如果存在重复元素那情况又不太一样了,后面的文章再细说。二分法虽然简单,但我还是强烈建议你亲自动手去写一写。

51020

参加了个算法比赛,真是一言难尽啊

所以有没有可能,设计者给出了一堆hash值重复name,数量又多,导致每次插入、查找时都要遍历链表,性能下降,导致超时?...于是再仔细审题,我发现输入姓名成绩是有限制: name保证长度不超过6,仅由小写英文字母组成,每个名字代表唯一一个同学 x为1位小数,0≤x≤300 name最长为6,且为小写字母,这点给了我一点启发...优化内存占用 上面的代码用到了2个数组,一个存最大值,一个存值是否存在,一个数组是1513361KB,2个就是3026722KB,是最大内存限制5.7倍 var scores [387420488]int32...终于发现问题 后来我又尝试了很多方法都不行,比如怀疑是不是Gomap性能不行,换成Java试试,结果还是不行。 最后我在网上搜索牛客网时发现了一个突破口(对,没错,这次比赛是在牛客网上举办)。...之前方法能行吗 我把几个版本输入改了之后,看看通过后耗时内存 版本 是否通过 耗时 内存 map版 是 315ms 10096KB 27进制版 否

51541

random:Python随机数生成与应用

函数名 参数 意义 random 无参数 随机生成[0-1]之间浮点数 uniform 2个整型参数:最小数最大数 随机生成最小最大之间浮点数 randint 2个整型参数:最小数最大数 随机生成最小最大之间整数...randrange 3个整型参数:最小数最大数,步长 随机生成最小最大之间间隔步长整数 下面,我们来看看这些常用随机数生成函数应用: import random # 随机生成[0-1]之间浮点数...也是普遍随机数用法。...random.sample 博主经常编写刷评论脚本,但是对于爬虫来说,有一个与众不同随机数需求。比如,我要评论20个网页,那么将20个网页放在数组,就会有(0,19)索引进行选择。...在概率论与统计学,三角形分布是低限为a、众数为c、上限为b连续概率分布。 triangular()方法返回两个指定数字(包括两者)之间随机浮点数,但是您也可以指定第三个参数,即mode 参数。

38940

java中高级面试题总结(全面)_java高级面试题大汇总

JAVA为数据结构映射定义了一个接口java.util.Map,而HashMap HashtableTreeMap就是它实现类。...LinkedList适合指定位置插入、删除操作,不适合查找;ArrayList、Vector适合查找,不适合指定位置插入、删除操作。...这两个方法应该都比较熟悉,把需要并行处理代码放在run()方法,start()方法启动线程将自动调用 run()方法,这是由jvm内存机制规定。...java当中float以及double数据类型掌握 java当中默认声明小数是double类型; double d=4.0 如果声明: float x = 4.0则会报错,需要如下写法:...6-7位 double 型 内存分配8个字节,有效小数位15位 floatdouble只能用来做科学计算或者是工程计算; 在商业计算我们要用java.math.BigDecimal。

50920
领券