自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(919)
  • 资源 (3)
  • 收藏
  • 关注

转载 代理模式 适配器模式 外观模式 装饰模式 区别 比较

代理模式1 代理模式中的原类和代理类继承同一父类;2 原类对象与代理类对象接口相同,功能一致;3 起到了隐藏原类的作用。适配器模式1 只有适配器继承目标接口;2 讲原有类接口转换为目标代码需求的接口。外观模式1 是多个类的集成、统一适配。代理模式注重的是隔离限制,关注于控制对对象的访问,让外

2016-11-28 22:57:39 1746

转载 使用Lock,wait/notify,Semaphore三种方式实现多线程通信

Java的多线程通信有Lock,wait/notify,Semaphore三种方式,以一道常见面试题来简单演示这三种多线程通信方式。两个线程循环间隔打印指定内容,一个打印从1到52的数字,一个打印从A到Z的字母,打印输出如下:12A34B......5152Z使用Lock实现代码如下:[java] 

2016-11-28 22:38:20 2079

转载 java并发(十二)饥饿和公平

如果一个线程因为CPU时间全部被其他线程抢走而得不到CPU运行时间,这种状态被称之为“饥饿”。而该线程被“饥饿致死”正是因为它得不到CPU运行时间的机会。解决饥饿的方案被称之为“公平性” – 即所有线程均能公平地获得运行机会。 下面是本文讨论的主题: 1. Java中导致饥饿的原因: 高优先级线程吞噬所有的低优先级线程的CPU时间。 线程被永久堵塞在一个等待进入同步块的

2016-11-28 22:37:24 1116

转载 ReentrantLock公平锁与非公平锁

总括:     在Java的ReentrantLock构造函数中提供了两种锁:创建公平锁和非公平锁(默认)。代码如下:          public ReentrantLock() {             sync = new NonfairSync();          }     在公平的锁上,线程按照他们发出请求的顺序获取锁,但在非公平锁上,则允许‘插队’

2016-11-28 22:28:30 1234

转载 Java并发编程:线程间协作的两种方式:wait、notify和Condition

在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就不会让队列有空间,那么生产者就会一直无限等待下去。因此,一般情况下,当队列满时,会让生产者交出对临界

2016-11-28 22:20:14 1693

转载 Thread的中断机制(interrupt)

先看收集了别人的文章,全面的了解下java的中断:中断线程线程的thread.interrupt()方法是中断线程,将会设置该线程的中断状态位,即设置为true,中断的结果线程是死亡、还是等待新的任务或是继续运行至下一步,就取决于这个程序本身。线程会不时地检测这个中断标示位,以判断线程是否应该被中断(中断标示值是否为true)。它并不像stop方法那样会中断一个正在运行的线程。

2016-11-28 22:07:39 727

转载 JAVA多线程之wait/notify

本文主要学习JAVA多线程中的 wait()方法 与 notify()/notifyAll()方法的用法。①wait() 与 notify/notifyAll 方法必须在同步代码块中使用②wait() 与  notify/notifyAll() 的执行过程③中断 调用wait()方法进入等待队列的 线程④notify 通知的顺序不能错⑤多线程中测试某个条件的

2016-11-28 21:55:51 463

转载 Java wait() notify()方法使用实例讲解

1)wait()、notify()和notifyAll()方法是本地方法,并且为final方法,无法被重写。  2)调用某个对象的wait()方法能让当前线程阻塞,并且当前线程必须拥有此对象的monitor(即锁,或者叫管程)  3)调用某个对象的notify()方法能够唤醒一个正在等待这个对象的monitor的线程,如果有多个线程都在等待这个对象的monitor,则只能唤醒其中一

2016-11-28 21:50:48 456

转载 如何在 Java 中正确使用 wait, notify 和 notifyAll

wait, notify 和 notifyAll,这些在多线程中被经常用到的保留关键字,在实际开发的时候很多时候却并没有被大家重视。本文对这些关键字的使用进行了描述。在 Java 中可以用 wait、notify 和 notifyAll 来实现线程间的通信。。举个例子,如果你的Java程序中有两个线程——即生产者和消费者,那么生产者可以通知消费者,让消费者开始消耗数据,因为队列缓 冲区中有

2016-11-28 21:46:59 575

转载 Java静态方法不具有多态性详解

