JDK

初步认识Java

亡梦爱人 提交于 2020-10-23 02:36:12
初识Java Java基础部分(一) 初识Java 1.1 什么是程序? 为了让计算机执行某些操作或解决某个问题而编写的一系列有序的集合=>计算机程序。 而编写程序的工具就是计算机语言。 1.2 Java语言的特点。 Java语言的特点: 简单、面向对象、分布式、结构中立、可移植、解释执行、健壮、安全、高性能、多线程和动态。 1.3 Java平台 (1)、Java SE(Java Standard Edition、标准版)包含Java语言的基础核心(JRE、JDK、Java开发工具包)。 主要用于桌面开发,例如QQ、记事本。 (2)、Java EE (Java Enterprise Edition、企业版)包含Java SE。主要用于企业应用程序开发。例如:Web网站、分布式应用。 (3)、Java ME(Java Mocro Edition、移动版)主要用于开发移动设备/嵌入式设备的应用,例如手机游戏。 1.4 JDK JDK(Java Development kit)=>Java 开发工具包。 1.5 JRE JRE (Java Runtime Environment)Java运行时环境。 1.6 JVM JVM (Java Virtual Machine)Java虚拟机。 1.7 JDK、JRE、JVM三者关系 JDK包含JRE,JRE包含JVM(JVM 嵌在JRE中)。

要去面试,先刷完这16道高频面试题,阿里,字节跳动,美团任你选

限于喜欢 提交于 2020-10-23 02:30:55
1.JDK8 新特性 Lambda 表达式-也是函数编程的一种方式(将函数做为参数) 方法的应用,应用已有的java类对象的方法或者构造器。与Lambda表达式相结合,方法应用使得语言构造更加简洁,从而减少代码的冗余 默认方法,默认方法就是一个在接口里边有了一个实现的方法 新工具-新的编译工具,如:Nashorn引擎jjs,类依赖分析器jdeps Stream API - 把真正的函数式编程风格引入到Java中。 Date Time API - 加强对日期与时间的处理 Optional 类 - Optional 类已经成为Java 8 类库的一部分,用来解决空指针异常 Base64 Java8 内置了Base64 编码的编码器和解析器 2.hashMap 底层实现?当你put一个元素时,在底层结构是如何执行的? 首先需要知道在不同的JDK版本上面hashMap 的实现是有区别的: JDK8之前: 数组 + 链表 JDK8之后:数组 + 链表 + 红黑树 当你put元素时: #### 执行步骤: a.计算该元素的hashCode 值 b.通过计算它的hashCode 值去确定数组下标,数组的初始化16大小,增长因子为0.75 c.当存在哈希冲突是,相同的hashCode 值得到的数组下标就是会一样的,则单纯的数组则不满足,需要链表的支持 d.链表满足长度大于8时转成红黑树,那为啥8呢

干货分享丨jvm系列:dump文件深度分析

▼魔方 西西 提交于 2020-10-23 02:24:21
摘要: java内存dump是jvm运行时内存的一份快照,利用它可以分析是否存在内存浪费,可以检查内存管理是否合理,当发生OOM的时候,可以找出问题的原因。那么dump文件的内容是什么样的呢? JVM dump java内存dump是jvm运行时内存的一份快照,利用它可以分析是否存在内存浪费,可以检查内存管理是否合理,当发生OOM的时候,可以找出问题的原因。那么dump文件的内容是什么样的呢?我们一步一步来 获取JVM dump文件 获取dump文件的方式分为主动和被动 i.主动方式: 1.利用jmap,也是最常用的方式:jmap -dump:[live],format=b,file= 2.利用jcmd,jcmd GC.heap_dump 3.使用VisualVM,可以界面操作进行dump内存 4.通过JMX的方式 MBeanServer server = ManagementFactory.getPlatformMBeanServer(); HotSpotDiagnosticMXBean mxBean = ManagementFactory.newPlatformMXBeanProxy(server, " com.sun.management:type=HotSpotDiagnostic " , HotSpotDiagnosticMXBean. class ); mxBean

求求大厂给个Offer:Map面试题

