自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 LSM树核心机制

阿里面试被吊打,面试中面试官提到了LSM树,特此了解一下。

2022-09-22 15:14:06 521 1

转载 Docker底层namespace以及cgroup实现

docker底层实现

2022-09-05 16:27:33 560

转载 B树与B+树区别

看到一篇blog讲的很好,特此转载。

2022-08-01 11:42:03 192

原创 Java实现一个MQ

MQ(Message Queue)消息队列,是基础数据结构中“先进先出”的一种数据结构。指把要传输的数据(消息)放在队列中,用队列机制来实现消息传递——生产者产生消息并把消息放入队列,然后由消费者去处理。消费者可以到指定队列拉取消息,或者订阅相应的队列,由MQ服务端给其推送消息。消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。解耦:一个业务需要多个模块共同实现,或者一条消息有多个系统需要对应处理,只需要主业务完成

2022-05-13 18:44:06 5404 3

原创 JAVA实现负载均衡

负载均衡负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。反向代理与负载均衡反向代理是实现负载均衡的一种方法。反向代理先谈反向代理。用户在请求时,先把请求发送给代理的服务器,然后由代理服务器根据算法去请求真实的服务器,最后返回给用户。这种做法,其一是提高了安全性;其二是通过多台的real server分担了用户的请求,实现了负载均衡。负载均衡再谈负载均衡。负载均衡的出现,是通过横向的扩展,尽可能..

2022-05-11 19:38:31 4395

原创 JAVA实现一致性Hash算法

介绍一致性Hash算法是实现负载均衡的一种策略,后续会写如何实现负载均衡一致哈希是一种特殊的哈希算法。在使用一致哈希算法后,哈希表槽位数(大小)的改变平均只需要对 K/n个关键字重新映射,其中K是关键字的数量, n是槽位数量。然而在传统的哈希表中,添加或删除一个槽位的几乎需要对所有关键字进行重新映射。强哈希考虑到单服务器不能承载,因此使用了分布式架构,最初的算法为 hash() mod n, hash()通常取用户ID,n为节点数。此方法容易实现且能够满足运营要求。缺点是当单点发

2022-05-11 17:25:32 2749 3

原创 设计模式学习笔记

单一职责原则一个类而言应该仅有一个引起它变化的原因如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其他职责的能力,这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责,就应该考虑职责分离。开闭原则软件实体应该是可以扩展但是不可修改的,对于扩展开放,对于修改封闭。但无论模块多么封闭,都会存在一些无法对之封闭的变化。最初编写代码时我们假设变化不会发生,当变化发生时

2022-04-19 18:47:04 152

转载 如何写一个Starter

编写自己的 starter说了那么多,终于到了实操环节,通过上面的介绍,我们可以大致得出编写自己的 starter步骤。1. 创建名字为 xxx-spring-boot-starter 的启动器项目。2. 创建名字为 xxx-spring-boot-autoconfigure的项目。编写属性绑定类 xxxProperties. 编写服务类,引入 xxxProperties. 编写自动配置类XXXAutoConfiguration注入配置。 创建 spring.factories 文件,

2022-03-23 14:46:47 948

原创 排序算法合集Java实现

