共 19 页: 首页 上一页 9 10 11 12 13 14 15 16 17 下一页 末页
摘要:当我们创建一个内存区域的时候,内存中的数据可能是乱七八糟的(可能是其他代码用过后遗留的数据),如下面一段代码.其运行结果是如下图所示的乱码,因为printf的%s是“打印一直遇到'\0'”。那么,如何解决上面我们有可能会访问的脏内存区域呢?在C语言中,可以采用如下的两种方法:(1)使用memset函数首先清理一下内存;(2)使用初始化填充0; 阅读全文
posted @ 2015-07-21 00:57 EdisonZhou 阅读 (3706) 评论 (0) 编辑
摘要:前面几篇基础介绍之后,本篇我们来做几个指针的小案例。首先,实现一个方法“多个返回值”的效果:返回一个三位数数字的个位、十位、百位。这里,我们借助指针来”返回“分解后的结果。这种应用也是最常见的指针应用。其次,我们知道strlen是计算字符串的长度,其内部是通过判断是否以'\0'作为结束符,虽然其不是一个安全的方式,但是却是各大C教材中最常见的函数。这里,我们来自己实现一个strlen函数,利用指针的移动来辅助计算长度,这也是指针的一个最常见的应用。最后,实现判断一个字符串是否以另一个子子字符串结尾。 阅读全文
posted @ 2015-07-20 00:48 EdisonZhou 阅读 (1840) 评论 (0) 编辑
摘要:如果在作用域内,变量以数组形式声明,则可以使用sizeof求数组大小,下面一段代码展示了如何使用sizeof。其中sizeof(nums)代表计算nums数组的总字节数,而sizeof(int)则代表计算int类型所占用的字节数(32位系统下是4个字节,64位下可能不同,因此这里使用sizeof(int)可以向程序员屏蔽这个差异),运行结果为: 阅读全文
posted @ 2015-07-19 16:17 EdisonZhou 阅读 (2614) 评论 (0) 编辑
摘要:指针每次加一就是指针向前移动指针类型对应的字节数。下面通过一个int指针来指向一个int数组,看看指针的加法运算到底是个什么鬼?可以看到,指针的加法就是向前移动指定类型字节数,在数组中就是指向下一个元素。下面再来看看与加法相反的减法,仍然以上面的代码为例,新增一句:ptr--; 阅读全文
posted @ 2015-07-19 02:11 EdisonZhou 阅读 (3549) 评论 (0) 编辑
摘要:At first,计算机中绝大部分数据都放到内存中的,不同的数据放到不同的内存区域中。But,内存角度没有数据类型,只有二进制;数据以字节(8位二进制)为单位存取。不同数据类型占据不同的字节,例如在32位系统中:int 为4个字节,short为2个字节(下面如未特殊声明,均为32为系统环境下的说明)。下面我们看看int类型、short类型和double类型的数字分别在内存中如何存储: 阅读全文
posted @ 2015-07-18 14:56 EdisonZhou 阅读 (1356) 评论 (0) 编辑
摘要:GCC(GNU Compiler Collection)是一套功能强大、性能优越的编程语言编译器,它是GNU计划的代表作品之一。GCC是Linux平台下最常用的编译器,GCC原名为GNU C Compiler,即GNU C语言编译器,随着GCC支持的语言越来越多,它的名称也逐渐变成了GNU Compiler Collection。下面对GCC的基本使用方法进行介绍。这里我们主要使用Windows系统进行C程序的开发调试,所以我们选择GCC for Windows版本的编译器。 阅读全文
posted @ 2015-07-18 13:21 EdisonZhou 阅读 (1601) 评论 (0) 编辑
摘要:上面两篇我们了解了树的基本概念以及二叉树的遍历算法,还对二叉查找树进行了模拟实现。数学表达式求值是程序设计语言编译中的一个基本问题,表达式求值是栈应用的一个典型案例,表达式分为前缀、中缀和后缀三种形式。这里,我们通过一个四则运算的应用场景,借助二叉树来帮助求解表达式的值。首先,将表达式转换为二叉树,然后通过先序遍历二叉树的方式求出表达式的值。 阅读全文
posted @ 2015-07-17 00:38 EdisonZhou 阅读 (2431) 评论 (1) 编辑
摘要:在上一篇中,我们了解了树的基本概念以及二叉树的基本特点和代码实现,还用递归的方式对二叉树的三种遍历算法进行了代码实现。但是,由于递归需要系统堆栈,所以空间消耗要比非递归代码要大很多。而且,如果递归深度太大,可能系统撑不住。因此,我们使用非递归(这里主要是循环,循环方法比递归方法快, 因为循环避免了一系列函数调用和返回中所涉及到的参数传递和返回值的额外开销)来重新实现一遍各种遍历算法,再对二叉树的另外一种特殊的遍历—层次遍历进行实现,最后再了解一下特殊的二叉树—二叉查找树。 阅读全文
posted @ 2015-07-14 01:55 EdisonZhou 阅读 (1982) 评论 (2) 编辑
摘要:前面所讨论的线性表元素之间都是一对一的关系,今天我们所看到的结构各元素之间却是一对多的关系。树在计算机中有着广泛的应用,甚至在计算机的日常使用中,也可以看到树形结构的身影,如下图所示的Windows资源管理器和应用程序的菜单都属于树形结构。树形结构是一种典型的非线性结构,除了用于表示相邻关系外,还可以表示层次关系。本文重点讨论树与二叉树的基本结构和遍历算法等内容。 阅读全文
posted @ 2015-07-12 14:16 EdisonZhou 阅读 (2607) 评论 (0) 编辑
摘要:最近看了看一个C#游戏开发的公开课,在该公开课中使用面向对象思想与Unity3D游戏开发思想结合的方式,对一个简单的赛车游戏场景进行了实现。原本在C#中很方便地就可以完成的一个小场景,使用Unity3D的设计思想(即一切游戏对象皆空对象,拖拽组件才使其具有了活力)来实现却需要花费大量时间与精力,究竟它神奇在什么地方?本文通过实现这个小例子来看看。 阅读全文
posted @ 2015-07-08 01:23 EdisonZhou 阅读 (9589) 评论 (2) 编辑
摘要:在日常生活中,队列的例子比比皆是,例如在车展排队买票,排在队头的处理完离开,后来的必须在队尾排队等候。在程序设计中,队列也有着广泛的应用,例如计算机的任务调度系统、为了削减高峰时期订单请求的消息队列等等。与栈类似,队列也是属于操作受限的线性表,不过队列是只允许在一端进行插入,在另一端进行删除。在其他数据结构如树的一些基本操作中(比如树的广度优先遍历)也需要借助队列来实现,因此这里我们来看看队列。 阅读全文
posted @ 2015-07-05 10:27 EdisonZhou 阅读 (1531) 评论 (3) 编辑
摘要:现实生活中的事情往往都能总结归纳成一定的数据结构,例如餐馆中餐盘的堆叠和使用,羽毛球筒里装的羽毛球等都是典型的栈结构。而在.NET中,值类型在线程栈上进行分配,引用类型在托管堆上进行分配,本文所说的“栈”正是这种数据结构。栈和队列都是常用的数据结构,它们的逻辑结构与线性表相通,不同之处则在于操作受某种特殊限制。因此,栈和队列也被称为操作受限的线性表。这里,我们首先来了解一下栈。 阅读全文
posted @ 2015-07-04 01:55 EdisonZhou 阅读 (1835) 评论 (3) 编辑
摘要:在上一篇中,我们了解了单链表与双链表,本次将单链表中终端结点的指针端由空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表称为单循环链表,简称循环链表(circular linked list)。循环链表和单链表的主要差异就在于循环的判断条件上,原来是判断p.next是否为空,现在则是p.next不等于头结点,则循环未结束。本文还会使用循环链表以及.NET中内置的LinkedList解决约瑟夫问题。 阅读全文
posted @ 2015-07-03 01:05 EdisonZhou 阅读 (1437) 评论 (4) 编辑
摘要:在上一篇中,我们学习了线性表最基础的表现形式-顺序表,但是其存在一定缺点:必须占用一整块事先分配好的存储空间,在插入和删除操作上需要移动大量元素(即操作不方便),于是不受固定存储空间限制并且可以进行比较快捷地插入和删除操作的链表横空出世,所以我们就来复习一下链表。 阅读全文
posted @ 2015-07-01 01:23 EdisonZhou 阅读 (2563) 评论 (10) 编辑
摘要:线性表是最简单也是在编程当中使用最多的一种数据结构。例如,英文字母表(A,B,C,D...,Z)就是一个线性表,表中的每一个英文字母都是一个数据元素;又如,成绩单也是一个线性表,表中的每一行是一个数据元素,每个数据元素又由学号、姓名、成绩等数据项组成。顺序表和链表作为线性表的两种重要的存在形式,它们是堆栈、队列、树、图等数据结构的实现基础。线性表中的元素在位置上是有序的,类似于储户去银行排队取钱,人们依次排着队,排在前面的先取,排在后面的则后取。这种位置上的有序性就是一种线性关系。由此可以看出:线性表的前后两个元素存在一一对应关系。 阅读全文
posted @ 2015-06-23 00:40 EdisonZhou 阅读 (4754) 评论 (12) 编辑
摘要:Hadoop2相比较于Hadoop1.x来说,HDFS的架构与MapReduce的都有较大的变化,且速度上和可用性上都有了很大的提高,Hadoop2中有两个重要的变更: (1)HDFS的NameNode可以以集群的方式布署,增强了NameNodes的水平扩展能力和高可用性,分别是:HDFS Federation与HA; (2)MapReduce将JobTracker中的资源管理及任务生命周期管理(包括定时触发及监控),拆分成两个独立的组件,并更名为YARN(Yet Another Resource Negotiator); 阅读全文
posted @ 2015-05-01 16:37 EdisonZhou 阅读 (3714) 评论 (1) 编辑
摘要:为了能够借助Hive进行统计分析,首先我们需要将清洗后的数据存入Hive中,那么我们需要先建立一张表。这里我们选择分区表,以日期作为分区的指标,建表语句如下:(这里关键之处就在于确定映射的HDFS位置,我这里是/project/techbbs/cleaned即清洗后的数据存放的位置)。建立了分区表之后,就需要增加一个分区,增加分区的语句如下:(这里主要针对20150425这一天的日志进行分区)。 阅读全文
posted @ 2015-04-29 01:13 EdisonZhou 阅读 (15442) 评论 (3) 编辑
摘要:(1)根据前一篇的关键指标的分析,我们所要统计分析的均不涉及到访问状态(HTTP状态码)以及本次访问的流量,于是我们首先可以将这两项记录清理掉;(2)根据日志记录的数据格式,我们需要将日期格式转换为平常所见的普通格式如20150426这种,于是我们可以写一个类将日志记录的日期进行转换;(3)由于静态资源的访问请求对我们的数据分析没有意义,于是我们可以将"GET /staticsource/"开头的访问记录过滤掉,又因为GET和POST字符串对我们也没有意义,因此也可以将其省略掉; 阅读全文
posted @ 2015-04-26 20:26 EdisonZhou 阅读 (42307) 评论 (9) 编辑
摘要:本次要实践的数据日志来源于国内某技术学习论坛,该论坛由某培训机构主办,汇聚了众多技术学习者,每天都有人发帖、回帖。本次实践的目的就在于通过对该技术论坛的apache common日志进行分析,计算该论坛的一些关键指标,供运营者进行决策时参考。开发该系统的目的是为了获取一些业务相关的指标,这些指标在第三方工具中无法获得的; 阅读全文
posted @ 2015-04-23 00:21 EdisonZhou 阅读 (20690) 评论 (7) 编辑
摘要:Flume是Cloudera提供的一个高可用的、高可靠的开源分布式海量日志收集系统,日志数据可以经过Flume流向需要存储终端目的地。这里的日志是一个统称,泛指文件、操作记录等许多数据。Flume的核心是把数据从数据源收集过来,再送到目的地。为了保证输送一定成功,在送到目的地之前,会先缓存数据,待数据真正到达目的地后,删除自己缓存的数据。 阅读全文
posted @ 2015-04-22 00:39 EdisonZhou 阅读 (4124) 评论 (1) 编辑
共 19 页: 首页 上一页 9 10 11 12 13 14 15 16 17 下一页 末页