知识积累
文章平均质量分 61
YZF_Kevin
若有恒,何必三更眠五更起;最无益,莫过一日曝十日寒
展开
-
ubuntu解决“E: Unable to locate package lrzsz“
ubuntu解决Unable to locate package原创 2024-02-19 15:51:28 · 604 阅读 · 0 评论 -
volatile关键字总结
c++的volatile关键字原创 2023-10-06 23:56:13 · 2984 阅读 · 0 评论 -
c++中i++和++i的区别
i++和++i的区别原创 2023-08-26 10:49:20 · 1887 阅读 · 0 评论 -
malloc 的实现原理
malloc原理详解转载 2023-08-18 15:29:33 · 958 阅读 · 0 评论 -
硬中断、软中断详解
硬中断、软中断详解原创 2023-07-19 14:07:56 · 1784 阅读 · 0 评论 -
win10下解决git报错 Permission denied(publickey)
win10环境下出现 Permission denied (publickey)的接近办法原创 2023-07-18 15:22:21 · 8897 阅读 · 0 评论 -
c++虚函数表、地址详解
c++虚函数表详解转载 2023-07-14 11:19:25 · 1335 阅读 · 1 评论 -
/lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
bash: /opt/go/bin/go: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录原创 2023-03-24 16:05:38 · 2193 阅读 · 0 评论 -
从Linux零拷贝深入了解Linux-I/O
虽然这个技术的设计方案非常精彩,但是它的门槛和限制却不比前面介绍的其他技术少:首先会对操作系统 API 造成变动,需要使用新的一些 API 调用,其次还需要设备驱动程序配合改动,还有由于是内存共享,内核需要很小心谨慎地实现对这部分共享的内存进行数据保护和同步的机制,而这种并发的同步机制是非常容易出 bug 的从而又增加了内核的代码复杂度,等等。从前面的介绍可以看出,传统的 Linux I/O接口,都是基于复制/拷贝的:数据需要在操作系统内核空间和用户空间的缓冲区之间进行拷贝。转载 2023-01-09 15:36:36 · 389 阅读 · 0 评论 -
Linux 里的文件描述符 0,1,2, 2>&1 究竟是什么
通过上面的分析,对于command>a 2>&1这条命令,等价于command 1>a 2>&1可以理解为执行 command 产生的标准输入重定向到文件 a 中,标准错误也重定向到文件 a 中。我们可以理解为,左边是标准输出,好,现在标准输出直接输入到/dev/null中,而2>&1是将标准错误重定向到标准输出,所以当程序产生错误的时候,相当于错误流向左边,而左边依旧是输入到/dev/null中。2>1的作用是把标准错误的输出重定向到1,但这个1不是标准输出,而是一个文件!转载 2023-01-07 10:04:16 · 525 阅读 · 0 评论 -
linux 文件描述符 0 1 2
在Shell脚本中经常看到数字0,1,2,到底是什么意思,这篇文章简单归纳总结。原创 2023-01-06 20:49:22 · 3196 阅读 · 3 评论 -
-bash: lsof: command not found解决办法
centos系统,检测端口时使用lsof命令发现lsof功能未开启,如下图。可以看到lsof已经可以正常使用了,nginx正在监听80端口。centos系统下可以直接使用yum安装lsof功能,如下图。yum可自动完成安装lsof。以80端口为例,测试如下图。原创 2022-12-27 18:48:04 · 3654 阅读 · 0 评论 -
标准输入,标准输出,错误输出的总结
事实上,上述命令实际是 cat a.log 1> copya.log的缩写,表示把命令cat a.log的标志输出重定向到copya.log。我们打开err.log会发现内容和上面一样,表示把命令的cat: notexist.log的标志错误输入到err.log里面了。比如我们将1指向文件,那么标准的输出就会输出到文件中。此时我们可以看到copya.log里的文本内容为:this is a.log。也就是我们平时的 > 重定向符号 相当于 1>,举例:2>&1,表示2的输出重定向等同于1。转载 2022-11-23 21:27:13 · 1271 阅读 · 0 评论 -
ssh配置免密登陆和别名登陆
这里说的指的是:在服务器serverA 上免密码登录到服务器serverB上,用户和密码都是serverB上的,只是在serverA上登陆serverB时,不需要输入密码使用命令 ssh_keygen 在用户的根目录下的.ssh目录中生成自己的公钥和私钥,执行命令 ssh_keygen时会出现几个询问,不用理会一路回车即可,如下图所示,上述命令运行结束以后,在$HOME/.ssh/目录下会新生成两个文件:id_rsa.pub和id_rsa。前者是你的公钥文,后者是你的私钥。原创 2022-11-09 21:43:14 · 890 阅读 · 0 评论 -
undefined: resolver.BuildOption undefined: resolver.ResolveNowOption 报错的解决办法
今天编译go老服务器程序时发现报错问题表现大致是undefined: resolver.BuildOption undefined: resolver.ResolveNowOption之类,如下图网上搜索了一番后发现是因为最新的grpc1.27和clientV3版本不兼容的问题解决办法把grpc版本降低到1.26或以下便可,简单办法即修改go.mod文件,如下图...原创 2020-02-20 19:24:25 · 5818 阅读 · 0 评论 -
一分钟了解nohup和&的作用和区别
nohup&首先编写名称为test.c的程序,代码的内容很简单,每输出一行就休眠1秒,一直持续我们使用gcc编译成可执行程序文件能看到编译结果如如下图所示1. 使用运行程序下面运行./test前台运行程序,会是什么效果呢?我们可以看到,程序确实如期望的那样每隔一秒会在终端输出一行。如果我们此时按下Ctrl + C组合键 ,理论上程序会收到一个SIGINT。转载 2022-11-07 15:54:29 · 416 阅读 · 0 评论 -
java和go的des加密
这个星期工作上需要用http做数据上报,后台是用java实现,而我这边游戏开发使用go语言开发更顺手,所以这次http上报流程就是。代码如下,都是3des加密。原创 2022-10-23 18:44:10 · 536 阅读 · 0 评论 -
ubuntu16.04修改PDT时间为当期时区
PDT时间修改原创 2022-10-09 14:57:21 · 335 阅读 · 0 评论 -
什么是幂等性?四种接口幂等性方案详解
再比如现在是微服务时代了,服务化接口在外部调用者会存在多次调用的情况(考虑网络中断重试等),为了防止外部多次调用对系统数据状态的发生多次改变,讲服务接口设计成幂等,就是未为了防止多次重试,造成系统不一致的问题。幂等性在我们的工作中无处不在,无论是支付场景还是下订单等核心场景都会涉及,也是分布式系统最常遇见的问题,除此之外,也是大厂面试的重灾区。在访问电商网站时,提交订单采用的是Post请求,如果直接刷新浏览器就容易导致重复订单的提交,这个不是用户希望发生的行为。......转载 2022-07-15 16:38:55 · 5699 阅读 · 0 评论 -
c++ shared_ptr的reset(), get()
总结1. reset(),参数为空时,会释放shared_ptr所拥有的对象,释放后执行get()会返回false2. reset(xx),参数不为空时会先释放原来拥有的对象,再获取新对象的所有权3. get() 判断当前是否拥有对象实验如下图 代码如下......原创 2022-06-23 14:12:32 · 5017 阅读 · 0 评论 -
布隆过滤器和布谷鸟过滤器的原理
大家都知道,在计算机中,IO一直是一个瓶颈,很多框架以及技术甚至硬件都是为了降低IO操作而生,今天聊一聊过滤器,先说一个场景:我们业务后端涉及数据库,当请求消息查询某些信息时,可能先检查缓存中是否有相关信息,有的话返回,如果没有的话可能就要去数据库里面查询,这时候有一个问题,如果很多请求是在请求数据库根本不存在的数据,那么数据库就要频繁响应这种不必要的IO查询,如果再多一些,数据库大多数IO都在响应这种毫无意义的请求操作,那么如何将这些请求阻挡在外呢?过滤器由此诞生:布隆过滤器(Bloom Filter)大转载 2022-06-13 22:07:30 · 324 阅读 · 0 评论 -
scp限速
scp命令总结,scp限速原创 2022-06-07 12:03:41 · 3645 阅读 · 0 评论 -
STL的vector可以比较是否相等
结论1. STL的vector可以逐个元素进行值比较,用法如 if (v1 == v2)2. 比较结果为true需要两个vector的元素个数相同,且每个元素都相同3. vector的元素支持指针比较实验结果如下图(因为虽然v1和v2元素个数相同,但值不同,所以v1 != v2)代码如下#include<iostream>#include<vector>using namespace std;void main(){ int a = 54;原创 2022-05-17 18:57:14 · 2316 阅读 · 0 评论 -
c++无锁链表的实现
简言1.无锁能够实现的核心原理即CAS2. c++语言中CAS一般有三种操作,即gcc的CAS实现,windows的CAS实现,c++11的CAS实现3. 这篇博客主要讲c++11的CAS实现4. 具体原理分析可参考:https://blog.csdn.net/yzf279533105/article/details/119798571实验过程1. 预先加入10000个节点,加上一个空节点,一共10001个节点2. 500个多线程增加10万节点,同时500个线程删除10万节点原创 2021-08-19 15:09:05 · 2323 阅读 · 0 评论 -
无锁链表的c++实现
简言1.无锁能够实现的核心原理即CAS2. c++语言中CAS一般有三种操作,即gcc的CAS实现,windows的CAS实现,c++11的CAS实现3. 这篇博客主要讲c++11的CAS实现概要1. gcc的CAS实现函数如下bool __sync_bool_compare_and_swap (type *ptr, type oldval type newval, ...)type __sync_val_compare_and_swap (type *ptr, type old原创 2021-08-19 14:57:11 · 927 阅读 · 0 评论 -
gcc历史版本下载
gcc所有版本下载地址http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/原创 2021-08-16 14:20:45 · 1412 阅读 · 0 评论 -
找到比某个数大的最小的2的次幂
如何判断是一个数是否是2的次幂请参看笔者的这篇博客https://blog.csdn.net/yzf279533105/article/details/119455579原理如果一个数是2的幂,那么其二进制格式一定为0001000这种模型即从有效位开始算,最高位只有一个1,左侧全部为0所以,我们从最高位往右侧,逐个位判断,符合这种格式的就是最小的2的幂代码如下uint32_t UnlockQueue::roundup_power_of_2(uint32_t val){ .原创 2021-08-06 15:41:41 · 1048 阅读 · 3 评论 -
判断一个数是否是2的幂
原理如果一个数是2的幂,那么一定是00100这种格式2的二进制为 0000 00104的二进制为 0000 01008的二进制为 0000 100016的二进制为0001 0000所以n和n-1做&预算,一定为0代码如下bool is_power_of_2(uint32_t n){ if (n == 0) { return false; } return (n&(n-1)) == 0;}...原创 2021-08-06 15:14:25 · 701 阅读 · 0 评论 -
linux最大文件句柄数量总结
写这个文章是为了以正视听,网上的文章人云亦云到简直令人发指。到底最大文件数被什么限制了?too many open files错误到底可以通过什么参数控制?网上的很多文章说的大致步骤是没有错的,大致如下:shell级限制通过ulimit -n修改,如执行命令ulimit -n 1000,则表示将当前shell的当前用户所有进程能打开的最大文件数量设置为1000.用户级限制ulimit -n是设置当前shell的当前用户所有进程能打开的最大文件数量,但是一个用户可能会同时通过多个shell连接到...转载 2021-07-12 17:56:54 · 2034 阅读 · 1 评论 -
Leaf——美团点评分布式ID生成系统
总结(这里总结几种普遍做法)1. UUID的方式,其实也属于类snowflake算法2. 单台数据库自增,每次自增1,缺点:性能严重受制于单台数据库的性能3. 多个数据库分段自增,比如一共三台数据库,A数据库:1,4,7,10;B数据库:2,5,8,11;C数据库3,6,9,12,优点:不再受限于单台数据库的性能,缺点:增加数据库时操作很繁琐4. snowflake算法5. redis自增背景在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付转载 2021-07-12 15:34:14 · 356 阅读 · 0 评论 -
ubuntu挂载windows下的文件目录的步骤
简言1. 环境:ubuntu16.04 server版,win72. 目的:ubuntu下面直接访问win7的共享目录步骤1. win7下面把文件夹开启共享,我们以 E:ubuntu_work为例 流程:在目录"ubuntu_work"上面右键,点击属性,切到共享分页,点击共享按钮,选择用户名2. 切换到桌面,右键“计算机”,点击管理,依次打开“系统工具”,“共享文件夹”,“共享”,可以看到我们已经共享的目录里面已经有了E:\ubuntu_work3. ...原创 2021-01-13 19:49:15 · 2589 阅读 · 0 评论 -
记ubuntu16.04的一个网络问题
简言1. ubuntu16.04的虚拟机,上午用着一切正常,下午先是发现git不能pull了,以为是dns问题,加了域名映射也不行,最后发现ping百度也不通了,原来整个网络模块都报废了2. 各种network service启动,重启都不行,还是报错,上网搜,看到比人说vmware安装ubuntud的网络配置不对,看我的也是NAT模式(用于共享主机的IP地址),没啥问题啊3. 最后看到别人说是windows对虚拟机的服务未启动,查了下还真是,一个(VMware Workstation Serv原创 2020-12-07 20:35:35 · 154 阅读 · 0 评论 -
df -h 显示100%的解决办法
简言1. df -h命令可以查看根目录的使用情况2. du -sh ./* 命令可以查看当前目录所有文件/文件夹的大小df -h 显示100%原创 2020-09-09 18:07:44 · 10188 阅读 · 0 评论 -
ubuntu 允许root用户登陆ssh
简言1.新安装的Ubuntu 16系统中是不允许root用户通过ssh登录的2. 只能先登陆其他账号,在切换到root账号,略麻烦3. 我们可以通过简单修改即可实现root的ssh登陆修改方法1. 修改ssh的配置文件,即命令 vim/etc/ssh/sshd_config 修改后如下图,即PermitRootLogin 字段改为yes,保存后退出 ...原创 2020-02-13 19:56:55 · 335 阅读 · 0 评论 -
Vmware Ubuntu 自适应屏幕 进入全屏模式
命令修改:sudo vim /etc/systemd/system/multi-user.target.wants/open-vm-tools.service在"Unit" 段中,增加如下配置Requires=graphical.targetAfter=graphical.target保存重启后就可以了记得点击这个按钮进入全屏模式点击后效果如下图(再点击那个按...原创 2020-02-13 00:08:31 · 1053 阅读 · 1 评论 -
centos虚拟机ping不通 报错 name or service not known
http://mirrors.ustc.edu.cn/centos/7.2.1511/os/x86_64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: mirrors.ustc.edu.cn; Unknown error"Trying other mirror.网卡配置问题,进入 cd /etc/...转载 2019-11-27 08:30:59 · 1198 阅读 · 1 评论 -
c++实现,对象池 object_pool
简言1. boost的对象池object_pool在释放时采用的遍历,有性能问题2. 也不是什么大问题,优化后可用。但是仅仅为了一个对象池,引入boost,没必要3. 笔者这里一份简单实现的对象池,windows和linux下通用4. 代码量很小,仅仅两百行,支持对象池高峰过后,逐步回收接口介绍1.// 初始化(初始数量,一次增长的数量, 单次收缩的数量)boo...原创 2019-11-21 10:04:10 · 939 阅读 · 0 评论 -
c++实现的唯一ID生成器
设计背景用作游戏服务器给每个角色生成UID,给物品生成唯一ID,有多个服务器类型,例如:游戏服,中心服,网关服等等;每个类型的服务器有多个,比如10个游戏服,20个网关服等设计思想1. 思路参考雪花算法,即多个字段拼接成一个64位的数字2. 最高位不用,4位服务器类型,7位服务器ID,32位时间戳,20位自增ID3. 服务器类型占4位,所以有2的4次方,即16种不同的服务器类...原创 2019-11-02 17:21:52 · 8839 阅读 · 0 评论 -
map unordered_map hash_map的查找性能测试
结论如下:Release模式下:1. 容量为10的时候,查找效率:map > unordered_map > hash_map2. 容量为100的时候,查找效率:map = unordered_map > hash_map3. 容量为1000的时候,查找效率:unordered_map > hash_map > 4倍map4. 容量为1万的时候,查...原创 2019-10-30 00:56:41 · 2487 阅读 · 0 评论 -
c++日志文件中文显示乱码的问题及解决办法
近段时间在做战斗系统,昨天观察日志时发现中文显示乱码,而且奇怪的是有些中文日志是正常的,有些中文日志乱码就是下面这种表现Debug - Thu Oct 24 20:42:35 2019 : systems/ability/AbilityPlugin.cpp_104:AbilityPlugin::SetAbility(),战斗房间=1012,playerID=1012,roleID=1,a...原创 2019-10-25 10:27:02 · 2204 阅读 · 0 评论