- 博客(128)
- 收藏
- 关注
原创 GC优化——对象复用
Java虚拟机的自动内存管理让程序员从频繁出错的内存操作中解放了,不需要像C++一样,每次new之后必须显示的调用delete进行内存释放操作。虽然,我们不用再操心内存泄露这样的bug,因为垃圾收集器可以很好的把垃圾对象清理掉。但是出于性能的考虑,最好不要肆无忌惮的创建对象,在可以复用对象的情况下尽量复用,这样可以减少对象内存的分配,降低gc的频率,有效的优化gc。 在程序运行的
2011-12-19 18:29:14 3490 1
原创 通过python在两台linux服务器间传递文件
通过python -m SimpleHTTPServer可以开启一个http服务器,默认端口是8000,-m选项指示python将module作为脚本运行。这样就可以共享一台linux上的某个文件夹,在对应的文件夹下运行上面的命令,其他linux主机就可以通过http访问这个目录,进行下载。可以用curl http://220.193.1.101:8000/a.tx
2011-10-26 12:45:13 4575 1
原创 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
转载 eclipse.ini配置eclipse的启动参数
Eclipse的启动由$ECLIPSE_HOME/eclipse.ini控制,如果$ECLIPSE_HOME 没有被定义,则Eclipse安装目录下的默认eclipse.ini会生效。eclipse.ini是一个文本文件,其内容相当于在Eclipse运行时添加到 Ecli
2011-10-18 17:06:42 36148 1
原创 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
原创 windows下Nginx和PHP的安装与配置
一.软件准备1.Nginx:http://nginx.org/download/nginx-1.0.4.zip2.php:http://windows.php.net/download/php-5.2.17-Win32-VC6-x86.zip 这里需要注意一下,如果使用Apache或Nginx运行php,要选择VC6的线程安全版本,使用IIS选择VC9版本。所以这里使用前者。3.Run
2011-07-08 13:55:19 2658
原创 类似位图的数据结构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
原创 插入集--按照顺序插入元素,得到排序集合
在之前的项目中,用到了插入集,具体的需求就是:在稀轴排花中,每个排花方法都有一个评价(方法优劣),找出最优的10个排花方法。插入集就是根据插入排序,在添加元素时,先搜索它的最终位置,然后插入,当所有元素插入完毕后,得到一个排序的集合。适用于的模型:在N个数中找出最大或最小的K个(K个元素需要排序)。只需要设定插入集的容量为K并且定长,然后遍历这N个元素,将他们添加进插入集,最后得到一个排好序的集合
2011-05-06 14:47:00 6380
原创 算法:用小数表示分数
<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
原创 Effective Java-Item15
第15条 使可变性最小化 相对于可变对象,不可变对象只拥有一个状态(即初始化对象时的状态),这样的对象更好理解,在出现bug时也容易调试,因为它自始至终都没有变化。在并发环境下,不可变对象不需要线程同步(这就是为什么Erlang——这个为并发而生的语言——中的变量只能被赋值一次),它们是线程安全的,可以被自由的共享。 不可变类的缺点就是每个值都需要一个单独的对象,所以就
2011-05-04 15:11:00 1188
原创 Effective Java-Item13和Item 14
第13条 最小化类和成员的可访问性 降低类和成员的可访问性就是进行信息隐藏或者叫做封装,这可以保证模块之间持有对方最少的信息,降低模块之间的耦合度,使得模块可以独立的开发、测试、优化。这一点也符合面向对象设计原则中的最少知识原则。在实际开发过程中,尽可能使用最小的访问级别可以很好的做到信息隐藏。 类的访问级别按访问性由高到底分别为: 公开(public):可以被任何包
2011-05-03 15:49:00 1275
原创 rails3.0.5 连接MySQL5.1需要注意的问题
<br />1. mysql库的设置<br /> <br />rails3使用bundler管理gems,类似于Maven管理java库的依赖关系。所以一个项目需要的所有gems必须通过bundler来声明,即使系统中包含该gems。如果不进行设置,进行migration时会报错:!!! Missing the mysql gem. Add it to your Gemfile: gem 'mysql2'<br />只要让rails包含mysql gem就可以了,方法是在rails项目根目录下的GemFil
2011-04-06 14:19:00 2169
原创 Object.clone()方法
Object.clone()方法用于对象的拷贝,它会把在堆上的对象所占用的内存空间拷贝一份然后返回,这样就形成一个新的对象(个人理解)。因为每个对象所占的空间内都有一个指向其类数据的指针,也就是指向方法区中类数据(这个类数据可以通过Class对象进行访问,可以简单、直接的理解为就是指向代表其类的Class对象)。JVM会通过这个指针来判断一个对象的类型,由于把整个对象空间拷贝,所以拷贝的对象的类指针也指向相同的类对象,这就确保了obj.clone().getClass()==obj.getCla
2011-03-30 22:27:00 6895 1
原创 字符集编码
<br /> 之前在进行网络编程、web开发时经常遇到文本的字符集编码问题,当时也没有深入的了解这方面知识,最近正好研究了一下这方面的东西,争取从本质上搞懂它。<br /> 在计算机中任何信息、数据都是以二进制的形式存储的,文本字符串也不例外。所有的字符构成字符集(Character Set),而最终每个字符都对应一个整数,所以说在计算机中存在一个字符集到一组整数的映射,这个映射可以称作编码字符集(Coded Character Set),例如,ASCII、Unicode、GB2312等等都
2011-03-27 15:37:00 1234
原创 理解构建者模式(Builder)
构建者模式用于构造对象,适合于:当构造对象时需要大量的可选参数。在这方面静态工厂方法和构造器都不是很擅长,因为在这种情况下原本不想设置的参数,也必须传递值。随着参数的增加,这种问题会更加严重,尤其是当参数中包含相同的数据类型时,使用者必须详细阅读API才能防止误传参数。 对于大量可选参数的情况,通常习惯使用重叠构造器或者是使用JavaBeans模式。 场景:考虑使用一个类表示食品的营养成分标签。包含如下几个必需域:每份的含量、每罐的含量以及每份的卡路里;还包含多个可选域:总脂
2011-01-13 10:54:00 2126
原创 麒麟远创面试题1:随机播放CD
题目要求:一个CD机,有一个专门存放CD的CD仓。现在,CD仓中存有n张CD,要求这个CD机可以随机播放这n张CD一次,即要保证每张CD都会播放一次且仅播放一次 在面试之前上网查过麒麟的面试题,其中有这道题,但是当时没在意,也没有仔细想如何做。面试的时候,想到了一个算法,基于分治算法,应该可以很好的解决这个问题。 算法思想:把cd仓看成是一个大小为n的数组a,题目的要求是随机访问a中n个元素一次且仅一次。可以基于分治法将这个问题划分成两个子问题,解决完子问题后再合并子问题。划分子问题如下
2011-01-11 16:10:00 4446 1
原创 服务提供者框架(Service Provider Framework)
<br /> 服务提供者框架是指:多个服务提供者实现一个服务,系统为客户端提供多个实现,并把他们从多个实现中解耦出来。服务提供者的改变对它们的客户端是透明的,这样提供了更好的可扩展性。例如,JDBC,JMS等就试用了服务提供者框架。<br /> 服务提供者的组件:<br /> Service Interface:服务接口,通过抽象统一声明,由服务提供者实现。<br /> Provider Registration API:服务提供者注册API,用于系统注册服务提供者,
2011-01-08 19:52:00 2800
原创 扩展JLabel实现图像的裁剪
这个组件的功能: 1. 对图片进行裁剪 2. 为每副图像维持一个裁剪操作栈 3. 裁剪的撤销,重做 4. 裁剪时可以遮掩图像,以突出显示裁剪矩形边框 5. 设置遮掩的颜色,裁剪边框的颜色 原理:JLabel持有一个剪裁矩形框,和一个遮掩矩形框。并为JLabel添加MouseListener监听器实现开始裁剪和结束裁剪,MouseMotion事件监听器实现设置裁剪矩形边框的大小。直接上代码:/* * To change this te
2010-07-03 11:00:00 1858
转载 Ext报错:Permission denied to access property 'dom' from a non-chrome context
转载:http://www.cnblogs.com/lwjacky/archive/2009/11/02/1594508.html 这几天在做Ext的时候,用firefug调试程序的时候老是提示错误,错误信息如下:Permission denied to access property 'dom' from a non-chrome context上网google了一下,
2010-07-01 11:15:00 2821
原创 ExtJs-ComboBox的几个问题
1. 假设ComboBox的配置对象中,设置了transform属性,例如: combo: new Ext.form.ComboBox({ typeAhead: true, triggerAction: 'all', lazyRender: true, listClass: 'x-combo-list-small', mode: 'local', store: new Ext.data.Arra
2010-06-30 11:16:00 3897 1
原创 ExtJs报错:targetNode is undefined
出错点在: targetNode.appendChild(this.wrap); 这行。出现这种情况的原因可能有两个:1.是TreePanel中的树节点有相同的id2.就是accordion布局的panel中的TreePanel有相同的id
2010-06-30 10:01:00 2772
原创 Poi创建Excel(入门级)
通过Poi操作Excel十分方便,将一个Excel抽象为一个Workbook,一个表单页抽象为Sheet,表单中的一行抽象为Row,一行中的一个单元格可以抽象为Cell。HSSF对应的是97-03格式(.xls),XSSF对应的是07格式的(.xlsx)。 Workbook的获取有以下几种方式: 1.可以通过WorkbookFactory,工厂方法 Workbook wb=WorkbookFactory.create(new FileInputStream(f
2010-06-24 13:29:00 4327
原创 服务器端文件路径问题
服务器端程序经常要读取服务器端文件,比如:数据库配置文件,属性文件等。这时文件路径的读取不再像桌面应用时,只要简单的new File("").getAbsolutePath()就可以获取当前类的运行路径,因为这些类是运行在Tomcat服务器上的,如果采用上述方法得到的路径是%Tomcat root%/bin,而要读取的文件必须在相应的应用的文件夹下,这种方法不可取。
2010-06-18 14:44:00 5356
原创 Ajax动态加载JavaScript文件
开发应用程序时,经常需要实现模块的按需加载:当用户点击该模块或使用模块功能前才进行加载。采用模块按需加载可以大幅度节省系统资源,对于富客户端尤甚。在用启用该模块功能时,通过Ajax请求相应的JavaScript文件,然后执行该文件进行模块的加载。这里要使用JavaScript的全局函数eval,下面对其进行介绍eval( code )参数 code: 字符串,含有要计算的JavaScript表达式或要执行的语句返回值 计算code得到的值,如果存在的话异常SyntaxError: 说
2010-06-17 21:30:00 4690
原创 XML那点事儿
一. XML简介 XML(Extensible Markup Language,可扩展标记语言)是一个用于构造其他语言的元语言。XML描述了创造这些语言的规则,每种语言都互不相同,但都使用标签来标记内容。XML定义的语言的一个例子是XHTML,相当于是XML的词汇。
2010-06-08 21:04:00 1558
转载 Antlr
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://dreamhead.blogbus.com/logs/1583119.html时过境迁, Antlr 3.0已经发布了,请阅读更新后的版本——《探索Antlr(Antlr 3.0更新版)》。简介Antlr(ANother Tool for Language Recognition)是一个工具,它为我们构造自
2010-05-29 17:29:00 1487
原创 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 6866
原创 链表的插入排序
相对于在数组上进行插入排序,链表的插入排序效率会更高一点,更形象(因为的确是插入的)。假设序列a[0..n-1],a[0..j]是已排序的子序列,a[j+1]是待插入的元素。那么数组的插入排序时,不仅需要元素的比较,还要进行元素移动。而链表的插入排序时,仅仅需要通过比较找到插入位置,然后执行插入即可。所以,链表的排序中,插入排序是相对效率较高的排序 void List::insertSort(
2010-01-18 20:09:00 2502
转载 jar打包
java如何打JAR包(转) jar 应用 先打开命令提示符(win2000或在运行筐里执行cmd命令,win98为DOS提示符),输入jar -help,然后回车(如果你盘上已经有了jdk1.1或以上版本),看到什么: 用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ... 选项: -c 创建新
2010-01-06 11:26:00 1059
原创 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 13636 3
原创 Java操作Excel
最近搞一个项目需要操作Excel,google了一下,发现有两个第三方开源类库,分别是Jexcel和Poi。粗略地看了一下,jexcel内容不庞大,觉着我只是用一些基本的excel读写功能,它应该能满足要求。下面简要的介绍一下这两个类库。 jexcel:在用jexcel的过程中发现读的速度比较慢,操作也让人很不舒服。而且当excel的格式有问题时,总是无法写入。在网上搜了一下
2010-01-06 10:25:00 1641
原创 日期处理
java中经常需要处理日期数据,也就是将Date类对象调转化为字符串进行存储、显示等。这里可以Date类的toString()方法,转化为字符串。但是这种方式将生成一个极其复杂的字符串类似于Wed Jan 06 09:35:41 CST 2010,并且想要把这个字符串在转化为Date对象比较麻烦。 还好sun公司提供了java.text.DateFormat这个类,对日
2010-01-06 09:21:00 964
原创 Extjs报错:'this.config[...].width' 为空或不是对象
1、grid:js出错:this.config[...].width 为空或不是对象 ,原因:autoExpandColumn只能是id
2009-10-27 17:02:00 1886 1
原创 Java事件模型学习(2)--实现自己的事件
当程序的某个模块被调用的时刻不确定,就类似于等待某个事件的发生。这时,可以定义自己的事件进行相应的处理。比如,等待用户的一次输入等。Java的事件模型依赖于委托,通过回调方法进行相应的事件处理。在事件源中,会有fireXXXEvent()就是激活相应的事件,其中会遍历事件源的监听器队列,调用相应监听器的事件处理的回调方法。当某个事件发生时,事件源会调用fireXXXEvent()。实
2009-09-25 20:30:00 2403 1
原创 Android study(1)--Intent
Intent是Android OS的重要对象,它用于协调各个组件并用来传递异步消息。Intent是一种运行时绑定机制,能够在程序运行的过程中连接两个不同的组件。通过Intent,每个应用程序可以向Android系统发送表达某种请求的消息,Android根据消息的内容选择恰当的组件来响应。 Intent包含6中基本信息,分别为:目标组件名称,Action(动作),Data(
2009-09-10 21:43:00 1173
原创 (JDialog)对话框实现数据交换
对话框分为模式对话框和无模式对话框。模式对话框就是在弹出对话框后,父组件阻塞直到完成对话框的操作,父组件被激活。无模式对话框就是对话框与父组件并行运行。 JDialog(Dialog owner, String title, boolean modal) 其中modal为true即为模式对话框,false为无模式对话框。只要将要在对话框中显示的内容(可以
2009-08-23 19:55:00 6462
转载 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
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人