自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(193)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 ICMP(Internet Control Message Protocol)网际控制报文协议初识

什么是ICMP协议ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。它工作在OSI七层模型的中的第三层——网络层。ICMP报文

2018-04-16 11:07:00 1237

原创 ARP(Address Resolution Protocol)地址解析协议初识

ARP(Address Resolution Protocol)地址解析协议ARP是什么?ARP址解析协议是根据IP地址获取物理地址的一个TCP/IP协议。它工作在OSI七层模型的中第二层——数据链路层。ARP有什么用?使用ARP地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保证通信的顺利进行。ARP缺点是什么?可能会受到恶意攻击——ARP欺骗与

2018-04-16 09:44:34 2199

原创 NAT(Network Address Tranlation )——解决IPV4地址短缺之道的方法初识

什么是NATNAT作为一种减轻IPv4地址空间耗尽速度的方法,最早出现在Cisco IOS 11.2版本中。 它有什么用?IP地址不足;这种通过使用少量的公有IP地址代表较多的私有IP地址的方式,将有助于减缓可用的IP地址空间的枯竭。隐藏内部网络;NAT不仅能解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。NAT 之内的 PC 联...

2018-04-13 18:24:27 5959

转载 转载:Lock锁机制的原理及与Synchronized的比较——源码解说

文章转载自:https://blog.csdn.net/Luxia_24/article/details/52403033(为了简化阅读难度,本文只挑选了大部分内容进行转载,并对代码进行了注释,更加详细的内容可以参考原文)Lock锁机制的实现原理Lock锁机制存在于Java语言层面,可以通过编程进行控制。Lock机制加锁过程主要通过3个方法:1、Sync.nonfa...

2018-04-11 14:59:32 418

转载 阻塞和非阻塞,同步和异步IO及IO多路复用

本文章转载自:https://www.cnblogs.com/George1994/p/6702084.html阻塞和非阻塞,同步和异步1 例子 故事:老王烧开水。出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。老王想了想,有好几种等待方式1.老王用水壶煮水,并且站在那里,不管水开没开,每隔一定时间看看水开了没。-同步阻塞老王想了想,这种方法不够聪明。2.老王还是用水壶煮水

2018-04-10 15:21:36 1169

转载 Redis对象系统——五种对象、底层实现和常用命令

注:本文章总结自黄建宏前辈的《Redis设计与实现》,仅当做笔记和备忘录,并非本人原创。第八章 对象前面介绍的都是基本数据结构,Redis并没有直接使用这些基本数据结构,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型。 Redis通过引用计数实现了内存回收,同时还实现了对象共享机制。 ps: redis用引用计数法的技术实现

2018-04-09 15:16:39 1948

原创 Redis哈希对象的ziplist编码实现了O(1)复杂度吗

问题描述 问题:Redis中哈希对象有两种编码方式,分别是ziplist、hashtable方式。哈希对象,总得体现哈希算法,使得基本操作达到O(1)的效率。hashtable编码方式使用字典,也即是Java中hashMap的方式,这个我可以理解。但是,ziplist方式所有元素都是紧挨的,它是怎么实现hash,并使得查询等操作有O(1)的时间效率的呢?分析:让我们从方法调用...

2018-04-09 12:10:38 3466 3

原创 Redis学习问题记录——持续更新中

问题: Redis引用计数进行内存回收,怎么解决循环引用 问题描述:redis用引用计数法的技术实现了内存回收。但是引用计数法的一个致命弱点就是,如果遇到循环引用,那么循环引用的对象将永不被回收。因此造成内存泄露。所以JVM摒弃这个内存回收技术,采用根路径可达算法。那么Redis是怎么解决引用计数的循环引用问题的呢?解答:待解决分析:问题:Redis哈希对象ziplist...

2018-04-08 18:49:17 521 1

原创 Java(JDK1.9)集合框架归纳总结——Map接口继承体系

