蓝虎 - tanjp.com
码龄15年
关注
提问 私信
  • 博客:22,904
    22,904
    总访问量
  • 19
    原创
  • 317,736
    排名
  • 7
    粉丝
  • 0
    铁粉

个人简介:Seeking a way to achieve my childhood dream! Concentration? Innovation? Solidarity? Goodness? Design Simple, Graceful, High Efficiency and Excellence Code. http://www.tanjp.com

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2009-10-27
博客简介:

谈极品技术 - tanjp.com

博客描述:
这是一个极品时代,让我们一起谈谈极品信息技术的方方面面!
查看详细资料
个人成就
  • 获得5次点赞
  • 内容获得1次评论
  • 获得18次收藏
创作历程
  • 1篇
    2020年
  • 15篇
    2019年
  • 3篇
    2017年
成就勋章
TA的专栏
  • 极品底层(C++)
    15篇
  • 极品架构
    12篇
  • 数据结构和算法
    4篇
  • 设计模式
    3篇
兴趣领域 设置
  • 大数据
    mysqlredis
  • 后端
    架构
  • 搜索
    elasticsearch
  • 服务器
    linux
创作活动更多

超级创作者激励计划

万元现金补贴,高额收益分成,专属VIP内容创作者流量扶持,等你加入!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

谈极品技术 tanjp.com 文章汇总

谈极品技术 tanjp.com这是一个极品的时代,让我们一起谈谈极品时代下的各种信息技术!探索各种服务端技术,如 游戏服务端,分布式架构,微服务,大数据采集分析,运维管理和监控,高并发高可用,数据一致性,等等……游戏服务端架构2020-04-24_分区分服与大规模跨服功能2020-04-26_百万用户在线的游戏架构承载能力分析编程内外功修炼C++11内存序me...
原创
发布博客 2020.04.27 ·
222 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

定时器实现过程遇到的问题

原文转自:http://www.tanjp.com/archives/203(即时修正和更新)定时器实现过程遇到的问题在服务端的程序里,时间是一个很常用,几乎无处不在的变量。如果不正确使用时间,将会导致灾难性的数据错误。所以,正确使用时间非常重要!怎样才算是正确使用时间?首先,我们得知道在程序世界里面,时间有哪些值?1、协调世界时,又称世界统一时间,世界标准时间,国际协...
原创
发布博客 2019.05.28 ·
963 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

时间轮(Timing Wheel)算法-高性能定时器策略笔记

原文转自:http://www.tanjp.com/archives/199(即时修正和更新)什么时候需要定时器?我们都知道程序是能快速运算出结果,几乎在一瞬间就可以把结果算出来。但是这个前提是所有输入条件都拿到手的情况下,如果有些输入条件 A 你并不知道什么时候能符合,那怎么办?写一个whlie循环一直检查?这样无疑很浪费CPU,显然行不通。有经验程序员可以已经想到办法,把这...
原创
发布博客 2019.05.17 ·
4108 阅读 ·
2 点赞 ·
0 评论 ·
17 收藏

Actor模式封装MongoDB C驱动-多连接并发与自动重试

原文转自:http://www.tanjp.com/archives/192(即时修正和更新)Actor模式封装异步的MongoDB C驱动MongoDB C驱动(MongoDB C Driver http://mongoc.org/),提供了同步的DB访问存储接口,在高并发的业务系统,同步操作会阻塞业务逻辑,是高并发的一大障碍。所以需要设计异步的接口来满足业务系统的需求。利用...
原创
发布博客 2019.05.17 ·
351 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Actor模式实现高并发的异步文件日志系统(Actor Log)

原文转自:http://www.tanjp.com/archives/176(即时修正和更新)文件日志异步读写我们都知道普通的读写文件打开文件都是同步的,比如C的fopen, fclose, fread等。并且磁盘的访问速度远远的低于内存,所以操作系统要阻塞等待磁盘设备准备好才进行读写。如果采用同步,那么上次业务逻辑将会阻塞挂起,等待磁盘把数据准备好,再通知操作系统上报到应用层。高...
原创
发布博客 2019.05.09 ·
512 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Actor模式之高性能并发框架的实现

