自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 资源 (1)
  • 收藏
  • 关注

原创 Redis数据结构解析

Redis数据结构Simple Dynamic String (SDS)Redis以一个结构体包含String的数据,包括len、free、buff。struct sdshdr{ int len; //SDS已使用长度 int free; //SDS未使用长度 char buf[]; //字节数组,保存数据。}SDS的动态扩容策略Redis作为数据库,对速度要...

2020-05-05 16:40:58 432

原创 计算机网络——传输层

四、传输层(TCP & UDP)TCP(传输控制协议):面向连接的可靠的流协议UDP(用户数据协议):不可靠的数据报协议运输层协议是通过在端系统而不是网络路由器实现的。在发送方,运输层将接收到的来自应用进程的报文转换成运输层报文段(Segment),并为其加上运输层首部,传递给网络层。网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。传输层提供了进程间的逻辑通...

2020-04-25 21:13:08 1395

原创 计算机网络——网络层

三、网络层(IP协议)互联网层由IP(Internet Protocol)与ICMP(Internet Control Message Protocol)两个协议组成。网络层主要实现“终端节点之间的通信”,网络层可以跨越多个数据链路实现数据包的传输。数据链路层负责两个直连设备间的通信,而网络层的IP则在没有直连的两个网络间通信传输。1. IP基础知识1.1 IP地址属于网络层地址TCP...

2020-04-25 21:12:14 532

原创 计算机网络——数据链路层

二、数据链路层1. 数据链路相关技术TCP/IP协议对数据链路层与物理层未作定义,这是以这两层的功能是透明的为前提。数据链路层协议定义了通过通信媒介互联的设备之间传输的规范。1.1 MAC地址MAC地址用于识别数据链路中互连的节点。MAC地址长48bit,MAC地址一般烧入网卡的ROM中,任一网卡的MAC地址都是唯一不可重复的。MAC地址:70-BC-10-74-9C-C9‭ ...

2020-04-25 21:11:29 529

原创 计算机网络——TCP/IP协议基础知识

一、TCP/IP协议基础知识1. 网络分层模型1.1 OSI七层参考模型七层参考模型作用举例应用层正对特定应用的协议表示层设备固有数据格式和网络标准数据格式的转换会话层通信管理,负责建立断开通信连接传输层管理两个节点间的可靠数据传输,只在通信双方节点上处理,无需再路由器上处理TCP,UDP,SCTP,DCCP网络层地址管理和路由...

2020-04-25 21:09:56 375

原创 详细解析:mysql实现分组查询每个班级的前三名

8.2 mysql实现分组查询每个班级的前三名先上答案select a.class,a.score from student a where (select count(*) from student where a.class=class and a.score<score) <3order by a.class, a.score desc;解析:...

2020-04-18 14:58:54 2389

原创 Yarn的设计组成与基本工作流程

三、Yarn1. 下一代MapReduce框架的设计思想Hadoop1.0的弊端:Hadoop MapReduce在可扩展性、资源利用率和多框架支持等方面存在不足。Hadoop未能将资源调度与应用程序计算的功能分开,造成Hadoop难以支持多种框架。下一代MapReduce的设计思想:将JobTracker的两个主要功能:资源管理和作业控制拆分成两个独立的进程。其中资源管理进程(Y...

2020-04-15 23:38:15 384

原创 MapReduce的详细工作流程

3. MapReduceTask工作流程整理自Hadoop技术内幕3.1 概述MapReduce框架中,一个Task被分为Map和Reduce两个阶段,每个MapTask处理数据集合中的一个split并将产生的数据溢写入本地磁盘;而每个ReduceTask远程通过HTTP以pull的方式拉取相应的中间数据文件,经过合并计算后将结果写入HDFS。3.2 MapTask客户端提交任务,规划...

2020-04-10 00:57:55 1843

原创 MapReduce中的数据输入——切片与数据处理

2. MapReduce中的数据输入2.1 文件切片2.1.1 什么是切片数据块(Block):HDFS中数据保存的单位,HDFS在物理上将数据分为一个一个Block管理数据切片(Split):在逻辑上对Map任务输入数据的切片。2.1.2 为什么要切片将输入文件分为多片可以并行进行Map阶段的计算,提高Job的运行速度。一份数据切片就会有一个MapTask。2.1.3 文件的切片机...

2020-04-09 00:17:53 1059

原创 Hadoop文件系统——HDFS读写数据流

2. HDFS数据流2.1 文件读取流程剖析(重要)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1a48nDo0-1586279469073)(picture\read.jpg)]public static void getFileFromHDFS() throws IOException, InterruptedException, URISyntaxE...

