自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

豪猪的博客

我在拔一根大萝卜。

  • 博客(187)
  • 收藏
  • 关注

原创 rocksdb

一、概述RocksDB 改自LevelDB,是一个持久化存储的KV系统,和Redis这种内存型的KV系统不同,LevelDB不会像Redis一样狂吃内存,而是将大部分数据存储到磁盘上。数据结构:LSM-Tree(Log-Structured-Merge-Tree)。LSM从命名上看,容易望文生义成一个具体的数据结构,一个tree。但LSM并不是一个具体的数据结构,也不是一个tree。LSM是一个数据结构的概念,是一个数据结构的设计思想。整体结构:主要分为三大块:WAL(disk)→ Memtab

2021-04-10 22:44:55 637 1

原创 springcloud灰度发布

一、springcloud灰度发布思路注册中心:不解释了 根据用户路由:user id关联路由标签 区分服务实例:给服务实例打标签 eureka.instance.metadata-map.key=value 负载均衡ribbon:修改路由规则,根据用户标签路由到对应服务二、ribbon大致原理RibbonAutoConfiguration 是起始点,会在spring启动时被扫起来,实例化SpringClientFactory。 SpringClientFactory是外...

2021-04-05 22:55:49 1169

原创 Jaegertracing使用和原理

一、OpenTracing 数据模型1.Trace:一条调用链。2.Span:可以理解成一条调用链的一个环节。一条Trace可以被认为是一个由多个Span组成的DAG图。1)Tag:标签集2)Log:日志集3)References:Span与Span之间的关系。OpenTracing目前定义了两种关系:ChildOf(父子) 和 FollowsFrom(跟随)4)SpanContext:Span上下文对象,主要保存了traceId spanId等,用来跨进程边界传输。不同进程间...

2021-04-05 17:00:01 2621

原创 swagger2.0使用及原理

一、swagger2.0使用引入依赖,构造Docket类用于展示,加注解 @EnableSwagger2默认在线文档地址http://localhost:6050/swagger-ui.html swagger格式文件地址http://localhost:6050/v2/api-docs二、swagger大致原理2.1 将api解析存储到内存1.通过@EnableSwagger2注解 : a.扫描指定包下的类 b.import了其他配置类 c.注入bean额外的:Spri...

2021-04-05 15:27:40 2611 2

转载 java数据结构----堆

1.堆:堆是一种树,由它实现的优先级队列的插入和删除的时间复杂度都是O(logn),用堆实现的优先级队列虽然和数组实现相比较删除慢了些,但插入的时间快的多了。当速度很重要且有很多插入操作时,可以选择堆来实现优先级队列。2.java的堆和数据结构堆:java的堆是程序员用new能得到的计算机内存的可用部分。而数据结构的堆是一种特殊的二叉树。3.堆是具有如下特点的二叉树:  3.1.它是完全二叉树,也就是说除了树的最后一层节点不需要是满的,其他的每一层从左到右都必须是满的。    3.1.1.完全二叉

2020-06-24 17:03:40 413 1

转载 http和socket之长连接和短连接区别

TCP/IPTCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。在传输层中有TCP协议与UDP协议。在应用层有:TCP包括FTP、HTTP、TELNET、SMTP等协议 UDP包括DNS、TFTP等协议短连接连接->传输数据->关闭连接H...

2020-04-10 12:06:16 269

转载 linux命令中which、whereis、locate有什么区别?

1.find  find是最常用和最强大的查找命令。它能做到实时查找,精确查找,但速度慢。  find的使用格式如下:  #find [指定目录] [指定条件] [指定动作]  指定目录:是指所要搜索的目录和其子目录。如果不指定,则默认为当前目录。  指定条件:是指所要搜索的文件的特点。  指定动作:是指对搜索的结果如何处理。  常见选项:  -name 根据文件名称查找(严格...

2020-04-07 14:02:24 225

原创 Java日志框架:slf4j作用及其实现原理

https://www.cnblogs.com/xrq730/p/8619156.htmlhttps://my.oschina.net/pingpangkuangmo/blog/406618

