JDK

搞定JVM基本原理和面试题,看看这几本书妥妥够了!

微笑、不失礼 提交于 2020-10-11 00:33:03
点击蓝色“程序员书单”关注我哟 加个“星标”,每天带你读好书,看好文! ​ 在介绍本书单之前,我想先问一下各位读者,你们之前了解过JVM么,如果有了解过,那么了解的程度又如何呢。经过了10多年的发展,Java Web从开发框架到社区都已经非常成熟,很多程序员都可以通过使用框架很快速地搭建起一个Java Web应用,特别是近几年springboot大热,干脆连配置都不需要了解了,直接一键式编译部署运行,让Java工程师的学习成本变得越来越低。 但于此同时,互联网公司对于Java的应用场景也在不断地升级换代,从单机部署再到分布式,从SOA再到微服务,Java后端技术栈变得更加庞大,对于工程师的要求也越来越高,特别是对于大公司来说更是如此,也正因为如此,对Java工程师的考察已经不限于Java Web的那套东西了,企业往往会提出更高的要求,比如熟悉Java并发编程和JVM调优,了解分布式技术、微服务以及中间件等等。 而今天的这份书单就会来推荐一些JVM虚拟机方面的好书,对于一个Java工程师来说,只有了解了JVM虚拟机之后,你才能够理解很多JDK中的设计和实现,同时也能够为你做JVM调优,问题排查等工作时提供理论基础。 Java虚拟机系列书单 ​ 深入理解Java虚拟机 这本书在Java圈内基本可以算是前无古人后无来者的一本书了,它在13年首次出版

2014年 第5届 蓝桥杯 Java B组 省赛解析及总结

耗尽温柔 提交于 2020-10-10 08:33:55
2013年 第4届 蓝桥杯 Java B组 省赛解析及总结 2014年 第5届 蓝桥杯 Java B组 省赛解析及总结 题解思路及源码,来自 蓝桥杯 郑未老师。 目 录 一、武功秘籍 二、切面条 三、猜字母 四、大衍数列 五、圆周率 六、奇怪的分式 七、扑克排序 八、分糖果 九、地宫取宝 42分 57分 十、矩阵翻硬币 小结 一、武功秘籍 标题:武功秘籍 小明到X山洞探险,捡到一本有破损的武功秘籍(2000多页!当然是伪造的)。他注意到:书的第10页和第11页在同一张纸上,但第11页和第12页不在同一张纸上。 小明只想练习该书的第81页到第92页的武功,又不想带着整本书。请问他至少要撕下多少张纸带走? 这是个整数,请通过浏览器提交该数字,不要填写任何多余的内容。 【答案】:7 注意书的构成方式。 二、切面条 标题:切面条 一根高筋拉面,中间切一刀,可以得到2根面条。 如果先对折1次,中间切一刀,可以得到3根面条。 如果连续对折2次,中间切一刀,可以得到5根面条。 那么,连续对折10次,中间切一刀,会得到多少面条呢? 答案是个整数,请通过浏览器提交答案。不要填写任何多余的内容。 【答案】:1025 三、猜字母 标题:猜字母 把abcd...s共19个字母组成的序列重复拼接106次,得到长度为2014的串。 接下来删除第1个字母(即开头的字母a),以及第3个,第5个等所有奇数位置的字母

Java 枚举

倖福魔咒の 提交于 2020-10-10 04:19:31
Java 枚举 知识点 概念 enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性。 在Java中,被 enum 关键字修饰的类型就是枚举类型。形式如下: enum Color { RED, GREEN, BLUE } 如果枚举不添加任何方法, 枚举值默认为从0开始的有序数值 。以 Color 枚举类型举例,它的枚举常量依次为 RED:0,GREEN:1,BLUE:2 。 枚举的好处 :可以将常量组织起来,统一进行管理。 枚举的典型应用场景 :错误码、状态机等。 枚举类型的本质 尽管 enum 看起来像是一种新的数据类型,事实上, enum是一种受限制的类,并且具有自己的方法 。 创建enum时,编译器会为你生成一个相关的类,这个类继承自 java.lang.Enum 。 java.lang.Enum 类声明 public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializable { ... } 枚举的方法 在enum中,提供了一些基本方法: values() :返回 enum 实例的数组,而且该数组中的元素严格保持在 enum 中声明时的顺序。 name() :返回实例名。 ordinal() :返回实例声明时的次序,从0开始。

