jfcat
码龄23年
求更新 关注
提问 私信
  • 博客:244,352
    社区:2,539
    问答:53
    246,944
    总访问量
  • 64
    原创
  • 20
    粉丝
  • 86
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
加入CSDN时间: 2002-09-15

个人简介:做有趣的事情,使自己更快乐!

博客简介:

jfcat的专栏

博客描述:
热爱开发的每一天
查看详细资料
个人成就
  • 获得34次点赞
  • 内容获得18次评论
  • 获得161次收藏
  • 博客总排名1,197,259名
创作历程
  • 45篇
    2021年
  • 2篇
    2014年
  • 15篇
    2013年
  • 43篇
    2012年
成就勋章
TA的专栏
  • Go
    10篇
  • JAVA
    5篇
  • C/C++
    13篇
  • 并发编程
    2篇
  • MySQL
    5篇
  • NoSQL&Redis
    11篇
  • 消息队列
    2篇
  • 算法与数据结构
    9篇
  • Netty
    2篇
  • Linux&Shell
    12篇
  • php及扩展
    24篇
  • python
    2篇
  • 网络协议
    2篇
  • 总结
    12篇
  • Vim
    9篇

TA关注的专栏 0

TA关注的收藏夹 0

TA关注的社区 6

TA参与的活动 0

兴趣领域 设置
  • 后端
    架构
创作活动更多

新星杯·14天创作挑战营·第13期

这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。我们诚挚邀请你们参加为期14天的创作挑战赛!注: 1、参赛者可以进入活动群进行交流、互相鼓励与支持(开卷),虚竹哥会分享创作心得和涨粉心得,答疑及活动群请见:https://bbs.csdn.net/topics/619781944 【进活动群,得奖概率会更大,因为有辅导】 2、文章质量分查询:https://www.csdn.net/qc

75人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

RingBuffer document

The RingBuffer is a data structure where the data is stored in a ring-like structure. You can think of it as a circular array with a certain capacity. In this circular array, the oldest item gets overwritten in case a new item is written when the maximum c
翻译
博文更新于 2021.08.29 ·
319 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

对伪共享(false sharing)的解读

在并发编程过程中,我们大部分的焦点都放在如何控制共享变量的访问控制上(代码层面),但是很少人会关注系统硬件及 JVM 底层相关的影响因素。前段时间学习了一个牛X的高性能异步处理框架 Disruptor,它被誉为“最快的消息框架”,其 LMAX 架构能够在一个线程里每秒处理 6百万 订单!在讲到 Disruptor 为什么这么快时,接触到了一个概念——伪共享( false sharing ),其中提到:缓存行上的写竞争是运行在 SMP 系统中并行线程实现可伸缩性最重要的限制因素。由于从代码中很难看出是否会出现
转载
博文更新于 2021.08.29 ·
1057 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

epoll使用详解:epoll_create、epoll_ctl、epoll_wait、close

epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __FD_SETSIZE 1024...
转载
博文更新于 2021.08.28 ·
2908 阅读 ·
5 点赞 ·
0 评论 ·
31 收藏

认识eventfd

什么是eventfdeventfd是Linux 2.6提供的一种系统调用,它可以用来实现事件通知。eventfd包含一个由内核维护的64位无符号整型计数器,创建eventfd时会返回一个文件描述符,进程可以通过对这个文件描述符进行read/write来读取/改变计数器的值,从而实现进程间通信。创建eventfdeventfd的创建是通过eventfd函数实现的,返回值即是该eventfd所对应的文件描述符,函数的原型如下所示: initval:创建...
转载
博文更新于 2021.08.28 ·
584 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

epoll_create和epoll_create1

名字 epoll_create epoll_create1 - 创建epoll文件描述符摘要 #include <sys/epoll.h> int epoll_create(int size); int epoll_create1(int flags);描述 epoll_create() 创建一个新的epoll实例。从Linux 2.6.8开始,size参数被忽略,但必须大...
转载
博文更新于 2021.08.28 ·
950 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