2019-08-15 16:04:03 168

转载 spark-sql createOrReplaceTempView 和createGlobalTempView区别

在讲解createOrReplaceTempView 和createGlobalTempView的区别前,先了解下Spark Application 和 Spark Session区别Spark ApplicationSpark Application 使用:针对单个批处理作业 多个job通过session交互式 不断满足请求的,长期存在的server 一个Spark j...

2019-07-24 18:45:09 2356

转载 JVM调优常用参数配置

堆配置-Xms:初始堆大小-Xms:最大堆大小-XX:NewSize=n:设置年轻代大小-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3表示年轻代和年老代比值为1:3,年轻代占整个年轻代年老代和的1/4-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如3表示Eden: 3 Survivor:2,一...

2019-07-16 17:03:46 235

原创 ThreadPoolExecutor线程池各参数的含义

https://www.cnblogs.com/cdf-opensource-007/p/8769777.html

2019-07-16 16:16:45 656

转载 Java volatile如何防止指令重排序

voliate关键字的两个作用1、 保证变量的可见性:当一个被volatile关键字修饰的变量被一个线程修改的时候,其他线程可以立刻得到修改之后的结果。当一个线程向被volatile关键字修饰的变量写入数据的时候,虚拟机会强制它被值刷新到主内存中。当一个线程用到被volatile关键字修饰的值的时候,虚拟机会强制要求它从主内存中读取。2、 屏蔽指令重排序:指令重排序是编译器和处理器为了高效...

2019-07-16 12:03:27 5034 1

转载 一图看懂Java锁膨胀过程

小黑和小黄是好朋友,一天,小黑乔迁新居,邀请好朋友小黄来家里庆祝,他们喝了牛奶,吃了巧克力,饭后,两个好朋友在沙发看电视,突然……小黑把小黄带到了卫生间,小黄惊呆了,原来,最近小黑在学习Java并发编程,总是搞不清synchronized锁的膨胀,于是制作了这个智能门帮助自己理解。小黑也没有使用过这个卫生间,正好小黄要用,就来看看这个门有多智能吧,据说,它能在保证卫生间只有一个...

2019-07-16 11:40:15 417

转载 leetcode174 地下城游戏

原文地址:https://www.cnblogs.com/albert-ygy/p/9461056.html题目描述如下:一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他...

2019-06-30 14:44:49 181

转载 回溯算法

