自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(158)
  • 资源 (3)
  • 收藏
  • 关注

原创 HTTP/2

HTTP协议的不足(HTTP/1.1):同一时间, 一个连接只能对应一个请求; 针对同一个域名, 大多数浏览器允许同时最多6个并发连接 只允许客户端主动发起请求, 一个请求只能对应一个响应 同一个会话的多次请求中, 头信息会被重复传输; 通常会给每个传输增加500~800字节的开销, 如果使用 Cookie, 增加的开销有时会达到上千字节SPDYSPDY(speedy的缩写), 是基于TCP的应用层协议, 它强制要求使用SSL/TLSSPDY与HTTP的关系: SPDY...

2021-01-24 12:14:41 545

原创 HTTPS(TLS1.2连接过程解析 - 基于ECDHE密钥交换算法)

HTTPS(HyperText Transfer Protocol Secure), 译为: 超文本传输安全协议, 常称为HTTP over TLS、HTTP over SSL、HTTP Secure (HTTPS的默认端口号是443(HTTP是80))当在浏览器导航栏上输入: http://www.baidu.com, 会被重定向到: https://www.baidu.com上SSL/TLSHTTPS是在HTTP的基础上使用SSL/TLS来加密报文, 对窃听和中间人攻击提供合理的防护

2021-01-23 15:32:20 2880 4

原创 网络安全 (加密, 解密)

网络攻击网络通信中面临的4种安全威胁:截获: 窃听通信内容 中断: 中断网络通信 篡改: 篡改通信内容 伪造: 伪造通信内容网络层 - ARP欺骗ARP欺骗(ARP spoofing),又称ARP毒化(ARP poisoning)、ARP病毒、ARP攻击ARP欺骗可以造成的效果:可让攻击者获取局域网上的数据包甚至可篡改数据包 可让网络上特定电脑之间无法正常通信(例如网络执法官这样的软件) 让送至特定IP地址的流量被错误送到攻击者所取代的地方 ......ARP欺骗

2021-01-21 11:42:31 2252

原创 代理服务器、CDN

代理服务器 (Proxy Server)1. 本身不生产内容2. 处于中间位置转发上下游的请求和响应 ① 面向下游的客户端: 它是服务器 ② 面向上游的服务器: 它是客户端正向代理、反向代理正向代理正向代理: 代理的对象是客户端正向代理 - 作用:隐藏客户端身份 绕过防火墙(突破访问限制) Internet访问控制 数据过滤 等反向代理反向代理: 代理的对象是服务器反向代理 - 作用:隐藏服务器身份 安全...

2021-01-20 11:20:22 1583

原创 网络互连模型 (应用层 -- HTTP)

HTTPHTTP(Hyper Text Transfer Protocol), 译为超文本传输协议, 是互联网中应用最广泛的应用层协议之一设计HTTP最初的目的是:提供一种发布和接收HTML页面的方法, 由URI来标识具体的资源, 后面用HTTP来传递的数据格式不仅仅是HTML, 应用非常广泛版本1991年, HTTP/0.9:只支持GET请求方法获取文本数据(比如HTML文档), 且不支持请求头、响应头等, 无法向服务器传递太多信息1996年, HTTP/1.0:支持POST、HEA..

2021-01-15 15:29:50 372

原创 网络互连模型 (应用层 -- DNS、DHCP)

应用层常见协议: 超文本传输: HTTP、HTTPS 文件传输: FTP 电子邮件: SMTP、POP3、IMAP 动态主机配置: DHCP 域名系统: DNSDNS协议域名(Domain Name)由于IP地址不方便记忆, 并且不能表达组织的名称和性质, 人们设计出了域名(比如baidu.com), 但实际上, 为了能够访问到具体的主机, 最终还是得知道目标主机的IP地址; 那干脆全程直接用域名, 不用IP地址?IP地址固定4个字节, 域名随随便便都至...

2021-01-12 14:27:03 402

原创 Hystrix服务隔离, 熔断

前言服务雪崩: 服务雪崩是系统中的蝴蝶效应导致的, 其发生的原因多种多样, 有不合理的容量设计, 或者是高并发下某一个方法响应变慢, 亦或是某台机器的资源耗尽; 从源头上我们无法完全杜绝雪崩源头的发生, 但是雪崩的根本原因来源于服务之间的强依赖, 所以我们可以提前评估。当整个微服务系统中, 有一个节点出现异常情况, 就有可能在高并发的情况下出现雪崩, 导致调用它的上游系统出现响应延迟, 响应延迟就会导致 tomcat 连接本耗尽, 导致该服务节点不能正常的接收到正常的情况, 这就是服务...

