SF
程序那些事
程序那些事
注册登录
关注博客
注册登录
主页
关于
RSS
一文弄懂EnumMap和EnumSet
flydean
2020-05-03
阅读 2 分钟
1.9k
一般来说我们会选择使用HashMap来存储key-value格式的数据,考虑这样的特殊情况,一个HashMap的key都来自于一个Enum类,这样的情况则可以考虑使用本文要讲的EnumMap。
深入理解HashMap和LinkedHashMap的区别
flydean
2020-05-02
阅读 3 分钟
1.6k
我们知道HashMap的变量顺序是不可预测的,这意味着便利的输出顺序并不一定和HashMap的插入顺序是一致的。这个特性通常会对我们的工作造成一定的困扰。为了实现这个功能,我们可以使用LinkedHashMap。
深入理解HashMap和TreeMap的区别
flydean
2020-05-02
阅读 3 分钟
1.7k
HashMap和TreeMap是Map家族中非常常用的两个类,两个类在使用上和本质上有什么区别呢?本文将从这两个方面进行深入的探讨,希望能揭露其本质。
Copy ArrayList的四种方式
flydean
2020-05-01
阅读 3 分钟
2.1k
上面的代码我们可以看出,底层实际上调用了Arrays.copyOf方法来对数组进行拷贝。这个拷贝调用了系统的native arraycopy方法,注意这里的拷贝是引用拷贝,而不是值的拷贝。这就意味着这如果拷贝之后对象的值发送了变化,源对象也会发生改变。
asList和ArrayList不得不说的故事
flydean
2020-05-01
阅读 2 分钟
2.1k
提到集合类,ArrayList应该是用到的非常多的类了。这里的ArrayList是java.util.ArrayList,通常我们怎么创建ArrayList呢?
Iterator to list的三种方法
flydean
2020-04-30
阅读 2 分钟
2k
Iterator to list的三种方法 简介 集合的变量少不了使用Iterator,从集合Iterator非常简单,直接调用Iterator方法就可以了。 那么如何从Iterator反过来生成List呢?今天教大家三个方法。 使用while 最简单最基本的逻辑就是使用while来遍历这个Iterator,在遍历的过程中将Iterator中的元素添加到新建的List中去。 如下面...
fail-safe fail-fast知多少
flydean
2020-04-30
阅读 4 分钟
1.6k
我们在使用集合类的时候,通常会需要去遍历集合中的元素,并在遍历中对其中的元素进行处理。这时候我们就要用到Iterator,经常写程序的朋友应该都知道,在Iterator遍历的过程中,是不能够修改集合数据的,否则就会抛出ConcurrentModificationException。
JDK14的新特性:Lombok的终结者record
flydean
2020-04-30
阅读 3 分钟
2.4k
比如我们要定义一个简单的存储数据的结构,比如说User。除了要定义其内部的具体字段以外,我们还要定义get set方法,定义构造函数,equals(), hashCode(), toString()等。
自定义parallelStream的thread pool
flydean
2020-04-29
阅读 2 分钟
2.5k
之前我们讲到parallelStream的底层使用到了ForkJoinPool来提交任务的,默认情况下ForkJoinPool为每一个处理器创建一个线程,parallelStream如果没有特别指明的情况下,都会使用这个共享线程池来提交任务。
java 8中构建无限的stream
flydean
2020-04-29
阅读 2 分钟
1.1k
在java中,我们可以将特定的集合转换成为stream,那么在有些情况下,比如测试环境中,我们需要构造一定数量元素的stream,需要怎么处理呢?
java 8中 predicate chain的使用
flydean
2020-04-28
阅读 3 分钟
2.4k
Predicate是一个FunctionalInterface,代表的方法需要输入一个参数,返回boolean类型。通常用在stream的filter中,表示是否满足过滤条件。
JDK 14的新特性:更加好用的NullPointerExceptions
flydean
2020-04-28
阅读 2 分钟
1.7k
让99%的java程序员都头痛的异常就是NullPointerExceptions了。NullPointerExceptions简称NPE,它是运行时异常的一种,也是java程序中最最容易出现的异常。
技术回顾系列:最新最热门的技术大事-第一周
flydean
2020-04-28
阅读 2 分钟
3.9k
技术回顾系列:最新最热门的技术大事-第一周 每一周我们都会回顾一下上周发生的有趣的事情,现在让我们来看看上周都发生了哪些事情吧: Apache Kafka 2.5.0发布了 Apache软件基金会在四月16日发布了最新的Apache Kafka 2.5.0版本。 该版本包含了最新的安全更新,新的指标和诸多的更新。 Kafka是一个分布式的消息处理平台...
JDK 14的新特性:instanceof模式匹配
flydean
2020-04-27
阅读 2 分钟
1.3k
JDK14在2020年的3月正式发布了。可惜的是正式特性只包含了最新的Switch表达式,而Records,patterns,text blocks仍然是预览特性。
JDK 15 JAVA 15的新特性展望
flydean
2020-04-27
阅读 2 分钟
2.9k
伴随着2020的寒冬和新冠病毒的肆虐,JAVA迎来了久未已久的JAVA 14。自从2017年JAVA 9发布之后,JAVA的发布版本跟上了敏捷开发的步伐,小步快跑,Java平台发布节奏已从每3年以上的主要版本转变为每6个月发布一次功能。现在,每年的3月和9月都会发布新的版本功能。
怎么break java8 stream的foreach
flydean
2020-04-26
阅读 4 分钟
2k
怎么break java8 stream的foreach 简介 我们通常需要在java stream中遍历处理里面的数据,其中foreach是最最常用的方法。 但是有时候我们并不想处理完所有的数据,或者有时候Stream可能非常的长,或者根本就是无限的。 一种方法是先filter出我们需要处理的数据,然后再foreach遍历。 那么我们如何直接break这个stream呢...
java 8 stream中的Spliterator简介
flydean
2020-04-26
阅读 4 分钟
1.5k
java 8 stream中的Spliterator简介 简介 Spliterator是在java 8引入的一个接口,它通常和stream一起使用,用来遍历和分割序列。 只要用到stream的地方都需要Spliterator,比如List,Collection,IO channel等等。 我们先看一下Collection中stream方法的定义: {代码...} {代码...} 我们可以看到,不管是并行stream还是非...
怎么在java中创建一个自定义的collector
flydean
2020-04-25
阅读 2 分钟
1.7k
在之前的java collectors文章里面,我们讲到了stream的collect方法可以调用Collectors里面的toList()或者toMap()方法,将结果转换为特定的集合类。
java 8 stream reduce详解和误区
flydean
2020-04-25
阅读 2 分钟
1.9k
Stream API提供了一些预定义的reduce操作,比如count(), max(), min(), sum()等。如果我们需要自己写reduce的逻辑,则可以使用reduce方法。
java stream中Collectors的用法
flydean
2020-04-24
阅读 4 分钟
4.1k
在java stream中,我们通常需要将处理后的stream转换成集合类,这个时候就需要用到stream.collect方法。collect方法需要传入一个Collector类型,要实现Collector还是很麻烦的,需要实现好几个接口。
java关于throw Exception的一个小秘密
flydean
2020-04-24
阅读 2 分钟
2.2k
java关于throw Exception的一个小秘密 简介 之前的文章我们讲到,在stream中处理异常,需要将checked exception转换为unchecked exception来处理。 我们是这样做的: {代码...} 将异常捕获,然后封装成为RuntimeException。 封装成RuntimeException感觉总是有那么一点点问题,那么有没有什么更好的办法? throw小诀窍 ja...
java 8 lambda表达式中的异常处理
flydean
2020-04-23
阅读 4 分钟
2.3k
java 8中引入了lambda表达式,lambda表达式可以让我们的代码更加简介,业务逻辑更加清晰,但是在lambda表达式中使用的Functional Interface并没有很好的处理异常,因为JDK提供的这些Functional Interface通常都是没有抛出异常的,这意味着需要我们自己手动来处理异常。
java 8 Stream中操作类型和peek的使用
flydean
2020-04-23
阅读 2 分钟
1.8k
java 8 Stream中操作类型和peek的使用 简介 java 8 stream作为流式操作有两种操作类型,中间操作和终止操作。这两种有什么区别呢? 我们看一个peek的例子: {代码...} 上面的例子中,我们的本意是打印出Stream的值,但实际上没有任何输出。 为什么呢? 中间操作和终止操作 一个java 8的stream是由三部分组成的。数据源,...
java并发Exchanger的使用
flydean
2020-04-23
阅读 3 分钟
4.8k
Exchanger是java 5引入的并发类,Exchanger顾名思义就是用来做交换的。这里主要是两个线程之间交换持有的对象。当Exchanger在一个线程中调用exchange方法之后,会等待另外的线程调用同样的exchange方法。
java中functional interface的分类和使用
flydean
2020-04-20
阅读 5 分钟
1.9k
executorService.submit需要接收一个Runnable类,上面的例子中我们new了一个Runnable类,并实现了它的run()方法。
java 8 Streams简介
flydean
2020-04-20
阅读 3 分钟
2.4k
今天要讲的Stream指的是java.util.stream包中的诸多类。Stream可以方便的将之前的结合类以转换为Stream并以流式方式进行处理,大大的简化了我们的编程,Stream包中,最核心的就是interface Stream<T>
一篇文章让你彻底弄懂SSL/TLS协议
flydean
2020-04-19
阅读 3 分钟
4.3k
SSL/TLS是一种密码通信框架,他是世界上使用最广泛的密码通信方法。SSL/TLS综合运用了密码学中的对称密码,消息认证码,公钥密码,数字签名,伪随机数生成器等,可以说是密码学中的集大成者。
基于口令的密码(PBE)
flydean
2020-04-18
阅读 1 分钟
3.8k
基于口令的密码(Password Based Encryption,PBE)是一种基于口令生成密钥,并使用该密钥进行加密的方法。其中加密和解密使用的是同一个密钥。
更加安全的密钥生成方法Diffie-Hellman
flydean
2020-04-17
阅读 1 分钟
3.3k
这里我们介绍一下Diffie-Hellman密钥交换算法。这个算法是由Whitfield Diffie和Martin Hellman在1976年共同发明的一种算法。
有关密钥的最全总结都在这了
flydean
2020-04-17
阅读 2 分钟
4.1k
在之前的文章中,我们讲到了对称密码,公钥密码,消息认证码和数字签名等密码学的技术,这些技术中都使用到了一个叫做密钥的东西。 那么到底什么是密钥呢?密钥就是一个key,通过这个key可以获得最终的明文。所以密钥其实是和明文等价的。 举个例子,保险箱里面放着十万美元,保险箱被锁住了,并且有一个钥匙。那么这个...
上一页
1
…
More
18
19
20
(current)
21
22
…
More
下一页
上一页
20
(current)
下一页