JDK

阿里面试回来,想和Java程序员谈一谈

佐手、 提交于 2020-11-30 07:31:26
引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来。LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的。 但是,最近问LZ的人实在是太多了,为了避免重复回答,给自己省点力气,干脆就在这里统一回复了。 其实之前LZ写过一篇文章,但是那篇文章更多的是在讨论“面试前该不该刷题”这个话题,而这篇文章将会更加聚焦在面试前如何准备,以及工作当中如何学习这个话题上,而且会尽量写出一些干货。 第一个问题:阿里面试都问什么? 这个是让LZ最头疼的一个问题,也是群里的猿友们问的最多的一个问题。 说实话,LZ只能隐约想起并发、JVM、分布式、TCP/IP协议这些个关键字,具体的问题真的是几乎都没记住。而且就算LZ记住了,也告诉你了,你也背会了,但LZ觉得,在面试中,你被问到一模一样问题的可能性依然很小。 甚至,就算你运气好被问到了,你也照着背下来了,也不一定就能对你的面试起到正面的作用,因为面试官万一多问一句,你可能就露馅了,那还不如干脆点说不会更好。 LZ参加的是阿里的社招面试,而社招不同于校招,问题的范围其实是很随机的。因为能参加一些比较知名的互联网公司社招的人,70%以上都会有个3-5年的经验。这倒不是说一两年经验的同学没有机会进这些公司

阻塞队列

自闭症网瘾萝莉.ら 提交于 2020-11-30 04:04:44
阻塞队列: ArrayBlockingQueue :一个由数组结构组成的有界阻塞队列。 LinkedBlockingQueue :一个由链表结构组成的有界阻塞队列。 LinkedBlockingDeque:一个由链表结构组成的有界双向阻塞队列。 LinkedTransferQueue:一个由链表结构组成的无界阻塞队列。 SynchronousQueue:一个不存储元素的阻塞队列。 PriorityBlockingQueue :一个支持优先级排序的无界阻塞队列。 DelayQueue:一个使用优先级队列实现的无界阻塞队列。 阻塞队列( BlockingQueue )是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法。 1)支持阻塞的插入方法:意思是当队列满时,队列会阻塞插入元素的线程,直到队列不满。 2)支持阻塞的移除方法:意思是在队列为空时,获取元素的线程会等待队列变为非空。 阻塞队列常用于生产者和消费者的场景,生产者是向队列里添加元素的线程,消费者是从队列里取元素的线程。阻塞队列就是生产者用来存放元素、消费者用来获取元素的容器。 下表是阻塞队列的部分方法: 方法\处理方式 抛出异常 返回特殊值 一直阻塞 超时退出 插入方法 add(e) offer(e) put(e) offer(e,time,unit) 移除方法 remove() poll() take()

Java面向对象程序设计第5章1-9

拥有回忆 提交于 2020-11-30 03:32:46
1.面向对象的主要特征是什么? 三大特征是: 封装、继承和多态 。 封装 :是指将某事物的属性和行为包装到对象中,这个对象只对外公布需要公开的属性和行为,而这个公布也是可以有选择性的公布给其它对象。 继承 :是子对象可以继承父对象的属性和行为,亦即父对象拥有的属性和行为,其子对象也就拥有了这些属性和行为。 多态性 :是指允许不同类的对象对同一消息作出响应。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 2.封装是如何实现的? 封装是将对象的信息隐藏在对象内部,禁止外部程序直接访问对象内部的属性和方法。 java封装类通过三个步骤实现: 修改属性的可见性,限制访问。 设置属性的读取方法。 在读取属性的方法中,添加对属性读取的限制。 3.对象之间如何相互作用?作用的条件是什么? 通过封装与组合来设计,具有“ 高内聚,低耦合 ”的特点。比如A类里有B类的引用,则A的实例对象就可以看成B的实例对象组合而成。 4.protected修饰符有何特点? protected这个修饰符,各大参考书都会这样说:访问权限为类内,包内和子类,因此在父类中定义的方法和成员变量如果为protected修饰的,同包中任意访问,只有父类声明为public时不同包的子类也可以访问。 5.Object都有哪些方法? 1.Object clone() 将当前对象克隆 ,保护方法

