zl程序教程

您现在的位置是:首页 >  Java

当前栏目

程序员的武器库,快来看看

2023-02-18 16:34:19 时间

程序员的武器库

在金庸武侠小说中,每位武林豪杰都有自己的武器库,装有各种珍贵的兵器。同样的,程序员也有自己的武器库,装有各种实用的技术工具。

对于后端工程师来说,Java技术栈是一把不可或缺的武器。在这里,我们来介绍一些Java开发中常用的武器。

一、常用开发工具包

Guava

  1. 简介:Guava 是来自 Google 的一组核心 Java 库,其中包括新的集合类型、不可变集合、图形库以及用于并发、I/O、散列、缓存、基元、字符串等的实用程序! 它广泛用于谷歌内部的大多数 Java 项目,也被许多其他公司广泛使用。
  2. 官方地址:https://github.com/google/guava

hutool

  1. 简介:Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当。
  2. 官方地址:Hutool — ?A set of tools that keep Java sweet. GitHub - dromara/hutool: ?A set of tools that keep Java sweet.

okHttp

  1. 简介:OkHttp is an HTTP client that’s efficient by default:
  2. HTTP/2 support allows all requests to the same host to share a socket.
  3. Connection pooling reduces request latency (if HTTP/2 isn’t available).
  4. Transparent GZIP shrinks download sizes.
  5. Response caching avoids the network completely for repeat requests.
  6. 官方地址:Overview - OkHttp

Mapstruct

  1. 简介:是一个注解处理器,用于生成类型安全,高性能的无依赖的 Java Bean,可以实现两个JavaBean之间的互相映射 MapStruct is a Java annotation processor for the generation of type-safe and performant mappers for Java bean classes. It saves you from writing mapping code by hand, which is a tedious and error-prone task. The generator comes with sensible defaults and many built-in type conversions, but it steps out of your way when it comes to configuring or implementing special behavior.
  2. 官方地址:https://github.com/mapstruct/mapstruct

EasyExcel

  1. 简介:Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;03版依赖POI的sax模式,在上层做了模型转换的封装,让使用者更加简单方便
  2. 官方地址:https://github.com/alibaba/easyexcel

二、中间件

redis

可视化工具: https://github.com/qishibo/AnotherRedisDesktopManager

ZooKeeper

可视化工具: GitHub - vran-dev/PrettyZoo: ? Pretty nice Zookeeper GUI, Support Win / Mac / Linux Platform

Kafka

可视化工具: GitHub - didi/KnowStreaming: 一站式云原生实时流数据平台,通过0侵入、插件化构建企业级Kafka服务,极大降低操作、存储和管理实时流数据门槛

GitHub - smartloli/EFAK: A easy and high-performance monitoring system, for comprehensive monitoring and management of kafka cluster.

三、问题定位排查

Arthas

  1. 简介:Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。
  2. 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:
- 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
  
- 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
  
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
  
- 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
  
- 是否有一个全局视角来查看系统的运行状况?
  
- 有什么办法可以监控到JVM的实时运行状态?
  
- 怎么快速定位应用的热点,生成火焰图?
  
- 怎样直接从JVM内查找某个类的实例?

Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

  1. 官方地址:https://github.com/alibaba/arthas

四、代码规范

阿里巴巴代码规约扫描插件

  1. 简介:统一规范标准将有助于提高行业编码规范化水平,帮助行业人员提高开发质量和效率、大大降低代码维护成本。 2017年年初,首次公开了《阿里巴巴Java开发手册》,自从第一个版本起,倍受业界关注。为了让开发者更加方便、快速的将规范推动并实行起来,阿里巴巴基于手册内容,研发了一套自动化的IDE检测插件(IDEA、Eclipse), 该插件在扫描代码后,将不符合《手册》的代码按Blocker/Critical/Major三个等级显示在下方,甚至在IDEA上,还基于Inspection机制提供了实时检测功能,编写代码的同时也能快速发现问题所在。对于历史代码,部分规则实现了批量一键修复的功能,提升代码质量,提高团队研发效能。
  2. 官方地址:GitHub - alibaba/p3c: Alibaba Java Coding Guidelines pmd implements and IDE plugin

五、其他

静态开源站点搭建工具 Docsite

  1. 简介:静态开源站点搭建工具Docsite,这是一款集官网、文档、博客和社区为一体的静态开源站点的解决方案,具有简单易上手、上手不撒手的特质,同时支持react和静态渲染、PC端和移动端、支持中英文国际化、SEO、markdown文档、全局站点搜索、站点风格自定义、页面自定义等功能,借助Docsite,可以极大的提高前端工程师搭建静态开源站点的效率。
  2. 官方地址:https://github.com/txd-team/docsite?spm=a2c6h.12873639.article-detail.6.25ea7eb7JPLw5l

一文多发神器 OpenWrite

  1. 简介:提供Markdown编辑器,支持自动保存、自定义图床、华丽的代码渲染等强大功能,用户完全可以通过OpenWrite在线完成创作。 目前已经支持主流的技术内容平台,包括:知乎、CSDN、博客园、思否、开源中国、稀土掘金、慕课手记、微信公众号(仅支持复制黏贴)
  2. 官方地址:https://openwrite.cn/

这些武器可以帮助我们应对各种开发挑战,提高编程效率。作为一名后端工程师,我们应该熟练掌握这些武器,为自己的武林之路做好准备。

当然,程序员的武器库还不止这些。除了上述的技术和工具之外,还有一些重要的素养和能力,对于程序员来说也是必不可少的。

  • 代码规范:代码规范是指编写代码时遵循的一些准则和规则,这些准则和规则旨在让代码更易于阅读、维护和理解。比如,变量名要有意义、函数名要有描述性等。
  • 调试能力:调试是指寻找和修正代码中的错误,这是程序员经常要做的事情。程序员需要具备良好的调试能力,能够快速找出代码中的问题并进行修正。
  • 文档阅读能力:程序员需要掌握的技术和工具多,往往会需要阅读各种文档来了解用法和细节。因此,程序员需要具备良好的文档阅读能力,能够快速找到所需的信息。

随着技术的发展,程序员还应该持续学习、更新自己的武器库。

例如,现在越来越流行微服务架构,程序员需要学习相关的知识,并会使用一些新的框架和工具如Docker、Kubernetes等。

另外,程序员也应该注意自己的专业能力,如算法、数据结构、设计模式等。这些能力可以帮助程序员更好地解决问题,提升自己的竞争力。

总的来说,程序员的武器库包含的内容非常丰富,它不仅仅是技术和工具,还包括一些素养和能力。程序员需要不断学习、积累经验,才能成为一名优秀的工程师。