刘剑峰的博客

一起交流技术,谦虚学习

OSI参考模型——网络层:IPv4协议和IPv6协议详解

博文目录一、网络层的基本概念 二、网络层IP协议的基本内容 三、IPv4分组的格式 四、IPv4分组的地址分类和表示 五、IPv4地址的子网划分 六、CIDR(无类别域间路由) 七、IPv6协议 八、IPv4和IPv6共存——隧道技术一、网络层的基本概念网络层上层为传输层,下层为数据...

2016-12-30 15:10:34

阅读数 5865

评论数 1

OSI参考模型——数据链路层详解

一、数据链路层的功能1. 为什么要设置数据链路层 物理层的线路有传输介质与通信设备组成,比特流在传输介质上传输时一定会存在误差,而设置数据链路层目的就是为了在存在差错的物理层的基础上,采用差错检测,差错控制和流量控制等方法,将有差错的物理线路改进为无差错的数据链路,向网络层提供高质量的数据传输服务...

2016-12-29 22:13:54

阅读数 16550

评论数 7

OSI参考模型——物理层详解

一、物理层的基本功能物理层是OSI参考模型的最低层,它利用传输介质为通信的主机之间建立,管理和释放物理连接,实现比特流的透明传输(传输单位是比特),保证比特流通过传输介质的正确传输。1. 与数据链路的关系物理层屏蔽了物理层采用的传输介质,通信设备和通信技术的差异性,指定不同类型的物理协议,使得数据...

2016-12-29 15:59:31

阅读数 11987

评论数 5

局域网的概念

一、介质访问控制1.介质访问控制的概念介质访问控制(MAC)是所有共享介质类型的局域网的共性问题 共享介质:连接多台计算机的同轴电缆,双绞线与光纤等 多路访问:多个主机需要通过一条共享介质发送和接受数据 冲突:如果两个或多个主机同时在一条共享介质发送数据,造成接受主机无法正确接受发送主机的数...

2016-12-28 21:57:13

阅读数 1822

评论数 0

《Java并发编程实战》读书笔记五:深入理解同步实现

博文目录一、构建自定义的同步工具 - 1. 内置的条件队列 - 2. Condition对象 - 3. AbstractQueuedSynchronizer(AQS)(重点) - 4. java.util.concurrent同步类中的AQS二、原子变量和非阻塞同步机制 - 1. 比较并...

2016-12-28 00:15:17

阅读数 512

评论数 0

《Java并发编程实战》读书笔记四:活跃性和性能,死锁和显示锁

博文目录一、活跃性危险:死锁 - 1.锁顺序死锁 - 2.动态锁顺序死锁 - 3.协作对象之间的死锁 - 4.死锁的避免与分析 - 5.其它活跃性危险二、性能和可伸缩性 - 1.使用线程的性能开销 - 2.减少锁竞争提升性能三、显式锁(Lock) - 1. ReentrantLoc...

2016-12-27 11:45:17

阅读数 737

评论数 0

《Java并发编程实战》读书笔记三:使用Executor框架

博文目录一、Executor框架 - 1.使用Executor框架 - 2.线程池 - 3.Executor的生命周期:ExecutorService - 4.延迟任务和周期任务 - 5.Callable对比Runnable - 6.Callable和Future结合使用返回结果 -...

2016-12-26 19:39:45

阅读数 1435

评论数 1

《Java并发编程实战》读书笔记二:构建线程安全

一、用组合来实现线性安全1.设计线程安全的类设计线程安全类的三个基本要素: 1. 找出构成对象状态的所有变量 2. 找出约束状态变量的不变性条件 3. 建立对象状态的并发访问管理策略要分析对象的状态,首先从对象的域开始。如果对象所有的域都是基本类型的变量,那么这些域将构成对象的全部状态;如果...

2016-12-24 20:54:17

阅读数 709

评论数 1

《Java并发编程实战》读书笔记一:基础知识

一、线程安全性一个对象是否是需要是线性安全的,取决于它是否需要被多个线程访问 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要额外的同步,这个类都能表现正确的行为,那么就说这个类是线程安全的。1. 无状态对象无状态对象不包含域,也不包含与其...

2016-12-20 19:47:11

阅读数 2229

评论数 0

Java的内存机制(堆和栈)简单理解

