02 2023 档案
摘要:本文为上一篇redis使用setnx实现分布式锁的增加篇 重在体会思想 与开源的框架自然是无法比拟的 如果当前线程已经获取到锁的情况下,不需要重复获取锁,而是直接复用。 秒杀A里面同时调用秒杀B 需要实现锁的复用 不然会报该锁 获取失败 执行错误 package com.shanhe.lock; p
阅读全文
摘要:package com.shanhe.service; import com.shanhe.entity.CommodityDetails; import com.shanhe.lock.impl.RedisLockImpl; import com.shanhe.mapper.CommodityDe
阅读全文
摘要:Curator环境搭建 Maven依赖 <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>4.2.0</version> </dependency>
阅读全文
摘要:如下代码 编写群聊的server端 本文主要体会思想, 好友列表,分组关系以及聊天记录等都可以基于业务去数据库维护 package com.shanhe.register; import io.netty.bootstrap.ServerBootstrap; import io.netty.chan
阅读全文
摘要:原理和思想 1.当前生产者会把接口信息注册到zk(注册中心)上去,路径是以com.shanhe.api.service.UserService 下面是多个地址 ,存储结构是像存储结构分析那样注册的, 消费者通过com.shanhe.api.service.UserService 这样的路径去访问us
阅读全文
摘要:主流的序列化框架 Google 的 Protobuf Facebook 的 Thrift Jboos 的 Marshaling 使用编码器和解码器能够让我接收到的数据直接就是一个java对象。 而不需要json Marshaling编码器 maven依赖 <dependency> <groupId>
阅读全文
摘要:分析有轮训 随机 权重等本地负载均衡器算法 多个策略的共同行为从集群里取一个出来 本文采用策略模式去手写 Maven依赖 Maven依赖信息 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-st
阅读全文
摘要:分析了jdk1.7和1.8的ConcurrentHashMap源码之后,了解它的思想 尝试着自己手写ConcurrentHashMap package com.shanheyongmu.map; import java.util.Hashtable; /** * 手写ConcurrentHashMa
阅读全文
摘要:LinkedHashMap实现缓存淘汰框架 LRU(最近少使用)缓存淘汰算法 LFU(最不经常使用算法)缓存淘汰算法 ARC(自适应缓存替换算法)缓存淘汰算法 FIFO(先进先出算法)缓存淘汰算法 MRU(最近最常使用算法)缓存淘汰算法 LinkedHashMap基于双向链表实现,可以分为插入或者访
阅读全文
摘要:看完jdk 1.7和1.8的源码之后, 受源码的启发 手写一下HashMap,主要体会思想和原理 基于Arraylist集合方式实现: package com.shanheyongmu.map; import java.util.ArrayList; import java.util.List; /
阅读全文