自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

arctanx

对所做的事情理解越深,你就越感到自在。

  • 博客(58)
  • 收藏
  • 关注

原创 [Leetcode] Counting Bits

题目要求: 输入N,求1~N的数中各有多少个1的位。地址分析思路: 求一个正整数中有多少个位为1,只要通过不断与1相’与’,右移一位就行了,在这道题中,这种做法的耗时是O(N*sizeof(int)),要想达到O(N)的时间,对每个数而言必须在O(1)的时间计算出它有多少个1位,单纯通过位运算和逻辑运算似乎很难实现,于是就想,能不能利用之前计算的数呢。直接看代码:vector<int> coun

2016-09-04 13:31:52 602

原创 用对象来实现闭包

在了解了闭包和对象的本质之后,抖个机灵,试着为C++实现闭包。先看一下js的闭包使用:function MakeFunc() { var data = 1; var myFunc = function(x) { return data+x; }; return myFunc;}var f = MakeFunc();f(1);用C++实现:class M

2016-09-03 17:00:47 772

原创 【计算机组成原理】中断和输入输出

前言这篇文章,我把中断异常、输入输出,两个部分放到一起,因为它们之间的联系实在很深。中断和异常在程序运行时,系统内部,外部或者程序本身出现一些需要特殊处理的“事件”,CPU立即强行中断当前程序,并改变机器状态来执行一段处理这个“事件”的程序,然后再回来继续执行之前的程序。这种机制,就叫中断(异常)。早期的计算机,只要做做计算任务就行了,与外界的交互非常简单,但随着不断的发展,交互方式越来越丰富,中断

2016-08-13 01:56:37 4081

原创 【计算机组成原理】存储器

存储器就是带存储功能的部件,它是冯诺依曼体系里必不可少的组成部分。在冯的模型中我们把存储器抽象成一个了整体,而在现代的计算机中,存储体系是采用的分层的策略。

2016-08-10 20:49:55 1116

原创 【计算机组成原理】流水线处理器

前言流水线的想法源自于传统工厂生产产品的方式,通过这种方式大大提高了生产效率,反应在CPU上就是提高了指令的吞吐率。上篇文章介绍了单周期处理器,姑且算是揭开了CPU那层神秘的面纱。现在我们来深入了解一下,一个超标量流水线处理器是什么样的。流水线的设计我们可以把一条指令的执行周期分为五个单独的过程,取指,译指,执行,访存,回写。 要实现流水线,就得把每一步的计算结果用寄存器暂时保留下来,以便在下一个

2016-08-09 20:41:13 5771

原创 【计算机组成原理】单周期处理器

单周期处理器

2016-08-08 22:52:03 7204

原创 【计算机组成原理】算数逻辑单元

前言算数逻辑单元(ALU),是CPU中用来进行算数运算和逻辑运算的部分,程序的生命诞生于这,毕竟程序的本质就是这些简单的加减。ALU的物理构造如果要讨论更原始的本质,就得从物理层面来展开。从外面看ALU,是这样子的:深入ALU内部,我们会发现它是一个由很多门电路组成的集成电路。每个门电路又是由一个个晶体管组成的,而现在的电子计算机都是采用的MOS管(MOSFET)。

2016-08-08 00:16:33 7282

原创 【计算机组成原理】用MARS做实验

MARS

2016-08-06 22:21:22 2250

原创 【计算机组成原理】指令系统体系结构

指令系统

2016-08-05 21:51:53 2083

原创 Python

函数的 执行 会引入一个新的符号表,用于函数的局部变量。更确切地说,函数中的所有的赋值都是将值存储在局部符号表;而变量引用首先查找局部符号表,然后是上层函数的局部符号表,然后是全局符号表,最后是内置名字表。因此,在函数内部全局变量不能直接赋值 (除非用 global 语句命名),虽然可以引用它们。

2016-07-30 10:42:46 4179

原创 Scheme

scheme学习

2016-07-29 14:05:30 715 1

