最新Java常用的开发库推荐,字节跳动今日学习内容

惊喜

最后还准备了一套上面资料对应的面试题(有答案哦)和面试时的高频面试算法题(如果面试准备时间不够,那么集中把这些算法题做完即可,命中率高达85%+)

image.png

image.png

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

能work起来,那就给它取个名字,放在utils包下。一顿操作过后,发现自己这操作姿势就是完美!

殊不知,你想要的工具类很可能人家已经写好对应的jar包,比某搜索引擎查到的某博客的代码可靠多了。

知道有此类jar 的人用得一直很香,不知道的人可能就一直缺什么就去拷贝什么,代码搞得非常脏乱。

02、JAVA工具包推荐

============

在Java领域里,在业内比较出名的工具包有两个:commons和guava

国人维护的一个工具包:Hutool

如果有相关的需求的话,我们在项目代码中可以尽可能使用这些工具包。它们的代码一般情况下都会比我们自己写的要好,而且工具类就是为了帮我们减少重复性代码的,多用会使项目的可读性变得更高。

至于它们能干什么,如果没了解过的可以先逛下他们的Guide,稍微了解下这些工具包封装了什么功能。等到自己要意识到需要封装某个功能时,先把这些工具包的文档给逛一遍,真的找不到时,没有再自己实现

不要重复造轮子,不要重复造轮子,不要重复造轮子。

我贴下这些工具包的链接🔗 大家如果对这个不了解的话,建议去看看

  • commons.apache.org/

  • github.com/google/guav…

  • www.hutool.cn/docs/#/

我截取hutool文档的一部分信息,大家稍微可以感受下,我个人认为还是比较全的:

模块

介绍

hutool-aop

JDK动态代理封装,提供非IOC下的切面支持

hutool-bloomFilter

布隆过滤,提供一些Hash算法的布隆过滤

hutool-cache

简单缓存实现

hutool-core

核心,包括Bean操作、日期、各种Util等

hutool-cron

定时任务模块,提供类Crontab表达式的定时任务

hutool-crypto

加密解密模块,提供对称、非对称和摘要算法封装

hutool-db

JDBC封装后的数据操作,基于ActiveRecord思想

hutool-dfa

基于DFA模型的多关键字查找

hutool-extra

扩展模块,对第三方封装(模板引擎、邮件、Servlet、二维码、Emoji、FTP、分词等)

hutool-http

基于HttpUrlConnection的Http客户端封装

hutool-log

自动识别日志实现的日志门面

hutool-script

脚本执行封装,例如Javascript

hutool-setting

功能更强大的Setting配置文件和Properties封装

hutool-system

系统参数调用封装(JVM信息等)

hutool-json

JSON实现

hutool-captcha

图片验证码实现

hutool-poi

针对POI中Excel和Word的封装

hutool-socket

基于Java的NIO和AIO的Socket封装

hutool-jwt

JSON Web Token (JWT)封装实现

03、LOMBOK

=========

我是在实习的时候接触Lombok这个工具的。他给我的第一感受就是:再也不用自己生成set/get方法了

其实用上了IDE以后,生成set/get方法就是一个快捷键的事,但是每当我们要增加/删除/修改类的属性时,我们都需要额外去为这些变动去生成一次。不过,这好像也不是事。毕竟增加/删除/修改的工作也不是特别多。

其实Lombok能做的事不仅仅只有set/get方法,用上了以后我还是比较推荐用的。像@Builder、@Slf4j、@Data这些注解我在项目中是经常用到的,如果还对Lombok不了解的话,可以去它的官网观望一波。

projectlombok.org/features/al…

有没有人会好奇Lombok它是怎么做到的?曾经有个群里的小伙伴有遇到过这个面试题:你知道Lombok的原理是什么吗?

这个我在《对线面试官》系列的第一篇《注解》曾经聊过。其实不是特别复杂的东西,我们只要能想出Java的编译时大致的步骤以及注解的基础知识,这题就能答上了。

  1. 注解是有生命周期的@Retention有SOURCE、CLASS和RUNTIME 三个常量,使用Lombok的注解就是SOURCE阶段的

  2. .java文件被编译的时候,稍微简化下可以总结为几个步骤:语法分析->语义分析->注解处理->class文件

  3. JDK提供了Hook,我们想要在编译时期做注解相关的事,可以继承AbstractProcessor 并实现process方法(Lombok就是这么干的)

04、JSON库

========

现在Java后端开发基本上是离不开JSON了,所以我们需要有JSON库帮我们做序列化和反序列化

  • 前后端接口之间的交互基本上都是JSON格式了

  • 我们有的时候为了方便,也会直接把数据直接转成JSON存储起来(这里的存储可以是MySQL,可以是HBase,可以是Redis 等等)

写到这里,我翻看了下我以前大学时候的学习笔记。我以前刚学JSON的时候,那时候跟着视频在学Spring和Strtus2,他俩都内置了JSON的解析库。我当时的水平,跟着视频学习调个API对我没什么难度的,所以也不以为然。

没想到,那时候视频教程还教我:如果抛离了Spring和Struts2环境下,那该怎么方便地操作JSON,然后在classpath果断引入了json-lib的包…看回以前大学的笔记,真的是回忆满满…

不扯别的了,说回现在吧。现在Java后端一般使用比较多的JSON库有fastjson、Gson和Jackson

我以前在公司用FastJson比较多的,API使用非常简单,日常用得也很舒服。但是,我是经历过曾经要强制升级fastjson版本的人!应该是19年吧,那时候安全团队告诉我们需要强制升级fastjson的版本,大概就是fastjson有漏洞,一定得升级。这我们作为库的使用方,没办法,那只能升级吧。

结果,没过几天。安全团队又拉了个群,说还是得升级xxx版本以上,之前升级过的版本还有问题…团队内为了升级fastjson版本也遇到过其他的坑,反正就被弄得很烦。

网上也有很多对比这几个JSON库的文章(主要的指标是性能、稳定),有兴趣的小伙伴可以去读读。

不过,austin项目还是选择fastjson作为JSON主要的序列化库(多点包容

05、HTTP库

========

最后

我想问下大家当初选择做程序员的初衷是什么?有思考过这个问题吗?高薪?热爱?

既然入了这行就应该知道,这个行业是靠本事吃饭的,你想要拿高薪没有问题,请好好磨练自己的技术,不要抱怨。有的人通过培训可以让自己成长,有些人可以通过自律强大的自学能力成长,如果你两者都不占,还怎么拿高薪?

架构师是很多程序员的职业目标,一个好的架构师是不愁所谓的35岁高龄门槛的,到了那个时候,照样大把的企业挖他。为什么很多人想进阿里巴巴,无非不是福利待遇好以及优质的人脉资源,这对个人职业发展是有非常大帮助的。

如果你也想成为一名好的架构师,那或许这份Java核心架构笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。

中高级开发必知必会:

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**

需要这份系统化的资料的朋友,可以点击这里获取

  • 25
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值