自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网络模型简介

网络是一个复杂的系统,不仅包括大量的应用程序、端系统、通信链路、分组交换机等,还有各种各样的协议组成,那么现在我们就来聊一下网络中的协议层次。为了给网络协议的设计提供一个结构,网络设计者以分层(layer)的方式组织协议,每个协议属于层次模型之一。每一层都是向它的上一层提供服务(service),即所谓的服务模型(service model)。每个分层中所有的协议称为协议栈(protocol stack)。OSI七层模型OSI(Open System Interconnect),即开放式系统互联.

2021-06-06 19:47:27 3747

原创 HTTP简介

HTTP 是什么?HTTP 是超文本传输协议HyperText Transfer Protocol。超文本传输协议是什么?HTTP的名字「超文本协议传输」,它可以拆成三个部分:超文本 传输 协议 其中协议 > 传输 > 超文本什么是超文本?在互联网早期的时候,我们输入的信息只能保存在本地,无法和其他电脑进行交互。我们保存的信息通常都以文本即简单字符的形式存在,文本是一种能够被计算机解析的有意义的二进制数据包。而随着互联网的高速发展,两台电脑之间能够进行数据的传输后,人们不满足只能在.

2021-06-06 18:53:06 265

转载 CGI FastCGI Nginx

CGI什么是CGICGI全称通用网关接口,是一种让客户端(web浏览器)与web服务器(nginx等)程序进行通信(数据传输)的协议用来规范web服务器传输到php解释权中的数据类型以及数据格式,包括URL、查询字符串、post数据、http header等,也就是为了保证webserver传递过来的数据是标准格式的CGI可以用任何一种具有标准输入、输出和环境变量的语言编写,如php、p...

2020-03-12 11:49:31 302

原创 生产者消费者问题

临界区:对临界资源进行访问的那段代码称为临界区。为了互斥访问临界资源,每个进程在进入临界区之前,需要先进行检查。同步与互斥:同步:多个进程因为合作产生的直接制约关系,使得进程有一定的先后执行关系。互斥:多个进程在同一时刻只有一个进程能进入临界区。使用信号量实现生产者消费者问题使用一个容器来存放物品,只有当容器中还有空位置时,生产者才可以生产商品;只有当容器中物品数量大于0时,消费者...

2019-09-05 12:38:52 1484

原创 堆排、快排、归并

堆排序在堆中,节点和数组中的下标对应关系:如果元素x的下标为i,那么它的左孩子节点的下标为2i+1,它的右孩子节点的下标为2i+2,它的父节点的坐标为(i-1)/2第一步对数组中所有的元素构造大顶堆默认数组中第一个元素在堆中,第二个元素和父节点比较,如果大于父节点,和父节点交换位置,即元素上移;如果小于等于父节点,元素位置不改变,继续插入下一个元素。元素移动的次数最多为logN次,即...

2019-09-01 10:35:27 1771

原创 累加和为给定值的最长子数组长度

题目描述给定一个无序数组arr,其中元素可正、可负、可0,给定一个整数k。求arr所有的子数组中累加和为k的最长子数组长度。题解s(i)=arr[0…i]所有元素的累加和;又arr[0…j-1]+arr[j…i]=arr[0…i];所以arr[j…i]=s(i)-s(j-1),这个结论是求解这道题的核心。设置变量sum=0,表示从0位置开始一直加到i位置所有元素的和。设置变量l...

2019-08-05 22:13:06 798 1

原创 二叉树的序列化与反序列化

先序遍历的序列化与反序列化首先对二叉树进行先序遍历,将最终结果拼接成字符串显示,具体如下如果该节点不为空,则str+=节点的值+“!”;否则str+=“#!”;#表示节点为空,!表示分隔符public String serialize(TreeNode root) { if(root==null) return "#!"; String re=root.val+"!"; ...

2019-08-05 16:31:19 145

原创 二叉树的非递归遍历

非递归后序遍历题解1、申请一个栈,记为stack,将头结点压入stack,同时设置两个变量h和c,h代表最近一次弹出并打印的节点,c代表stack的栈顶节点,初始时h为头结点,c为null2、 每次令c等于stack的栈顶节点,但是不从stack中弹出,此时分以下三种情况。2.1如果c的左孩子不为null,并且h不等于c的左孩子,也不等于c的右孩子,则把c的左孩子压入栈中。因为h是最...

2019-08-05 14:53:02 155

原创 判断一个链表是否是回文结构

题目描述给定一个链表的头结点,判断该链表是否是回文结构样例1->2->1 返回true1->2->2->1 返回true1->2->3 返回false题解方法一:从左到右遍历链表,遍历的过程中将每个节点依次入栈待所有节点入栈后,从栈顶到栈底中元素的值和链表中从左至右的值如果相等则证明是回文结构,否则不是public static b...

