
面试
文章平均质量分 90
你嘎哈呢
这个作者很懒,什么都没留下…
展开
-
设计模式---单利设计模式
懒汉式单例//懒汉式单例:一次调用初始化,避免内存浪费,必须枷锁才能保持单例 private static Single single; private Single(){}; public static synchronized Single getInstance() { if (single == null) { ...原创 2019-03-11 17:35:00 · 174 阅读 · 0 评论 -
面试---mybatis框架知识点
一:是什么myabtis是一个支持普通sql查询,存储过程和高级优秀映射的优秀持久城框架,去除了所有jdbc代码和参数的手工设置以及对结果集的检索封装。mybatis可以使用xml或者注解进行配制和原始映射。其主要思想是将程序中的大量的sql语句剥离出来,将sql代码与语句分离,可以不修改代码,直接在配置文件修改sql。二与hibernate的区别Hibernate是一个开放源代码...原创 2018-12-14 15:49:50 · 240 阅读 · 0 评论 -
面试--集合(四)并发集合框架阻塞队列与非阻塞队列
java语的框架父类接口是Iterable,从这个接口向下一一进行继承。一:集合架构的简介1:接口Iterable主要用于迭代循环,仅有一个iterator()方法,通过返回Iterable对象,进行循环处理。2:接口Collection提供了集合框架最主要,最常用的操作,接口内部提供的主要方法是针对数据的怎删改查操作。3:接口list接口list对Collection...原创 2018-12-06 18:23:48 · 335 阅读 · 0 评论 -
一点一点看源码(1)未完
一:Collection体系概览容器的存储,数据的获取,数据添加,数据遍历,数据搜索,其他(判空,替换,排序,溢出,并发,同步,拆分,汇聚) @see Set @see List @see Map @see SortedSet @see SortedMap @see HashSet @see TreeSet...原创 2018-12-08 23:14:47 · 145 阅读 · 0 评论 -
一点一点看源码(0)
https://www.cnblogs.com/liuyuhangCastle/p/9580732.htmlhttps://blog.youkuaiyun.com/qq_21033663/article/details/79571506 阅读顺序为什么看源码?网上一个贴子写的很有道理:如果java的基础语法已经学习完了,能够写一些简单的代码了 如果每天学习4小时以上,已经连续学习超过一个月了 ...原创 2018-11-23 14:56:58 · 160 阅读 · 0 评论 -
面试---计网(二)
http请求和响应报文: 请求:请求行,请求头,请求数,空行。 响应:响应行,响应头,响应体。请求行包含的方法:get:获取资源 head:获取报文首部,不返回报文实体主体部分。主要用于确认 URL 的有效性以及资源更新的日期时间等 post:传输...原创 2018-10-10 17:41:44 · 243 阅读 · 0 评论 -
面试------mybatis 缓存:
https://tech.meituan.com/mybatis_cache.htmlmybatis 缓存:查询数据时将查询结果存放到内存(缓存区)中。 每次查询数据时,先判断缓存区中是否存在数据, 如果存在,就从缓存区中获取数据 如果不存在,就从数据库中获取数据,将数据存放到缓存区中,给下次访问使用 好处: 避免频繁与数据库交互,提高数据访问效率。提升系统性能。...原创 2018-09-26 17:42:12 · 1182 阅读 · 0 评论 -
面试----JDBC
目录 1:Statement,PrepareStatement,和CallableStatement。2:jdbc操作数据库1:Statement,PrepareStatement,和CallableStatement。 Statement执行不带参数的简单sql语句,并返回它所生产的结果的对象。每次执行SQl时候都要编译SQl语句。PrepareStatement表示...原创 2018-09-26 16:23:20 · 254 阅读 · 0 评论 -
面试JVM(五) 指令重排 Happen-Before规则
1:程序顺序原则:一个线程内保证语义的串行性2:volatile规则:volatile变量的写,必先发生于读3:锁规定:一个unLock操作先行发生于后面对同一个锁的lock操作4:传递性:如果操作A先行发生于操作B,而操作B又先行发生于操作C,则可以得出操作A先行发生于操作C5:线程的启动:线程的start()方法先于它的每一个动作6:线程的终结:线程的所有操作先于线程的终结...原创 2018-09-11 20:54:06 · 492 阅读 · 0 评论 -
面试 ---集合(三)ConcurrentHashMap原理分析
https://my.oschina.net/hosee/blog/639352https://blog.youkuaiyun.com/u011328417/article/details/79284730http://www.importnew.com/28263.htmlhttp://www.importnew.com/22007.htmlHashTable是一个线程安全的类,它使用syn...原创 2018-07-27 13:03:50 · 1221 阅读 · 0 评论 -
面试--java基础 String关键字
String 被声明为 final,因此它不可被继承。内部使用 char 数组存储数据,该数组被声明为 final,这意味着 value 数组初始化之后就不能再引用其它数组。并且 String 内部没有改变 value 数组的方法,因此可以保证 String 不可变。public final class String implements java.io.Serializable...原创 2018-07-22 14:40:55 · 277 阅读 · 0 评论 -
面试------synchronized方法与代码块区别
同步方法直接在方法上加synchronized实现加锁,同步代码块则在方法内部加锁,很明显,同步方法锁的范围比较大,而同步代码块范围要小点,一般同步的范围越大,性能就越差,一般需要加锁进行同步的时候,肯定是范围越小越好,这样性能更好。synchronized methods(){} 与synchronized(this){}之间没有什么区别,只是 synchronized methods(){} ...转载 2018-07-15 16:39:58 · 1917 阅读 · 0 评论 -
面试--线程(二)线程池
线程池类型,创建,核心参数,配置,阻塞队列的不同类型https://www.jianshu.com/p/210eab345423点击打开链接http://ifeve.com/java-threadpool/点击打开链接https://blog.youkuaiyun.com/mayongzhan_csdn/article/details/80790966点击打开链接讲的特别好一什么是线程池?...原创 2018-07-07 21:36:05 · 221 阅读 · 0 评论 -
面试JVM(六)OOM
OutOfMemoryError异常:目录1:java堆溢出2:虚拟机栈和本地方法栈溢出3:方法区和运行时常量池溢出4:本地直接内存溢出1:java堆溢出要同时满足两个条件:堆大小固定,不可扩展 不断创建对象,并保持对象存活不被回收深入理解java虚拟机原文:Java堆用于存储对象实例,只要不断地创建对象,并且保证GC Roots到对象之间有可达路径来避免垃...原创 2018-12-17 16:32:00 · 269 阅读 · 0 评论 -
面试------String 类和常量池
String 类和常量池1 String 对象的两种创建方式: String str1 = "abcd"; String str2 = new String("abcd"); System.out.println(str1==str2);//false这两种不同的创建方法是有差别的,第一种方式是在常量池中拿对象,第二种方式是直接在堆内存空间创建一个新的对象...转载 2018-12-17 17:14:16 · 111 阅读 · 0 评论 -
面试--redis(一)
1:数据类型:String set hash list zsetzset可以设置key和分数比如人-->数值。可以根据数值范围得到人2:持久化Redis提供了将数据定期自动持久化至硬盘的能力,包括RDB和AOF两种方案,两种方案分别有其长处和短板,可以配合起来同时运行,确保数据的稳定性。rdb:内存镜像模式,内存状态会设置为二进制文件的形式。 在限定时间...原创 2019-03-06 18:36:03 · 202 阅读 · 0 评论 -
线程状态转换
https://www.cnblogs.com/GooPolaris/p/8079490.html 这 个博客 之前了解的状态转换有偏差 ,现在改正一下线程的状态问题 尤其是下面这一段话:当一个线程创建以后,就处于新建状态。那什么时候这个状态会改变呢?只要它调用的start()方法,线程就进入了锁池状态。进入锁池以后就会参与锁的竞争,当它获得锁以后还不能马上运行,因为一个单核CP...转载 2019-01-14 11:37:15 · 176 阅读 · 0 评论 -
面试------重写equals方法
https://blog.youkuaiyun.com/lettyisme/article/details/80339637 我自己之前的总结首先要知道equals方法得特性:自反性,,,,,,自反性:对于任何非null的引用值x,x.equals(x)=true对称性:对于任何非null的引用x,y,x.equals(y)=true,同样y.equals(y)=true传递性:对于任何非n...原创 2019-01-14 11:21:59 · 387 阅读 · 0 评论 -
面试----线程---AQS初识
AQS是什么? 字面上看,它被称为抽象队列式的同步器(AbstractQueuedSynchronizer)。简单说,它就是一个同步队列容器。AQS定义两种资源共享方式:Exclusive(独占、只有一个线程执行,如ReentrantLock)和Share(共享,多个线程可同时执行,如Semaphore/CountDownLatch)。那什么是独占式? 在谈sync...转载 2019-01-07 18:22:03 · 219 阅读 · 0 评论 -
MQ面试常问的问题
目录1:什么场景使用了mq?直接掉接口不行吗?2:用消息队列都有什么优点和缺点?3:Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别?4:那你们是如何保证消息队列的高可用的?5:如何保证消息不被重复消费啊?如何保证消费的时候是幂等的啊?6:如何保证消息的可靠性传输啊?要是消息丢失了怎么办啊?7:那如何保证消息的顺序性?8:如何解决消息队...原创 2018-12-24 15:51:29 · 61464 阅读 · 6 评论 -
面试----mysql--索引,锁--怎么答
1:首先Mysql的基本存储结构是页(记录都存在页里边):每个数据页都会为存储在它里边儿的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组中的记录即可快速找到指定的记录2:索引做了些什么可以让我们查询加快速度呢?其实就是将无序的数据变成有序(相对):一个没加主键的表,它的数据无序的放置在磁盘存储器上,一行一行的排列的很整齐,...转载 2018-12-24 11:29:51 · 245 阅读 · 0 评论 -
mysql最左前缀原则
最左前缀:顾名思义,就是最左优先,上一个博客中数据库我们创建了UNIQUE KEY `uk_device` (`device_id`,`user_id`,`token`)多列索引,相当于创建了(device_id)单列索引,(device_id,user_id)组合索引以及(device_id,user_id,token)组合索引。结论是索引键是(a_b_c)seclect * from ta...原创 2018-12-12 11:40:59 · 4980 阅读 · 1 评论 -
数据库执行计划,索引是否打到------explain
explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。创建数据库表建表语句: https://www.cnblogs.com/xuanzhi201111/p/4175635.html 转载来自博客expain出来的信息有10列,分别是id、select_type、table、ty...原创 2018-12-12 10:49:31 · 239 阅读 · 0 评论 -
面试----集合HashMap(每一行都画重点)
先说说HashMap1:首先HashMap 是一个散列表,它存储的内容是键值对(key-value)映射,HashMap中的映射不是有序的。HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。不是线程安全的。HashMap是最常用的Map,它根据HashCode值存储数据,根绝键可以直接获取值。允许有空(null)的键值...原创 2018-12-23 17:06:04 · 268 阅读 · 0 评论 -
springmvc请求流程
自己画的丑图:https://blog.youkuaiyun.com/qq_34971162/article/details/81288179dispatcherServler的实现 以下 转载https://www.cnblogs.com/5ishare/p/8683971.html转载来自具体步骤:第一步:发起请求到前端控制器(DispatcherServlet)...转载 2018-12-11 18:43:35 · 1832 阅读 · 0 评论 -
一点一点看源码(2) ArrayList 未完
ArrayList:* Resizable-array implementation of the <tt>List</tt> interface. Implements* all optional list operations, and permits all elements, including* <tt>null</tt>. ...原创 2018-12-11 14:24:30 · 136 阅读 · 0 评论 -
面试JVM(七)对象的创建
对象的创建下图便是 Java 对象的创建过程,我建议最好是能默写出来,并且要掌握每一步在做什么。 ①类加载检查: 虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。②分配内存: 在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需...转载 2018-12-17 17:17:56 · 157 阅读 · 0 评论 -
面试---linux (一)
一:权限与目录1问题:“-rwxr-xr--”的含义:【-】【rwx】【r-x】【r--】 【-】代表这个文件名为目录或文件 【rwx】拥有者权限 可读 可写 可执行 【r-x】 同组用户权限 可读可执行 【r--】 其它组用户权限 可读2:chagrp改变文件所属用户组 chown:改变文...原创 2018-07-07 18:32:20 · 592 阅读 · 0 评论 -
面试 ----框架
一:springhttp://www.cnblogs.com/wang-meng/p/5701982.html点击打开链接二:springmvchttps://www.cnblogs.com/wang-meng/p/5701987.html点击打开链接https://blog.youkuaiyun.com/qq_39470733/article/details/77709607点击打开链接一、SpringMV...转载 2018-07-07 09:11:43 · 245 阅读 · 0 评论 -
面试 java -----Socket编程
网络上两个程序通过一个双向的通信连接实现数据的交换,这双向链路的一端称为一个socket。用来实现不同的虚拟机或计算机之间的通信。java语言中,Socket可以分为两种类型:面向连接的(tcp传输控制协议),面向无连接的(udp用户数据报协议)。任何一个Socket都由端口号和IP地址唯一确定。Socket编程,简单来讲就是通讯的两个端点都是Socket服务,网络通信就是Socket通信,而...原创 2018-06-22 17:10:00 · 7770 阅读 · 0 评论 -
面试--数据库(一)
https://www.cnblogs.com/huanongying/p/7021555.html这是最好的帖子没有之一。https://blog.youkuaiyun.com/xiaomingdetianxia/article/details/72475924点击打开链接https://www.cnblogs.com/LipeiNet/p/6099849.html1事物事务(Transac...原创 2018-06-20 21:55:54 · 182 阅读 · 0 评论 -
数据库优化
数据库优化1. 使用合适字段属性在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。同样的,如果可以的话,我们应该使用MEDIUMINT而不是BIGIN来定义整型字段。另外一个提高效率的方法是在可能的情况下,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据...原创 2018-05-24 20:17:24 · 186 阅读 · 0 评论 -
面试JVM(三)java内存模型JMM
java虚拟机规范视图定义一种java内存模型来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让java程序在各个平台下都能达到一致的并发效果。java内存模型主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量包括实例字段,静态字段和构成数组对象的元素。java内存模型规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存...原创 2018-06-07 18:02:11 · 9463 阅读 · 0 评论 -
HTTP报文头内容
文章参考:https://blog.youkuaiyun.com/shouwang666666/article/details/70232053/点击打开链接https://blog.youkuaiyun.com/ythunder/article/details/65664309点击打开链接转载 2018-05-27 20:29:32 · 916 阅读 · 0 评论 -
面试JVM(二)垃圾回收
1回收什么?程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收。垃圾回收主要是针对 Java 堆和方法区进行(对象)。垃圾收集(Garbage Collection ,GC) 哪些内存需要回收?什么时候回收?如何回收?判断一个对象是否可回收1. 引用计数算法给对象添加一个引用计数器...原创 2018-06-07 18:00:58 · 335 阅读 · 0 评论 -
面试JVM(一)内存分化
参考书:深入理解java虚拟机 JVM高级特性与最佳实践https://blog.youkuaiyun.com/stanlee_0/article/details/51171382点击打开链接http://www.importnew.com/18961.html点击打开链接 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。其中有些区域随着虚拟机进程的启...原创 2018-06-07 18:03:54 · 303 阅读 · 0 评论 -
面试java基础(二)数据类型及字节
数据类型 字节数 byte 有效范围(bits 位) 表示数范围boolean 1byte 1字节 8 -127~128short 2字节 ...原创 2018-06-02 20:45:52 · 135 阅读 · 0 评论 -
面试java基础(一)final和static
https://www.cnblogs.com/EasonJim/p/7841990.html点击打开链接一、关键字final1. 数据声明数据为常量,可以是编译时常量,也可以是在运行时被初始化后不能被改变的常量。对于基本类型,final 使数值不变;对于引用类型,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。final int x = 1;// x = 2; ...原创 2018-06-02 20:20:25 · 208 阅读 · 0 评论 -
设计模式
我从这里学的:http://www.runoob.com/design-pattern/design-pattern-intro.html菜鸟教程https://www.cnblogs.com/fengmao/p/8609440.html这个博客不错设计模式:1工厂模式:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,主要解决接口选择的问题,让其子类实现工厂接口,返回的也是...原创 2018-05-25 16:47:17 · 234 阅读 · 0 评论 -
经典排序算法
https://blog.youkuaiyun.com/lsh_2013/article/details/47280135https://blog.youkuaiyun.com/wanglelelihuanhuan/article/details/51340290https://www.cnblogs.com/alsf/p/6606287.html原创 2018-06-07 17:59:40 · 169 阅读 · 0 评论