文章分类 -  JAVA基础

摘要:网上有很多方法给PDF添加图片,都是PDF已经生成好了,再合成一个图片上去。这样很麻烦,要计算图片的位置。后来发现了这个方法,可以直接在PdfPcell里添加一个Image,这样就不用计算位置和大小了。直接填充满cell就可以当背景了。首先要实现PdfPCellEvent接口,如下:class Im... 阅读全文
posted @ 2015-11-26 00:19 寂静沙滩 阅读(2228) 评论(0) 推荐(0)
摘要:JDBC1.0、JDBC2.0、JDBC3.0中分别用以下方法创建Statement。JDBC1.0:createStatement()JDBC2.0:createStatement(resultSetType, resultSetConcurrency)JDBC3.0: createStateme... 阅读全文
posted @ 2014-05-26 00:06 寂静沙滩 阅读(815) 评论(0) 推荐(0)
摘要:查找的瓶颈 Class.getMethods()方法会自动缓存(其他getMethod也一样),所以第一次查找会比较慢,再次查找就直接从缓存里取了。如果禁用了缓存每次都要去查询了,System.getProperty("sun.reflect.noCaches")默认为true。但每次调用getMethod方法还是都要做checkMemberAccess的验证,这个验证还没看,不知道需要花多少效率。invoke的瓶颈 用native code就不说了, 当调用次数达到一定的阀值的时候,sun jdk 会使用MethodAccessorGenerator.generate 生 阅读全文
posted @ 2014-01-14 17:20 寂静沙滩 阅读(499) 评论(0) 推荐(0)
摘要:How to add Annotations at Runtime to a java class method using Javassist?Annotations are a new feature from Java 5. Annotations are a kind of comment or meta data you can insert in your Java code. But how can we add them dynamically at runtime to the java class since the jdk doesn’t provide any addA 阅读全文
posted @ 2014-01-10 22:43 寂静沙滩 阅读(2471) 评论(0) 推荐(0)
摘要:jvm运行时刻内存的分配其中有一个内存区域是jvm虚拟机栈,每一个线程运行时都有一个线程栈,线程栈保存了线程运行时候变量值信息。当线程访问某一个对象时候值的时候,首先通过对象的引用找到对应在堆内存的变量的值,然后把堆内存变量的具体值load到线程本地内存中,建立一个变量副本,之后线程就不再和对象在堆内存变量值有任何关系,而是直接修改副本变量的值,在修改完之后的某一个时刻(线程退出之前),自动把线程变量副本的值回写到对象在堆中变量。这样在堆中的对象的值就产生变化了。下面一幅图描述这写交互。read and load 从主存复制变量到当前工作内存use and assign 执行代码,改变共享.. 阅读全文
posted @ 2013-12-09 22:33 寂静沙滩 阅读(1293) 评论(0) 推荐(0)
摘要:最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了。 下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方。 1、尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 第一,控制资源的使用,通过线程同步来控制资源的并发访问; 第二,控制实例的产生,以达到节约资源的目的; 第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。 ... 阅读全文
posted @ 2013-12-04 23:13 寂静沙滩 阅读(202) 评论(0) 推荐(0)
摘要:这是一个经常被时时提出来的问题,很多时候我们以为理解了、懂了,但深究一下,我们却发现并不懂。方法是我们每天都在写得,很多程序员大多都使用实例化方法,而很少使用静态方法,问原因也说不出来所以然,或者简单的回答两者定义的区别,静态方法不需要new就可以使用实例化方法需要new了以后才可以使用。。。。我们真的理解了吗?从实际项目开发说起,这里有开发项目的三种方式:开发项目中把BLL和DAL分开,在BLL调用DAL的代码。一、在DAL中使用静态方法,不创建实例直接调用(大概有很多人都使用这种方式开发)class DAL{public static string GetUserName(...);}在B 阅读全文
posted @ 2013-09-13 11:03 寂静沙滩 阅读(619) 评论(0) 推荐(0)
摘要:最近有很多人 呼吁 要在JAVA的新版本中引入闭包。那么JAVA 或者说 OOPL (面向对象编程语言)需要引入闭包吗,有了对象还需要闭包吗?收先先了解一下什么是闭包, 闭包 是可以包含自由(未绑定)变量 的代码块;这些变量不是在这个代码块或者任何全局上下文中定义的,而是在定义代码块的环境中定义。“闭包” 一词来源于以下两者的结合:要执行的代码块(由于自由变量的存在,相关变量引用没有释放)和为自由变量提供绑定的计算环境(作用域)。可能上面的定义有点晦涩,下面看一下《Python核心编程》 对闭包 的解释。 如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部... 阅读全文
posted @ 2013-03-01 18:13 寂静沙滩 阅读(296) 评论(0) 推荐(0)
摘要:一、内部类 将一个类定义在另一个类的里面,对里面那个类就称为内部类(内置类,嵌套类)访问特点: 非static内部类可以直接访问外部类中的成员,包括私有成员。 原因: 因为内部类中持有了一个外部类的引用, 引用的格式为: 外部类名.this非静态内部类不能定义static成员二、非静态内部类的分类1、 内部类定义在外部类的成员位置上(方法外部): 1>可以被private 、 static 成员修饰符修饰。 被Private修饰: 将内部类在外部类中进行封装。 被static修饰的内部类只能访问外部类中的静态成员,出现了访问权限、 2>在外部其它类中创建非static内部类的实例变 阅读全文
posted @ 2013-03-01 16:28 寂静沙滩 阅读(229) 评论(0) 推荐(0)
摘要:关于forName()方法这个方法总是返回要加载的类的Class类的实例1、forName(String className)单参数时, initialize=true a.总是使用当前类装载器(也就是装载执行forName()请求的类 的类装载器) b.总是初始化这个被装载的类(当然也包括:装载、连接、初始化)2、forName(String className, boolean initialize, ClassLoader loader) a.loader指定装载参数类所用的类装载器,如果null则用bootstrp装载器。 b.initialize=true时,肯定连接,而且初始化了; 阅读全文
posted @ 2013-01-08 10:55 寂静沙滩 阅读(449) 评论(0) 推荐(0)
摘要:同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不相同。所以,为了更好的回答这个问题,我先限定一下本文的上下文。本文讨论的背景是Linux环境下的network IO。本文最重要的参考文献是Richard Stevens的“UNIX® Ne 阅读全文
posted @ 2012-11-26 23:57 寂静沙滩 阅读(1087) 评论(0) 推荐(0)
摘要:Java NIO非堵塞应用通常适用用在I/O读写等方面,我们知道,系统运行的性能瓶颈通常在I/O读写,包括对端口和文件的操作上,过去,在打开一个I/O通道后,read()将一直等待在端口一边读取字节内容,如果没有内容进来,read()也是傻傻的等,这会影响我们程序继续做其他事情,那么改进做法就是开设线程,让线程去等待,但是这样做也是相当耗费资源的。Java NIO非堵塞技术实际是采取Reactor模式,或者说是Observer模式为我们监察I/O端口,如果有内容进来,会自动通知我们,这样,我们就不必开启多个线程死等,从外界看,实现了流畅的I/O读写,不堵塞了。Java NIO出现不只是一个技术 阅读全文
posted @ 2012-11-25 22:40 寂静沙滩 阅读(1455) 评论(0) 推荐(0)
摘要:Java编程中“为了性能”需做的26件事发表于2012-06-01 11:34| 20724次阅读| 来源chinaitlab| 129 条评论| 作者佚名数据结构编程性能正则表达式java摘要:最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了。 本文参考网络资源总结的一些在Java编程中尽可能要做到的一些地方。最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了。下面是参 阅读全文
posted @ 2012-11-20 17:02 寂静沙滩 阅读(138) 评论(0) 推荐(0)
摘要:为了解决对共享存储区的访问冲突,Java 引入了同步机制,现在让我们来考察多个线程对共享资源的访问,显然同步机制已经不够了,因为在任意时刻所要求的资源不一定已经准备好了被访问,反过来,同一时刻准备好了的资源也可能不止一个。为了解决这种情况下的访问控制问题,Java 引入了对阻塞机制的支持。 阻塞指的是暂停一个线程的执行以等待某个条件发生(如某资源就绪),学过操作系统的同学对它一定已经很熟悉了。Java 提供了大量方法来支持阻塞,下面让我们逐一分析。1. sleep() 方法:1) sleep() 允许 指定以毫秒为单位的一段时间作为参数,它使得线程在指定的时间内进入阻塞状态,不能得到CPU.. 阅读全文
posted @ 2012-10-30 21:30 寂静沙滩 阅读(158) 评论(0) 推荐(0)