摘要:
链接:http://news.cnblogs.com/n/106983/回答问题之前先来看看什么是压缩。当你有天走在路上,碰见熟人对你说:“吃了?”你一定知道他是在打招呼,既不是要请客也不是让你“没吃赶紧回家吃 去”。这一句简单的“吃了”是礼貌和问好的体现,也是一种信息的压缩。笼统地说,把一系列已有信息通过一定方法处理,使得其长度缩短,并且信息含量基本或者完全不变,就称之为压缩。 计算机上的压缩过程 我们都知道,计算机采用的是2进制系统。一个连续的n位二进制数集,就可以用来表示 2 n 个字符。目前的国际标准是ASCII码:用一个字节即8位数的2进制码,来表示各种字符和字母。 现在我们只使用2 阅读全文
随笔档案-2011年06月
STL源码剖析之仿函数简介
2011-06-29 21:33 by Aga.J, 843 阅读, 收藏,
摘要:
1 仿函数也称为函数对象,是一种具有函数特质的对象。调用者可以像函数一样的使用这些对象,例如在很多STL算法中,都可以看到,我们可以将一个方法作为模板内的参数传入到算法实现中,例如sort的时候我们可以根据我们传入的自定义的compare函数来进行比较排序。解决办法是使用函数指针,或者是将这个“操作”设计为一个所谓的仿函数,再用这个仿函数生成一个对象,并用这个对象作为算法的一个参数。 2 那为什么STL不使用函数指针而使用仿函数呢,因为函数指针不能满足STL对抽象性的要求,无法和STL的其他组件搭配以产生更加灵活的效果。 3 怎样实现这样一个仿函数呢?(可以直接使用对象名来使用函数)?答: 阅读全文
STL源码剖析之关联式容器底层的又一实现:Hash
2011-06-29 20:43 by Aga.J, 878 阅读, 收藏,
摘要:
281 hastable二叉搜索树再插入,删除,查找具有对数的平均时间,但是它是基于这样的假设,插入的数据具有一定的随机性,不然的话,如果是有序元素的插入,会使得二叉搜索树严重不平衡。而hashtable这种数据结构,在插入,删除,查找也有常数平均时间,而不依赖于插入元素的随机性,是以统计为基础的。Hash table可以提供对任何named item的存取和删除操作,因为所有被操作的对象都是named,所以hash table可以看做是一个dictionary。如何避免使用一个大得换谬的array呢,办法之一就是使用某种映射函数,将大数映射为小数,这样一来,array就不需要特别的大,但是可 阅读全文
STL源码剖析之关联式容器map
2011-06-28 21:34 by Aga.J, 1075 阅读, 收藏,
摘要:
257 MapMap中所有元素都是以 pair的形式出现,《key,value》, 然后所有元素都会根据key来排序,当然,key不可以有相同的,而value可以有相同的。Template<class T1, class T2> //classT1 for key, ClassT2 for valueStruct pair{Typedef T1 first_type;Typedef T2 second_type;T1 first;T2 second;Pair() : fisrt(T1()), second( T2()) {}Pair( const T1& a , const 阅读全文
文档在项目过程中是最最重要的吗?我觉得是!
2011-06-27 11:48 by Aga.J, 351 阅读, 收藏,
摘要:
有个问题我一直搞不懂,软件工程中对软件的管理十分重视,对软件过程的控制十分控制,例如RUP开发过程中,每个里程碑都有一个标志性产物,但是在实际开发中,周围所有人都不重视文档,我细心编写的文档也没办法能够让别人理解,不是因为我写的不好,我很喜欢写设计文档和总结性文档,我觉得文档做出来了,项目也就出来了,大家不能理解我的文档是因为大家根本看不起文档,在他们眼里技术和实现才是一切,结果他们的代码一团糟,他们带的项目的过程一团糟。最近的两个项目里面,我都担任了项目经理,带着团队的人员体验整个项目过程(我很重视文档),但是组员并不重视,也不理解我的意图,而且在之前的实习面试过程中,我也发现面试官完全没. 阅读全文
A*算法理论与实践
2011-06-17 15:44 by Aga.J, 438 阅读, 收藏,
摘要:
连接:http://www.java3z.com/cwbwebhome/article/article2/2825.html文章有带flash展示,可以看原文连接。[摘要] 本文介绍了启发式算法中一种重要而有效的算法------A*算法的理论,并给出了寻路问题的交互式实现。[关键词] A*,启发式算法,最优路径,交互,AS2[历史回顾]P. E. Hart , N. J. Nilsson 和B. Raphael共同发表了一篇在启发式搜索方面有深远影响力的论文:“P. E. Hart, N. J. Nilsson, and B. Raphael. A formal basis for the h 阅读全文
浅析Node.js:一个“编码就绪”服务器
2011-06-17 10:43 by Aga.J, 232 阅读, 收藏,
摘要:
连接:http://sd.csdn.net/a/20110617/299900.html 导读:Node是一个服务器端JavaScript解释器,它将改变服务器应该如何工作的概念。它的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个(只有一个)物理机的连接代码。本文探究了Node.js能解决哪些问题,它如何工作,如何运行一个简单应用程序,最后,Node何时是以及何时不是一... 阅读全文
UML中用例图的extend画法
2011-06-16 11:48 by Aga.J, 1143 阅读, 收藏,
摘要:
今天被一个女同学提出,我的用例图的extend画的方向反了。。。。。想了一下,焕然大悟,我那时候上UML建模课的时候就跟全班同学强调过这个问题。。。现在自己却犯错了。。。。 阅读全文
J2EE学习笔记:第五天 EJB
2011-06-13 00:29 by Aga.J, 2060 阅读, 收藏,
摘要:
(内容安排较乱 , 仅作本人个人学习笔记)1 EJB概述 EJB实际上是一个被管理的组件,存在于J2EE容器中,由J2EE容器负责创建,控制,销毁,并控制当前存在的EJB数量和EJB所用的资源(内存和数据库连接等)。 每个容器维护一个分配给客户端的EJB实例池,当客户端不再需要EJB时,该实例将会被返回到EJB实例池中,并释放其资源,而在负载过重的情况下,即使客户端在使用EJB,EJB实例也会被容器强制返回实例池,但是这个实例还可以给其他客户端使用,而当客户端向EJB发起另一个请求时,容器会重新建立初始EJB实例来响应这个请求,也就是说一些EJB实例和他们所使用的资源可以在多个客户端之间进行共 阅读全文
STL源码剖析之关联式容器set的底层实现RB-tree
2011-06-12 15:47 by Aga.J, 2600 阅读, 收藏,
摘要:
57RB-tree红黑树:(满足以下条件)1 二叉搜索树2 每个节点不是红色就是黑色3 根节点一定为黑色4 如果节点为红,那么子节点必须为黑(如果节点为黑,子节点可以为黑也可以为红)(新增加的节点既然一定要为红色,那么其父节点一定要为黑色【根据第5条】)5 任意一个节点到树尾端的任何路径,所含的黑节点数必须“相等”(暗示着新增加的节点一定只能是红色,可以通过调换其他节点的颜色来做到满足) 总结起来就是说,在插入删除等操作过程中,必须维护这样的树结构:新插入的节点只能是红色,并且只能挂在黑色节点上,如果不能满足这样的情况,就必须旋转树,重新绘制树节点的颜色。1) 插入节点 这里想要插入3,8,3 阅读全文
STL源码剖析之关联式容器基础知识
2011-06-12 10:11 by Aga.J, 367 阅读, 收藏,
摘要:
54 标准的STL关联式容器有 set (multiset)和 map(multimap),他们底层的机制都是RB-tree即红黑树来实现。还有其他 hash_table, hash_set,hash_map,hash_multiset,hash_multimap(他们的底层都是以hash_table来实现)RB-tree Set (RB_SET) Map (RB_MAP) Multiset (RB_MULTISET) Multimap (RB_MULTIMAP)Hashtable Hash_set Hash_map Hash_multiset Hash_mutimap 关联式容器,概念上类似 阅读全文
J2EE学习笔记:第四天
2011-06-11 16:44 by Aga.J, 583 阅读, 收藏,
摘要:
5 使用JNDI使用JNDI,首先需要获取一个 添加或者查找名字 的 环境, 代表整个名称空间的环境叫做initial environment。 由一个名为javax.naming.InitalContext的类描述Context ctx = new InitalContext();Context对象描述的是一个可以用来查找对象添加对象的 环境。通过这个环境可以获取和这个环境相关的对象的列表。这个初始化调用会抛出初始化失败等异常,编写代码过程中需要捕获并处理这些异常主要的异常包括:(1) javax.naming.CommunicationException:Can not find Seri 阅读全文
STL源码剖析之序列式容器Heap及Priority Queue
2011-06-11 09:55 by Aga.J, 719 阅读, 收藏,
摘要:
50 heap Heap的背景是建立在优先队列的基础上,priority queue允许我们任意的插入一个元素,但是会自动将元素进行排序,使得取出时一定是从优先级最高的元素开始取。我们可以考虑使用list这种数据结构完成priority queue,也就是说,我们可以轻松的完成插入(因为list其实是线性链表),但是我们要取得list中的极值时,则需要对整个list进行遍历。或者我们可以这样考虑,将元素插到list的合适位置,这样一来,虽然很容易取得极值,但是我们的搜索插入也是需要线性搜索。 很自然的想到二分法来减少复杂度,也就是使用二叉搜索树,这样插入和求极值都值需要O(logN)的复杂度, 阅读全文
STL源码剖析之Deque的Adapter
2011-06-11 09:16 by Aga.J, 425 阅读, 收藏,
摘要:
46Stack不允许遍历,只有一个出口,只允许对最顶端的元素进行操作。SGI STL默认以deque作为stack的底层结构。为什么要使用deque作为stack的底层结构呢?因为deque可以很容易的封住其中某个方向的接口,而且deque便于扩容,底层结合了list和vector,比起单一的使用list或者vector来实现stack更加方便高效。由于stack是依赖底层容器完成其功能的,所以这种“修改某个物件的接口,形成另一种新的接口”的,叫做adapter。Template<class T, class Sequence=deque<T> > Class stac 阅读全文
Why Git is Better than X
2011-06-10 23:25 by Aga.J, 1109 阅读, 收藏,
摘要:
转发自:http://zh-cn.whygitisbetterthanx.com/#easy-to-learn最近我花费了大量时间为 Gitsters 辩护以对抗那些 fanboyism, bandwagonism 以及 koolaid-thirst 的指责。 为此我建设了此网站来说明大家为什么要从 X 转换至 Git,以及为何你也应该这么做。点击任何一个原因展开以查看详情。全部展开|全部折叠hgbzrsvnperforce便宜的本地分支使 Git 从几乎所有 SCM 中脱颖而出并出并且最吸引人的特色,恐怕非它的分支模型莫属。 它完全不同于我在此用于比较的所有其他模型,那些模型所推荐的最佳分支 阅读全文
10年软件开发教会我最重要的10件事
2011-06-10 23:12 by Aga.J, 342 阅读, 收藏,
摘要:
0. “面向对象”比你想象的要难得多 也许只有我有这种想法,不过我曾经以为计算机科学课上学过的“面向对象”是很简单的东西。我的意思是,创建一些类来模拟现实世界能有多难啊?其实,那还真是挺难的。 十年之后,我仍然在学习如何合理地建模。我后悔以前我没有花更多的时间来学习面向对象和设计模式。优秀的建模技术对于每一个开发团队都是非常有价值的。 1. 软件开发的难点在于沟通 这里的沟通是指与人的沟通,而不是socket编程。有时你的确会遇上棘手的技术问题,但是这种情况根本不常见。常见的问题在于那些你和项目经理之间的、你和客户之间的、还有你和其他开发者之间的误解。培养你的软技能吧。 2. 学会拒绝 当我. 阅读全文
STL源码剖析之序列式容器Deque
2011-06-09 19:10 by Aga.J, 1853 阅读, 收藏,
摘要:
37 deque Vector是单向开口的连续线性空间,用户只能在vector尾部进行插入删除操作。(当然它也允许在某个pos处插入元素,但是要注意到Vector的底层实现是数组,所以过多或者频繁的在非队尾的位置插入会有性能上的消耗) 而deque是一种双向开口的连续线性空间,允许我们在头尾两端操作。所以我们需要保证deque可以在常数时间内对头和尾元素进行插入或者删除。 Deque还有一个明显的与Vector不同的特点,就是它没有capacity的概念,它是动态地用分段连续的空间组合起来的,随时可以增加一段新的空间并连接起来,而为了隐藏deque的这些底层细节(分段连续的空间组成---需要一 阅读全文
数据挖掘:概念与技术 学习笔记 第一章
2011-06-08 21:33 by Aga.J, 3403 阅读, 收藏,
摘要:
1 数据挖掘进化过程:数据收集和数据库创建 ---- 数据管理(数据存储,提取,事务处理) --- 数据分析与理解(数据仓库和数据挖掘)可以使用分层的结构来表示这个进化过程(下层使用上层服务):2 海量数据 需要 数据挖掘工具进行数据分析, 发现重要的数据模式3 知识发现的过程:(1)数据清理(消除噪音或者不一致的数据)(2)数据集成(多种数据源组合一起)(3)数据选择(从数据库中提取和分析任务相关的数据)(4)数据变换(将数据变换成统一的适合挖掘的形式)(5)数据挖掘(使用智能方法提取数据模式)(6)模式评估(根据某种兴趣度度量,识别提供知识的真正有趣的模式)(7)知识表示(可视化知识表示) 阅读全文
J2EE学习笔记:第三天
2011-06-08 14:48 by Aga.J, 637 阅读, 收藏,
摘要:
1 java 命名与目录服务 Java 命名和目录接口 Java Naming and Directory Interface JNDI JNDI最简单的形式就是用来“查找”通过J2EE服务器注册的资源。 JNDI的高级使用支持对java对象和其他信息的复杂的存储和检索。2 什么是命名和目录服务 命名服务提供了一种为对象命名的机制,这样我们就可以不需要知道对象的具体位置而可以很方便的获取和使用对象,这类似于我们的web访问,我们可以定位到任何网络能够访问到的机器上的对象。 命名服务器要求我们要有正确的环境获取(obtaining a context),只有在正确的环境中才能找到想要的名字。 命 阅读全文
又见作业之无线点餐系统项目经理经验总结
2011-06-07 21:36 by Aga.J, 1024 阅读, 收藏,
摘要:
本次实验涉及到移动手机,Web服务平台,桌面应用程序,GIS应用的开发,是一个比较有挑战性的项目。 本人担任项目小组组长,负责完成项目需求的获取和分析,项目管理,项目开发计划设定,项目开发概要设计等关键任务。此次担任项目经理的机会很好地让我将课上学习到的项目管理知识,项目计划知识,项目开发概要分析知识和过去项目管理和开发经验结合起来,并应用到实际项目中去,很好的完成了项目要求和既定目标。 在项目初期,主要是需求的获取,我详细的分析了项目要求文档,进行项目的业务建模和功能用例分析,并编写相应文档。需求文档完成后,小组内召开第一次会议,针对项目需求文档进行项目目标和项目范围确认,并进行项目分工(. 阅读全文
STL源码剖析之序列式容器list
2011-06-07 13:48 by Aga.J, 926 阅读, 收藏,
摘要:
33 ListList是一个紧凑型的容器,每次插入或者删除一个元素,就需要配置或者释放一个元素空间,并且,对于任何位置的元素插入或元素移除,list都是【常数】时间List的节点和List本身是不同的结构(这和vector一致)Template<class T>Struct __list_node{Typedef void* void_pointer; // typedef __list_node<T>* pointer;Void_pointer prev;Void_pointer next;T data;} 可以看出stl的list是基于链表的。因为list不是一种基 阅读全文
STL源码剖析之序列式容器vector
2011-06-07 10:00 by Aga.J, 1791 阅读, 收藏,
摘要:
常见的数据结构:array,list,tree,stack,queue,hash table,set,map 可以将上面的数据结构按照数据组织形式分为 sequence 和 associative两种类型。28 序列式容器,其中的元素都是“可序”的,C++语言提供了array,而STL提供了vector,list,deque( stack,queue ),priority-queue,而其中 stack和queue是在deque基础上改进,所以实际上是一种adapter。29 vector Vector的数据安排和操作方式 和 常见的array类型很像,但是唯一的不同就在于vector的空间. 阅读全文
J2EE学习笔记:第二天
2011-06-05 17:47 by Aga.J, 495 阅读, 收藏,
摘要:
11 J2EE环境相关知识安装JDK,设置必要的路径(1) 环境变量:J2EE_HOME=jdk位置,作为其他变量地址的前缀(2) PATH变量:指向JDK提供的工具(如javac)的地址,%J2EE_HOME%\bin(3) CLASSPATH变量:添加J2EE JARJ2EE 应用程序所有的文档和类文件都在SDK包内。详细可参见jdk文件下的readme的html文件(D:\Java\jdk1.6.0_23\README_zh_CN.html),主要介绍了以下内容:(1)JavaTM Platform, Standard Edition Development Kit (JDKTM)。JD 阅读全文
STL源码剖析之traits技巧(下)
2011-06-05 10:45 by Aga.J, 1251 阅读, 收藏,
摘要:
21 Traits方法:可以用来萃取迭代器的特性(接着上一篇文章说到原生指针与traits技巧的使用,这里拓展了一点其他类型的使用方法,和上一篇文章介绍的方法一样。)Template<class I>Struct iterator_traits //输入带有value_type的指针{Typedef typename I::value_type value_type;}Template<class I>Typename Iterator_traits<I>::value_typeFunc(I ite){Return *ite;}Template<cla 阅读全文
STL源码剖析之迭代器的概念和traits编程的技法(上)
2011-06-05 10:06 by Aga.J, 1044 阅读, 收藏,
摘要:
15 Iterator是一种抽象的设计概念: design pattern中有一种iterator的模式: 提供一种外部方法,使之可以依序访问聚合器所含的各个元素,而又无需暴露该聚合物的内部表述方式(也就是说做到和聚合物的类型无关); STL的中心思想: 将数据容器和算法分开,彼此独立设计,最后使用粘合剂将他们粘合起来。要做到 容器的泛型化 我们可以借助class template,要做到 算法的泛型化,我们可以借助 function template。而他们之间的交合,就需要细致考虑。 下面是三者之间完美结合的例子Template<class InputIterator, class 阅读全文
J2EE学习笔记:第一天
2011-06-04 16:23 by Aga.J, 586 阅读, 收藏,
摘要:
21天学通J2EE第一天挑战N层开发1 单层应用程序的缺点:因为表示层,业务层,数据访问层都被放置在同一个应用程序中,所以一旦程序功能的任何部分发生了变化,都潜在的影响其他部分,需要重新编译代码中的很好多部分,增加了添加或者修改功能的开销。尤其是在多用户的情况下,软件新版本的推行会变得越来越复杂。2 向二层开发进军使用二层开发的主要目的是不同的机器上的多个应用程序可以共享数据,所以我们可以架设一个单独的数据库服务器。这样一来,数据访问层中的任何改动都不会影响应用程序中的表示层和业务层。同时,使用这种分离方式,还可以让我们很简单的使用另一个不同的数据库和不同的代码来替代整个第二个物理层,只要和第 阅读全文
STL源码剖析之配置器(下)
2011-06-04 13:34 by Aga.J, 406 阅读, 收藏,
摘要:
11 因为考虑到内存碎片的情况,所以SGI采用【双层级配置器】,第一级配置器直接使用malloc和free。而第二级则: 当 申请区超过128 byte 时,调用一级配置器。当小于128时,采用复杂的memory pool(内存池),下面介绍SGI的方法(有其自己的空间分配等)#ifdef __USE_MALLOC…Typedef __malloc_alloc_template<0> malloc_alloc;Typedef malloc_alloc alloc; // 令alloc为第一级配置器#elseTypedef __default_alloc_template<__ 阅读全文
STL源码剖析之STL简介与STL配置器
2011-06-04 10:56 by Aga.J, 431 阅读, 收藏,
摘要:
1 从底层来看,STL带给我们一套具有实用价值的零部件,以及一个整合起来的整体,STL中组件之间耦合度很低,组件之间可以互相关联整合。2 STL以泛型思维,描述了很多抽象概念,以抽象概念为主体而不是依赖于实际的类3 STL六大组件: 容器 : 数据结构(容纳数据)是一种class template 算法 : 常用的算法,是一种function template 迭代器:容器和算法之间的胶合剂,也是一种泛型组件,“泛型指针”,每个容器都有自己的迭代器,只有容器自己才知道如何使用自己的迭代器来完成迭代。 仿函数:类静态函数 适配器:修饰容器或者仿函数或者迭代器接口的东西,也就是改变了被适配的东西, 阅读全文
又见作业
2011-06-01 10:05 by Aga.J, 392 阅读, 收藏,
摘要:
作业要求使用LoadRunner测试一个系统,所以选了jforum来测,下面是jforum的基本安装过程,做下笔记。Jforum安装详解1 搭建安装环境的基础设施 Jdk Tomcat MySql2 下载jornum http://www.jforum.net/index.jsp3 解压下载到的jforum-2.1.9.zip到你的tomcat的webapp下,并改名为jforum(可以改其他名字,记住这个路径就好)4 在MySql中建立数据库 jforum,然后从刚才解压出来的jforum-2.1.9文件(如果你已经重命名为jforum,那就是jforum里面找)按照这个路径查找\WEB-I 阅读全文
浙公网安备 33010602011771号