阿里云 Centos7 部署Java web [jar/war/virmach+vps+域名服务]

徘徊边缘 提交于 2020-10-10 01:53:34
(一)第一部分:最基本的jar包运行(无需配置tomcat) [http://60.205.183.114:8081/ ] 1、配置阿里云(Esc学生服务器、镜像Centos7.7),并远程连接进入终端。 2、安装并配置JDK(参考 https://www.jianshu.com/p/093413f2a04f) a)安装jdk。 b)寻找jdk路径配置环境变量。 c)简单的Java hello world测试确保安装成功。 3、安装并配置mysql(mariadb)(参考 https://blog.csdn.net/DaSo_CSDN/article/details/54754936 ) a)安装mysql、mariadb server。 b)systemctl 开启服务。 c) 打开端口。(阿里云要在控制台打开,参考 https://yq.aliyun.com/articles/701181) d) 更改mysql 的root密码,对应于项目配置文件中的密码。 4、利用scp进行文件传输(参考 https://www.cnblogs.com/tugenhua0707/p/8278772.html ) a)传输spring maven 的快照版本用于测试。 b)传输数据库sql文件。 5、导入数据库 a)创建sql文件对应的数据库。 b)利用文件重定向运行sql文件。 c

面试官:大部分面试官都会问到的5个Java面试题你都怀疑人生,还跟我提想要月薪20k?

你说的曾经没有我的故事 提交于 2020-10-09 17:56:54
本文是一位粉丝朋友前段时间的真实面经经历,面的是蘑菇街 背景介绍: 工作经验:Java开发5年 学历背景:重庆邮电大学(信息安全专业) 工作经历:主要业务在柬埔寨做移动支付钱包(聚合支付的项目,让柬埔寨当地华人能使用微信、支付宝支付) 注意: 以下内容均为真实面经分享,大家可以认真阅读完,看下这些面试题你是否能答的让面试官满意,同时我也会分享一些面试的小技巧给大家,主要告诉你 如何准备简历,如何准备面试,2020大厂面试真题分享(含答案),哪些学习资料值得看。 话不多说,下面一起跟着这位粉丝朋友面试经历来看看他的面试之旅吧,另外,下文中涉及到的面试题答案、复习资料,均有完整PDF版分享, 关注+评论后私信我「面试」即可~ 面试官: 自我介绍一下吧 程序员: 你好,我毕业于XXX,工作5年了,最近的工作主要是负责XXX(见以上背景介绍) 面试官: 看到你写到熟练掌握Java语言的高级特性,简单介绍一下Bean SpringBean一个注入过程吧 程序员: Bean的注入过程......首先是从配置文件(注解)里面把它和对象.....额,我对这方面还是不太熟悉 面试官: 没事没事....我们接着往下聊 程序员: 尴尬一笑 面试官: 我看大你写到你了解一些高级特性,你能给我简单的介绍一下Java8有哪些新特性吗,或者你比较擅长的新特性有哪些? 程序员:

Java异常真的看这一篇就够了

耗尽温柔 提交于 2020-10-09 15:29:29
前言:本篇博客结合培训班视频编写,希望以最通俗易懂的文字,讲明白异常机制。大部分在介绍概念的时候,我都会用自问自答的方式来描述,原因是这样子更加印象深刻。 动力节点: https://www.bilibili.com/video/BV1Rx411876f?p=629 目录 一、异常概述 二、异常继承结构 三、编译时异常和运行时异常 四、异常的处理 - 1)处理方式一:捕获 - 2)处理方式二:抛出 五、异常类的常用方法 - 1)printStackTrace()方法 - 2)getMessage()方法 六、finally的使用 七、自定义异常 八、注意点总结 一、异常概述 回到目录 1)什么是异常? 通俗地说,就是程序编译或者执行过程中发生了不正常的情况。 2)java提供异常机制有什么用? 当程序执行过程中出现了不正常情况(异常)的时候,java会把异常的信息打印到控制台上,供程序员参考,程序员就能根据异常信息,对程序进行修改,让程序更加健壮。假如没有异常机制,我们的代码错了也不知道,那显然是不行的。 我们先看看以下的代码: public class ExceptionTest02 { public static void main ( String [ ] args ) { int a = 10 ; int b = 0 ; int c = a / b ; System .

开发十年面试过300名程序员,捣鼓出2020年最新版Java面试题大全值得你收藏(文末附参考答案)

人走茶凉 提交于 2020-10-09 15:29:00
前言 本套Java面试题大全总共分为以下这十三个模块: Java基础知识面试题 Java异常面试题 JVM面试题 Spring面试题 Spring MVC面试题 Spring Boot面试题 Spring Cloud面试题 MyBatis面试题 Redis面试题 Dubbo面试题 Tomcat面试题 ZooKeeper面试题 Netty面试题 一、Java基础知识面试题 1、Java概述 何为编程? 什么是Java? jdk1.5之后的三大版本? JVM、JRE和JDK的关系? 什么是跨平台性?原理是什么? Java语言有哪些特点? 什么是字节码?采用字节码的最大好处是什么? 什么是Java程序的主类?应用程序和小程序的主类有何不同? Java应用程序与小程序之间有那些差别? Java和C++的区别? Oracle JDK 和 OpenJDK 的对比? 2、基础语法 ①. 数据类型 Java有哪些数据类型 switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上 用最有效率的方法计算 2 乘以 8 Math.round(11.5) 等于多少?Math.round(-11.5)等于多少 float f=3.4;是否正确 short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗 ②. 编码

五分钟快速了解各种OOM代码样例及解决方法

↘锁芯ラ 提交于 2020-10-09 11:42:02
针对目前大家对OOM的类型不太熟悉,那么来总结一下各种OOM出现的情况以及解决方法。把各种OOM的情况列出来,然后逐一进行代码编写复现和提供解决方法。 1. 堆溢出-java.lang.OutOfMemoryError: Java heap space。 2. 栈溢出-java.lang.OutOfMemorryError。 3. 栈溢出-java.lang.StackOverFlowError。 4. 元信息溢出-java.lang.OutOfMemoryError: Metaspace。 5. 直接内存溢出-java.lang.OutOfMemoryError: Direct buffer memory。 6. GC超限-java.lang.OutOfMemoryError: GC overhead limit exceeded。 0x01: 堆溢出异常,相信大家很常见。即堆内对象不能进行回收了,堆内存持续增大,这样达到了堆内存的最大值,数据满了,所以就出来了。我们直接放溢出的代码样例。需要设置好idea的VM Options: -Xmx100m,这样设置为最大堆内存,这样运行起来就很快就出来错误了。 package oom; import java.util.ArrayList; import java.util.List; import java.util

多线程之volatile关键字

扶醉桌前 提交于 2020-10-09 06:03:52
之前讲解了多线程的synchronized关键字,现在再学习一下volatile关键字。 1 volatile关键字用来做什么? 线程安全包括两个方面:原子性和可见性。Java的同步机制都是围绕这两个方面来确保线程安全的。其中原子性是指多个动作必须依次连续完成,必须保持一致性和完整性,这可以通过synchronized关键字来实现;可见性是指变量在多个线程之间是可见的,即如果其中一个线程改变了变量的值,另一个线程可以看到改变后的值,而不会引起脏读,这就是我们的主角volatile关键字的作用:使变量在多个线程间可见(实际上synchronized也可以间接保证可见性,后面讲解)。 首先看一个不加volatile关键字的栗子 package com.trigl.concurrent.learnvolatile; public class RunThread implements Runnable { private boolean isRunning = true ; public boolean isRunning () { return isRunning; } public void setRunning ( boolean isRunning) { this .isRunning = isRunning; } @Override public void run () {