class Solution { public int[] sortArray(int[] nums) { if(nums.length <=1)return nums; //qSort(nums,0,nums.length-1); //selectSort(nums); // insertSort(nums); // shellSort(nums); // bucketSort(nums); .

2022-03-03 14:56:38 99

原创 MIT6.830实现关系型数据库simpleDB

lab1:实现数据管理:主要需要实现存储、访问与管理物理层面的数据(二进制文件),以及将其映射为逻辑层面的数据(关系表)。在这一课题的最后,还要求实现SimpleDB中最基本的操作——SeqScan,因此完成这一章后,就可以扫描全表了。本节内容相对简单。exercise1主要是实现Tuple与TupleDesc这两个类的构造器和主要方法,较为简单。Tuple:包含td,rid,fields三个属性,一条记录最基本的信息,其它的就是一些构造器,getter方法和迭代器等,看着注释实现就可以了。Tu

2022-03-03 11:05:19 1414 1

原创 MySQL join算法

我们都知道SQL的join关联表的使用方式,但是这次聊的是实现join的算法,join有三种算法,分别是Nested Loop Join,Hash join,Sort Merge Join。MySQL官方文档中提到,MySQL只支持Nested Loop Join这一种join algorithmMySQL resolves all joins using a nested-loop join method. This means that MySQL reads a row from the

2022-02-21 18:36:34 440

原创 微软暑期实习提前批凉经

上来面试官没有让自我介绍,直接甩题LC 1087 花括号展开我们用一个特殊的字符串 S 来表示一份单词列表,之所以能展开成为一个列表,是因为这个字符串 S 中存在一个叫做「选项」的概念:单词中的每个字母可能只有一个选项或存在多个备选项。如果只有一个选项,那么该字母按原样表示。如果存在多个选项,就会以花括号包裹来表示这些选项(使它们与其他字母分隔开),例如 "{a,b,c}" 表示 ["a", "b", "c"]。示例输入:"{a,b}c{d,e}f"输出:["acdf","ac..

2022-01-17 15:17:46 428 7

原创 如何利用bitmap秒杀字节,美团面试算法题lc56合并区间

首先看一下题目。https://leetcode-cn.com/problems/merge-intervals/以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,

2021-12-06 22:07:31 162

原创 IDEA-Github踩坑记录

如何通过IDEA上传项目到Github:首先官网下载GitIDEA打开Settings-VersionControl-Git然后找到Path to Git executable添加git.exe的路径即可。Test可以测试是否添加成功点击apply即可然后添加github用户:找到Github点击加号即可添加,可以选择通过账号密码和token。作者使用账号密码登录时,会出现无效的身份验证,404报错。网上找到解决方案说是要现在github上添加token。添加token步骤:..

2021-12-02 12:22:50 340

原创 Elasticsearch填坑

果然上篇博客说的不熟悉Elasticsearch最终害了我。。今天重新运行我的博客项目,发现我昨天写的博文还在,并且我没法写blog了出现如下报错:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: Expec

2021-11-25 14:17:56 1018

原创 Elasticsearch5.5.0使用报错解决

在用elasticsearch5.5.0的时候给自己挖了不少坑,解决花费了很多时间甚至一度让我崩溃想要砸电脑,因为真的感觉挺多报错特别的莫名其妙。但究其原因当然是自己太菜啦而且对elasticsearch根本就不够了解只是单纯的拿它作为一种工具而不是抱着学习它的心态,用它只是项目需要罢了,这种心态是不对的。后面要花时间专门学习一下elasticsearch。真的后悔没有遇到报错就记录,现在往回找真的太难了。。。虽然只隔了三四个小时但是我却记不起来报错信息了。。或者就是把解决方法给忘了。。。太难受了只能一

2021-11-24 16:03:07 2429

原创 springboot学习笔记-多人互动blog系统

SpringMVC@GetMapping注释将 HTTP GET 请求映射到特定的处理程序方法。 它是一个组合的注释,用作@RequestMapping(method = RequestMethod.GET)的快捷方式。@GetMapping将从 GET 请求到index()方法的/根路径映射。 它返回纯文本@PostMapping注释将 HTTP POST 请求映射到特定的处理程序方法。 它是一个组合的注释,用作@RequestMapping(method = RequestMethod.POST

2021-11-24 15:17:19 423

转载 ConcurrentHashMap解析

1.哈希表2.ConcurrentHashMap与HashMap、HashTable的区别3.ConcurrentHashMap在JDK1.7和JDK1.8版本的区别一:哈希表1.介绍哈希表就是一种以键-值(key-indexed) 存储数据的结构,我们只要输入待查找的键即key,即可查找到其对应的值。哈希的思路很简单,如果所有的键都是整数,那么就可以使用一个简单的无序数组来实现:将键作为索引,值即为其对应的值,这样就可以快速访问任意键的值。这是对于简单的键的情况,我们将其扩展到可以处理更加

2021-11-23 20:18:55 346

转载 Optional类

1.Optional介绍Optional<T>是在java.util包下的一个用于代替null的一个工具类,其在java1.8中的介绍为:2. Optional的构造方法JDK 提供三个静态方法来构造一个Optional:2.1 Optional.of(T value),该方法通过一个非 null 的 value 来构造一个 Optional,返回的 Optional 包含了 value 这个值。对于该方法,传入的参数一定不能为 null,否则便会抛出 NullPointer

2021-11-19 20:07:36 76

转载 java Serializable接口

Serializable接口:一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才能被序列化一、什么是序列化?【将对象的状态信息转换为可以存储或传输的形式的过程,在序列化期间,对象将其当前状态写入到临时存储区或持久性存储区,之后,便可以通过从存储区中读取或反序列化对象的状态信息,来重新创建该对象】序列化将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。二、什么情况下需要序列化?【当我们需要把对象的状态信息通过网络进行传输,或者

2021-11-18 15:44:46 2522

转载 KMP算法

labuladong yyds!看别人写的真的看不下去,但是labuladong就写的很通俗,虽然写的复杂了但是却更易懂更容易理解,不用再死记KMP了,直接自己推。KMP 算法(Knuth-Morris-Pratt 算法)是一个著名的字符串匹配算法,效率很高,但是确实有点复杂。很多读者抱怨 KMP 算法无法理解,这很正常,想到大学教材上关于 KMP 算法的讲解,也不知道有多少未来的 Knuth、Morris、Pratt 被提前劝退了。有一些优秀的同学通过手推 KMP 算法的过程来辅助理解该算法.

2021-11-16 20:43:51 130

原创 StringUtils

org.apache.commons.lang.StringUtils中方法的操作对象是java.lang.String类型的对象,是JDK提供的String类型操作方法的补充,并且是null安全的(即如果输入参数String为null则不会抛出NullPointerException,而是做了相应处理,例如,如果输入为null则返回也是null等)。除了构造器,StringUtils中一共有130多个方法,并且都是static的。比较常用的能表现出StringUtils特性的方法1. pub.

2021-11-15 18:08:22 62

转载 @Transactional

@Transactional注解可以作用于接口、接口方法、类以及类方法上 1. 当作用于类上时,该类的所有 public 方法将都具有该类型的事务属性 2. 当作用在方法级别时会覆盖类级别的定义 3. 当作用在接口和接口方法时则只有在使用基于接口的代理时它才会生效,也就是JDK动态代理,而不是Cglib代理 4. 当在 protected、private 或者默认可见性的方法上使用 @Transactional 注解时是不会生效的,也不会抛出任何异常 5. 默认情况下,只有来自外部的方法调用才会被AOP代理

2021-11-15 17:56:53 1935

原创 ZZUWeWantToGoOut讨论贴

有问题欢迎留言交流需要更新请在帖子下面留言提醒

2021-11-10 10:55:22 2311 113

原创 java数组赋值问题

在做算法题是遇到数组赋值的问题,错误代码如下public void rotate(int[] nums, int k) { int pointer=nums.length-k; int[] a=nums; for(int i=0;i<nums.length-1;i++){ nums[i]=a[pointer%nums.length]; pointer++; } }本意是想要

2021-08-17 18:37:58 843

原创 解决java使用StringBuffer数组时抛出空指针异常问题

刷算法题时需要使用StringBuffer数组,使用场景如下:StringBuffer[] a=new StringBuffer[numRows];for(int i=0;i<numRows;i++){ a[i].append(b[count]); count++;此时会抛出空指针异常。这个地方只是创建了一个数据类型为StringBuffer的数组容器,本质上是个容器,没有对容器内的每个元素进行赋值,造成了

2021-07-16 16:56:37 661

原创 JAVA多线程解决哲学家问题(GUI演示)

利用JAVA多线程与Swing编程制作GUI演示哲学家问题解决感谢出现在GUI中的我以及我的四位室友并且感谢他们为我的程序设计提供一部分灵感让该演示显得不那么单调。问题描述:由Dijkstra提出并解决的哲学家进餐问题(The Dinning Philosophers Problem)是典型的同步问题。该问题是描述有五个哲学家共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上五只筷子,他们的生活方式是交替地进行思考和进餐。平时,一个哲学家进行思考,饥饿时便试图取用其左右最靠近他的筷子,只有在他拿到

2021-05-16 21:25:34 1338 5

空空如也

空空如也

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

TA关注的人

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