Java常见面试题汇总-----------计算机网络(HTTP协议、HTTP1.1与HTTP1.0的比较) 73、HTTP协议请求过程 大致的流程:输入地址 –> DNS域名解析 –> 发起TCP的三次握手 –> 建立TCP连接后发起http请求 –> 服务器响应http请求,浏览器得到html代码 –> 浏览器解析html代码,并请求html代码中的资源(如javascript、css、图片等) –> 浏览器对页面进行渲染呈现给用户。 第一步:输入地址 ...
Java常见面试题汇总-----------计算机网络(TCP三次握手与四次挥手、TCP流量控制、TCP与UDP对比) 70、TCP协议的三次握手与四次挥手70.1、TCP报文结构 1、源端口号:表示发送端端口号,字段长为16位。 2、目标端口号:表示接收端口号,字段长为16位。 3、序列号:表示发送数据的位置,字段长为32位。每发送一次数据,就累加一次该数据字节数的大小。 注意:序列号不会从0或1开始,而是在建立连接时由计算机生成的一个随机数作为其初始值,通过SYN包发送给接收端主机。然后再将...
Java常见面试题汇总-----------计算机网络(路由协议) 69、路由协议69.1、基本概念 网络层主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,通过查找路由表决定通过那个路径到达服务器,其中用到路由选择协议。 路由主要分为两类:即静态路由和动态路由。从管理层面来说,静态路由比较容易部署/修改(小网络),动态路由协议一般路由的体积比较大,管理相对比较复杂(大网络)。但是从技术层面来说,动态路由协...
Redis学习笔记 一、Redis是什么 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。 Redis官网只有Linux版本,而没有windows对应版本,在Windows系统下的安装参考:htt...
Java常见面试题汇总-----------计算机网络(网络分层与IP地址) 67、OSI 与 TCP/IP 的网络分层 (1)、物理层----定义了为建立、维护和拆除物理链路所需的机械的、电气的、功能的和规程的特性,其作用是使原始的数据比特流能在物理媒体上传输。具体涉及接插件的规格、“0”、“1”信号的电平表示、收发双方的协调等内容。 (2)、数据链路层----比特流被组织成数据链路协议数据单元(通常称为帧),并以其为单位进行传输,帧中包含地址、控制、数据及校...
H2数据库入门 一、H2简介 1、H2是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。 H2最大的用途在于可以同应用程序打包在一起发布,这样可以非常方便地存储少量结构化数据。 它的另一个用途是用于单元测试。启动速度快,而且可以关闭持久化功能,每一个用例执行完随即还原到初始状态。 H2的第三个用处是作为缓存,作为NoSQL的一个补充。当某些场景下数据模型必须为关系型...
Java常见面试题汇总-----------数据库(JDBC、数据库连接池) 63、JDBC的理解 Jdbc:Java database connection,java数据库连接。数据库管理系统(mysql、oracle等)是很多的,每个数据库管理系统支持的命令是不一样的。 Java只定义接口,让数据库厂商自己实现接口,对于我们开发者而言。只需要导入对应厂商开发的实现即可。然后以接口方式进行调用。(mysql + mysql驱动(实现)+jdbc)。64、数...
面向对象编程设计模式------职责链模式 职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。1、Handler类,定义一个处理请示的接口。/** * @Description: 定义一个处理请求的接口 * @author: zxt * @time: 2019年5月13日...
Java常见面试题汇总-----------数据库(连接操作、分组查询、查询优化) 59、数据库连接(LEFT)操作 首先定义两个表t1和t2IDNAME1aaa2bbbIDAGE120330 内连接(inner join):只显示符合连接条件的记录 select * from t1 inner join t2 on t1.id = t2.id;IDNAMEIDAGE1...
Java常见面试题汇总-----------数据库(数据库锁、数据库存储过程) 57、数据库的锁 锁是一种并发控制技术,锁是用来在多个用户同时访问同一个数据的时候保护数据的。57.1、有 2 种基本的锁类型 共享(S)锁: 多个事务可封锁一个共享页;任何事务都不能修改该页;通常是该页被读取完毕,S锁立即被释放。在执行 select 语句的时候需要给操作对象(表或者一些记录)加上共享锁,但加锁之前需要检查是否有排他锁,如果没有,则可以加共享锁(一个对象上可以加 n 个...
Java常见面试题汇总-----------数据库(数据库索引及其实现) 54、数据库索引索引的优缺点 优点: 1、大大加快数据的检索速度; 2、创建唯一性索引,保证数据库表中每一行数据的唯一性; 3、加速表和表之间的连接; 4、在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。 缺点: 1、索引需要占物理空间; 2、当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低数据的维护速度。索引的分类...
如何方便快速在指定文件夹打开命令行 很多时候我们需要打开命令行然后进入到相应目录进行一些操作。常规的做法是:Win+R打开运行窗口,输入"cmd"回车打开命令行窗口。 假如我们要进入的是D盘foo文件夹下的一个bar子文件夹,路径是这样的D:\foo\bar,首先输入"cd D:" 回车进入D盘,再依次输入"cd foo"," cd bar"; 或者在资源管理器的地址栏里复制文件夹地址"D:\foo\bar",然后输入c...
面向对象编程设计模式------享元模式 所谓享元模式就是运行共享技术有效地支持大量细粒度对象的复用。 系统使用少量对象,而且这些都比较相似,状态变化小,可以实现对象的多次复用。 共享模式是支持大量细粒度对象的复用,所以享元模式要求能够共享的对象必须是细粒度对象。 在了解享元模式之前我们先要了解两个概念:内部状态、外部状态。 内部状态:在享元对象内部不随外界环境改变而改变的共享部分。 外部状态:随着环境的改变而改变,不...
面向对象编程设计模式------适配器模式 适配器模式 适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 有两种适配器模式的实现方法,第一种是组合的方式(对象适配器模式): 适配器类将被适配者作为对象组合到该类中以修改目标接口包装被适配者。 第二种是继承的方式(类适配器模式): 实现目标对象类而继承被适配类,再重写被适配类从而...
Git与Github入门与应用 一、git的安装1.1、命令行方式安装 1)、下载windows git:https://git-scm.com/downloads 2)、配置用户信息 - git config --global user.name “zxt” - git config --global user.email “2369470057@qq.com”1.2、git 图形界面安装 以上是g...
面向对象编程设计模式------观察者模式 观察者模式 观察者模式又叫做发布-订阅(Publish/Subscribe)模式。 1、Subject类,可翻译为主题或者抽象通知者,一般用一个抽象类或者一个接口实现。它把所有对观察者对象的引用保存在一个集合里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象。import java.util.ArrayList;import java.util.Li...
Java常见面试题汇总-----------数据库(数据库引擎、数据库范式、事务的四大特性ACID) 51、Mysql数据库引擎名称事务外键索引适用范围优势、特点Myisam不支持不支持B+树读操作远多于写操作,不需要事务支持访问速度快,对事务完整性没有要求,保存了表的行数Innodb支持支持B+树并发度较高、需要支持事务的场景占用更多的空间以保留数据和索引,不保存表的行数MemoryB树、HASH很快的读写速度,安全性要求较低...
Java常见面试题汇总-----------Java框架 47、struts2的执行流程? 在Struts2框架中的处理大概分为以下的步骤 1、用户发送请求; 2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin); 3、接着FilterDispatcher被调用,Filter...
Java常见面试题汇总-----------Java多线程(线程池、生产者消费者模式实现) 45、线程池ThreadPoolExecutor45.1、创建线程池 Java通过Executors提供四个静态方法创建四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 ...
Java常见面试题汇总-----------Java多线程(多线程同步机制) 39、Synchronized的底层原理 synchronized是JAVA中解决并发编程中最常用的方法。 synchronized的作用如下: 1、确保线程互斥访问同步代码; 2、保证共享变量的修改能够及时可见; 3、有效解决指令重排序问题。 synrhronized关键字简洁、清晰、语义明确,因此即使有了Lock接口,使用的还是非常广泛。其应用层的语义是可以把任何一个非...