自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 约瑟夫环Java实现

今天这个问题被问到了 说的不太好 这里解释一下约瑟夫环说白了就是一群人站成一个圈 比如10个人 开始报数 每次报数为3的出圈 剩下的人继续从1开始报数 问剩下一个人的时候 这个人是几号?上代码:class Solution { public static void main(String[] args) { int count = 10;//总共10个人 int key = 3; //题里面问的是最后剩下的这个人是几号 那么先得给站成一圈的人 标

2021-01-23 13:21:32 403 3

原创 Redis zset实现滑动窗口简单限流

/** * 计数器方法: 在10秒内,只有20个请求能访问我的代码 * 实现方式: setnx key 10 value 每多一个请求,value就+1,,当value等于10时,不执行接下来的代码 * 缺点: 能知道1-10s内有多少次请求,但是2-11s的请求数不知道 * 时间滑动窗口 * 下面介绍这种 */@AllArgsConstructorpublic class RedisSimpleRateLimiter { private Jedis jedis; /.

2021-01-11 15:24:10 1184

原创 redis:利用zset实现延迟队列

package com.lrw.ohter.redistest;import com.alibaba.fastjson.JSON;import lombok.AllArgsConstructor;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import redis.clients.jedis.Jedis;import java.util.Set;import java.util.UUID;@AllArgsConstruc

2020-10-03 17:04:27 1423

原创 BIO/AIO和IO多路复用常见问题

什么是BIO顾名思义 blockingIO 是阻塞IO 一个连接一个线程作为服务端开发 我们使用serverSocket绑定完端口之后 会监听该端口 等待accept事件 accept事件会阻塞当前线程 当我们收到accept事件的时候 会拿到一个客户端与当前服务端的socket 针对这个socket我们可以进行读写 这就有个问题 如果1w个连接呢 就要建立1w个线程 CPU是肯定顶不住的 所以就有了NIONIO我理解就是not blocking IO它从两方面解决了问题1.Java层面提供s

2020-09-13 21:40:45 202

原创 十分钟看懂Java7种单例模式+常见的问题

什么是单例模式?首先构造器私有 并且必须保证一个类只有一个实例饿汉式public class A{ private A(){} private final static A a = new A(); private static A getA(){ return a; }}优缺点编程简单 但是无法延迟创建对象 浪费空间懒汉式见名知意 很懒 所以会延迟创建对象单线程写法public Class A{ private A(){} private static A a;

2020-09-05 11:16:31 203

原创 堆排序Java实现

什么是堆呢?首先是一棵完全二叉树(叶节点只能出现在最下层和次下层,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树)然后父节点的值都要大于子节点我们的目的很简单 首先要构造一个堆```java//n是树里面有多少结点 i表示我们要做heapify操作的节点public void heapify(int[] tree, int n, int i) { if (i >= n) { return; } int c1 = 2 * i + 1;

2020-09-01 23:11:25 125

原创 redis分布式锁的实现方式

是什么?为什么要有分布式锁?首先 现在的项目很少是单体的了 都是分布式的 也就是可能在不同的服务器上 而synchronized这些锁 是JVM层面或者API层面的锁 所以说 无法锁住 我们需要新的方式保证安全 也就是分布锁有哪些实现方式?1.zookeeper2.mysql3.redisredis:set的key是商品ID value可以是个随机值 大家抢购同一个商品 就给这个商品加一把锁注意这个10s,现在有两个线程,可能到10s的时候 线程A还没执行完,就释放锁,然后B线程进来了,刚

2020-08-31 21:14:00 191

原创 Spring的初始化流程以及循环依赖原因和解决方法

Spring的初始化过程容器先初始化 就是调用复合方法refresh bean的生命周期是在refresh方法里面的 这个refresh方法里面和bean生命周期关系最大的两个方法是 registerBeanPostProcessors(beanFactory); finishBeanFactoryInitialization(beanFactory) :这个方法将会对非延迟加载的单例Bean进行预实例化他们都调用的getBean->doGetBeanbean的生命周期:spring先

2020-08-30 13:57:00 481

原创 滑动窗口简单理解

滑动窗口在TCP报文的头部 有个窗口字段 是用来控制发送方窗口大小的发送方的滑动窗口:然后发送方把数据全部发出去 可用窗口为0当发送方收到了之前的 已发送但是未收到ack确认的 ack确认后,发送窗口移动接收窗口接收窗口和发送窗口的大小是相等的吗?约等于 因为滑动窗口并不是一成不变的...

2020-08-29 19:52:00 696

原创 分布式事务(6种)

什么是事务?就是一系列操作 要么同时成功 要么同时失败 为了保证这一系列的操作 必须同时满足四大特性分布式事务?比方说下单操作 涉及到很多环节 优惠券模块 积分模块等 某一个模块失效了 别的成功了就会出问题 分布式事务就是要保证大家一起都成功常见的几种方案:1.两段式提交(2pc)通过消息中间件协调多个系统 比如有AB两个事务 中间件先问A准备好了吗 A说准备好了 问B准备好了吗 B说准备好了 然后A提交 B提交 如果有一个提交失败了 那么就全都回滚2.三段式提交(3pc)在两阶段提交第一

2020-08-11 10:25:57 712

原创 TCP协议(3握4挥)

TCP是什么?TCP:面向连接的 可靠的 基于字节流的 传输层 通信协议需要注意的有下面几位ACK:该位置1,确认应答 的字段变得有效RST:该位置1,TCP连接过程中出现异常必须强制断开连接SYC:该位置1,表示希望建立连接 并在其序列号(seq)字段进行初始值的设定FIN:该位置1,表示今后不会再有数据发送,希望断开连接第三次握手是可以携带数据的 前两次不能 一旦完成三次握手 双方都处于establish状态 至此连接建立完成 可以互相发送数据了为什么是3次?1.防止历史连接建立

2020-08-08 12:47:10 185

原创 关于AQS

了解的不多 写博客主要是为了便于自己理解和记忆 内容多数为各个博客上面总结的 再加上一点自己的理解 见谅什么是AQS?AbstractQueuedSynchronizer 抽象队列同步器 是一套多线程访问共享资源的框架 注意是框架 不是具体的实现原理:内部依赖了FIFO双向队列 如果当前线程获取失败 AQS会将该线程以及等待状态等信息构造成一个Node,将其加入同步队列的尾部,同时阻塞当前线程,当同步状态释放时,唤醒队列的头节点具体的实现有什么?如CountDownLatch Reen

2020-07-26 23:41:13 181

空空如也

空空如也

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

TA关注的人

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