2020-12-30 17:16:41 458 2

原创 剑指offer_41_数据流中的中位数

链接剑指offer_41_数据流中的中位数题目如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。例如:[2,3,4]的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。 double findMedian(.

2020-12-24 11:29:45 130

原创 搭建简单的微服务工程(Eureka)

一、注册中心搭建工程目录:pom.xml :<!--1. 引入springboot父工程 --><parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.RELEASE</version> <rela

2020-12-16 17:15:19 577

原创 网络互连模型 (运输层)

传输层有2个协议: TCP (Transmission Control Protocol), 传输控制协议 UDP (User Datagram Protocol), 用户数据报协议UDP(用户数据报协议)UDP - 数据格式UDP是无连接的, 减少了建立和释放连接的开销UDP尽最大能力交付, 不保证可靠交付因此不需要维护一些复杂的参数, 首部只有8个字节 (TCP的首部至少20个字节)UDP长度(Length): 占16位, 首部的长度 + 数据的长度...

2020-12-10 11:54:23 532

原创 网络互连模型 (物理层、数据链路层、网络层)

网络互连模型为了更好地促进互联网络的研究和发展, 国际标准化组织 ISO 在1985年制定了网络互连模型OSI参考模型(Open System Interconnect Reference Model), 具有7层结构请求过程网络分层物理层物理层定义了接口标准、线缆标准、传输速率、传输方式等数字信号、模拟信号模拟信号(Analog Signal) 连续的信号, 适合长距离传输 抗干扰能力差, 受到干扰时波形变形很难纠正数...

2020-12-03 11:04:43 2130

原创 数据包的传输过程

数据包的传输过程 由上图可知: 数据包的发送需要经过三个阶段, 第一个阶段为由计算机A发送至路由器0, 第二个阶段为路由器0发送至路由器1, 第三阶段为由路由器1到计算机F网络、互联网、因特网网络(Network)互联网(internet)全世界最大的互联网是: 因特网(Internet),一般使用大写I开头的Internet特指因特网ISPISP, Internet Service P...

2020-12-02 17:05:57 2651

原创 路由

路由在不同网段之间转发数据, 需要有路由器的支持,默认情况下, 路由器只知道跟它直连的网段, 非直连的网段需要通过静态路由、动态路由告诉它静态路由: 管理员手动添加路由信息 适用于小规模网络动态路由: 路由器通过路由选择协议(比如RIP、OSPF)自动获取路由信息 适用于大规模网络实现4台在不同网段的主机间的通信连接模型:通信流程:路由器0的路由表配置方式:路由表配置①:路由表配置②:路由表配置③:路由表配置④:...

2020-12-01 13:39:02 255

原创 MAC地址_IP地址

MAC地址基础概念:1. 每个网卡都有一个6字节 (48bit) 的MAC地址 (Media Access Control Address)2. 全球唯一, 固话在网卡的ROM中, 由IEEE802标准规定 ① 前3字节: OUI(Organization Unique Identifier), 组织唯一标识符, 由IEEE的注册管理机构分配给厂商 ② 后3字节: 网络接口标识符, 由厂商自行分配当48位全为1时,代表广播地址: FF-FF-FF-FF-FF-FF...

2020-11-27 15:07:28 1876

原创 计算机之间的连接方式

计算机之间的连接方式 - 网线直连连接模型:说明: 使用交叉线连接两台计算机, 即可实现两台计算之间的通信计算机之间的连接方式 - 同轴电缆(Coaxial)连接模型:说明: 1. 半双工通信 2. 容易冲突 3. 不安全 4. 一旦某段线路出现问题, 整个通信网络都会瘫痪计算机之间的连接方式 - 集线器(Hub)连接模型(单一集线器):通信流程(单一集线器):连接模型(多集线器):通信流程(多集线器):...

2020-11-26 11:57:42 4924

原创 LeetCode_222_完全二叉树的节点个数

链接LeetCode_222_完全二叉树的节点个数题目给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~2h个节点。示例:输入: 1 / \ 2 3 / \ /4 5 6输出: 6思路: 二分查找 + 位运算对于任意二叉树,都可以通过广度优先搜索或深..

2020-11-24 11:13:50 290

原创 快慢指针判断链表中是否存在环以及查找环的起始位置

判断链表中是否有环? 使用快慢指针, 慢指针一次走一步, 快指针一次走两步, 当快慢指针相遇时,说明链表存在环为什么快指针每次走两步而慢指针每次走一步呢? 因为slow指针和fast指针都会进入环内, 就像在环形跑道内不同位置的两个人;slow指针在后面,fast指针在前面, 但实际上fast指针也在追slow指针, 希望能在环内超slow指针一圈(当超过一圈时会相遇)。那么fast指针总会追上slow指针的;那么fast指针会不会跳过slow指针呢(为什么快慢指针的步骤差必须为1呢)...

2020-11-05 17:21:38 814 2

原创 LeetCode_5_最长回文子串

链接LeetCode_5_最长回文子串题目给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"思路思路一、动态规划假设字符串("babab")为s, 它的长度为ndp是大小为 n * n 的二维数组, dp[i][j] 表示s[i,j]是否为回文串, 存储true, false...

2020-10-22 16:09:32 1454

原创 LeetCode_72_编辑距离

链接LeetCode_72_编辑距离题目给你两个单词word1 和word2,请你计算出将word1转换成word2 所使用的最少操作数。你可以对一个单词进行如下三种操作:插入一个字符 删除一个字符 替换一个字符示例示例1:输入:word1 = "horse", word2 = "ros"输出:3解释: horse -> rorse (将 'h' 替换为 'r') rorse -> rose (删除 'r') rose ->...

2020-10-21 15:52:57 226

原创 LeetCode_239_滑动窗口最大值

链接LeetCode_239_滑动窗口最大值题目给定一个数组 nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k个数字。滑动窗口每次只向右移动一位, 返回滑动窗口中的最大值。示例:输入: nums = [1, 3, -1, -3, 5, 3, 6, 7], 和 k = 3输出: [3, 3, 5, 5, 6, 7]解释: 滑动窗口的位置 最大值----------------------...

2020-10-03 15:42:37 115

原创 LeetCode_面试题 16.16. 部分排序

链接LeetCode_面试题 16.16. 部分排序题目给定一个整数数组,编写一个函数,找出索引m和n,只要将索引区间[m,n]的元素排好序,整个数组就是有序的。注意:n-m尽量最小,也就是说,找出符合条件的最短序列。函数返回值为[m,n],若不存在这样的m和n(例如整个数组是有序的),请返回[-1,-1]。示例:输入:[1, 2, 4, 7, 10, 11, 7, 12, 6, 7, 16, 18, 19]输出:[3,9]思路找出逆序对: 从左侧向右遍历, 寻找逆序对;.

2020-09-26 17:03:26 201

原创 串(Sequence)

串(Sequence)字符串 thank 的前缀(prefix)、真前缀(proper prefix)、后缀(suffix)、真后缀(proper suffix)串匹配算法蛮力(Brute Force) KMP Boyer-Moore Karp-Rabin Sunday蛮力(Brute Force)以字符为单位,从左到右移动模式串,直到匹配成功蛮力算法1蛮力1 – 执行过程蛮力1 – 实现/** * 蛮力匹配1 */public static

2020-09-23 19:44:29 207

原创 LeetCode_152: 乘积最大子数组

链接LeetCode_152: 乘积最大子数组问题给你一个整数数组nums,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释:子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释:结果不能为 2, 因为 [-2,-1] 不是子数组。题解题解1: 动态规划思路:第i个元素的最优解并不是在第i个元素的最优解基础上实现的;...

2020-09-23 14:35:03 130

原创 跳表(Skip List)

跳表(SkipList)1. 跳表,又叫做跳跃表、跳跃列表,在有序链表的基础上增加了“跳跃”的功能2. Redis中 的 SortedSet、LevelDB 中的 MemTable 都用到了跳表3. 对比平衡树, 跳表的实现和维护会更加简单, 跳表的搜索、删除、添加的平均时间复杂度是 O(logn)使用跳表优化链表跳表的搜索1. 从顶层链表的首元素开始,从左往右搜索,直至找到一个大于或等于目标的元素,或者到达当前层链表的尾部2. 如果该元素等于目标元素,则表明该元素已被找到3.

2020-09-22 20:08:17 675 2

原创 B+树

B + 树B+树是B树的变体,常用于数据库和操作系统的文件系统中MySQL数据库的索引就是基于B+树实现的B+树的特点:(1) B+树分为内部节点(非叶子)、叶子节点2种节点 内部节点只存储key,不存储具体数据 叶子节点存储key和具体数据(2) 所有的叶子节点形成一条有序链表(3) m阶B+树非根节点的元素数量 x (┌ m/2 ┐ ≤ x ≤ m)硬盘盘片(platter)、盘面(side)、读写磁头(head)硬盘一般由多个盘片组成 每个盘片...

2020-09-22 19:48:37 435

原创 LeetCode_494: 目标和

链接LeetCode_494: 目标和问题给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号+和- 。对于数组中的任意一个整数,你都可以从+或-中选择一个符号添加在前面。返回可以使最终数组和为目标数 S 的所有添加符号的方法数。示例:输入:nums: [1, 1, 1, 1, 1], S: 3输出:5解释:-1+1+1+1+1 = 3+1-1+1+1+1 = 3+1+1-1+1+1 = 3+1+1+1-1+1 = 3...

2020-09-22 19:27:56 196

原创 LeetCode_376: 摆动序列

目录链接问题题解题解1: 暴力递归题解2: 动态规划题解3: 动态规划优化题解4: 空间复杂度优化 (动态规划最优解)题解5: 贪心链接LeetCode_376: 摆动序列问题如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如,[1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3)是正负交替出现的。相反, [1,4,7,2,5]..

2020-09-18 18:53:40 428

原创 布隆过滤器

目录思考布隆过滤器 (Bloom Filter)布隆过滤器的原理布隆过滤器的误判率布隆过滤器的实现思考1. 如果要经常判断 1 个元素是否存在,会怎么做? 很容易想到使用哈希表(HashSet、HashMap),将元素作为 key 去查找 时间复杂度:O(1),但是空间利用率不高,需要占用比较多的内存资源2. 如果需要编写一个网络爬虫去爬10亿个网站数据,为了避免爬到重复的网站,如何判断某个网站是否爬过? 很显然,HashSet、H...

2020-09-18 11:35:00 125

原创 LeetCode_139: 单词拆分

目录链接问题示例我的题解题解1: 记忆化递归题解2: 动态规划题解3: 动态规划 -- 剪枝优化题解4: 字典树链接LeetCode_139: 单词拆分问题给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。示例示例 1:输入: s = "leetcode", wordDict = ["le..

2020-09-17 17:35:44 174

原创 算法策略 - 动态规划

目录动态规划(Dynamic Programming)动态规划的常规步骤动态规划的一些相关概念无后效性有后效性算法1 – 找零钱问题状态定义题解– 暴力递归题解– 记忆化搜索题解– 递推思考题: 请输出找零钱的具体方案 (具体是用了哪些面值的硬币)题解– 通用实现优化算法2 – 最大连续子序列和问题状态定义状态转移方程和初始状态题解– 动态规划 – 实现题解– 动态规划 – 优化实现算法3 – 最长上升子序列 (LI...

2020-09-16 16:25:18 1143 1

原创 算法策略 - 分治

分治(Divide And Conquer)分治,也就是分而治之。它的一般步骤是(1) 将原问题分解成若干个规模较小的子问题(子问题和原问题的结构一样,只是规模不一样)(2) 子问题又不断分解成规模更小的子问题,直到不能再分解(直到可以轻易计算出子问题的解)(3) 利用子问题的解推导出原问题的解因此,分治策略非常适合用递归, 需要注意的是:子问题之间是相互独立的分治的应用 快速排序 归并排序Karatsuba算法(大数乘法)主定理(Master Theorem)练习1..

2020-09-11 18:07:10 195 1

原创 算法策略 - 贪心

目录贪心(Greedy)练习1 – 最优装载问题(加勒比海盗)问题思路代码实现练习2 – 零钱兑换问题思路代码实现贪心策略中存在的问题注意:练习3 – 0-1背包问题思路实例分析代码实现贪心(Greedy)贪心策略,也称为贪婪策略, 每一步都采取当前状态下最优的选择(局部最优解),从而希望推导出全局最优解贪心的应用:哈夫曼树最小生成树算法:Prim、Kruskal最短路径算法:Dijkstra练习1 – 最优装载问题(加勒

2020-09-11 17:25:38 327 1

原创 回溯: N皇后问题

目录回溯 (Back Tracking)N皇后问题 (NQueens)解决思路四皇后 – 回溯法四皇后 – 剪枝(Pruning)八皇后 – 回溯法流程N皇后问题– 实现N皇后问题–优化1N皇后问题–优化2回溯 (Back Tracking)回溯可以理解为: 通过选择不同的岔路口来通往目的地(找到想要的结果)每一步都选择一条路出发, 能进则进, 不能进则退回上一步(回溯), 换一条路再试树、图的深度优先搜索(DFS)、八皇后、走迷宫都是典型的回溯应...

2020-09-09 18:30:27 281

原创 递归(Recursion)

递归(Recursion)递归: 函数(方法)直接或间接调用自身函数的调用过程 函数的递归调用过程 如果递归调用没有终止, 将会一直消耗栈空间, 最终导致栈内存溢出(Stack Overflow), 所以必需要有一个明确的结束递归的条件, 也叫作边界条件、递归基实例分析求 1+2+3+...+(n-1)+n 的和 (n>0)实例1:总消耗时间 T(n)=...

2020-09-08 17:34:51 441 1

原创 最短路径: Dijkstra算法、Bellman-Ford算法、Floyd算法

目录最短路径(Shortest Path)最短路径 – 无权图最短路径 – 负权边最短路径 – 负权环最短路径算法Dijkstra (迪杰斯特拉算法)Dijkstra –思路Dijkstra – 执行过程Dijkstra –代码实现Bellman-Ford (贝尔曼-福特算法)Bellman-Ford–思路Bellman-Ford–思考Bellman-Ford –执行过程Bellman-Ford –代码实现Floyd (弗洛伊德算法...

2020-09-07 12:14:53 1638 2

原创 LeetCode_210: 课程表

链接LeetCode_210:课程表问题现在你总共有 n 门课需要选,记为0到n-1。在选修某些课程之前需要一些先修课程。例如,想要学习课程 0 ,你需要先完成课程1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回一种就可以了。如果不可能完成所有课程,返回一个空数组。示例示例1:输入: 2, [[1,0]]输出: [0,1]解释:总共有 2 门课程。...

2020-09-05 19:35:17 687

原创 最小生成树: Prim算法、Kruskal算法

目录生成树(Spanning Tree)最小生成树(Minimum Spanning Tree)切分定理Prim算法Prim算法 – 执行过程Prim算法 – 实现Kruskal算法Kruskal算法 – 执行过程Kruskal算法 – 实现Prim算法、Kruskal算法中使用的最小堆和并查集最小堆并查集生成树(Spanning Tree)生成树(Spanning Tree),也称为支撑树, 连通图的极小连通子图, 它含有图中全部的 n 个顶点,..

2020-09-04 16:44:31 577 1

原创 AOV网(拓扑排序)和AOE网

目录AOV网(Activity On Vertex Network)拓扑排序(Topological Sort)拓扑排序 – 思路拓扑排序 – 实现AOE网 (Activity On Edge Network)AOV网与AOE网的关系AOV网(Activity On Vertex Network)一项大的工程常被分为多个小的子工程, 子工程之间可能存在一定的先后顺序,即某些子工程必须在其他的一些子工程完成后才能开始; 在现代化管理中,人们常用有向图来描述和分析一项工程的计划和

2020-09-04 13:19:18 5774

原创

图(Graph)图由顶点(vertex) 和边(edge) 组成,通常表示为 G = (V, E)G表示一个图,V是顶点集, E是边集顶点集V有穷且非空任意两个顶点之间都可以用边来表示它们之间的关系, 边集E可以是空的...

2020-09-03 18:40:38 247

原创 并查集

需求描述假设有n个村庄,有些村庄之间有连接的路,有些村庄之间并没有连接的路设计一个数据结构,能够快速执行2个操作:查询2个村庄之间是否有连接的路 连接2个村庄使用数组、链表、平衡二叉树、集合(Set),查询、连接的时间复杂度都是: O(n)并查集能够办到查询、连接的均摊时间复杂度都是 O(α(n)), α(n) < 5并查集非常适合解决这类“连接”相关的问题基础概念并查集也叫作不相交集合(Disjoint Set)并查集有2个核心操作查找(Find): 查找.

2020-08-21 20:08:16 3298 1

JVM指令集.zip

在学习JVM时.指令集必不可少; 该资源有word和pdf两种模式

2019-07-22

spring4.2.4源码

Spring_4.2.4源码, 其中IOC和AOP模块已经编译过,可以直接导入ecplise使用, 并且这两部分的源码里面是做的有详细笔记的! ! ! 是可以辅助理解源码的

2019-04-14

hadoop-2.8.1-win-x64-bin(winutils)

windows平台下开发时所需的执行文件. 基于hadoop2.8.1版源码,日期20180605,编译的是win平台,Release,x64.

2018-08-13

空空如也

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

TA关注的人

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