Java核心技术讲解学习

Wesley13
• 阅读 187

Java核心技术讲解学习

LuckQI

在这里你可以得到不只是技术,关注即可习得新技能

Java核心技术讲解学习   Java核心技术讲解学习

Java核心技术讲解学习

做java有一段时间了。经常写业务代码,长时间里,自己只知道怎么使用其中的api,对于java的理解很多就忘记了。正好极客时间里面出来了一个课程关于JAVA核心技术的讲解,自己也开始学习,期望能提高自己对java的理解。

首先提出需要的问题。

  1. Java平台的理解

  2. Java是解释执行吗?

我看到这个问题的时候也是一头懵逼。难道面试的时候会问这种问题吗。让我这个小白渣渣心中突突了一下。其实让我自己说也不知道怎么说。赶紧趁着机会学习下。

Java平台的理解 : 一个面向对象编程的语言

  1. 具有封装,继承,多态特性

  2. 一次执行,处处运行。与平台无关性。可以让java程序在别的平台上运行,当然这是由JVM确定的。java在第一次编译生成.class文件。JVM运行.class文件。与c还有c++区别最大的一点就是开发者不用在纠结各个操作系统的区别,内存管理在Java上也弱化了很多。

  3. 类库多,并且第三方提供的类库十分丰富,帮助开发者解决了很多问题。

  4. Java的大数据生态。在生态上Java可以说是最成熟的一种解决方案。hadoop,spark,hive等等,都提供Java语言的支持。

  5. Jre解决了Java的开发环境,虚拟机的支持,还有各种类库,而JDK提供各种开发工具,并且还有诊断工具帮助开发者去了解程序执行的问题。例如jmc ,jmap ,jvisualvm等等

  6. 垃圾回收 。Java中降低了开发过程内存管理的开销,一般程序对于内存管理不是必要的话,java中基本上可以忽略,并且能降低内存出现泄露的概率。虽然会有提高一部分开销,但是带来的好处也是显而易见的。

Java是解释性执行吗?

答案是否定的。为什么这么说?

    我们都知道JAVA分为编译期和运行时两种类型。在编译期,Javac会把源码文件编译成.class文件,其实class文件里面就是字节码。而不是直接执行的机器码。那么在运行时,我们就需要依靠虚拟机JVM了。我们常用的Hotspot JVM 提供的是JIT动态编译器。也就是常用的动态编译器。在运行时刻将热点代码编译成机器码。这种情况下的代码就属于编译执行。不是解释执行了。随着Java的发展。Java8已经开始了解释和编译混合的模式。来快速的运行代码。

  1. 1 JIT动态编译,在Hotsoot中有两种模式,一个是client模式,适用于启动速度敏感的应用。一个是server模式。优化长时间运行的服务端应用。最新的动态编译还有AOT直接将字节码编译成机器代码,避免了JIT方面的开销。

下面是画的简单的脑图,我们可以在下面的内容上继续添加。满足对Java的理解。

Java核心技术讲解学习

                                                              Java平台

Exception 与Error

     我们正常在程序中经常会遇到一些异常问题,需要进行解决。那么这两者有什么区别呢。让我们看下继承关系。

      Error与Exception 都是继承Throwable.其中Throwable 在Java中才可以被抛出throw或者catch。 它是异常处理机制的基本组成类型。

Error是在不长出现的内容,大部分的Error是程序出现了不可意料的错误,比如OutOfMemoryError这类的。

Exception 分为 可检查的和不检查的错误,可检查的错误一般是能在编译器里面自然的能看到。而不可检查的错误比如我们常常遇见的空指针异常。这种异常一般是我们可以捕捉到的异常。一般这方面的异常有连接池异常,访问异常,IO异常等等。

                        Java核心技术讲解学习

                                                            简单脑图异常

Java核心技术讲解学习

                                                        异常图类集成关系

                    Java核心技术讲解学习

                                                            错误异常

在程序中,我们在处理异常的时候基本上要进行分门别类进行处理,不建议统一按照Exception捕捉,有的异常时需要抛出来让业务层统一处理,有的需要单独处理。特别是在流式程序中执行,异常不是容易查找。

  1. 性能上 try catch 会有十分大的性能开销。所以我们在程序中处理的时候,尽量不要try 一大段代码。

  2. Java每实例化一个Exception 都会对当时的栈进行快照,这是一个重的操作。开销不能忽略。

欢迎大家关注

Java核心技术讲解学习

转载于公众号:LuckQI

一个非常不错的公众号!

戳下面的原文阅读,更有料

本文分享自微信公众号 - Java社区(Java5206868)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
2年前
MySQL 的慢 SQL 怎么优化?
!(https://oscimg.oschina.net/oscnet/7b00ec583b5e42cc80e8c56c6556c082.jpg)Java技术栈www.javastack.cn关注阅读更多优质文章(https://www.oschina.net/action/GoToLink?urlhttp
Stella981 Stella981
2年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
2年前
IJCAI2020 图相关论文集
↑公众号关注“GraphAI”专注于图机器学习IJCAI2020图相关论文集!(https://oscimg.oschina.net/oscnet/538c1eb7d78b304723ca074c35b6cc896f2.png)
Wesley13 Wesley13
2年前
Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
!(https://oscimg.oschina.net/oscnet/3e08a942dd884e9ab82b63a1f3c4aada.jpg"未命名文件.jpg")Java技术栈不可错过的Java 技术公众号!(https://oscimg.oschina.net/oscnet/00fcff52518e
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Linux 是如何管理内存的?
点击蓝色“Java建设者”关注我哟加个“星标”,及时阅读最新技术文章!(https://oscimg.oschina.net/oscnet/df3cbbbafd5ae35c3c30f1b0081db3e740f.png)这是Java建设者第106篇原创文章Linux内存管理模型非常直接明了,因为Lin
Wesley13 Wesley13
2年前
35岁是技术人的天花板吗?
35岁是技术人的天花板吗?我非常不认同“35岁现象”,人类没有那么脆弱,人类的智力不会说是35岁之后就停止发展,更不是说35岁之后就没有机会了。马云35岁还在教书,任正非35岁还在工厂上班。为什么技术人员到35岁就应该退役了呢?所以35岁根本就不是一个问题,我今年已经37岁了,我发现我才刚刚找到自己的节奏,刚刚上路。
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这