自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

杨博东的博客

yangbodong dot cn

  • 博客(181)
  • 资源 (7)
  • 收藏
  • 关注

原创 这些年我发过的技术相关文章

一些在公众号或者外部发过的文章或者技术资料。

2023-10-18 11:12:18 158

原创 这些年我@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 518 3

原创 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 1701 1

原创 计算机网络漫谈

前言:本文作于2017年1月~3月之间,借助大三寒假的时间,我把自己学习的网络相关的知识做了个简单的整理,由于个人能力有限,我参考了 阮一峰 互联网协议入门,并且在我文中出现的一些插图也是来自他的原文,通过这些文章,我希望能让读者建立起计算机网络的基本概念,但是文章中也有许多语焉不详的地方,如果搞懂,我会不断更新。我希望你读这些文章就像读故事一样,这样你会很容易理解网络中的一些诸如为什么计算机需要

2017-05-18 08:39:46 2866 4

原创 WordPress恢复时候遇到的几个问题

1,一键安装 LAMP 最好是选择 CentOS 这种成熟的系统,最开始用 Alibaba Linux 报了好几个错,懒得折腾,最后重置镜像了。2,安装完 LAMP 之后,如果选择的 WordPress 版本太高,可能需要单独升级 php。5,还有一个装插件等老是弹出来让输入 FTP 的地址和密码的问题,参考。请给 wp-content 配置 www 用户权限。,完成之后注意可能找不到 Nginx 的路径。4,此时注意,把 WordPress 解压到。,可能是新版直接安装到了。3,按照网上教程,例如。

2023-10-31 20:22:21 276

原创 Lettuce: Connection to xxx not allowed. This partition is not known in the cluster view.

Lettuce: Connection to xxx not allowed. This partition is not known in the cluster view.

2022-07-08 17:04:04 2181 1

原创 Jedis: java.lang.NumberFormatException: For input string: “6379@13028“

Jedis 报错:java.lang.NumberFormatException: For input string: "6379@13028"

2022-07-08 17:03:13 446

原创 第一篇:《Kubernetes 入门介绍》

前言:本文是一篇 kubernetes(下文用 k8s 代替)的入门文章,将会涉及 k8s 的技术历史背景、架构、集群搭建、一个 Redis 的例子,以及如何使用 operator-sdk 开发 operator 的教程。在文章过程中,会穿插引出 Pod、Deployment、StatefulSet 等 k8s 的概念,这些概念通过例子引出来,更容易理解和实践。文章参考了很多博客以及资料,部分在文章中用链接指示,部分放在最后参考资料部分。背景2004-2007 年,Google 大规模的使用 C.

2021-11-08 09:40:11 2459 6

