- 博客(17)
- 收藏
- 关注
原创 git revert别人的代码怎么办?
git revert别人的代码怎么办? 相信大家在工作中都使用过git来作为版本控制工具。在多人协作的模式下,难免会在不经意间(比如喝多了,困了,工作的烦了)有些奇奇怪怪的操作。比如我在前两天就发生了一起由于git revert导致的惨案,不过好在解决了。在之前的工作中,我也遇到过由于git revert导致的问题,所以本着不能在同一个地方跌倒多次的原则,我在此记录下,不然迟早会死在这个东西手里。背景描述 首先讲一下前几天发生在我身上的故事。在团队内工作,如果大家负责同一个项目时,肯定是会分头
2021-04-18 14:36:11
641
原创 Redis学习--数据结构之dict(1)
Redis学习–数据结构之dict(1)dict是什么? dict是redis的一个重要的底层数据结构,究其原型就是一个键值存储的哈希表,它是Redis的性能的重要保障,下面就来看看这个东西到底和我们自己实现的哈希表有什么不一样吧。dict的结构设计dict是的结构就是左图上的样子,每个字段我先来一一介绍:先看最右边的dict_entry,一个entry即为一个哈希表键值对元素,下...
2021-03-23 09:04:36
279
原创 C语言利用结构体达到数组深拷贝的小技巧
大家有一定C语言基础的人都清楚,在C语言中数组是不能直接赋值的 例如int a[5] = {1,2,3,4,5};int b[5];b = a;像这样的代码,其实编译是不通过的,C语言不支持这样的数组赋值的语法。但是,今天我们就要介绍一种省事的方法来让C语言数组可以直接赋值。代码如下:...
2019-02-14 11:08:52
3947
原创 Redis源码学习--开始(0)
Redis源码学习–开始(0)一些技术无关的闲话秋招结束了很长时间了,我如当时所想,找到了一家还不错的IT公司,拿到了offer,下半个学期就要去实习了。当然,并不意味着技术学习的停滞,反而恰恰是个新的起点,意味着以后要熟悉各种工具,各种框架等实际场合使用的东西。当然,闲暇之余,对于我这样的萌新来说,底层的内容还是要打好基础,学无止境。当看到的东西越多时,自己会发现看不到的东西更多。新的开始...
2018-12-28 15:13:06
107
原创 不经意间的死锁,很强大
好久没有写过博客了 , 上一次写博客仿佛还是在去年的萌新时期。 中秋节到了 , 趁着假期没有什么招聘赶紧充电 , 所以我拿来了我的玩具web服务器搞了起来。 但是在不经意间写了一个大大的bug , 和死锁有关系。其中原因是这样的 , 如大家所知 , server这种类一般都被设计成为单例模式,而单例模式中饿汉模式过于简单 , 因此想搞一波来个线程...
2018-09-25 13:46:41
178
原创 综合练习——哈希桶的实现以及迭代器
数据结构的学习已经接近尾声了,最后我学习了哈希表的一些相关知识,了解了源代码的大致框架,在最后模拟实现一次哈希桶,这是一个比较考验代码能力的练习,也算是一次自我挑战吧。哈希算法就是给定参数的值通过一个哈希函数映射一个数组中的位置,然后将该参数存入哈希表。由于存在一对一映射关系,这种存储方式的查找已经存储的东西是最快的。但是由于哈希函数一般不会给出连续的空间,因此消耗的空间也较之前的存储方式更多...
2017-11-07 23:05:22
295
原创 AVLTree二叉平衡搜索树
树是存储常用的一种结构,合理的使用树可以让我们很方便的存入或者删除数据或者将存入的东西很方便的使用。 二叉搜索树是一种很不错的方便搜索的树,树的算法很简单,假设这颗树是由某个数据结构的节点创建的,根据这个节点的比较算法,比根节点大的节点,应该插入到根节点的右子树中,否则将他插入到左子树中。想必大家都看明白了,这是一个递归算法,层层递归最终找到要插入的位置进行插入。 这样可以
2017-10-24 19:23:19
241
原创 堆排序重要算法:向上向下调整算法
stl中并没有堆这样一个类(但是有个priority_queue,这其实就是堆哦,stl跟大小比较相关的容器大都允许自定义比较函数哦,很不错的呢),但是在学习中我们可以模拟实现堆,把它封装为一个类,然后在运用当中调用它的各种接口,实现一次可以深入理解堆排序的原理和优势,使我们在面对各种问题的时候可以借助这个算法实现更好的优化。 接下来就让我们看一下具体的实现过程:...
2017-09-21 11:10:40
5543
原创 迷宫最优解问题
最近看到一个比较有意思的题目,讲已知一个迷宫求最优解。这里就要提一下什么是迷宫了。 如上图所示,其实迷宫就是一个二维数组,其中‘1’代表墙,不能拖过,而'0'代表通路,是可以走的,给定一个入口和这个迷宫 求出最优(路径最短)的解。 求解大体算法是这样的 使用递归,从入口进入迷宫,从入口的上下左右四个方向探测,探测到可以走时,将来时的路做'标
2017-09-10 11:38:04
878
原创 二叉树线索化
二叉树遍历是一个很不错的问题,但是处理起来有点复杂,使用递归算法,会导致空间复杂度极大,而不使用递归会导致算法极难控制。因此我们使用一种线索化的算法,使得有的节点指向遍历时访问的下一个节点,从而通过很简单的算法实现遍历。 就让我们来看一下代码的实现吧:首先是一些头文件引用和节点的构造#include #include #include using namespace
2017-05-22 19:23:17
185
原创 数据结构之二叉树的简单操作
二叉树是数据结构——树的一个重要结构,可以实现很多算法,今天就来看一下二叉树的基本实现。#include #include #include #include using namespace std;templatestruct BinaryTreeNode{ T _data; BinaryTreeNode* _left; BinaryTreeNode* _right;
2017-05-07 16:18:06
231
原创 引用计数的智能指针——sharedptr的模拟实现
在处理异常时,由于要抛出异常,经常导致申请空间未释放,打开的文件未关闭等情况,这时,智能指针便应运而生。 智能指针功能和普通指针最大的区别就在于智能指针在退出堆栈时会自动调用析构函数而不会存在忘记释放空间的问题,而且它任然可以对指针进行赋值、解引用等操作。那就来简单的实现一下智能指针吧。templateclass SharedPtr{public: SharedP
2017-05-01 20:27:03
494
原创 容器的内嵌类——迭代器
容器是c++stl库里实现的重要结构,这里简单实现链表的构造以及遍历操作。在stl库里实现了容器的迭代器,用于遍历容器中的部分或全部元素。在这里我们来模拟实现迭代器的简单遍历,以及容器迭代器接口的实现。//节点templatestruct ListNode{ ListNode(const T& data) :_next(NULL), _prev(NULL),
2017-04-24 20:14:53
380
原创 良好的开发环境——设置你的vim
vim是Linux下的一款代码编译器,也是初接触linux的小白们常用的编译器。 vim编译器功能强大,但是使用前一定要对它进行一定的设置才能使它高效的为你办事。 那么如何将他设置的贴心呢? 设置vim需要在用户主工作目录下的.vimrc文件中写入相关指令。 下面我们一一进行设置1. set nu 这是最常用的指令。作用是在代码前加入行号。2. set autoindent
2017-04-08 23:26:43
375
原创 继续探讨linux文件权限的问题以及find指令的选项
linux权限问题上次说到linux文件权限中的r,w,x权限分别是文件的读权限,写权限和执行权限,rwx中都没有提到删除权限(文件可以被删除),也就是说我们不需要特意设置文件的删除权限,他也是是可以被删除的。那么问题来了,如果这个文件不属于我们,我们能把它删除吗? 验证一下 如果文件就属于我,我把它删除了显然是没有问题的。那么如何保证文件不属于我,我一定不能删除它呢?于是我搜索了
2017-04-04 13:13:55
1122
原创 Linux系统关于ACM时间的使用和文件目录的权限的问题
Linux系统关于ACM时间的使用和文件目录的权限的问题一、首先讨论目录文件的权限问题 : 1.要进入一个目录需要什么权限 由此可以得出结论,想要进入一个目录,该目录至少需要x权限。2.要在目录里存放文件需要什么权限 使用同样的方法不难得出结论 单独加 r w x权限都无法在file目录下创建文件
2017-03-22 18:04:33
352
1
原创 This is my first airticle at CSDN blog
各位博友大家好!(这并不是作业,这不是作业,这是作业,围观的可以绕路了)我是一个普通的刚开始接触代码的学生。以后的日子很长,很迷茫也很期待。是如我以前所想的无聊的体验还是一次又一次的克服困难后的喜悦,我也不得而知,但是我不是一个轻言放弃的人,无论如何也是会坚持的。我从小时候就开始接触数学,各种数据,各种信息,现在更是社会要信息化,人们似乎想用数据来描述整个世界,以至于不得不跟上时代的...
2016-10-28 16:58:54
425
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人