自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

syath1314的博客

会就多写点

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

原创 微服务相关内容整理?

(2)稳定性原则:微服务拆分最终目的是要使系统中各个模块之间兼容性最大化,稳定性最高,避免出现耦合度太强,维护和开发困难得情况。(1)功能性原则:尽可能得按照业务上得逻辑上得功能去拆分,保证每个模块只包含一种主要得业务能力。(3)技术栈原则:微服务实现得拆分应该与技术架构有关,避免使用不同技术栈去实现相同得功能。(5)可扩展原则:微服务拆分得时候,尽可能保证不同单元得扩展性。(4)可复用原则:微服务拆分,就尽量在可复用情况下做到可复用。首先得知道项目中一共有哪些微服务。1.项目中如何划分微服务?

2023-10-08 15:49:08 42

原创 JVM面试题整理

格外情况:当开启指针压缩情况下,指针占用为4字节(也就是32位),此时加上对象头8字节,一共12字节,由于内存中寻址的原因,通常会进行填充,是按照8位进行填充,也就是8的倍数,即填充数据中占用也是4字节,结论为对象头8字节,指针4字节,填充数据为4字节。在32位机器上,对象头占用32位即4字节,指针4字节,也就是8字节。此时就没有压缩的可能了。new Object()在堆中存储,对象结构为对象头,指针,实例数据,填充数据。假设在64位机器上,对象头占用8字节,指针占用8字节,实例数据位0,填充数据为0。

2023-09-25 21:05:56 40

原创 并发系统面试题

底层原理主要是通过waitSet集合实现的,wait之后进入的是waitSet集合,notify之后从集合中拿出来放入cxq双向队列中。这个集合也就是我们通常所说的任务,也就是锁的内容。(3)使用上区别:sleep()属于static 方法,wait则不是;wait是Object类的方法,可以有参可以无参。(1)sleep是Thread类的方法,并且是有参方法。(2)sleep是当前线程休眠,让出cpu,不释放锁。wait是当前线程等待,释放锁。1.sleep和wait方法的区别?

2023-09-19 15:14:16 52

原创 服务器,java,数据库,redis问题排查总结

(1)使用开源命令进行排查使用debug object命令分析key长度,长度不准。缺点:阻塞其他请求 不推荐使用memeory usage命令分析key长度,时间复杂度为o(n),也会有阻塞的场景使用strlen,hlen,scard,zcard,llen获取key长度,时间复杂度更低。以上缺点:仅仅是对长度分析,不能对value大小分析。(2)使用redis客户端redis-cli的bigkey进行分析缺点:不能定制化分析,bigkey展示是各个类型的key。

2023-09-18 16:04:12 103

原创 设计模式整理

原则归纳作用开闭原则对修改关闭,多扩展开放降低维护修改后的风险依赖倒置原则高层不应该依赖底层,细节依赖抽象,抽象不依赖细节便于代码结构的可扩展性单一职责原则一个类只干一件事提高代码可读性接口隔离原则一个接口只干一件事功能解耦,高内聚、低耦合里氏替换原子子类重写方法功能发生改变,不要影响父类方法防止继承泛滥迪米特原则最少知道,不该知道的不知道减少代码臃肿合成复用原则尽量使用组合实现代码复用,而不是使用继承降低代码耦合是什么?

2023-09-16 16:25:28 59 1

原创 手写读写锁(快手二面算法题)

通常情况下,我们只会调用api,当真正写的时候就写不出来了。还是要加强代码编写。读写锁:读读不互斥,读写互斥,写写互斥。

2023-09-16 14:47:36 79 1

原创 限流算法及实现

固定时间窗口:一个固定窗口的次数优点:实现简单 缺点:临界值问题,流量不平滑实现方式:1.定义一个时间窗口,一个限流数,通过当前时间和上次时间进行比较,如果大于时间阙值,证明已经过期;小于情况下,判断当前流量请求数和限流阙值,如果满足的情况下,通过请求,否则拒绝请求。2.使用redis的string结构,key存储限流名称,value存储次数,过期时间设置为时间窗口,利用自动的过期时间进行实现固定窗口限流。滑动窗口:将一个时间窗口等分几块,随着时间进行格子移动。优点:解决了固定窗口临界值问题。

