- 博客(52)
- 资源 (4)
- 收藏
- 关注
原创 线程安全(二)-同步工具类
同步工具类: 1闭锁:闭锁的作用相当于一扇门:在闭锁到达结束状态之前,这扇门一直是关闭的,并且没有任何线程能通过。当闭锁到达结束状态后,将不会再改变状态,因此这扇门将永远保持打开状态,闭锁可以用来确保某些活动指导其他活动都完成后才继续执行。 例如;1确保某个计算在其需要的所有资源都被初始化之后才继续执行。2确保某个服务在其依赖的所有其他服务都已经启动之后才启动。
2012-12-22 18:05:26 545
原创 线程安全(一)
java中地同步机制是使用关键字synchronized,它提供一种独占的加锁方式,还包括volatile变量,显式锁以及原子变量。 注意:无状态的对象一定是线程安全的。要保持状态的一致性,就需要在单个原子操作中更新所有相关的状态变量。对于每个包含多个变量的不变形条件,其中涉及的所有变量度需要同一个锁来保护。通常,在简单性与性能之间存在着相互制约的因素。当实现某个同步策略是
2012-12-22 18:04:24 489
原创 maven 聚合和继承
聚合和继承:聚合:Maven会首先解析聚合模块的POM,分析要构建的模块,并计算出一个反应堆构建顺序,然后根据这个顺序依次构建各个模块。继承:就是抽象各个模块中重复的配置。在父pom中声明一些配置提供给子pom中使用。以实现移除声明多处使用的目的。作为父模块中的POM,其打包类型必须是pom,由于父模块只是为了消除重复的配置,它本身不包括pom之外的项目文件也就不需要s
2012-09-22 17:53:56 564
原创 maven 声明周期
Maven生命周期阶段详解3大生命周期蕴含着小小的阶段,我们按顺序看一下clean周期:pre-clean:准备清理clean:真正的清理工作post-clean:执行清理后的一些后续工作default周期:validate:验证initialize:初始化配置generate-sources:生成源代码编译目录pro
2012-09-22 17:53:28 623
原创 maven 仓库
maven 仓库:maven clean install install插件的instal目标是将目的构件输出文件安装至本地仓库仓库信息可以直接配置在项目的pom配置文件中,认证信息需要配置在settings文件中 nexus Team Nexus Repository http://localhos
2012-09-22 17:52:21 676
原创 maven 坐标和依赖
maven坐标:groupId 组IdartifactId 模块Id或者子项目Id version 版本号packaging 打包方式classifier该元素用来帮助定义构建输出的一些附属构件依赖的配置:
2012-09-22 17:49:43 3228
原创 maven 基础
编写主代码1 在绝大多数情况下,应该把项目主代码放到src/main/java 目录下(遵循maven的约定),而无需额外的配置。maven会自动搜寻该目录找到项目的主代码,其次主代码的包名应该基于groupId和artifactId,这样更加清晰和符合逻辑方便搜索构件或者java类。2我们执行maven clean install 命令 clean 告诉maven清除输出目
2012-09-22 17:44:24 538
原创 linux命令 kill 与killall 命令
kill的应用是和ps 或pgrep 命令结合在一起使用的[root@localhost ~]# ps auxf |grep httpdroot 4939 0.0 0.0 5160 708 pts/3 S+ 13:10 0:00 \_ grep httpdroot 4830 0.1 1.3 24232 10272 ? Ss 13:02 0:00 /usr/sbin/httpdapache 48...
2012-04-24 22:56:24 157
原创 inux的vmstat命令详解
vmstat结果内容的解释Vmstat procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo i...
2012-04-24 22:50:27 123
原创 linux ps 命令详解
inux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) 4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) 5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运...
2012-04-24 22:48:04 143
原创 linux top命令详解
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombieCpu...
2012-04-24 22:46:12 84
linux find命令详解
查询某个文件的具体位置find / -name statusApproved.vm或者find /etc -name statusApproved.vm (表示在etc目录下面查找)结果为:find: /proc/15832/fd: Permission denied/usr/ali/apache-tomcat-6.0.35/webapps/ROOT/templates/credi...
2012-04-24 22:17:54 265
原创 深入解析SpringAOP设计
在深入解析SpringAOP设计原理之前,我们需要了解SpringAOP中的几个核心概念:1 连接点(jointpoint): 一个连接点是一个程序执行过程中的特定点。电信的连接点包括对一个方法的调用,方法执行的过程本身,类的初始化,对象的实例化等。连接点是AOP的核心概念之一,它用来定义在程序中的什么地方能够通过AOP加入额外的逻辑。2 通知(advice):在某一特定的连接点出运行的代
2012-02-12 19:46:18 629
原创 乔,你终于开博了
自从毕业之后就从未在写过博客,只因为自己半年多一只不再状态,因为好多事,终究只能说自己惭愧,虽然毕业顺利进入阿里巴巴,工作也很顺利,任务圆满完成,但自己对自己松懈了,缺少了过去的斗志。今晚偶然决定不能在这样下去了,决定再次开始我的博客之路,用它来记录下我的技术成长。也到哪天回过来能看一下。 路漫漫其修远兮,吾将上下而求索。不为别的,只为我比别人强,我相信自己。给自己证明自己的一个机
2012-02-01 23:46:39 338
Spring MVC 整体的流程
DispatcherServlet(DispatcherServlet是基于Spring MVC框架Web应用程序的Front Controller,它将负责所有对应当前Web应用程序的Web请求的处理,它使用一个外部化的配置文件,用来配置Spring MVC 框架在处理Web请求过程中所涉及的各个组件,包括HandlerMapping定义,Controller定义,ViewResolver定义等...
2011-04-30 13:17:18 95
数据库系统结构
数据库的三级模式结构:数据库的三级模式结构是由外模式,模式,内模式。模式又称为逻辑模式,是数据库中全体数据的逻辑结构和特征的描述。是所有用户的公共数据视图。数据库模式计全局逻辑结构是数据库的中心和关键,它独立与数据库的其他层次,因此设计数据库模式结构时应首先确定数据库的逻辑模式。DBMS提供模式描述语言(模式DDL)来严格定义模式。外模式:又称为子模式或用户模式,它是数据库用户能够...
2011-03-07 16:48:20 107
原创 MapReduce
1.什么是MapReduce? MapReduce 是由Google公司的Jeffrey Dean 和 Sanjay Ghemawat 开发的一个针对大规模群组中的海量数据处理的分布式编程模型。MapReduce实现了两个功能。Map把一个函数应用于集合中的所有成员,然后返回一个基于这个处理的结果集。而Reduce是把从两个或更多个Map中,通过多个线程,进程或者独立系统并行执行处...
2011-03-07 11:55:01 172
我该做什么?
IT时代最缺的是什么,是创意,而创意则是建立在你对生活的感触和好奇,也许你不了解如何生活,但你对生活充满好奇和疑问,那么你就有可能成功,因为只有你了解了人们在生活中需要什么,你才会去改善它,让它做到完美。什么是虚拟化,云计算,物联网,我都不知道,但它们也许会在以后的五年内或者十年内改善人们的生活品质,也许不会,我希望自己能快一点想到自己的创意,而不是重复着别人的思想,而在编写着和别人没有多少差别的...
2010-10-31 22:07:11 104
排序算法
为了招聘将以前学过的排序算法又复习了一遍,就贴了出来,希望对忙于找工作的同学有点帮助!同时也希望大家有什么好的算法贴出来一起探讨。#include<stdio.h>#define N 8/*直接插入排序是一种基本的插入排序方法,其基本操作是将第i个记录插入到前面的i-1个已排好序的记录中。具体的过程为:将第i个记录的关键字Ki顺次与前面记录的关键字Ki-1 ,Ki-...
2010-10-11 19:32:10 112
Spring ApplicationContext
ApplicationContext是一个IoC容器,但它扩展了IoC容器的许多功能:例如像资源的获取,国际化,事件的处理和传播等,你可以基于Spring容器来打造自己的应用程序框架。首先我们通过ApplicationContext的源代码分析一下:public interface ApplicationContext extends ListableBeanFactory, Hierar...
2010-10-06 13:07:16 99
Spring属性编辑器
什么是属性编辑器,作用? * 自定义属性编辑器,spring配置文件中的字符串转换成相应的对象进行注入 spring已经有内置的属性编辑器,我们可以根据需求自己定义属性编辑器 * 如何定义属性编辑器? * 继承PropertyEditorSupport类,覆写setAsText()方法(注意要将处理完成的对象通过PropertyEditorSupport的setValue设置回去) *向Io...
2010-10-06 12:03:27 70
JDK动态代理
注意在使用JDK提供的动态代理要求我们的目标对象必须实现接口。我们可以通过调用java.lang.reflect.Proxy的静态方法 public static Object newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h)loader是类装载器...
2010-10-05 14:12:23 61
java的反射机制
反射:运行时类型如果你不知道某个对象的确切类型,RTTI可以告诉你,但有一个限制:这个类型在编译时必须已知,这样才能使用RTTI识别它,并利用这些信息做一些有用的时。换句话说,在编译时,编译器必须知道所有要通过RTTI来处理的类。当通过反射与一个未知类型的对象打交道时,Java虚拟机只是简单地检查这个对象,看它属于哪个特定的类,就像RTTI那样。在用它做其他事情之前必须先加载那个类的C...
2010-10-05 11:16:20 71
原创 Spring源码解析 BeanPostProcessor的实现
BeanPostProcessor是使用IoC容器时经常使用会遇到的一个特性,这个Bean的后置处理器是一个监听器,它可以监听容器触发的事件。把它向IoC容器注册以后,使得容器中管理的Bean具备接收IoC 容器事件回调的能力。具体的后置处理器需要实现接口BeanPostProcessor,然后设置到XML的Bean的配置文件中。这个BeanPostProcessor是一个接口类,它有两个接口方法...
2010-10-02 21:45:16 148
原创 Spring源码解析 lazy-init属性和预实例化
默认情况下会在容器启动时初始化bean, 但是我们可以指定Bean节点的 lazy-init="true" 来延迟初始化bean,这时候,只有第一次获取bean才会初始化bean。在IoC容器的初始化过程中,主要的工作是对BeanDefinition的资源定位,载入,解析和注册。此时依赖注入并没有发生,依赖注入发生在应用第一次向容器所要Bean时。对于容器的初始化有另外一种情况,就是用户可以通过设...
2010-10-02 19:02:59 208
原创 Spring源码解析 依赖注入
当IoC容器的初始化完毕后,我们就要接触IoC容器的核心功能:依赖注入在基本的IoC容器接口BeanFactory中,有一个getBean的接口方法的定义,这个接口的实现就是触发依赖注入发生的地方。我们从DefaultListableBeanFactory的基类AbstractBeanFactory入手了解getBean()的实现: public Object getBean(St...
2010-10-02 18:35:31 195
原创 Spring源码解析3 IOC容器的初始化
上一次我们了解BeanDefinition的在载入和解析,现在我们来看一下BeanDefinition的注册过程:当BeanDefinition在IoC容器中载入和解析完成后,用户定义的BeanDefinition信息已经在IoC容器内建立起了自己的数据结构以及相应的数据表示,在DefaultListableBeanFactory中通过一个HashMap来持有载入的BeanDefiniti...
2010-10-02 13:12:25 129
原创 Spring源码解析 2 IOC容器的初始化
前面我们分析了:IoC容器的第一个步骤BeanDefinition的Resource定位,接下我们分析BeanDefinition的载入和解析。我们先总的描述一下的BeanDefinition的载入和解析:BeanDefinition的载入过程包括两部分,首先是通过调用XML的解析器得到Document对象,但这些Document对象并没有按照Spring的Bean规则进行解析。按照Spr...
2010-10-02 12:06:22 117
原创 Spring源码解析1 IOC容器的初始化
参考《Spring技术内幕》一书: IoC容器的基本接口是由BeanFactory来定义的,也就是说BeanFactory定义了IoC容器的最基本的形式,并且提供了 IoC容器所应该遵守的最基本的服务契约。BeanFactory只是一个接口类,并没有给出容器的具体实现。DefaultListableBeanFactory,XmlBeanFactory,ApplicationContext...
2010-10-01 22:03:55 122
原创 模块编译
内核模块是Linux内核向外部提供的一个插口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM),我们简称为模块。模块具有以下特点:1 模块本身不被编译入内核映像,从而控制了内核的大小2 模块一旦被加载,它就和内核中的其他部分一样 一、 什么是模块 模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接到内核作为内核的一部分在内...
2010-09-18 15:02:59 95
Makefile和Kconfig认识
linux2.6内核的配置系统由以下3个部分组成:Makefile 定义linux内核的编译规则配置文件Kconfig :给用户提供配置选择的功能配置工具:包括配置命令解释器(对配置脚本中使用的配置命令进行解释)和配置用户界面linux内核中增加程序需要完成以下3项工作:将编写的源代码复制到linux内核源代码的相应目录。在目录的Kconfig文件中增加新源代码对应项目...
2010-09-14 18:33:56 81
原创 Spring 引入的运用
参考《Spring高级程序设计》 引入是Spring提供的AOP功能的重要组成部分。使用引入可以动态地在现有的对象中添加新的功能。当我们在现有的对象中添加的功能是一个横切关注点而用传统的面向对象方法难以实现时,我们就可以利用引入动态的添加该功能了。 Spring文档中列举了两个典型的引入用法:对象锁定和对象篡改检测。我们主要对对象篡改检测进行分析:现在我们构建一个统计信息收...
2010-09-14 10:33:29 91
原创 BeanFactoryPostProcessor类的运用
package com.spring.ch04;import org.springframework.beans.factory.config.BeanFactoryPostProcessor;import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;import org.spri...
2010-09-07 10:48:26 206
list.h库文件的分析与运用
lish.h定义双向循环链表的的相关操作。具体的源码分析网上有很多,而且你自己通过阅读注释也可以看懂每个函数的具体功能。接下来就是list.h文件的运用:由于list.h属于内核模块中的库文件(usr\src\linux-headers-version\include\linux\而默认加载的是usr\include\下的库文件,不包含list.h因此需要自己写一个库文件其中包含li...
2010-08-31 19:11:17 245
原创 如何判断两个类之间的差异
代码实现package net.mindview.util;import java.util.*;public class Sets { public static <T> Set<T> union(Set<T> a,Set<T> b){ Set<T> result=new HashSet<T>(a);...
2010-08-16 09:35:11 291
原创 HashSet和散列码的研究
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。。hashCode 散列码 散列码是由对象导出的一个整数值。在Object中有一个hashCode方法来得到散列码。 基本上,每一个对象都有一个默认的散...
2010-08-10 19:13:05 94
原创 持有对象Arrays.asList异常解决办法
添加一组元素package com.day1;import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.Collections;import java.util.List;public class AddingGroups {...
2010-08-08 17:50:29 123
java编程思想 IO13 源码 文件解压缩
package com.io;import java.io.*;import java.util.zip.GZIPInputStream;import java.util.zip.GZIPOutputStream;public class GZIPcompress { /** * 用GZIP进行简单压缩 * 直接将输出流封装成GZIPOutputStream或Z...
2010-05-09 15:21:09 179
java编程思想 IO12 源码 文件加锁
package com.io;import java.io.*;import java.nio.channels.FileLock;import java.util.concurrent.TimeUnit;public class FileLocking { /** * 文件加锁,Java的文件加锁直接映射到了本地操作系统的加锁工具 * @throws File...
2010-05-09 12:37:41 85
java编程思想 IO11 源码 内存映射访问与性能
package com.io;import java.io.IOException;import java.io.RandomAccessFile;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel;public class LargeMappedFiles { /** ...
2010-05-08 21:32:05 104
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人