Java
iteye_21045
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java clone备忘
1.Object clone 就是复制一个对象的复本,在Factory模式中比较常用。对象要实现Clone的功能,就必须implements Clonable interface, 事实上,这是一个没有任何method的interface。对象的clone方法是Object类的方法,如果对象没有implements Clonable,就会throw CloneNotSupportedExcepti...2009-12-09 14:39:42 · 104 阅读 · 0 评论 -
java实现远程桌面监控
java里面的Robot类可以完成截图的功能,借助于这点,我尝试着做了一个简陋的桌面监控程序,运行了下,感觉速度还可以,还有很大的优化空间的,比如用udp协议取代tcp等。代码也写的不是很优雅,只在娱乐了。 实现原理其实很简单,在被监视者的机器上,运行一个线程,每隔一段时间就自动截图,并把截图压缩发送到指定的机器上;在监视机器上,也是运行一个线程,接收发送过来的图片包,解压,并绘...2009-05-10 19:28:21 · 854 阅读 · 0 评论 -
Java IO归纳
Java的IO基于装饰器模式设计。根接口是InputStream/OutputStream,根据来源不同充当数据源的有FileInputStream/FileOutputStream, ByteArrayInputStream/ByteArrayOutputStream等,充当装饰功能的IO类有 BufferedInputStream/BufferedOutputStream, DataI...2009-05-17 14:39:49 · 111 阅读 · 0 评论 -
classloader整理
classloader它就是用来加载Class文件到JVM,以供程序使用的。我们知道,java程序可以动态加载类定义,而这个动态加载的机制就是通过ClassLoader来实现的. 所有的classloader都是java写的,除了bootstrap classloader。这个ClassLoader在JVM运行的时候加载java核心的API以满足java程序最基本的需求,其中就包括用...2009-05-18 18:08:22 · 125 阅读 · 0 评论 -
Java修饰符归纳
[color=red]final[/color]1.final类 final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,确信这个类不会载被扩展,那么就定义为final类。2.final方法 如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。final不能用于修饰构造方法。...2009-05-20 17:26:10 · 93 阅读 · 0 评论 -
远程调用之RMI
RMI(Remote Method Invocation)是jdk内自带的RPC实现方式,先来看下基于RMI的一次完整的远程通信过程的原理: 1.客户端发起请求,请求转交至RMI客户端的stub类; 2.stub类将请求的接口、方法、参数等信息进行序列化; 3.基于socket将序列化后的流传输至服务器端; 4.服务器端接收到流后转发至相应的skelton类;...2009-05-22 00:03:03 · 135 阅读 · 0 评论 -
Jar冲突解决一
目的是classpath中线性的jar排列扩展成树型排列。方案原理遍历classpath,对于每个jar定制一个ComponentClassLoader,每个jar内部的mainfest文件存储这个jar的依赖关系,由ManagerClassLoader负责根据依赖关系找到相应的ComponentClassLoader加载。如下是静态依赖关系: ComponentClassLoad...原创 2010-08-23 10:46:38 · 207 阅读 · 0 评论 -
Jar冲突解决二
方案思想 自定义CustomClassLoader,彻底改变classloader的加载方式,自己管理class缓存以及配置文件重定向。根据自定义的加载规则控制3rd jar和配置加载。CustomClassLoader是自定义的classloader, 修改了java的默认委托规则,任何情况优先加载指定的jar,其父加载器是SystemClassLoader.相对方案一 可以指定系统中的具体...原创 2010-08-23 11:54:54 · 285 阅读 · 0 评论 -
JCE provider管理的问题
[b]现象[/b]两个module A和B分别采用了infosec的不同版本,虽然classloader已经保证了A和B所依赖的资源均可以正确的load, 并且成功地newInstance() 或者new构造,但是仍然出现ClassCastException、ClassNotFoundException、NoSuchMethodException等异常[b]问题分析[/b]Secu...原创 2010-08-23 13:24:50 · 1134 阅读 · 1 评论 -
SelectableChannel关闭注意事项
SocketChannel和ServerSocketChannel,两者的父类是SelectableChannel,它在jdk中的文档有这么段话:[color=red] Once registered with a selector, a channel remains registered until it is deregistered.This involves dealloca...2010-03-29 11:49:08 · 269 阅读 · 0 评论 -
负载均衡备注二
Lvs或者F5的负载体系中,所有的请求需要请过dispatcher,从体系上说,它就是所谓的热点设备,无论这个设备的性能多么卓越,迟早会成为性能瓶颈。看过memcached的系统架构后,结合自身的系统特点,也可以做到客户端来实现负载。memcached虽然称为分布式缓存服务器,但服务器端并没有分布式功能,是完全由客户端程序库实现的。[b]初步方案:[/b][img]http://dl.it...2010-03-30 11:41:57 · 118 阅读 · 0 评论 -
HttpURLConnection设置代理
设置全局代理,JVM范围内有效:[code="java"] System.getProperties().put("proxySet", "true"); System.getProperties().put("proxyHost", "proxy.xxx.com"); System.getProperties().put("pro.原创 2011-01-21 11:00:01 · 753 阅读 · 0 评论 -
简单的轮子--IOC容器
产品的需求越来越多,则开发了越来越多的功能,同时也带来了越来越多的第三方library.这要是做server也就无所谓了,问题是我现在的这个东东,是个C/S的。看着Client里面越来越多的第三方jar,日益扩大的安装文件,这是个问题。 Client用到了Spring作为IOC容器来构造所有swing组件以及后台Bean,仔细分析了下,也就只用到了spring的IOC,最简单的Spr...2009-05-10 15:48:43 · 117 阅读 · 0 评论 -
Java也可以截图
java.awt.Robot类真的很好玩。玩Robot会给你带来很多乐趣。自从玩过Robot这个类后,有点爱不释手了,实在是很强大的东西,借助于它,自己弄个截屏程序就是很简单的[code="java"]public void snapShot() { try { //屏幕大小 Dimension d = Toolkit.getDefaultToolkit().getScree...2009-05-10 14:48:41 · 220 阅读 · 1 评论 -
多线程常用模式总结一
[color=red]线程同步[/color]线程同步其实就是线程排队访问资源。只有访问共享变量的情况下才需要同步。其一,要是共享的资源,比如一个文件,一个内存变量。其二,要是变量,如果是常量就不需要同步了。[color=red]线程锁定[/color]同步的实现方法,就是线程锁定。线程访问共享资源,此线程即持有锁,如果此线程不release这个锁,其他线程就无法访问。锁定通过sy...2009-05-08 00:33:01 · 162 阅读 · 0 评论 -
多线程常用模式总结二
6.Thread-Per-Message模式这个模式在swing开发中随处可见。比如我们希望点击一个按钮就启动文件系统扫描程序,一般的做法就是[code="java"]okButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { new Thread(...2009-05-08 00:33:53 · 132 阅读 · 0 评论 -
多线程常用模式总结三
9.线程变量ThreadLocalThreadLocal是一个线程局部变量,为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种的线程绑定机制。每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。也就是说,JVM 为每个运行的线程,绑定了私有的本地实例存取空间,从而为多线程环境常出现的并发访问问题提供了一种隔离机制。这样的结果是耗费了内存,但是大大减少了线程同步所带来...2009-05-08 00:34:41 · 168 阅读 · 0 评论 -
java处理图片
1.压缩图片java下有直接方式可制作缩小图,最简单的方式就是等比例缩小宽、高,然后重新绘制保存。详细代码如下[code="java"]/** * @param srcURL 原图地址 * @param destURL 缩略图地址 * @param extractBase 压缩基数 * @param scale 压缩限制(宽/高)比例 * @throws Ex...2009-05-08 00:37:20 · 113 阅读 · 0 评论 -
图片与字节数组的转换
项目中遇到的问题,总结下。[code="java"]public class ImageUtil { /** * 转换Image数据为byte数组 * @param image * Image对象 * @param format * image格式字符串.如"gif","png" * @return byt...2009-05-08 00:38:17 · 224 阅读 · 0 评论 -
Java各种路径和参数
1.JSP中获得当前应用的相对路径和绝对路径: 根目录所对应的绝对路径:request.getRequestURI() 文件的绝对路径:application.getRealPath(request.getRequestURI()); 当前web应用的绝对路径 :application.getRealPath("/"); 取得请求文件的上层目录:new File(applicati...2009-05-08 00:39:42 · 952 阅读 · 0 评论 -
Java Socket异常整理
最近跟进性能测试,碰到了各种各样的IOException,到处google,现把常见的网络异常大概的总结下。1.java.net.SocketTimeoutException.这个异常比较常见,socket超时。一般有2个地方会抛出这个,一个是connect的时候,这个超时参数由connect(SocketAddress endpoint,int timeout)中的后者来决定,还有就是s...2009-05-08 00:41:27 · 551 阅读 · 0 评论 -
ConcurrentHashMap
实现原理锁分离 (Lock Stripping)ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的hash table,它们有自己的锁。只要多个修改操作发生在不同的段上,它们就可...原创 2009-05-08 00:54:06 · 111 阅读 · 0 评论 -
JavaGC知识整理
堆JVM管理的内存叫堆。在32Bit操作系统上有1.5G-2G的限制,而64Bit,我可以设到64G,再往上就没试过了。JVM初始分配的内存由-Xms指定,默认是物理内存的1/64。JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制,可以由-XX:MinHeapFreeRatio=指定。默认空余堆内...2009-05-08 00:55:22 · 129 阅读 · 0 评论 -
jdk1.5的多线程总结一
Java 5.0里新加入了三个多线程包:java.util.concurrent, java.util.concurrent.atomic, java.util.concurrent.locks. java.util.concurrent包含了常用的多线程工具,是新的多线程工具的主体。 java.util.concurrent.atomic包含了不用加锁情况下就能改变值的原子变量,比如说A...原创 2009-05-10 01:17:28 · 239 阅读 · 0 评论 -
jdk1.5的多线程总结二
新的Synchronizer:Java 5.0里新加了4个协调线程间进程的同步装置,它们分别是Semaphore, CountDownLatch, CyclicBarrier和Exchanger。Semaphore:用来管理一个资源池的工具,Semaphore可以看成是个通行证,线程要想从资源池拿到资源必须先拿到通行证,Semaphore提供的通行证数量和资源池的大小一致。如果线程...原创 2009-05-10 13:07:57 · 140 阅读 · 0 评论 -
Java上clear Squid缓存
实现原理: 构造TCP请求,调用Squid自带的Purge.前提条件: Squid需要配置支持purge[code="java"] private void purge(String ip, int port, String uri) throws IOException { Socket sk = null;...原创 2011-11-29 10:26:26 · 244 阅读 · 0 评论
分享