2018-03-20

TCP协议中的三次握手和四次挥手

image.png

SYN(synchronous建立联机)
ACK(acknowledgement 确认)
PSH(push传送)
FIN(finish结束)


image.png

第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,等待服务器B确认。
第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,
第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。

关闭连接:
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。


image.png

和SYN一样,一个FIN将占用一个序号

String、StringBuffer、StringBuilder
String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象;而如果是使用 StringBuffer 类则结果就不一样了,每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象。
StringBuilder是线程不安全的,速度更快
StringBuffer是线程安全的,速度比StringBuilder慢
线程安全当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。

HashMap是基于哈希表实现的,每一个元素是一个key-value对
h(key) = value,

哈希表:


image.png

① hashmap是用链地址法进行处理,多个key 对应于表中的一个索引位置的时候进行链地址处理,hashmap其实就是一个数组+链表的形式。
② 当有多个key的值相同时,hashmap中只保存具有相同key的一个节点,也就是说相同key的节点会进行覆盖。
④节点在找到所在的链后,插入链中是采用的是头插法,也就是新节点都插在链表的头部。

image.png

Entry是HashMap的内部类 包含四个值(next,key,value,hash),其中next是一个指向 Entry的指针,key相当于上面节点的值 value对应要保存的值,hash值由key产生,
hashmap中要找到某个元素,需要根据hash值来求得对应数组中的位置,然后在由key来在链表中找Entry的位置。
初始容量和加载因子。

HashTable和HashMap区别
Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口。

并发 任一个时刻点上只有一个程序在处理机上运行
同步 A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B依言执行,再将结果给A;A再继续操作。
在多线程并发的环境下,可以直接使用Hashtable,不需要自己为它的方法实现同步,但使用HashMap时就必须要自己增加同步处理。
Hashtable 线程安全

HashMap中,null可以作为键,
Hashtable中,key和value都不允许出现null值。

哈希值的使用不同,HashTable直接使用对象的hashCode。而HashMap重新计算hash值。

IOC:
①IOC就是控制反转
②控制反转就是由第三方实例化对象
③IOC的好处:可以降低耦合度

AOP思想
①AOP就是面向切面编程
②AOP的思想就是把一个对象按照业务分为主要业务和次要业务,然后再动态的组合
③AOP的好处:降低耦合度,代码重用,分工合作
bean 工厂的概念是 Spring 作为 IOC 容器的基础。IOC 将处理事情的责任从应用程序代码转移到框架。

抽象类和接口的区别?
抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;
接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;
一个类只能继承一个抽象类,而一个类却可以实现多个接口。

指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;
而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。而引用是一块内存的别名。

vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。
list是由双向链表实现的,因此内存空间是不连续的。只能通过指针访问数据,由于链表的特点,能高效地进行插入和删除。

malloc 只管分配内存,并不能对所得的内存进行初始化,所以得到的一片新内存中,其值将是随机的。申请了内存空间后,必须检查是否分配成功。

AOP的实现:面向切面编程采用横向抽取机制

  1. 若目标对象实现了接口,则Spring使用JDK的java.lang.reflect.Proxy代理.
  2. 若目标对象没有实现接口,则Spring使用cglib库生成目标对象的子类.

横切关注点 对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点
Target 目标对象 需要被代理(增强)的对象.
Proxy 代理对象 目标对象被AOP 织入 增强/通知后,产生的对象.

在动态代理 和 CGLIB 的支持下
JDK动态代理通过反射来接收被代理的类,并且要求被代理的类必须实现一个接口。

MVC设计模式:
什么是MVC (模型 视图 控制器)?
MVC是一个架构模式,它分离了表现与交互。它被分为三个核心部件:模型、视图、控制器。
视图是用户看到并与之交互的界面。
模型表示业务数据,并提供数据给视图。
控制器接受用户的输入并调用模型和视图去完成用户的需求。

MVC有两个大的好处:
分离了关注点。后台代码被移到单独的类文件,我们可以最大限度的重复利用代码。
自动化UI测试成为可能,因为后台代码移到了.NET类。这让我们更容易做单元测试和自动化测试。

你能解释下MVC的完整流程吗?

所有的终端用户请求被发送到控制器。
控制器依赖请求去选择加载哪个模型,并把模型附加到对应的视图。
附加了模型数据的最终视图做为响应发送给终端用户。

hashmap如何解决哈希冲突
链表法和开放地址法。链表法就是将相同hash值的对象组织成一个链表放在hash值对应的槽位;
开放地址法是通过一个探测算法,当某个槽位已经被占据的情况下继续查找下一个可以使用的槽位。按照某种方法继续探测哈希表中的其他存储单元,直到找到空位置为止。

操作系统:
多线程:是指从软件或者硬件上实现多个线程并发执行的技术。
单进程单线程:一个人在一个桌子上吃菜。 单进程多线程:多个人在同一个桌子上一起吃菜。

并发是指一个处理器同时处理多个任务。
并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。

怎么实现并发编程?
多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域:
线程:进程中负责程序执行的执行单元

进程:执行中的程序 一个进程至少包含一个线程
单线程:程序中只存在一个线程,实际上主方法就是一个主线程
多线程:在一个程序中运行多个任务

线程的实现:继承Thread类,在java.lang包中定义, 继承Thread类必须重写run()方法
实现Runnable接口
在Java中创建线程除了继承Thread类之外,还可以通过实现Runnable接口来实现类似的功能。实现Runnable接口必须重写其run方法。

实现Runnable接口:在Java中创建线程除了继承Thread类之外,还可以通过实现Runnable接口来实现类似的功能。实现Runnable接口必须重写其run方法。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,174评论 11 349
  • 前言 最近金三银四,相信不少朋友都在跃跃欲动,看看市场机会,此份Java整理是平安科技(陆金所)项目组大神整理的J...
    苏村的南哥阅读 801评论 0 2
  • 今天在今日头条上看到信息有点书的介绍文章。 以我就下载一个试试看怎么样。
    硬件工程师技术号阅读 51评论 0 0
  • 周末刚刚结束,一个星期又开始了,但是周末的时候,没有像之前那样抗拒星期一的到来,因为这个星期开始,星期一就一节大课...
    Sha_Sha阅读 150评论 0 0
  • 今天我家婆和外甥女搬来我家住了,2个人变成4个人,多了许多不方便。至少在家不能乱穿衣服了,也不能自由窝在沙发看电视...
    落叶知秋寒意凉阅读 191评论 0 0