- 博客(64)
- 资源 (2)
- 收藏
- 关注
原创 Spring
SpringSpring 是啥?Spring是个大家都听过的东西,或者在许多web项目中都有看到过的东西,然而,要清楚地说出Spring是个啥?Spring存在的意义?可能大多数人只能够照本宣科的说出一些。我希望能够更简单的去解释Spring。其实,在我看来,Spring的众多特性,想要达到的目的是:让开发者更好的基于POJO编程。将重复性、依赖性的代码从类中剥离出来。 什么是上面所说的POJO
2016-05-08 20:33:17 715
原创 也讲Java NIO
也讲Java NIO一点开场白百度搜索java nio,前面的几个帖子总是从各种基础概念介绍起,通道、缓冲区、选择器… 然后看着看着就晕了,所以,经过一晚上的研究,我想从自己的理解讲讲nio。一、单线程的通信在没有nio之前,java妥妥的可以进行CS项目间的通信,来个最简单的例子。(懒得写,抄了段)server 端package nio.nonio;import java.io.BufferedR
2016-05-08 20:31:07 1340
原创 Java虚拟机
java虚拟机Java支持平台无关性、安全性和网络移动性。而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么。正是得益于Java虚拟机,它号称的“一次编译,到处运行”才能有所保障。java虚拟机主要完成了几大任务:将java文件编译为.class文件、解析并执行.class,借助他,使得java能够实现平台无关的特性。实现了自动
2016-03-30 21:25:29 1047
原创 java多线程设计模
Edit一、基本介绍二、几个重要的关键字1. synchronize关键1) 临界方法。2) 临界区。2. wait /notify/notifyAll 方法3. notice三、一些主要的模式1. Guarded Suspension Pattern2.Producer-Consumer Pattern共享区3.Work
2016-02-19 22:03:37 637
原创 从map到堆栈
下面这些问题是从map的一些思考到堆栈的一些内容,自问自答,为了让自己理解更深一些。1、问:Map这个数据结构,有几种实现方式? HashMap和TreeMap。 HashMap是使用数组+链表的方式实现的。在冲突少的情况下,O(1)的时间就能够定位到节点,效率杠杠的。 TreeMap是使用红黑树来实现的,由于红黑树是平衡二叉树查找树,所以,获取数据
2015-09-13 17:11:03 3900
原创 Java NIO
Java NIO NIO是New IO的缩写,顾名思义,是用于输入输出的新的API,那么,这个NIO相较于旧的IO有什么差别呢? 1、“阻塞”的通信机制 在原有的IO下,我们要与A进行通信时,会怎么做呢?先创建一个线程,然后建立连接,然后不断轮询等待接收消息。当需要与另一个B进行通信时,仍然先创建一个线程,然后建立连接(accept),不断轮询等待接收消息(read)…
2013-10-21 21:30:39 1852
原创 MapReduce 流程详述
一、MapReduce的提出、介绍MapReduce 是一个编程模型,也是一个处理和生成超大数据集的算法模型的相关实现。用户首先创建一个 Map函数处理一个基于key/value pair 的数据集合,输出中间的基于 key/value pair 的数据集合;然后再创建一个 Reduce 函数用来合并所有的具有相同中间 key 值的中间 value 值。因此,可以将许多数据处理问题,转化为 M
2013-06-04 14:29:59 2005
原创 《大数据时代》读后感
1、实体物联网与虚拟物联网 曾几何时,物联网的概念闹得风生水起,庞大的物流网能够让世间大量的物体,都能够被检测 并联网,包括了人、车、房等一切能够被联网的物体,这些物体都能够以种方式被感知他的存在,并对其信息记录在案,以供使用。在若干年前,这还是一种看似遥不可及的事物,要对每个物体都贴上一个所谓的RFID的标签,显得不切实际。如今,随着手机的大量使用,人类本身也被加入了物联网中。为什
2013-05-18 16:00:49 7979
原创 一个BUG引发的...
昨日,在使用Hadoop平台进行开发的时候,出现了一个令我百思不得其解的问题: 解析字符串的时候,在context.write(key,value)之后,字符串居然会神奇的消失,写入文件的只有key的前一部分,而后面的包括value的值都神奇的消失了。理应说,就算是我key的字符串问题,那么value值也应该会写入的,但居然消失了!于是,开始如下假设:
2013-04-26 10:23:02 1415
原创 分布式处理框架 hadoop 和 storm
大数据的时代,已经来临有段时间了,期间,各类的数据处理的框架也是有不少。 离线数据批处理模型 Hadoop,大家一定不会陌生。使用了Google的Map/Reduce模型的Hadoop框架,能够将大量的廉价机器作为服务的集群,提供分布式计算的服务。Map/Reduce模型采用分而治之的理念,便意味着面对的群体是大批量的数据处理。Hadoop下的Map/Red
2013-01-03 09:59:09 3415
原创 设计模式(十三)——代理模式(Proxy)
一、理解: 代理模式,用于为其他对象提供一种代理以控制对该对象的访问。 为什么不直接使用某个对象,却要“画蛇添足”的在外部增加一层,间接对其进行访问?考虑下面的一些情况:1、某个图形界面初始化时,实例化某些对象需要较长时间。但我们又不希望界面停顿太久,因此,我们将这些对象的初始化时间进行控制,延迟到第一次使用的时候。2、对于不同用户,希望提供某个对象的不同方法,以控制该
2012-12-19 17:35:51 1004
原创 JVM系列(五)——Java线程
如果没有多线程的出现,处理器的处理效率将会是很低的。试想象一个图形化界面,如果只有一个线程,那么每点击一次界面的操作,特别是费时的操作,界面就需要一阵子的停顿,待后台处理完后,才能够继续操作。这该是多差的用户体验啊。Java提供了较为成熟的内存模型,来支持多线程的运作。为什么需要好的内存模型呢?因为在多线程中,最难以处理的就是各个变量的安全问题。例如,一个变量在某个线程中修改了,而另一个线程又
2012-12-15 10:59:33 760
原创 JVM系列(四)——优化
JVM要执行一个java文件,需要经过两步:编译、执行。在这两个过程中,JVM都会进行优化,编译时的优化称为早期(编译期)优化,发生使用javac将.java文件编译为.class文件的时候或者静态提前编译器(AOT编译期)直接把.java文件编译成本地机器码的优化,本文中讨论的是前者。执行时的优化称为晚期(运行期)优化,是使用即时编译器(JIT编译期),将.class 文件的字节码转变为机器
2012-12-09 14:26:33 1027
原创 设计模式之实践
学习设计模式,不该只是纸上谈兵,在实际项目中的应用是很重要的。单例模式与工程模式已经使用的过于泛滥了,前几日在面试中,被问到平时在项目中用到了哪些设计模式时,竟无法说出,都怪在平时不注意对项目中用到的模式进行总结所致。因此,今日,将在项目中用过的设计模式进行一个总结。1、单例模式。一般项目里面都会用到,涉及到有一些工具类,用于提供某些静态方法,便会使用到单例模式。2、抽象工厂模式。一般说道
2012-12-03 17:11:05 1110
原创 JVM系列(三)——方法的调用
Java代码在执行的时候,分为解释执行(通过解释器)和编译执行(通过编译器) 一、栈帧栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,在每次进入一个方法的时候,都会生成该方法的栈帧,并入栈。当方法执行完时,则将对应的栈帧出栈。每个方法对应一个栈帧,每次只有栈顶的栈帧有效,这样,各个方法的调用、内部变量的使用便不会相互干扰。 在一个栈帧中,包含了局部
2012-11-08 20:35:45 935
原创 hadoop 源码阅读之io篇
从基础的IO包开始阅读。IO:表示层,将各种数据编码/解码,方便于在网络上传输。下图是一个大致的结构图,可以看出,大部分的类都是以Writable结尾的数据结构和基本数据类型。一、基本数据类型Hadoop 中,并没有使用java自带的基本类型类(Integer、Float等)而是使用了自己开发的类IntWritable、FloatWritable、BooleanWr
2012-11-08 14:34:57 1512
原创 Hadoop 源码阅读前奏
要阅读Hadoop源码,首先要获取他的源代码,由于它是Apache旗下的一个开源项目,因此,获取变得很容易.两种方式:1、用svn 同步软件将源码从服务器同步到本地即可.svn的地址为http://svn.apache.org/repos/asf/hadoop/ ,其中不同的发布版在:http://svn.apache.org/repos/asf/hadoop/comm
2012-11-08 14:30:51 989
原创 2012年10月份,百度笔试题
一、简答题1、列举几个常见的哈希算法,简述哈希算法的主要用途http://blog.csdn.net/zxycode007/article/details/6999984这篇文章介绍的很清楚了。主要用途:查找关键字、文件校验、数字签名2、描述OSI的7层架构,并指出HTTP、UDP、ARP协议在那一层?应用层:为应用程序提供网络服务表示层:确保不同应用信息的识别会话
2012-10-23 21:03:05 3463 3
原创 从三巨头说云计算
不知从何日起,云计算的概念慢慢渗入我们寻常百姓家,成了一个大家耳熟能详的词(当然,不乏广告人士的大力支持),我们也开始接触到了他的产品。 就如web2.0,在这个懵懂的阶段,很难用一个很完美的定义来诠释云计算的概念,需要通过他的过去,一些他的代表商去渐渐熟悉。先从他的来源说起吧。 云计算最早可以追溯到甲骨文公司的拉里埃利森在上个世纪90年代初提出的Network Compute
2012-10-09 19:35:41 2412
原创 JVM系列(二)——类加载
Java 运行环境为了优化系统,提高程序的执行速度,在 JRE 运行的开始会将 Java 运行所需要的基本类采用预先加载( pre-loading )的方法全部加载要内存当中,因为这些单元在 Java 程序运行的过程当中经常要使用的,主要包括 JRE 的 rt.jar 文件里面所有的 .class 文件。当 java.exe 虚拟机开始运行以后,它会找到安装在机器上的 JRE 环境,然后把控制
2012-09-27 19:55:19 844
原创 JVM系列(一)——内存管理
一、JVM介绍JVM(Java Virtual Machine)作为JDK的必需品,是运行java程序是不可少的一个元素。它是java得以跨平台的核心组件,包揽了从java代码的编译、优化到内存管理的多种功能。Java之所以比C高级,是因为他屏蔽了一些C进行底层操作的功能,例如指针。Java使用自动化的方式进行内存管理,一切与内存有关的琐事都交予JVM来管理。使得开发人员无需使用诸如:释放
2012-09-21 21:31:07 1056
原创 测试与重构,让我们活的更轻松
相信程序猿们敲代码时都经历过这种阶段。一开始,怀着极大地志向,打算把代码写的尽量优雅,各个方法清晰易读。但随着时间的推移,项目的逐步增长,发现代码越写越乱,自己花费了大量的时间在代码的调试上,经常是改了一处,却牵扯到其他众多地方,级联的错误,而导致你把大量的时间花费在回忆自己先前的逻辑与代码调试中,而陷入了“焦油坑”中。经过了这个过程,心中唯一想做的就是尽快把这份代码写完,早些摆脱这堆臭代码,先前
2012-09-07 00:14:21 1819
原创 RMI、RPC、SOAP通信技术介绍及比对
1、RMI 使用java的程序员,对于RMI(RemoteMethod Invoke,远程方法调用)一定不陌生,在java中,为了在分布式应用开发时,能够方便调用远程对象,java提供了RMI的API。在 RMI 中,远程对象按照好象它是本地行事,客户机应用程序会直接调用远程对象存根上的方法,因此,调用起来就如本地对象一样方便。RMI中封装了对象和请求的网络传送,使得异地的对象服务直接可
2012-09-04 14:07:31 2432
原创 关于《编程珠玑》中一个找出一个不存在的数的问题的探讨
《编程珠玑》第二章2.1的三个问题中,有个问题是这样的: 给定一个最多包含40亿个随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数(在文件中至少缺失一个这样的数——为什么?)。1、如果有足够的内存,如何处理?2、如果内存不足,仅可以用几个外部的临时文件来进行处理,如何处理? 主要关注第二个问题,在仅有几百个字节的内存下,如何借助外部的“
2012-07-31 15:37:57 3095 3
原创 云计算与它的三个架构
云计算,这个令外界甚至行内人士都感到陌生的词语,现阶段是如此的火热。敢问,他到底为何物? 从外界看云,他为开发者提供了大量很好的资源,你可以方便的从中得到你需要的各种资源(计算资源、空间资源等),无需关注内部的方式。之所以称为“云”,是因为它在某些方面具有现实中云的特征:云一般都较大;云的规模可以动态伸缩,它的边界是模糊的;云在空中飘忽不定,你无法也无需确定它的具体
2012-07-19 16:49:54 1957
原创 从关系型数据库到非关系型数据库
自1970年,埃德加·科德提出关系模型之后,关系数据库便开始出现,经过了40多年的演化,如今的关系型数据库具备了强大的存储、维护、查询数据的能力。但在关系数据库日益强大的时候,人们发现,在这个信息爆炸的“大数据”时代,关系型数据库遇到了性能方面的瓶颈,面对一个表中上亿条的数据,SQL语句在大数据的查询方面效率欠佳。我们应该知道,往往添加了越多的约束的技术,在一定程度上定会拖延其效率。
2012-07-07 20:21:15 9795 2
原创 jacob 使用心得
老哥让我给他做一个处理word的程序,能够读入一些模板文件,然后提供给他一个界面填充数据,最后能够生成一些填写过数据的文件。 基于本人开发都是基于java进行的,故开始寻找能够使用java来操作word的方法。继而认识了jacob。 首先了解下jacob,方的解释是Java COM Bridge,即java和com组件间的桥梁。我们需要使用java来调用office
2012-06-27 14:33:32 2073 1
原创 设计模式(十二)—— Factory Method 模式
理解: 当我们有一个类,他有多个派生类;该类中有一个对象,有多种实现方式。在该类中,我们需要使用该对象的方法,但实例化该对象是由不同的派生类确定的(象棋棋盘中是象棋对象,五子棋棋盘中是五子棋对象),因此,我们在父类中不能够进行初始化,只能够将其初始化延迟到子类当中。实现方式是通过一个protected的createXXX()函数,让子类重写,以获得相应的实例化对象。
2012-06-09 17:07:43 838
原创 《设计模式解析》 第23章 Factory Method 模式 复习题
《设计模式解析》 第23章 Factory Method 模式Review QuestionsObservation1:What are factories responsible for?工厂负责对象的创建以及管理或者包括一些错误处理。2:What is the essential reason to use the F
2012-06-09 16:41:13 1465
原创 设计模式(十一)——单例模式
理解: 单例模式,当一个项目中,仅希望运行一份该类的实例时,可以用全局变量,但并不能保证该类只被初始化一次。最好的办法是类里面有内部的机制保证这一点。单例模式就是如此而来。分为了单线程下和多线程下的单例模式。Singleton和double-checked,或者饿汉式和懒汉式。优点:能够保证一个类仅被实例化一次。
2012-05-31 21:34:20 1102
原创 《设计模式解析》 第21章 Singleton 和 Double-checked模式
《设计模式解析》 第21章 Singleton 和 Double-checked模式Review QuestionsObservations1:What type of pattern is the Singleton? What general category of pattern does it belong to?工厂模式2:
2012-05-30 17:54:03 755
原创 《设计模式解析》 第20章 来自设计模式的教益:各种工厂模式
《设计模式解析》 第20章 来自设计模式的教益:各种工厂模式Review QuestionsObservation1:Define a "factory."工厂是用于封装对象的初始化过程和对象的创建使用规则。使得使用对象的客户只需要关注对象的使用。2:Name one factory pattern that was sh
2012-05-19 16:19:40 815
原创 设计模式(十)—— Template 模式
理解: Template模式,很好理解,就是写了一个通用的模板来实现一个方法,用户需要做的就是往里面(在派生类中)填充内容(实现方式)。优点:这种方式,可以很好地消除代码冗余,使得从if-else 和 复制粘贴中解脱出来。区别于Strategy:模板方法是改变算法的一部分。策略模式是使用委托改变整个算法。
2012-05-13 16:16:33 474
转载 《设计模式解析》 第19章 Observer 模式 复习题
Review QuestionsObservation1:The Template Method pattern makes the method call in a special way. What is that?将方法的调用延迟到派生类中。Interpretation1:According to
2012-05-13 15:53:41 1403
原创 设计模式(九)——Observer 模式
理解: 观察者模式,刚接触的时候,感觉这是一个十分有创意的模式。能够采用这种 “订阅---发布”的方式去将对象解耦。考虑到某个对象的改变比如一个表格改变的同时,与之关联的各种图形界面或者分析数据都需要改变,而如果让表格去通知各个对象,违背了“一个对象,一个职责”的原则。于是,添加一个第三方,即作为存储数据的第三方。当表格的变动导致了数据的改变,存储数据的对象便能够通知各个应该
2012-05-09 20:30:27 610
原创 设计模式(八)——Decorator 模式
理解: Decorator最简单的方式,就是为一个对象添加职责(并且能够适应原来使用他的对象的需求(接口不变)),但如果仅仅是为了给一个对象添加职责,而使用该模式,显得有些浪费并且冗余。实际上,想想java的I/O 流的实现,使用了大量的装饰者模式,是为了让对于流的各种格式能够方便的进行组合,以迎合不同用户的需求。称之为——动态责任链。因此,这应该算是decorator模式最大
2012-05-09 20:11:48 704
原创 《设计模式解析》 第18章 Observer 模式 复习题
Review QuestionsObservation1:According to the Gang of Four, what are structural patterns responsible for?结构型模式用于各个将已有的功能组合起来,或者将一些对象进行组合,从而实现新功能的 一些方法,且更具灵活性。2:What are
2012-05-09 20:10:13 1049
原创 设计模式(七)——迈向新的设计方式
设计模式(七)——迈向新的设计方式 之前提到了使用Alexander提到的方式去思考,去构件一个系统。这种先找出各个模式的方式有时候并不适用,因为在一些情况下,你很难找出某些隐含在系统之中的模式。从OO的原则中,我们可以悟出一些东西。“开闭原则”,需要我们对于修改封闭对扩展开放。“依赖倒置原则”,要求我们总是依赖于抽象而不应该依赖于具体类,因为具体类总是有变化的可能。上面这
2012-05-02 15:51:57 558
原创 《设计模式解析》 第17章 Decorate模式 复习题
《设计模式解析》 第17章 Decorate模式 复习题Review QuestionsObservations1: What does each Decorator object wrap?Decorator对象封装的是需要进行功能扩展的组件,该组件与decorator实现了相同的接口或继承了相同的抽象类。2: What are two classic example
2012-04-26 20:56:30 832
原创 《设计模式解析》 第16章 分析矩阵 复习题
《设计模式解析》 第16章 分析矩阵 复习题 Review QuestionsObservations1:What goes in the far left column of the analysis matrix?最左边 一列是特性的名字2:What do the rows of the analysis matr
2012-04-25 22:03:02 923
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人