注:该系列文章总结自JDK1.9源码的文档注释和源码,我对源码的部分中文注释已经同步到Github:https://github.com/Dodozhou/JDK Map接口实现概述Map的实现体系中,常用的类和接口可以大致分为三层。下面一一说明这些类或接口的特点和作用。第一层第一层包含一个抽象类AbstractMap和一个接口SortedMap。AbstractMap...

2018-04-07 15:42:56 1276 1

原创 Java(JDK1.9)集合框架归纳总结——Collection接口的第三层——应用层

注:该系列文章总结自JDK1.9源码的文档注释和源码,我对源码的部分中文注释已经同步到Github:https://github.com/Dodozhou/JDK Collection接口的第三层——应用层&具体实现应用层就是各个抽象类、底层接口的具体实现,使我们实际使用的各种容器和工具类,如ArrayList、Vector、HashSet、TreeSet等。结构图如下:...

2018-04-07 12:53:53 729

原创 Java(JDK1.9)集合框架归纳总结——Collection接口的第二层子接口和抽象类

注:该系列文章总结自JDK1.9源码的文档注释和源码,我对源码的部分中文注释已经同步到Github:https://github.com/Dodozhou/JDK Collection的第二层接口和抽象类Collection第二层常用接口、类继承体系: Collection继承体系的第二层,即List、AbstractCollection、Set和Queue的常用直接子类或接口如...

2018-04-06 21:29:59 571

原创 Java(JDK1.9)集合框架归纳总结——Collection接口的第一层接口和抽象类

注:该系列文章总结自JDK1.9源码的文档注释和源码,我对源码的部分中文注释已经同步到Github:https://github.com/Dodozhou/JDK Collection的第一层接口和抽象类Collection第一层常用接口、类继承体系:Collection的直接后继有3个接口和一个抽象类。3个接口分别是List:Collection接口的有序集合实现,也叫...

2018-04-06 19:39:58 425

原创 Java(JDK1.9)集合框架归纳总结——集合框架图与两个顶级接口

注:该系列文章总结自JDK1.9源码的文档注释和源码,我对源码的部分中文注释已经同步到Github:https://github.com/Dodozhou/JDK Java Collections Framework概述Java集合框架继承图: Java集合框架由两个顶层接口衍生而出。这两个接口区别如下:Collection:保存一维列表,有数组和链表两种形式。Map:保存二...

2018-04-06 17:04:20 1924

转载 Java集合之WeakHashMap、IdentityHashMap、EnumMap简介

转载自:https://blog.csdn.net/wxc880924/article/details/52683097WeakHashMapWeakHashMap与HashMap的用法基本类似。区别:HashMap的key保留了对实际对象的强引用,这意味着只要HashMap对象不被销毁,还HashMap的所有key所引用的对象就不会被垃圾回收,HashMap也不会自动删除这...

2018-04-06 15:41:59 236

原创 LinkedHashMap与LRU——来自源码的启示

LinkedHashMap是什么?public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>LinkedHashMap是HashMap的扩展,它根据元素的插入顺序或者访问顺序(accessOrderd属性指定),使用双向链表,将所有元素连接起来,使得对HashMap的遍历变得有序。 示意图如下:

2018-04-06 13:43:29 391

转载 3种缓存淘汰算法LFU、LRU和LRU-K

本文章转载自:https://blog.csdn.net/jake_li/article/details/506598681. LFU1.1 原理LFU(Least Frequently Used)算法根据数据的历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高”。1.2. 实现LFU的每个数据块都有一个引用计数,所有数据块按照引用计数排序,具有相同引用计数的

2018-04-05 21:45:56 4224

原创 数据库为什么使用B+树而不是B树

B树和B+树的区别B树和B+树的区别主要有两点:在B树中,你可以将键和值存放在内部节点和叶子节点,但在B+树中,内部节点都是键,没有值。叶子节点同时存放键和值B+树的叶子节点有一条链相连,而B+树的叶子节点各自独立。B树与B+树的对比示意图使用B+树的好处由于B+树的内部节点只存放键,不存放值,因此,一次读取,可以在内存页中获取更多的键,有利于更快地缩小查找范围...

2018-04-05 12:01:49 3484

