自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

刘剑峰的博客

一起交流技术,谦虚学习

  • 博客(21)
  • 资源 (4)
  • 收藏
  • 关注

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

博文目录一、网络层的基本概念 二、网络层IP协议的基本内容 三、IPv4分组的格式 四、IPv4分组的地址分类和表示 五、IPv4地址的子网划分 六、CIDR(无类别域间路由) 七、IPv6协议 八、IPv4和IPv6共存——隧道技术一、网络层的基本概念网络层上层为传输层,下层为数据链路层,它通过路由选择算法,为IP分组从源主机到目的主机选择一条合适的传输路径,为传输层端—端数据传输提

2016-12-30 15:10:34 17802 2

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

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

2016-12-29 22:13:54 33702 9

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

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

2016-12-29 15:59:31 25808 6

原创 局域网的概念

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

2016-12-28 21:57:13 4914

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

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

2016-12-28 00:15:17 708

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

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

2016-12-27 11:45:17 999

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

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

2016-12-26 19:39:45 1894 1

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

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

2016-12-24 20:54:17 1030 1

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

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

2016-12-20 19:47:11 4345

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

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

2016-12-19 21:33:06 877

原创 Java设计模式—抽象工厂

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

2016-12-12 23:04:47 447

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

Java并发编程:volatile关键字解析   volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java

2016-12-12 20:17:31 1096

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

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

2016-12-11 14:19:47 12143 2

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

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

2016-12-10 17:04:39 15529 10

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

赫夫曼编码是一种广泛用于数据压缩的问题,该算法的主要优势在于节约了存储和传输成本。 举一个例子: 假设要传输的数据为那么传输成本就是: 45*3 + 30 * 3 + 29 * 3 + 10 * 3 + 8 * 3 + 5 * 3 = 381个字符我们可以使用赫夫曼编码思想来解决先合并最小频率的2个字符对应的子树,计算合并后的子树的频率;重新排序各个子树;重复步骤1重复步骤2对二叉树

2016-12-10 11:06:31 4438 1

原创 贪心算法详解

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

2016-12-08 23:18:15 14395 3

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

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

2016-12-07 13:17:29 2912

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

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

2016-12-05 13:04:21 537

原创 动态规划 矩阵连乘问题

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

2016-12-04 15:12:06 3263

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

前面我们已经了解了分治法的原理和使用,分治法的经典问题——大整数相乘,趁热打铁,来学习一下如何使用分治法来求数列中的最大最小值。利用分治法来分析伪代码时间复杂性代码实现#include<cstdio>#include<cstdlib>#include<cmath>using namespace std;int* getmaxmin(int a, int b){ int* m = new

2016-12-03 20:36:41 17985 2

原创 分治法的经典问题——大整数相乘

分治法的原理讨论问题时,先来了解一下什么是分治法。 分治法的意思就是,分而治之,也就是把一个问题,拆分成几个小问题,最后再汇总解决的方法通过大整数相乘问题来了解分治法假如现在我们要求两个大整数相乘的乘积,如1234 * 1234(这里为了了分析简便,所以不举形如1234567891234567这样的大整数,不必要在此纠结),那么按照我们小学学的乘法,就是用乘数的每一项去和1234相乘,这样很明

2016-12-03 17:13:27 78562 25

java爬虫完整代码

java爬虫完整代码,数据挖掘

2016-11-12

java爬虫代码

java爬虫代码

2016-11-11

android java日期计算工具

android java日期计算工具

2016-08-11

安卓版本检测工具类

用于检测版本是否需要更新,换掉url地址直接可以用

2016-08-10

空空如也

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

TA关注的人

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