首页
学习
活动
专区
工具
TVP
发布

巡天遥看一千河

专栏成员
55
文章
58367
阅读量
16
订阅数
redis数据冗余与分片
Redis 提供了主从库模式,以保证数据副本的一致,主从库之间采用的是读写分离的方式。
changan
2021-04-22
1.3K0
redis消息队列
对于 单队列,单进程的queue, 是满足先入先出的特点的,本身是有序的,但是如果有多个队列或多个消费者线程的时候,可能会产生乱序的问题。
changan
2021-04-22
8000
redis基础
如果哈希表里写入的数据越来越多,哈希冲突可能也会越来越多,这就会导致某些哈希冲突链过长,进而导致这个链上的元素查找耗时长,效率降低。Redis 默认使用了两个全局哈希表:哈希表 1 和哈希表 2。一开始,当你刚插入数据时,默认使用哈希表 1,此时的哈希表 2 并没有被分配空间。随着数据逐步增多,Redis 开始执行 rehash,
changan
2021-04-19
3710
redis持久化
简单来说,AOF 重写机制就是在重写时,Redis 根据数据库的现状创建一个新的 AOF 文件,也就是说,读取数据库中的所有键值对,然后对每一个键值对用一条命令记录它的写入。
changan
2021-04-19
6790
C++11 lambda
C ++ 11引入了lambda,该lambda提供了一种语法上轻量级的方式来动态定义函数。它们还可以通过值或引用来捕获(或封闭)周围范围的变量。在本文中,我们将研究lambda与纯函数和函子类(实现的类)在实现方面的区别operator()。
changan
2021-03-25
1.1K0
C++ 11 Atomic
SSE2 extensions introduce two new fence instructions (LFENCE and MFENCE) as companions to the SFENCE instruction introduced with SSE extensions. The LFENCE instruction establishes a memory fence for loads. It guarantees ordering between two loads and prevents speculative loads from passing the load fence (that is, no speculative loads are allowed until all loads specified before the load fence have been carried out). The MFENCE instruction establishes a memory fence for both loads and stores. The processor ensures that no load or store after MFENCE will become globally visible until all loads and stores before MFENCE are globally visible.1 Note that the sequences LFENCE;SFENCE and SFENCE;LFENCE are not equivalent to MFENCE because neither ensures that older stores are globally observed prior to younger loads.
changan
2021-03-24
1.2K1
ddia-事务
事务是一个抽象层,允许应用程序假装某些并发问题和某些类型的硬件和软件故障不存在。各式各样的错误被简化为一种简单情况:事务中止(transaction abort),而应用需要的仅仅是重试。
changan
2021-03-23
6110
理解右值引用
std::move本身只做类型转换,对性能无影响。 我们可以在自己的类中实现移动语义,避免深拷贝,充分利用右值引用和std::move的语言特性。
changan
2021-03-11
7690
一个Linux 动态库常见bug
对于正在运行的程序,当更新动态库尝试重新加载时,可能会导致程序 CoreDump 。
changan
2021-01-18
1.7K0
c++虚函数表
首先,相较于C语言,C++语言并没有额外增加内存消耗(确切说,在没有虚函数情况下)。 对于一个C++类对象,每个对象有独立的数据成员(非static),但是内存中成员函数只有一份,该类的所有对象共享成员函数。
changan
2020-12-23
6450
右值引用和构造
std::move在运行期不做任何事情(不生成任何机器码),在编译期只做一件事情,就是把入参cast成对应类型的rvalue,从而影响其他函数调用的重载决议。你可以理解成std::move其实应该叫做比如说cast_to_rvalue,但是标准委员会认为这个破名字太长不好记。搞清楚这点你就理解了std::move了。
changan
2020-12-21
3970
std::shared_ptr
多个shared_ptr管理同一个指针,仅当最后一个shared_ptr析构时,指针才被delete。这是怎么实现的呢?答案是:引用计数(reference counting)。引用计数指的是,所有管理同一个裸指针(raw pointer)的shared_ptr,都共享一个引用计数器,每当一个shared_ptr被赋值(或拷贝构造)给其它shared_ptr时,这个共享的引用计数器就加1,当一个shared_ptr析构或者被用于管理其它裸指针时,这个引用计数器就减1,如果此时发现引用计数器为0,那么说明它是管理这个指针的最后一个shared_ptr了,于是我们释放指针指向的资源。
changan
2020-12-18
8960
从hook的并发症理解x64指令格式
可以理解成一个有意思的问题,假如地址 addr1 上有一个函数func1,长度为len, 将这个函数 整体换一个位置,挪到 addr2, 移动之后的函数成为func2
changan
2020-11-26
1.5K0
perf火焰图 wiki
火焰图 wiki 火焰图的每个框代表一个栈里的一个函数,燃烧在火苗尖部的就是CPU正在执行的函数 纵轴代表调用栈的深度(栈桢数),火焰顶端显示正在运行的函数,这之下都是调用者。在下面的函数是上面函数的
changan
2020-11-19
2.4K0
网络游戏同步模型
何为网络同步,通俗点讲,就是在一个网络游戏里有玩家A和B同框,当A释放了一个技能,状态发生了变化,B又是如何及时表现A的当前状态的呢,就是通过网络同步技术。 不同的同步模型,目的都是为了保持每个客户端的状态一致,而一般客户端的初始状态是相同的,不同的同步模型采用不同的方式,其实就是在玩家有操作输入时,让所有玩家的客户端的状态仍能够保持一致。 假设客户端的某一对象的状态初始为S0,而玩家的输入为It,玩家输入后根据逻辑F产生了一个状态的变化SΔ,那么在某一时刻n的状态Sn,理论上是Sn=Sn1+SΔ,考虑到初始状态的话
changan
2020-11-19
3.1K0
TCP的几个问题
TIME_WAIT状态也称为2MSL等待状态。每个具体TCP实现必须选择一个报文段最大生存时间MSL(Maximum Segment Lifetime)。它是任何报文段被丢弃前在网络内的最长时间。我们知道这个时间是有限的,因为TCP报文段以IP数据报在网络内传输,而IP数据报则有限制其生存时间的TTL字段。
changan
2020-11-04
5120
Understanding TCPIP Network Stack
网卡需要有驱动才能工作,驱动是加载到内核中的模块,负责衔接网卡和内核的网络模块,驱动在加载的时候将自己注册进网络模块,当相应的网卡收到数据包时,网络模块会调用相应的驱动程序处理数据。
changan
2020-11-04
6160
tcp socket api
TCP三次握手后有个accept队列,进到这个队列才能从Listen变成accept,默认backlog 值是50。
changan
2020-11-04
5170
一种定时器的实现
注册一个时间间隔为 Interval 后执行 ExpiryAction 的定时器实例,其中,返回 TimerId 以区分在定时器系统中的其他定时器实例。
changan
2020-11-04
5050
protobuf 序列化到文件及反序列化
游戏中,将对局的数据保留下来,用于对局回顾及debug等用途,由于协议采用PB,故以二进制的pb格式写入文件,在使用该对局内容的时候,按照格式反序列化出来用于播放对局、压测数据构造等。
changan
2020-11-04
1.8K0
点击加载更多
社区活动
AI代码助手快速上手训练营
鹅厂大牛带你玩转AI智能结对编程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档