2019-08-03 17:39:01 248

转载 MapReduce相关的几道面试题

转载自微信公众号hadoop123现有100TB的用户查询词(从搜索引擎日志中提取出来的),如何用MapReduce计算出现次数最多的K个查询词?如何对你设计的算法进行优化?考虑的优化点有:如果一个查询词出现次数非常多,产生的负载倾斜问题会不会导致你的算法性能非常低下,等等。现有100TB的网页文档(文档库),很容易统计出每个文档中每两个词(词对)出现频率,设计一个MapReduce算法统计...

2019-07-26 19:58:11 1068

转载 我是怎样学习Hadoop的

转载自微信公众号hadoop123通过昨天的初步统计,“Hadoop学习方法”、“Hadoop应用案例”和“Hadoop前景”三个方面最受大家关注。在今后的几篇文章中,我将重点介绍这几方面的内容。今天简单介绍一下我是如何学习hadoop的。注意,以下仅是个人经验之谈,大家可借鉴学习,也可以一笑置之。我研二开始接触hadoop,第一个hadoop项目是与华为合作的“商用hadoop原型”,该项...

2019-07-26 19:14:35 133

转载 如何高效的阅读hadoop源代码?

转载自董的博客个人谈谈阅读hadoop源代码的经验。首先,不得不说,hadoop发展到现在这个阶段,代码已经变得非常庞大臃肿,如果你直接阅读最新版本的源代码,难度比较大,需要足够的耐心和时间,所以,如果你觉得认真一次,认真阅读一次hadoop源代码,一定要有足够的心理准备和时间预期。其次,需要注意,阅读Hadoop源代码的效率,因人而异,如果你有足够的分布式系统知识储备,看过类似的系统,则能...

2019-07-25 22:24:30 125

翻译 HBase优化

Hbase优化1、表的设计1.1 预先创建region默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分。一种可以加快批量写入速度的方法是通过预先创建一些空的regions,这样当数据写入Hbase时,会按照region分区情况,在集群内做数据的负载均衡。1...

2019-07-24 12:25:13 184

翻译 HBase总结