原文转自:http://www.tanjp.com/archives/149(即时修正和更新)概念Actor模式是一种并发模型,其目标是充分利用计算机多核的优势,把一个大问题分拆成多个小问题并发处理,或者把多个平行的问题并发处理。一个Actor指的是一个最基本的计算单元。它能接收一个消息并且基于其执行计算。Actor一大重要特征在于Actor之间相互隔离,它们并不互相共享内存。也就是说,...
原创
发布博客 2019.05.08 ·
2148 阅读 ·
0 点赞 ·
1 评论 ·
3 收藏

双缓冲安全队列(DoubleCacheQueue)与自旋锁(SpinMutex)

原文转自:http://www.tanjp.com/archives/144(即时修正和更新)双缓冲安全队列(DoubleCacheQueue)双缓冲区,故名思义就是要有两个缓冲区(简称A和B)。这两缓冲区,总是一个用于生产者,另一个用于消费者。当缓冲区触发某个条件时,进行一次切换(先前被生产者写入的转为消费者取出,先前消费者取出的转为生产者写入)。而这个触发的条件,一般是以快速消...
原创
发布博客 2019.05.07 ·
1274 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

窃取式调度器(Stealing Scheduler)-高并发

原文转自:http://www.tanjp.com/archives/141(即时修正和更新)窃取式调度器(Stealing Scheduler)N个业务系统生产作业加入到 M+1个队列里面(优先加入到当前线程所在队列),队列中的作业被 M个线程按一定的规则消费。M个线程都对应一个线程局部存储的队列,和一个公共的队列。该规则按以下次序执行:1、优先处理本线程生产的作业。2、...
原创
发布博客 2019.05.07 ·
637 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

分配式调度器(Allocation Scheduler)-有锁与无锁实现

原文转自:http://www.tanjp.com/archives/139(即时修正和更新)分配式调度器(Allocation Scheduler)N个业务系统生产作业加入到 1个分配队列里面,由 1个分配线程负责将队列中作业分配给 M个工作队列,每个工作队列对应 1个工作线程来消费作业。对分配队列的抢占为:N*1,对工作队列的抢占为1*1,也就是说总体队列的抢占为 N*1+1*1*M...
原创
发布博客 2019.05.07 ·
331 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

抢占式调度器(Preemptive Scheduler)-有锁与无锁实现

原文转自:http://www.tanjp.com/archives/137(即时修正和更新)抢占式调度器(Preemptive Scheduler)N个业务系统生产作业加入到一个队列里面,队列中的作业被 M个线程抢先消费。也就是说,N的业务系统抢着把生产出来的作业插入到队列,同时 M个线程抢着消费该队列的作业,对队列的抢占非常激烈。可简单竞争抽象为: N*M。 ...
原创
发布博客 2019.05.07 ·
1411 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

高性能仿函数(FixedFunction)-替代std中的function

原文转自:http://www.tanjp.com/archives/135(即时修正和更新)固定大小仿函数(FixedFunction)仿函数是C++很多新特性的基础,如 lambda表达式。但是STL提供的std::function兼顾了太多情况,性能不高。于是做了优化,实现代码如下:template <typename SIGNATURE, size_t STOR...
原创
发布博客 2019.04.25 ·
647 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

全局唯一标识(UID)-多种实现方案

原文转自:http://www.tanjp.com/archives/132(即时修正和更新)目录64位全局唯一标识62进制字符串唯一ID32位唯一ID(一年(388天)内的每秒内有128个唯一值)32位唯一ID(一个月(48天)内的每秒内有1024个唯一值)32位唯一ID(一周(12天)内的每秒内有4096个唯一值)64位全局唯一标识snowflake是用64位...
原创
发布博客 2019.04.12 ·
2795 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

