【转】Java开发必须要知道的知识体系

Java

Java是一门超高人气编程语言,拥有跨平台、面向对象、泛型编程等特性。在TIOBE编程语言排行榜中,连续夺得第一宝座,而且国内各大知名互联网公司,后端开发首选语言:非Java莫属。今天只是梳理下Java知识体系,后续会针对各类目有更详细的经验分享。

知识体系

JDK

  • Java8

    • Lambda 语句

    • 方法引用

    • 日期/时间处理API

    • 等等,不一一列举,详细的参考这些文档

    • URL: http://www.oracle.com/technetwork/cn/java/javase/documentation/index.html

    • 说明: Java8增加了很多新的重要特性,比如:

    • Java8特性(英文): http://www.tutorialspoint.com/java8/java8_overview.htm

    • Java8特性(中文): http://www.importnew.com/11908.html

IDE

  • IntelliJ IDEA: - URL: http://www.jetbrains.com/idea/ - 推荐指数: 5星 - 评价: JetBrains公司旗下有很多非常棒的IDE,例如PHP开发:PHPStorm,Python开发:Pycharm等,用了很多年的 Eclipse,后来发现IDEA,如获至宝,果断放弃了Eclipse,并在团队中分享,技术同学都切到IntelliJ IDEA,用过的都说好,具体咋好,自己去体验吧!

    • URL: http://www.eclipse.org/

    • 评价:最流行的Java开发IDE,国内很多团队使用MyEclipse,基于EclipseIDE的扩展,集成了很多插件,功能也很强大,非开源,收费。 MyEclipse的URL:http://www.myeclipsecn.com/

    • Eclipse

Web服务器

  • Apache

    • URL: https://projects.apache.org/project.html?httpd-http_server

    • 说明: 具有的跨平台性和安全性,广泛使用,最流行开源Web服务器。

  • Nginx

    • URL: http://www.nginx.org/

    • 说明: 轻量级Web服务器、反向代理服务器,Nginx相较于 Apache、lighttpd 具有占有内存少,稳定性高,并发能力强等优势,丰富的模块库以及友好灵活的配置而闻名。

  • Tomcat

    • URL: http://tomcat.apache.org/

    • 说明: Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展。

  • Jetty

    • URL: http://www.eclipse.org/jetty/

    • 说明: Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境,相对于Tomcat,更轻量级,更灵活,扩展性好。

    • 备注: 关于tomcat 与 nginx,apache的区别,参见知乎上的一篇文章:https://www.zhihu.com/question/32212996

构建工具

  • Maven

    • URL: http://maven.apache.org/

  • Gradle

    • 推荐指数: 个人比较推荐Gradle,代码简洁,设置灵活,但也需要根据具体业务场景和技术架构评估。

    • URL: http://gradle.org/

    • gradle和maven区别参照知乎这篇文章:https://www.zhihu.com/question/29338218

  • Ant: 过时的东东,就不要用了。

框架

  • Spring Framework

    • URL: http://spring.io/

    • 推荐指数: 5星

    • 说明: 学Java不知道Spring,没用过Spring,那就太low了,DI、AOP、MVC、ORM这些概念自不必说,必须要学的,围绕着Spring的生态圈很全,各种组件基本都已经齐备,结合自己的业务,做些扩展就run!

    • Github上各种Spring组件代码:https://github.com/spring-projects

  • Play!

    • URL: https://www.playframework.com/

    • 说明: Play!是在设计时考虑了可伸缩性的 新一代反应式 Web 框架,Play 还带来了开发友好的特性,比如原生的 XML 和 JSON 处理,开发模式下的浏览器内错误报告,内置的测试帮助器,以及Selenium集成。

模版引擎

  • Thymeleaf

    • URL: http://www.thymeleaf.org/

    • 说明: 支持用XML/XHTML/HTML5写模版,用于Web与非Web环境中的应用开发。Spring Boot中推荐用Thymeleaf作为前端渲染模版引擎。

  • Velocity

    • URL: http://velocity.apache.org/

    • 说明: 一个基于java的模板引擎,它允许任何人使用简单但是强大的模板语言, 引用java代码中的对象。

数据访问

  • JPA

    • URL: http://projects.spring.io/spring-data-jpa/

    • 说明: JPA是基于Hibernate的作的扩展,提供了简单的编程模型,JPA定义了独特的JPQL,不写SQL文,就能进行简单的进行数据CRUD操作。

  • MyBatis

    • URL: http://mybatis.org/mybatis-3/

    • 说明: MyBatis的前身就是iBatis,是一个数据持久层(ORM)框架,简单易学,轻巧灵活,封装了绝大多数的JDBC样板代码,使得开发者只需关注SQL本身。