2020-04-08 01:12:31 501

原创 Hadoop文件系统——HDFS的组织架构设计

一、Hadoop Distributed FileSystem(HDFS)1. HDFS的设计HDFS时为以流式数据访问模式存储超大文件而设计的文件系统,在商用硬件集群上运行。1.1 文件块(Block)HDFS以块为单位保存文件,在Hadoop2.x版本中块的大小默认为128M(在hadoop1.x中64M,通过dfs.blocksize规定)。一个小于块大小的文件不会占据整个块空间。...

2020-04-08 01:10:30 366

原创 Kafka:整理的一些面试题

1. Kafka 中的 ISR(InSyncRepli)、 OSR(OutSyncRepli)、 AR(AllRepli)代表什么?ISR:In-Sync Replicas 副本同步队列AR:Assigned Replicas 所有副本ISR是由leader维护,follower从leader同步数据有一些延迟(包括延迟时间replica.lag.time.max.ms和延迟条数replic...

2020-04-06 17:13:11 1687

原创 Kafka消费者:分区分配策略,协调器,offset

目录1. 消费方式 Push vs Pull  2. 分区分配策略3. 协调器4. offset的维护5. 独立的消费者1. 消费方式 Push vs Pull  作为一个消息系统,Kafka遵循了传统的方式,选择由Producer向broker push消息并由Consumer从broker pull消息。一些logging-centric system,比如F...

2020-04-06 17:08:38 973

原创 Kafka生产者:数据可靠性策略与幂等性

目录1. Kafka生产者发送消息的过程2. 分区策略3. 数据可靠性保证1. Kafka生产者发送消息的过程 Kafka 会将发送消息包装为 ProducerRecord 对象, ProducerRecord 对象包含了目标主题和要发送的内容,同时还可以指定键和分区。在发送 ProducerRecord 对象前,生产者会先把键和值对象序列化成字节数组,这样它们才能够在...

2020-04-06 17:07:29 641

原创 缓存算法:LFU和LRU的JAVA实现

LFU、LRU的实现总结LFU和LRU均是常见的缓存算法,其中LFU表示最不经常使用,LRU表示最近最少使用。10.1 LRU(Least Recently Used)定义LRU (最近最少使用) 缓存机制要求支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数...

2020-04-06 00:56:49 1023

原创 Kafka高性能的原因——零拷贝机制

3.2 零拷贝(Kafka高性能的原因之一)“零拷贝”通常是指计算机在网络上发送文件时,不需要将文件内容拷贝到用户空间(User Space)而直接在内核空间(Kernel Space)中传输到网络的方式。Kafka所有数据的写如何读取都是通过零拷贝实现的。优势减少甚至完全避免不必要的CPU拷贝,从而让CPU解脱出来去执行其他的任务减少内存带宽的占用通常零拷贝技术还能够减少用户空间和...

2020-04-05 15:32:36 949

原创 Kafka的特点和他的存储机制

一、Kafka和消息队列的特点1. kafka定义Kafka是一个基于发布订阅模式的分布式消息队列,它具有以下特点:支持消息的发布和订阅,类似于 RabbtMQ、ActiveMQ 等消息队列;支持数据实时处理;能保证消息的可靠性投递;支持消息的持久化存储,并通过多副本分布式的存储方案来保证消息的容错;高吞吐率,单 Broker 可以轻松处理数千个分区以及每秒百万级的消息量。2....

2020-04-05 15:30:59 2870

原创 LeetCode 32:最长有效括号——三种解法的总结思考

9. LeetCode 32:最长有效括号给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: “(()” 输出: 2 解释: 最长有效括号子串为 “()” 示例 2:输入: “)()())” 输出: 4 解释: 最长有效括号子串为 “()()”来源:力扣(LeetCode)链接:https://leetcode-cn.com/probl...

2020-04-02 00:08:34 302

原创 Redis常见面试题总结

一些问题的总结目录一些问题的总结Memcache与Redis的区别都有哪些?redis的过期策略以及内存淘汰机制同时有多个子系统去set一个key。这个时候要注意什么呢?如何保证缓存与数据库双写时的数据一致性?redis遇到高并发,如果保证读写key的一致性。为什么Redis的操作是原子性的,怎么保证原子性的?Redis 常见性能问题和解决方案?Redis实...

