- 博客(18)
- 收藏
- 关注
原创 Java 实现基于Redis的分布式可重入锁
Java 实现基于Redis的分布式可重入锁之前在 Java实现基于的Redis的分布式锁 这篇文章中,已经实现了加锁的逻辑,但是有个缺点,就是不可重入,任何重入锁的尝试都会导致死锁的发生,想了一下,这个问题可以解决。 Thinking 如何实现可重入? 首先锁信息(指redis中lockKey关联的value值) 必须得设计的能负
2016-09-28 21:48:52 5726 1
原创 Java实现基于Redis的分布式锁
Java实现基于Redis的分布式锁 单JVM内同步好办, 直接用JDK提供的锁就可以了,但是跨进程同步靠这个肯定是不可能的,这种情况下肯定要借助第三方,我这里实现用Redis,当然还有很多其他的实现方式。其实基于Redis实现的原理还算比较简单的,在看代码之前建议大家先去这里看看原理,我就不翻译了,免得变味了,看懂了之后看代码应该就容易理解了。 时间统一问题:各个客户端加
2016-09-27 15:23:39 844
原创 Linux下用expect实现ssh自动登录并执行脚本
Linux下用expect实现ssh自动登录并执行脚本 expect不是系统自带的,需要安装: yum install expect装完后才可执行以下脚本。 ssh密码认证的登陆脚本:Shell代码 #!/bin/bash # 匹配提示符 CMD_PROMPT="\](\$|#)"
2016-09-27 15:19:18 11856 1
原创 Linux SSH公钥认证配置
Linux SSH公钥认证配置 ssh支持两种认证方式:密码认证和公钥认证。若没有配置公钥认证,则每次ssh连接时都需要输入密码,不仅麻烦而且还不安全,因此推荐配置公钥认证,只需在配置时输入一次密码,之后ssh连接就无需输入密码了。 公钥认证配置只需在ssh客户端机子上配就可以: 1.在客户端机子上生成公钥id_rsa.pub和私钥id_rsa(默认存在当前用户主目录的.s
2016-09-27 15:16:42 5166
原创 WebSocket 协议
WebSocket 协议WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。在这之前都是客户端主动请求服务端,一请求一应答,很多时候实现消息更新都是采用ajax轮询,有延迟,有了WebSocket双方都可以主动发给对端,实现真正的推送。 一、WebSocket Protocol Format(协议格式
2016-09-27 15:11:54 9522 1
WebSocket 协议
WebSocket 协议WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。在这之前都是客户端主动请求服务端,一请求一应答,很多时候实现消息更新都是采用ajax轮询,有延迟,有了WebSocket双方都可以主动发给对端,实现真正的推送。 一、WebSocket Protocol Format(协议格式) ...
2016-09-30 16:46:34 179
Java 实现基于Redis的分布式可重入锁
Java 实现基于Redis的分布式可重入锁之前在 Java实现基于的Redis的分布式锁 这篇文章中,已经实现了加锁的逻辑,但是有个缺点,就是不可重入,任何重入锁的尝试都会导致死锁的发生,想了一下,这个问题可以解决。 Thinking 如何实现可重入? 首先锁信息(指redis中lockKey关联的value值) 必须得设计的能负载更多信息,之前non-ree...
2016-09-30 16:44:04 495
原创 Java实现基于Redis的分布式锁
Java实现基于Redis的分布式锁 单JVM内同步好办, 直接用JDK提供的锁就可以了,但是跨进程同步靠这个肯定是不可能的,这种情况下肯定要借助第三方,我这里实现用Redis,当然还有很多其他的实现方式。其实基于Redis实现的原理还算比较简单的,在看代码之前建议大家先去这里看看原理,我就不翻译了,免得变味了,看懂了之后看代码应该就容易理解了。 时间统一问题:各个客户端加
2016-09-27 19:56:55 2081
原创 Java NIO时间服务
Java NIO时间服务 这篇文章内容是另一篇文章《Java 实现基于Redis的分布式锁》的分支. 时间服务包括客户端和服务端, 服务端监听请求 ,若是时间请求,则返回当前服务器的时间, 各个客户端(分布式锁) 都从给服务器获取时间,已达到全局时间一致。 共三个类 TimeServer、 TimeClient和TimeClientExceptio
2016-09-27 15:40:16 592
原创 Socket Options
Socket Options以下出现中文的地方并不是对英文的翻译 1. SO_TIMEOUT 单位是毫秒,表示等待客戶端连接的最长时间。 Set a timeout on blocking Socket operations: ServerSocket.accept(); SocketInputSt
2016-09-27 15:21:55 504
原创 Http协议格式
Http协议格式 一、请求报文 包括请求行、请求头和请求数据,具体格式如下: 请求方法: GET: 请求指定的页面信息,并返回实体主体。 HEAD: 只请求页面的首部。 POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
2016-09-27 15:20:47 333
原创 Java 获取当前JVM进程ID
Java 获取当前JVM进程ID public static final int jvmPid() { try { RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean(); Field jvm = runtime.getClass().getDeclaredField("jvm"); jvm.set
2016-09-27 15:14:25 4505
原创 Netty+WebSocket实现简单群聊
Netty+WebSocket实现简单群聊这两天看了下WebSocket的RFC文档,对WebSocket协议有了基本的认识,顺便写了篇博客做点笔记 WebSocket 协议。 例子说明:每个网页一个websocket连接,点发送消息后,消息会发送给除了自己之外的其它在线的websocket客户端,简单实现群聊 服务端采用Netty实现,Netty
2016-09-27 15:12:53 6160 2
Java 获取当前JVM进程ID
Java 获取当前JVM进程ID public static final int jvmPid() { try { RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean(); Field jvm = runtime.getClass().getDeclaredField("jvm"); jvm....
2016-09-12 21:30:13 705
Java NIO时间服务
Java NIO时间服务 这篇文章内容是另一篇文章《Java 实现基于Redis的分布式锁》的分支. 时间服务包括客户端和服务端, 服务端监听请求 ,若是时间请求,则返回当前服务器的时间, 各个客户端(分布式锁) 都从给服务器获取时间,已达到全局时间一致。 共三个类 TimeServer、 TimeClient和TimeClientException,下面是源码: ...
2016-09-10 12:57:59 98
Linux SSH公钥认证配置
Linux SSH公钥认证配置 ssh支持两种认证方式:密码认证和公钥认证。若没有配置公钥认证,则每次ssh连接时都需要输入密码,不仅麻烦而且还不安全,因此推荐配置公钥认证,只需在配置时输入一次密码,之后ssh连接就无需输入密码了。 公钥认证配置只需在ssh客户端机子上配就可以: 1.在客户端机子上生成公钥id_rsa.pub和私钥id_rsa(默认存在当前用户主目录的....
2016-09-07 11:54:33 687
原创 Linux下用expect实现ssh自动登录并执行脚本
Linux下用expect实现ssh自动登录并执行脚本 expect不是系统自带的,需要安装: yum install expect装完后才可执行以下脚本。 ssh密码认证的登陆脚本:#!/bin/bash# 匹配提示符CMD_PROMPT="\](\$|#)"# 要执行的脚本script="/root/test.sh"...
2016-09-07 11:36:45 1749
原创 Java 原始数据类型
Java 原始数据类型Java共7种原始类型 类型占用字节默认值取值范围boolean4falsefalse,truebyte10-2^7 ~ 2^7-1short20-2^15 ~ 2^15-1int40-2^31 ~ 2^31-1long80-2^63 ~ 2^6...
2016-09-07 10:58:02 809
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人