旧街凉风 提交于 2020-10-22 23:58:43
前言 文本已收录至我的GitHub : https://github.com/ZhongFuCheng3y/3y ,有300多篇原创文章,最近在 连载面试 系列! 我,三歪,最近开始写面试系列。我给这个面试系列取了一个名字,叫做《 求求大厂给个Offer 》 所以这篇文章叫做《 求求大厂给个Offer:Map面试题 》 接下来就开始吧。 面试现场 三歪:“我叫三歪,目前维护一个公众号叫做 Java3y ,这几年写了300+原创技术文章,近1000页的 原创 电子书和多个知识点的思维导图。我的愿景是: 只要关注我并三连的同学都可以拿到大厂offer 。我的…” 三歪:“Map在Java里边是一个接口,常见的实现类有HashMap、LinkedHashMap、TreeMap和ConcurrentHashMap” 三歪:“首先要明确的是:在Java里边,哈希表的结构是 数组+链表 的方式。HashMap底层数据机构是 数组+链表/红黑树 、LinkedHashMap底层数据结构是 数组+链表+双向链表 、TreeMap底层数据结构是红黑树,而ConcurrentHashMap底层数据结构也是 数组+链表/红黑树 ” 面试官:“我们先以HashMap开始吧,你能讲讲当你 new 一个HashMap的时候,会发生什么吗?” 三歪:“HashMap有几个构造方法

Jekins持续集成在ERP研发中的应用实践

血红的双手。 提交于 2020-10-22 17:37:58
源宝导读: “持续集成”是敏捷最佳实践中,保证高质量交付的关键环节之一。本文将介绍明源云ERP系统在研发过程中,应用Jekins平台完成持续集成自动构建的实践。 一、认识持续集成 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。 持续集成的目的总结一句话: 尽早测试、尽早发现问题,随时发布。 二、Jenkins环境部署 2.1、为什么基于jenkins进行持续集成部署 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 Jenkins支持跨平台部署。 Jenkins生态非常强大,目前已有非常完备的开源插件库,满足各种所需。 2.2、Jenkins环境安装 2.2.1、依赖环境安装 JDK部署:因为jenkins基于java开发,运行需要基于JDK;所以在安装jenkins程序前需要先安装JDK环境。 注意:JDK版本与Jenkins版本存在兼容性问题,请安装JDK新版本。下载地址:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8

一个妹子网易Java岗社招面试经历分享

北城余情 提交于 2020-10-22 14:09:24
网易面试题 1. 面向对象的特点有哪些? 2. 列举几个java常用的package及其作用 3. 接口和抽象类有什么联系和区别 4. 重载和重写有什么区别 5. java有哪些基本数据类型? 6. Java支持的数据类型有哪些?什么是自动拆装箱? 7. int 和 Integer 有什么区别 8. 数组有没有length()方法?String有没有length()方法? 9. Java中符号>>和>>>有什么区别? 10. Java类的实例化顺序 11. 什么是值传递和引用传递 (1)值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量. (2)引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本, 并不是原对象本身 。 12. String能被继承吗?为什么? 13. String和StringBuilder、StringBuffer的区别? 14. Java集合框架的基础接口有哪些? 15. Java集合框架是什么?说出一些集合框架的优点? (1)每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中

java开发两年!连JDK动态代理-使用及原理都不知道,你加薪无望!