2023-09-16 11:53:30 77 1

原创 动态规划算法题汇总整理

假设你有一个数组prices,长度为n,其中prices[i]是股票在第i天的价格,请根据这个价格数组,返回买卖股票能获得的最大收益1.你可以买入一次股票和卖出一次股票,并非每天都可以买入或卖出一次,总共只能买入和卖出一次,且买入必须在卖出的前面的某一天2.如果不能获取到任何利润,请返回03.假设买入卖出均无手续费数据范围: 0≤n≤105,0≤val≤104要求:空间复杂度O(1),时间复杂度 O(n)思路解析:1.只能买卖一次,也就是找到其中的最小的,找到最大的元素。

2023-09-14 22:45:25 60 1

原创 Map结构面试题总结

1.初始化数组的时候,使用DCL 双重检查锁,利用CAS的方式2.使用volatile修饰一些参数,保证线程可见性,有序性。3.要插入到数组上时,基于CAS保证线程安全4.要挂到链表或者红黑树时,基于synchronized保证线程安全5.计数器基于longAdder,BaseCount+CountCell数组。

2023-09-14 21:26:41 84 1

原创 线程池面试题

会丢失,看处理数据得影响,如果是查询类,当接口超时通常会有重试机制,重试获取数据接口。如果是存储类得,如果不想丢失数据情况下,设计一张表,记录任务状态,执行时间,已执行,未执行等等,将数据存入表中,下次重启后扫描进行处理即可。

2023-09-14 16:36:56 32 1

原创 mysql面试题汇总整理

面试回答:(按照总分总得模式进行解答)总:MySQL 的主从复制是依赖于 binlog,也就是记录 MySQL 上的所有变化并以二进制形式保存在磁盘上二进制日志文件。主从复制就是将 binlog 中的数据从主库传输到从库上,一般这个过程是异步的,即主库上的操作不会等待 binlog 同步地完成。分:mysql主从复制得类型?包含3种,异步复制,半同步,全同步复制。异步复制:mysql默认得复制,主库执行完客户端提交事务后立即将结果返回给客户端。不关心异步复制是否已经接收并处理。

2023-09-12 12:10:23 36

原创 ACID,CAP,BASE,PACELC

A(Atomicity)原子性C(consistency)一致性I(Isolation) 隔离性D(Durability) 持久性接下来以mysql为例进行4个分析这四个特性属于事务得特性:其中A原子性通过undo log日志保证I隔离性通过MVCC机制+锁机制C一致性 通过redo log日志保证D持久性;通过AIC三个特性,同时会保存到binlog日志种。

2023-09-11 17:53:16 71

原创 guava cache原理总结(面试)

guava cache是本地缓存实现得一种方式。guava Cache与ConcurrentMap很相似,但也不完全一样。最基本的区别是ConcurrentMap会一直保存所有添加的元素,直到显式地移除。相对地,Guava Cache为了限制内存占用,通常都设定为自动回收元素。在某些场景下,尽管LoadingCache 不回收元素,它也是很有用的,因为它会自动加载缓存。优点:可以按照一定的规则淘汰数据清除数据时的回调通知并发处理能力。

2023-09-08 15:34:34 144 1

原创 spring面试题汇总

在这种情况下,如果我们在同一个配置类里面声明多个相同名字的bean,在Spring IOC容器中只会注册第一个声明的Bean的实例。因为id这个属性表示一个Bean的唯一标志符号,所以Spring在启动的时候会去验证id的唯一性,一旦发现重复就会报错,首先,在同一个XML配置文件里面,不能存在id相同的两个bean,否则spring容器启动的时候会报错。1.Spring 中,有两个 id 相同的 bean,会报错吗,如果会报错,在哪个阶段报错?后续重复名字的Bean就不会再注册了。

2023-09-07 21:55:10 26 1

原创 rpc框架面试题汇总