epoll中的各种参数

EPOLLIN The associated file is available for read(2) operations. 关联文件描述符的有效读操作EPOLLOUT The associated file is available for write(2) operations. 关联文件描述符的有效写操作EPOLLRDHUP (since Linux 2.6.17) Stream socket peer closed c...
原创
博文更新于 2021.08.28 ·
380 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

如何保障消息中间件成功投递?

前言我们小伙伴应该都听说够消息中间件 MQ,如:RabbitMQ,RocketMQ,Kafka 等。引入中间件的好处可以起到抗高并发,削峰,业务解耦的作用。如上图:1)订单服务投递消息给 MQ 中间件2)物流服务监听 MQ 中间件消息,从而进行消费我们这篇文章讨论一下,如何保障订单服务把消息成功投递给 MQ 中间件,以 RabbitMQ 举例。分析问题小伙伴们对此会有些疑问,订单服务发起消息服务,返回成功不就成功了吗?如下面的伪代码上面代码中,一般发送消息就是这么写的
转载
博文更新于 2021.08.28 ·
189 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(转)Redis的持久化

前言Redis作为一款内存数据库,被广泛使用于缓存,分布式锁等场景,那么假如断电或者因其他因素导致Reids服务宕机,在重启之后数据会丢失吗?Redis 持久化机制Redis虽然是定义为一个内存数据库,但是也支持数据的持久化,在Redis中提供了两种持久化机制:RDB持久化和AOF持久化。RDB 持久化机制RDB全称为:Redis DataBase,是Redis当中默认的持久化方案。当触发持久化条件时,Redis默认会生成一个dump.rdb文件,Redis...
转载
博文更新于 2021.08.28 ·
122 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(转)Redis的事物机制

前言事务是关系型数据库的特征之一,那么作为Nosql的代表Redis中有事务吗?如果有,那么Redis当中的事务又是否具备关系型数据库的ACID四大特性呢?Redis 有事务吗这个答案可能会令很多人感到意外,Redis当中是存在“事务”的。这里我把Redis的事务带了引号,原因在后面分析。Redis当中的单个命令都是原子操作,但是如果我们需要把多个命令组合操作又需要保证数据的一致性时,就可以考试使用Redis提供的事务(或者使用前面介绍的Lua脚本)。Re...
转载
博文更新于 2021.08.28 ·
127 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(转)处理Redis缓存特殊情况的方法

前言当Redis用作缓存时,其目的就是为了减少数据库访问频率,降低数据库压力,但是假如我们某些数据并不存在于Redis当中,那么请求还是会直接到达数据库,而一旦在同一时间大量缓存失效或者一个不存在缓存的请求被恶意攻击访问,这些都会导致数据库压力骤增,这又该如何防止呢?缓存雪崩缓存雪崩指的是Redis当中的大量缓存在同一时间全部失效,而假如恰巧这一段时间同时又有大量请求被发起,那么就会造成请求直接访问到数据库,可能会把数据库冲垮。缓存雪崩一般形容的是缓存中没有而数据库中有的数据,而...
转载
博文更新于 2021.08.28 ·
200 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(转)内存耗尽后 Redis 会发生什么?

前言作为一台服务器来说,内存并不是无限的,所以总会存在内存耗尽的情况,那么当Redis服务器的内存耗尽后,如果继续执行请求命令,Redis会如何处理呢?内存回收使用Redis服务时,很多情况下某些键值对只会在特定的时间内有效,为了防止这种类型的数据一直占有内存,我们可以给键值对设置有效期。Redis中可以通过4个独立的命令来给一个键设置过期时间:expire key ttl:将key值的过期时间设置为ttl秒。 pexpire key ttl:将key值的过期时间...
转载
博文更新于 2021.08.28 ·
162 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(转)C语言柔性数组讲解

