`
mars914
  • 浏览: 432825 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
一、安装        ubuntu中sendmail函数可以很方便的发送邮件,ubuntu sendmail先要安装两个包。 必需安装的两个包: sudo apt-get install sendmail sudo apt-get install sendmail-cf   下面几个包是可选的: squirrelmail //提供webmail spamassassin //提供邮件过滤 mailman //提供邮件列表支持 dovecot ...
1.多where,少having where用来过滤行,having用来过滤组   聚合语句:统计分组数据时用,对分组数据再次判断时用having HAVING子句可以让我们筛选成组后的各组数据.; Y( }; X, \5 m1 OHAVING子句在聚合后对组记录进行筛选而WHERE子句在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region HAVING SUM(area)>1000000     在查询过 ...
1.引子    中国有一句古话,叫做“不撞南墙不回头",生动的说明了一个人的固执,有点贬义,但是在软件编程中,这种思路确是一种解决问题最简单的算法,它通过一种类似于蛮干的思路,一步一步地往前走,每走一步都 ...
原因:常见的有以下几种: 1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据; 2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收; 3.代码中存在死循环或循环产生过多重复的对象实体; 4.使用的第三方软件中的BUG; 5.启动参数内存值设定的过小; 常见错误提示:1.tomcat:java.lang.OutOfMemoryError: PermGen space
1、String类   String 本身的值是不能改变的,任何对String的操作都会引起新的String对象的产生。    String a = "a"; //假设a指向地址0x0001    a = "b";//重新赋值后a指向地址0x0002,但0x0001地址中保存的"a"依旧存在,但已经不再是a所指向的,a 已经指向了其它地址。    因此String的操作都是改变赋值地址而不是改变值的操作 String S1 = “abc”; For(int i = 0 ; i < 10000 ;i ++) ...
一、abstract 类 如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类 1. abstract 类不能直接被实例化 2. abstract 方法不能在它的类中实现,必须在其子类中实现 3. 采用abstract方法的类就是抽象类,并且必须被声明为abstract. 4. 仅当abstract类的子类实现其超类的所有abstract方法时,才能被实例化,这种类是具体类. 5. 如果abstract类的子类没有实现其超类的所有abstract方法时,该子类也是abstract类 6. abstract关键字不能应用于static , private, final方法时, ...
    OpenSSH是SSH连接工具的免费版本。telnet,rlogin和ftp用户可能还没意识到他们在互联网上传输的密码是未加密的,但SSH是加密的,OpenSSH加密所有通信(包括密码),有效消除了被监听,连接劫持和其它攻击。此外,OpenSSH提 ...
在cpp的代码之中有这样的一段代码: #ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } #endif   解释一下: 首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入extern "C"{和}处理其中的代码。         要明白为何使用extern "C",还得从cpp中对函数的重载处理开始 ...
HIVE详细配置手册 1)下载hive HIVE只需在Master节点中安装和配置即可。 所以版本是hive-0.7.1,已安装的hadoop版本为hadoop-0.20.204.0,解压到master节点上的/usr/local/hadoop/contrib目录 解压       [root@master:hadoop]$ tar zxvf hive-0.7.1.tar.gz [root@master:hadoop]$mv hive-0.7.1 contrib/hive   2)配置hive 1.修改bin/hive-config.sh,添加jdk支持      ...
ajax跨域调用有两种方式,一种是iframe的方式,通过设置document.domain来实现,一种则是通过设置jsonp来实现。   一 、ajax 跨域调用的问题 本地建了三个站点,并设置了host文件模拟跨子域和跨全域 hello.com blog.hello.com world.com   h ...
基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型。它们是我们编程中使用最频繁的类型,因此面试题中也总少不了它们的身影,在这篇文章中我们将从面试中常考的几个方面来回顾一下与基本类型相关的知识。基本类型共有八种,它们分别都有相对应的包装类。关于它们的详细信息请看下表:1. 基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境 ...
     内部类是指在一个类的内部再定义一个类,相对这个类为外部类,定义的类为内部类inner class。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为静态,可用protected和private修饰(而外部类只能使用publ ...
 域 (Domain)       域,对于分布式部署,是最重要的概念之一; 逻辑上,它是一个很模糊的概念, 理论:SCA Domain描述一个完整的运行时配置,潜在地可以被部署到一系列内连的运行时节点上; 应用:它是一个容器,更是一个系统 ...
数组:存储一组相同类型数据得数据结构。数组不能改变数组元素,也就是容量固定。 下列的程序段解释一个数组在必要的时候如何扩展(一般扩展到两倍大小): int[] arr=new int[20];         ...... //下面进行扩展 int[] newArr=new int[arr.length*2]; for(int i=0;i<arr.length;i++){     newArr[i]=arr[i]; } arr=newArr;   如果要动态改变数组长度,可以用另外一组数据结构----数组列表(array List)。

Java的SPI机制

    博客分类:
  • java
    SPI的全名为Service Provider Interface.普通开发人员可能不熟悉,因为这个是针对厂商或者插件的。在java.util.ServiceLoader的文档里有比较详细的介绍。究其思想,其实是和"Callback"差不多。“Callback”的思想是在我们调用API的时候,我们可以自己写一段逻辑代码,传入到API里面,API内部在合适的时候会调用它,从而实现某种程度的“定制”。     典型的是Collections.sort(List<T> list,Comparator<? super T> c)这个方法,它的第二个参 ...
Global site tag (gtag.js) - Google Analytics