Java基础
文章平均质量分 81
程序媛之Lemon
这个作者很懒,什么都没留下…
展开
-
Redis面试题
redis 设置过期时间Redis 中有个设置时间过期的功能,即对存储在redis数据库中的值可以设置一个过期时间。作为一个缓存数据库, 这是非常实用的。如我们一般项目中的token 或者一些登录信息,尤其是短信验证码都是有时间限制的,按照传统的数据库处理方式,一般都是自己判断过期,这样无疑会严重影响项目性能。我们set key 的时候,都可以给一个expire time,就是过期时间,通过过期时间我们可以指定这个key 可以存活的时间。如果假设你设置了一批key 只能存活1 个小时,那么接下来1 小原创 2021-11-04 15:27:29 · 151 阅读 · 0 评论 -
彻底掌握HashMap集合相关面试题
收藏吧 还等啥??一:HashMap与ConcurrentHashMap的区别?首先两者的相同点在于底层都是数组+链表实现实现的。但两者最大的区别就是HashMap是线程非安全的,ConcurrentHashMap是线程安全的。二:HashMap为什么会有线程安全问题?我们知道jdk1.7和jdk1.8中HashMap都是线程不安全的,那我们就具体讲一下为什么会线程不安全(两个方面:调用put方法、扩容)。①调用put方法假如有两个线程A和B,A希望插入一个key-value原创 2021-07-07 17:43:32 · 172 阅读 · 5 评论 -
java中位运算详解
位运算什么是位操作?程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。比如,and运算本来是一个逻辑运算符,但整数与整数之间也可以进行and运算。举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理)。❝算术运算简称运算。指按照规定的法则和顺序对式题或算式进行运算,并求出结果的过程。包括:加法、减法、乘法、除法、乘方、开方等几种运原创 2021-07-05 23:02:30 · 899 阅读 · 10 评论 -
HashMap线程安全问题以及处理方法!
一:HashMap为什么会有线程安全问题?我们知道jdk1.7和jdk1.8中HashMap都是线程不安全的,那就具体讲一下为什么会线程不安全(两个方面)。①调用put方法假如有两个线程A和B,A希望插入一个key-value到HashMap中,首先会通过A的key得到桶的索引坐标,然后获取该桶的链表头结点,线程A的时间片用完,而此时B线程被调用执行,和线程A一样执行,只不过线程B成功的将数据插入到桶里面。假设线程A插入时候计算的坐标和B线程要插入的索引坐标是一致的,那么当B线程成功插入以后,线原创 2021-06-26 22:20:24 · 6663 阅读 · 7 评论 -
带你彻底搞定java线程池原理!吊打面试官!
线程池(Executor)什么是线程池?Java5引入了新的称为Executor框架的并发API,以简化程序员的工作。它简化了多线程应用程序的设计和开发。它主要由Executor、ExecutorService接口和ThreadPoolExecutor类组成,ThreadPoolExecutor类同时实现Executor和ExecutorService接口。ThreadPoolExecutor类提供线程池的实现。我们将在教程的后面部分了解更多。为什么我们需要线程池?当我们创建一个简单的多线程应用程原创 2021-06-10 15:27:58 · 313 阅读 · 11 评论 -
java IO教程《四》
properties使用什么是Properties?Properties(Java.util.Properties),该类主要用于读取Java的配置文件,不同的编程语言有自己所支持的配置文件,配置文件中很多变量是经常改变的,为了方便用户的配置,能让用户够脱离程序本身去修改相关的变量设置。就像在Java中,其配置文件常为.properties文件,是以键值对的形式进行参数配置的。Properties 详解Api介绍构造函数构造函数说明Properties()创建原创 2021-06-08 10:38:20 · 194 阅读 · 10 评论 -
java IO教程《三》
缓冲区流讲解(Buffered)什么是缓冲区?缓冲流,也叫高效流,是对4个基本的File流的增强,所以也是4个流,按照数据类型分类:字节缓冲流:BufferedInputStream,BufferedOutputStream字符缓冲流:BufferedReader,BufferedWriter缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。缓冲技术的原理?整个过程可以形容成一个快递小哥,开始时候自行车送快递,原创 2021-06-01 15:11:34 · 243 阅读 · 18 评论 -
java IO教程《二》
字符流讲解什么是字符流?字符流=字节流+编码表字符其实只是一种特殊的二进制字节,是按照一定的编码方式处理之后,按照一定规则来存储信息的数据,字符在计算机中也是由二进制组成的,只不过这种二进制可以按照一种规则解码后,成为人类可以直接阅读的自然语言,而普通的二进制文件只有计算机能直接“阅读”。字节操作和字符操作的区别就在于数据的格式。在使用场景上,字符流无法直接获取文本信息的二进制文件,比如图片,mp3,视频文件等,只能使用字节流。而对于文本信息,则更适合使用字符流。Reader与WriterR原创 2021-05-25 22:00:27 · 545 阅读 · 16 评论 -
java IO教程《一》
IO教程什么是IO?Java的核心库java.io提供了全面的IO接口。包括:文件读写、标准设备输出等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。发展历程BIO(本文主要讲解,一下IO简称默认是BIO) 就是传统的 java.io 包,它是基于流模型实现的,交互的方式是同步、阻塞方式,也就是说在读入输入流或者输出流时,在读写动作完成之前,线程会一直阻塞在那里,它们之间的调用时可靠的线性顺序。它的有点就是代码比较简单、直观;缺点就是 IO 的效率和原创 2021-05-20 14:52:03 · 178 阅读 · 0 评论 -
全网最详细的Lambda教程
Java8 新特性----Stream流jdk8是Java 语言开发的一个主要版本,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等等。今天就重点介绍一个非常重要得特性之一 lambda表达式一:什么是 Stream?Stream(流)是一个来自数据源的元素队列并支持聚合操作Java中的Stream并不会存储元素,而是按需计算。数据源 流的来源。 可以是集合,数组,I/O channel, 产生器generator 等。聚合操作 类似SQL原创 2021-05-16 21:09:15 · 970 阅读 · 7 评论 -
原来发送http请求可以这么优雅!
前沿项目中我们经常会使用HTTP工具向外部的REST接口发送请求,大家一般使用Okhttp,或者java的HttpClient发起,今天给大家介绍一款轻量级声明式的Http库(FeignClient),使用起来会使我们的项目代码更整洁,利于维护!快速开始Feign是spring cloud中服务消费端的调用框架,通常与ribbon,hystrix等组合使用。但是在某些项目中,由于遗留原因,整个系统并不是spring cloud项目,甚至不是spring项目,而使用者关注的重点仅仅是简化http调用代原创 2021-04-30 14:06:55 · 583 阅读 · 0 评论 -
一文彻底了解泛型!
// 擦除后的方法只剩下Objectpublic List<Object> withErasure(List<Object> list) { return list.stream().collect(Collectors.toList());}// which in practice results inpublic List withErasure(List list) { return list.stream().collect(Collectors.原创 2021-04-23 18:22:31 · 165 阅读 · 1 评论 -
史上最全jdk版本新特性大全
前言在本文中,我将描述自第8版以来Java最重要且对开发人员友好的功能。为什么会有这样的主意?在Web上,您可以找到许多文章,其中包含每种Java版本的新功能列表。但是,由于缺少文章,因此无法简要概述自第8版以来最重要的更改。好的,但是为什么是第8版?令人惊讶的是,它仍然是最常用的Java版本。即使我们已经到了Java 16发行版的前夕果。如您所见,超过46%的响应者仍在生产中使用Java 8。相比之下,只有不到10%的响应者使用Java 12或更高版本。那接下来咋们从JDK8到JDK15,给大家介绍原创 2021-04-14 09:36:20 · 2768 阅读 · 7 评论