摘要: 周末在家闲着没事,开始倒腾github,很早就知道github开源社区了,但是真正开始折腾还是昨天开始的。 github是一个著名的开源社区,程序员们可以把自己的项目放到github上共享,同时github也提供了分布式版本控制的功能,很多IDE不是集成了git就是提供了有关git的插件。笔者并没有太深入的就git丰富的shell进行探讨,还是从简单的环境搭建开始说吧: 首先要到github.com注册git账号,在此就不详述了。注册之后可以更换头像,git的头像是放在avatar.com托管的,github再从avatar的api获取头像。 其次谈谈关于git的两个windows下... 阅读全文
posted @ 2013-04-14 22:01 FingerDancing 阅读(870) 评论(2) 推荐(1) 编辑
摘要: 最近这一个月完成了自己的第一个java web项目,虽然进度很慢,但是中间确实学到了不少东西,深刻体会到了自己看几个月书都不如做一个项目来的实在。这个项目自己主要负责的是JSP页面、JS脚本、CSS样式表的编写,虽然主要做的是前端,但是在设计前端后台交互功能时,对MVC架构和数据库又多了一分了解,这一个月的时间,自己在技术上也确实成长了不少。 下面分成几块总结一下自己的这个项目中的心得吧:项目开发流程:从确认需求开始,到原型设计,再到原型测试,这些都没什么说的了,主要是刚开始开发前端JSP页面时,自己走了很多弯路,想到有什么页面就写什么页面,GET和POST的路径也是随心所欲,想到什么名... 阅读全文
posted @ 2013-04-14 18:25 FingerDancing 阅读(2105) 评论(0) 推荐(0) 编辑
摘要: 对于全局变量的声明,这两天一直在写双链表的代码,是采用《算法导论》中定义了哨兵的伪代码实现的。我的具体思路这样的,在一个list.h文件中声明一个全局指针变量 nil,然后在在list.cpp和mian.cpp中调用nil,程序可以编译通过,运行时也没有报错,但是确总是得不到预期的结果。查阅了很多相当相 关资料,发现犯了一个很低级的错误,那就是全局变量声明关键字static和extern的使用。static声明的全局变量的作用域是一个文件之内,而extern定义的全局变量只要在其他文件中声明,是可以跨文件使用的。所以说,想要定义一个跨文件使用的全局变量时应该用extern定义。对于参数传递的一 阅读全文
posted @ 2013-04-14 18:07 FingerDancing 阅读(467) 评论(0) 推荐(0) 编辑
摘要: 先简单介绍一下二叉查找树吧,二叉查找树就是具有左子树的任一结点都不大于根结点,右子树的任一结点都不小于根结点这一性质的二叉树。对于它删除一个结点的算法,书上是分三种情况讨论的。 首先,要删除的结点z没有儿子,这种情况很简单,z是它父亲结点的哪个儿子,就让指向那个儿子的指针指空,z指向父亲结点的指针指空就可以了。 其次,要删除的结点z只有一个儿子,那么以z为根结点的子树,要么都不大于z的父亲结点,要么都不小于z的父亲结点,这时候让z的儿子中指向z的指针改指向z的父亲结点,z是它父亲结点的哪个儿子,就让指向那个儿子的指针指向z的儿子,再处理一下z的指针就可以了。 最后,最删除的结点z有两... 阅读全文
posted @ 2013-04-14 18:02 FingerDancing 阅读(1146) 评论(0) 推荐(0) 编辑
摘要: 首先红黑树是一种接近平衡的二叉查找树,它的的性质如下:每个结点或是红的或是黑的。(也就是说,delete一个黑色结点y之后x结点带有双重颜色红黑或者黑黑,那么应该去掉一层红色或黑色,直接将x涂黑或者在根结点到x的路径上增加一个黑色结点,增加的方法后面会提到)根结点是黑的。(这是一个必须注意的性质,因为空红黑树根结点是nil哨兵结点,哨兵结点必须是黑色的)每个叶节点(nil结点)是黑的。(nil一定是黑色的,nil是红色的,将有可能会违反性质4)如果一个结点是红色的,则它的两个儿子都是黑的(也就是说红黑树中不可能出现连着的两个结点是红色的情况,一条路径至少是全黑的,至多是红黑交替的,也就解释.. 阅读全文
posted @ 2013-04-14 17:57 FingerDancing 阅读(1894) 评论(0) 推荐(0) 编辑
摘要: 我们都知道,“=”等号操作符在编码语言中是个神奇的符号,因为它表示赋值操作而不是单纯的“等于”。我们也知道,“=”进行赋值操作时,有左值和右值的说法,当然左值和右值这里就不详述了,这个不是本文的重点。那么,下面,简单对java中的“=”操作符进行一下简单的说明: 首先,java中的数据类型分为两大类,基本类型和引用类型,基本类型:int、byte、char、short、long、float、double、boolean。引用类型:String、Array、Object。 那么先比较下面两段代码:1.1 int a = 3;2 int b = a;3 b++;4 System.out.p... 阅读全文
posted @ 2013-04-14 17:34 FingerDancing 阅读(3772) 评论(0) 推荐(0) 编辑
摘要: 在总结浮动与定位之前,先引入一个概念,就是HTML中文档流,文档流简单的理解就是HTML中的元素按照代码的先后顺序以从左到右,从上到下的顺序排列,一个接一个的排列,也就成为了一个流stream,每个元素都在文档流中都占据一定的大小、空间,改变一个元素的布局会直接影响其他元素的布局。 而浮动与定位中的绝对定位都会使元素脱离文档流,什么意思呢?就是说如果一个元素被设置了浮动或绝对定位属性,那么这个元素好像脱离HTML文档一样,而其余的元素重新按照正常的文档流排列。浮动:浮动会使元素脱离正常的文档流,浮动的块状元素元素是以浮动元素所在行为基准,并且按照不合并margin的方式来进行浮动的。浮动... 阅读全文
posted @ 2013-04-14 17:22 FingerDancing 阅读(621) 评论(0) 推荐(0) 编辑
摘要: 从开始接触HTML+CSS布局开始,也有将近半年时间了,除去中间打酱油的三四个月,自己也大概在上面花了一个月的功夫,时间不长,暂且把学过的东西总结一下。 首先谈谈HTML的元素,主要分三类,块状元素、内联元素和内联块状元素。块状元素display:block的特性是水平拉伸,垂直包裹,可以设置宽度和高度。对于拉伸我是这样理解的,比如先定义了页面的body,一般情况下body的宽度差不多等于页面的宽度(有8px的margin),这时如果你定义了一个p元素的话,如果未设置p元素的宽度,那么p元素会自动拉伸至body的宽度。包裹的意思就是p的垂直高度恰好能包住其中的文本内容,你写了几行文字就是... 阅读全文
posted @ 2013-04-14 17:18 FingerDancing 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 首先,我们看下面两段程序:(1).1 int[] a = {1, 2, 3, 4};2 int[] b = new int[4];3 b = a;(2).1 int[] a = {1, 2, 3, 4};2 int[] b = new int[4];3 int i = 0;4 for(int num:a){5 b[i++] = num;6 } 赋值之后,数组b的值都是{1, 2, 3, 4},但是这两种方法是有实质区别的。 首先,数组的初始化过程是这样的:对于int[] a;首先定义一个数组名a,然后将a这个变量进栈,当然这里没有对a进行初始化,所以a是一个空引用。对于int[... 阅读全文
posted @ 2013-04-14 17:04 FingerDancing 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 为了更好的理解本文,请预先学习原型、原型链的基础知识。 那么先看看下面几道坑爹的判断题吧1 Object.__proto__ == Object.prototype2 Function.__proto__ == Function.prototype3 Object instanceof Function4 Function instanceof Object 可能很多人第一眼就懵了(包括笔者),感觉有点像应试教育的判断题,别着急,慢慢来,首先让我们看看一句再普通不过的代码,var a = new A();用脚趾都知道是在内存中创建了A的一个实例a,那么在创建这个实例的过程中new关键字... 阅读全文
posted @ 2013-04-14 16:56 FingerDancing 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 首先,看下面这段代码: 1 var name = "The Window"; 2 var object = { 3 name : "My Object"; 4 getNameFunc : function(){ 5 return function(){ 6 return this.name; 7 }; 8 } 9 };10 alert(object.getNameFunc()());最后的结果是"The Window"而不是"The Object",为何呢?在分析这段代码前,首先简单说一下闭包:当内部函数在... 阅读全文
posted @ 2013-04-14 14:58 FingerDancing 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 原新浪博客链接:http://blog.sina.com.cn/nifengfeixing2009 所有博客均博主原创,欢迎留言回复讨论 另附上github:https://github.com/icefox0801/ 您的关注是博主成长的最大动力,谢谢! 阅读全文
posted @ 2013-04-14 14:05 FingerDancing 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 在写这篇文章之前,首先说点题外话,其实自己本来不想学这么多编程语言的,原本想把精通一门作为目标,但是由于工作的原因,现在又不得不接触了java Spring MVC框架,开始学Spring的时候,对依赖注入与控制反转产生了一些疑惑,通过了查阅资料和编程实践,将自己的一些学习心得总结如下: 在面向对象编程的时候,我们有时候会碰到这样的问题,高层模块的程序实现调用底层模块,当底层模块的对象类型改变时我们不得不改变高层模块的程序源代码,例如:1 public class WhereToGo{2 private Male MrKing = new Male();3 public ... 阅读全文
posted @ 2013-04-14 13:59 FingerDancing 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 今天在编写双链表代码时遇到了这样的困惑:函数参数传递时形参声明为1 strunct queue *&Q;想了半天*&Q的含义,百思不得其解,于是查阅了很多关于指针和引用的资料,总算解决了困惑。首先,简单回顾一下指针和引用这两种运算。1 int val;2 int *pv = &val; //指针声明3 int &rv = val; //引用声明当对引用类型初始化时,表示rv与val相关联,也可以理解为rv是val的别名,rv和val共用一块内存,地址相同,值相同。而&val中&出现在赋值号右边后成为了右值表达式,是一个常量,表示val的地址,这样 阅读全文
posted @ 2013-04-14 13:46 FingerDancing 阅读(692) 评论(0) 推荐(0) 编辑
摘要: 这段时间学习了算法导论中前八章的几种排序方法,有插入排序、合并排序、堆排序、快速排序、计数排序、基数排序和桶排序,其中插入排序、合并排序、堆排序和快速排序都属于比较排序,即算法的核心是比较数组的两个元素的大小来确定先后关系,基数排序、计数排序和桶排序属于线性时间排序,即时间呈输入规模的线性增长。是否为比较排序关系到排序方法的时间复杂度。以下只是学习过程中的一些总结,如有错误,欢迎釜正~~原地排序:原地排序是通过不申请额外的内存空间来进行排序,每次排序都没有或者有常数(1)个的元素存储在数组之外。1.插入排序,在排序的过程中用一个额外的变量key(也可以不申请)来保存当前需要比较大小的元素,然后 阅读全文
posted @ 2013-04-14 13:39 FingerDancing 阅读(264) 评论(0) 推荐(0) 编辑