先来看一个示例#include<stdio.h>typedef struct _SoftArray{ int len; int array[];}SoftArray;int main(){ int len = 10; printf("The struct's size is %d
",sizeof(SoftArray));}我们可以看出,_SoftArray结构体的大小是4,显然,在32位操作系统下一个int型变量大小刚好为4
转载
博文更新于 2021.08.25 ·
417 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

(转)一致性哈希算法原理

一致性Hash算法背景  一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。  但现在一致性hash算法在分布式系统中也得到了广泛应用,研究过memcached缓存数据库的人都知道,memcached服务器端本身不提供分布式cache的一致性,而是由客户端来提供,具体在计算一致性has
转载
博文更新于 2021.08.25 ·
121 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(转)C/C++常用头文件及函数汇总

C/C++头文件一览#include <assert.h>    //设定插入点#include <ctype.h>    //字符处理#include <errno.h>    //定义错误码#include <float.h>    //浮点数处理#include <iso646.h> //对应各种运算符的宏#include <limits.h>    //定义各种数据类型最值的常量#includ...
转载
博文更新于 2021.08.25 ·
2184 阅读 ·
2 点赞 ·
0 评论 ·
43 收藏

(转)golang 使用 iota

iota是什么我们来看golang源码的注释里面是怎么说的iota is a predeclared identifier representing the untyped integer ordinalnumber of the current const specification in a (usually parenthesized)const declaration. It is zero-indexed.大概就可以理解为,iota是一种预声明的标识符,表示了当前常量规范中未类型化的
转载
博文更新于 2021.08.22 ·
182 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

消息队列中处理重复消息

为什么消息队列中会出现消息重复现象业务层面的消息重复我这里有个场景,比如用户进行关注,在手机上点了一下,由于网络延迟或产品实现问题,没有马上变成已关注 or 取消关注,导致用户下意识的多点了几下。网络层面的消息重复这个不经常发送但是可能出现,比如生产端producer在发送消息的时候发生了网络抖动,过了一段时间后又重发了这条消息。但是服务器端真实的收到了两条消息并记录到队列中。对于消息队列来说,只有在性能和重复性处理上进行取舍,由于重复不是一个频发的场景,消息队列为了实现高性能是允许重复消息的
原创
博文更新于 2021.08.22 ·
1410 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

PHP变量类型底层设计实现

php变量类型设计实现基础知识每个类型的字节长度(x86-64体系)字节对齐联合PHP5的zval设计PHP5中_zval_struct(zval)结构使用zend内存池后zval结构的变化PHP7的Zval设计u1字段的含义u2中的字段信息PHP7的zval的内存占用情况基础知识每个类型的字节长度(x86-64体系)int 4字节char 1字节long 8字节pointer 8字节字节对齐struct test{ char a; int b; long c; void *d;
原创
博文更新于 2021.08.22 ·
248 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

使用GitHub access token

前一段时间有收到邮件说github安全认证等级要提升,但是我个人没有当回事,今天突然发现不能使用git 提交了,才看到如下内容:详细到网页看了下,需要申请personal access token创建token命令行使用 git clone https://github.com/username/repo.gitUsername: your_usernamePassword: your_token实际上就是记住上面创建的token,然后再这里使用pull push等git命令的
原创
博文更新于 2021.08.19 ·
3207 阅读 ·
3 点赞 ·
1 评论 ·
5 收藏

(转)超全整理!Linux性能分析工具汇总合集

出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章。本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列。本文档主要是结合Linux 大牛,Netflix 高级性能架构师 Brendan Gregg 更新 Linux 性能调优工具的博文,搜集Linux系统性能优化相关文章整理后的一篇综合性文章,主要是结合博文对涉及到的原理和性能测试
转载
博文更新于 2021.08.19 ·
636 阅读 ·
0 点赞 ·
0 评论 ·
6 收藏

SELECT *对比SELECT COLUMNS查询分析

参考:https://use-the-index-luke.com/blog/2013-08/its-not-about-the-star-stupidhttps://weblogs.asp.net/jongalloway/the-real-reason-select-queries-are-bad-index-coverage
原创
博文更新于 2021.08.17 ·
1125 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多