原创 CLion 2021.2 debug报错 process exited with status -1 (attach failed (Not allowed to attach to process.

Clion 升级 2021.2 版本后 debug 报错:process exited with status -1 (attach failed (Not allowed to attach to process. Look in the console messages (Console.app), near the debugserver entries, when the attach failed. The subsystem that denied the attach permissi

2021-08-19 09:49:27 2831

原创 Redis 客户端重试指南

在互联网服务中,特别是在云环境下,网络及硬件环境复杂,所有应用程序都可能遇到暂时性故障。暂时性故障包括瞬时的网络抖动,服务暂时不可用,服务繁忙导致超时等,这些故障通常可以自我修复,在间隔一定时间后重试,则很大概率可以成功。​为什么会出现暂时性故障云 Redis 集群的高可用云 Redis 集群或者云环境中的很多产品,都是由大量机器组成的集群提供服务,机器可能发生各种各样的硬件故障,比如 CPU,内存,磁盘 都可能发生故障。当故障发生时,Redis 服务会自动做 HA (High Available)

2021-08-13 10:59:55 1494

转载 好好的 Tair 排行榜不用,非得自己写?20 行代码实现高性能排行榜

TairZset 是阿里云自研的可实现任意维度 double 类型的分值排序的数据结构,借助 Tair 客户端同时可实现扩展性,即可以将计算任务分布至多个数据节点完成,实现分布式排行榜能力。本文介绍了 TairZset 的能力以及利用 TairZset 实现奖牌榜、分布式排行榜、实时排行榜的方案。背景介绍排序需求常见于各类游戏、应用、奖牌、积分等排行榜中,通常业务对排序的需求如下:支持增删改查和反向排序,可根据分数范围获取相应用户。排序操作执行速度快。支持多维排序。支持扩展(即 分布式排行榜

2021-08-12 19:40:52 467

转载 Redis6.2发布 地理位置功能增强了什么?

原文地址:https://developer.aliyun.com/article/780257Redis社区最近刚刚发布Redis6.2 RC1版本,在本次发布中,阿里云Tair团队(阿里云云内存数据库产研团队,负责云上Redis社区版和Redis企业版Tair)为社区贡献了大量高质量代码与功能,其中关于地理位置查询能力的提升上,阿里云贡献了GEOSEARCH和GEOSEARCHSTORE两个重要而强大的API。本文通过分析这两个全新的API,对Redis在地理位置型应用进行深入剖析,并延伸介绍了阿里云

2020-12-21 17:36:04 888 1

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

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

2020-05-07 11:47:05 549

原创 Java Logback简易教程

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

2019-06-19 20:54:55 1753 2

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

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

2019-03-31 16:25:47 47034 4

原创 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 1149 1

原创 Redis INFO 命令详解

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

2018-01-27 19:03:44 7558

原创 难忘的来杭之旅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 1808 12

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

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

2017-12-28 15:41:47 5828 5

原创 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 3832

原创 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 5981 2

原创 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 3562

原创 Redis监控调研

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

2017-11-15 22:12:22 1872

原创 Redis源码分析(skiplist)

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

2017-11-13 19:47:20 4285

原创 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 4722

原创 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 10297 9

原创 Redis源码分析(sds)

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

2017-11-01 23:09:21 7325 3

原创 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 7268 7

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

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

2017-10-09 22:21:01 1528

原创 腾讯云对象存储如何在浏览器打开已上传文件

对象存储的使用文档见: https://cloud.tencent.com/document/product/436/9512 上传了文件之后,点击文件信息,会显示文件访问链接,如下所示: 但是这个链接的默认操作是把文件下载到本地,图片上也提醒了,如需在浏览器中预览资源,请参考静态网站最佳实践,并使用自定义域名访问,也就是说:你必须有已经合法备案的域名才可以使这个资源在浏览器中打开如果你有域名,

2017-09-29 14:19:43 6228 2

原创 google-chrome 启动报错 nss_util.cc(627)] NSS_VersionCheck("3.26") failed. NSS >= 3.26 is required

一、错误情况报错如下:[0807/144244.712736:FATAL:nss_util.cc(627)] NSS_VersionCheck("3.26") failed. NSS >= 3.26 is requiredPlease upgrade to the latest NSS, and if you still get this error,contact your distribut

2017-09-14 23:38:30 8051 1

原创 ZooKeeper 集群搭建 Error contacting service. It is probably not running.

搭建环境:Centos 7 虚拟机 3台 按照此教程搭建:https://www.ilanni.com/?p=11393之后出现错误:Error contacting service. It is probably not running,这个错误是zkServer.sh最后验证状态报的错误,正常情况下状态是leader或者follower。网上有关这个问题出现的可能性有很多分析,大家自行搜索,我

2017-08-31 23:45:07 1726

原创 负载均衡算法WRR介绍

一、负载均衡负载均衡是一个很大的概念,既有从硬件层面来解决问题的,又有从软件层面解决的,有关负载均衡的介绍,推荐阅读: http://os.51cto.com/art/201108/285359.htm, 本文主要介绍负载均衡算法中很简单的一种WRR(Weighted Round Robin),加权轮训调度算法,并且配合实现以及对它存在问题进行分析和提出一些优化策略。二、原始的WRR算法假设有3台

2017-06-18 18:17:56 17056 6

原创 ShardedJedisPipeline 源码分析

一、什么是pipeline?什么是ShardedJedis?由于pipeline和ShardedJedis的介绍和源码分析在网上已经有了,本文就不再赘述,直接给出链接:pipeline的介绍: http://blog.csdn.net/freebird_lb/article/details/7778919pipeline源码分析: http://blog.csdn.net/ouyang11122

2017-06-18 10:49:45 3882

原创 说Redis

一:简单介绍Redis(Remote Dictionary Server 远程字典服务器)key-value内存数据库key是一个stringvalue可以是string,list,hash,set,zset,bitmaps等等几乎所有的互联网公司都会使用,新浪微博是全球最大的Redis使用者二:特性C语言实现,单线程Epoll模型,无锁的争用,速度快客户端语言众多,非常容易上手使

2017-06-17 21:56:35 1825 2

原创 计算机网络漫谈之应用层

有关网络我们讨论到今天,整个网络框架我们已经搭建起来了。我们说了数据链路层、网络层、传输层,其实应用层就是在我们之前讨论的基础上使用下面这些层,我打算举例HTTP协议,也是应用层非常重要的协议,”应用层”的作用,就是规定应用程序的数据格式。比如HTTP协议的数据包基本如下所示:HTTP协议的职责就是把数据组织成这个样子,然后把自己填入TCP数据包的”数据”部分。因此,现在的以太网的数据包就变成下面这

2017-05-23 00:16:34 719

原创 计算机网络漫谈之UDP和TCP

计算机网络漫谈之传输层 咱们讨论了如果需要确定一个计算机上的不同网络程序(比如QQ和浏览器),需要端口的标识,但是IP头部和帧的头部都没有端口的标识字段,需要新的协议。和前面IP协议的实现套路一样,我们需要一个空间来存放端口号,因此就有了传输层的协议TCP和UDP。最简单的实现就是UDP协议,它的格式几乎就是在数据前面,加上端口号。UDP数据包,也是由”标头”和”数据”两部分组成。“标头”部分主要

2017-05-23 00:08:56 1533

原创 计算机网络漫谈之传输层

之前我们通过学习 数据链路层 和 网络层 知道了一个计算机有两个地址:MAC地址和IP地址,有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信。 现在面临的问题是,同一台主机上有许多程序都需要用到网络。比如,你一边浏览网页,一边与我QQ聊天。当一个数据包从互联网上发到你电脑的时候,它怎么知道,这是表示网页的内容,还是表示聊天的内容? 也就是说,我们还需要一个参数,表示这个数据

2017-05-22 23:55:42 643

原创 计算机网络漫谈之IP数据包

网络层从 网络层 、IP与子网掩码 前前后后我们也说了两次了,IP 这个东西絮絮叨叨的也一直在提。今天我们来解开IP协议的面纱,还记得我们之前在数据链路层说的物理帧的结构吗?就是这样:其中Head叫标头,包含源和目的MAC地址,那时我们还没有IP的概念,但是我们用广播的方式也已经能实现全世界范围的通信,但之后我们否定了这种方式,因为会造成网络拥堵,浪费资源。因此就有了子网络,自此,MAC地址和

2017-05-18 13:21:56 1794 1

原创 计算机网络漫谈之IP与子网掩码

通过之前的介绍,我们现在已有的概念是任何一台计算机如果需要接入互联网,都会分配到一个IP地址。这个地址分成两个部分,前一部分代表网络,后一部分代表主机。比如,IP地址172.16.254.1,这是一个32位的地址,假定它的网络部分是前24位(172.16.254),那么主机部分就是后8位(最后的那个1)。因此,处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的,也就是说172.16.254.

2017-05-18 13:04:25 981

ncurses_programs代码示例

ncurses是最早的SystemVRelease4.0(SVr4)中CURSES的一个克隆。这是一个可自由配置的库,完全兼容旧版本的curses。简而言之,它是一个管理应用程序在字符终端显示的函数库。当后面提到curses的时候,同时也可以和NCURSES互换。

2017-12-28

axel多线程下载神器

axel多线程下载神器

2017-01-07

mysql-connector-c++-1.1.7-linux-glibc2.5-x86-64bit.rpm

mysql-connector-c++-1.1.7-linux-glibc2.5-x86-64bit.rpm 安装只需: rpm -ivh mysql-connector-c++-1.1.7-linux-glibc2.5-x86-64bit.rpm 即可

2017-01-07

ntfs-3g源码

ntfs-3g源码

2017-01-07

cJSON规范代码加注释

cJSON源码经过格式化之后的资源,易于阅读。

2017-01-02

dosbox-0.74 无bug修复版(内含.EXE文件)

这是修复bug的dosbox-0.74,RedHat系列用户需要安装的可以直接安装,并且内含DEBUG.EXE,LINK.EXE,MASM.EXE。

2016-10-25

Json jar包

详细的java Json jar包。可以在自己的java项目中尽情的使用了。

2016-06-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除