Redis实现分布式锁
Redis的分布式锁, 大家称呼为”占坑”. 一个指定的坑, 只能一个人占, 其他人来了, 只能等这个人完事了, 再进来.
我认为拿数据库来实现分布式锁的思路都差不多, 多个服务端服务器同时向”存锁的数据服务器”发出锁请求, 有且只有一个服务器能成功存入自己的锁信息, 其他服务器获取锁失败.
请求锁流程
首先, 我们要考虑如果服务端服务器挂了, 比如请求锁成功之后, 获得锁的客户端服务器挂了, 这个时候没有缩放锁. 那么就会造成死锁. 这个时候有一种很方便的处理方式, 给Redis锁设置一个时间, expire key time. 锁自动消除.
好的, 那我们就这样实现一下.
锁接口
package com.redis.lock;
public interface...
初识Redis
简略的记录一下学过的Redis的基础知识.
在当初看Netty框架的时候, 我被Netty简约而高效的设计给震撼到了, (现在Netty却忘个差不多了, 尴尬), 在前段时间学习Redis的时候, 我又被这种设计风格给震撼到了, Redis作为一个键值对存储数据系统, 它运行在内存中, 仅仅有5种数据类型, 命令也相当地简洁. 而且Redis是单线程, 如果在我没有用过Redis之前, 我估计会怀疑Redis为什么会这么火, 但用过了之后, 真香.
Redis的数据类型
Redis 一共5中数据结构, string(字符串), list(列表), hash(字典), set(集合), zset(有序集合)
redis是一种key-value数据库, 所以你在创建一个基本数据...
TCP的三次握手与四次挥手
TCP报文
端口号
端口号是用来区分操作系统中不同进程的.
源端口 : 发送TCP报文的应用程序的端口
目的端口 : TCP报文的接收端口
序号(Sequence number) : 发送出去字节的最末尾序列号
确认序号(Acknowledgement number) : 已经确认接收到的字节的序号
数据偏移 : 以4个字节为单位, 数据的偏移位, 占4位, 所以TCP头部最大长度为15 * 32 / 8 = 60字节
保留 : 3位 以后使用
NS—ECN-nonce。关于NS的具体解释
CWR : 用于拥塞处理。关于CWR的具体解释
ECE : ECN-Echo有两种意思,取决于SYN标志...
解决github io的sitemap生成问题
虽然我的博客没人访问, 只有我在上面记录一些内容, 但是看到不能正确地生成sitemap.xml, 谷歌无法进行正常收录, 我就莫名地不爽.
我曾尝试了很多地办法, 甚至想过在本地安装ruby环境, 在本地生成完sitemap.xml再push到github上面去, 但是这样太麻烦了, 不是正确而高效地处理方式.
我猜测问题的根源发生在_config.yml中, 但是改了N多次, 还是没有解决.
之后我就用了一个sitemap模板, 大概如下
但是一点都不好使, 在google console中, 一直显示我的站点地图是存在错误的.
哎, 一顿折腾之后, 算了吧, 就这样把.
今晚莫名地闲了起来, 可能是没什么计划了把, 就想解决一下这个问题.
然后goog...
Java 集合容器类总览
主要的数据类型
Java集合类可以总括为三大部分, 分别是List, Set, Map;
当然List, Set, Map接口都继承了Collection接口, 也就是Collection接口, 除了(Arrays, Collections两个工具类没有实现该接口), 该接口是其他所有类的共有接口.
为什么说只有三大部分? Queue, Stack呢?
Deque继承了Queue, Deque的实现类LinkedList, 继承了抽象类AbstractSequentialList, 而AbstractSequentialList也间接实现了List的接口.
Stack的实现是通过Vector来实现, 而Vector继承了抽象类AbstractList;
为什么Lis...
43 post articles, 9 pages.