阿里面试回来,想和Java程序员谈一谈

馋奶兔 提交于 2020-11-30 01:25:10
引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来。LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的。 但是,最近问LZ的人实在是太多了,为了避免重复回答,给自己省点力气,干脆就在这里统一回复了。 其实之前LZ写过一篇文章,但是那篇文章更多的是在讨论“面试前该不该刷题”这个话题,而这篇文章将会更加聚焦在面试前如何准备,以及工作当中如何学习这个话题上,而且会尽量写出一些干货。 第一个问题:阿里面试都问什么? 这个是让LZ最头疼的一个问题,也是群里的猿友们问的最多的一个问题。 说实话,LZ只能隐约想起并发、JVM、分布式、TCP/IP协议这些个关键字,具体的问题真的是几乎都没记住。而且就算LZ记住了,也告诉你了,你也背会了,但LZ觉得,在面试中,你被问到一模一样问题的可能性依然很小。 甚至,就算你运气好被问到了,你也照着背下来了,也不一定就能对你的面试起到正面的作用,因为面试官万一多问一句,你可能就露馅了,那还不如干脆点说不会更好。 LZ参加的是阿里的社招面试,而社招不同于校招,问题的范围其实是很随机的。因为能参加一些比较知名的互联网公司社招的人,70%以上都会有个3-5年的经验。这倒不是说一两年经验的同学没有机会进这些公司

SpringBoot | 第四章:日志配置(转)

人盡茶涼 提交于 2020-11-29 23:48:36
前言 介于平时工作中,对于日志这块没有过多的接触,也就未有过多的了解。故在编写本文时,上官网查看了相关资料,奈何每个字母我都认识,但合起来就有点晕了,英文阅读水平还是有待大大的提高呀。最后觉得还是转载一篇关于日志的文章,不能误人子弟不是~ SpringBoot官网关于日志章节说明(可输入 logging 进查找): https://docs.spring.io/spring-boot/docs/1.5.14.RELEASE/reference/htmlsingle/ 转载声明 :本文系转载,原文地址: http://blog.didispace.com/springbootlog/ Spring Boot在所有内部日志中使用 Commons Logging ,但是默认配置也提供了对常用日志的支持,如: Java Util Logging , Log4J , Log4J2 和 Logback 。每种Logger都可以通过配置使用控制台或者文件输出日志内容。 格式化日志 控制台输出 多彩输出 文件输出 级别控制 自定义日志配置 自定义输出格式 格式化日志 默认的日志输出如下: 2016-04-13 08:23:50.120 INFO 37397 --- [ main] org.hibernate.Version : HHH000412: Hibernate Core {4.3.11

01-JVM内存模型:程序计数器

余生长醉 提交于 2020-11-29 23:10:55
一、JVM模型概述   java虚拟机(JVM)在java程序运行的过程中,会将它所管理的内存划分为若干个不同的数据区域,这些区域有的随着JVM的启动而创建,有的随着用户线程的启动和结束而建立和销毁。一个基本的JVM运行时内存模型如下所示:   上图展示的是“JAVA SE7”的JVM虚拟机规范。注意,虚拟机规范并不是一成不变的,Oracle在发布新的JAVA版本时,可能会对JVM做一定的优化和改进,例如在JDK8的版本中,方法区被移除,取而代之的是metaspace(元数据空间)。   在本章及下面的章节中,将以JDK7的标准作为例子,对JVM的运行时数据区进行讲解。 二、程序计数器(Program Counter Register) 2.1)什么是程序计数器   程序计数器是一个记录着当前线程所执行的字节码的行号指示器。   JAVA代码编译后的字节码在未经过JIT(实时编译器)编译前,其执行方式是通过“字节码解释器”进行解释执行。简单的工作原理为解释器读取装载入内存的字节码,按照顺序读取字节码指令。读取一个指令后,将该指令“翻译”成固定的操作,并根据这些操作进行分支、循环、跳转等流程。   从上面的描述中,可能会产生程序计数器是否是多余的疑问。因为沿着指令的顺序执行下去,即使是分支跳转这样的流程,跳转到指定的指令处按顺序继续执行是完全能够保证程序的执行顺序的

