Home

Redis实现分布式锁

Redis的分布式锁, 大家称呼为”占坑”. 一个指定的坑, 只能一个人占, 其他人来了, 只能等这个人完事了, 再进来. 我认为拿数据库来实现分布式锁的思路都差不多, 多个服务端服务器同时向”存锁的数据服务器”发出锁请求, 有且只有一个服务器能成功存入自己的锁信息, 其他服务器获取锁失败. 请求锁流程 首先, 我们要考虑如果服务端服务器挂了, 比如请求锁成功之后, 获得锁的客户端服务器挂了, 这个时候没有缩放锁. 那么就会造成死锁. 这个时候有一种很方便的处理方式, 给Redis锁设置一个时间, expire key time. 锁自动消除. 好的, 那我们就这样实现一下. 锁接口 package com.redis.lock; public interface...

Read more

初识Redis

简略的记录一下学过的Redis的基础知识. 在当初看Netty框架的时候, 我被Netty简约而高效的设计给震撼到了, (现在Netty却忘个差不多了, 尴尬), 在前段时间学习Redis的时候, 我又被这种设计风格给震撼到了, Redis作为一个键值对存储数据系统, 它运行在内存中, 仅仅有5种数据类型, 命令也相当地简洁. 而且Redis是单线程, 如果在我没有用过Redis之前, 我估计会怀疑Redis为什么会这么火, 但用过了之后, 真香. Redis的数据类型 Redis 一共5中数据结构, string(字符串), list(列表), hash(字典), set(集合), zset(有序集合) redis是一种key-value数据库, 所以你在创建一个基本数据...

Read more

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标志...

Read more

解决github io的sitemap生成问题

虽然我的博客没人访问, 只有我在上面记录一些内容, 但是看到不能正确地生成sitemap.xml, 谷歌无法进行正常收录, 我就莫名地不爽. 我曾尝试了很多地办法, 甚至想过在本地安装ruby环境, 在本地生成完sitemap.xml再push到github上面去, 但是这样太麻烦了, 不是正确而高效地处理方式. 我猜测问题的根源发生在_config.yml中, 但是改了N多次, 还是没有解决. 之后我就用了一个sitemap模板, 大概如下 但是一点都不好使, 在google console中, 一直显示我的站点地图是存在错误的. 哎, 一顿折腾之后, 算了吧, 就这样把. 今晚莫名地闲了起来, 可能是没什么计划了把, 就想解决一下这个问题. 然后goog...

Read more

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...

Read more