面试整理
文章平均质量分 81
苦逼程序耗子
这个作者很懒,什么都没留下…
展开
-
设计模式——单例模式
什么情况下使用单例模式 使用单例模式最核心的一点是体现了面向对象封装特性中的“单一职责”和“对象自治”原则。单例模式也是一种比较常见的设计模式,它到底能带给我们什么好处呢?其实无非是三个方面的作用:第一、控制资源的使用,通过线程同步来控制资源的并发访问;第二、控制实例产生的数量,达到节约资源的目的。第三、作为通信媒介使用,也就是数据共享,它可以在不建立直接关联的条件下,让多原创 2017-04-17 20:36:48 · 233 阅读 · 0 评论 -
线程池和阻塞队列
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。转载 2017-08-23 10:44:28 · 370 阅读 · 0 评论 -
Http状态码
本部分余下的内容会详细地介绍 HTTP 1.1中的状态码。这些状态码被分为五大类: 100-199 用于指定客户端应相应的某些动作。 200-299 用于表示请求成功。 300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。 400-499 用于指出客户端的错误。 500-599 用于支持服务器错误。 HttpServletResponse中转载 2017-08-27 09:18:30 · 260 阅读 · 0 评论 -
内存溢出和内存泄漏
内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。重复调用本函数,没有写跳出条件。内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。转载 2017-08-27 16:46:10 · 160 阅读 · 0 评论 -
Linux内核
Linux 内核简介现在让我们从一个比较高的高度来审视一下 GNU/Linux 操作系统的体系结构。您可以从两个层次上来考虑操作系统,如图 2 所示。图 2. GNU/Linux 操作系统的基本体系结构最上面是用户(或应用程序)空间。这是用户应用程序执行的地方。用户空间之下是内核空间,Linux 内核正是位于这里。GNU C Library (glibc)也在这转载 2017-09-05 16:38:26 · 190 阅读 · 0 评论 -
操作系统的进程调度方法和磁盘臂调度算法
一、先来先服务和短作业(进程)优先调度算法1.先来先服务调度算法先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入转载 2017-08-24 15:39:59 · 1310 阅读 · 0 评论 -
从输入URL 到页面加载完成的过程
转载自:http://www.tuicool.com/articles/V7JN32Z根据 URL 请求页面过程说实话,这类文章网上一抓一大把,而我仍想写这篇博客,一方面是想再仔细缕一下这个过程,另一方面是希望用清晰的语言和结构来解释,也算是小小地挑战一下自己。过程概述浏览器查找域名对应的 IP 地址;浏览器根据 IP 地址与服务器建立 sock转载 2017-08-29 10:21:36 · 289 阅读 · 0 评论 -
电脑上访问一个网页,整个过程是怎么样的:DNS、HTTP、TCP、OSPF、IP、ARP。
应用层:1. DNS(53):我们输入的是一个URL需要转化成IP地址。首先我们知道我们本地的机器上在配置网络时都会填写DNS,这样本机就会把这个url发给这个配置的DNS服务器,如果能够找到相应的url则返回其ip,否则该DNS将继续将该解析请求发送给上级DNS,整个DNS可以看做是一个树状结构,该请求将一直发送到根直到得到结果。2. HTTP(80)HTTP协议转载 2017-09-07 10:46:20 · 504 阅读 · 0 评论 -
缓存问题
缓存击穿: 查询一个数据库中不存在的数据,比如商品详情,查询一个不存在的ID,每次都会访问DB,如果有人恶意破坏,很可能直接对DB造成过大地压力。缓存击穿的解决方案: 当通过某一个key去查询数据的时候,如果对应在数据库中的数据都不存在,我们将此key对应的value设置为一个默认的值,比如“NULL”,并设置一个缓存的失效时间,这时在缓存失效之前,所有通过此key的访问都被缓存挡转载 2017-09-15 23:20:37 · 254 阅读 · 0 评论 -
性能优化策略
阅读目录代码数据库缓存异步NoSQLJVM调优多线程与分布式度量系统(监控、报警、服务依赖管理)案例一:商家与控制区关系的刷新job案例二:POI缓存设计与实现案例三:业务运营后台相关页面的性能优化add by zhj: 我个人感觉性能优化分析影响性能的因素有哪些,然后按影响力的大小进行排序,然后进行排序。然后进一步分析每个因素为何会影响性能,把这些因素再找出来,再按影转载 2017-08-30 11:01:01 · 291 阅读 · 0 评论 -
生产者消费者模式
常见场景:某个模块负责产生数据,这些数据由另一个模块来负责处理。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者。该模式还需要有一个缓冲区处于生产者和消费者之间,作为一个中介。生产者把数据放入缓冲区,而消费者从缓冲区取出数据 缓冲区作用1. 解耦,生产者和消费者只依赖缓冲区,而不互相依赖2. 支持并发和异步 方式一,转载 2017-08-30 22:40:22 · 203 阅读 · 0 评论 -
http和https的区别
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。 为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输转载 2017-08-26 15:57:19 · 164 阅读 · 0 评论 -
JVM原理
作为一名Java使用者,掌握JVM的体系结构也是必须的。说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示:运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(.cl转载 2017-08-26 10:42:38 · 159 阅读 · 0 评论 -
设计模式——工厂模式
无论是简单工厂模式,工厂方法模式,还是抽象工厂模式,他们都属于工厂模式,在形式和特点上也是极为相似的,他们的最终目的都是为了解耦使用工厂方法模式,看上去会感觉到这不是更麻烦了吗,直接在外界创建具体的抽象子类不行吗?还用这么麻烦的创建工厂子类,然后再用工厂子类去创建抽象子类。1 工厂方法封装了对象创建的细节,将对象创建代码和其他部分脱离,减少相干性.2 有利于同类对象创建的统原创 2017-04-19 00:18:17 · 191 阅读 · 0 评论 -
切面编程(AOP)
概述:Aop, aspect objectprogramming 面向切面编程 功能: 让关注点代码与业务代码分离!关注点, 重复代码就叫做关注点;切面, 关注点形成的类,就叫切面(类)! 面向切面编程,就是指对很多功能都有的重复的代码抽取,再在运行的时候网业务方法上动态植入“切面类代码”。切入转载 2017-05-13 15:17:31 · 377 阅读 · 0 评论 -
Spring基础总结
Bean的定义:1. 从本质上讲,Spring是一个大的工厂,而Bean则是工厂中的产品。2. 对于XML中的基本标签,主要是设置的是bean的默认属性。3.原创 2017-05-13 15:02:46 · 199 阅读 · 0 评论 -
依赖注入和控制反转
控制反转(IOC):Spring容器为对象设置属性的方式IOC的优点:实现组件之间的解耦,提高程序的灵活性和可维护性。IOC的缺点:1、创建对象的步骤变复杂了,不直观,当然这是对不习惯这种方式的人来说的。2、因为使用反射来创建对象,所以在效率上会有些损耗。但相对于程序的灵活性和可维护性来说,这点损耗是微不足道的。3、缺少IDE重构的支持,如果修改了类名,原创 2017-04-23 17:00:53 · 267 阅读 · 0 评论 -
设计模式——代理模式
代理模式:为其他对象提提供一种代理以控制这个对象的访问。在某种情况下,一个对象不适合或者和不能直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式符合开闭原则(Open-ClosedPrinciple, OCP), 即对扩展开放,对修改关闭。 其实就是一个中介的功能。扩展方法举例:据库连接池中连接的那个close方法, 普通的Connection的clos原创 2017-04-19 23:28:06 · 257 阅读 · 0 评论 -
Linux基础
linux 操作系统 一.linux 操作系统概述 1.常见操作系统 - 服务端操作系统 : linux、unix、windows server - 单机操作系统 : windows(dos 、ucdos、win95、win98、win2000、xp、vista、win7、win8)转载 2017-05-20 16:54:28 · 251 阅读 · 0 评论 -
计算机网络面试小结
源博客:http://blog.csdn.net/u012422829/article/details/450472171.TCP/UDP区别以及TCP如何保证传输可靠性TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立转载 2017-08-17 20:13:29 · 178 阅读 · 0 评论 -
进程和线程以及进程和线程的通信方式
1.定义进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.转载 2017-08-24 16:31:18 · 284 阅读 · 0 评论 -
一致性算法
转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正转载 2017-09-04 11:30:49 · 541 阅读 · 0 评论 -
Java中BIO NIO AIO
【转自】http://qindongliang.iteye.com/blog/2018539 在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解。具体如下: 序号 问题 1 什么是同步? 2 什么是异步? 3 什么是阻塞? 4 什么是非阻塞? 5 什么是同步阻塞? 6 什么是同步非阻塞? 7 什么是异步阻塞? 8 什么是异步非阻塞?转载 2017-08-26 10:08:15 · 175 阅读 · 0 评论 -
Spring事务传播性与隔离级别
事务是逻辑处理原子性的保证手段,通过使用事务控制,可以极大的避免出现逻辑处理失败导致的脏数据等问题。事务最重要的两个特性,是事务的传播级别和数据隔离级别。传播级别定义的是事务的控制范围,事务隔离级别定义的是事务在数据库读写方面的控制范围。以下是事务的7种传播级别:1) PROPAGATION_REQUIRED ,默认的spring事务传播级别,使用该级别的特点是,如转载 2017-09-01 10:27:21 · 238 阅读 · 0 评论