日志

  • Logback

    • URL: http://logback.qos.ch/

    • 说明: Logback是log4j的升级版本,通常会和SLF4J配合使用。

  • SLF4J

    • URL: http://www.slf4j.org/

    • 说 明: SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统,SLF4J提供了统一的记录日志的接口,只要按照 其提供的方法记录即可,最终日志的格式、记录级别、输出方式等通过具体日志系统的配置来实现,因此可以在应用中灵活切换日志系统。

单元测试

  • JUnit

    • URL: http://junit.org/junit4/

    • 说明: 没啥好介绍的,老牌的Java代码自动话测试工具。

  • testNG

    • URL: http://testng.org/doc/index.html

    • 说明: 类似于JUnit和NUnit, 功能都差不多,只是功能更加强大,使用也更方便。

  • JMockit

    • URL: http://jmockit.org/

    • 说明: 单元测试mock框架,尤其在测试框架底层复杂代码时,JMockit是很好的武器,另外还有一个工具:Djunit也是Mock框架,场合Junit结合使用。

常用类库

  • jackson

    • URL: https://github.com/FasterXML/jackson

    • 说明: 操作JSON的类库。

  • GSON

    • URL: https://github.com/google/gson

    • 说明: Google开源java对象和JSON对象进行影射的类库。

  • CSV

    • URL: http://opencsv.sourceforge.net/

    • 说明: 操作CSV文件格式类库。

  • Excel

    • URL: https://poi.apache.org/

    • 说明: 操作Excel,Word的类库。

  • Apache PDFBox

    • URL: https://pdfbox.apache.org/index.html

    • 说明: 操作PDF的类库。

  • Jsoup

    • URL: https://jsoup.org/

    • 说明: 一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

  • Ehcache

    • URL: http://www.ehcache.org/

    • 说明: 纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。

  • Quartz

    • URL: http://quartz-scheduler.org/

    • 说明: 作业调度框架。

代码质量

  • FindBugs

    • URL: http://findbugs.sourceforge.net/

    • 说明: 代码静态分析工具,帮助提高代码质量以及排除隐含的缺陷。

  • CheckStyle

    • URL: http://checkstyle.sourceforge.net/

    • 说明: 检查Java编码规范的静态分析工具。

  • PMD

    • URL: https://pmd.github.io/

    • 说明: 和FindBugs功能类似。

JVM语言

  • Scala

    • URL: http://www.scala-lang.org/

    • 说明: Scala是一门现代的多范式编程语言,志在以简练、优雅及类型安全的方式来表达常用编程模式。它平滑地集成了面向对象和函数语言的特性。

  • Groovy

    • URL: http://groovy-lang.org/

    • 说明: Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与Java代码很好地结合,也能用于扩展现有代码。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CrossPHP--在我们用ajax,js取不到指定数据时,我们可以换一种方式

项目中遇到的问题: 需求: 用的是layui的laypage组件,进行分页操作,熟悉layui的朋友都知道,laypage需要从服务端给其一个总条数, 但是在进行ajax请求时出了问题, 我是这样定义的但是调用的时候却无法将数值直接返回回去,所以这里只能更换一种思路 在控制器中进行数据的查询,然后…

VS 代码行数统计

