03 2019 档案
摘要:2019/4/2 补充一下 这里如果填充为0,则不会崩溃,填充为非0时,再次调用赋值就会崩溃 推测非0拷贝破坏了string内部的数据结构,不要对任何类使用memset https://blog.csdn.net/sardden/article/details/42736947
阅读全文
摘要:偶尔讨论到了socket发送数据时是否应该加锁的问题,就在网上查了一下,下面是大神陈硕的答案 对于 UDP,多线程读写同一个 socket 不用加锁,不过更好的做法是每个线程有自己的 socket,避免 contention,可以用 SO_REUSEPORT 来实现这一点。 对于 TCP,通常多线程
阅读全文
摘要:shared_ptr为智能指针,今天一次在使用shared_ptr时,错误的将其初始化方式写为shared_ptr<T> test = shared_ptr<T>(),随后导致崩溃 正确做法是shared_ptr<T> test = make_shared<T>() 或shared_ptr<T> t
阅读全文
摘要:项目中的传统架构在服务启动时 读取数据库的大部分数据到本地内存,在看到redis的作用时发出疑问,到底有什么样的区别以及怎么选择呢,下面是别人的回答 使用本地缓存快还是使用redis缓存好? Redis早已家喻户晓,其性能自不必多说。 但是总有些时候,我们想把性能再提升一点,想着redis是个远程服
阅读全文
摘要:最初知道跳表是看到redis源码里用了跳表做实时排序,跳表的模型如下 那么要实现一个玩家榜单实时排名,就是要对这个链表做实时维护,保证其有序性,如 1、服务器启动从DB中加载N个上榜的玩家 2、用跳表对其进行插入。插入完跳表是个有序的自然形成排行 3、当有玩家数据变动 1)如果排行榜已满,先判断Sc
阅读全文
摘要:今天练习shell时,发现用bash执行和 . 执行 $0的值是不一样的,转载一篇文章学习一下 1、source命令用法: source FileName 作用:在当前bash环境下读取并执行FileName中的命令。该filename文件可以无"执行权限" 注:该命令通常用命令“.”来替代。 如:
阅读全文
摘要:实际上,默认的情况下,如果一个网络应用程序的一个套接字 绑定了一个端口( 占用了 8000 ),这时候,别的套接字就无法使用这个端口( 8000 ), 验证例子如下: #include <stdio.h>#include <stdlib.h>#include <string.h>#include <
阅读全文
摘要:1 class ErrorCodeConfig{ 2 public: 3 ErrorCodeConfig(){} 4 ErrorCodeConfig(const ErrorCodeConfig&)=delete; 5 ErrorCodeConfig &operator=(const ErrorCodeConfig&) = delete; 6 ...
阅读全文
摘要:1.选择(select)模型:选择模型:通过一个fd_set集合管理套接字,在满足套接字需求后,通知套接字。让套接字进行工作。 选择模型的核心是FD_SET集合和select函数。通过该函数,我们可以们判断套接字上是否存在数据,或者能否向一个套接字写入数据。 用途:如果我们想接受多个SOCKET的数
阅读全文
摘要:今天看到一个文章,客户端的connect在服务端调用accept之前,突然想到这可以建立正常的连接么?以前从没细细的思考过listen accept connect之前的关系,带着疑问学习了一下,记录 先把结论亮出来 accept的功能并不是建立连接,而是从当前连接的等待队列中获取一条连接所以即使不
阅读全文
摘要:shell中各种括号的作用()、(())、[]、[[]]、{} 一、小括号,圆括号()1、单小括号 () ①命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。 ②命令替
阅读全文
摘要:1.equal_range equal_range是C++ STL中的一种二分查找的算法,试图在已排序的[first,last)中寻找value,它返回一对迭代器i和j,其中i是在不破坏次序的前提下,value可插入的第一个位置(亦即lower_bound),j则是在不破坏次序的前提下,value可
阅读全文