![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java面试
PreciousLife
莫忘少年凌云志,曾许java第一流0_o
展开
-
Java集合类型的默认容量以及扩容机制
List相关的默认容量以及扩容机制ArrayListArrayList默认容量是10 ArrayList最大容量Integer.MAX_VALUE - 8 ArrayList扩容机制,按原数组长度的1.5倍扩容。如果扩容后的大小小于实际需要的大小,将数组扩大到实际需要的大小VectorVector是线程安全版的ArrayList内部实现都是用数组实现的。Vector通过在方法前用...转载 2018-07-31 10:08:20 · 719 阅读 · 0 评论 -
applicationContext
ApplicationContext ApplicationContext接口使BeanFactory的子接口,代表一个应用的上下文环境。 ApplicationContext扩展了很多使用的功能,如 Bean的生命周期管理 框架事件体系 国际化支持等 同时,ApplicationContext接口还通过继承其他接口扩展了BeanFactory的功...转载 2018-09-07 14:24:56 · 143 阅读 · 0 评论 -
JAVA命名规范
一、命名规范1、 项目名全部小写2、 包名全部小写3、 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写。如:public class MyFirstClass{}4、 变量名、方法名首字母小写,如果名称由多个单词组成,每个单词的首字母都要大写。如:int index=0; public void toString(){}5、 常量名全部...原创 2018-09-02 11:42:11 · 131 阅读 · 0 评论 -
海量数据处理--桶排序
前面的排序都是比较常规的排序,但下面这个排序也许就不是那么常规了,它就是桶排序。 算法概述/思路桶排序的思想近乎彻底的分治思想。假设现在需要对一亿个数进行排序。我们可以将其等长地分到10000个虚拟的“桶”里面,这样,平均每个桶只有10000个数。如果每个桶都有序了,则只需要依次输出为有序序列即可。具体思路是这样的:1.将待排数据按一个映射函数f(x)分为连续的若干段。理论上最佳的...转载 2018-08-19 17:45:42 · 1052 阅读 · 0 评论 -
CountDownLatch、CyclicBarrier和 Semaphore
在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。从下面的例子中可以看到,其实CountDownLatch和CylicBarrier这两个类都有等待其他进程的意思,只是CountDownLatch在主线程里面阻塞的,在子线程里面coundown操作完之...转载 2018-08-17 10:00:28 · 160 阅读 · 0 评论 -
Spring框架IOC容器和AOP解析
spring的基本框架主要包含六大模块:DAO、ORM、AOP、JEE、WEB、CORESpring DAO:Spring提供了对JDBC的操作支持:JdbcTemplate模板工具类 。Spring ORM:Spring可以与ORM框架整合。例如Spring整合Hibernate框架,其中Spring还提供HibernateDaoSupport工具类,简化了Hibernate的...转载 2018-08-16 14:25:22 · 169 阅读 · 0 评论 -
关于面向对象的六大原则,自己的一些总结
1.开闭原则(开闭原则OCP)对扩展开放,对修改关闭。 就像实现一个计算器一样,实现了简单的加减乘除之后,如果要加一些其他的运算,比如开根,比如求次方运算,这时候就不能对原来的代码进行修改,我们可以写一个基类Opreation,自带getCalValue(int opeA,int opeB)方法,所有加减乘除等操作都是这个类派生出来的操作类AddOperation,SubOpe...原创 2018-08-13 23:53:03 · 133 阅读 · 0 评论 -
java中的锁
https://blog.csdn.net/zqz_zqz/article/details/70233767之前做过一个测试,详情见这篇文章《多线程 +1操作的几种实现方式,及效率对比》,当时对这个测试结果很疑惑,反复执行过多次,发现结果是一样的:1. 单线程下synchronized效率最高(当时感觉它的效率应该是最差才对);2. AtomicInteger效率最不稳定,不同并发情况下表...转载 2018-08-12 16:43:45 · 129 阅读 · 0 评论 -
多线程面试问题
1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓"知其然知其所以然","会用"只是"知其然","为什么用"才是"知其所以然",只有达到"知其然知其所以然"的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问题的看法:(1)发挥多核CPU的优势随着工业的进步,现在的笔记本、台式机乃至商用的转载 2018-08-10 16:43:12 · 177 阅读 · 0 评论 -
hashmap为啥会发生碰撞?
拉链法解决冲突的做法是:将所有关键字为同义词的结点链接在同一个单链表中。若选定的散列表长度为m,则可将散列表定义为一个由m个头指针组成的指针数组t[0..m-1]。凡是散列地址为i的结点,均插入到以t为头指针的单链表中。t中各分量的初值均应为空指针。在拉链法中,装填因子α可以大于1,但一般均取α≤1。换句话说:HashCode是使用Key通过Hash函数计算出来的,由于不同的Key,通过此Ha...原创 2018-08-09 16:12:56 · 2112 阅读 · 0 评论 -
从递归函数中看值传递和引用传递
很多博客中已经说得很清楚:值传递只是值操作,对原来的数据没有影响,操作的对象一般是基本数据类型引用传递则是对原来数据的真实操作,操作对象一般是类,接口,数组这种很常见的包装类型。从一个题来看吧,leetcode上面的电话号码组合17题,在函数中加了可以看到数组变化的输出,可以看到,这种数组类型,在递归函数中确实是一直在变化的,在for循环中,上个循环的递归数组结果被带到了本次循环的递归...原创 2018-07-31 20:28:51 · 1889 阅读 · 0 评论 -
常用JAVA设计模式--装饰者模式
要实现装饰者模式,注意一下几点内容:1.装饰者类要实现真实类同样的接口2.装饰者类内有一个真实对象的引用(可以通过装饰者类的构造器传入)3.装饰类对象在主类中接受请求,将请求发送给真实的对象(相当于已经将引用传递到了装饰类的真实对象)4.装饰者可以在传入真实对象后,增加一些附加功能(因为装饰对象和真实对象都有同样的方法,装饰对象可以添加一定操作在调用真实对象的方法,或者先调用真实对...转载 2019-05-03 00:30:21 · 208 阅读 · 0 评论 -
正向代理和反向代理的区别图示
正向代理与反向代理【总结】原文地址:https://www.cnblogs.com/Anker/p/6056540.html1、前言 最近工作中用到反向代理,发现网络代理的玩法还真不少,网络背后有很多需要去学习。而在此之前仅仅使用了过代理软件,曾经为了访问google,使用了代理软件,需要在浏览器中配置代理的地址。我只知道有代理这个概念,并不清楚代理还有正向和反向之分,于是赶紧学习一...转载 2018-09-15 14:58:38 · 2219 阅读 · 0 评论 -
BIO、NIO和AIO的区别、具体实现
一:理解同步:同步就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回,但是一旦调用返回,就得到返回值了。简单的为:就是由*调用者*主动等待这个*调用*的结果。二:异步:*调用*在发出之后,这个调用就直接返回了,所以没有返回结果;换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在*调用*发出后,*被调用者*通过状态、通知来通知调用者,或通过回调函数处理这个调用。...转载 2018-09-25 17:08:43 · 408 阅读 · 0 评论 -
java面试中的各种排序
插入排序 public static void main(String[] args) { // TODO Auto-generated method stub int[] nums={2,5,3,2,1}; insertSort(nums); for(int tmp:nums){ System.out.println(tmp); } } //稳定的排序 p...原创 2018-07-31 15:57:05 · 419 阅读 · 0 评论 -
类加载的过程 java
一、加载 1.通过一个类的全限定名来获取定义此类的二进制字节流。 2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 3.在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。二、验证 1.文件格式验证 验证字节流是否符合Class文件格式...原创 2018-08-09 16:12:27 · 127 阅读 · 0 评论 -
JAVA 垃圾收集算法,回收机制,垃圾收集器(多博文整理版!!!!!!)
原文地址:https://www.cnblogs.com/1024Community/p/honery.html#341-%E5%B9%B4%E8%BD%BB%E4%BB%A3young-generation%E7%9A%84%E5%9B%9E%E6%94%B6%E7%AE%97%E6%B3%95https://blog.csdn.net/yhyr_ycy/article/details...转载 2018-08-10 14:50:19 · 286 阅读 · 0 评论 -
Java中可以作为GC Root的对象有哪些
GC管理的主要区域是Java堆,一般情况下只针对堆进行垃圾回收。方法区、栈和本地方法区不被GC所管理,因而选择这些区域内的对象作为GC roots,被GC roots引用的对象不被GC回收。下面,尚学堂陈老师为大家详细介绍GC Root的相关知识。 GC Root: 常说的GC(Garbage Collector) roots,特指的是垃圾收集器(Garbage Collector)的对象,GC会...原创 2018-09-02 23:08:41 · 1263 阅读 · 0 评论 -
Mybatis常见面试问题(附答案)
ResultMap和ResultType的差别、ParameterMap和parameterType的差别ResultMap和ResultType: 两者都是表示查询结果集与java对象之间的一种关系,处理查询结果集,映射到java对象。 resultMap:表示将查询结果集中的列一一映射到bean对象的各个属性。ResultMap的使用: 映射的查询结果集中的列标签可以根据需要灵活...原创 2018-09-05 11:05:51 · 32344 阅读 · 3 评论 -
mysql日志类型以及作用
一、日志的分类1、错误日志:记录了mysql服务的启动,关闭和运行时发生的错误;2、通用查询日志:记录用户的所有操作,包括启动、关闭服务,插入、查询等语句;3、二进制日志:以二进制的形式记录了数据库中的操作,但不记录查询语句;4、慢日志:记录了mysql 所有查询超时的语句 二、日志设置1、除了二进制日志,其他都是文本文件2、日志文件通常存储在Mysql数据目录下3、...原创 2018-09-05 11:38:15 · 590 阅读 · 0 评论 -
高级程序员(JAVA)面试必知必会(问题+答案)
高级程序员(JAVA)面试必知必会(问题+答案)----二https://blog.csdn.net/q957967519/article/details/824919571、常用设计模式 单例模式:懒汉式、饿汉式、双重校验锁、静态加载,内部类加载、枚举类加载。保证一个类仅有一个实例,并提供一个访问它的全局访问点。 代理模式:动态代理和静态代理,什么时候使用动态代理。 h...原创 2018-09-06 11:17:03 · 17134 阅读 · 0 评论 -
高级程序员(JAVA)必知必会二(问题+答案)
1.业务介绍,场景描述,负责模块2.数据库隔离级别,分别会避免什么样的错误,默认隔离级别。read_uncommited,read_commited,repeatable_read,serializable_read,脏读,可重复读,幻读3.IOC的原理对象实例化的工作从开发者转移到容器。applicationContext常用接口哪些,都有什么作用。MessageSour...原创 2018-09-07 14:35:49 · 4358 阅读 · 0 评论 -
java内存报错error及相关解决办法
Java代码导致OutOfMemoryError错误的解决:需要重点排查以下几点:检查代码中是否有死循环或递归调用。 检查是否有大循环重复产生新对象实体。 检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于...原创 2018-09-13 14:12:19 · 543 阅读 · 0 评论 -
MAVEN的生命周期
我们在开发项目的时候,不断地在编译、测试、打包、部署等过程,maven的生命周期就是对所有构建过程抽象与统一,生命周期包含项目的清理、初始化、编译、测试、打包、集成测试、验证、部署、站点生成等几乎所有的过程。Maven有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,初学者容易将Maven的生命周期看成一个整体,其实不然。这三套生命周期分别是:• CleanLif...转载 2018-09-13 17:31:27 · 489 阅读 · 0 评论 -
论性能优化措施(JAVA)
一 前端性能优化1.页面的HTTP请求数量2.使用CDN网络3.是否使用压缩,对于前段样式文件与脚本文件,可将其中空格、注释等不必要的字符去掉,并且通过使用gzip压缩来减少网络上传输的字节数。二 java程序优化1.使用单例,如饿汉2.future编程3.线程池。明明是多核CPU,但程序中却是用单线程串行操作,这种情况下可以将原来的串行操作改成多线程并发,以提高执行效...原创 2018-09-23 17:12:27 · 234 阅读 · 0 评论 -
拦截器、过滤器、Aspect区别?看这一篇就够了!
通俗易懂的解释:过滤器:像滤网一样,肯定是用来过滤东西的,比如,三个请求只放行两个。拦截器:拦而不截,都可以过,但是要过去的东西做点操作,比如,三个请求都放行。具体区别: 过滤器 拦截器 Aspect 关注的点 所有web请求 部分web请求 偏向于业务层面的拦截 实现原理 函数回调 JAVA反射机制(动态代理) 动态...原创 2019-06-12 17:10:51 · 3321 阅读 · 0 评论