原创 Cocos2d-x教程之环境搭建

前言上一次折腾cocos2d-x还是大一的时候,计算机基础也没有,就会几句C语言,最后迷迷糊糊的弄出来个打砖块的游戏,还颇为自得。然而,如今的”内功“高了很多,以前的很多迷雾也揭开了,再来琢磨它就从容多了。我想引用下知乎上萧井陌说过的一段话: 当你有了坚实的基础,这意味着你在之后更深入的学习中,不会畏惧那些学习新语言的任务,不会畏惧那些「复杂」的API,更不会畏惧学习具体的技术,甚至感觉很容易。

2016-07-25 00:35:24 1000

原创 【慢速学数据结构】排序

前言刚开始学的时候,一般都是几大排序一起看,看着看着就晕了,觉得很难。其实没学会的原因只有一个,那就是自己打击了自己的积极性。如果你心里对它们还存有畏难情绪的话,不妨先看看这些视频,匈牙利民间舞模拟各种排序,很滑稽;) 地址快速排序这代码够简洁了吧!void quickSort(std::vector<int> &a, int left, int right){ if(left < rig

2016-07-20 17:18:23 569

原创 【慢速学数据结构】树的遍历

这虽然是个easy的话题,但我们还是要争取写出简洁和优雅的代码。递归形式:前中后序对应的是print的位置,这里只写前序遍历。void traverse(TreeNode *t){ if(!t) return; print(t->val); traverse(t->left); traverse(t->right);}非递归形式:// 前序遍历void iter

2016-07-20 15:46:11 731

原创 【慢速学数据结构】图篇

介绍图,是由一个顶点集和一个边集构成的数据结构。怎么在程序里表示图?有两种方法,邻接矩阵和邻接表。虽然用邻接矩阵表示非常简单,但它也有些不可忽视的缺点。比如矩阵的大小不好提前预知,动态数组的话又不好实现。如果图是稀疏的话,也造成空间浪费。邻接表就要好很多。实现数据结构要怎么设计?先试着去写一下最基本的东西。 顶点。template<typename Vt, typename Et>clas

2016-07-20 11:14:55 690

原创 【慢速学数据结构】查找树篇

二叉查找树(排序二叉树),是一种支持快速查找、插入、删除的数据结构。

2016-07-15 18:48:15 597

原创 【慢速学数据结构】散列篇

散列表(哈希表),是一个关联数组,由key(关键字),value(值)组成,通过hash函数,将key计算成统一形式的不同的值,对应到数组的索引上。

2016-07-15 18:47:33 964

原创 【慢速学数据结构】队列篇

概述队列ADT我相信大家都很清楚,就是FIFO嘛。这一篇,关键讲队列怎么实现。实现循环数组实现。

2016-07-15 01:38:27 650

原创 【慢速学数据结构】集合(并查集)篇

上一篇实现的集合其实没什么卵用,跟个vector似的。并查集就比它厉害多了。

2016-07-14 00:30:36 541

原创 【慢速学数据结构】集合篇

集合ADT,表示一种非顺序容器,且容器内的元素不重复。

2016-07-13 15:00:47 679

原创 【慢速学数据结构】优先队列(堆) 篇

什么是堆呢?堆是一种基于树的数据结构,并且具有堆序性质。堆序性是指,父节点与孩子节点的关键字的值,始终维持一个顺序关系。因此,最典型的有最大堆或最小堆。

2016-07-12 01:04:48 834

原创 Unity3D教程之Roll a Ball

Unity使用感受就是,集成度巨高,各种功能都用鼠标点点就好了。教程的地址:Rool a Ball tutorial我做出来的效果。。总结:做小游戏可以熟悉Unity的API,不过更为重要的东西绝对不是这个,堆积重复的东西是没有意思的,去学计算机图形相关的知识,看这些API 的眼光就高很多了。所以我决定暂时不学Unity,下一篇开始,做个数据结构栏目,用0.5倍速再*学一遍数据结构。

2016-07-12 00:42:16 724

原创 贴两道灵活运用位运算知识来解题的

1. Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.class Solution {public: int getSum(int a, int b) { while(b){ int result = a ^

2016-07-10 23:23:00 426

原创 判断单链表是否为回文

这道题很有意思,你能在O(1) space,O(n) time约束下做出来吗?让我们来一步一步观察,思考。回文,那么意味着是轴对称的,想到用比较最左端和最右端的方法,可是这在单链表上是根本没法做的,除非是双向链表,但题目也不允许修改数据结构啊,所以不可行。再想想,把链表逆转吧,但是逆转之后怎么办?失去了比较对象啊。再想想,那逆转一半如何?如果是回文的话,前半段和后半段就必须是一样的。好,这方法靠谱,

2016-07-10 21:15:52 415

原创 c++中,用stringstream实现string的split

由于stl中的string类,没有split成员函数,所以需要自己实现它。有两种方法,当你的delimiter是空白符的时候,可以用这个不推荐的取巧方法。 string sentence = "And I feel fine..."; istringstream iss(sentence); copy(istream_iterator<string>(iss),

2016-07-07 21:36:50 3333

原创 跳台阶问题

问题描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法?思路: 抽象思维。把台阶看成一个n位二进制数,青蛙踩过的位上为1,没踩的是0,问有多少个这样的数。答案显然是1<<(n-1)个数。我看到这题还是用的DP。因为以前做过一道类似的题目,每次只能跳1或2步,是用DP解的。贴一下这道题的DP解法。class Solution {

2016-07-07 18:07:44 324

原创 github版本回退

碰到了如下情形: clone了别人的仓库,然后直接在master分支上做了很多commit,现在发现对方版本里有个bug,怎样才能只提交这个修复bug的commit,而不提交前面的commit?最后我是这么做的。 1. 新建分支,用来保存当前自己的commit。 2. 在本地,git reset --hard cm,cm里填你第一次clone的时候的版本。 3. 删掉远程仓库的maste

2016-07-06 23:43:56 2082

原创 Poj3984 迷宫问题

题目: Input 一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。 Output 左上角到右下角的最短路径,格式如样例所示。 Sample Input0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 Sample Output(0, 0) (1, 0) (2, 0) (2, 1) (2, 2) (2, 3)

2016-07-02 23:30:52 303

原创 操作系统--总复习

zz

2016-05-09 20:12:13 1142

原创 Linux下安装WPS的一些问题

首先要安装lib32ncurses5,lib32z1依赖,不然在用dkpg -i命令解压安装的时候会提示失败。虽然安装成功,但是实际点击图标运行的时候会发现闪退,换到命令行去运行,发现是因为无法加载某些动态库,而去安装的时候提示那些动态库已经装了,问题就在于它们是64位的,我们需要再装32位的才行。可以用apt-file这个软件来查找动态库的包名。然后,安装的时候记得在包名的后面加上i386 ,su

2016-05-05 22:58:17 1009

原创 Linux下文件编码转换

Linux下文件编码转换,把windows下的文本文件,转换成utf-8,直接转会发现iconv不支持ISO-8859这个格式。然而,只要改成GBK就行了,原因大概是GBK也包括了ISO-8859吧。$ file main.cpp main.cpp: C source, ISO-8859 text, with CRLF line terminators失败:$ iconv -f ISO-8859

2016-05-04 18:47:05 1531

原创 操作系统--进程与线程

进程线程进程进程其实是个抽象的概念,我认为只要掌握它的关键就行了,因为各个操作系统的实现细节又不一样,扣细节是扣不清楚的。进程说白了就是对单个程序的抽象。操作系统里面就是很多个进程在运行,它们不是全都并排着运行的,而是有层次结构,在linux里面用ps -t可以打印出一颗所有正在运行的进程的树形图。想让多个进程看起来在同时运行,就需要轮流着给它们分配CPU资源。为了方便切换工作的有效进行,操作系统

2016-04-24 13:26:38 674

原创 操作系统overview

操作系统就是用来管理硬件的软件,因为现实中人们用计算机来解决问题,但是不同的问题对硬件的依赖是不一样的,所以人们为了更好地在特定的场景使用好计算机,和在任何场景都能使用好计算机,于是就在硬件上设计出了一层软件,在这庞大的软件中,有些是对硬件的抽象,有些是对解决问题方式的抽象,所以操作系统学习我认为应该要抓住主要问题,一些细节扫过就行了。下面说说我看到的关键且重要的概念。操作系统的结构。计算机网络有O

2016-04-19 13:15:28 978

原创 最简单的计算机会是怎样的?

在我们家里,应该都有装那种,两个开关控制同一个灯泡的装置。我只记得初中物理书上的灯泡电路,一根接零线一根接火线,再加个开关,特别简单,要实现上面这种灯泡该咋办呢?有件事很容易知道,那就是两个开关就有四个状态,我们又发现,如果从状态的变化来看,只有两种情况,从相同(两个都开)变成不同(一开一关),从不同变成相同。所以那就正好把”状态变化”来当状态,抽象出来还是像一个开关一样。理论支撑有了,该怎么做呢?

2016-04-18 23:39:43 1555

原创 【计算机组成原理】主板与总线

计算机组成原理

2016-04-16 16:11:18 8219

原创 计算机网络overview-2

计算机网络性能计算机网络体系结构计算机网络性能网速?在计算机网络里应该说速率,或者说数据率(data rate),值得注意的是一般用来计算的都是理想速率,并不是实际速率。带宽。原本的带宽是指信号具有的频带宽度,即用最高频率与最低频率的差值,单位是赫兹。然而网络里面的带宽,是指的数字信道所能传送的最高数据率。也就是说单位时间内最多能传多少数据到介质上去。所以单位是bps/s(常用的有Mbps/

2016-04-03 16:17:29 734

原创 计算机网络overview-1

计算机网络的解释其实就是人们用来通信的东西,以前是电话传输,后来计算机发展起来了,也需要给他设计一种通信方式,然后就出现了APRANET这种东西,关于发展历史有空再写一篇新文章。计算机网络的特点,就在于它里面存在许多计算机技术,而不仅仅只是通信技术。专业一点的解释是:互联和自治的计算机集合。要互联就得有线,这线叫通信链路。自治指没有从主关系,也就是说通信的端都是平等的。那怎么连接呢,O(N2)的方式

2016-04-02 16:49:25 527

原创 OpenGL3--1--概述

OpenGL的原作者是SGI(硅谷图形公司)。现在由Khronos Group开发维护,最新稳定版本是4.5。OpenGL的意思是开放图形库,定义了一系列跨语言跨平台的api,使得你渲染图像的时候能够用上硬件加速,就是能用上显卡来计算而不是光用cpu,所以OpenGL大概就是个帮助你避免跟显卡打交道又帮助你画图的接口,就是你写代码不用考虑机器显卡和操作系统。

2016-02-13 18:23:18 824

原创 爬轮子哥的博客

爬轮子哥的博客因为有些时候网络条件不太好,所以索性把轮子哥博客爬下来,离线看。之前看了他的正则引擎文章,自己也写出来了一个简单的正则引擎,收获还是挺多的。有了正则工具,构造可配置词法分析器就方便的很,然后就会想干脆做个编译器吧,于是就得开始做语法分析器,然后就得代码生成,再设计一套虚拟机汇编,让你的代码跑起来。总之都在一步步提高自己的能力。真心觉得轮子博客文章质量很高,我有一个愿望,就是能尽量遍历一

2016-01-21 11:28:57 2167

原创 智能指针的使用

最近在写语法分析器,构造AST的时候,发现很容易出现内存泄漏。于是想着找个智能指针来用用,先看看stl的auto_ptr。

2016-01-06 10:27:01 630

空空如也

空空如也

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

TA关注的人

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