摘要:redis使用跳表作为有序集合的底层实现之一,下面来看下跳表的结构 一.跳表的结构 跳表的优势:区间查找,跳表可以做到O(logn) 的时间复杂度定位区间的起点,然后在原始链表中顺序往后遍历就可以了。 二.redis的zset的实现 1.当元素个数小于128且元素长度都小于64字节,使用ziplis 阅读全文
posted @ 2020-09-25 16:51 jy的blog 阅读(5) 评论(0) 推荐(0) 编辑
摘要:字典作为一种保存键值对的数据结构,在redis中使用十分广泛,redis作为数据库本身底层就是通过字典实现的,对redis的增删改查实际上也是构建在字典之上。 一.字典的结构 二.hash冲突 采用头插链地址法,因为没有指向链尾的指针,插在最前面,复杂度O(1) 三.rehash 即将entry数组 阅读全文
posted @ 2020-09-25 15:31 jy的blog 阅读(5) 评论(0) 推荐(0) 编辑
摘要:redis自己实现了一种名为简单动态字符串的抽象类型(simple dynamic string)作为字符串的表示。下面将简单介绍sds的实现原理。 一.sds的结构 二.sds特性 1.常数复杂度获取sds长度 获取sds长度的时间复杂度为o(1), c语言不记录长度信息,获取长度时间复杂度为o( 阅读全文
posted @ 2020-09-25 14:20 jy的blog 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-07-12 15:30 jy的blog 阅读(34) 评论(0) 推荐(0) 编辑
摘要:1.什么是SPI SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。 SPI的作用就是为这些被扩展的API寻找服务实现。 2.SPI和API的使用场景 API (Application Program 阅读全文
posted @ 2019-09-10 17:11 jy的blog 阅读(7071) 评论(3) 推荐(3) 编辑
摘要:游戏内容组内技术分享,持续更新中.... http://jiangyu_sx.coding.me/jyTopicShare/#/ 阅读全文
posted @ 2019-04-25 17:09 jy的blog 阅读(57) 评论(0) 推荐(0) 编辑
摘要:ViewResolver的主要职责是根据Controller所返回的ModelAndView中的逻辑视图名,为DispatcherServlet返回一个可用的View实例。SpringMVC中用于把View对象呈现给客户端的是View对象本身,而ViewResolver只是把逻辑视图名称解析为对象的 阅读全文
posted @ 2019-04-25 17:07 jy的blog 阅读(103) 评论(0) 推荐(0) 编辑
摘要:最近公司在重构广告系统,其中核心的打包功能由广告系统调用,即对apk打包的调用和打包完成之后的回调,需要提供相应的接口给广告系统。因此,为了将apk打包的核心流程和对接广告系统的业务解耦,利用了spring的事件监听特性来满足需求。以下说明spring的事件机制的相关内容。 1.观察者模式 Spri 阅读全文
posted @ 2018-11-28 21:31 jy的blog 阅读(1165) 评论(0) 推荐(1) 编辑
摘要:WebMvcConfigurerAdapter配置类是spring提供的一种配置方式,采用JavaBean的方式替代传统的基于xml的配置来对spring框架进行自定义的配置。因此,在spring boot提倡的基于注解的配置,采用“约定大于配置”的风格下,当需要进行自定义的配置时,便可以继承Web 阅读全文
posted @ 2018-08-16 00:33 jy的blog 阅读(8469) 评论(0) 推荐(0) 编辑
摘要:当我们的应用程序需要接受比预期多很多的并发连接的时候,我们需要从阻塞传输切换到非阻塞传输上去,如果是我们的网络编程是基于jdk提供的API进行开发地的话,这种传输模式的切换几乎要我们重构整个网络传输相关的代码,然而,Netty为它所有的传输实现了一个通用的API,这使得我们能更加简单的从阻塞传输切换 阅读全文
posted @ 2018-07-24 14:57 jy的blog 阅读(99) 评论(0) 推荐(0) 编辑