2020-03-30 13:52:24 379

原创 Redis缓存——缓存雪崩、缓存穿透等问题及其解决思路

Redis缓存缓存的处理流程:前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。缓存雪崩由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而...

2020-03-29 20:44:59 267

原创 原理解析:Redis中的主从复制与哨兵模式

Redis主从复制主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主。读写分离,容灾恢复配置方法从库配置:slaveof 主库IP 主库端口(每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件)主库无需配置查看主从信息: info replicationRedis的主从结构可以采用一主...

2020-03-29 18:11:41 616

原创 Redis的持久化——RDB与AOF对比

Redis的持久化RDB(Redis DataBase)RDB即在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是Snapshot快照,它恢复时是将快照文件直接读到内存里。Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能。如果...

2020-03-29 15:13:31 295

原创 Redis为什么使用单进程单线程还这么快

Redis为什么这么快单进程单线程Redis采用的是基于内存的单进程单线程模型的 KV 数据库,由C语言编写。 对读写等事件的响应是通过对epoll函数的包装来做到的。Redis的实际处理速度完全依靠主进程的执行效率。因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。操作的瓶颈在于网络的I/O,I/O操作的步骤分为:数据...

2020-03-28 22:49:08 277

原创 LeetCode 10:正则表达式匹配

7. LeetCode 10:正则表达式匹配给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。...

2020-03-28 15:53:29 195

原创 JUC知识点总结(九)Fork/Join框架解析

16. fork/joinFork/Join框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。16.1work-stealing算法工作窃取(work-stealing)算法是指某个线程从其他队列里窃取任务来执行。对于一个比较大的任务,可以把这个任务分割为若干互不依赖的子任务,为了减少线程间的竞争,把这些子任务...

2020-03-26 00:32:05 308

原创 JUC知识点总结(八)线程池面试知识点总结

15. 线程池15.1 为什么要使用线程池?降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗提高响应速度:任务到达时,任务可以不需要等到线程创建就能立即执行提高线程的可管理性15.2 线程池的体系结构:java.util.concurrent.Executor : 负责线程的使用与调度的根接口ExecutorService 子接口: 线程池的主要接...

2020-03-25 22:56:15 228

原创 JUC知识点总结(八)CopyOnWrite机制及其在JAVA中的实现

14. CopyOnWrite写时复制, 即在往集合中添加数据的时候,先拷贝一份存储的数组,然后添加元素到这份副本中,然后用副本去替换原先的数组。并发写入的时仍然通过synchronized加锁。14.1 特点:相较于读写锁,写时复制在读取的时候可以写入的 ,这样省去了读写之间的资源竞争;无法保证实时一致性;每次添加都会进行复制,对性能的消耗有点大,适用于读多写少的场合;14.2 ...

2020-03-25 19:46:05 330

原创 JUC知识点总结(七)ConcurrentLinkedQueue知识点总结

13. ConcurrentLinkedQueue (循环CAS)应用场景:按照适用的并发强度从低到高排列如下:LinkedList/ArrayList 非线程安全,不能用于并发场景(List的方法支持栈和队列的操作,因此可以用List封装成stack和queue);Collections.synchronizedList 使用wrapper class封装,每个方法都用synchr...

2020-03-24 23:06:53 544

原创 JUC知识点总结(六)多线程里的HashMap与ConcurrentHashMap源码分析

12. 多线程中的HashMap12.1 HashMap不安全举例Jdk1.7 头插法,多线程扩容时导致HashMap的Entry链表形成环形数据结构,一旦形成环形数据结构,同时也会出现数据丢失的问题。Jdk1.8 尾插法,多线程put时会造成数据丢失。12.2 HashTable与HashMap的区别HashTable的底层数组初始大小为11,HashMap要求其必须为2...

2020-03-24 16:41:41 268

原创 818. 赛车

818. 赛车问题描述:你的赛车起始停留在位置 0,速度为 +1,正行驶在一个无限长的数轴上。(车也可以向负数方向行驶。)你的车会根据一系列由 A(加速)和 R(倒车)组成的指令进行自动驾驶 。当车得到指令 “A” 时, 将会做出以下操作: position += speed, speed *= 2。当车得到指令 “R” 时, 将会做出以下操作:如果当前速度是正数,则将车速调整为 spe...

2020-03-24 14:21:18 381

原创 JUC知识点总结(五)生产者消费者模式的三种常见实现方法

