自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

__技术分享__部落格

一个不善于写文章的程序员。A programmer's self-reflection

  • 博客(24)
  • 资源 (6)
  • 收藏
  • 关注

转载 六、从Undo,Redo谈命令模式

一般的应用软件中,通常会提供Redo和Undo的操作,比如Paint.NET中的动作面板,Word中的撤销重做,一般我们按Ctrl-Z即可回退到上次操作。 要实现上面的这一功能,最直观的想法就是,我们需要把执行的命令以及相应的参数记录下来,一个命令或者动作,我们可以想象成一个对象,将这些的命令以对象的方式放到一个Stack里面,然后Undo的时候,Pop出来,然后执行该命令即可返回

2017-02-04 17:07:02 503

转载 三、 平衡查找树之红黑树

前面一篇文章介绍了2-3查找树,可以看到,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而保证了最坏情况下的时间复杂度。但是2-3树实现起来比较复杂,本文介绍一种简单实现2-3树的数据结构,即红黑树(Red-Black Tree)定义红黑树的主要是像是对2-3查找树进行编码,尤其是对2-3查找树中的3-node

2017-02-04 16:44:16 265

转载 二、平衡查找树之2-3树

前面介绍了二叉查找树(Binary Search Tree),他对于大多数情况下的查找和插入在效率上来说是没有问题的,但是他在最差的情况下效率比较低。本文及后面文章介绍的平衡查找树的数据结构能够保证在最差的情况下也能达到lgN的效率,要实现这一目标我们需要保证树在插入完成之后始终保持平衡状态,这就是平衡查找树(Balanced Search Tree)。在一棵具有N 个节点的树中,我们希望该树

2017-02-04 16:43:12 413

转载 zookeeper原理

目录:    1、zookeeper原理    2、zookeeper工作原理之我的理解  1、zookeeper原理link:http://www.yanyufly.com/2011/04/29/%E8%BD%ACzookeeper%E7%9A%84%E5%8E%9F%E7%90%86%E4%BB%8B%E7%BB%8D/第一章 Zookeep

2017-02-24 22:07:52 226

转载 Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)

class文件简介及加载     Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Class对象:      class字节码文件是根据JVM虚拟机规范中规

2017-02-24 21:40:42 144

转载 Java ConcurrentModificationException异常原因和解决方法

目录一.ConcurrentModificationException异常出现的原因二.在单线程环境下的解决办法三.在多线程环境下的解决方法  在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以下这个异常出现的原因以及解决办法。

2017-02-23 16:46:39 216

转载 阿里面试题总结

自我介绍做过的项目 (Java 基础) Java的四个基本特性(抽象、封装、继承,多态),对多态的理解(多态的实现方式)以及在项目中那些地方用到多态 Java的四个基本特性 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。

2017-02-22 20:37:43 10514 3

转载 怎么在海量数据中找出重复次数最多的一个

1、海量日志数据,提取出某日访问百度次数最多的那个IP。  此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。  再详细介绍下此方案:首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个 IP。同样可以采用映射的方法

2017-02-22 11:32:26 59051 7

转载 Java 8系列之重新认识HashMap

摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Java为数据结构中的映射定义了一个接口j

2017-02-21 22:35:09 174

转载 大数据面试题记录

1 海量日志数据,提取出某日访问百度次数最多的那个IP解法1:(1)海量日志,文件太大,IP地址最多有2^32=4G,无法装入内存,,将这个大文件(hash映射:可以取模00)分成多个小文件(如1000)。(2)对每个小文件进行hash统计,hash_map(ip,value), 得到每个文件出现频率最多的ip(3)将这些频率最高的ip进行统计,然后排序得出最大值,

2017-02-21 19:15:59 476

转载 [算法系列之十八]海量数据处理之BitMap