算法导读本期算法讲解思路:白话算法->算法思路->实例:八皇后问题->实例:01背包问题->算法教你玩数独白话算法回溯法(back tracking)(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态...

2019-06-30 13:06:41 162

原创 什么叫二叉搜索树的“自底向上”

参考:https://www.jianshu.com/p/dbdbbaf1f9e8题目:给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)示例 :给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[...

2019-06-29 17:28:34 519

原创 LeetCode 333. Largest BST Subtree

题目找出二叉树中最大的子树,该子树为二叉搜索树。所谓最大的子树就是指结点数目最多的子树。分析该题目是要找出二叉树中最大的子树,该子树必须是二叉搜索树(BST)。子树的概念需要重点关注一下,以下面一棵二叉树为例 ____10____ / \ __5_ 15_ / \ \...

2019-06-29 17:22:47 413

转载 [LeetCode] 772. Basic Calculator III

https://segmentfault.com/a/1190000016429789?utm_source=tag-newestProblemImplement a basic calculator to evaluate a simple expression string.The expression string may contain open ( and closing p...

2019-06-29 13:54:07 2371

转载 LeetCode字典树(Trie)总结

一,定义在计算机科学中,trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值。trie中的键通常是字符串,但也可以是其...

2019-06-29 13:37:56 1728

转载 Java 代理模式和装饰者模式的区别

https://www.cnblogs.com/onlywujun/archive/2013/03/28/2985887.html装饰模式:以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案;代理模式:给一个对象提供一个代理对象,并有代理对象来控制对原有对象的引用;装饰模式应该为所装饰的对象增强功能;代理模式对代理的对象施加控制,并不提供对象本身的增强功能二者的实现机制确...

2019-06-27 15:12:22 623

转载 Java中volatile的作用以及用法

https://www.cnblogs.com/sunrunzhi/p/3930297.htmlvolatile让变量每次在使用的时候,都从主存中取。而不是从各个线程的“工作内存”。volatile具有synchronized关键字的“可见性”,但是没有synchronized关键字的“并发正确性”,也就是说不保证线程执行的有序性。也就是说,volatile变量对于每次使用,线程都能得...

2019-06-20 17:12:33 4602

原创 Java高并发之无锁与Atomic源码分析

https://www.cnblogs.com/xdecode/p/9022525.html这篇讲的不错,里面有很重要的一句话“另外, 虽然上述步骤繁多, 实际上CAS整一个操作过程是一个原子操作,它是由一条CPU指令完成的,从指令层保证操作可靠, 不会被多线程干扰.”...

2019-06-20 17:03:18 226

转载 Hadoop作业提交分析

Hadoop作业提交分析(一)Hadoop作业提交分析(二)Hadoop作业提交分析(三)Hadoop作业提交分析(四)Hadoop作业提交分析(五)

2019-06-15 13:38:36 144

转载 grpc源码解读-java

https://www.cnblogs.com/parse-code/p/6160070.htmlhttp://jiangew.me/grpc-01/https://cloud.tencent.com/developer/article/1347864

2019-06-12 12:56:59 1590

转载 TCP/IP、UDP、Http、Socket的区别

原文地址:https://www.cnblogs.com/xiejw/p/5293322.html一、网络七层模型 20世纪70年代中,为了优化数据库系统设计,支持数据库系统的访问,美国的一个互联网研究小组提出了一个结构化的分布式通信系统体系结构(共七层),他们内部称之为分布式系统体系结构(DSA),1977年英国标准化协会向国际标准化组织(ISO)提议,为了定义分布处理之间的...

2019-06-06 13:13:42 176

转载 深入理解Java PriorityQueue

原文地址:https://www.cnblogs.com/CarpenterLee/p/5488070.htmlPriorityQueueJava中PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示。本文从Queue接口函数出发,结合生动的图解,深入浅出地分析PriorityQueue每个操作的具体过程和时间复杂度,将让读者建立对PriorityQueue建立清晰而深入...

2019-05-27 13:56:06 107

转载 广度优先搜索(BFS)

广度优先搜索(BFS)广度优先搜索在进一步遍历图中顶点之前,先访问当前顶点的所有邻接结点。a .首先选择一个顶点作为起始结点,并将其染成灰色,其余结点为白色。b. 将起始结点放入队列中。c. 从队列首部选出一个顶点,并找出所有与之邻接的结点,将找到的邻接结点放入队列尾部,将已访问过结点涂成黑色,没访问过的结点是白色。如果顶点的颜色是灰色,表示已经发现并且放入了队列,如果顶点的颜色是白色,表...

2019-05-17 16:26:53 183

转载 MySQL索引背后的数据结构及算法原理

原文地址:http://blog.codinglabs.org/articles/theory-of-mysql-index.html摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关...

2019-05-15 17:07:32 109

转载 关于Java类加载双亲委派机制的思考(附一道面试题)

http://www.cnblogs.com/lanxuezaipiao/p/4138511.html预定义类加载器和双亲委派机制 JVM预定义的三种类型类加载器: 启动(Bootstrap)类加载器:是用本地代码实现的类装入器,它负责将<Java_Runtime_Home>/lib下面的类库加载到内存中(比如rt.jar)。由于引导类加载器涉及到虚拟机本地实现细节,开...

2019-05-08 14:30:54 131

转载 既然Java反射可以访问和修改私有成员变量,那封装成private还有意义么

作者:大宽宽链接:https://www.zhihu.com/question/28161668/answer/518225224来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。简单来说,private并不是解决“安全”问题的。安全是指不让代码被非法看到/访问。但是只要人能拿到代码,总会有办法去查看和改变代码。其他答案提到反射可以用SecurityM...

2019-05-06 10:27:57 320

转载 数据库分库分表思路

https://www.cnblogs.com/butterfly100/p/9034281.html一. 数据切分关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。数据库...

2019-05-05 11:01:53 241

转载 高可用Redis(十二):Redis Cluster

https://www.cnblogs.com/renpingsheng/p/9862485.htmlRedis Cluster是Redis官方提供的Redis集群功能1.为什么要实现Redis Cluster1.主从复制不能实现高可用2.随着公司发展,用户数量增多,并发越来越多,业务需要更高的QPS,而主从复制中单机的QPS可能无法满足业务需求3.数据量的考虑,现有服务器内存不...

2019-04-26 19:00:05 260

转载 HBase 工程中 protobuf 版本冲突解决

Protobuf (全称 Protocol Buffers)是 Google 开发的一种数据描述语言,能够将结构化数据序列化,可用于数据存储、通信协议等方面。在HBase里面用使用了 Protobuf 的类库,目前 Protobuf 最新版本是 3.6.1(参见这里),但是在目前最新的HBase3.0.0-SNAPSHOT 对 Protobuf 的依赖仍然是 2.5.0(参见 protob...

2019-03-18 12:27:01 4764

转载 JVM源码分析之Object.wait/notify实现

最简单的东西,往往包含了最复杂的实现,因为需要为上层的存在提供一个稳定的基础,Object作为java中所有对象的基类,其存在的价值不言而喻,其中wait和notify方法的实现多线程协作提供了保证。public class WaitNotifyCase { public static void main(String[] args) { final Object l...

2019-01-31 16:58:36 386

转载 【Linux】Swap与Memory

背景介绍  Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存的造价是要高于磁盘的,且内存的断电丢失数据也是不能把所有数据和程序都保存在内存中的原因。  既然不能全部使用内存,那数据还有程序不可能一直霸占在内存中。当内存没有可用的,就必须要把内存中不经常运行的程序踢出去。但是踢到哪里去,这时候s...

2019-01-30 17:29:56 247

转载 UML建模——用例图(Use Case Diagram)

原文地址:https://www.cnblogs.com/xiaolongbao-lzh/p/4590897.html用例图主要用来描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示这些元素之间的各种关系,如泛化、关联和依赖。它展示了一个外部用户能够观察到的系统功能模型图。【用途】:帮助开...

2019-01-25 16:18:35 770

转载 Java中Comparable和Comparator接口区别分析

Comparable 简介Comparable 是排序接口。若一个类实现了Comparable接口,就意味着“该类支持排序”。  即然实现Comparable接口的类支持排序,假设现在存在“实现Comparable接口的类的对象的List列表(或数组)”,则该List列表(或数组)可以通过 Collections.sort(或 Arrays.sort)进行排序。此外,“实现Compar...

2018-08-06 00:49:18 215

转载 linux中pam模块

一、pam简介Linux-PAM(linux可插入认证模块)是一套共享库,使本地系统管理员可以随意选择程序的认证方式. 换句话说,不用(重新编写)重新编译一个包含PAM功能的应用程序,就可以改变它使用的认证机制. 这种方式下,就算升级本地认证机制,也不用修改程序. PAM使用配置/etc/pam.d/下的文件,来管理对程序的认证方式.应用程序 调用相应的配置文件,从而调用本地的认证模块.模块放置在...

2018-07-14 22:51:29 2139

转载 Linux软件安装,RPM与YUM

Linux软件安装,RPM与YUM为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/SJQ。http://www.cnblogs.com/shijiaqi1066/p/3843955.html    1 Linux软件安装概述安装程序的方式:通用二进制格式:直接解压压缩文件,就可以使用。但一定要注意安装平台。软件包管理器:如RPM。软件包管理器的前端工具:如Y...

2018-07-04 14:55:19 230

原创 ftp

ftp(文件传输协议)FTP服务器

2018-07-01 22:05:43 238

空空如也

空空如也

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

TA关注的人

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