Java学习day4 程序流程控制一

醉酒当歌 提交于 2020-11-29 03:49:16
一、分支结构     条件语句:if...else     if语句:         一个 if 语句包含一个布尔表达式和一条或多条语句,如果布尔表达式的值为 true,则执行 if 语句中的代码块,否则执行 if 语句块后面的代码。     语法:       if (布尔表达式)     {      // 如果布尔表达式为true将执行的语句     }     if...else语句:         if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。     语法:     if (布尔表达式){      // 如果布尔表达式的值为true     } else {      // 如果布尔表达式的值为false     }          if 语句后面可以跟 else if…else 语句,这种语句可以检测到多种可能的情况。     语法:      if (布尔表达式1){     执行代码块;//如果布尔表达式1的值为true执行代码     } else if (布尔表达式2){     执行代码块;//如果布尔表达式2的值为true执行代码     } ... ... else { 执行代码块;//如果以上布尔表达式都不为true执行代码 }     使用 if,else if,else

tomcat集群搭建集成nginx负载均衡

假如想象 提交于 2020-11-29 01:52:07
软件基础+版本:   1、3台centos7系统,其中都已经配置完成了jdk环境,jdk的版本为 [root@node03 bin]# java - version java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8 .0_144- b01) Java HotSpot(TM) 64 -Bit Server VM (build 25.144 -b01, mixed mode) 具体的linux的jdk配置方式可见其他文章   2、解压版的linux的tomcat,版本如下: [root@node02 soft]# ll 总用量 191220 -rw-r--r-- 1 root root 10291220 11月 26 15:44 apache-tomcat-8.5.49.tar.gz   3、 [root@node02 soft]# ll 总用量 182060 drwxr -xr-x. 8 10 143 255 7月 22 2017 jdk1. 8 .0_144 -rw-r--r--. 1 root root 185515842 9月 4 17 : 09 jdk-8u144-linux- x64.tar.gz drwxr -xr-x 9 nginx nginx 186 11月 26 16 : 58

Java核心——集合

夙愿已清 提交于 2020-11-29 00:44:19
参考 https://blog.csdn.net/stanwuc/article/details/81509083 https://www.cnblogs.com/javabg/p/7258550.html https://blog.csdn.net/yinbingqiu/article/details/60965080 https://www.imooc.com/article/71730?block_id=tuijian_wz //源码解析 https://blog.csdn.net/xuefeng0707/article/details/40797085 //扩容死锁 Java集合家族图解 https://img-blog.csdn.net/20160124221843905 整体特征 接口 子接口 是否有序 是否允许元素重复 Set 无序不可重复 AbstractSet 否 否    HashSet(基于HashMap) 否 否    TreeSet 是(用二叉排序树) 否 List   无序可重复 ArrayList 有 是        LinkedList 有 是        Vector 有 是 Map AbstractMap 否 使用key-value来映射和存储数据,key必须唯一,value可以重复    HashMap 否    TreeMap 是

Mybatis常见面试题

旧城冷巷雨未停 提交于 2020-11-28 06:25:36
#{}和${}的区别是什么? 在Mybatis中,有两种占位符 #{} 解析传递进来的参数数据 ${}对传递进来的参数 原样 拼接在SQL中 #{} 是预编译处理,${}是字符串替换 。 使用#{}可以有效的防止SQL注入,提高系统安全性。 当实体类中的属性名和表中的字段名不一样 ,怎么办 ? 当实体类中的属性名和表中的字段名不一样 ,怎么办 ? 第1种: 通过在查询的sql语句中 定义字段名的别名,让字段名的别名和实体类的属性名一致 < select id= ”selectorder” parametertype= ”int” resultetype= ”me.gacl.domain.order”> select order_id id, order_no orderno ,order_price price form orders where order_id=#{id}; </ select> 第2种: 通过来映射字段名和实体类属性名的一一对应的关系 < select id= "getOrder" parameterType= "int" resultMap= "orderresultmap"> select * from orders where order_id=#{id} </ select> < resultMap type= ”me.gacl.domain