Java
文章平均质量分 63
chosen0ne
互联网码农,对Linux,分布式计算和存储,编译器,nginx,脚本语言感兴趣
展开
-
Java事件驱动模型学习(JList)
事件驱动模型: 事件监听器事件源--当事件发生时通知-->事件监听器 原理分析: 任何事件监听器XXXListener都是一个接口,继承于EventListener,其中包括事件发生时的处理方法。 而每个事件源都有一个事件监听器列表EventListenerList,当事件源调用原创 2009-08-13 16:19:00 · 2556 阅读 · 0 评论 -
服务提供者框架(Service Provider Framework)
<br /> 服务提供者框架是指:多个服务提供者实现一个服务,系统为客户端提供多个实现,并把他们从多个实现中解耦出来。服务提供者的改变对它们的客户端是透明的,这样提供了更好的可扩展性。例如,JDBC,JMS等就试用了服务提供者框架。<br /> 服务提供者的组件:<br /> Service Interface:服务接口,通过抽象统一声明,由服务提供者实现。<br /> Provider Registration API:服务提供者注册API,用于系统注册服务提供者,原创 2011-01-08 19:52:00 · 2800 阅读 · 0 评论 -
麒麟远创面试题2:关于重载
麒麟远创面试题2原创 2011-01-11 17:14:00 · 2338 阅读 · 0 评论 -
字符集编码
<br /> 之前在进行网络编程、web开发时经常遇到文本的字符集编码问题,当时也没有深入的了解这方面知识,最近正好研究了一下这方面的东西,争取从本质上搞懂它。<br /> 在计算机中任何信息、数据都是以二进制的形式存储的,文本字符串也不例外。所有的字符构成字符集(Character Set),而最终每个字符都对应一个整数,所以说在计算机中存在一个字符集到一组整数的映射,这个映射可以称作编码字符集(Coded Character Set),例如,ASCII、Unicode、GB2312等等都原创 2011-03-27 15:37:00 · 1234 阅读 · 0 评论 -
Object.clone()方法
Object.clone()方法用于对象的拷贝,它会把在堆上的对象所占用的内存空间拷贝一份然后返回,这样就形成一个新的对象(个人理解)。因为每个对象所占的空间内都有一个指向其类数据的指针,也就是指向方法区中类数据(这个类数据可以通过Class对象进行访问,可以简单、直接的理解为就是指向代表其类的Class对象)。JVM会通过这个指针来判断一个对象的类型,由于把整个对象空间拷贝,所以拷贝的对象的类指针也指向相同的类对象,这就确保了obj.clone().getClass()==obj.getCla原创 2011-03-30 22:27:00 · 6895 阅读 · 1 评论 -
类似位图的数据结构BitsSet
此数据结构最主要用途是对整数进行计数,通过将集合中每个元素指定为1,2或4个bit,以降低空间复杂率。实际使用的是int数组,通过位操作实现将1个int划分为多个包含1,2或4个bit的元素。当元素包含1个bit时退化为位图。 类似于Map,对整数进行计数。将1个int划分成32/(2^n)个包含 2^n 个bit的元素,从而实现对BitsMap的下标进行[0,2^(n+1) )的计数。例如,n=0,则1个int包含32个元素,每个元素包含1个bit。BitsMap中对应每个元素的值为原创 2011-05-30 16:05:00 · 1493 阅读 · 0 评论 -
算法:用小数表示分数
<br />题目要求:用小数形式表示形如N/D这样的分数,N是分子,D是分母。如果是循环小数,将循环节放置在括号中,例如:1/3=0.33333333...=0.(3),123/444=0.27702702702...=0.27(702),4/5=0.8<br /> <br />import java.util.ArrayList;import java.util.Scanner;import static java.lang.System.*;/** * 用小数表示分数N/D,如果出现循环原创 2011-05-05 16:29:00 · 1849 阅读 · 0 评论 -
windows下通过jconsole/jvisualvm监控linux下jvm状态
Linux下要监控的java进程需要配置参数:-Djava.rmi.server.hostname=192.168.1.101 # Linux主机的ip,在windows输入的ip地址-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=8888 # 通信的端口,windows下输入原创 2011-10-25 21:34:05 · 6652 阅读 · 3 评论 -
插入集--按照顺序插入元素,得到排序集合
在之前的项目中,用到了插入集,具体的需求就是:在稀轴排花中,每个排花方法都有一个评价(方法优劣),找出最优的10个排花方法。插入集就是根据插入排序,在添加元素时,先搜索它的最终位置,然后插入,当所有元素插入完毕后,得到一个排序的集合。适用于的模型:在N个数中找出最大或最小的K个(K个元素需要排序)。只需要设定插入集的容量为K并且定长,然后遍历这N个元素,将他们添加进插入集,最后得到一个排好序的集合原创 2011-05-06 14:47:00 · 6370 阅读 · 0 评论 -
GC优化——对象复用
Java虚拟机的自动内存管理让程序员从频繁出错的内存操作中解放了,不需要像C++一样,每次new之后必须显示的调用delete进行内存释放操作。虽然,我们不用再操心内存泄露这样的bug,因为垃圾收集器可以很好的把垃圾对象清理掉。但是出于性能的考虑,最好不要肆无忌惮的创建对象,在可以复用对象的情况下尽量复用,这样可以减少对象内存的分配,降低gc的频率,有效的优化gc。 在程序运行的原创 2011-12-19 18:29:14 · 3490 阅读 · 1 评论 -
Effective Java-Item15
第15条 使可变性最小化 相对于可变对象,不可变对象只拥有一个状态(即初始化对象时的状态),这样的对象更好理解,在出现bug时也容易调试,因为它自始至终都没有变化。在并发环境下,不可变对象不需要线程同步(这就是为什么Erlang——这个为并发而生的语言——中的变量只能被赋值一次),它们是线程安全的,可以被自由的共享。 不可变类的缺点就是每个值都需要一个单独的对象,所以就原创 2011-05-04 15:11:00 · 1188 阅读 · 0 评论 -
Effective Java-Item13和Item 14
第13条 最小化类和成员的可访问性 降低类和成员的可访问性就是进行信息隐藏或者叫做封装,这可以保证模块之间持有对方最少的信息,降低模块之间的耦合度,使得模块可以独立的开发、测试、优化。这一点也符合面向对象设计原则中的最少知识原则。在实际开发过程中,尽可能使用最小的访问级别可以很好的做到信息隐藏。 类的访问级别按访问性由高到底分别为: 公开(public):可以被任何包原创 2011-05-03 15:49:00 · 1275 阅读 · 0 评论 -
进程调度模拟
进程调度就是在所有可运行的进程之间分配CPU资源,它使得在单个CPU上并发执行多个进程成为可能。本文通过java模拟时间片轮转算法,以具象化进程调度。进程是操作系统中一个重要的抽象,通过进程调度和虚拟内存机制实现了CPU和内存的虚拟化。在每个进程看来,自己是独占CPU和内存的。 下面看一下进程调度的大致原理,每个进程是程序的执行实体,相当于程序执行的容器。在进程执行时,进程有自己原创 2012-08-28 16:29:06 · 3678 阅读 · 0 评论 -
Linux下获得本机ip
java版private InetAddress getLocalIp() throws SocketException{ Enumeration e = NetworkInterface.getNetworkInterfaces(); while(e.hasMoreElements()){ NetworkInterface ni = e.nextEleme原创 2011-09-30 14:41:38 · 3137 阅读 · 0 评论 -
Java和C++中多态的实现方式
简要描述C++与java多态实现机制原创 2013-08-27 00:28:34 · 6770 阅读 · 0 评论 -
服务器端文件路径问题
服务器端程序经常要读取服务器端文件,比如:数据库配置文件,属性文件等。这时文件路径的读取不再像桌面应用时,只要简单的new File("").getAbsolutePath()就可以获取当前类的运行路径,因为这些类是运行在Tomcat服务器上的,如果采用上述方法得到的路径是%Tomcat root%/bin,而要读取的文件必须在相应的应用的文件夹下,这种方法不可取。原创 2010-06-18 14:44:00 · 5356 阅读 · 0 评论 -
XML那点事儿
一. XML简介 XML(Extensible Markup Language,可扩展标记语言)是一个用于构造其他语言的元语言。XML描述了创造这些语言的规则,每种语言都互不相同,但都使用标签来标记内容。XML定义的语言的一个例子是XHTML,相当于是XML的词汇。原创 2010-06-08 21:04:00 · 1558 阅读 · 0 评论 -
JTable的排序和过滤(分层的思想)
JTable采用的是MVC模式,JTable控制可视外观,TableModel控制数据模型。JTable不存储数据,所有的数据都从TableModel得到。TableModel可以存储数据,也可以不存储数据直接通过计算得到。这里要实现点击某列,根据此列将所有的行进行排序。 将JTable看作是视图层,TableModel看作是物理存储层。通过在视图层和物理存储层之间增加一原创 2009-08-15 20:30:00 · 3290 阅读 · 1 评论 -
Swing 框架之Renderer(一)
Swing组件根据其所操作的数据类型分为两种,一种是标量数据类型的组件,一类是复合数据类型的组件。标量数据类型的组件操作的是基本类型的数据,如字符串、布尔、数字等,此类型组件包括JTextField、JCheckBox、JLabel、JButton等。复合数据类型的组件操作的是诸如向量、矩形和非线形等类型的数据。向量数据类型的组件有JComboBox、JList,矩形数据类型的组件有J转载 2009-08-16 21:33:00 · 2321 阅读 · 0 评论 -
Swing框架之Renderer(二)
Swing的API具有很强的灵活性和可扩展性,比如标准复合数据型组件一般不需要进行渲染器扩展,就可以实现许多应用,但是当遇到需要自定义扩展的需求时,Swing的高度抽象灵活的MVC框架也可以优雅从容的完成。Swing的这一特色典型的体现在其渲染器扩展思想上。那么如何使用渲染器呢?如何自定义渲染器来扩展组件呢?如何将渲染器思想应用到自定义组件上呢? 复合数据类型的组件如JTable、JTree转载 2009-08-16 21:37:00 · 2574 阅读 · 1 评论 -
Swing框架之Renderer(三)
前面文章提到过,许多复合数据型组件不仅仅需要展现数据,还需要编辑数据。比如JTable的某些单元格可能需要编辑,JComboBox除了选择外还可以直接编辑数据,有些JTree有时也需要直接编辑节点。Swing中解决此类问题的方案叫做所谓的in-place editor。Swing综合in-place editor和Renderer原理赋予了Swing扩展复杂组件功能的能力。注意in-place e转载 2009-08-16 21:38:00 · 2600 阅读 · 0 评论 -
TableCellRenderer用法实践(一)
Swing组件根据其所操作的数据类型分为两种,一种是标量数据类型的组件,一类是复合数据类型的组件。标量数据类型的组件操作的是基本类型的数据,如字符串、布尔、数字等,此类型组件包括JTextField、JCheckBox、JLabel、JButton等。复合数据类型的组件操作的是诸如向量、矩阵和非线形等类型的数据。向量数据类型的组件有JComboBox、JList,矩阵数据类型的组件有JT原创 2009-08-16 19:24:00 · 19806 阅读 · 1 评论 -
为JTable添加RowHeader
JTable实现的TableHeader应该算是ColumnHeader,显示的是列标题。这里说的RowHeader指的是行标题,也就是行号。JTable已经默认实现了ColumnHeader,但却没有实现RowHeader。那么如何实现RowHeader?这就要通过JScrollPane,实际上JTable的ColumnHeader也是这么实现的。先来看看JScrollPane原创 2009-08-17 20:50:00 · 10495 阅读 · 4 评论 -
TableCellEditor焦点离开数据丢失问题
http://sailing8036.spaces.live.com/blog/cns!69d05dfd4294f487!513.entry?sa=48687762很多人抱怨Swing的TableCellEditor如果输入数据后,忘记敲回车键就去点击其他按钮或者组件使的editor的焦点离开,会导致输入数据丢失的情况。 一种解决方法是对editor增加focusListener在转载 2009-08-18 10:21:00 · 2213 阅读 · 0 评论 -
TableCellRenderer用法实践(2)定制JTableHeader
JTableHeader是管理JTable列头的对象,有方法可以设置默认渲染器(在TableColumn未设置渲染器的情况下)public void setDefaultRenderer(TableCellRenderer defaultRenderer) 。这样为JTableHeader设置渲染器可以绘制出自己想要的效果来显示列头。还可以通过TableColumn来设置每一列的渲染器,以原创 2009-08-17 19:50:00 · 7993 阅读 · 1 评论 -
(JDialog)对话框实现数据交换
对话框分为模式对话框和无模式对话框。模式对话框就是在弹出对话框后,父组件阻塞直到完成对话框的操作,父组件被激活。无模式对话框就是对话框与父组件并行运行。 JDialog(Dialog owner, String title, boolean modal) 其中modal为true即为模式对话框,false为无模式对话框。只要将要在对话框中显示的内容(可以原创 2009-08-23 19:55:00 · 6462 阅读 · 0 评论 -
让JLabel换行显示
JLabel可以解析html,调用setText("abc def ");结果显示为 abc def原创 2009-08-31 09:54:00 · 3509 阅读 · 0 评论 -
Java事件模型学习(2)--实现自己的事件
当程序的某个模块被调用的时刻不确定,就类似于等待某个事件的发生。这时,可以定义自己的事件进行相应的处理。比如,等待用户的一次输入等。Java的事件模型依赖于委托,通过回调方法进行相应的事件处理。在事件源中,会有fireXXXEvent()就是激活相应的事件,其中会遍历事件源的监听器队列,调用相应监听器的事件处理的回调方法。当某个事件发生时,事件源会调用fireXXXEvent()。实原创 2009-09-25 20:30:00 · 2403 阅读 · 1 评论 -
Tomcat编译jsp生成Servlet文件的存放位置
Tomcat将jsp编译成servlet后的文件存放在/work/Catalina目录下,例如jsp文件/webapps/hh/h.jsp,编译后/work/Catalina/localhost/hh/org/apache/jsp/h_jsp.javaservlet文件和.class文件都在同一目录下。 控制台报的异常行数是指编译过后的servlet文件,而不是你原来的jsp文原创 2010-03-03 21:51:00 · 6865 阅读 · 0 评论 -
日期处理
java中经常需要处理日期数据,也就是将Date类对象调转化为字符串进行存储、显示等。这里可以Date类的toString()方法,转化为字符串。但是这种方式将生成一个极其复杂的字符串类似于Wed Jan 06 09:35:41 CST 2010,并且想要把这个字符串在转化为Date对象比较麻烦。 还好sun公司提供了java.text.DateFormat这个类,对日原创 2010-01-06 09:21:00 · 964 阅读 · 0 评论 -
Poi处理Excel时公式不能更新的问题
使用Poi处理Excel时,发现如果使用Poi编辑了某个单元格A,另一个单元格B是公式并且依赖于这个单元格A,则必须打开Excel,使单元格A获得焦点,然后再移开焦点才能使公式有效。 解决方法是,Poi中提供了org.apache.poi.ss.usermodel.FormulaEvaluator这个接口,实现对公式的更新。其中HSSFFormulaEvaluator, XS原创 2010-01-06 10:59:00 · 13635 阅读 · 3 评论 -
Java操作Excel
最近搞一个项目需要操作Excel,google了一下,发现有两个第三方开源类库,分别是Jexcel和Poi。粗略地看了一下,jexcel内容不庞大,觉着我只是用一些基本的excel读写功能,它应该能满足要求。下面简要的介绍一下这两个类库。 jexcel:在用jexcel的过程中发现读的速度比较慢,操作也让人很不舒服。而且当excel的格式有问题时,总是无法写入。在网上搜了一下原创 2010-01-06 10:25:00 · 1641 阅读 · 0 评论 -
扩展JLabel实现图像的裁剪
这个组件的功能: 1. 对图片进行裁剪 2. 为每副图像维持一个裁剪操作栈 3. 裁剪的撤销,重做 4. 裁剪时可以遮掩图像,以突出显示裁剪矩形边框 5. 设置遮掩的颜色,裁剪边框的颜色 原理:JLabel持有一个剪裁矩形框,和一个遮掩矩形框。并为JLabel添加MouseListener监听器实现开始裁剪和结束裁剪,MouseMotion事件监听器实现设置裁剪矩形边框的大小。直接上代码:/* * To change this te原创 2010-07-03 11:00:00 · 1858 阅读 · 0 评论 -
Java Agent初探——动态修改代码
简单试验了一下java agent原创 2016-03-03 18:16:51 · 18076 阅读 · 1 评论