非严格优先队列-O(1) 时间复杂度

原文转自:http://www.tanjp.com/archives/124(即时修正和更新)分组安全队列 - 非严格优先队列 O(1) 时间复杂度传统的优先队列,都是采用二叉树(堆)的方式来实现,插入和删除都需要维护堆顶元素最大或最小,需要O(logN)的时间复杂度。在某些多线程环境下,把队列当作一个数据交换的纽带,这种开销也是非常大的,于是设计了非严格的优先队列,基满足业务需求...
原创
发布博客 2019.04.11 ·
1216 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

安全队列(SafeQueue)-多线程安全

原文转自:http://www.tanjp.com/archives/118(即时修正和更新)多线程安全的先进先出队列多线程安全的队列,可支持临界条件的阻塞与非阻塞两种模式切换。可通过条件变量来挂起等待加入/取出,条件满足时又能即时唤醒加入/取出。思路和想法都比较简单,就是一些应用的方法,就不多说了,直接看代码很好了解。template<typename tpTyp...
原创
发布博客 2019.04.09 ·
2528 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

单例模式(Singleton)-多线程安全

原文转自:http://www.tanjp.com/archives/115(即时修正和更新)多线程安全的单例模式单例模式,是一种常用的软件设计模式。通过单例模式可以保证系统中,应用该模式的一个类型只有一个实例。多线程环境下,建议使用 sptr() 获得共享智能指针使得对象的释放得以延伸到最后一个有效引用使用完。各个类型的单例对象的作用域为全局(类似全局变量),但同时可以...
原创
发布博客 2019.04.08 ·
230 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C++编码规范

原文转自: http://www.tanjp.com/archives/110(即时修正和更新)前言使代码易于管理的方法之一是加强代码一致性。让任何程序员都可以快速读懂你的代码这点非常重要。保持统一编程风格并遵守约定意味着可以很容易根据“模式匹配”规则来推断各种标识符的含义.。创建通用,必需的习惯用语和模式可以使代码更容易理解。在一些情况下可能有充分的理由改变某些编程风格,但我们还是应...
原创
发布博客 2019.04.08 ·
403 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Actor模式之高性能并发框架的构想

原文转自: http://www.tanjp.com/archives/106(即时修正和更新)Actor模式之高性能并发框架的构想最近接触到了Actor模型,以及了解云风的skynet框架,想重新实现一套高并发的框架。想想做游戏也七八年了,接触过一些不同的游戏框架。有的使用多线程并发,但是业务逻辑各种加锁,导致项目后期维护成本不敢想像的大。后来,主流的方向对采用单线程做主业...
原创
发布博客 2017.05.19 ·
1211 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

屏蔽词、模糊检索实现—字典树的应用

原文转载:http://www.tanjp.com/archives/90(即时修正和更新)屏蔽词、模糊检索实现—字典树的应用名词简述屏蔽词,就是预先给定一些词汇,在整个产品中都不能有这些词汇出现,譬如文字聊天,用户名,帮派名等等,反正所有涉及到文字输入的地方都需要过滤这些屏蔽词。在项目中,屏蔽词功能基本上是必须的,要不然上线都没法通过版署的审核。模糊检索,其实这是一大块专业领域...
原创
发布博客 2017.04.13 ·
1588 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

面向对象设计原则

原文转载:http://www.tanjp.com/archives/66(即时修正和更新)所谓“好的面向对象设计”是那些可以满足“应对变化,提高复用”的设计。对象是什么?>>从概念层面讲,对象是拥有某种责任的抽象。>>从规格层面讲,对象是一系列可以被其他对象使用的公共接口。>>从语言实现层面来看,对象封装了代码和数据。怎样才能设...
原创
发布博客 2017.03.28 ·
311 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Window API CHM

发布资源 2010.06.11 ·
application/octet-stream
加载更多