java开发笔记
-韧-
这个作者很懒,什么都没留下…
展开
-
Redis分布式锁之 JedisCluster 分布式Lock
Redis分布式锁重要的原则就是,加锁、解锁要原子性。Redis官方网站提供了RedLock锁。但是我感觉那个锁比较臃肿,完全没有必要。如果集群中有故障。锁获取失败就可以了,Redis锁的机制就决定了他不能像数据库事物一样。所以集群中挡掉节点的情况,我不予考虑。代码示例:/** * 获取redis锁,有重试机制 * @param lockKey 锁的key * @param redisLockRequestId new 一个RedisLockRequestId 对象即可 -原创 2021-01-12 10:57:05 · 1503 阅读 · 0 评论 -
Redis之 ShardedJedis 分布式Lock
Redis分布式锁最重要的就是要做到上锁、解锁都是原子性的。这样才能保证高并发下不会出现问题。请看实例代码:RedisLockRequestId.javapublic class RedisLockRequestId { private String requestId; public String getRequestId() { return requestId; } public void setRequestId(String request原创 2021-01-12 10:38:13 · 503 阅读 · 0 评论 -
JAVA Netty实现聊天室+私聊功能
功能介绍使用Netty框架实现聊天室功能,服务器可监控客户端上下限状态,消息转发。同时实现了点对点私聊功能。技术点我都在代码中做了备注,这里不再重复写了。希望能给想学习netty的同学一点参考。服务器代码服务器入口代码package nio.test.netty.groupChat;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.Ch原创 2020-06-28 18:39:14 · 6064 阅读 · 7 评论 -
JAVA NIO 聊天室
功能介绍JAVA NIO 聊天室功。服务器端实现了 客户端上线、下线状态监控及消息转发功能。客户端写了两个,第一个是主线程写另外写了一个Thread去接受输入。第二是使用了Selector监听消息,输入在一个子Thread中。本人喜欢程序中使用线程池去管理线程,所以就算有一个线程我也使用了线程池去管理这个线程了,当然线程池用的是Executors.newSingleThreadExecutor(); 单线程线程池。服务器端代码package nio.test.groupChat;import ja原创 2020-06-27 05:35:32 · 217 阅读 · 0 评论 -
网络编程之Java BIO 概念及代码使用demo
JAVA BIO Socket 服务端代码demo代码只有Server端测试用的 telnet工具,代码后边有测试过程。package bio.test;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;import java.util.concurrent.Executor原创 2020-06-26 18:54:07 · 415 阅读 · 0 评论 -
网络编程之Java NIO 概念及代码使用demo
Java NIO 基本概念Java NIO 简介Java NIO 与 IO 的主要区别缓冲区( Buffer)Buffer 中的重要概念Buffer 的常用方法buffer测试代码直接与非直接缓冲区通道( Channel)Java 为 Channel 接口提供的最主要实现类如下获取通道的方式本地NIO 中channel及方法测试代码NIO的非阻塞式网络通信NIO阻塞模式SocketChannel选择器( Selector)NIO非阻塞模式SocketChannel使用SelectorNIO非阻塞模式Test原创 2020-06-26 01:43:09 · 334 阅读 · 0 评论