我的创作纪念日

机缘

1.这一年来对待博客的看法

其实最开始做博客就是把写博客当作任务的,不过经过一年来的总结,我算是养成了一些习惯,博客对我而言变成了复习笔记。我倒是不爱看自己写的文章,但是在我写出来时它已经帮助我又一次巩固了知识点,如果碰到自己忘了的知识也会回看自己写了什么东西帮助回忆。另外重要的是,当我在日常学习中,它打破了我一些思维定势:当我开始研究某些知识时,第一时间是想如何用自己的思想去说出冷冰冰的内容。

2.一年以来积累的写作经验

目前其实写作都是墨守成规的,最开始倒是有一些感悟吧。写作应该图文兼备,这样能使得内容更见形象,所以在写一些linux的知识回顾都会自己手动画一些图并且解释,我是觉得这样写确实也好解释多了,就像自己在黑板上画图讲内容一样。另外还要附加一些代码的案例,这是我觉得比较好的写作习惯吧。

针对不同的内容也有不同的风格:1.对于一些书上的理解,重点是偏向于自己如何高度总结它们,这样在复习书本时其实可以自己配合着自己写的东西一起看,复习效率会快不少;2.对于上课学的东西,重点落在细节的处理上,我是觉得越细节越起到整理和加深印象的作用。

总结的方法其实我更偏好于类似于列点顺序解释,这样一条两条的写也符合逻辑,能让人读懂,必要时我会画一些思维导图,它有利于综合全体的内容。

3.我未来需要注意的点

我认为:1.以后可以做点动态图片,使得解释更加生动;2.加入一些刷题的部分,因为自己的代码练习量也少;3.表达可能可以更加高效一些


收获

1.博客的收获

目前为止关注量为147,我其实不太喜欢分享,我也不太喜欢运营,我觉得单纯写作就挺好的,所以我觉得关注量和阅读量更多是一种监督吧,让我知道我还需要不断更新来强化自身能力

2.生活的收获

我觉得其实最大的收获是我的表达能力,我觉得我能够更好的说出一段流利的话,或许不断的写作能够理清自己对于知识的梳理,以至于我在日常的表达也有了一个更加流畅的回答。


日常

1.写作的日常

这一年的更新频率其实不太高,因为自己还是懒了点...我感觉到目前为止,学习知识是离不开博客的,他们可以是一体的。

2.平衡创作和工作学习

我一般选晚上十点开始写作,最多花费一个半小时写,这样也不浪费剩下的时间。


成就

我自己觉得有一个阶段写的最好的代码大概是平衡二叉树插入的递归函数

pair Insert(const T& data)
	{
		if (_root == nullptr)
		{
			_root = new Node(data);
			_root->_col = Black;
			return make_pair(iterator(_root), true);
		}
		KeyOfT kot;
		//父子节点确定插入的位置
		Node* parent = nullptr;
		Node* cur = _root;
		while (cur)
		{
			if (kot(cur->_data) > kot(data))
			{
				parent = cur;
				cur = cur->_left;
			}
			else if (kot(cur->_data) < kot(data))
			{
				parent = cur;
				cur = cur->_right;
			}
			else
				return make_pair(iterator(cur), false);
		}

		//走到这cur就是要插入的位置
		//cur要连接parent,parent也要连接cur---判断靠kv的大小
		cur = new Node(data);
		Node* newnode = cur;
		if (kot(parent->_data) > kot(cur->_data))
		{
			parent->_left = cur;
			cur->_parent = parent;
		}
		else
		{
			parent->_right = cur;
			cur->_parent = parent;
		}

		while (parent && parent->_col == Red)
		{
			Node* grandparent = parent->_parent;
			//parent分在grandparent左右
			if (grandparent->_left == parent)
			{
				//关键是看uncle节点不存在/红色/黑色的情况
				Node* uncle = grandparent->_right;
				//1.uncle红
				//parent和uncle变黑,grandparent变红
				//grandparent变红需要往上判断
				if (uncle && uncle->_col == Red)
				{
					grandparent->_col = Red;
					parent->_col = uncle->_col = Black;

					cur = grandparent;
					parent = cur->_parent;
				}
				else  //uncle不存在/黑色
				{
					//2.cur也是parent的左边,uncle不存在/黑色
					//右旋grandparents,parent变黑,
					if (cur == parent->_left)
					{
						_RotateR(grandparent);
						parent->_col = Black;
						grandparent->_col = Red;
					}
					//3.cur是parent的右边,uncle不存在/黑色
					//左旋parent再右旋grandparents,cur变黑,grandparents变红
					else
					{
						_RotateL(parent);
						_RotateR(grandparent);
						cur->_col = Black;
						grandparent->_col = Red;
					}

					//抽象树的头被设置为黑色,对上面没有影响,所以不需要进行循环
					break;
				}

			}
			else
			{
				Node* uncle = grandparent->_left;

				//1.uncle红
				//parent和uncle变黑,grandparent变红
				//grandparent变红需要往上判断
				if (uncle && uncle->_col == Red)
				{
					grandparent->_col = Red;
					parent->_col = uncle->_col = Black;

					cur = grandparent;
					parent = cur->_parent;
				}
				else  //uncle不存在/黑色
				{
					//2.cur也是parent的右边,uncle不存在/黑色
					//左旋grandparents,parent变黑,
					if (cur == parent->_right)
					{
						_RotateL(grandparent);
						parent->_col = Black;
						grandparent->_col = Red;
					}
					//3.cur是parent的右边,uncle不存在/黑色
					//右旋parent再左旋grandparents,cur变黑,grandparents变红
					else
					{
						_RotateR(parent);
						_RotateL(grandparent);
						cur->_col = Black;
						grandparent->_col = Red;
					}

					//抽象树的头被设置为黑色,对上面没有影响,所以不需要进行循环
					break;
				}
			}
		}
		_root->_col = Black;
		return make_pair(iterator(newnode), true);
	}

憧憬

以后工作量更大了,希望每天抽出一些一个半小时来总结整理,这样也对得起自己要就业计算机行业的决心吧。

你可能感兴趣的:(c++,程序人生)