面试资料
张某某啊哈
做一个有梦想的程序猿
展开
-
从Map中 取出第一个key/第一个value的方法
从Map中取出第一个 key 和 value 的方法,使用Map.Entry进行操作; 可与LinckedHashMap(按元素存入顺序排序的有序Hash表)搭配使用;实现特定的业务要求;/** * 获取map中第一个key值 * * @param map 数据源 * @return */ private static String getKeyOrNull(Map<String, Object> map) { S.原创 2021-03-28 16:12:41 · 15883 阅读 · 0 评论 -
移除Map中指定的键值对
// 创建map Map<String, Object> map = new HashMap<String, Object>(); // 模拟添加数据 map.put("a1", "1"); map.put("a2", "2"); map.put("b1", "11"); map.put("b2", "22"); map.put("c1", "111"); map.put("c2", "222"); ..原创 2021-03-28 16:11:30 · 1761 阅读 · 0 评论 -
HashMap的key是否可以重复
这个问题很好回答,key肯定是不能重复,如果两个value的key相同,到时候就无法准确读取value值了本质上相同不代表“表面上”不可以相同,下面请看“表面上”相同key但是不同value的例子class A{ private String code; private String name; @Override public int hashCode() { // TODO Auto-generated method stub return code.hashCode().原创 2021-03-28 16:10:09 · 3753 阅读 · 0 评论 -
数据库索引常见四种类型
索引分四类:index ----普通的索引,数据可以重复fulltext----全文索引,用来对大表的文本域(char,varchar,text)进行索引。语法和普通索引一样。unique ----唯一索引,唯一索引,要求所有记录都唯一primary key ----主键索引,也就是在唯一索引的基础上相应的列必须为主键第一种:index unique scan ...原创 2019-03-19 12:53:34 · 25489 阅读 · 0 评论 -
复合索引(组合索引)
用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引); 复合索引在数据库操作期间所需的开销更小,可以代替多个单一索引; 同时有两个概念叫做窄索引和宽索引,窄索引是指索引列为1-2列的索引,宽索引也就是索引列超过2列的索引; 设计索引的一个重要原则就是能用窄索引不用宽索引,因为窄索引往往比组合索引更有效;注意事项 1、对于复合索引,在查询使用时,最好将条件顺序按找索引的顺序,这样...原创 2019-03-19 13:05:57 · 1540 阅读 · 0 评论 -
MVC模式与三层架构的区别
三层架构和MVC是有明显区别的,MVC应该是表现模式(三个加起来以后才是三层架构中的UI层)。三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。2、业务...原创 2019-03-19 14:20:07 · 6035 阅读 · 0 评论 -
SQL语句执行顺序
查询语句中select from where group by having order by的执行顺序1.查询中用到的关键词主要包含六个,并且他们的顺序依次为select--from--where--group by--having--order by其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序与sql语句的书写顺序并不是一样的...原创 2019-04-19 11:06:09 · 132 阅读 · 0 评论 -
Java中Error与Exception的区别 与常见的异常
大白话:Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。Exception(异常)表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可...原创 2019-04-19 11:45:47 · 426 阅读 · 0 评论 -
Union与Union All的区别
如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。Union:对两个结果集进行并集操作,不包括重复行,同时...原创 2019-05-27 10:53:52 · 492 阅读 · 0 评论 -
死锁的产生、防止、避免、检测和解除(详解)
死锁的产生条件:想知道死锁怎么产生,首先要了解什么是死锁一、死锁的定义:多个进行相互等待对方资源,在得到所有资源继续运行之前,都不会释放自己已有的资源,这样造成了循环等待的现象,称为死锁。二、产生死锁的四大必要条件:①资源互斥/资源不共享每个资源要么已经分配给了一个进程,要么是可用的,只有这两种状态,资源不可以被共享使用,所以所谓的互斥是指:资源不共享,如果被使用,只能被一...原创 2019-03-20 22:41:48 · 366 阅读 · 0 评论 -
java中计时器的用法Timer和TimerTask的用法__java中利用Timer与TImerTask 计时器间隔执行任务
经常我们都会有这样的需求,要固定的每隔一段时间执行某一个任务。比如: 我们做一个缓存来减少与数据库的交互,而为了使缓存与数据库中的数据尽量达到同步,需要每个固定的一段时间去数据库中的数据是否有更新以达到与缓存的同步。这样的需求可以做一个线程,线程中做一个死循环,循环中就是要执行的这个任务,每执行完一次让线程睡眠一段时间,这要就可以达到这个需求。 但是用最简单最便捷的...原创 2019-03-15 15:47:49 · 504 阅读 · 0 评论 -
HashMap与TreeMap的区别
相同点:HashMap非线程安全,TreeMap非线程安全都继承了AbstractMap 不同点:HashMap:基于哈希表实现。使用HashMap要求添加的键类明确定义了hashCode()和equals()(可以重写hashCode()和equals()),为了优化HashMap空间的使用,您可以调优初始容量和负载因子。TreeMap:基于红黑树实现。TreeMap没有调...原创 2019-02-24 15:47:51 · 3244 阅读 · 1 评论 -
数组与链表的特点以及区别
1.数组:数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中。同样的道理,如果想删除一个元素,同样需要移动大量元素去填掉被移动的元素。如果应用需要快速访问数据,很少插入和删除元素,就应该用数组。2.链表:链表中的元素在内存中不是顺序存...原创 2019-02-24 15:56:01 · 515 阅读 · 0 评论 -
一次完整的HTTP请求过程
一次完整的HTTP请求过程当我们在web浏览器的地址栏中输入: www.baidu.com,然后回车,到底发生了什么过程概览 1.对www.baidu.com这个网址进行DNS域名解析,得到对应的IP地址 2.根据这个IP,找到对应的服务器,发起TCP的三次握手 3.建立TCP连接后发起HTTP请求 4.服务器响应HTTP请求,浏览器得到html代码 5.浏览...原创 2019-02-19 22:43:26 · 314 阅读 · 0 评论 -
乐观锁与悲观锁的区别——解决并发问题
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不...原创 2019-03-06 12:52:58 · 268 阅读 · 0 评论 -
OOA/OOD/OOP---详细介绍
OOA首先我们来讲述一下什么是OOAObject-Oriented Analysis:面向对象分析法指的是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。OOA与结构化分析有较大的区别。OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类花分析和整理,而不是对管理业务现状和方法的分析。OOA(面向对象的分析)模型由5个层次(主题层、...原创 2019-03-07 13:23:37 · 2285 阅读 · 0 评论 -
Servlet的生命周期
Servlet运行在Servlet容器中,其生命周期由容器来管理。Servlet的生命周期通过javax.servlet.Servlet接口中的init()、service()和destroy()方法来表示Servlet的生命周期包含了下面4个阶段:1.加载和实例化2.初始化3.请求处理4.服务终止Web服务器在与客户端交互时Servlet的工作过程是:...原创 2019-03-19 14:35:49 · 313 阅读 · 0 评论 -
JVM内存模型和类加载机制
JVM内存模型Java代码是运行在Java虚拟机(JVM)上的,Java虚拟机通过解释执行(解释器)或编译执行(编译器)来完成。Java内存模型分为5个部分:方法区(Method Area),Java堆(Heap),Java栈(VM Stack),本地方法栈(Native Method Stack),程序计数器(PC 寄存器)(图片来源:http://gityuan.com/image...原创 2019-03-19 14:39:50 · 326 阅读 · 0 评论 -
操作集合的工具类:Collections
Java提供了一个操作Set、List和Map等集合的工具类:Collections,该工具类提供了大量方法对集合进行排序、查询和修改等操作,还提供了将集合对象置为不可变、对集合对象实现同步控制等方法。1.排序操作方法:static voidreverse(List<?>list): 反转列表中元素的顺序。static voidshuffle(List<?&...原创 2019-03-15 15:46:08 · 119 阅读 · 0 评论 -
ArrayList和LinkedList的区别以及优缺点理解
ArrayList和LinkedList都是实现了List接口的容器类,用于存储一系列的对象引用。他们都可以对元素的增删改查进行操作。对于ArrayList,它在集合的末尾删除或添加元素所用的时间是一致的,但是在列表中间的部分添加或删除时所用时间就会大大增加。但是它在根据索引查找元素的时候速度很快。对于LinkedList则相反,它在插入、删除集合中任何位置的元素所花费的时间都是一样的,但...原创 2019-02-23 11:45:31 · 183 阅读 · 0 评论