11. 生产者\消费者模式Object中的 wait()/notify()要点:判断条件时一定要用while()循环(虚假唤醒)public class Shop{ public int count = 0; public void produce(){ count++; System.out.println(Thread.currentThr...

2020-03-23 23:12:17 341

原创 JUC知识点总结(五)线程的生命周期

10.线程的生命周期新建,当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配内存,并初始化其成员变量的值;就绪,当线程对象调用了start()方法之后,该线程处于就绪状态。Java虚拟机会为其创建方法调用栈和程序计数器,等待调度运行;运行,如果处于就绪状态的线程获得了CPU,开始执行run()方法的线程执行体,则该线程处于运行状态;阻塞,在运行状态的...

2020-03-21 20:58:04 189

原创 JUC知识点总结(四)五种单例模式的写法

9. 五种单例模式的写法饿汉式:public class Singleton{ private static Singleton instance = new Singleton(); private Singleton(){} public static Singleton getInstance(){ return instance; }}...

2020-03-21 17:15:18 279

原创 JUC知识点总结(三)ReentrantLock与ReentrantReadWriteLock源码解析

8. Lock接口 (ReentrantLock 可重入锁)特性ReentantLock 继承接口 Lock 并实现了接口中定义的方法, 它是一种可重入锁, 除了能完成 synchronized 所能完成的所有工作外,还提供了诸如可响应中断锁、可轮询锁请求、定时锁等避免多线程死锁的方法。尝试非阻塞地获取锁:tryLock(),调用方法后立刻返回;能被中断地获取锁:lockInterru...

2020-03-21 14:15:25 319

原创 TopK问题的两种常见解法

5. TopK问题解法1:改进的快排 O(n)public int[] getLeastNumbers(int[] arr, int k) { if(arr.length<=k){return arr;} sort(arr,0,arr.length-1,k); return Arrays.copyOfRange(arr,0,k); ...

2020-03-20 21:20:09 236

原创 LeetCode410. 分割数组的最大值

LeetCode410. 分割数组的最大值给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。注意: 数组长度 n 满足以下条件: 1 ≤ n ≤ 1000 1 ≤ m ≤ min(50, n)示例:输入: nums = [7,2,5,10,8] m = 2输出: 18解释: 一共有四种方法将nums分...

2020-03-20 16:44:56 333

原创 JUC知识点总结(二)Synchronized底层原理总结

7. synchronized关键字(重量级锁)synchronized在JVM中的实现原理:JVM基于进入和退出Monitor对象来实现方法同步和代码块同步,但两者的表现细节不同。**本质是对一个对象的监视器(monitor)的获取,而这个获取过程是排他的,也就是同一时刻只能有一个线程获取到有synchronized所保护对象的监视器。**任意一个对象都拥有自己的监视器。任意线程对对象的...

2020-03-19 23:31:07 265

原创 JUC知识点总结(一)JMM与volatile关键字

JUC复习笔记(java.util.concurrent)1. 并发的两个关键问题:线程间通信和线程间同步线程通信机制有两种:共享内存:隐式通信,显式同步;消息传递:显式通信,隐式同步。(Java的并发采用的是共享内存模型。)2. JAVA内存模型:JMMJava虚拟机规范试图定义一个Java内存模型(JMM),以屏蔽所有类型的硬件和操作系统内存访问差异,让Java程序在不...

2020-03-18 16:57:48 313

原创 LeetCode1156. 单字符重复子串的最大长度

3. LeetCode1156 : 单字符重复子串的最大长度1156. 单字符重复子串的最大长度如果字符串中的所有字符都相同,那么这个字符串是单字符重复的字符串。给你一个字符串 text,你只能交换其中两个字符一次或者什么都不做,然后得到一些单字符重复的子串。返回其中最长的子串的长度。大致思路:考虑一组字符串 s=“CDAABAABAAA”,其最长单字符重复子串必然是s[5]-s[10]...

2020-03-17 21:14:46 1089

原创 算法与数据结构(二) : 字符串的模式匹配算法

2. 字符串的模式匹配算法注意next数组含义KMP算法public class KMP { public static void main(String[] args) { char[] s = "ceabtcarbc".toCharArray(); char[] p = "tcarb".toCharArray(); System...

2020-03-17 15:25:55 208

idea搭建一个简单的servlet

idea从零搭建一个简单的servlet, 实现Helloservlet,可运行

2019-05-07

空空如也

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

TA关注的人

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