偶然看到一道面试题,Java在实例化一个类的时候,数据在堆和栈中是如何存放的?public class A{ public int i=1; public static A a1 = new A(); public static void mian(String args[...

2016-12-19 21:33:06

阅读数 454

评论数 0

Java设计模式—抽象工厂

工厂方法的缺点之前我们说过了Java设计模式—工厂方法,它的好处就是降低了耦合度,使我们能够更专注做自己的事情。但是有一点很不好,每一个产品都对应一个工厂,也就是说,将来我们要增加产品时,还要增加与之对应的工厂类,这样当项目相对大起来之后,会类爆炸,因此在实际开发中,更加常用的是抽象工厂。产品等级...

2016-12-12 23:04:47

阅读数 290

评论数 0

Java并发编程:Java内存模型和volatile关键字解析

Java并发编程:volatile关键字解析    volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。   volatile关键字虽然...

2016-12-12 20:17:31

阅读数 583

评论数 0

贪心算法 迪杰斯特拉算法求最短路径

之前我们学习过弗洛伊德算法求最短路径,但是使用了三重循环,导致时间复杂度是O(n^3),而迪杰斯特拉算法应该是求最短路径的最好的算法了。迪杰斯特拉算法原理迪杰斯特拉算法实际上是使用贪心算法和bfs来求最短问题的,它的核心思想是,按照顶点来迭代,每一次迭代挑选当前离源点最短的路径(贪心思想),然后以...

2016-12-11 14:19:47

阅读数 6918

评论数 0

CentOS6.8下使用yum安装mysql,并远程登陆mysql

第1步、查看CentOS下是否已安装mysql输入命令 :yum list installed | grep mysql 第2步、删除已安装mysql输入命令:yum -y remove mysql看到complete就说明成功了 第3步、查看yum库中的mysql(非必须)输入命令:yum l...

2016-12-10 17:04:39

阅读数 11524

评论数 9

贪心算法 赫夫曼编码问题(Huffman)

赫夫曼编码是一种广泛用于数据压缩的问题,该算法的主要优势在于节约了存储和传输成本。 举一个例子: 假设要传输的数据为那么传输成本就是: 45*3 + 30 * 3 + 29 * 3 + 10 * 3 + 8 * 3 + 5 * 3 = 381个字符我们可以使用赫夫曼编码思想来解决 先合并最小...

2016-12-10 11:06:31

阅读数 1773

评论数 0

贪心算法详解

贪心算法基本原理贪心算法的核心就是贪,就是总是做出当前看来最优的选择,因此可知,贪心算法不从整体去考虑,它做出的选择也是局部最优选择,从而达到全局优化选择。虽然贪心算法不一定能得到最优解,但是对很多问题,它是能够得到整体最优解的,因此贪心算法是否能到最优解,需要严格证明。贪心算法产生有化解的条件 ...

2016-12-08 23:18:15

阅读数 4299

评论数 1

动态规划 01背包问题(简单易懂)

之前讲过了动态规划的几个例子,分别是动态规划 矩阵连乘问题 和 动态规划 最常公共子序列问题,学习了动态规划的使用,而01背包问题作为动态规划的经典问题,同时对贪心算法也是一个很重要的补充,所以也必须掌握01背包问题的原理和实现。01背包问题题目描述:有编号分别为a,b,c,d,e的五件物品,它...

2016-12-07 13:17:29

阅读数 969

评论数 0

动态规划 最常公共子序列问题

动态规划前面一篇博文动态规划 矩阵连乘问题,学习了什么是动态规划,以及什么时候该用动态规划,总得来说就是: 当一个问题可以被分成若干个子问题求解,且子问题可以优化子结构,存在子问题重复的时候,就可以使用动态子结构。最长公共子序列问题最长公共子序列的定义:我们来考虑一下如何分为子问题设 两个序列分...

2016-12-05 13:04:21

阅读数 236

评论数 0

动态规划 矩阵连乘问题

什么是动态规划看到把原始问题划分成一系列子问题,我们很容易想到分治算法,但是对于分治算法,很可能会遇到子问题被重复使用 就像下面这个矩阵连乘,分解为子问题就会出现三个重复子问题,用分治算法时,就会重复计算相同的子问题,使程序效率变得低下所以,这就是动态规划的用武之地:对于一个问题,可分为多个相关...

2016-12-04 15:12:06

阅读数 746

评论数 0

分治法的经典问题——求数列中最大最小值

前面我们已经了解了分治法的原理和使用,分治法的经典问题——大整数相乘,趁热打铁,来学习一下如何使用分治法来求数列中的最大最小值。利用分治法来分析伪代码时间复杂性代码实现#include<cstdio> #include<cstdlib> #include<cmath&...

2016-12-03 20:36:41

阅读数 8905

评论数 1

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