原创 HashMap与HashTable的哈希算法——JDK1.9源码阅读总结

HashTable中的哈希算法下面是HashTable源码中的put方法:public synchronized V put(K key, V value) { // Make sure the value is not null if (value == null) { throw new NullPointerExceptio...

2018-04-04 12:42:03 858

原创 Java序列化——Serializable、Externalizable源码阅读与总结

一、Java序列化概述1、什么是序列化序列化(Serialization):是将对象的状态信息转换为可以存储或传输的形式的过程。更通俗地讲,是将该对象字段和状态信息以字节流的方式输出到目的地。2、序列化的应用场景一是实现pojo对象的读写操作,将每个对象转换为字节流,而这些字节流可以被持久化到设备上,再次读取时会将字节流还原成对象。当我们希望某些数据能在程序停止运行后,还...

2018-04-01 22:36:26 571

转载 Java——transient关键字及Java对象序列化

转载自:http://www.cnblogs.com/lanxuezaipiao/p/3369962.html哎,虽然自己最熟的是Java,但很多Java基础知识都不知道,比如transient关键字以前都没用到过,所以不知道它的作用是什么,今天做笔试题时发现有一题是关于这个的,于是花个时间整理下transient关键字的使用,涨下姿势~~~好了,废话不多说,下面开始:1. transient的作

2018-04-01 18:08:39 1144

原创 JDK1.9 集合框架源码阅读——Map系列——有趣的问题及源码解答

Map.get(Object key) V get(Object key); 该方法将会返回Map中对应于key的value。如果这个key不存在,则返回null。问题那么问题来了,如果这个map本身允许null作为value呢?这样,当该方法返回null时,就会有两种情况,一种是不存在该key,第二种是该key对应的值就是null。解答官方源码注释给出了解决方法:...

2018-03-31 15:25:29 226

转载 关于常见排序算法的归纳总结以及思考解答

该文章转载自:https://blog.csdn.net/jianyuerensheng/article/details/51263709常用排序算法的复杂度分析整理 具体分析如下:1 冒泡排序(BubbleSort)冒泡排序是最慢的排序算法。在实际运用中它是效率最低的算法。它通过一趟又一趟地比较数组中的每一个元素,使较大的数据下沉,较小的数据上升。它是O(n^2)的算法。...

2018-03-31 11:05:15 659

原创 TreeSet为什么要用TreeMap来作为底层容器?——来自JDK1.9源码的启示

TreeSet与TreeMap相信很多同学都知道TreeMap和TreeSet,也知道TreeSet是使用TreeMap来容纳元素的,那么问题来了: TreeSet从外观上看是一个一维数组,而TreeMap是一个二维的键值对。为什么要用一个二维的容器来装一维的数据呢?这样不是会浪费map的value域吗?TreeMap中的value里面又是装的什么呢? 这些问题困扰了我很久,直到我看到了T...

2018-03-28 21:33:37 742 1

原创 腾讯2018春招模拟——编程题1——4个点能否构成正方形

题目 判断输入的4个点是否构成正方形 输入t组数据,每组数据包含两行,一行是4个点的横坐标,一行是4个点的纵坐标 示范输入: 2 0 0 1 1 0 1 0 1 0 1 5 6 1 6 0 5 示范输出: Yes Yes我的思路判断任意3个点是否构成等腰直角三角形,如果是,则为正方形。public class...

2018-03-23 22:58:47 1191 3

原创 《剑指offer》Java实现——每天9题——第6天

面试46 把数字翻译成字符串 给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成“a”,1翻译成“b”,……,11翻译成“l”,……,25翻译成“z”。一个数字可能有多个翻译。例如,12258有5种翻译,分别是“bccfi”、“bwfi”、“bczi”、“mcfi”和“mzi”。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。测试用例功能测试(只有1位数字...

2018-03-09 09:39:23 489 1

原创 《剑指offer》Java实现——每天9题——第5天

面试题37 序列化二叉树 请实现两个函数,分别用来序列化和反序列化二叉树测试用例功能测试(树有多个节点;树只有一个节点;每个节点只有左子树或者右子树;反序列化时序列为空,或者null)特殊值测试(树为空)实现代码//一个全局的计数变量,用于反序列化计数 private static int index=0; /** * 序列化...

2018-03-06 22:41:07 381

原创 《剑指offer》Java实现——每天9题——第4天

面试题28 对称的二叉树 请实现一个函数,用来判断一颗二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。测试用例功能测试(对称的树;因结构而不对称的二叉树;结构对称但节点值不对称的二叉树)特殊值测试(树为null;树只有一个根节点;所有节点值都相同的树)实现代码/** * 入口方法,负责进行参数校验和递归调用 * @p...

2018-03-05 21:14:49 412

原创 《剑指offer》Java实现——每天9题——第3天

面试题19 正则表达式匹配 请实现一个函数用来匹配包含’.’和’‘的正则表达式。模式中的字符’.’表示任意一个字符,而’‘表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串“aaa”与模式“a.a”和“ab*ac*a”匹配,但与“aa.a”和“ab*a”均不匹配。测试样例功能测试(模式字符串里包含普通字符、’.’、’*’;...

2018-03-04 21:16:10 437

原创 《剑指offer》Java实现——每天9题——第2天

面试题10 斐波那契数列 题目一:求斐波那契数列的第n项。写一个函数,输入n,求斐波那契数列的第n项。测试用例功能测试(如输入3、5、10)边界值测试(如输入0,1,2)性能测试(输入较大的数字,如40、50、100等)实现代码/** * 求斐波拉契数列的第n项。 * @param n 第n项 * @return 第n项的值 */ pub

2018-03-03 22:18:08 462

原创 《剑指offer》Java实现——每天9题——第1天

面试题1 赋值运算符函数该题目涉及到c++语言的指针特性,java语言暂没想出解决方案。面试题2 实现Singleton模式 设计一个类,我们只能生成该类的一个实例。实现代码 public class LazyLoadedSingleton{ private LazyLoadedSingleton{} //private构造方法,防止外部实例化...

2018-03-02 20:47:32 1669

原创 《剑指offer》序——面试流程及面试须知

通常,面试是从电话面试开始的。接下来可能有一两轮共享桌面远程面试,面试官通过桌面共享软件远程考查应聘者的编程和调试能力。如果应聘者的表现足够优秀,那么公司将邀请他到公司去接收现场面试。 通常,面试官会认可应聘者的几种编程习惯思考清楚再开始编码。应聘者应先想清楚解决问题的思路,如算法的时间、空间复杂度各是什么,有哪些特殊情况需要处理等,然后动手编写代码。良好的代码命名和缩进对齐习惯。良好的代码命

2018-03-01 16:06:32 623 1

原创 图论——图的邻接表实现——Java语言(完整demo)

一、图的实现方式概述1、图的简单实现方法——邻接矩阵表示图的一种简单的方法是使用一个一维数组和一个二维数组,称为领接矩阵(adjacent matrix)表示法。 对于每条边(u,v),置A[u,v]等于true;否则,数组的元素就是false。如果边有一个权,那么可以置A[u][v]等于该权,而使用一个很大或者很小的权来标记不存在的边。虽然这样表示非常简单,但是,它的空间需求则为θ...

2018-02-28 17:34:56 7153 4

原创 排序算法——快速排序的图解、代码实现以及时间复杂度分析

快速排序在C++的泛型排序中,拷贝对象需要很大的开销,而比较对象常常是相对省时的(编译器的自动优化)。在这种情况下,如果我们能够使用更少的数据移动,那么有理由让一个算法多使用一些比较。而快速排序(Quicksort)满足了这种特点,实际上C++中通常所使用的排序例程就是使用的快速排序。 快速排序也是一种分治的递归算法。它的平均运行时间是O(NlogN),最坏情形性能为O(N2)。经典快速排序将数组

2018-02-26 13:19:33 3124

原创 排序算法——希尔排序的图解、代码实现以及时间复杂度分析

希尔排序(Shellsort)希尔排序是冲破二次时间屏障的第一批算法之一。 希尔排序通过比较相距一定间隔的元素来工作;各躺比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。由于这个原因,希尔排序有时也叫做缩减增量排序。 希尔排序使用一个序列h1,h2,…,hi,这个序列叫做增量序列(increment sequence)。增量序列只要求h1=1,以及hi>hi-1。

2018-01-22 19:04:21 9140 1

原创 排序算法——插入排序的图解、代码实现以及时间复杂度分析

插入排序插入排序的原理: 插入排序由N-1躺排序完成,对于p=1到N-1躺,插入排序保证从位置0到位置p的元素为已排序状态。 插入排序的代码实现: /** * 插入排序的实现例程,特点是使用了泛型,可以接受任何实现了Comparable接口的类, * 并且使用了一种巧妙的方法避免了交换操作。 * @param a 需要排序的数组 *

2018-01-21 15:47:25 2386

原创 二叉堆建堆的优化算法原理图解及代码实现

二叉堆的简单建堆方法有时二叉堆是由一些项的初始结合构造而得。这种构造方法以N项作为输入。 最浅显的建堆方式,可以通过N个连续的insert操作(Williams’ method)来完成,由于每个insert将花费O(logN)时间,因此建堆的最坏运行时间是O(NlogN)。但是这种建堆的方式并不是最优算法。二叉堆的优化建堆方法更快速算法是,将N项以任意顺序放入树中,保持结构特性。

2018-01-20 18:22:26 4131 1

原创 数据库系统设计范例——座位预订系统设计

一、 系统概述应用场景:学校讲座座位预订系统需求分析:学生能够预订特定讲座的座位,管理者可以查询一场讲座的座位预订情况二、 概念模型概念模型通过E-R来展示: 系统的E-R图 三、 关系模型实体类型转化为关系模型 学生 (学号,姓名) 座位 (座位号) 讲座 (讲座号,标题,地点,时间)联系转化为关系模型 学生-座位属于1:1联系,将学号加入座位

2018-01-15 17:33:34 9282 2

原创 数据结构之——“优先队列”的理论基础知识(Java语言)

优先队列一、什么是优先队列?在实际应用中,以打印机为例,有的作业虽然排在后面,但很重要,需要优先打印,这种带有优先级的队列,叫做优先队列(priority queue)。 优先队列是允许至少下面两种操作的数据结构:insert(插入)deleteMin(删除最小者):找出、返回并删除优先队列中最小的元素。优先队列的应用场景:操作系统、外部排序算法、贪婪算法……二

2018-01-15 17:15:01 863

原创 物联网传输技术——ZigBee协议概论

第一部分 物联网简介根据物联网中信息的生成、传输、处理和应用的过程,可以把物联网系统从结构上分为3层:感知层、传输层(网络层)、应用层。 网关节点实现与互联网等外部网络的链接,将收到的数据转发到外部网络上。 物理传感器:是检测物理量的传感器,它是利用某些物理效应,将被测的物理量转化为便于处理的能量信号的装置。 化学传感器:必须具有对被测化学物质的形状或分子结构进行俘获的功能,并且还能将所

2018-01-11 15:00:46 7096

转载 遍历Java Map的方法——Java基础

转载自:http://blog.csdn.net/chenlili_liumiao/article/details/7846512我们知道map是由键值对组成的,要获取map中的元素,必须知道key,然后通过map.get(key)来获取值。那么如何遍历Map?将map转化为CollectionSet keySet():获取键的集合Collection values():获取值的集合Set遍历

2017-12-23 21:20:21 1928

svn数据库清理工具——sqlite脚本

当遇到svn: E155009: Failed to run the WC DB work queue associated with错误时需要用到的SQLite数据库打开工具。此工具是2018.08.15下载的官网最新版本。

2018-08-15

JSON基础归纳整理

JSON基础归纳整理,从o开始介绍JSON,并逐渐拓展到Google的Gson工具的使用,包含了json中最常用的JSONArray对象和JSONObject对象的使用实例。

2016-12-06

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

TA关注的人

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