java 面试
天地不仁以万物为刍狗
天之道,损有余而补不足
人之道,损不足以奉有馀
展开
-
Java面试 - mybatis,hibernate比较
Mybatis优势Hibernate只需要提供pojo和映射关系即可MyBatis可以进行更为细致的SQL优化,可以减少查询字段。MyBatis容易掌握,而Hibernate门槛较高。Hibernate优势 半自动的框架Mybatis需要提供的映射文件包含了一下三个部分:sql,映射规则,pojo POJO(Plain Ordinary Java Object...原创 2018-12-19 18:46:28 · 185 阅读 · 0 评论 -
java - JAVA自定义注释
定义Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在 java.lang.annotation 包中。1、元注解元注解是指注解的注解。包括 @Retention @Target @Document @Inherited四种。1.1、@Retention: 定义...转载 2019-03-01 10:39:05 · 252 阅读 · 0 评论 -
面试 - Iass Pass SasS三种云服务区别
针对点不同:Iass(基础设施)、Pass(平台)、Sass(软件)IaaS:Infrastructure-as-a-Service(基础设施即服务)第一层叫做IaaS举例:几年前如果你想在办公室或者公司的网站上运行一些企业应用,你需要去买服务器,或者别的高昂的硬件来控制本地应用,才能让你的业务正常运行。但现在可以租用IaaS公司提供的场外服务器,存储和网络硬件。这样一来,便大...转载 2019-02-14 17:46:53 · 2119 阅读 · 0 评论 -
JVM - dump,常用启动参数,垃圾回收参数
java获取内存dump的几种方式1、获取内存详情:jmap -dump:format=b,file=e.bin pid这种方式可以用 jvisualvm.exe 进行内存分析,或者采用 Eclipse Memory Analysis Tools (MAT)这个工具2. 获取内存dump: jmap -histo:live pid这种方式会先出发fullgc,所有如果不希望触发f...原创 2019-02-20 16:49:28 · 3484 阅读 · 0 评论 -
经验 - github中的watch、star、fork、following的作用
fork:将【开源项目】拷贝一份到自己的账号下 fork就相当于在原本的项目分支上建立一个分支,这个分支属于你自己,你也可以任意修改。如果想将你修改后的代码整合到原有的项目中,需要做pull request操作,当然这得经过作者同意。star:给【项目】点赞watch:收听【开源项目】的动态follow:关注【作者】的动态总结:star 的作用是收藏,目的是方...转载 2019-02-26 10:05:35 · 1978 阅读 · 0 评论 -
经验 - Hadoop中 FileOutputCommitter 与 FileSystem 的关系
关系FileSystem :是文件系统FileOutputCommitter :是文件输出的规则文件写用FileSystem ,但怎么写,写到哪里等这些规则,是FileOutputCommitter决定的扩展性根据 hadoop 的扩展性,可以扩展hdfs文件系统,AWS 的S3文件系统, Openstack的swift文件系统所以也可以扩展相应的outputCommitt...原创 2019-03-05 12:35:04 · 680 阅读 · 0 评论 -
java面试 - 仓库的优先级顺序
在maven中,仓库可以分为:本地仓库、远程仓库。 远程仓库可以分为:中央仓库、私服仓库。 中央仓库是maven官方指定的仓库,可以理解为“寻找的最后一站”。 私服仓库可以是自己建的,也可以是其它主体建的(比如aliyun的maven仓库,jboss的maven仓库等)。 私服可以分为:全局应用的私服仓库、应用到项目自身的私服仓库。maven寻找得顺序大致可以理解为: 1,在本地仓库...原创 2019-02-21 10:52:04 · 206 阅读 · 0 评论 -
面试 - Telnet ,SSH , Telnet/SSL , Rlogin , Serial , TAPI , RAW
ssh与telnet区别ssh与telnet较为类似,都是远程登录工具。ssh分为两部分:服务器端和客户端服务器端是一个守护进程,用于处理客户端的连接请求,一般为sshd客户端包括ssh程序以及scp,slogin,sftp等其他应用程序他们之间最大的不同是ssh对传输加密,安全性高,telnet使用明文传输,较为不安全。一、Telnet 采用Telnet...转载 2019-02-21 12:18:05 · 1725 阅读 · 0 评论 -
Java面试 - fail-fast(快速失败)机制
简介fail-fast 机制,即快速失败机制,是java集合(Collection)中的一种错误检测机制。当在迭代集合的过程中该集合在结构上发生改变的时候,就有可能会发生fail-fast,即抛出ConcurrentModificationException异常。fail-fast机制并不保证在不同步的修改下一定会抛出异常,它只是尽最大努力去抛出,所以这种机制一般仅用于检测bug。fail-...转载 2019-03-12 11:02:18 · 209 阅读 · 0 评论 -
Java IO流
"流"概念实际上就是指字节数据(bytes data)从源对象对按顺序流向目标对象的一种流动形式。按照流处理数据的单位来分,流可以分为:字节流、字符流从物理层面来看,流中数据都是二进制比特流。而计算机中储存信息的基本单位是字节(Byte)。因此,可以认为计算机中信息传输在底层是靠字节流来实现的。字符流只是通过不同的字符编码方式,对字节流的封装,即字符流的实现还是得依靠字节流。 综...转载 2019-03-20 16:06:06 · 98 阅读 · 0 评论 -
java - JDBC详解
一、相关概念1.什么是JDBC JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。2.数据库驱动 我们安装好数据库之后,我们的应...转载 2019-04-03 17:09:36 · 194 阅读 · 0 评论 -
Array 包名为什么是java.lang.reflect.Array, Array的作用?
java.lang.reflect.Array类提供静态方法来动态创建和访问Java数组。Array允许在get或set操作期间扩展转换,但如果发生缩小转换,则会抛出IllegalArgumentException异常。此类提供了创建和操作数组的一系列静态(static)本地(native)方法。这些功能即使不通过此类,也可以实现,比如创建数组。Object arr = Arra...原创 2019-04-18 10:17:04 · 1830 阅读 · 0 评论 -
什么是JMX
所谓JMX,是Java Management Extensions(Java管理扩展)的缩写,是一个为应用程序植入管理功能的框架。用户可以在任何Java应用程序中使用这些代理和服务实现管理。一、JMX架构图从图中我们可以看到,JMX的结构一共分为三层:1、 基础层:主要是Mbean,被管理的java beanMbean分为如下四中类型 描述 standard MBea...转载 2019-07-25 14:10:03 · 306 阅读 · 0 评论 -
面试 - 反射中Class.forName()和ClassLoader.loadClass()的区别 ,判断一个类是否已经被加载
ClassLoader关键在于加载 -> 链接(验证+准备+解析) -> 初始化(使用前的准备) -> 使用 -> 卸载 可以只加载,不链接ClassLoader.loadClass(className)ClassLoader.loadClass(className,false)也可以加载,并链接Class.forName(classNa...原创 2019-02-19 13:14:12 · 2500 阅读 · 1 评论 -
面试 - kafka中partition和消费者对应关系
简洁易懂的总结需要Mark1个partition只能被同组的一个consumer消费,同组的consumer则起到均衡效果消费者多于partitiontopic: test 只有一个partition创建一个topic——test,bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-fa...转载 2019-02-19 12:25:04 · 338 阅读 · 0 评论 -
java面试 - maven dependency中provided和compile的区别
对于scope=compile的情况(默认scope),也就是说这个项目在编译,测试,运行阶段都需要这个artifact对应的jar包在classpath中。而对于scope=provided的情况,则可以认为这个provided是目标容器已经provide这个artifact。 这么说可能不是很好理解:换个简单的,就是你在把这个项目打成war包时,scope=provided的...原创 2019-02-13 17:14:21 · 2629 阅读 · 0 评论 -
学习总结 - java 泛型擦除问题
java泛型擦除Java的泛型是伪泛型。在编译期间,所有的泛型信息都会被擦除掉。正确理解泛型概念的首要前提是理解类型擦出(type erasure)Java中的泛型基本上都是在编译器这个层次来实现的。在生成的Java字节码中是不包含泛型中的类型信息的。使用泛型的时候加上的类型参数,会在编译器在编译的时候去掉。这个过程就称为类型擦除。如在代码中定义的List<object>...原创 2019-01-31 13:49:47 · 244 阅读 · 0 评论 -
学习总结 - Java 字节码操作类库
常见的字节码操作类库1.BCELByte Code Engineering Library(BCEL),这是Apache Software Foundation的Jakarta项目的一部分。BCEL是Java classworking 广泛使用的一种框架,它可以让您深入jvm汇编语言进行类库操作的细节。BCEL与javassist有不同的处理字节码方法,BCEL在实际的jvm指令层次上...原创 2019-01-31 13:52:38 · 539 阅读 · 0 评论 -
四张图带你了解Tomcat系统架构
俗话说,站在巨人的肩膀上看世界,一般学习的时候也是先总览一下整体,然后逐个部分个个击破,最后形成思路,了解具体细节,Tomcat的结构很复杂,但是 Tomcat 非常的模块化,找到了 Tomcat最核心的模块,问题才可以游刃而解,了解了Tomcat的整体架构对以后深入了解Tomcat来说至关重要!一、Tomcat顶层架构先上一张Tomcat的顶层结构图(图A),如下:Tomcat中...转载 2019-01-21 23:27:27 · 76 阅读 · 0 评论 -
学习笔记 - 注解 @SuppressWarnings
上述注解是jse提供的注解。作用是屏蔽一些无关紧要的警告。使开发者能看到一些他们真正关心的警告。从而提高开发者的效率关键字 用途 解释 all to suppress all warnings 抑制所有警告 boxing to suppress warnings relative to boxing/unboxing operations 抑制装箱...转载 2019-01-31 18:29:48 · 105 阅读 · 0 评论 -
java面试 - 反射机制
是什么 Java Reflaction in Action有这么一句话,可以解释。反射是运行中的程序检查自己和软件运行环境的能力,它可以根据它发现的进行改变。通俗的讲就是反射可以在运行时根据指定的类名获得类的信息。反射是:指程序可以访问、检测和修改它本身状态或行为的一种能力反射的好处是:可以在运行时确认对象以及方法。为什么 我们为什么要使用反射,它的作用是什么,它在...原创 2019-01-22 18:35:27 · 128 阅读 · 0 评论 -
面试 - HDFS一些概念的理解
1.HDFS数据存放策略:分块存储+副本存放。2.数据拓扑结构(即数据备份):默认存放3份,可以通过修改配置文件hdfs-site.xml修改备份数量,如果本机在集群中,第一份就会存放到本节点即本机上,如果不在集群中,就通过负载均衡存放到一个相应的随机节点上,第二份存放在同机柜的不同节点上,第三份存放在不同机柜的某个节点上。3.数据查找:就近原则,现在本节点上查找,再从本机柜上查找,最后再...转载 2019-02-14 17:44:06 · 294 阅读 · 0 评论 -
java 面试 - 内存溢出,内存泄露 , GC的基本概念
内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。其实说白了就是该内存空间使用完毕...原创 2019-01-29 19:18:25 · 495 阅读 · 0 评论 -
JVM - Java8内存模型—永久代(PermGen)和元空间(Metaspace)
Metaspace(元空间)JDK1.7中,存储在永久代的部分数据就已经转移到了Java Heap或者是 Native Heap。但永久代仍存在于JDK1.7中,并没完全移除,譬如符号引用(Symbols)转移到了native heap;字面量(interned strings)转移到了java heap;类的静态变量(class statics)转移到了java heap。我们可以通过一段程...原创 2019-01-29 19:38:06 · 429 阅读 · 0 评论 -
java面试 : JAVA中 常量的储存位置
常量池:存放字符串常量和基本类型常量(public static final)常量池:JVM为每个已加载的类型维护一个常量池,常量池就是这个类型用到的常量的一个有序集合。包括直接常量(基本类型,String)和对其他类型、方法、字段的符号引用。池中的数据和数组一样通过索引访问。由于常量池包含了一个类型所有的对其他类型、方法、字段的符号引用,所以常量池在Java的动态链接中起了核心作用。常量池存...原创 2019-01-29 19:52:57 · 13337 阅读 · 27 评论 -
经验Mark - 遇到的问题的Mark
问题1 :Caused by: java.lang.LinkageError: loader (instance of org/apache/catalina/loader/WebappClassLoader): attempted duplicate class definition for name: "ru/testScandJavaCafee/controller/Helper2"...原创 2019-02-21 19:18:16 · 620 阅读 · 0 评论 -
Java 面试 - 在java中如何判断一个类是否存在
Apache Commons-Logging 中的解决方案:public class LogSource { // ------------------------------------------------------- Class Attributes static protected Hashtable logs = new Hashtable(); ...转载 2019-02-18 17:43:06 · 5498 阅读 · 0 评论 -
Java加载数据库连接驱动 Class.forName 作用
JDBC提供的DriverManager类用于跟踪所有可用的JDBC驱动,并在用户需要时选择合适的驱动提供给用户 但是其跟踪不是自动的,必须由可用的JDBC驱动的Driver类自己在DriverManager上进行注册 但是这个注册过程一般是由Driver类加载的时候自动完成的 Class.forName("org.postgresql.driver");这句就是为...转载 2019-07-29 14:16:12 · 357 阅读 · 0 评论