- 博客(11)
- 收藏
- 关注
原创 摩尔投票算法
什么是摩尔投票算法?摩尔投票算法是一种使用线性时间和常数空间查找大部分元素序列的算法。它以1981年出版的Robert S. Boyer和J Strother Moore的名字命名,并且是流式算法的典型例子。最简单的形式就是,查找输入中重复出现超过一半以上(n/2)的元素。如果序列中没有这种元素,算法不能检测到正确结果,将输出其中的一个元素之一。如果不能保证输入数据中有占有一半以上的元素,需要...
2020-02-11 18:33:17 202
原创 剑指Offer(网络)——TCP和UDP的区别
前两篇文章讲解了TCP协议。接下来来介绍一下UDP,从UDP协议的报文结构开始说起相对于TCP,UDP报文结构简单了很多:源端口、目标端口、数据包长度和奇偶校验值和用户数据组成。结构简单,少了很多TCP具有的功能,其中有:不支持错误重传;不支持滑动窗口。UDP特点:面向无连接;不维护连接状态,支持同时向多个客户端传输相同的信息;数据包报头只有8个字节,额外的开销比较小;吞...
2020-02-05 20:31:47 218
原创 剑指Offer(网络)——TCP四次挥手
挥手指的就是终止连接,TCP四次挥手流程图如下:客户端或者服务端触发close,假设客户端触发close数据传输完毕之后,双方才可以释放连接;最开始客户端和服务端都处于Established状态,假设客户端主动关闭;首先客户端发送连接释放报文并停止发送数据,该数据报报头中携带的flag为FIN=1,seq=u,u指的是刚才连接状态下传送过来的最后一条信息的最后一个序号加上1,此时客户端...
2020-02-05 18:48:40 264
原创 剑指Offer(网络)——TCP三次握手
简单来介绍一下传输控制协议TCP:TCP协议是面向连接的、可靠的、基于字节流的传输层通信协议;当数据传输的时候,应用层向TCP发送数据流,然后TCP会将应用层的数据流分割成报文段并发送给目标节点的TCP层;TCP为了保证不丢包就给每一个包一个序号(Sequence Number),同时序号也保证对方接受数据的时候顺序是一定的;当对方收到数据的时候回复一个ACK去确认,如果在合理的时延之内...
2020-02-05 12:38:12 310
原创 剑指Offer(Spring)——AOP
AOP——面向切面编程软件有一个重要的概念:关注点分离:不同的问题交给不同的部分去解决。AOP是一种关注点分离的技术,写Web时需要写缓存、业务逻辑、日志、出错处理等等东西都要放在一起,为了将业务各个功能分离开切面就出现了,当业务功能代码和切面代码分开之后架构就会变得高内聚低耦合。如果模块化之后虽然模块本身的成本降低了,但是接口的开发的成本又升高了我们为了保证业务的完整性就需要使用切面将业务...
2020-02-04 13:27:00 324
原创 剑指Offer(Spring)——IOC容器
容器内部的运行的原理:Spring启动的时候读取应用程度提供的bean配置并在Spring容器中生成一份相应的bean配置注册表,然后根据这张注册宝去是实例化bean,装配好bean之间的依赖关系后为上层提供准备就绪的运行环境,Spring提供一个配置文件描述bean和bean之间的依赖关系,利于Java的反射功能实例化bean,并在建立bean之间的依赖关系。Spring IOC支持的功能...
2020-02-03 23:55:27 324
原创 剑指Offer(Spring)——IOC原理
IOC(Inversion of Control):控制反转,是Spring最核心部分也是任意组件的基本,是一种思想,可以使你从繁琐的对象嵌套中解锁出来更进一步突出面向对象,在这之前先来了解一下依赖注入(Dependency Inversion)。举个依赖注入的例子:设计行李箱:可以发现这四个是互相依赖的关系,他们是逐步依赖的关系,如果底层修改全局都得修改,通过代码来直观的观察一下:如果...
2020-02-03 21:16:27 394
原创 剑指Offer(类库)——Java的IO机制
本文主要介绍一下BIO、NIO、AIOBlock-IO:基于字节流的InputStream和OutputStream,基于字符流的Reader和Writer,同时也包括Socket那些java.net包下的类等。BIO的属性是同步阻塞的,优点就是写起来简单缺点是效率太低。NonBlock-IO:在JDK4中引入了NIO,它是一种构建多路复用的,同步非阻塞的IO操作提供了Selector、C...
2020-02-02 01:03:01 204
原创 剑指Offer(类库)——HashMap、HashTable、ConcurrentHashMap(下)
HashTableHashTable是线程安全的,那么HashTable做了什么操作才实现了HashMap没做到的线程安全呢???写个简单的demo:进入synchronizedMap内部看一下:声明了一个mutex修饰对象的成员,使用互斥锁包围起来保证了内容互斥,串行化访问以此来保证线程安全。HashTable也是一样的和HashMap实现逻辑没有什么区别,是用同样的去加锁而已:...
2020-02-01 22:27:39 157
原创 剑指Offer(类库)——HashMap、HashTable、ConcurrentHashMap(上)
Map是由一对对的key-value组成的,key要求是唯一的,value不要求。通过看源码可以得出:key自带去重功能是Set类型的,value是Collection接口可存放任意集合。来看一下Map的实现类:HashMap、HashTable、ConcurrentHashMap之间的区别?HashMapJDK8之前HashMap是由数组+链表组成的,数组查找快增删慢,链表增删快查...
2020-02-01 21:12:27 260
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人