5 杨博东的博客

阿里巴巴 - 开发工程师

我要认证

暂无相关简介

等级
TA的排名 8k+

跬步千里 —— 阿里云Redis bitfield命令加速记

简介: 在一次阿里云客户问题解决中,通过给Redis添加bitfield_ro命令,解决了Redis官方bitfield命令无法加速执行的问题,向客户交付了满意的答卷。本文详细描述了阿里云是怎么进行产品中每一点细小的功能改进和体验优化,并持续地反馈社区的全过程。https://developer.aliyun.com/article/757841...

2020-05-07 11:47:05

2020年阿里云实习生招聘开始啦

2020-03-18 20:55:31

这些年我@yangbodong22011参与的开源

2020年第一天,水一篇博客,对新年起码的尊重。这里记录下我参与的开源项目情况。Jedis修复了Jedis transient 关键字造成了序列化错误(https://github.com/xetorthio/jedis/pull/2008)实现了Redis Cluster下多key命令的sendCommand(https://github.com/xetorthio/jedis/p...

2020-01-01 23:11:43

Java Logback简易教程

一、前言本文以一个简单的项目为例,一步步展示logback的同步和异步配置方法,并且配置的日志要求满足阿里巴巴Java开发手册-日志规约 ,因为对于线上服务,日志对于排查问题有至关重要的作用,规范的日志格式配合shell脚本可以快速定位问题。最开始使用Java日志系统,最大的疑惑就是分不清楚log4j、slf4j、logback等日志库之间的关系,不过网上有不少文章介绍这部分相关知识,比如理...

2019-06-19 20:54:55

Java不同时区(timezone)之间时间转换

最近出现一个问题是这样的:我们的系统在国外打印的日志时间由于时差关系和国内不一致,看起来不方便,希望国外的日志和国内保持一致,即:需要对不同时区的时间做转换调整,统一为国内时间。一、关于时区的一些概念1.1 什么是时区?timezone,即由于世界各国家与地区经度不同,地方时也有所不同,按照经度将全球划分为24个时区。时区有相应的英文字母缩写,例如GMT,UTC,CST等,常见的时区,具体...

2019-03-31 16:25:47

char* 和 char[] 的区别

一、代码有关下面代码,p和q的区别是什么:int main(int argc, char *argv[]){ char* p = "Hello World"; char q[] = "Hello World"; return 0;}二、区别和解释p和q的区别是: p 是一个指针,指向程序 只读数据段 的”Hello World”,不可以通过p[x] = x 来赋值,

2018-03-18 23:53:56

Redis INFO 命令详解

没有代码的解释不是解释,没有deadline的任务不是任务,没有流程图或分享的源码阅读不是源码阅读,没有报告的性能测试不是性能测试。 —— 漠冰 曰这篇文章打算作为INFO命令的输出整理汇总,目前还未全部完成…1. 环境代码版本:redis-4.0.6 工具:本地用CLion打开,增加CMakeLists.txt就可以调试了

2018-01-27 19:03:44

难忘的来杭之旅24小时

2018年1月5日~2018年1月6日12:00 考完最后一门。 14:00 到哥哥这边吃饭。 16:00 和哥哥去姐姐医院,和姐姐说再见。 17:00 到火车站,取票,下雪路滑,拉着箱子不好走。 17:20 刚取完票过安检,火车站通知Z88停运,查票的小姐姐刚好查到我就是Z88,笑个不停,我问她:这是不是你今天最开心的事?她说:是。 17:40 退Z88,改签T114(23点

2018-01-07 22:37:39

C语言图书管理借阅系统——ncurses库的使用

一、前言作为一只大四狗,最近还跟着大二同学修了一门课(当然不是之前没通过啦),课程是高级语言课程设计,高级语言指的是C语言 :),内容是做一个XX管理系统,我选择了图书管理系统,先介绍下我做的系统:主要功能: 读者信息管理:添加、修改、删除、查询读者信息。图书信息管理:添加图书、修改图书、删除图书、查询图书图书借阅归还:图书借阅和归还,以及列出借阅情况。信息统计汇总:图书总量统计、图书借阅

2017-12-28 15:41:47

Redis源码分析(intset)

源码版本:4.0.1 源码位置:intset.h:数据结构的定义intset.c:创建、增删等操作实现 1. 整数集合简介intset是Redis内存数据结构之一,和之前的 sds、 skiplist、dict、adlist 等通用数据相比,它是Redis特有的,用来实现Redis的Set结构(当元素较小且为数字类型时),它的特点有:元素类型只能为数字。元素有三种类型:int16_t、i

2017-11-30 00:52:45

Linux 守护进程原理及实例(Redis、Nginx)

1. 什么是守护进程守护进程daemon,是指没有控制终端,运行在后台的进程,通常伴随着系统启动产生,系统关机结束。可以使用命令ps -axj查看系统的守护进程,输出如下所示: 父ID PID 组ID 会话ID 终端 状态 用户ID 命令 PPID PID PGID SID TTY TPGID STAT UID TIME CO

2017-11-28 01:12:09

Linux内核 fork 源码分析

内核版本:linux-4.4.18 源码位置:这里fork相关的代码最终执行的函数为_do_fork(),下面按照顺序分析下_do_fork():首先判断是否需要trace(跟踪)这个进程,这一步主要与调试相关,GDB在x86-64 Linux 系统上的原理就是利用ptrace(2)系统调用 [1]。 有关likely和Unlikely,实际上是利用gcc内置函数对分支条件的优化 [2]。

2017-11-27 19:57:46

Redis监控调研

1 调研目的主要的目的是想调研各大云平台有关Redis监控功能的实现,但是最后我发现各大云平台提供的监控功能都比较基础,比如我想看诸如访问频率较高的HotKey、占用内存较大的Bigkey等指标,它们都没有提供,一部分Redis监控的开源工具实现了这样的功能,但是实现方法实用性不大,见后文汇总。2 调研情况2.1 常见公有云平台监控我所调研的阿里云、腾讯云、青云这三个平台给用户提供的监控信息均是采用

2017-11-15 22:12:22

Redis 专栏(使用介绍、源码分析、常见问题...)

一、介绍相关说Redis : 介绍Redis特性,使用场景,使用Jedis操作Redis等。二、源码分析1. 数据结构Redis源码分析(sds):Redis自己封装的C语言字符串类型。Redis源码分析(dict):字典的实现,Hash表。 Redis源码分析(adlist):Redis中的双向链表。 Redis源码分析(skiplist) :Redis 中的跳跃表,

2017-11-14 13:08:51

Redis源码分析(skiplist)

源码版本: redis-4.0.1 源码位置:server.h :zskiplistNode和zskiplist的数据结构定义。 t_zset.c: 以zsl开头的函数是SkipList相关的操作函数。一、跳跃表简介跳跃表(SkipList),其实也是解决查找问题的一种数据结构,但是它既不属于平衡树结构,也不属于Hash结构,它的特点是元素是有序的。有关于跳跃表的更多解释,大家可以参考 张

2017-11-13 19:47:20

Redis源码分析(adlist)

源码版本redis-4.0.1一、adlist简介Redis中的链表叫adlist(A generic doubly linked list implementation 一个通用的双端链表实现),和普通单链表相比,它的方向可以向前或者向后,这是由于数据结构中定义了next和prev两个指针决定的,下面看下它的数据结构实现。二、数据结构定义typedef struct listNode {

2017-11-08 13:52:36

Redis源码分析(dict)

一、dict 简介dict (dictionary 字典),通常的存储结构是Key-Value形式的,通过Hash函数对key求Hash值来确定Value的位置,因此也叫Hash表,是一种用来解决算法中查找问题的数据结构,默认的算法复杂度接近O(1),Redis本身也叫REmote DIctionary Server (远程字典服务器),其实也就是一个大字典,它的key通常来说是String类型的,

2017-11-07 14:35:08

Redis源码分析(sds)

一、SDS简介sds (Simple Dynamic String),Simple的意思是简单,Dynamic即动态,意味着其具有动态增加空间的能力,扩容不需要使用者关心。String是字符串的意思。说白了就是用C语言自己封装了一个字符串类型,这个项目由Redis作者antirez创建,作为Redis中基本的数据结构之一,现在也被独立出来成为了一个单独的项目,项目地址位于这里。sds 有两个版本,在

2017-11-01 23:09:21

Redis INFO CPU 信息详解

一、INFO CPU通过INFO CPU命令可以查看Redis进程对于CPU的使用情况,如下: 这几个字段的含义如下所示:used_cpu_sys: System CPU consumed by the Redis server used_cpu_user:User CPU consumed by the Redis serverused_cpu_sys_children: System C

2017-10-11 21:30:43

C语言的“隐式函数声明”违背了 “前置声明” 原则

这个问题来源于小组交流群里的一个问题: 最终问题落脚在 : 一个函数在main中调用了,必须在main之前定义或者声明吗?我在自己的Centos上做了实验,结果是函数不需要,但是结构体(变量也要)需要,如下图: 编译上面的程序,func函数只是一个警告,因此我以为C编译器不管前置声明,然后又测试了c++的编译器,发现不能通过编译,直接报错。 然后查询到C++前置声明的相关资料,强制要求前置声明

2017-10-09 22:21:01

查看更多

勋章 我的勋章
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。