自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

转载 状态模式

状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 示例 糖果销售机有多种状态,每种状态下销售机有不同的行为,状态可以发生转移,使得销售机的行为也发生改变。 public interface State { /** * 投入 25 ...

2019-08-26 21:14:00 204

转载 五种I/O模型

I/O模型 Unix可用的五个I/O模型的基本区别: 阻塞I/O 非阻塞I/O I/O复用 信号驱动I/O 异步I/O 一个输入操作通常包括两个阶段: 等待数据准备好 从内核向进程复制数据 对于一个套接字上的输入操作,第一步通...

2019-08-26 10:59:00 203

转载 TCP如何保证可靠传输?

TCP协议如何保证可靠传输 校验和 确认应答和序列号 超时重传 连接管理 流量控制 拥塞控制 校验和: 发送的数据包的二进制相加然后取反,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文...

2019-08-25 21:22:00 204

转载 OSI七层模型 vs. TCP/IP 五层模型(有时候也说四层)及各层协议

OSI七层模型 OSI七层协议模型主要是:应用层(Application)、表示层(Presentation)、会话层(Session)、传输层(Transport)、网络层(Network)、数据链路层(Data Link)、物理层(Physical)。 TCP/IP...

2019-08-25 21:04:00 626

转载 七层协议每一层的任务及作用

应用层:相当于对应用程序提供接口,他是对应用内程序的通信服务的 表示层:定义数据格式及加密 会话层:定义了如何开始,控制和结束一个会话 传输层:选择哪块传输协议 网络层:微数据在点对点之间传输简历逻辑链路,并分组转发数据包。 数据链路层:将数据分帧,流量控制,提供硬件寻址。 物理层...

2019-08-25 16:59:00 540

转载 简述SSL协议

安全套接字(Secure Socket Layer,SSL)协议是Web浏览器与Webserver之间安全交换信息的协议,提供两个主要的安全服务:鉴别与保密。 SSL协议的三个特性 保密:在握手协议中定义了会话密钥后,全部的消息都被加密。 鉴别:可选的client认证,和强制的s...

2019-08-25 16:42:00 825

转载 简述http与https协议

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。 2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl(Secure Sockets Layer)加密传输协议。 3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是...

2019-08-25 16:42:00 320

转载 联合索引及其实现原理

联合索引的创建方法与单个索引创建的方法一样,不同之处仅在于有多个索引列。 SELECT film_id, actor_ id FROM sakila.film_actorWHERE actor_id = 1 AND film_id = 1; 对于联合索引,mysql从左...

2019-08-25 15:30:00 5316

转载 聚集索引与非聚集索引

1.聚集索引: 聚集索引是按照每张表的主键构造一棵B+树,同时叶子结点中存放的即为整张表的行记录数据,也将聚集索引的叶子节点成为数据页。 聚集索引的这个特性决定了索引组织表中的数据也是索引的一部分。同B+树数据结构一样,每个数据页通过一个双向链表来进行链接。...

2019-08-25 14:49:00 108

转载 Mysql存储引擎

InnoDB 是 MySQL 默认的事务型存储引擎,只有在需要它不支持的特性时,才考虑使用其它存储引擎。实现了四个标准的隔离级别,默认级别是可重复读(REPEATABLE READ)。在可重复读隔离级别下,通过多版本并发控制(MVCC)+ 间隙锁(Next-Key Lockin...

2019-08-25 11:22:00 69

转载 简述TCP的流量控制与拥塞控制

1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。 考虑一种特殊的情况,接收方向发送方发送了零窗口的报文段后,接收方又有了...

2019-08-25 10:39:00 1837

转载 TCP为什么是三次握手不是两次,以及三次握手的缺陷?

三次握手为了防止已失效的连接请求报文突然有传送到了服务器,因而产生错误连接。 现假定出现一个异常情况,客户端发出的第一个连接请求报文段并没有丢失,而是在某些网络结点长时间滞留了,以致延误到连接释放以后的某一个时间到达服务器。如果不是三次握手,服务器发送确认,新的连接就建立了,...

2019-08-25 09:36:00 1050

转载 一个网络请求经历的过程

一个网络请求经历的过程: 通过DNS协议获取URL对应的IP地址 浏览器与服务器建立TCP连接 客户端发送HTTP请求 服务器收到请求后,执行响应的业务逻辑 服务器发送响应 解析HTML显示页面 断开连接(四次挥手) ...

2019-08-24 20:49:00 483

转载 域名解析的过程DNS

DNS( Domain Name System)是域名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。 DNS的过程? DNS是应用层协议,事实上他是为其他应用层协议工作的,包括不限于HTTP和SMTP以及FTP,用于将用户提供的主机名解析...

2019-08-24 20:38:00 89

转载 单件模式

单件模式:确保一个类只有一个实例,并提供一个全局的访问点。 使用场景:windows任务管理器,回收站,线程池的设计也是采用单件模式,方便线程池对池中的线程进行控制。 类图: 一个私有静态实例变量,一个private构造方法,一个公有静态方法 示例: public class S...

2019-08-23 21:25:00 117

转载 命令模式

命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。 将命令封装成对象中,具有以下作用: 使用命令来参数化其它对象 将命令放入队列中进行排队 将命令的操作记录到日志中 支持可撤销的操作 类图: ...

2019-08-21 11:51:00 97

转载 适配器模式与外观模式

适配器模式:将一个类的接口,转换为客户期望的另一个接口,让原本接口不兼容的类可以合作无间。 应用于希望复用一些现存的类,但是接口又与复用的类不一致的情况,只有碰到无法改变原有设计和代码的情况才考虑适配模式。 对象适配器类图 类适配器类图 外观模式:提供了一个统一的接口,...

2019-08-20 11:49:00 213

转载 TCP

TCP可靠传输的实现 1.TCP滑动窗口 TCP是全双工通信协议,发送方和接收方都有各自的接收和发送窗口。发送方的滑动窗口是根据接收方的TCP报文字段的窗口和其他信息来确定的。 发送窗口内都是可以允许发送的数据,当发送窗口中左部的字节是已发送和已确认时,发送窗口就会向后滑动一定距离...

2019-08-18 21:53:00 126

转载 Java并发工具类

CountDownLatch 用来控制一个或者多个线程等待多个线程。 维护了一个计数器 cnt,每次调用 countDown() 方法会让计数器的值减 1,减到 0 的时候,那些因为调用 await() 方法而在等待的线程就会被唤醒。 public class Coun...

2019-08-18 21:49:00 83

转载 类加载器与双亲委派模型

1.类与类加载器 比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个类来源于同一个Class文件,被同一个虚拟机加载,只要加载它们的类加载器不同,那这两个类就必定不相等。 这里所指的“相等”,包括代表类的Class...

2019-08-08 20:11:00 87

转载 读写锁ReentrantReadWriteLock

读写锁维护一对锁,一个读锁和一个写锁。读写锁在同一时刻可以允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞。一般情况下,读写锁的性能都会比排它锁好,因为大多数场景读是多于写的。特性如下: 公平性选择 重进入 锁降级 1.读写锁的接口与...

2019-08-06 17:18:00 110

转载 Map、Set、List、Queue、Stack的特点与用法

https://mp.weixin.qq.com/s/JuCbLOKkGy3ux4KoxoMaXg Set 不包含重复元素的集合,set中最多包含一个null元素。 只能用Lterator实现单项遍历,Set中没有同步方法。 List 有序的可重复集合...

2019-08-04 14:12:00 140

转载 Java中的线程池

Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。合理使用线程池有三个好处: 降低资源消耗 提高响应速度 提高线程的可管理性 1.线程池的实现原理 线程池的主要处理流程: ThreadPoolExecutor执...

2019-08-04 10:26:00 75

转载 Java中的类加载机制

类初始化时机 1.主动引用 虚拟机规范则是严格规定了有且只有5种情况必须立即对类进行“初始化”: 遇到new、getstatic、putstatic或invokestatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。生成这4条指令的最常见的Java代码场景是...

2019-08-03 20:56:00 61

转载 Java中的阻塞队列

1.阻塞队列 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作支持阻塞 的插入和移除方法。 支持阻塞的插入方法:意思是当队列满时,队列会阻塞插入元素的线程,直到队列不满。 支持阻塞的移除方法:意思是在队列为空时,获取元素的线程会...

2019-08-03 11:15:00 74

转载 Java中synchronized与lock的区别与使用场景

synchronized与object对象本身监视器方法notify、wait、notifyAll实现线程等待和通知,Lock与condition搭配实现线程等待/通知。一个对象可以有多个condition,线程可以注册到不同的condition,synchronized相当于...

2019-08-02 11:05:00 2181

转载 Condition

1.Condition Object拥有一组监视器方法,包括wait(long timeout)、notify()以及notifyAll()方法,这些方法与synchronized同步关键配合,可以实现等待/通知模式,Condition提供类似监视器方法与Lock配合实现等待...

2019-08-01 22:27:00 141

转载 独占锁ReentrantLock

ReentrantLock是可重入的独占锁,支持一个线程对资源重复加锁。ReentrantLock基于AQS实现的,AQS是基于FIFO队列实现的,AQS的子类一般只需重写tryAcquire(int arg)和tryRelease(int arg)。 Re...

2019-08-01 16:08:00 157

转载 关于AbstractQueuedSynchronizier

AQS是一个FIFO的双向队列,它是实现同步器和并发包中的锁的基础框架。队列中的元素类型是Node类型。AQS的子类一般只需要重写tryAcquire(int arg)和tryRelease(int arg)两个方法即可。AQS维持了一个单一的状态信息state,可以...

2019-07-29 20:02:00 82

转载 JVM内存分配与回收策略

内存分配与回收策略 新生代GC(Minor GC):回收新生代,因为新生代对象存活时间很短,因此 Minor GC 会频繁执行,执行的速度一般也会比较快。 老年代GC(Major GC/Full GC):回收老年代和新生代,老年代对象其存活时间长,因此 Full GC ...

2019-07-28 16:05:00 202

转载 在垃圾回收对象的时候程序的逻辑是否可以继续执行?

垃圾收集器和垃圾算法:https://my.oschina.net/u/4045381/blog/3073820 Serial、parNew等会停止程序逻辑的执行,而CMS、G1会在某一阶段停止用户线程 ...

2019-07-27 23:18:00 103

转载 启动线程时,start与run的区别

start(): 真正实现了多线程运行。它无需等 run()方法执行完毕就可以执行下面的代码。通过调用 Thread类 的 start()方法,线程进入就绪(可运行)状态,此时多个线程开始排队等待 CPU 分配时间段,线程一直等到 CPU 分配到时间段,也就是说轮到该线程了,...

2019-07-27 20:45:00 144

转载 Java创建线程的方式

Java中创建线程有三种,分别为实现Runnable接口,继承Thread类,实现Callable接口。 1.Thread public class MyThread extends Thread { public MyThread() { this.setName("MyT...

2019-07-27 16:53:00 88

转载 ThreadLocal实现原理

下面通过一个例子来证明通过ThreadLocal能达到在每个线程中创建变量副本的效果: public class TestThreadLocal { public static ThreadLocal<String> threadLocal = new ThreadLocal...

2019-07-27 15:31:00 64

转载 happens-before

happens-before规则简单易懂,避免java程序员为理解JMM提供的可见性保证而去学习复杂的重排序规则。 在JMM(java内存模型)中,一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须要存在happens-before关...

2019-07-26 11:05:00 137

转载 用java语言实现七大排序算法

自定义Sort接口 Sort接口为以下排序算法提供比较大小和元素的位置交换。 public abstract class Sort<T extends Comparable<T>> { public abstract void sort(T[...

2019-07-24 16:36:00 110

转载 HashSet与TreeSet

Set:不允许包含相同的元素,通过equals方法来判断两个元素是否相等。 HashSet: add,remove,contians操作都是O(1) 无序 TreeSet: add,remove,contians操作都是O(logn) 集合中元素是有序 ...

2019-07-24 11:51:00 107

转载 Vector、ArrayList与LinkedList的区别?

LinkedList基于双向链表实现的 private static class Node<E> { E item; Node<E> next; Node<E> prev;} 每个链表存储了 first 和 last 指针: tr...

2019-07-23 21:16:00 62

转载 抽象工厂模式

抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。 抽象工厂模式:每个抽象工厂派生多个具体工厂,每个抽象产品派生多个具体产品。每个具体工厂创建一系列具体产品。 例如,我们现在有两种产品A和B,而产品A和B分别都有两个厂商1和2进行生产,...

2019-07-23 16:12:00 57

转载 工厂方法模式

工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。 工厂方法模式:每个抽象工厂派生多个具体工厂,每个抽象产品派生多个具体产品。每个具体工厂创建一个具体产品。 这里由子类决定,不是运行时决定,而是创建类时,不需要知道实际...

2019-07-23 15:35:00 89

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除