hbase特点高可靠高性能面向列可伸缩实时读写hbase数据量:十亿级别的行、百万级别的列hbase速度快的原因:因为它充分利用了内存,优先往内存中写,之后的溢写合并就不再关客户端的事,客户端只负责将数据写到内存中,所以它的速度比较快。使用了LSM树缓存机制(写缓存、读缓存)文件是顺序读写(并非随机读写,不需要磁道的移动寻址时间)(使用get获取数据时,get的底层也是...

2019-07-24 07:52:13 263

翻译 HBase架构

BigTableHDFS:分布式文件系统MapReduce:分布式计算框架Hive:数据仓库。用来计算分析数据最下面两层是数据存储上面两层做数据分析1、非关系型数据库cassandra hbase mongodbcounchdb 文件存储数据库Neo4j非关系型图数据库2、HBase简介:Hadoop Database,是一个高可靠、高性能、面向列(面向列的键值对...

2019-07-22 21:01:12 167

原创 Mancher算法

题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。样例输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。输入:输入: “cbbd”"cbb 输出: “bb”题解方法一:暴力解法首先遍历每一个字符在其前后添加特殊字符,是为了处理偶回文容易出错的情况;从左至右遍历字符串的每一个字符,遍历到每一个字符的时候...

2019-06-23 12:43:09 361

原创 LFU缓存

题目描述设计并实现最不经常使用(LFU)缓存的数据结构。它应该支持以下操作:get 和 put。get(key) - 如果键存在于缓存中,则获取键的值(总是正数),否则返回 -1。put(key, value) - 如果键不存在,请设置或插入值。当缓存达到其容量时,它应该在插入新项目之前,使最不经常使用的项目无效。在此问题中,当存在平局(即两个或更多个键具有相同使用频率)时,最近最少使用的键...

2019-06-23 09:07:43 735

原创 LRU缓存机制

题目描述运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最...

2019-06-22 23:58:54 344

翻译 并查集

并查集是由一群集合构成,最开始时所有元素各自单独构成一个集合。当集合中只有一个元素时,这个集合的代表节点即为该元素,该元素的father也是自己。使用哈希表来存并查集中所有集合的所有元素的father信息,记为fatherMap。fatherMap中的一条记录所代表的含义是key节点的father为value节点。每个节点都有father信息。集合代表节点的father为本身。另外还会存储...

2019-06-22 20:24:43 7957

原创 岛屿数量

题目描述给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。样例输入:11000110000010000011输出: 3输入:11110110101100000000输出: 1题解从做至右依次遍历每一行,如果该位置的数是1,就开始一个感染...

2019-06-22 18:49:59 2180

翻译 一致性哈希

工程师常使用服务器集群来设计和实现数据缓存,其中一种策略是:无论是添加、查询还是删除数据,都先将数据的id通过哈希函数转换成一个哈希值,即为key;如果目前机器有N台,则计算key%N的值,这个值就是该数据所属的机器编号,网无论是添加、删除还是查询操作,都只在这台机器上进行。这种缓存策略存在的问题是如果增加或者删除机器,所以的数据需要重新计算哈希值,重新利用哈希值对机器个数取模,得出对应...

2019-06-22 18:29:27 137

原创 空间限制问题

题目一:只用2G内存在20亿个整数中找到出现次数最多的数有一个包含20亿个全是32位整数的大文件,在其中找到出现次数最多的数。内存限制为2G分析1:对于在很多数中找到出现次数最多的数这种问题,通常的做法是使用哈希表对出现的每一个数做词频统计,哈希表的key为对应的整数,value为该整数出现的次数。就本题来说,假设一个数出现了20亿次,用32位的整数可以表示该次数不会产生溢出,所以哈希...

2019-06-22 12:59:28 1113

翻译 布隆过滤器

布隆过滤器会出现误判的情况,但不会有漏解发生(即宁可错杀三千,绝不放过一个)。什么是布隆过滤器?声明一个长度为m的位类型的数组记为bitMap,即数组中的每一个位置只占一个bit,每个bit只有0和1两种状态。然后存在k个哈希函数,输出域的范围设为S≥m。(如果一个优秀的哈希函数能够将很多不同的输入值哈希之后得到的返回值非常均匀的分布在S上,那么将所有的返回值对m取余,可以认为所有的返回值...

2019-06-22 11:43:50 904

原创 零钱兑换的组合数

题目描述给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。样例输入: amount = 5, coins = [1, 2, 5]输出: 4解释: 有四种方式可以凑成总金额:5=55=2+2+15=2+1+1+15=1+1+1+1+1注意:你可以假设:0 <= amount (总金额) <= 50001 &...

2019-06-19 15:41:59 907 2

原创 零钱兑换

题目描述给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。样例输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1输入: coins = [2], amount = 3输出: -1你可以认为每种硬币的数量是无...

2019-06-19 12:27:58 696

原创 矩阵的最小路径和

题目描述给定一个矩阵M,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,返回所有的路径中最小的路径和。(难度:简单,降低空间复杂度)题解dp[i][j]表示到达该位置的最小路径和。当i=0,j>0时dp[i][j]=dp[i][j-1]+m[i][j]当j=0,i大于0时dp[i][j]=dp[i-1][j]+m[i][j]当i>0,j>...

2019-06-19 10:17:30 1284

翻译 Fib序列

Fib序列扩展:跳台阶:给定整数N,代表台阶数,一次可以跨两个或1个台阶,返回有多少种走法比如N=3,可以三次都跨1个台阶;也可以第一次跨1个,第二次跨两个;或者第一次跨两个,第二次跨一个,所以总共三种走法如果台阶只有一层,那么方法只有一种;如果台阶有两层,方法有两种;如果台阶有N层,最后跳上第N层的情况,要麽是从第N-1层再走一层到达;要麽是从第N-2层再走两层到达。所以F(N)=F(N...

2019-06-19 09:25:50 330

原创 区间子数组个数

题目描述给定一个元素都是正整数的数组A ,正整数 L 以及 R (L <= R)。求连续、非空且其中最大元素满足大于等于L 小于等于R的子数组个数。样例输入:A = [2, 1, 4, 3]L = 2R = 3输出: 3解释: 满足条件的子数组: [2], [2, 1], [3].注意:L, R 和 A[i] 都是整数,范围在 [0, 10^9]。数组 A 的长度...

2019-06-19 08:28:48 1185

原创 最长上升子序列

题目描述给定一个无序的整数数组,找到其中最长上升子序列的长度。样例输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。题解方法1:遍历数组中的每一个元素,dp[i]存储以第i个元素作为子序列的最后一个字符时,0~i中最大递增的子序列的长度在0~i中,任何小于nums[i]的元素都可以作为子序列倒数第二个...

2019-06-18 23:33:23 278

原创 最长重复子数组

题目描述给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。样例输入:A: [1,2,3,2,1]B: [3,2,1,4,7]输出: 3解释:长度最长的公共子数组是 [3, 2, 1]。说明:1 <= len(A), len(B) <= 10000 <= A[i], B[i] < 100题解建立动态规划公式,其中dp[i][...

2019-06-18 19:22:27 854

转载 和至少为 K 的最短子数组

//https://github.com/Shellbye/Shellbye.github.io/issues/41问题描述返回 A 的最短的非空连续子数组的长度,该子数组的和至少为 K 。如果没有和至少为 K 的非空子数组,返回 -1 。(LeetCode862 困难)样例输入:A = [2,-1,2], K = 3输出:3题解暴力法:求出每个子数组的和(以i作为起始点,j为...

2019-06-18 17:33:55 769

原创 直方图面积

题目描述给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。(LeetCode84)样例输入: [2,1,5,6,2,3]输出: 10题解单调栈的思想是栈中存放的元素是按照单调递增或者单调递减的顺序存放的。我们以单调递减为例,当压入栈的元素大于栈顶元素时,那么对于栈顶元素来说,此时右侧离他最近的并且大...

2019-06-18 11:20:16 2153

原创 小和问题(归并排序的应用)

问题描述在一个数组中, 每一个数左边比当前数小的数累加起来, 叫做这个数组的小和。 求一个数组的小和。样例[1,3,4,2,5]1左边比1小的数, 没有;3左边比3小的数, 1;4左边比4小的数, 1、 3;2左边比2小的数, 1;5左边比5小的数, 1、 3、 4、 2;所以小和为1+1+3+1+1+3+4+2=16题解对数组进行归并排序,在合并的过程中,如果左侧部分的当...

2019-06-14 10:52:52 225

转载 各进制转换

各进制转换bit(位)bytes(字节)M、G、TB、PB1Byte = 8 Bit1KB = 1,024 Bytes1MB = 1,024 KB = 1,048,576 Bytes1GB = 1,024 MB = 1,048,576 KB = 1,073,741,824 Bytes 1GB = 1,024 MB = 1,048,576 KB = 1,073,741,824 Bytes1...

2019-06-14 10:04:01 194

转载 外部排序

转载自:https://www.sohu.com/a/258751244_818692要排序的数据太多,以至于内存一次性装载不下。只能通过把数据分几次的方式来排序,我们把这种方法称之为外部排序问题:存在12个待排序的数据,内存中一次只能容纳3个数值,如何实现对数据的排序算法1:step1:将12个数据分四次加载到内存,分别对其排序,每次排序后的结果输出到文件中step2...

2019-06-07 09:27:24 267

原创 进程通信

互斥:一个进程占用资源,其他进程不能使用这个资源,则资源的使用是互斥的。死锁:多个进程各占用部分资源,形成循环等待饥饿:其他进程可能轮流占用资源,一个进程一直得不到资源临界区:进程中访问临界资源的一段需要互斥执行的代码,任何时刻只允许一个进程在该区域执行。信号量是OS提供的一种协调共享资源访问的方法;OS是管理者,地位高于进程,当OS执行它的代码时,优先级高于进程中的用户代码,所以可...

2019-06-05 11:36:21 164

原创 处理机调度

内核运行调度程序的条件:进程从运行状态切换到阻塞状态,这种情况下当前进程不再占用CPU,此时可以从就绪队列中调度一个进程放到cpu上运行。进程退出了,CPU空闲出来,又可以加载一个进程。以上两种情况是针对非抢占系统,当把CPU资源分配给了一个进程,操作系统不会主动的剥夺对于抢占系统,当存在中断请求或者系统调用时,有可能把当前运行的进程转成就绪状态。当前进程被抢占的情况:进程时间片...

2019-06-05 00:25:58 169

原创 进程线程

进程是指一个具有一定独立功能的程序在一个数据集合上的一次动态执行的过程。进程的特点:动态性:可动态的创建或者结束进程并发性:多个进程可以在操作系统的调度下交替执行独立性:不同进程的工作互不影响制约性:因访问共享数据、资源或者进程间同步而产生制约进程与程序的联系:进程是操作系统处于执行状态程序的抽象程序=文件(静态的可执行文件)进程=执行中的程序=程序+执行状态同...

2019-06-04 20:17:23 214

原创 页面置换

页面置换算法:当出现缺页异常,需要调入新页面而内存已满时,需要使用置换算法选择被置换的物理页面。局部、全局。全局置换算法:不区分置换的这个页面到底属于哪个进程,这样的话就隐含着后边有每个进程分配的物理页面数会做调整。局部页面置换算法:分配给一个物理进程的页面数已经确定了,选择范围仅限于当前进程占用的物理页面内。最优算法先进先出最近最久未使用时钟最不常用全局页面置换算法:忽略...

2019-06-04 15:44:13 2472

原创 二叉树的最近公共祖先

题目描述:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”样例:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3输入: ...

2019-05-23 14:58:30 181

[[高性能MySQL(第3版)].Baron.Scbwartz等.扫描版[电子书.pdf

高性能MySQL(第3版)

2019-07-25

Hadoop权威指南 大数据的存储与分析-第4版-修订版-升级版.pdf

Hadoop权威指南 大数据的存储与分析 第四版

2019-07-24

Hadoop权威指南 大数据的存储与分析-第4版-修订版-升级版.pdf

Hadoop权威指南 大数据的存储与分析 第四版

2019-07-24

空空如也

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

TA关注的人

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