梦想与她 提交于 2020-10-22 10:36:23
JDK动态代理 为了引出动态代理,我们看看一个案列! 广东广州,早上9:00,一位靓仔穿着人字拖、提着鸟笼,走进了早茶店。没错,这就是广州典型的包租公!名下几栋楼, 只收租为生,没工作 ,这人身真是无趣至极! 这里就得出一个问题:收租不算工作?好吧,其实正真的包租公 不会自己去收租 ,都是委托给中介去做。为什么呢?这其中可以说牵扯到安全、隐私等等。想一下,假如包租公自己收租,当下租客很多,其他包租公就不爽了,干脆找人去捣乱,比如只问不租,浪费包租公时间。当然不仅仅是这样… 简单使用 好的,租房中介就出来了,租客看房、谈价、签合同、交付钥匙等等都让中介(代理)去做,房东就坐等收钱就行了。 代码中使用输出语句代替真正的业务! 首先,我们定义一个 房东接口 ,和一个 房东实现类 。(为什么需要接口?后面代理类是根据接口得到的,而且房东类不应该暴露出去的) public interface ILandlordService { void deliver(); } public class LandlordServiceImpl implements ILandlordService { public void deliver() { try { System.out.println("告知房东出租成功,房东收钱"); } catch (Exception e) { e

关于maven的一份小笔记

笑着哭i 提交于 2020-10-22 02:59:09
简介 项目里一直用的 maven,几乎天天和这个“熟知”的工具打交道,但是,最近我发觉自己对 maven 了解的还不够,例如,什么是 goal?什么是 phase?等等。趁着最近有时间,把 官网文档 大致看了一遍,并且做做笔记,也就形成了这篇博客。 本文主要讲解以下内容: 什么是 maven?maven有什么用? 安装和使用 maven maven 的构建生命周期 配置 maven 常见问题(持续更新) 什么是maven?maven 有什么用? 这两个问题,很多文章都有说到,但是,大部分都是翻译了官网的这句笼统的话,看了和没看一样。 Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information. 以下是我的个人总结,可能稍微好理解一点。 首先,maven 是一个工具,用来帮助我们 简化 、 标准化 项目的构建,主要分成四点: 如何描述一个项目 。我们可以简单地用一个坐标(groupId

如何设置线程池参数?美团给出了一个让面试官虎躯一震的回答。

元气小坏坏 提交于 2020-10-21 17:33:55
前言:曾经自诩对线程池了如指掌,不料看了美团的一篇技术文章后才知道原来线程池的参数还可以动态调节。 学艺不精,一边留下了没有技术的泪水,一边站在美团这个巨人的肩上写下此文,补充并记录了自己的一点看法。 分享给大家,希望能对你有所帮助。 荒腔走板 大家好,我是 why,一个四川好男人。 今天本来应该是武汉马拉松鸣枪起跑的日子,所以先荒腔走板说几句马拉松吧。 上面的图是我跑 2019 年成都马拉松的时候拍的,是一对双胞胎陪着 80 岁的父亲跑全程马拉松。 图片中的老人叫罗广德,在他 75 岁之前的人生和其他的老人并无不同。 但是经过他儿子的影响,在 75 岁的时候开始接触跑步的。一直就没有停下脚步,世界六大马拉松赛(纽约、伦敦、柏林、芝加哥、东京、波士顿)他已经完成了五个。 本来打算今年 4 月份站上波士顿马拉松的赛道上,完成最后的挑战。 完成之后,他就是世界华人这个年龄段里第一个完成世界六大马拉松赛的大满贯跑者。 但是由于疫情的原因,波士顿马拉松延期举行了。但是没有关系,我相信老爷子的执着,我也相信他会是第一人。 他说:“人生没有太晚的开始,关键是要行动起来。现在的年轻朋友很多都缺乏锻炼,作息时间不好,我希望年轻人都行动起来,我 80 岁都能跑步,难道你们不能跑吗?” 我之前说过,在赛道上你能看到很多有趣的、感动的画面。我喜欢跑马拉松,因为跑完之后总是能带给我爆棚的正能量。

IDEA 如何创建一个普通的 Java 项目,及创建 Java 文件并运行

房东的猫 提交于 2020-10-21 14:28:46
首先,确保 IDEA 软件正确安装完成,Java 开发工具包 JDK 安装完成。 IDEA 的 Java 项目 (Project) 则相当于 Eclipse 的工作空间 (workspace) 的概念。 一、创建 Java 项目: 1、打开 IDEA 软件,点击界面上的 Create New Project 2、出现以下界面,选中 Java,然后选择 JDK,最后点击 Next,进行下一步(我的是 jdk1.8) 3、这里是选择生成项目时是否创建 Java 文件,勾选上 Java Hello World 后会生成一个默认的 Hello world 文件,点击 Next 进行下一步, 4、给项目命名,默认是 untiled,自己填个名字吧,最后点击 finish 5、项目创建完成 二、创建 Java 文件: 1、点击 src——>new——>package,创建一个文件包,并给包命名,与 Eclipse 的包类似; 给包命名 2、在包下面创建 Java 类文件,点击包名——>New——>Java Class; 给类文件命名 4、运行 Java 文件,点击 Run——>Run......; 出现以下弹框,点击要运行的文件名,这里是 Hello; 运行结果 来源: oschina 链接: https://my.oschina.net/u/4301555/blog/4682698