主页

Redis设计与实现(一)

第二章 动态字符串 第三章 链表 第四章 字典 第五章 跳跃表 第六章 整数集合 第七章 压缩列表 第八章 对象 string list hash set zset 总结 第二章 动态字符串 主要介绍了redis的SDS(Simple Dynamic String)的数据结构,比C上的String是有一个升级的,重点有几点: SDS的数据结构里除了一个char数组,还有两个int字段,分别保存数组总长度 以及 剩余可用长度。 SDS的扩容机制:数组长度小于 1M 时,每次扩容会额外扩容一倍,扩容后的剩余可用长度是总长度的一半;数组长度大于 1M 时,每次扩容额...

阅读更多

状态机分享

1 概念描述 1.1 有限状态机 1.1.1 一个典型的NFA状态机 1.1.2 一个典型的DFA状态机 1.2 事件驱动 1.3 Questions 2 开源框架 spring-statemachine 2.1 简介 2.2 基础模型 4.前景规划 1 概念描述 1.1 有限状态机 摘录一段wiki的介绍: 有限状态机(英语:finite-state machine,缩写:FSM)又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数...

阅读更多

BIO,NIO,AIO简单分析

名词解释 阻塞与非阻塞 多路复用 代码示例 名词解释 BIO: Blocking IO 即阻塞IO,准确的说是同步阻塞IO NIO: NonBlocking IO 即非阻塞IO,准确的说是同步非阻塞IO AIO: Asynchronous IO 即异步IO,准确的说是异步非阻塞IO 阻塞: 简单来说,就是当你发起一个任务(命令/请求/操作)的时候,无论任务是否由你完成,你都得等着,直到任务完成。 非阻塞: 跟阻塞相反,就是当你发起一个任务时,交给其他人去做,你可以去做其他的事儿,但是时不时的还得回来看看做完了没(这一步就叫做轮询)。 异步: 异步这个词有很多意思,在当前场景下,意思就是当你发起一个任务时,交给其他人去做,你就可以去做别的事儿了,其他人做好之后,会直接送...

阅读更多

北京面试历险记一

JAVA基础 volatile关键字简述 synchronized 与 Lock 的区别 单例模式 生产者消费者 GC算法 HashMap与ConcurrentHashMap MySQL 索引 MVCC 框架与协议 NIO的使用 SpringMVC的使用 Zookeeper的使用 dubbo的使用 其他 七月份并不是一个面试的好季节,但我还是义无反顾的去面了。以下是一些面试经验总结,以及所经历的一些面试题,以此警醒自己,也希望能对后来者有所帮助。 JAVA...

阅读更多

Java集合框架--概述

概述 Collection Map 结语 概述 Java中的集合框架有两种,一种是Map,一种是Collection,Collection是一种线性的数据结构,Map则是一种key-value形式的数据结构。Java中的集合框架十分常用,比如HashMap,ArrayList,LinkedList等,下面介绍一下集合框架的关系,后续再深入每个类的内部,分析其实现原理与应用场景。 Collection Collection的派生类主要有三种,List,Set,Queue。 List在数据结构上可以称为链表,其特点是它记录了每个元素所在的位置,可以通过get(int index)方法获取对应位置上的元素,或者通过set(int index, E value)向指定位置...

阅读更多

记一次mac上的文件乱码处理

起因是某次需求需要洗一批数据,判断国内、国际、港澳台地区订单,打上不同的标识。订单数据中存有国家以及省市字段,需要导出订单数据,在线下打上对应标识。于是乎,我写了个shell的脚本,希望能搞定这个事儿(后来的事实狠狠的打了我的脸,不过那是另一个故事了)。在意料之中的,我遇到了中文编码的问题。 别的不说,先贴代码 #!/bin/bash ORDER_FILE=$1 RESULT="$1-result.csv" echo "orderNum,regionType" >> $RESULT echo "Wash $ORDER_FILE start..." ORDER_ARRAY=($(awk -F',' '{print $1}' $ORDER_FILE)) COUNTRY_AR...

阅读更多