自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(113)
  • 收藏
  • 关注

原创 C++封装个协程库,基于云风的coroutine

写了一个简易的协程库,取名为fiber。我的fiber库原型是云风大佬的coroutine库github链接,知乎一位大佬对coroutine库的注释github链接。把大佬们的代码读一遍再抄一遍,体验是真的不一样了。下面就写下我对协程库的认识。以下操作需要在Linux系统下进行操作,因为用到Linux提供的ucontext.h头文件。在windows下就用不了了.4个函数和例子的介绍。然后把云风的栈也写下,自己改的也下。这是参考博客...

2021-05-04 00:34:26 869 4

原创 C++写一个http服务器/web服务器

目录开篇废话正文开篇废话其实这篇文章一直想写,苦于没有时间,想一气呵成写完,在离回家前一天晚上,在上海的小宾馆里面异常兴奋,写一下如何用C++搭建一个简易的http服务器。我相信大部分人都希望渴望一个自己的网站(哪怕在破在破也是自己做的),我当初是就是这么渴望的,记得那是2020年的8月,我查阅的各种资料终于学会了socket,于是迫不及待的写了一个聊天程序,一直在研究如何端口映射。那时候还很傻很天真,来了一个连接就开一根线程,离开就销毁这根线程,那会也知道线程创建和销毁的开销很大,但是一直没有想到其

2021-02-02 18:39:49 262750 18

原创 用python做一个翻译软件,基于简单爬虫和网络编程

