Hello,大家好,我是小黑哥~ 上次我们分享 Redis 字符串的底层原理,今天我们再来看下 Redis List 列表的底层原理。 Redis List 命令 Redis List 列表支持的相关指令比较多,比如单个元素增加、删除操作,也支持多个元素范围操作。 Redis List 列表支持列表表头元素插入/弹出**(LPUSH/LPOP**),也支持表尾元素插入/弹出(RPUSH/RPOP)。 另外 Redis List 列表还支持根据下标(LINDEX )获取元素,也支持根据根据下标覆盖相应的元素(LSET )。 除此之外,Redis List 列表还支持的范围操作,比如获取指定范围内全部元素(LRANGE ),移除指定范围内的全部元素(LTRIM )。 了解完的 Redis 相关指令,我们来看下 Redis List 列表底层实现方式,使用两种数据结构: 压缩列表(ziplist) 双向列表(linkedlist) ps:本篇文章基于 Redis 3.2 开始进行讲解 双向列表(linkedlist) 上面我们知道了List 列表支持表头/表尾元素的插入/弹出,这类.... 文带你了解 Redis 列表底层的实现方式 Redis
Hello,大家好,我是楼下小黑哥~ 如果给你一个包含一亿行数据的超大文件,让你在一周之内将数据转化导入生产数据库,你会如何操作? 上面的问题其实是小黑哥前端时间接到一个真实的业务需求,将一个老系统历史数据通过线下文件的方式迁移到新的生产系统。 由于老板们已经敲定了新系统上线时间,所以只留给小黑哥一周的时间将历史数据导入生产系统。 由于时间紧,而数据量又超大,所以小黑哥设计的过程想到一下解决办法: 拆分文件 多线程导入 拆分文件 首先我们可以写个小程序,或者使用拆分命令 split 将这个超大文件拆分一个个小文件。 -- 将一个大文件拆分成若干个小文件,每个文件 100000 行 split -l 100000 largeFile.txt -d -a 4 smallFile_ 这里之所以选择先将大文件拆分,主要考虑到两个原因: 第一如果程序直接读取这个大文件,假设读取一半的时候,程序突然宕机,这样就会直接丢失文件读取的进度,又需要重新开头读取。 而文件拆分之后,一旦小文件读取结束,我们可以将小文件移动一个指定文件夹。 这样即使应用程序宕机重启,我们重新读取时,只需要读取剩余的文件.... 30G 上亿数据的超大文件,如何快速导入生产环境? 并发编程
Hello,大家好,我是小黑哥~ 前端时间小黑哥在公司接手了一个支付项目,这个项目接入了微信、支付宝。这个项目开发下来,小黑哥可是完完整整体验了一下微信、支付宝开发流程,也踩了一些坑。 最近正好看到有些小伙伴想接入微信、支付宝,但是不知道如何开发,所以小黑哥就给大家总结一下微信支付、支付宝接入开发流程。 总体流程 明确使用支付方式 首先我们需要明确我们需要使用的支付方式。 因为微信支付、支付宝中存在很多支付方式,不同支付方式对应的不同的业务场景,开发对接复杂度也不太一样。 以微信支付举例,其总共提供如下几种的支付方式。 这几种支付方式对应的不同的业务场景,比如说: 付款码支付:商家使用扫码枪或其他扫码机具扫描用户出示的付款码,适合于线下商超收款 Native支付:商家在系统中按微信支付协议生成支付二维码,用户扫码拉起微信收银台,确认并完成付款 JSAPI 支付:用户在商家公众号内下单,输入密码支付,完成支付,适合于在线购物的场景 APP 支付:用户在商家的APP中下单,跳转到微信中完成支付,支付完后跳回到商家APP内,展示支付结果 H5 支付:用户在手机浏览器中下单,然后跳转到微信.... 不知道怎么接入微信支付、支付宝?可以看看这篇 支付系统
Hello,各位小伙伴们,早上好~ 上周文章年轻人不讲武德,竟然重构出这么优雅后台 API 接口我们使用 @ControllerAdvice与 ResponseBodyAdvice 重构后端的 API 接口,降低了复杂度,减少了重复代码,后续接口开发非常简洁优雅。 知其然而知其所以然,今天这篇文章来聊聊这个注解背后的原理,让我们彻底掌握这个注解,避免后续踩坑。 另外,有个小伙伴看完上篇文章,觉得这个注解的跟 Spring Interceptor 功能很类似,再加上之前还学习了 Servlet 体系 Filter 功能,不知道这几个有什么区别,感觉很混乱。 所以今天这篇文章下面两个部分出发,详细解释一下。 @ControllerAdvice与 ResponseBodyAdvice 注解原理 Filter,Interceptor,ResponseBodyAdvice 区别 从源码解析背后的原理 上篇文章中我们看到 ResponseBodyAdvice的子类使用 @ControllerAdvice注解,大家有没有好奇,如果我将@ControllerAdvice换成 @Controller.... 写了一套优雅接口之后,领导让我给大家讲讲这背后的技术原理 Spring