java基础
文章平均质量分 85
学好java,基础很重要。
初念初恋
Java高级开发工程师,主要分享Java技术相关的东西,包括但不限于源码解析、面试宝典、日常问题排查、工作趣文等等。
展开
-
SpringBoot集成MQTT协议
MQTT 可以被解释为一种低开销,低带宽占用的即时通讯协议,可以用较少的代码和带宽为远程设备连接提供实时可靠的消息服务,它适用于硬件性能低下的远程设备以及网络状况糟糕的环境下,因此 MQTT 协议在 IoT(Internet of things,物联网),小型设备应用,移动应用等方面有较广泛的应用。优点:代码量少,开销低,带宽占用小,即时通讯协议。原创 2024-01-03 11:30:35 · 817 阅读 · 0 评论 -
【JAVA基础】DeferredResult使用详解
Servlet3.0提供了基于servlet的异步处理api,Spring MVC只是将这些api进行了一系列的封装,从而实现了DeferredResult。DeferredResult字面意思是"延迟结果",它允许Spring MVC收到请求后,立即释放(归还)容器线程,以便容器可以接收更多的外部请求,提升吞吐量,与此同时,DeferredResult将陷入阻塞,直到我们主动将结果set到DeferredResult,最后,DeferredResult会重新申请容器线程,并将本次请求返回给客户端。原创 2023-12-21 19:16:57 · 1675 阅读 · 0 评论 -
使用 ArrayList 应当避免的坑
高性能应用都是从小细节一点点堆砌起来的,就如这里提到的ArrayList的坑一样,日常使用没啥大问题,一旦数据量起来所有的小问题都会成为大问题。使用 ArrayList 时如果能提前预测到数据量大小,比较大时一定要指定其长度。尽可能避免使用api,会导致复制数组,降低效率。再额外提一点,我们常用的另一个Map容器HashMap也是推荐要初始化长度从而避免扩容。原创 2023-06-29 15:16:47 · 234 阅读 · 0 评论 -
java中避免空指针的几个方法介绍
Java 编程中哪个异常是你印象最深刻的,那 NullPointerException空指针可以说是臭名昭著的。不要说初级程序员会碰到,即使是中级,专家级程序员稍不留神,就会掉入这个坑里。原创 2023-06-29 15:12:02 · 1105 阅读 · 0 评论 -
【JAVA基础】== 与 equals区别
它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象(基本数据类型比较的是值,引用数据类型比较的是内存地址)。基本数据类型他们之间的比较,应用双等号(==),比较的是他们的值。引用数据类型:当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址(确切的说,是堆内存地址)。//基本数据类型 int ii = 100;//基本数据类型 Integer j = 100;//引用类型 Integer jj = 100;原创 2023-06-28 19:56:49 · 258 阅读 · 0 评论 -
【JAVA基础】一文了解forEach循环
相信大家肯定都看过阿里巴巴开发手册,而在阿里巴巴开发手册中明确的指出,不要再foreach循环里面进行元素的add和remove,如果你非要进行remove元素,那么请使用Iterator方式,如果存在并发,那么你一定要选择加锁。for-each循环不仅适用于遍历集合和数组,而且能让你遍历任何实现Iterator接口的对象;最最关键的是它还没有性能损失。而对数组或集合进行修改(添加删除操作),就要用迭代器循环。所以循环遍历所有数据的时候,能用它的时候还是选择它吧。原创 2023-06-28 09:45:12 · 337 阅读 · 0 评论 -
工作中,如何解决跨域问题?
跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制。所谓同源指的是:协议、域名、端口号都相同,只要有一个不相同,那么都是非同源。同源策略它是由 Netscape 提出的一个安全策略,它是浏览器最核心也是最基本的安全功能,如果缺少同源策略,则浏览器的正常功能可能都会受到影响,现在所有支持JavaScript的浏览器都会使用这个策略。原创 2023-06-25 10:15:26 · 243 阅读 · 0 评论 -
改善Java程序的20个实用建议
对于我们的例子来说,Client类在编译时字节码中就写上了"150",这个常量,而不是一个地址引用,因此无论你后续怎么修改常量类,只要不重新编译Client类,输出还是照旧。把参与运算的值扩大100倍,并转为整型,然后在展现时再缩小100倍,这样处理的好处是计算简单,准确,一般在非金融行业(如零售行业)应用较多。最近细读了秦小波老师的《编写高质量代码改善Jaav程序的151个建议》,要说是151个建议,其实更合适的说是避免Java的一些冷门的坑,下面整理了20个比较有趣的建议重新学习了一遍。原创 2023-06-18 08:44:51 · 376 阅读 · 0 评论 -
Java中的深拷贝和浅拷贝介绍
如果该字段是引用类型的话,则复制引用但不复制引用的对象。对象 Student 的属性 Address,经过 clone 之后,其实只是复制了其引用,他们指向的还是同一块堆内存空间,当修改其中一个对象的属性 Address,另一个也会跟着变化。这里写到流中的对象则是原始对象的一个拷贝,因为原始对象还存在 JVM 中,所以我们可以利用对象的序列化产生克隆对象,然后通过反序列化获取这个对象。方法中,需要拿到拷贝自己后产生的新的对象,然后对新的对象的引用类型再调用拷贝操作,实现对引用类型成员变量的深拷贝。原创 2023-05-29 21:04:03 · 832 阅读 · 0 评论 -
深入浅出Java中参数传递的原理
今天,想和大家聊聊关于java中的参数传递的原理,参数的传递有两种,值传递和引用传递。值传递:是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。引用传递:是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。Java中参数传递其实还是值传递的,只不过对于引用类型参数,值的内容是对象的引用。原创 2023-04-27 19:15:48 · 547 阅读 · 0 评论 -
Java中字符串的初始化详解
当用new关键字创建字符串对象时,不会查询字符串常量池;当用双引号直接声明字符串对象时,虚拟机将会查询字符串常量池。说白了就是:字符串常量池提供了字符串的复用功能,除非我们要显式创建新的字符串对象,否则对同一个字符串虚拟机只会维护一份拷贝。原创 2023-04-24 08:47:27 · 1668 阅读 · 0 评论 -
Java正则表达式详解
正则表达式一般用于字符串匹配,字符串查找和字符串替换。别小看它的作用,在工作学习中灵活运用正则表达式处理字符串能够大幅度提高效率,编程的快乐来得就是这么简单。下面将由浅入深讲解正则表达式的使用。以上就是对于正则表达式的一个总结和使用说明,愿正则表达式给你带来更愉快的编程体验。原创 2023-04-22 19:22:47 · 1732 阅读 · 0 评论 -
彻底理解内部类的使用
内部类相信大家都应该用过,但我也相信大家应该都只是很简单的使用。所以今天,就来详细讲解内部类的使用,废话不多说,我们先赶紧来看吧。原创 2023-04-22 19:17:39 · 673 阅读 · 0 评论 -
一文彻底弄懂零拷贝原理
无论是传统的 I/O 方式,还是引入了零拷贝之后,2 次DMA copy是都少不了的。因为两次 DMA 都是依赖硬件完成的。所以,所谓的零拷贝,都是为了减少 CPU copy 及减少了上下文的切换。CPU拷贝DMA拷贝系统调用上下文切换传统方法22read/write4内存映射12mmap/write4sendfile12sendfile202sendfile2splice02splice0。原创 2022-03-05 14:07:04 · 6875 阅读 · 0 评论 -
Java 中 this 和 super 的用法详解
这两个关键字的用法,作为一名Java程序员,我觉得基础是最重要的,因为它决定了我们的上限,所以我的文章大部分还是以分享Java基础知识为主,学好基础,后面的知识我想学起来就变得简单。通过打印结果看到我们在创建子类对象的时候,首先调用了父类的构造方法,接着调用子类的构造方法,也就是说在创建子类对象的时候,首先创建了父类对象,与前面我们猜想的一致。,那说明我们使用的时候只能在子类中使用,既然是对象的引用,那么我们也可以用来调用成员属性以及成员方法,当然了,这里的 super 关键字还能够调用父类的构造方法。原创 2021-07-30 08:36:30 · 3077 阅读 · 0 评论 -
深入理解 Java 中的 final 关键字
对于Java中的 final 关键字,我们首先可以从字面意思上去理解,百度翻译显示如下:final 英文意思表示是最后的,不可更改的。那么对应在 Java 中也是表达这样的意思,可以用 final 关键字修饰变量、方法和类。不管是用来修饰什么,其本意都是指 “它是无法更改的”,这是我们需要牢记的,为什么要无法更改?无非就是设计所需或者能提高效率,牢记 final 的不可变的设计理念后再来了解 final 关键字的用法,便会顺其自然了。final方法比非final快一些。final关键字提高了性能。原创 2021-07-22 10:24:37 · 598 阅读 · 1 评论 -
Apache Commons 和 Guava 两个第三方的开源工具库的使用
通过 Apache Commons 和 Guava 两个第三方的开源工具库,可以减少循环、ifelse 的代码。写出的代码更有健壮性并且可以在新人面前装一波。Apache Commons 和 Guava 有许许多多的工具类,这里只列出了小小的部分,可以在官网例子中查看到各种用法。原创 2021-07-20 09:01:02 · 2321 阅读 · 2 评论 -
一文彻底弄懂Cookie、Session、Token
Cookie翻译成中文的意思是‘小甜饼’,是由W3C组织提出,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器如IE、Netscape、Firefox、Opera等都支持Cookie。服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。原创 2021-07-09 14:48:16 · 1196 阅读 · 0 评论 -
深度掌Java Stream流操作,让你的代码高出一个逼格!
Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选、排序、聚合等。Stream中间操作符和终止操作符。原创 2021-07-02 10:08:14 · 416 阅读 · 2 评论 -
拼接字符串StringJoiner介绍
StringJoiner 是 java.util 包中的一个类,用于构造一个由分隔符分隔的字符串,并且可以从提供的前缀字符串开头,以提供的后缀字符串结尾。虽然这些功能,我们可以使用 StringBuilder 或者 StringBuffer 来实现的, 但是 StringJoiner 提供的方法更简单,而且也不需要写大量的代码就能成。本文介绍了 Java 8 开始提供的字符串拼接类 StringJoiner。原创 2021-06-20 09:16:02 · 3141 阅读 · 0 评论 -
java实现图片合成功能,两张图片合成一张
在工作中我们会常常遇到将两张图片合成为一张的需求,有时还会需要在图片上添加一些文字水印之类的,今天就和大家分享一下图片的合成功能如何实现。原创 2021-05-08 14:07:19 · 6257 阅读 · 1 评论 -
Java编码规范介绍
*译者注:**不同的IED或者文本编辑器中,Tab的空格数是不同的,常见的有4格或者8格。若你想给出有关类、接口、变量或方法的信息,而这些信息又不适合写在文档中,则可使用实现块注释(见5.1.1)或紧跟在声明后面的单行注释(见5.1.2)。例如,有关一个类实现的细节,应放入紧跟在类声明后面的实现块注释中,而不是放在文档注释中。在功能和方法内部的块注释应该和它们所描述的代码具有一样的缩进格式。在注释里,对设计决策中重要的或者不是显而易见的地方进行说明是可以的,但应避免提供代码中己清晰表达出来的重复信息。原创 2021-02-18 09:10:37 · 830 阅读 · 1 评论 -
RestTemplate的用法介绍
RestTemplate的作为一款非常不错的rest请求工具,屏蔽了复杂的HttpClient的实现细节,向外暴露出简单、易于使用的接口,使得我们的开发工作越来越简单、高效,更多的方法工具可以研究一下restTemplate的具体Api。原创 2021-01-20 11:05:04 · 2151 阅读 · 2 评论 -
java实现excel导入导出
简单、好用且轻量级的海量Excel文件导入导出解决方案。原创 2020-11-05 20:03:25 · 1860 阅读 · 3 评论