
java语言
文章平均质量分 50
imzoer
Tencent mason
展开
-
groovy函数调用,使用闭包作为参数
groovy 函数调用如果想传入一个闭包作为参数,就必须使用括号。下面是个例子:➜ ~ cat h.groovydef c={a, Closure c-> a*3 + " " + c.call("test")}print c(3) {msg-> "msg:" + msg}➜ ~ groovy h.groovy9 msg:test原创 2016-10-09 20:40:57 · 5689 阅读 · 0 评论 -
把数组排成最小的数以及Java中的Comparable接口
前几天雅虎的笔试题。今天看到了何海涛的blog,上面有写到。苦于不懂c++,看了半天他的代码还查了一下sprintf,才知道是什么意思。其实大概的思路很简单【为什么当时想出来的办法是错的】。就是说,设计一个比较规则,让两个字符串假设说是m和n,如果组成的数字mn>nm,那么就返回nm,否则返回mn。可以用字符串的比较顺序来代替数字的比较顺序。那么,代码如下:package yues原创 2012-10-01 20:56:14 · 2789 阅读 · 0 评论 -
求a的n次方,要求快速算法
求a的n次方,要求快速算法。求一个数的n(n是int型正整数)次方,比较简单的题目,但是也有比较大的优化空间。图片是求a的n次方的公式。如果n是偶数、.....如果n是奇数、.....可以看出是一个递推公式的样子,可以用递归来解决。package static_;public class Test { public static void main(String原创 2012-10-07 15:57:29 · 17105 阅读 · 4 评论 -
彻底学习Java IO
一直对java的io都心存畏惧。到了找工作的最后季节,fight!流:用于处理设备上的数据。 用于处理设备上的数据。 用于处理设备上的数据。IO 有具体的分类: 有具体的分类:1,根据处理的数类型不同:字节流和字符流。2,根据流向不同:输入流和输出流。字符流的由来: 因为文件编码的不同,而有了对字符进行高效操作流象。 原理:其实就是基于字节流读取时,去查了指定的码表。字转载 2013-02-28 12:25:26 · 1934 阅读 · 0 评论 -
js读取屏幕长宽
网页可见区域宽 document.body.clientWidth 网页可见区域高 document.body.clientHeight 网页可见区域宽(包括边线的宽) document.body.offsetWidth 网页可见区域高(包括边线的宽) document.body.offsetHeight 网页正文全文宽 document.body.scrollWidth 网页原创 2013-04-02 19:20:28 · 3000 阅读 · 0 评论 -
最长公共子串和最长公共子序列
二者含义没搞清楚,雅虎的笔试就这样的写错了。求最长公共字串的题目写成了最长公共子序列。子串要求字符必须是连续的,但是子序列就不是这样了。悲催了。子序列跟子串的求法类似,都是使用动态规划的思想,s1每次增加一个字符,看与s2当前位置的字符是不是相同,如果相同做相应的处理,如果不同,做另外的处理。子序列的处理方式:相同的情况下,该二维数组的位置等于[i-1][j-1]+1不同的原创 2012-09-29 11:22:36 · 7754 阅读 · 1 评论 -
JVM中的直接引用和符号引用
JVM在装载class文件的时候,会有一步是将符号引用解析为直接引用的过程。那么这里的直接引用到底是什么呢?对于指向“类型”【Class对象】、类变量、类方法的直接引用可能是指向方法区的本地指针。指向实例变量、实例方法的直接引用都是偏移量。实例变量的直接引用可能是从对象的映像开始算起到这个实例变量位置的偏移量。实例方法的直接引用可能是方法表的偏移量。在《深入java虚拟机》书的第1原创 2012-10-18 16:32:46 · 27786 阅读 · 8 评论 -
写出你所知道的设计模式和应用场景
1、单例模式:控制对象个数2、装饰者模式:java的IO系统中使用了较多的装饰模式,主要用于给一个对象添加更多更好的功能,比如说给输入输出流添加缓冲3、工厂模式:需要使用对象的时候使用工厂来创建对象4、抽象工厂模式:可以创建多个系统的对象5、适配器模式:在不同的系统之间做耦合的作用6、建造者模式:将创建过程封装起来7、观察者模式:当相应的事件发生的时候,通知注册了的对象,比原创 2012-09-29 13:49:07 · 5234 阅读 · 0 评论 -
Java中synchronized关键字锁定的内容
synchronized关键字能锁定什么?通常我们锁定的是一个对象或者是一个代码块。其实synchronized还能锁定一些其他内容。 同步分为 同步方法 和 同步块 两种方式。 变量分为 实例变量(不带static的变量) 和 类变量(带static的变量)。 同步锁锁定的内容是什么? 无论你将Synchronized加在方法【非stati原创 2012-10-09 22:15:56 · 10224 阅读 · 3 评论 -
Java幽灵引用的作用
找实习的时候,面试大摩,就遇到了这个问题,当时真不该跟面试官交流这个内容的。垃圾收集过程中,对象的可触及状态改变的时候,可以把引用对象和引用队列关联起来【这里说的关联,是说垃圾收集器会把要回收的对象添加到引用队列ReferenceQueue】,这样在可触及性发生变化的时候得到“通知”。当垃圾收集器对加入队列的对象改变可触及性的时候,就可以收到异步通知了。看下面的代码:package原创 2012-10-07 11:54:00 · 6687 阅读 · 0 评论 -
DOM和SAX的区别
可以使用SAX来查询或者阅读XML文档。SAX可以快速扫描一个大型的XML文档,当它找到查询标准时就会立即停止,然后再处理之。DOM是把XML全部加载到内存中建立一棵树之后再进行处理。所以DOM不适合处理大型的XML【会产生内存的急剧膨胀】。 同理,DOM的弱项就是SAX的强项,SAX不必把全部的xml都加载到内存中。但是SAX的缺点也很明显,它只能对文件顺序解析一遍,不支持对文件的原创 2012-09-29 13:40:23 · 15963 阅读 · 2 评论 -
SOAP协议理解
SOAP:简单对象访问协议,简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。在web service中使用soap协议来传输消息。soap由于是一个使用http和xml的协议,所以是可扩展的,完全与厂商无关的协议。原创 2012-09-29 13:52:30 · 796 阅读 · 0 评论 -
java内部类详解
主要参考了这篇文章。所谓内部类,即是说,定义在一个类内部的类。内部类能够访问到外部类的所有数据。那么内部类是如何做到能够访问外部类的数据的呢?是这样的,用外围类创建内部类对象时,此内部类对象会秘密的捕获一个指向外围类的引用,于是,可以通过这个引用来访问外围类的成员。通常,这些都是编译器来处理,我们看不到,也不用关心这个。正是因为如此,我们创建内部类对象时,必须与外围类对象相原创 2012-05-05 11:30:54 · 966 阅读 · 0 评论 -
Erlang尾递归
再一次被鄙视了。是不是被鄙视的次数多了就不会有感觉了。被问到了Erlang,没有循环结构【傻缺的设计】,怎么计算一个数组的和呢。这个用递归可以解决,那么接下来一个问题让人头痛。递归是可以解决,那么,如果递归深度很深,栈就爆掉了。请问如何优化呢?这个真没了解过。回来查了一下,Erlang中有一个叫做“尾递归”的概念,编译器会帮忙把尾递归优化成一个循环结构,这就是为什么Erlang原创 2012-09-23 10:25:58 · 2016 阅读 · 0 评论 -
双堆维护数组中位数
求数组中位数的方法:1、排序2、双堆3、findk用堆维护中位数的意思是说,设计两个堆,第一个堆存放小于中位数的元素,第二个堆存放大于中位数的元素。下面是双堆维护中位数的语言描述:1、初始化的时候设置两个变量分别记录两个堆【左堆和右堆】的元素的个数。2、取第一个元素【d[0]】作为初始中位数m。3、循环后面的每一个元素,如果比m大,则插入到右堆,如果比m小,则插入到原创 2012-09-23 20:04:29 · 3967 阅读 · 0 评论 -
求数组中唯一重复的元素
题目:数组a[N],1至N-1这N-1个数存放在a[N]中,其中某个数重复一次。写一个函数,找出被重复的数字。异或法数组a[N]中的N个数异或结果与1至N-1异或的结果再做异或,得到的值即为所求。设重复数为A,其余N-2个数异或结果为B。N个数异或结果为A^A^B1至N-1异或结果为A^B由于异或满足交换律和结合律,且X^X = 0 0^X = X;则有(A^B)^(A^A^B原创 2012-09-24 16:03:26 · 4191 阅读 · 6 评论 -
求一个字符串中所有字符的组合
求组合的问题,跟求排列的问题类似,很容易的想到递归的实现方式。在求一个字符串中所有字符的组合的时候,针对一个字符,有两种情况,假设在长度为n的字符串中选择长度为m的组合字符串,第一是选择长度为n的字符串中的第一个字符,那么要在其余的长度n-1的字符串中选择m-1个字符第二是不选择长度为n的字符串中的第一个字符,那么要在其余的长度n-1的字符串中选择m个字符递归结束的条件就是,当m为原创 2012-10-01 16:19:07 · 14787 阅读 · 2 评论 -
Java方法调用
方法调用,分为两种。解析调用和分派调用。解析调用方法调用的任务不是方法执行,而仅仅是确定,要调用的方法的版本。第一种是在类加载时候的解析阶段就能够确定方法调用的版本的,这种情况被称作是“解析”第二种是在运行时候才能确定调用方法的版本,这成为“动态分派”。先说说第一种,“解析”能够在类加载的解析阶段就确定调用版本的,有两种函数,第一是private函数,第二是静态方法。这两种原创 2012-10-07 11:08:57 · 1099 阅读 · 0 评论 -
输入一个int型数字n,输出从1到最长为n位的全部数字
题目:输入一个int型数字n,输出从1到最长为n位的全部数字。代码参考了何海涛博客的代码。主要点是,考虑数字超出了int型的最大表示范围该怎么办。这里不能直接用int型来表示。而是改用char数组,每一个char表示一位数字。package yuesef;public class TT { public static void main(String ss[]) { Prin原创 2012-10-01 22:08:21 · 3986 阅读 · 0 评论 -
Ant学习
这里介绍了ant入门,自己编写了build.xml并且执行编译工作。下面是build.xml文件。<!--project元素。name属性指定工程的名称,default属性 指定ant默认执行的target,即不指定要执行的target时,ant 执行的target。basedir指定本工程的基准目录,这里指定为 当前目录。-->原创 2013-09-26 14:36:47 · 4681 阅读 · 1 评论 -
Java-泛型总结
http://www.cnblogs.com/sunwei2012/archive/2010/10/08/1845938.html泛型的内容很多。这篇文章写的不错原创 2013-09-24 11:56:44 · 1478 阅读 · 0 评论 -
Java-使用WeakHashMap做缓存
WeakHashMap使用WeakReference做WeakHashMap的Value。当key的引用被置为null的时候,map的内容会被很快gc。package comz;import java.io.BufferedReader;import java.io.FileReader;import java.util.ArrayList;import java.util.List原创 2013-09-12 15:10:56 · 6975 阅读 · 0 评论 -
Java判断一个文件是否是链接文件
Apache使用这样的方式来判断:public static boolean isSymlink(File file) throws IOException { if (file == null) throw new NullPointerException("File must not be null"); File canon; if (file.getParent()原创 2013-09-11 04:02:44 · 4366 阅读 · 1 评论 -
Java中 CopyOnWriteArrayList 的使用
java中,List在遍历的时候,如果被修改了会抛出java.util.ConcurrentModificationException错误。看如下代码:import java.util.ArrayList;import java.util.List;public class Resource3 { public static void main(String[] args) th原创 2013-08-04 23:33:52 · 36198 阅读 · 10 评论 -
ThreadLocal工作原理
在这篇文章中,总结了一下面试过程中遇到的关于ThreadLocal的内容。总体上说,这样回答,面试算是过得去了。但是,这样的回答,明显仅仅是背会了答案,而没有去研究ThreadLocal的最根本的实现原理。一共有两个问题。1、每个线程的变量副本是存储在哪里的?2、变量副本是怎么从共享的那个变量赋值出来的?源码中的threadlocal的初始值是什么时机设置的?===========原创 2012-12-05 21:03:00 · 33019 阅读 · 15 评论 -
Java中Synchronized和Lock的使用
Lock的锁定是通过代码实现的,而 synchronized 是在 JVM 层面上实现的synchronized在锁定时如果方法块抛出异常,JVM 会自动将锁释放掉,不会因为出了异常没有释放锁造成线程死锁。但是 Lock 的话就享受不到 JVM 带来自动的功能,出现异常时必须在 finally 将锁释放掉,否则将会引起死锁。在资源竞争不是很激烈的情况下,偶尔会有同步的情形下,syn原创 2013-07-24 23:46:19 · 13736 阅读 · 0 评论 -
Java中实现CallBack功能
在很多场景,作为开发都会想到,在执行完毕一个任务的时候,能执行一个callback函数是多么好的事情。现在模拟一下这个情景:定义三个类。分别是主函数类。callback函数的接口类。业务处理类。在业务处理类中,处理完业务之后,执行一个callback函数。package comz;public class Main { public static void main(String原创 2013-07-23 14:51:35 · 26004 阅读 · 3 评论 -
Java锁机制
问:为什么说java的syncronized关键字的效率很低?这是因为,java中线程是映射到操作系统的原生线程上的。如果要唤醒或者是阻塞一条线程需要操作系统的帮忙。这就需要从用户态转换到核心态。因此,状态转换需要相当长的时间。所以说syncronized关键字是java中比较重量级的操作。虚拟机本身会做一些优化。比如,在通知操作系统阻塞线程之前,加入一段自旋等待过程,避免频繁的切入到和心态中原创 2012-10-04 21:56:59 · 1728 阅读 · 1 评论 -
Java中Collections学习
一直没有专门看看Collections到底能做什么。前几天导师还问到了这个问题。现在学习总结一下:Collection是集合类的一个顶级接口,其直接继承接口有List与Set而Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。此类不能实例化。Collections中有一些工具函数,比如说sort、r原创 2013-07-23 10:00:40 · 4555 阅读 · 0 评论 -
监控节点网络连接状况----ping的使用以及使用Java线程池并发
项目中有监控各个节点的状态。其中监控网络连接情况的时候,需要每个节点都ping一次。如果用单线程每个挨着ping,那么耗费的时间量是巨大的。此时就要想到并发的思想。用多个线程并发的去ping。而且,ping命令是有很到参数可以使用的。本人在win下使用,截图如下:其中,-w命令是指定等待回复的超时时间。这里参数是毫秒。默认等待回复超时时间是1秒钟。可以设置指定的超时时间。---原创 2013-05-06 12:22:55 · 4308 阅读 · 1 评论 -
Java中使用RandomAccessFile向文件最后写入内容
package xml.parser;import java.io.RandomAccessFile;public class AppendInfoToFileEnd { /** * 向文件最后一行写入内容 * * @param filePath * @param info */ public static void append(String filePath,原创 2013-04-14 22:33:32 · 9898 阅读 · 0 评论 -
Java向Properties文件中写入内容
String filePath = "H:\\final\\code\\Servlet_Ajax\\src\\test\\aa.txt"; Properties prop = new Properties(); try { InputStream fis = new FileInputStream(filePath); // 从输入流中读取属性列表(键和元素对) prop原创 2013-03-26 11:45:53 · 15044 阅读 · 0 评论 -
当泛型遇到重载
当泛型遇到了重载,好戏,就发生了。请看下面代码:问题:代码能正确编译吗?这个题目是一个考察泛型的题目。java里面,泛型实际上是“伪泛型”,并不像C#那样是实际上的泛型。IDE会提示我们下面的错误:Method test(List) has the same erasure test(List) as another method in type TR在java中,泛型原创 2012-10-04 12:53:41 · 12527 阅读 · 10 评论 -
Java运行期间动态确定调用方法的本质
Java为什么能运行期间动态确定调用方法?是怎么实现的呢。在继承关系中,运行时动态确定要调用的方法的版本,是根据字节码指令invokevirtual来完成的。需要从这个指令的"多态查找"过程说起。invokevirtual的运行过程如下:第一、找到操作数栈顶元素的实际类型,记做C,第二、如果在才、C中找到与常量中描述符和简单名称都相同的方法,则进行权限校验,如果通过,则返回这个方法原创 2012-10-05 10:30:54 · 2064 阅读 · 0 评论 -
机试:求一个二进制数中0的个数
求一个二进制数中0的个数【求1的个数同理】package comz;public class TT { public static void main(String[] args) { test(); } /** * 统计二进制数中0的个数[除法操作] */ public static void test() { int d = 8;原创 2012-09-24 23:24:09 · 5889 阅读 · 0 评论 -
java实现生产者消费者模型
主要看一下这个链接。生产者消费者模型,主要的就是线程之间的同步。二者共享一个空间,在示例中就是那个pool。当生产者收到pool空的消息之后,就锁住pool,并且不断将生产的产品添加到pool。直到pool为满的时候,调用notifyAll通知消费者,并且生产者本身调用pool.wait()方法进行等待。当消费者收到pool满可以消费的实惠,也锁住pool,并且不断消费其中的产品。原创 2012-04-06 19:55:46 · 1037 阅读 · 0 评论 -
Java面试复习
----------------------------------------------------java是基于栈来执行的。栈是解决程序如何运行的问题。而堆是解决程序数据如何存储的问题。java中每个线程都有一个线程栈与之对应。这点很容易理解。因为不同的线程有不同的业务逻辑,因此需要一个独立的线程栈。而堆则是所有线程所共享的。栈的大小是在程序编译的时候就确定好了的【可以在原创 2012-11-27 11:06:37 · 1225 阅读 · 0 评论 -
js中,json转string
function json2str(o) { var arr = []; var fmt = function(s) { if (typeof s == 'object' && s != null) return json2str(s); return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s; } f转载 2012-12-28 14:04:33 · 761 阅读 · 0 评论 -
Java接口
1、接口中,属性必须明确赋初值。2、接口中的属性比如说int a;,默认的修饰符是public static final。3、接口里方法只有public和abstract两个修饰符。默认就是public abstract,不接受诸如private等的修饰符。4、接口里面的方法不能有static修饰符。原创 2012-10-03 21:09:35 · 755 阅读 · 0 评论 -
HtmlParser用法
htmlparser中有两种访问节点的方式1、filter。通过filter,能够过滤出我们关心的节点。从而对节点进行进一步的访问。2、vistor。vistor和filter不同。vistor是遍历内容树的每一个节点,对于符合条件的节点做相应的处理。先看一下下面的html代码: id="treeDemo_1_switch">原创 2012-11-18 17:55:56 · 4049 阅读 · 2 评论