动态绑定机制使得基类的引用能够指向正确的子类对象,从而使得面向基类编程成为可能。然而动态绑定在以下两种情况会失效。1、基类方法是private或final修饰的这个很好理解,因为private说明该方法对子类是不可见的,子类再写一个同名的方法并不是对父类方法进行复写(Override),而是重新生成一个新的方法,也就不存在多态的问题了。同理也可以解释final,因为方法同样

2016-11-28 21:25:15 1375 1

转载 理解java多态的面试题(理解加粗的样例解析部分)

class A{ public String show(D obj){ return ("A and D"); } public String show(A obj){ return ("A and A"); } } class B extends A{ public String show(B ob

2016-11-28 21:22:07 2137 1

转载 多态经典面试题解析

多态经典面试题已知类ABCD,B继承于A,C和D继承于B,具体如下[html] view plain copypublic class A {      public void print(A a){          System.out.println("A and A");      }           

2016-11-28 21:18:53 1409

转载 jvm住内存与工作内存,内存模型反映的java多线程问题

找了多篇文章,自己将重点以及可以让人深入理解jvm以及多线程的知识做总结,作为自己的学习笔记:一、jvm主内存与工作内存    首先,JVM将内存组织为主内存和工作内存两个部分。主内存中主要包括本地方法区和堆。每个线程都有一个工作内存,工作内存中主要包括两个部分,一个是属于该线程的栈和对主存部分变量拷贝的寄存器。  1.所有的变量都存储在主内存中(虚拟机内存的一

2016-11-28 21:16:38 1097

转载 【Java线程】Java内存模型总结

学习资料:http://www.infoq.com/cn/articles/Java-memory-model-1Java的并发采用的是共享内存模型(而非消息传递模型),线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。多个线程之间是不能直接传递数据交互的,它们之间的交互只能通过共享变量来实现同步是显式进行的。程序员必须显式指定某个方法或某段

2016-11-28 21:14:19 424

转载 java线程内存模型,线程、工作内存、主内存

java线程内存模型线程、工作内存、主内存三者之间的交互关系图: key edeas所有线程共享主内存每个线程有自己的工作内存refreshing local memory to/from main memory must  comply to JMM rules 产生线程安全的原因线程的working memor

2016-11-28 21:09:48 1086

转载 JSP 自定义标签

自定义标签是用户定义的JSP语言元素。当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时Web container调用那些操作。JSP标签扩展可以让你创建新的标签并且可以直接插入到一个JSP页面。 JSP 2.0规范中引入Simple Tag Handlers来编写这些自定义标记。你可以继承Si

2016-11-28 21:04:57 402

转载 数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案

作为一种数据存储层面上的水平伸缩解决方案,数据库Sharding技术由来已久,很多海量数据系统在其发展演进的历程中都曾经历过分库分表的Sharding改造阶段。简单地说,Sharding就是将原来单一数据库按照一定的规则进行切分,把数据分散到多台物理机(我们称之为Shard)上存储,从而突破单机限制,使系统能以Scale-Out的方式应对不断上涨的海量数据,但是这种切分对上层应用来说是透明的,多个

2016-11-23 23:24:43 593

转载 缓存算法(页面置换算法)-FIFO、LFU、LRU

1. FIFO -- 先进先出如果一个数据最先进入缓存中,则应该最早淘汰掉。也就是说,当缓存满的时候,应当把最先进入缓存的数据给淘汰掉。实现:利用一个双向链表保存数据,当来了新的数据之后便添加到链表末尾,如果Cache存满数据,则把链表头部数据删除,然后把新的数据添加到链表末尾。在访问数据的时候,如果在Cache中存在该数据的话,则返回对应的value值;否则返回-1。如果

2016-11-23 23:10:42 3077

转载 支付系统对账算法优化方案

一、目前对账的算法:1、从上游渠道(银行、银联等金融机构)获取对账文件,程序逐行解析入库2、在存储过程中,以上游对账文件的表为基准,程序逐行读取并与我们系统的交易记录/账务记录(有账务系统情况下,合理方案应该是于账务记录)对比,查找出差异记录。3、以我们系统的交易记录/账务记录为基准,程序逐行读取与上游对账文件对比,查找出差异记录二、目前对账算法问题:1、使

2016-11-23 00:06:32 3314 1

转载 递归算法转换为非递归算法

递归算法实际上是一种分而治之的方法,它把复杂问题分解为简单问题来求解。对于某些复杂问题(例如hanio塔问题),递归算法是一种自然且合乎逻辑的解决问题的方式,但是递归算法的执行效率通常比较差。因此,在求解某些问题时,常采用递归算法来分析问题,用非递归算法来求解问题;另外,有些程序设计语言不支持递归,这就需要把递归算法转换为非递归算法。    将递归算法转换为非递归算法有两种方法,一种是直接求值

2016-11-20 12:02:28 1296 1

转载 从一个简单的Java单例示例谈谈并发

一个简单的单例示例单例模式可能是大家经常接触和使用的一个设计模式,你可能会这么写public class UnsafeLazyInitiallization { private static UnsafeLazyInitiallization instance; private UnsafeLazyInitiallization() { } pub

2016-11-19 18:48:38 657

转载 CopyOnWriteArrayList详解

CopyOnWriteArrayList详解1.   CopyOnWriteArrayList(写数组的拷贝)是ArrayList的一个线程安全的变体,CopyOnWriteArrayList和CopyOnWriteSet都是线程安全的集合,其中所有可变操作(add、set等等)都是通过对底层数组进行一次新的复制来实现的。2.    它绝对不会抛出ConcurrentModific

2016-11-19 18:30:03 696

转载 二叉排序树与二叉堆

1 快排效率是不稳定的nlogn2 二叉树实现排序的效率是稳定的nlogn3 用二叉树实现排序有两种方法: 二叉排序树和二叉堆排序树 二者在实现及原理上有不同之处。二叉排序树 用链表实现 令二叉树的每一个节点大于左子树的节点,小于右子树的节点。 中序遍历这样的一棵树,就能实现从小到大的输出 插入时,每一个新节点都是插在“最低端”

2016-11-19 17:13:43 1077

转载 JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些情况,新对象的建立就是一个 “过程”,不仅是一个操作,像一部

2016-11-15 23:06:30 325

转载 你真的会写单例模式吗-------Java实现

单例模式可能是代码最少的模式了,但是少不一定意味着简单,想要用好、用对单例模式,还真得费一番脑筋。本文对Java中常见的单例模式写法做了一个总结,如有错漏之处,恳请读者指正。饿汉法顾名思义,饿汉法就是在第一次引用该类的时候就创建对象实例,而不管实际是否需要创建。代码如下:1234567public class Singleton {       private

2016-11-14 22:05:08 407

转载 UML类图几种关系的总结

在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)         1. 泛化(Generalization)        【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特

2016-11-14 20:13:03 381

转载 hbase数据的存放顺序

rowkey      rowkey是行的主键,而且hbase只能用个rowkey,或者一个rowkey范围即scan来查找数据。所以 rowkey的设计是至关重要的,关系到你应用层的查询效率。我们知道,rowkey是以字典顺序排序的。而存储的字节码,字典排序,我们知道,如果是字 母,那就是字母的顺序,比如,有两个rowkey,rowkey1:aaa222,rowkey2:bbb111,那么r

2016-10-07 20:18:06 6910

转载 spring scheduled-task集群问题

背景我经常使用spring自带的轻量级的定时任务实现,即@Scheduled注解但是在分布式环境下,这种定时任务是不支持集群配置的我现在面对的场景如下:1.双机部署2.系统在启动时,需要进行一系列的数据初始化,但是这种初始化是需要持久化到集中式缓存中,或者数据库中,或者保存到相应的队列中,等待处理问题: 怎么能保证双机情况下(或者是集

2016-10-07 17:24:39 3108

转载 如何用Spring实现集群环境下的定时任务

定时任务的实现方式有多种,例如JDK自带的Timer+TimerTask方式,Spring 3.0以后的调度任务(Scheduled Task),Quartz等。Timer+TimerTask是最基本的解决方案,但是比较远古了,这里不再讨论。Spring自带的Scheduled Task是一个轻量级的定时任务调度器,支持固定时间(支持cron表达式)和固定时间间隔调度任务,支持线程池管

2016-10-07 17:21:31 19008 14

转载 Spring-Task用法

Spring-Task上节介绍了在spring 中使用Quartz,本文介绍Spring3.0以后自主开发的定时任务工具,spring task,可以将它比作一个轻量级的Quartz,而且使用起来很简单,除spring相关的包外不需要额外的包,而且支持注解和配置文件两种形式,下面将分别介绍这两种方式。第一种:配置文件方式第一步:编写作业类

2016-10-07 17:16:57 601

转载 Quartz Spring与Spring Task总结

Spring对Quartz作了一个封装,同时,Spring自己也提供了一个任务定时器(spring-task),现把它总结一下。    对于Quartz,我们使用的时候主要是注重两个方面,一个是定时任务的业务,另一个就是Cron表达式。定时任务跟具体的业务相关,这无需多说,这里只说明表达式含义及其写法。    Cron表达式包括下面7个字段并区别顺序:秒0-59,分0-59,小时0-23,

2016-10-07 17:14:33 608

转载 Jsoup解析HTML实例及文档方法详解

这篇文章主要介绍了Jsoup如何解析一个HTML文档、从文件加载文档、从URL加载Document等方法,对Jsoup常用方法做了详细讲解,最近提供了一个示例供大家参考 使用DOM方法来遍历一个文档 从元素抽取属性,文本和HTML 获取所有链接解析和遍历一个HTML文档如何解析一个HTML文档:复制代码代码如下:String ht

2016-09-29 23:55:25 826

转载 java clone原理

在java中 clone为什么要用super.clone()方法 这里为什么要用super不是this?1.Object中的clone执行的时候使用了RTTI(run-time type identification)的机制,动态得找到目前正在调用clone方法的那个reference,根据它的大小申请内存空间,然后进行bitwise的复制,将该对象的内存空间完全复制到新的空间中去,从而达到s

2016-09-24 11:40:28 2269

转载 java clone替代方案

(1)提供一个拷贝构造函数(如果你用过C++就不会陌生)Java代码  public RaceCar(RaceCar raceCar);          (2)提供一个静态工厂方法,当然名字可以改变,比如deepCopy等Java代码  public RaceCar newInstance(RaceCar raceCar

2016-09-24 11:37:37 1069

转载 java克隆对象clone()的用法和作用

内容摘要若需修改一个对象,同时不想改变调用者的对象,就要制作该对象的一个本地副本。这也是本地副本最常见的一种用途。若决定制作一个本地副本,只需简单地使用clone()方法即可。Clone是“克隆”的意思,即制作完全一模一样的副本。这个方法在基础类Object中定义成“protected”(受保护)模式。但在希望克隆的任何衍生类中,必须将其覆盖为“public”模式。例如,标准库类Vecto

2016-09-24 11:36:02 1260

转载 详解Java中的clone方法

Java中对象的创建clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。那么在java语言中,有几种方式可以创建对象呢? 1 使用new操作符创建一个对象 2 使用clone方法复制一个对象 那么这两种方式有什么相同和不同呢? new操作符的本意是分配内存。程

2016-09-24 11:34:50 375

转载 Java clone() 浅克隆与深度克隆

现在Clone已经不是一个新鲜词语了,伴随着“多莉”的产生这个词语确实很“火”过一阵子,在Java中也有这么一个概念,它可以让我们很方便的“制造”出一个对象的副本来,下面来具体看看java中的Clone机制是如何工作的?     1. Clone&Copy     假设现在有一个Employee对象,Employee tobby =new Employee(“CMTobby”,5000),

2016-09-24 11:33:28 312

转载 Java的clone方法

什么是"clone"?   在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能 会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的。在 Java语言中,用简单的赋值语句是不能满足这种需求的。要满足这种需求虽然有很多途径,但实现clone()方法是其中最简单

2016-09-24 11:31:48 296

转载 httpcomponent4.0调用样例

private static class HttpComponentUtil { private static int timeout = 5 * 1000; private static PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(); private st

2016-09-24 11:27:09 1474

转载 谈谈Java利用原始HttpURLConnection发送POST数据

URLConnection是个抽象类,它有两个直接子类分别是HttpURLConnection和JarURLConnection。另外一个重要的类是URL,通常URL可以通过传给构造器一个String类型的参数来生成一个指向特定地址的URL实例。每个 HttpURLConnection 实例都可用于生成单个请求,但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络。请求后在 H

2016-09-24 11:00:47 1512

C++编程思想(中文)

C++编程思想(中文) 本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器类、多重继承、异常处理和运行时类型识别。 本书作为正式教材和自学用书均非常优秀,作为程序设计者的参考用书亦极为合适。

2009-11-11

vc文件拷贝程序(显示拷贝进度)

是一个在VC下实现文件拷贝的程序,包括浏览文件夹、拷贝进度显示功能,文家拷贝主要使用win32函数CopyFileEx,进度显示则通过其回调函数CopyProgressRoutine实现。

2009-05-17

空空如也

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

TA关注的人

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