Fork me on GitHub
To the moon

A Coder,a Programmer,a Developer


  • Home

  • Tags

  • Categories

  • Archives

  • Search

Redis 源码解读(1)

Posted on 2019-04-10 | Edited on 2023-05-09 | In java+

版本:redis 5.0.3

1. 解读 Redis 的 adlist /dict源码

1. adlist

相比一般的双向链表,adlist 的独特之处在于:

  1. list 的结构体中,存在 dup、free、match 三种函数指针。
  2. 涉及到内存管理的 zfree方法(在 zmalloc中)。此处先不整理,可以提前参考:zmallc.c源码解读。
  3. 增加了迭代器的相关操作。
Read more »

网络协议之抓包大作战

Posted on 2019-04-05 | Edited on 2023-05-09 | In Operation

网络协议之抓包大作战

使用 Wireshark工具抓包,学习网络协议

  1. ping测试 -> 拆解 IPv4、ICMP 协议
  2. Http测试 -> 拆解 TCP、HTTP协议

为避免过早陷入网络协议的细节,建议提前阅读各种协议头部结构体中的插图

Read more »

自定义一个类加载器代码实现

Posted on 2019-04-04 | Edited on 2023-05-09 | In submission

自定义一个类加载器代码实现

目标:

  • 自定义一个类加载器,对硬盘上的某.class文件进行加载。
  • 代码验证此某.class文件是由那个类加载器完成加载的。
  • 代码验证,通过 new 类加载的操作,能够实现热加载的功能。
Read more »

ARTS(3)

Posted on 2019-04-02 | Edited on 2023-05-09 | In ARTS

ARTS 第三周分享

每周完成一个ARTS(也就是 Algorithm、Review、Tip、Share 简称ARTS):

  1. 每周至少做一个 leetcode 的算法题
  2. 阅读并点评至少一篇英文技术文章
  3. 学习至少一个技术技巧
  4. 分享一篇有观点和思考的技术文章。
Read more »

ARTS(2)

Posted on 2019-03-28 | Edited on 2023-05-09 | In ARTS

ARTS 第二周分享

每周完成一个ARTS(也就是 Algorithm、Review、Tip、Share 简称ARTS):

  1. 每周至少做一个 leetcode 的算法题
  2. 阅读并点评至少一篇英文技术文章
  3. 学习至少一个技术技巧
  4. 分享一篇有观点和思考的技术文章。
Read more »

MS 100题-1

Posted on 2019-03-26 | Edited on 2023-05-09 | In submission

1.把二元查找树转变成排序的双向链表(树)

思路:

  1. 中序递归遍历的方式,将前驱后继相连,因为 Java 是引用传递,所以需要在返回值处更新 PNode 值。
  2. 本处使用了 lombok,所以 idea 要提前安装 lombok 插件。
Read more »

七种内部排序的代码实现

Posted on 2019-03-22 | Edited on 2023-05-09 | In submission

七种内部排序算法的代码实现(Java):

  1. 冒泡排序
  2. 选择排序
  3. 插入排序
  4. 快排排序
  5. 归并排序
  6. 希尔排序
  7. 堆排序
Read more »

ARTS(1)

Posted on 2019-03-15 | Edited on 2023-05-09 | In ARTS

ARTS 第一周分享

每周完成一个ARTS(也就是 Algorithm、Review、Tip、Share 简称ARTS):

  1. 每周至少做一个 leetcode 的算法题
  2. 阅读并点评至少一篇英文技术文章
  3. 学习至少一个技术技巧
  4. 分享一篇有观点和思考的技术文章
Read more »

面经整理6

Posted on 2019-02-23 | Edited on 2023-05-09 | In interview

SSM系列问题推荐阅读:SSM常见面试问题

汇总:趣链、蘑菇街、随手记、网易、招银、IBM、阿里

趣链Java一面之lh篇

自我介绍。
讲一下项目。

1. 类加载的过程。

三个阶段:加载、连接、初始化。

  • 加载:①class文件加载到内存中;②方法区生成运行时类文件;③堆区生成class对象,作为访问方法区中类文件的访问入口。
  • 连接:①验证文件正确性;②为类的静态变量分配内存,并初始化默认值;③符号引用转换成直接引用。
  • 初始化:为类变量赋予正确的初始值。
Read more »

Redis专题

Posted on 2019-02-18 | Edited on 2023-05-09 | In interview

Redis 专题

1. 为什么要用 redis 而不用 map/guava 做缓存,Redis 跟 Memcached 的区别

  1. 因为缓存分为本地缓存和分布式缓存,map/guava 属于本地缓存,Redis/Memcached 属于分布式缓存。
  2. 本地缓存特点:轻量、快速,生命周期随 JVM 销毁而结束;在多实例下,每个实例保存着独立的缓存,相互不一致。
  3. 分布式缓存特点:在多实例下,各实例共用一份缓存,具有一致性;要维护分布式服务高可用,程序架构复杂。

Redis 与 Memcached 区别:

  1. Memcached 是多线程,非阻塞 IO 复用的网络模型;Redis 是单线程,多路 IO 复用的网络模型。

  2. Memcached 只支持 String 类型;Redis 支持更丰富的数据类型(主要五种,String、hash、list、set、zset)。

    [官网] It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams

  3. Memcached 将数据全部存在内存中;Redis 支持数据的持久化。

  4. Memcached 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据;Redis 是原生支持 Cluster 模式的。

Read more »
1…678…16

Harrison Lee / Email (harrisonli60@163.com)

It is never too late to learn a new skill, even a challenging one.

152 posts
23 categories
32 tags
© 2025 Harrison Lee / Email (harrisonli60@163.com)
Powered by Hexo v6.3.0
|
Theme – NexT.Mist v7.0.0
|