一:简介所谓的BitMap就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了bit为单位来存储数据,因此在存储空间方面,可以大大节省。二:基本思想我们用一个具体的例子来讲解,假设我们要对0-7内的5个元素(4,7,2,5,3)排序(这里假设这些元素没有重复)。那么我们就可以采用BitMap的方法来达到排序的目的。要表示8个数,我们就只需要8个bit(1B

2017-02-21 18:03:17 422

转载 Java对象分配简要流程

序本文主要简述Java对象在内存中的分配过程总体流程分配流程逃逸分析逃逸分析的基本行为就是分析对象动态作用域:当一个对象在方法中被定义后,它可能被外部方法所引用。方法逃逸:例如作为调用参数传递到其他方法中。线程逃逸:有可能被外部线程访问到,譬如赋值给类变量或可以在其他线程中访问的实例变量。栈上分配(St

2017-02-21 11:28:37 231

转载 redcreen的专栏 新闻联系管理订阅 JVM系列三:JVM参数设置、分析

不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置不同

2017-02-21 11:16:22 448

转载 JVM 不稳定参数

-XX 参数被称为不稳定参数,之所以这么叫是因为此类参数的设置很容易引起JVM 性能上的差异,使JVM 存在极大的不稳定性。当然这是在非合理设置的前提下,如果此类参数设置合理讲大大提高JVM 的性能及稳定性。         可以说“不稳定参数”是一柄双刃剑,用的好攻无不克,用的差讲带来麻烦。如何合理利用不稳定参数一直是一个不断实践不断改善的过程,无法用统一的标准去衡量。一切都需要在系统的不断

2017-02-21 11:10:16 426

转载 如何合理地估算线程池大小?

如何合理地估算线程池大小?这个问题虽然看起来很小,却并不那么容易回答。大家如果有更好的方法欢迎赐教,先来一个天真的估算方法:假设要求一个系统的TPS(Transaction Per Second或者Task Per Second)至少为20,然后假设每个Transaction由一个线程完成,继续假设平均每个线程处理一个Transaction的时间为4s。那么问题转化为:如何设计线程

2017-02-20 21:01:06 337

转载 JAVA多线程相关的问题50道

不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。在典型的Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程,用

2017-02-06 14:34:11 259

转载 谈谈Java内存管理

目录一. 背景知识二. Jvm虚拟机内存简介三. 垃圾收集四. Java7、8带来的一些变化对于一个Java程序员来说,大多数情况下的确是无需对内存的分配、释放做太多考虑,对Jvm也无需有多么深的理解的。但是在写程序的过程中却也往往因为这样而造成了一些不容易察觉到的内存问题,并且在内存问题出现的时候,也不能很快的定位并解决。因此,了解并掌握Java的内存管理

2017-02-05 14:45:32 1126

转载 Lock与synchronized 的区别

1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定,如果使用 synchronized ,如果A不释放,B将一直等下去,不能被中断如果 使用ReentrantLock,如果A不释放,可以使B在等待了足够长的时间以后,中断等待,而干别的

2017-02-05 12:12:06 182

转载 八、不要对外公开泛型List成员

最近在阅读Framework Design Guidelines,本着现学现用的原则,于是就用FxCop工具对代码进行规范性检查时,发现了很多问题,其中包括命名以及一些设计上的规范。其中,Do not expose generic lists 这条设计规范引起了我的注意。该规范指出“不要在对象模型中对外暴露List,应该考虑使用Collection,ReadOnlyCollecti

2017-02-04 17:10:58 432

转载 七、浅谈模板方法模式

在很多时候,我们在写代码的时候总是会遇到一些相同或者类似的处理流程和步骤,就拿一般的函数编写来说,在处理之前一般会进行参数有效性验证,然后可能会对参数进行预处理,最后在执行业务操作。这种情况通常会出现在一类业务,比如订单处理系统中,就有订单创建,订单修改等操作,就会出现的这些类似的情况。 如果每个都这样写的话,会发现整个流程比较重复和冗余。比如:class SomeProcessSer

2017-02-04 17:08:14 153

转载 五、 无向图相关算法基础

从这篇文章开始介绍图相关的算法,这也是Algorithms在线课程第二部分的第一次课程笔记。图的应用很广泛,也有很多非常有用的算法,当然也有很多待解决的问题,根据性质,图可以分为无向图和有向图。本文先介绍无向图,后文再介绍有向图。之所以要研究图,是因为图在生活中应用比较广泛:无向图图是若干个顶点(Vertices)和边(Edges)相互连接组成的。边仅由两个

2017-02-04 17:04:04 570

转载 四、平衡查找树之B树

前面讲解了平衡查找树中的2-3树以及其实现红黑树。2-3树种,一个节点最多有2个key,而红黑树则使用染色的方式来标识这两个key。维基百科对B树的定义为“在计算机科学中,B树(B-tree)是一种树状数据结构,它能够存储数据、对其进行排序并允许以O(log n)的时间复杂度运行进行查找、顺序读取、插入和删除的数据结构。B树,概括来说是一个节点可以拥有多于2个子节点的二叉查找树。与自平衡二

2017-02-04 16:48:42 156

转载 一、二叉查找树

本文介绍的二叉查找树(Binary Search Tree,BST)这一数据结构综合了以上两种数据结构的优点。二叉查找树具有很高的灵活性,对其优化可以生成平衡二叉树,红黑树等高效的查找和插入数据结构,后文会一一介绍。一 定义二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary t

2017-02-04 16:42:19 243

转载 设计模式(Design Patterns)——可复用面向对象软件的基础

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每

2017-02-04 15:26:43 463

webFlow-springmvc-security.rar

webFlow-springmvc-security.rar

2013-05-23

rmi_java项目实例

以JAVA项目实现了RMI的远程调用,项目可以跑起来,有兴趣的可以下载一下,下载后,可以联系本人,返还积分.

2013-05-21

CAS实现单点登录经典完整教程

CAS实现单点登录(SSO)经典完整教程,教你从无到有的搭建CAS环境

2013-05-15

maven相关工具介绍

包含如下文件:hudson-V1.doc maven-definitive-guide_zh.pdf Maven技术分享.ppt 全面介绍Maven

2013-05-07

Oracle数据库驱动 ojdbc14.jar

ojdbc14-10.2.0.3.0.jar ORACLE数据库连接驱动[抵制垃圾文件]

2013-05-07

顶级IT项目管理

通过阅读本文档,使你更加深刻理解IT项目管理内容以及用工作中常用的工具等,绝非垃圾文档 [抵制垃圾文件]

2013-05-07

空空如也

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

TA关注的人

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