C++自定义全部替换函数replace 发表于 2019-07-16 | 更新于 2019-11-17 | 分类于 C/C++ | 热度 ℃ | 字数统计: 537(字) | 阅读时长: 2(分) 前言今天遇到一个问题,需要把源字符串中的所有A串替换成B串,可能是最近写脚本写的太多了,第一反应就是使用replace()函数就完成了,在 Lua 和 Python 中确实如此,但是我现在正在写C++啊,查询std::string发现确实有一个repalce()函数,但是查看定义后发现事情却不像想象的那样简单。 阅读全文 »
gdb使用watch命令设置数据断点 发表于 2019-07-16 | 更新于 2019-11-17 | 分类于 linux | 热度 ℃ | 字数统计: 1,019(字) | 阅读时长: 5(分) 前言“数据断点”这个说法是沿用在Visual Studio中学到的设置断点的方法,在gdb中一般被叫做“硬件断点”,算是断点调试中一种较为高级的调试方法了,这个方法起初是在VS中学会的,属于有需求必有响应的产物。刚开始调试程序的时候只会设置普通断点,就是在要调试的程序代码所在行设置断点,然后等程序运行到断点处可以单步执行,查看内存变量,遇到多个位置修改一个变量并且要查看是谁改变了变量的时候,就要设置多个断点,当时就想如果可以设置一个断点,当变量值被改变就触发这个断点那该多好啊。 阅读全文 »
Mysql5.7版本中数据表字段可用的类型 发表于 2019-07-02 | 更新于 2019-11-17 | 分类于 Mysql | 热度 ℃ | 字数统计: 1,827(字) | 阅读时长: 8(分) 前言为什么会有这个总结,因为在测试Mysql的字符串函数时发现,char 和 varchar 有些不同,网上搜索一番发现了各种char、varchar、nvarchar 类型的对比,还有一些奇奇怪怪的这里就不说了,然后我就开始了对这几种类型字符串的测试,接着就悲剧了,测试多次之后发现创建为nvarchar类型的字段居然是varchar类型的,再查询官方文档后发现,当前版本(5.7.21)的Mysql根本就没有nvarchar类型的字段,白白浪费了时间,所以要把Mysql支持的字段列举在这里,方便后面查找使用。 阅读全文 »
逐步砍掉树杈的堆排序 发表于 2019-06-29 | 更新于 2019-11-17 | 分类于 Sort | 热度 ℃ | 字数统计: 3,820(字) | 阅读时长: 15(分) 前言在实现堆排序之前,我们先来看看常见的数据结构,在网上我看到了一个特别全的版本:数组,栈,链表,队列,树,堆,图,散列表,本着鸡蛋里挑骨头的态度,我们来看看数组和链表,这两个到底算不算数据结构,貌似它们应该算是线性表这个结构,它们更应该被称作是一个实现结构的元素,比如通过数组和链表可以实现线性表、队列、栈,二叉树等等,可是看看数据结构的定义是计算机存储、组织数据的方式,貌似它们又算是数据结构,反正这个概念模模糊糊,不太清楚,要按我的理解常见结构应该只有线性表、栈、队列、树、图,其他的像堆其实是一种树,散列表很多的内部实现也是树。 阅读全文 »
float的精度和取值范围 发表于 2019-06-27 | 更新于 2019-11-17 | 分类于 concepts | 热度 ℃ | 字数统计: 2,959(字) | 阅读时长: 11(分) 前言关于float的精度和取值范围这个问题,我查询了很多次,每次都是用完就忘了,等到再使用的时候还需要再次查询,关键是这个问题大家给出的结果并不都是一致的,我得从众多的资料当中选择出正确的观点,这还要额外花一些时间,所以我决定也总结一次,方便我以后拿来直接用了,如果能给大家带来帮助那就更好了。下面提到一些说法很多都是我个人的理解,如果大家有疑义,欢迎讨论。 阅读全文 »
Mysql中使用count加条件统计 发表于 2019-06-03 | 更新于 2019-11-17 | 分类于 Mysql | 热度 ℃ | 字数统计: 875(字) | 阅读时长: 4(分) 前言最近发现在处理Mysql问题时,count()函数频繁上镜,常常出现在分组统计的情景下,但是有时候并不是使用group by分好组就可以直接统计了,比如说一个常见的需求,统计每个班级男生所占的比例,这种情况一般会按照班级分组,但是分组内不但要统计班级的人数,还要统计男生的人数,也就是说统计是有条件的,之前确实没有考虑过怎样实心,后来查询了资料,总结在这里,方便日后查找使用。 阅读全文 »
gdb启动多进程程序并切换调试进程 发表于 2019-05-24 | 更新于 2019-11-17 | 分类于 linux | 热度 ℃ | 字数统计: 1,344(字) | 阅读时长: 7(分) 前言gdb是linux环境下调试C/C++程序的强大工具,但是最近在使用gdb启动一个多进程程序的时候总是意外退出,显示信息中包含Detaching after fork from child process 25377.这一句,而用attach命令附加到正在运行的进程却没有问题,因为需要调试启动逻辑的部分代码,所以必须使用gdb启动多进程程序,后来发现可以通过gdb的follow-fork-mode选项来切换进程,达到调试指定进程的目的。 阅读全文 »
Mysql调优之Using filesort 发表于 2019-05-16 | 更新于 2019-11-17 | 分类于 Mysql | 热度 ℃ | 字数统计: 1,430(字) | 阅读时长: 6(分) 前言在使用 explain 命令优化SQL语句的时候常常会在Extra列的描述中发现 Using filesort 选项,其实这个名字很容易造成误解,一开始我以为是“文件排序”的意思,进一步说可能就是使用了磁盘空间来进行排序,但是这个理解是错误的,Using filesort 真正含义其实只有 sort 这一个单词,和 file 没有什么关系,Mysql一般是通过内存进行排序的,不过,要是超过了配置中的限制,应该会生成临时表。 阅读全文 »
linux环境下查看C/C++程序的堆栈信息 发表于 2019-05-08 | 更新于 2019-11-17 | 分类于 linux | 热度 ℃ | 字数统计: 2,027(字) | 阅读时长: 11(分) 前言经常在Windows上开发的工程师们可能已经习惯了图形化的调试界面,在源代码的编辑框上点击就可以添加断点,在调用堆栈的窗口就可以看到程序运行的堆栈信息,但是在 linux 环境下,面对命令行的天下,我们需要掌握一些命令,才能够查看C/C++程序的堆栈信息。 阅读全文 »
Python利用requests模块实现代理访问网络 发表于 2019-05-05 | 更新于 2019-11-17 | 分类于 Python | 热度 ℃ | 字数统计: 620(字) | 阅读时长: 3(分) 前言代理相信很多人都听过,即使没有自己感受到,在无形之中可能也使用过,网络代理作为一项技术,在访问互联网时被广泛使用,那是因为使用代理有着诸多好处。 阅读全文 »