![](https://img-blog.csdnimg.cn/20190828161821376.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Practical
文章平均质量分 91
AlbertS
一个手残党怀着对游戏的好奇心踏上了开发之路,旅途中磕磕绊绊踩了不少坑,触了不少雷,深知好记性不如烂笔头的道理,于是记录下学习路上的点点滴滴,努力在这个浮躁的年代做一个专注的人,携码起舞,与君共勉。
Coding是件有趣的事情,快乐的看待每一天,我真的非常幸福~
展开
-
忙忙碌碌的混沌之中差点扑了个空而错过年中这条线
突然意识到过完这个周末已经7月份了,他预示着我的2024年已经过半了,过年回家仿佛还是昨天的事情,怎么转眼间已经到了年中了。心里还是不愿承认这件事,翻开自己2024年的打卡清单,列表显示已经到了26周,从另一方面证明了年中这条线已经到来,再看看打卡清单上这惨不忍睹的“成果”,真的有点难以接受...原创 2024-06-30 22:54:44 · 940 阅读 · 0 评论 -
有关服务器安全的反思
人都说学的越多,不懂的东西也就越多,很多人都会有这个感受,面对信息爆炸的互联网时代,有种“学不完,根本学不完”沧桑无力感,最近有关服务器安全的了解又扩展了我的知识面,填补了部分认知盲区,究竟什么是服务器安全...原创 2024-05-28 01:30:00 · 582 阅读 · 0 评论 -
面对AI你到底能做什么?怎样能让其为我所用
面对AI铺天盖地的新闻,大有替代万事万物的之势,但如果要问AI能做什么?你是否会在心里打个问号?它好像只能用来聊天,又好像什么都能做,ChatGPT现在是我每天都要使用的工具,每天只是对话问问题,特定领域的问题确实比搜索引擎更精准一些,但是对AI的使用也就仅限于此,难道AI只有这么大点能力吗...原创 2024-05-07 02:15:00 · 692 阅读 · 0 评论 -
借助ChatGPT使用Python搭建一个工具网站
不知不觉ChatGPT已经风靡一年多了,现在基本每天工作时都会用到,相比于传统的搜索引擎它究竟强在哪呢?原创 2024-03-02 02:00:00 · 1894 阅读 · 2 评论 -
gitlab修改代码库的名称、路径和分组
工作项目的源码使用gitlab进行管理,通常情况下不会修改代码库和路径,但是非一般的情况总是存在,比如刚刚立项时多次调整项目名,甚至改变管理层级,所以还是有这类需求的,一开始我本打算将旧的代码库和提交记录推送到新的地址和分组,后来在gitlab后台里翻了翻,结合网络大神们的指点,发现可以直接修改代码库的名称和分组,总共需要修改3个配置,一起来看下...原创 2023-12-19 22:20:24 · 1814 阅读 · 0 评论 -
之前好好的distcc突然报错distcc[18595] (dcc_pump_sendfile) ERROR: sendfile failed: Broken pipe怎么办
distcc是一个用于分布式编译的工具,它可以将编译任务分发到多台计算机上,从而加快代码编译的速度。distcc允许多台计算机共同参与编译过程,利用分布式系统的优势来并行处理编译任务,从而提高编译速度和性能...原创 2023-07-21 22:35:10 · 316 阅读 · 0 评论 -
初识Telegraf、InfluxDB和Grafana铁三角形成的监控可视化解决方案
数据监控目前用于各行各业,服务器开发也不例外,进程什么时候被杀死了?内存占用已经达到98%了怎么早点没发现,网络带宽已经占满了怪不得玩家反馈说登录不上去了,这些都是服务器开发人员常常听到的“抱怨”,他们都涉及到服务器资源的使用情况,如果有一种方便的途径可以高效的监控各个服务器的情况就好了,单靠人去各个服务器查看是不现实的,今天就来简单介绍一种我刚刚学到的方案...原创 2023-06-17 19:47:08 · 2983 阅读 · 2 评论 -
Nginx的安装与常用配置
Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,出镜率很高,从2004年发布至今,凭借开源的力量,日趋完善。其占用内存少、并发能力强、并且Nginx 是免费的还可以商业化,配置使用也比较简单...原创 2022-12-19 02:22:07 · 852 阅读 · 0 评论 -
std::uniform_real_distribution的一个bug引发的服务器崩溃
近日发生一次线上游戏服务器宕机问题,通过日志和core文件信息定位到崩溃的函数,但是崩溃的位置却是一段很长时间都没有改动过的代码,起初怀疑是配置数据的问题,但仔细查看之后均正常,然后又怀疑是玩家旧数据异常导致,但是分析代码逻辑后也没发现问题,最后是一个同事发现生成随机数的代码有bug,导致数组越界了,真是一个意想不到的问题............原创 2022-08-07 01:47:11 · 2661 阅读 · 0 评论 -
记一次使用Valgrind查找解决内存问题的玄幻旅程
看标题来说这应该是一篇教程式文章,但为了突出“玄幻”二字,我们不讲细节只讲过程,在过程中体会解决问题的方式和方法,以及避免一些我在这个过程中绕的弯路,如果想找工具的详细使用方法可以去参考文章中翻一翻,有几篇文章写的真不错,可以仔细看看...原创 2021-12-05 01:22:28 · 2068 阅读 · 0 评论 -
linux环境下恢复rm误删的文件
一提到在 linux 环境下删除文件,那绝对离不开 sudo rm -rf /* 这个梗,从删库到跑路,一天一个入狱小技巧,所以我们一定要谨慎使用 `rm -rf` 命令,这相当于我们在 Windows 上使用 `Shift+Delete` 组合,文件不会放到回收站中,而是直接永久删除...原创 2021-11-28 22:20:15 · 15240 阅读 · 13 评论 -
完全图与强连通图的那些坑
图这个数据结构相比队列、栈、树来说算是复杂多了,关于图的问题也多如牛毛,先来看一下常见的问题:若无向图 `G` 中含7个顶点,要想保证图 `G` 在任何情况下都是连通的,则需要的边数最少是几条...原创 2021-11-17 00:38:02 · 2949 阅读 · 7 评论 -
树的带权路径长度和哈夫曼树
树的所有叶子结点的带权路径长度之和,称为树的带权路径长度,英文缩写为 `WPL`,从百度百科中得到的信息为 “树的带权路径长度(weighted path length of tree)是2018年公布的计算机科学技术名词”,这就有点奇怪了,这个词印象中在大学课本里学过啊,怎么会是2018年的名词呢?难道我穿越了...原创 2021-11-12 00:47:58 · 9445 阅读 · 12 评论 -
.bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
想要截取一个文件路径中的盘符、文件名等信息,第一反应是正则表达式?或者是 `split` 函数?这些往往都是“高级”语言中才会有的实现方法,对于批处理来说有点“带不动”啊,那么在bat批处理中要怎样处理类似的请求呢?最近找到了两种方法,接下来会逐一展示一下,不过在展示具体的写法前,我们先来看一下 `%~dp0`的含义...原创 2021-10-17 23:13:45 · 14655 阅读 · 2 评论 -
使用Spreadsheet Compare工具对比Excel文件差异
与 `Spreadsheet Compare` 这个工具的相遇是通过 TortoiseSVN 来牵线的,在使用 SVN 管理 Excel 表格时发现,TortoiseSVN自带的比较工具不能查找Excel文件的版本差异,这对于通过日志查找问题来说非常不方便,通过搜索发现了 `Spreadsheet Compare` 这款优秀的工具,特此记录一下,方便日后查找并快速配置...原创 2020-10-12 00:31:36 · 9400 阅读 · 10 评论 -
码龄10年工作6年的搬砖小哥,最常访问的学习网站都在这里了
最近看到一篇总结学习网站的文章,发现很有收藏价值,所以也想试着把自己常用的学习网站总结到一起,之前确实用过一些比较好的网站,有些网站是查找问题时找到的,但是解决完问题就找不到了很可惜,所以我养成了收藏网址的习惯,感觉有用就会分门别类的添加到书签中,再次遇到之前解决过的问题就先在书签里搜一下,有时候会加快解决问题的进度...原创 2020-06-20 00:19:24 · 6632 阅读 · 16 评论 -
配置Beyond Compare 4作为git mergetool来解决git merge命令导致的文件冲突
使用 `git merge` 命令合并代码的时候可能会产生文件冲突,产生这种冲突的根本原因是文件的同一处同时被多次修改,这种同时修改常体现的不同分支上,当多个分支修改了同一处代码,再合并代码的时候就会产生冲突,因为 `git` 程序也不知道我们想要保留哪一份修改,这时就需要我们手动修改产生冲突的文件...原创 2020-05-23 00:51:55 · 9587 阅读 · 22 评论 -
汇编指令入门级整理
我们大都是被高级语言惯坏了的一代,源源不断的新特性正在逐步添加到各类高级语言之中,汇编作为最接近机器指令的低级语言,已经很少被直接拿来写程序了,不过我还真的遇到了一个,那是之前的一个同事,因为在写代码时遇到了成员函数权限及可见性的问题,导致他无法正确调用想执行的函数,结果他就开始在 `C++` 代码里嵌入汇编了,绕过了种种限制终于如愿以偿,但是读代码的我们傻眼了...原创 2020-05-10 20:49:34 · 16464 阅读 · 40 评论 -
.bat批处理(九):替换带有等号=的字符串的子串
今天写这篇记录要解决的问题来源于最近一名读者的提问,之前写过一篇名为《.bat批处理(六):替换字符串中匹配的子串》的总结文章,结果有读者在评论区提问说,如果想要替换的子串中包含等号 `=`,那么就无法替换了,问有没有什么办法可以解决。遇到这个问题的第一感觉应该挺好处理的吧,如果批处理程序在替换操作中认为等号 `=` 比较特殊,那就加个转义字符应该就可以了,但事实却证明这种想法有些天真了...原创 2020-04-19 11:11:18 · 8653 阅读 · 42 评论 -
Win10通过带命令行的安全模式清除顽固的广告弹窗文件
最近电脑开机后偶尔会出现一个弹窗,这种广告弹窗见的多了也就麻木了,本来也没放在心上,随手一关就准备去做其他事情了,但是点击关闭按钮后这个广告弹窗居然还弹出了二次确认框,想想也忍了,毕竟广告商做半天就是为了让你多看几眼,当我用鼠标的光标接近这个确认按钮时,确认框消失了,整个广告页面居然还在...原创 2020-04-04 23:13:03 · 18326 阅读 · 34 评论 -
Python切割超大日志文件、保留文件最后几行
关于日志这个东西的存在,主要是为了记录发生的事情,编程的过程中也常常用到,记得我们在刚刚学习编程的时候,常常会出现程序错误,这时候就需要输出一下,其实这个输出也是日志的一种体现,随着编程水平的提升,各种调试工具和方法渐渐进入我们的视线,但是输出一下这种方法却一直被使用,特别是一些偶发性问题,调试工具很难捕捉到他们,这时候往往需要将中间过程输出到日志文件中,这些日志文件就是我们分析问题的基础。原创 2019-10-24 10:24:24 · 2558 阅读 · 3 评论 -
Mysql中查询当前用户、当前数据库等基础信息
生活中有时会出现灵魂三问:我是谁?我在哪?我在做什么?特别的喝醉酒的第二天,完全不记得昨天发生了什么。而在数据库操作中也会出现这种灵魂拷问,我用的是哪个用户,为什么会没有权限?我操作的是哪个数据库,刚刚不会把线上正式服务器数据删了吧?原创 2019-10-01 09:36:03 · 4694 阅读 · 7 评论 -
windows环境下C++代码打印函数堆栈调用情况
文章目录前言查看函数堆栈的作用实现打印堆栈信息的函数显示堆栈调用信息总结程序源码前言程序运行的过程中,函数之间的是会相互调用的,在某一时刻函数之间的调用关系,可以通过函数调用堆栈表现出来,这个调用堆栈所展现的就是函数A调用了函数B,而函数B又调用了函数C,这些调用关系在代码中都是静态的,不需要程序运行就可以知道。既然函数之间的调用关系可以通过分析代码就可以知道,那么查看函数调用的堆栈是不是...原创 2019-09-04 15:41:26 · 8357 阅读 · 45 评论 -
.bat批处理(七):PC端从手机内复制文件到本地
文章目录前言准备条件实现代码代码分析代码测试拷贝成功拷贝失败总结前言解决方案都是在实际工作中遇到问题时想出来解决方法,很多方法乍一看根本用不上,但实际操作中发现真的很有用,今天提到的这个方法就是这种类型的。游戏开发中常常会将一些关键信息或者调试信息写入到日志文件中,这样可以在出现BUG的情况时,通过分析日志文件来进一步定位问题的原因,在真机上跑游戏时就需要将手机中的日志文件导出到电脑上,方...原创 2019-08-29 20:21:19 · 3110 阅读 · 0 评论 -
雷电模拟器一键宏实现循环点击
今天在使用雷电模拟器测试游戏的时候,有一个领奖界面需要点击领奖100次,程序猿作为解放劳动力的先锋,必须想个办法解决这个事情,按键精灵是个好东西,但是重装系统之后还没有安装,然后发现这个雷电模拟器里除了简单的按键映射,还有一键宏的功能,那就用它解决了...原创 2019-08-10 12:07:14 · 65437 阅读 · 11 评论 -
Mysql中char和varchar的区别
文章目录前言问题起因length 和 char_length测试环境测试过程char和varchar区别总结前言这个标题起的过于俗套,前一段时间我还写了一篇总结《Mysql5.7版本中数据表字段可用的类型》来批判这种对比,原因是对比时没有指明数据库,内容写的是char、varchar和nvarchar的对比,结果我测试了半天发现Mysql当前版本根本没有nvarchar,浪费来了不少时间。问...原创 2019-07-27 12:29:54 · 6811 阅读 · 11 评论 -
时分秒针在一天之内重合多少次
文章目录前言时针和分针的相遇代码实现运行结果分析总结前言分析问题之前先给出问题的答案:2次,送给急需要知道答案又不求甚解的朋友。这个问题之前听过类似的,一直没有当回事,今天在解题的时候发现了这道题,于是动脑筋想了一下,从12点位置时分秒3个表针重合开始,第一次应该在1点5分之后,那是分针转了一圈快追上时针了,再稍微走一点就能追上,然后秒针再转过来就完成了第一次重合,同理在2点10分之后也有一...原创 2019-07-23 20:56:51 · 8172 阅读 · 12 评论 -
gdb启动多进程程序并切换调试进程
文章目录前言使用方法测试环境具体例子总结前言gdb是linux环境下调试C/C++程序的强大工具,但是最近在使用gdb启动一个多进程程序的时候总是意外退出,显示信息中包含Detaching after fork from child process 25377.这一句,而用attach命令附加到正在运行的进程却没有问题,因为需要调试启动逻辑的部分代码,所以必须使用gdb启动多进程程序,后来发现...原创 2019-05-23 20:47:15 · 6491 阅读 · 0 评论 -
linux环境下运行程序常用的nohup和&的区别
前言复杂问题简单记,先了解一下概念,对于一般的小程序而言这两种启动方法应该用不上,如果程序瞬间的就结束了,是否挂起与是否后台也就没有了意义,所以标题中提到的方式常用来启动需要一直运行的程序,比如游戏服务器。假如我们直接通过命令行./game_server运行一个简单的游戏服务器,那么会发现这个运行程序霸占了整个命令窗口,此时,我们无法再运行其他的程序,所有的输入都变成了game_server的...原创 2019-02-25 20:34:32 · 826 阅读 · 4 评论 -
Mysql中使用select into语句给变量赋值没有匹配记录时的结果
前言对select into语句感兴趣是因为看了项目中的一个存储过程引起的,在程序运行之前看了存储过程的逻辑,本以为没有数据时会报错,结果程序却正常运行,这说明我对select into语句理解的问题,同时也暴露了一个知识盲点,所以写了个小例子测试一下,并把测试的过程记录方便日后查找。创建测试表格为了更清楚的表明问题,我们创建的表格尽可能的简单,同时为了测试空值的情况,数据列我们不设置默认...原创 2018-11-17 11:36:23 · 8752 阅读 · 2 评论 -
VS2015调试dump文件时提示打不开KERNELBASE.dll
前言之前的一篇文章"VS2015调试dump文件时提示未找到xxx.exe或xxx.dll"中,我简单的介绍了一下在调试dump文件是提示未找到exe或者dll的原因,那就是路径不正确或者版本不对应,最近在调试项目的时候发现了新的问题,那就是系统的dll不对应,如果是项目中dll的不对应我们可以还原版本找到,可是要是系统的dll不对应,那么我们只能从发布机上复制了,或者自己去下载了,具体的提示如...原创 2018-10-27 19:17:15 · 6535 阅读 · 0 评论 -
操作指向类成员的指针需要了解的两个操作符->*和.*
前言关于 ->* 这种写法在很早就在项目代码里见过了,并且还写过,不过当时并没有正确的理解这样写的含义,一直到最近发现这样写很奇怪,于是根据自己的理解,开始改代码,发现无论怎么改都无法通过编译,仔细搜索后才发现这是一种固定的写法,也就是说 ->* 是一个操作符,无法拆分,同时还有一个 .* 也是相同的作用,只不过是用于对象上,而 ->* 是用于对象的指针上。那么这两个操作...原创 2018-05-12 14:55:44 · 2199 阅读 · 0 评论 -
.bat批处理(六):替换字符串中匹配的子串
前言关于字符串的操作通常是编程生涯中不可避免的,在各种竞赛中、工作中常常能使用到,许多语言中都有专门负责处理字符串的模块或者类,对于字符串的替换一般也有专门的函数,比如Lua中的string.gsub()、Python中的replece()等,那么批处理在进行字符串操作的时候,有没有好用的替换函数呢?前两天在使用批处理更新资源文件的时候发现,批处理中也有专门处理字符串替换的方法,并且这...原创 2018-04-12 20:20:56 · 43077 阅读 · 12 评论 -
.bat批处理(五):遍历指定目录下资源文件并更新
前言先来看这样一个需求,假设有A,B两个目录,其中A目录是资源目录,B目录是工作目录,其中资源目录不定期更新,资源文件都在A目录下,并且没有子目录层级关系,但是资源要被使用时需要更新到B工作目录,B目录根据工程需要建立了一个包含众多子目录的层级体系,这样当A目录中的一个资源文件更新后,需要手动复制A目录中更新的资源文件,然后在B目录中找到对应的位置,然后进行粘贴替换,这样的操作如果很久一次、或...原创 2018-03-22 11:22:04 · 11074 阅读 · 13 评论 -
关于游戏中仓库类的设计
前言这个游戏中的仓库类设计开始于春节前,和大家一样,我也是期盼着放假而无心工作,所以在放假前一天虽然蹦出了思维的火花,我却没有使用文字记录下来,但是大致的思路我已经记录到脑子中了,这一次的突然感悟,与上次突然明白什么是选择排序,什么是冒泡排序很类似,都是一瞬间突然明白,是一个从量变到质变的过程,接下来简单记录下我关于仓库的理解。初觉不妥游戏中的仓库是用来存放道具的,这是我在接触...原创 2018-03-08 19:42:15 · 2593 阅读 · 0 评论 -
Vim、Xshell、远程终端莫名卡死的原因
前言最近通过Xshell连接远程服务器,然后使用Vim修改文件时会莫名其妙的卡死,一开始我还没注意,因为近期的网络一直不太好,经常出现按下一个字母半天才反应过来的情况,所以我没有太在意,直接关闭终端重新打开就好。直到有一天我开着两个终端的时候,Vim又卡着不动了,而另一个终端还以流畅的处理我敲击的命令,我就断定这肯定不是网络原因了。原因既然是Vim卡住了那就查查Vim本身有什么原创 2018-02-03 11:51:52 · 16072 阅读 · 13 评论 -
Vim中简单格式化代码
前言写这个总结的起因是我在把Windows上VS中的代码粘贴在Linux服务器的Vim中时,代码格式惨不忍睹,我就搞不明白为什么它每一行都要向后缩进,搞得我的代码最后像倒立的楼梯似的,就像这样:int main(int argc, char *argv[]){ int i=0,j=0; if (i != 0) {i++; }原创 2018-02-02 18:16:42 · 4897 阅读 · 0 评论 -
Mysql查询时case when语句的使用
前言前几天在技术论坛论坛上发现一个求助帖,大体意思就是要把一个表中的数据按条件分成两类,每一类排序方式不同,然后整体作为查询的结果集,乍一看这问题不是很难,很多人给出的答案是分别查询排序后再 union合并到一起,但是后来楼主明确指出不想使用 union 操作,这时有一位高人巧用 case when 语句解决了问题,其实这是我第一次接触 case when 语句,于是查询了一下具体用法,在此做原创 2018-02-01 19:35:57 · 11842 阅读 · 0 评论 -
验证mysql联合索引最左原则
前言如果你接触过数据库,应该听说过某些列上建立索引能够加快查找速度,如果研究更深入一点的人,可能还听说过联合索引,那么索引为什么能够加快查找速度呢?下面说说我的简单理解。索引试想一下,把1~10000这10000个数字打乱顺序存储在数组中,如果要找到5000这个数字在哪,那就得从数组第0个元素开始,一次遍历找到5000这个数,运气好了1次找到,运气不好需要查询10000个数,可是如原创 2018-01-29 10:39:20 · 3395 阅读 · 3 评论 -
Python实现一个简单的图片爬虫
前言提起爬虫,很多人都会感觉很神秘,包括以前的我也是一样的,只要是和爬虫的相关的知识我都感觉很高端,后来渐渐的接触的多了,也就慢慢地明白的了究竟什么是爬虫,说说我理解的吧,爬虫本身... ...原创 2017-12-23 23:10:02 · 4876 阅读 · 4 评论