按CTRLSHIFTF (Find in files),勾上支持正则表达式,然后输入搜索内容: ^:b*[^:b#/].*$#开头和/开头或者空行都不计入代码量。如果需要只统计代码文件的代转载于:https://www.cnblogs.com/sunlyk/p/7484728.html

MySQL设置从库只读模式

常见现象 运维工作中会经常维护MySQL主从服务器,当然Slave我们只是用于读操作。 一般权限开通也只授权只读账号,但是有时候维护工作可能不是一个人在做,你不能保证其他同事都按照这个标准操作。 有同事可能会授权Slave库MySQL账号为all或者se…

寻找kernel32.dll的地址

为了寻找kernel32.dll的地址,可以直接输出,也可以通过TEB,PEB等查找。 寻找TEB: dt _TEB nt!_TEB 0x000 NtTib : _NT_TIB 0x01c EnvironmentPointer : Ptr32 Void 0x020 ClientId : _CLIENT_ID 0x028 ActiveRpcHandle : Ptr32 Void 0x02c ThreadLocalSto…

layui弹出层使用(layer.alert / layer.open / layer.prompt )

一 layer.alert 效果图: 代码: //取消提现 function back(id) {layer.alert(真的要取消吗, {skin: layui-layer-molv //样式类名 自定义样式,closeBtn: 1 // 是否显示关闭按钮,anim: 1 //动画类型,btn: [确定,取消] //按钮,icon: 6 // icon,yes:function(){return $.aj…

SkiaSharp 自绘弹幕效果

SkiaSharp 自绘弹幕效果控件名:SkiaSharpBarrage作者: 驚鏵原文链接: https://github.com/yanjinhuagood/SkiaSharpBarrage框架使用.NET60;Visual Studio 2022;项目使用 MIT 开源许可协议;接着上一篇 WPF 弹幕上期有…

JavaScript中this指向

一.重点来了,this指向问题:1.this指向之普通函数。 2.this指向之对象 3.this指向之构造函数 4.this指向之(call,apply)动态更改this指向。 二.具体分析如下 1.普通函数 // 第23行的调用者为null,this指向也为null,// 所以这时js把…

【python】python中的定义类属性和对像属性

python中变量是没有类型的可以绑定任意类型,但是在语法上不能声明变量。 那我们怎麽来声名一个变量呢? fNone 这样我们给着个变量绑定了以各None类型,我们随时可用重新绑定其它类型。这样我们起到了预先声名变量的效果。 类中如何去定义类的…

提交Form表单,submit之前做js判断处理

效果:在点击提交按钮时,首先进行js判断, 如果不符合条件,则alert出提示信息,并return false. 主要点就在于给form表单添加一个onsubmit事件. 在onsubmit事件中定义的函数里进行js验证处理.代码 : <!DOCTYPE html> <html lang"en"> <head><meta …

如何在Windows上一键部署PaddleOCR的WebAPI服务

PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库&#xff0c;助力开发者训练出更好的模型&#xff0c;并应用落地。官方开源项目地址&#xff1a;https://github.com/PaddlePaddle/PaddleOCR一定会有小伙伴们看完不知道如何部署与应用&#xff0c;怎么才能融入到自己的产品…

微软为 Visual Studio 扩展添加对 Arm64 的支持

微软在 6 月份推出了支持 Arm64 架构的 Visual Studio&#xff0c;这是第一个原生支持在基于 Arm 的处理器上构建和调试 Arm64 应用程序的 Visual Studio 版本。近日&#xff0c;他们宣布为 Visual Studio 扩展也添加了对 Arm64 的支持&#xff0c;因此开发者可在 Arm64 Visual…

WIN10 查看已经连接的wifi的密码

命令行: 1. 显示以前连接过的wifi2. 将wifi配置存入文件中3. 查看刚刚保存的wifi配置的文件这样,我们就可以看到连接的wifi名称和wifi密码了.

ubantu 重启mysql

如何启动/停止/重启MySQL一、 启动方式1、使用 service 启动&#xff1a;service mysql start2、使用 mysqld 脚本启动&#xff1a;/etc/inint.d/mysql start3、使用 safe_mysqld 启动&#xff1a;safe_mysql&二、停止1、使用 service 启动&#xff1a;service mysql stop2…

C++ 反射机制的简单实现

C并不支持反射机制&#xff0c;只能自己实现。 如果需要实现字字符串到函数到映射&#xff0c;一定要使用到函数指针。 简单实现反射机制&#xff0c;根据字符串来构造相应到类。主要有以下几点&#xff1a; (1) 可以使用map保存字符从到函数指针到映射。 (2) 工厂类提供字符串…

微软与 Canonical 合作,将 systemd 引入 WSL

微软和 Canonical 联合宣布&#xff0c;systemd 现在可以在 Windows Subsystem for Linux&#xff08;WSL2&#xff09;中运行了&#xff0c;此举可以让用户在 Windows 设备上获得更加全面的 Linux 体验。systemd 的作者 Lennart Poettering 在 7 月份离开红帽并加入了微软&…

vsftpd配置

1.) yum install -y vsftpd 2.) useradd -g ftp -s /sbin/nologin afcupload (默认生成/home/afcupload, 可使用 -d参数自定义主目录生成位置) 3.) passwd afcupload 4.) chgrp -R ftp afcupload 5.) chown -R afcupload:ftp afcupload 6.) chmod -R 700 afcupload 4.) 修…

2017.9.6数学

集合&#xff1a;一个可以代表一类事物或数据的代词。&#xff08;个人定义&#xff09; &#xff08;其内容带有辅助功效【个人记不下来】&#xff09;自然数&#xff1a;所有的非负整数。 有理数&#xff1a;是可以用正数和分数代表的数。实数&#xff1a;包括有理数和无理数…

.NET 反向代理-YARP 根据域名转发

编者&#xff1a;fastgithub 就是基于YARP使用域名做转发逻辑的。 前段时间发布过一个关于 YARP 的简单介绍&#xff0c;感兴趣的小伙伴恭请移步看看 .NET 反向代理-YARP 作为反向代理&#xff0c;必不可少的当然是根据域名代理转发啦&#xff0c;毫无疑问&#xff0c;YARP…

第一个python小游戏

guess int(input("猜一猜宝宝心目中的数字是多少:")) secret 8 while guess !secret:guess int(input("哎呀猜错了,重新猜一猜宝宝心目中的数字是多少:"))if guess secret:print("你真厉害,居然猜对了")print("哼,猜对了也不给你奖励&q…