声明:我爬取的是百度翻译,然后利用自己熟悉的领域(网络编程)简易封装了一个C/S模型包装成自己的翻译软件,这只是我个人的小玩具把他分享出来。但如果您拿了这份代码,若做了违法乱纪的事情,博主不承担任何责任。我假定您已经阅读了以上须知!目录前言初识百度翻译爬虫基于C/S的模型的爬虫服务器写这个python的demo遇见的问题1、字符串的比较2、不知道变量名的类型3、真的要控制好缩进前言好朋友要写一份python大作业,300行,做什么小demo都可以。还记的大一的时候刚学C和C++也没见过哈希表(pyth

2021-01-17 20:56:11 804 1

原创 C++服务器定时器基于LRU算法思想实现定时器遍历插入调整删除时间复杂度都是O(1)

#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <assert.h>#include <unistd.h>#include <errno.h>#include <string.h>#include <fcntl.h>#include &

2020-10-29 09:14:46 611 2

原创 K8S简单学习

通过deployment的方式进行创建。

2024-02-23 23:20:00 666

原创 todolist

目录学习K8S的基础知识重构代码书籍看一看evio库学习学习unity 教程学习一下学习K8S的基础知识重构代码书籍看一看evio库学习学习unity 教程学习一下

2024-02-22 21:25:34 241

原创 web前后端小坑记录

游戏服务器过年这段时间忙完了,好久没看web了,重温一下。发现竟然没有文章记录这些修BUG的过程,记录一下。

2024-02-06 17:09:20 257

原创 redis命令记录

【代码】redis命令记录。

2023-11-19 12:10:02 297

原创 C#使用proto

写多了go代码,被go mod tidy惯坏了,还以为全天下的都很好用呢,结果发现并不是这样。尤其是项目组的proto还是又封了个工具直接就能跑得,导致以为没那么复杂的事情变得复杂了起来。是有两套生成的规则,时间有点晚,没怎么仔细研究,先记录一下。先用nuget装protobuf-net、Google.Protobuf,这两个软件包。

2023-09-06 01:40:44 1014

原创 Rider 中C#单元测试

使用NUnit.Framework这个包,没有的话可以用nuget去搜索下载。简单的进行单元测试,想要单元测试好像还给需要static函数,慢慢学学C#

2023-09-05 23:30:01 807

原创 深入理解操作系统简单记录

一页就需要一个PTE数组的,有效位1表示在内存中,有效位为0且指向地址为null则说明页在硬盘中,否则在虚拟内存中。虚拟内存不也存放在硬盘吗?chatgpt了一下,大概意思是不同操作系统实现的虚拟内存存放位置可能会不一样。所以这点还是要小记一下。一个内存页是可以被多个虚拟内存指向的,我猜是多进程代码段共用了。

2023-06-27 00:01:45 103

原创 redis 源码记录

正好最近时间富裕,看一看redis源码,简单的记录一下。也有可能说的是不全面的,自行斟酌,只能通过debug来简单的梳理本次测试流程,而不是全量的覆盖的所有测试用例,时不时更新,争取一天学一点点。

2023-05-22 23:37:03 328

原创 blender学习

unity差不多了解之后,研究一下建模软件Blender,以后自己做独立游戏就不在局限于没有美术资源的尴尬中了。团队的最大的优势就是便宜,因为团队就我一个人哈哈哈哈,一人饿不死整个团队也饿不死。现在还需要学会一下建模,以及uv坐标和后续shader进行的一个纹理的渲染。

2023-04-23 22:16:38 1338

原创 unity的学习,准备搞一款mmo小游戏,服务器和客户端从零学

如代码所示,简单了解一下。

2023-04-14 23:34:49 1674

原创 mysql 思考

mysql知识总结

2023-02-23 17:50:28 92

原创 go-swagger使用——自动生成web api

大多数人说的是gogetswagger,在早期goget是可以直接生成二进制可执行文件的,我的go版本是1.18,大概是在go1.16出现了goinstall,goget只不过是获得了源码而没有编译生成相应的可执行文件,看别人swaginit的时候,我疯狂报不知道swag是啥,我第一反应是没添加到环境变量中,全局搜swag,发现没有这个可执行文件。还有一点注意的是,很多博客引入的是这个文件,他现在改名了并不是这样import的。附上一个简易版的能跑起来的代码,不含逻辑处理,...

2022-07-17 15:39:31 1183

原创 python文件路径函数

正好最近没什么事情,优化一下项目一个部署的脚本,重温下pythonos.path.dirname(file) # 当前文件所在的目录,等同于shell的,输出只有目录os.path.realpath(file) 会携带脚本名字

2022-06-22 23:17:52 220

原创 ctime 非线程安全

由一个不起眼的时间获取导致debug了一天代码,自己的个人网站后天配置一根线程完美运行,配置多线程就会报误用了地址,我第一个反应就是难道跨线程进行了操作?一直找自己one loop per thread的结构那里出错了,gdb也上了无法复现,除非是高并发的情况的才能复现出来,gdb最终发现了这个错误的堆栈,就是这个平平无奇的的getGMT,这函数一瞅都是栈上的数据还不是线程安全?博主你是不是不懂C++啊?我第一反应看到这里报错,我也很不理解,按照我自己的理解每根线程都有自己的栈,为啥他有问题呢?因为

2022-05-18 16:40:14 399

原创 JetBrains Gateway连接远程项目

真的,为啥写这篇博客,前一阵子赶工程就随便用中文搜了一搜,千篇一律的写在goland配置XXXX。我真是无语了。谷歌一下,goland remote project。不就得到答案了?简单介绍一下吧,可以JetBrains Gateway 2022.1这个来远程项目,像vscode远程项目一样的简单。介绍与下载地址JetBrains Gateway的使用这不简简单单轻轻松松的事情?不想看英文直接看我下面简单介绍,配置一下ssh,然后双击启动,就可以快乐的远程啦......

2022-04-21 22:27:13 1851 2

原创 设计模式学习

李建忠老师讲的,以前B站有,后来被删了,只能上youtube看了添加链接描述以前听过几堂课,代码写的少并没有真正的理解,自己网站前一阵子更新了一波代码突然发现代码之间组合竟然设计的紊乱,所以重新认真的学习一下。记住依赖倒置原则、针对接口编程而不是实现编程,依赖抽象而不是具体实现的细节,比如有一个类需要调用跑车,我们不要真的调用跑车这个类,而是要让代码调用汽车这个类,跑车这个类继承汽车类。这样的好处就是如果添加SUV这个类不需要在重新一遍相似的代码,这样提高复用性。封闭开放原则也是,划分成稳定和变化的因

2022-02-19 14:27:17 176

原创 websocket初体验——打造一个聊天室

最近正好学了学原生JS,暑假实习也是利用nodejs做的项目,自己网站最近也升级了,最近也打算写一个游戏服务端,但苦于没找到合适的客户端,会C++首选是UE4,但为什么没有选呢?其一我的笔记本电脑是轻薄本且我的想法并不是大制作,后在github看到一个H5的球球大作战,一个人的那种,所以萌生了用H5做个简易的游戏客户端,学一学websocket首先确保自己的电脑装了nodejs,websocket就是可以双向通信(客户端和服务端都可以接受数据和发送数据),而不是客户端发送请求,服务端响应,这个on函数可以

2021-12-28 16:07:30 2374

原创 C++生成随机字符串

最近给自己的网站搞一个相册,随机生成图片名字,生成100W个16位的名字,测试没重复,感觉还不错,生成的数字是均匀分布的cppreference#include <random>#include <iostream>#include <unistd.h>#include <unordered_set>using namespace std;char seed[64] = { '0','1','2','3','4','5','6','7','

2021-12-13 20:24:08 3238

原创 mysql加锁机制的理解

使用这个表来举例子吧,我们可以看到只有d这个字段没有索引。没有索引就会全表扫描,全表扫描的意思就是扫描全部主键CREATE TABLE `t` ( `id` int(11) NOT NULL, `c` int(11) DEFAULT NULL, `d` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `c` (`c`)) ENGINE=InnoDB;insert into t values(0,0,0),(5,5,5),(10,10

2021-12-08 16:41:07 620

原创 redis hset hget字典的实现

目录操作命令一些原理知识什么时候扩容?渐进哈希源码操作命令hset key不存在执行创建操作,存在执行更新操作hsetnx key不存在才执行命令hget 获取field上的value值HINCRBY 加上多少数据,当value可以被解释成数字的情况HINCRBYFLOAT增加浮点数hstrlen 统计filed的value的长度hexists key是否存在这个fieldhdel 删除field,想删除key的话还是给用del删除keyhlen 统计key中filed的个数hms

2021-12-06 15:16:39 1866

原创 redis字符串sds源码分析

被天美面试官怼了没有技术深度,确实看源码看的少,趁着毕业前看看redis的源码。操作命令Get、Set、mset、mget后面nx表示不存在key才创建,xx表示key存在才可以修改。mset nx 如果有一个key存在那么这条命令就不对了。strlen获得字符串,时间复杂度是O(1)getrange 获取范围字符串,支持正索引和负索引值setrange,在范围内赋值,如果位数不够0来补齐append 追加新的内容到字符串尾部incrby decrby incr decr incrbyf

2021-12-03 16:41:38 802

原创 深入理解计算机系统第二章

移位当k >= w的时候,移位是k mod w。k可以假设是int类型,32位,w是要移的位数。无符号数都是逻辑移位,有符号数没规定但是编译器都是按照算术移位的,算术移位是什么意思?就是第0位,也可以当成符号位那里,如果是1,那么移多少位后面就都补多少位1.int val = 24;cout << (val << 64) << endl;// 24cout << (val >> 32) << endl; // 24te

2021-11-23 09:40:46 494

原创 路由表启示——我的新伙伴wireshark

这几天学了学wireshark,就用几到了几个语法,不着急学命令,先学抓包的思想,最近看得书《wireshark网络分析就这么简单》,因为对路由表新的理解从而爱上了wireshark,所以就给语法1.ip.addr eq 127.0.0.1 找源/目的ip是127.0.0.1的包2.tcp.port找专门的端口号3.arp icmp http 查找协议路由引发的好玩的东西添加一个路由信息,-host表示这个IP是一台主机。dev后面跟着是那块网卡route add -host 192.168.

2021-11-11 17:14:49 262768

原创 mysql删数据但文件大小不变——第13讲总结

原文链接先查看mysql的innodb_file_per_table是否是打开的,如果是ON那数据就会是一个单独的文件,drop table会释放空间。show variables like '%per_table%';但如果是delete *所有数据,这样不会减小数据占用的空间,会在系统内标记可重用而不会删除数据。数据空间重用也分为记录重用和页重用。记录重用就比较局限,盗一下图。删除R4,页A就多了一个空为,在有300-600之间主键插入就可以重用这个位置了。(注意R4也是标记删除,实际文件大小

2021-11-01 21:24:02 252814

原创 mysql可能慢的原因

原文链接总结一下redo log写满了,要阻塞来清理redo log脏页太多了,需要变成干净页。那什么时候需要变干净页呢?(原文有提到的,这也是我在写博客的时候想问问自己的,又重新看了一遍文章。)当查询的数据不在缓冲区中需要换成一个页,当是干净页就可以直接用了,但如果是脏页就需要把数据刷新到硬盘中,所以当脏页比例过大的时候会造成mysql的速度慢。innodb_io_capacity这个值来表示主机处理硬盘的能力。innodb_max_dirty_pages_pct这个来表示脏页的上限,默认是75%

2021-10-29 21:10:30 253545

原创 centos8安装docker 、docker compose,C++代码在docker里跑起来

本来计划是打算学一下bigtable的,早上又研究了一下LSM树,最近我的网站后台整好升级测试完了,以前都是git拉下来,整好寻思学学新技术docker。官网安装链接,这个教程centos8安装会失败,看这篇文章解决这个问题,然后就是启动在普通用户下执行docker image ls会报错,加入以下命令sudo usermod -aG docker $USERnewgrp docker # 刷新一下阮老师的教程老棒了...

2021-10-25 20:49:05 254165

原创 leveldb的学习——LSM TREE的学习

最近打算研究研究开源的代码,看上去leveldb比较小巧且好阅读,也打算研究研究存储引擎的原理,万一以后上班改造数据库去了呢哈哈哈目录安装安装有两种方式,源码编译或者下载压缩包源码链接wget https://github.com/google/leveldb/archive/v1.20.tar.gztar -zxvf v1.20.tar.gz # z是解压gz结尾的压缩,x是解压,v是可视化,f是后面根文件的名字cd leveldb-1.20make -j6 # 表示开几个核心编译,ca

2021-10-24 19:12:25 252830

原创 centos8安装webbench遇到的错误 webbench.c:22:10: 致命错误:rpc/types.h:没有那个文件或目录

操作系统:centos8官网下载链接,下载完make,然后sudo make intsall。下载完make就遇到了问题,报错,rpc/rpc.h找不到,安装下面这俩个东西,然后在做一个软链接。sudo yum -y install libtirpc libtirpc-develln -s /usr/include/tirpc/rpc/types.h /usr/include/rpc在遇到问题,看这篇文章就行文章链接就是这个文件缺失遇到了问题,记录一下,万一帮助到其他小伙伴了呢...

2021-10-22 21:05:53 255350

原创 C++拷贝/复制一张图片 读写二进制文件

最近发现了自己网站一个bug(早发现了,一直没去深入探索原因),我网站的图标没了,按F12看看图标传过来了吗,发现传过来了。但为啥没显示出来百思不得其解,起初是怀疑图片是二进制文件保存的,所以按正常文件读写是不对的,想了之后决定用sendfile函数(Linux的一个系统函数,也叫零拷贝函数,没用过的同学可以翻翻man手册或者搜搜了解一下)发送二进制文件,对jpg、png来一个判断,然后sendfile直接发送,这样做起来改动是最少的,该完之后确实发现ok了,就放在那里没改了,最近要修改一下网站后台的源码,

2021-09-30 10:38:15 255519 4

原创 CSS的学习

看的还是黑马的教程,说起来跟黑马也真是有缘,以前的一个C++知识点跟的是黑马学的,我redis也是跟黑马学的,我VUE也是跟黑马学的,现在CSS还是黑马哈哈哈哈课程链接1.front-size调整字体的大小2.class和id选择器的区别,id只能用一次,class可以多次引用,一个标签可以引用多个class选择器,用空格分隔3.front-family是修改页面字体,可以搞多个字体,逗号分隔,顺序是第一个字体浏览器不支持,一次往后找,最后找不到了找浏览器默认的字体。4.font-weight变粗

2021-09-24 10:43:32 253666 2

原创 mysql索引——为啥用自增数字来作为主键的理解和using index、Using index condition、using where的一些

最近mysql数据库被问爆了哈哈哈,反正也不打算卷大厂了,被问爆就被问爆吧,但是该学还是给学,在读极客时间的mysql文章链文章接,最近给自己又放了半个月假,现在开始好好学学习,现在也希望我秋招满意的公司快点和我谈薪,一年有个30就继续躺平了,没有的话就站起来面试哈哈哈以前还真不知道小小索引有那么多好玩的地方,记录下以前知道/不知道的一些东西索引就是书的目录,加速你查找你想要的东西。主键索引和二级索引(可以理解为非主键索引),非主键索引就需要有个回表操作在通过主键来找到想要的数据,所以叫做二级索引,这

2021-09-18 13:25:03 253259

原创 记录我的Vue学习

在腾讯实习,面的C++后台,但新开了个项目需要用js来做后台,最近我的实习期也要结束了,摸摸鱼学学vue,嘿嘿,主要记录自己对vue的理解,本篇基于vue官方文档学习的,如果不对可以及时指出。官网链接用的cdn是vue官网上给的https://cdn.jsdelivr.net/npm/vue/dist/vue.jsv-bind绑定个值2.v-if 为true就可以显示,false就不会显示了3.v-for相当于C++的for(auto val : nums),按照todos的顺序把值都输出来

2021-09-06 10:03:32 469 1

原创 decltype用于自定义排序的理解

以前也没怎么写过,就知道跟auto类似,推断类型的,也没怎么用过。也就偶尔写写unordered_map或者set自定义排序的时候会用到,那会也是,有时候用到decltype也不知道为什么要加&或者不加&。今天整好在做我lc的每日一题,又要自定义排序关系,又蒙逼了所以决定研究一下。题目很简单topK问题。不带&,会认为他是一个函数?带了&号才会认为他是一个函数指针所以LC这道题就要带&,来表明是一个函数指针类型。写这道题的时候去stackoverflow

2021-05-20 20:51:09 262 2

原创 乐观锁和悲观锁

乐观锁乐观锁一种实现方式就是CAS(compare and swap)也是atomic实现原理。可以这么理解,乐观锁其实就是原子操作,它很乐观,认为只有他更改数据,当它要修改内存存放的值的时候,发现哎呀呀内存这个值被改了,那么这次操作就放弃了。维基百科定义CASCAS实现的原理——引用维基例子。当内存指向的值不和自己预期相等就返回了int cas(long *addr, long old, long new){ /* Executes atomically. */ if(*addr

2021-05-09 21:11:27 93

原创 红黑树学习

维基百科简书的参考博客上述我觉得是可以参考的维基百科红黑树规则节点是红色或黑色。根是黑色。所有叶子都是黑色(叶子是NIL节点)。每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。)从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。总结一下,理解看上面的两篇文章。总结方便自己日后回忆插入结点什么时候变色,什么时候旋转?每个插入点都是红色。当插入结点的父节点是黑色的时候直接插入即可,因为黑色数量还是一样的。当父节点是红色,叔叔结点

2021-05-09 18:11:58 75

原创 C++遇到的黑科技代码

平常看的一些开源代码,遇到了一些黑科技。在总结一下目录1、将数字压缩写入字符串中2、当函数只能接受int32的参数的时候,但我想传int64的值怎么办?3、利用栈空间1、将数字压缩写入字符串中比如int的最大值是2^31次方,好多位阿,我想写在string中,岂不是要这样写?潜意识都会这么写的,那么我们有什么办法只写在前四个字节中吗?当然有了。string s;s = to_string(INT_MAX);用下面的代码,可以清晰看到,把值写到s2的比特位中了,只占用了4个字节.取出他的地址在强

2021-05-03 19:36:22 253600

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除