查看下面一个json,protobuffer在处理得时候,对于key得处理不存储具体得key,而是通过编号进行存储,比如name使用1,version使用2,dependencies没有赋值得操作不进行序列化,节省很多空间。可变长度编码,主要缩减整数占用字节实现,例如java中int占用4个字节,但是大多数情况下,我们使用的数字都比较小,使用1个字节就够了,这就是可变长度编码完成的事。使用文本(text)和二进制(binary)传输协议, 为节约带宽,提供传输效率,一般情况下使用二进制类型的传输协议。

2023-09-07 21:39:54 377 1

原创 dfs算法面试题总结

二叉树里面的路径被定义为:从该树的任意节点出发,经过父=>子或者子=>父的连接,达到任意节点的序列。注意:1.同一个节点在一条二叉树路径里中最多出现一次2.一条路径至少包含一个节点,且不一定经过根节点给定一个二叉树的根节点root,请你计算它的最大路径和例如:给出以下的二叉树,最优路径是:2=>1=>3,或者3=>1=>2,最大路径和=2+1+3=6数据范围:节点数满足 1≤1051≤n≤105要求:空间复杂度O(1),时间复杂度O(n)

2023-09-07 20:47:39 117 1

原创 链表面试算法汇总

将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 �(�)O(n),空间复杂度 �(1)O(1)。例如:给出的链表为 1→2→3→4→5→null m=2,n=4,返回 1→4→3→2→5→NULL.数据范围: 链表长度 0

2023-09-07 20:27:51 39 1

原创 二叉树算法题总结

已知两颗二叉树,将它们合并成一颗二叉树。合并规则是:都存在的结点,就将结点值加起来,否则空的位置就由另一个树的结点来代替。数据范围:树上节点数量满足 0≤n≤500,树上节点的值一定在32位整型范围内。1.递归解决,先合并跟节点,在递归合并左节点,递归合并右节点。进阶:空间复杂度O(1) ,时间复杂度O(n)

2023-09-07 16:17:36 77 1

原创 性能优化总结

线程阻塞情况:使用命令之后可以看到具体的日志,有两种显示方式:第一是线程阻塞,这种可以找到具体的代码。第二是OOM导致的,因为GC线程和业务线程并行执行,OOM问题在下面进行分析。2.使用top -HC 找到最大线程 此时要注意:有两种情况,一是某一个线程一直占用,这说明出现阻塞情况 二是几个线程频繁飙高,这种代表上下文频繁切换,有可能线程在无限创建的可能。缓冲指的是写操作,作为数据的暂存,然后批量传输或者写入。代码复用指的是编码逻辑上的优化,把重复的代码提取出来,做成公共的方法。

2023-09-07 11:44:52 298 1

原创 秒杀系统设计(面试回答总结)

回答内容: 秒杀其实主要解决两个问题,一个是并发读,一个是并发写(并发读核心就是减少用户来服务端来读数据;并发写核心就是在数据库层面独立出来一个库,做特殊得处理)。同时还要针对秒杀系统做一些保护,针对意外情况下设计兜底方案,防止最坏情况发生。秒杀系统得要求也就是高可用,一致性,高并发。高性能:动静分离方案;热点数据发现与隔离;请求得削峰与分层过滤;服务端得优化设计原则:4要1不要1.数据尽量少; 用户请求数据能少就少;系统依赖数据能少就少2.请求数尽量少:3.路径尽量短:用户请求到返回数据过程种,需

2023-09-06 21:43:22 48

原创 redis zset结构详解

type:类型4bit得具体类型,String,list,set,hash,zset等;为啥用4bit?因为4bit可以有16中类型,目前redis还暂未支持这莫多类型。encoding:底层存储结构,4bit;比如hash结构,压缩表结构;LRU_BITS:24位得LRU时间ptr:指针 8byte 64位 指向具体得数据;特殊说明:只有string类型得embstr中ptr指针为空,其他得均有值refCount:引用次数,4byte 32位。

2023-09-06 20:35:24 80

原创 各MQ对比总结

缺点:1.内部机制很难了解,不方便代码改写。2.集群不支持动态扩容。缺点:只支持java。

2023-09-06 17:15:11 94

原创 kafka常见面试题总结

是一个、支持分区的(partition)、多副本的(replica)得消息中间件。

2023-09-06 17:02:35 174

空空如也

空空如也

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

TA关注的人

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