君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理

随笔分类 -  java

上一页 1 2 3 下一页

摘要:转载http://blog.csdn.net/hust_is_lcd/article/details/7884320[-] 认识装饰器模式 装饰模式能够实现动态的为对象添加功能,是从一个对象外部来给对象添加功能。通常给对象添加功能,要么直接修改对象添加相应的功能,要么派生对应的子类来扩展,抑或是使用对象组合的方式。显然,直接修改对应的类这种方式并不可取。在面向对象的设计中,而我们也应该尽量使用对象组合,而不是对象继承来扩展和复用功能。装饰器模式就是基于对象组合的方式,可以很灵活的给对象添加所需要的功能。装饰器模式的本质就是动态组合。动态是手段,组合才是目的。总之,装饰模式是通过... 阅读全文
posted @ 2012-10-05 21:17 刺猬的温驯 阅读(324) 评论(0) 推荐(0) 编辑

摘要:汉字转成拼音如果自己实现起来有点麻烦,主要是怕有些汉字转不了,所以就准备使用一个开源的工具Pinyin4j. pinyin4j是一个支持将中文转换到拼音的Java开源类库,pinyin4j能够根据中文字符获取其对应的拼音,而且拼音的格式可以定制。pinyin4j的主页:http://pinyin4j.sourceforge.net/ 1. 支持简体中文和繁体中文字符; 2. 支持转换到汉语拼音,通用拼音, 威妥玛拼音(威玛拼法), 注音符号第二式, 耶鲁拼法和国语罗马字; 3. 支持多音字,即可以获取一个中文字符的多种发音; 4. 支持多种字符串输出格式,比如支持Unicode格式的字符 阅读全文
posted @ 2012-09-15 17:43 刺猬的温驯 阅读(409) 评论(0) 推荐(0) 编辑

摘要:转载http://mabusyao.iteye.com/blog/618750首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过ThreadLocal.set()来实现的,而是通过每个线程中的new 对象 的操作来创建的对象,每个线程创建一个,不是什么对象的拷贝或副本。通过 ThreadLocal.set()将这个新创建的对象的引用保存到各线 阅读全文
posted @ 2012-09-08 16:29 刺猬的温驯 阅读(303) 评论(0) 推荐(0) 编辑

摘要:在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限,下面看例子:package org.thread.demo;class MyThread extends Thread{ private String name; public MyThread(String name) { super(); this.name = name; } public void run(){ fo 阅读全文
posted @ 2012-09-07 15:25 刺猬的温驯 阅读(154) 评论(0) 推荐(0) 编辑

摘要:顾名思义它是local variable(线程局部变量)。它的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,使每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。从线程的角度看,就好像每一个线程都完全拥有该变量。使用场景To keep state with a thread (user-id, transaction-id, logging-id)To cache objects which you need frequentlyThreadLocal类它主要由四个方法组成initialValue(),get(),set(T),remove(),其中值得注意的 阅读全文
posted @ 2012-09-05 13:26 刺猬的温驯 阅读(210) 评论(0) 推荐(0) 编辑

摘要:前段时间我们的系统接到新增多一个频道的需求,原本我们的系统只是针对于广州的业务,现在需要新增另一个城市上海,经过和产品人员沟通和分析,城市之间的业务逻辑除了一些小差异基本还是一样的,数据库的结构经过整合两个城市也可以达到一样的结构,但上海需要独立出另一个数据库.我们以前发布器的做法是用作为方法的一个参数由调用者一直传到访问对象(索引或数据库),虽然这种做法一样可以很快的实现,但是将数据库,索引的选择和业务逻辑混搭在一起的设计在感觉上是比较混乱,并且不利于将来多个城市(频道)的建立,所以选了通过ThreadLocal来实现多数据源的动态切换.ThreadLocal 是一个依赖于执行线程的存储器, 阅读全文
posted @ 2012-09-05 13:20 刺猬的温驯 阅读(696) 评论(0) 推荐(0) 编辑

摘要:在利用Hibernate开发DAO模块时,我们和Session打的交道最多,所以如何合理的管理Session,避免Session的频繁创建和销毁,对于提高系统的性能来说是非常重要的。我们知道Session是由SessionFactory负责创建的,而SessionFactory的实现是线程安全的,多个并发的线程可以同时访问一个SessionFactory并从中获取Session实例,那么Session是否是线程安全的呢?很遗憾,答案是否定的。Session中包含了数据库操作相关的状态信息,那么说如果多个线程同时使用一个Session实例进行CRUD,就很有可能导致数据存取的混乱,你能够想像那些 阅读全文
posted @ 2012-09-05 12:34 刺猬的温驯 阅读(390) 评论(0) 推荐(0) 编辑

摘要:概述 我们知道Spring通过各种DAO模板类降低了开发者使用各种数据持久技术的难度。这些模板类都是线程安全的,也就是说,多个DAO可以复用同一个模板实例而不会发生冲突。 我们使用模板类访问底层数据,根据持久化技术的不同,模板类需要绑定数据连接或会话的资源。但这些资源本身是非线程安全的,也就是说它们不能在同一时刻被多个线程共享。 虽然模板类通过资源池获取数据连接或会话,但资源池本身解决的是数据连接或会话的缓存问题,并非数据连接或会话的线程安全问题。 按照传统经验,如果某个对象是非线程安全的,在多线程环境下,对对象的访问必须采用synchronized进行线程同步。但Spring的DAO模板类并 阅读全文
posted @ 2012-09-05 12:31 刺猬的温驯 阅读(10533) 评论(0) 推荐(1) 编辑

摘要:Listener Servlet的应用Listener是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。当增加一个HttpSession时,就激发sessionCreated(HttpSessionEvent se)方法,这样就可以给在线人数加1。常用的监听接口有以下几个:ServletContextAttributeListener监听对ServletContext属性的操作,比如增加、删除、修改属性。ServletContextListener监听ServletContext。当创建ServletContext 阅读全文
posted @ 2012-09-04 14:21 刺猬的温驯 阅读(806) 评论(0) 推荐(0) 编辑

摘要:文本输出应该比较常用,以前都是通过反复的创建InputStream, InputReader, OutputStream, OutputWriter等去输入输出文本,比较麻烦。Apache提供了一个commons-io.jar包,里面有很多IO相关的工具,比如输入输出文本等,着实方便了很多。比如读取一个文件:Java代码//byFileUtilsList<String>lines=FileUtils.readLines(file,"UTF-8");//byIOUtilsList<String>lines=IOUtils.readLines(newFi 阅读全文
posted @ 2012-08-17 23:35 刺猬的温驯 阅读(2491) 评论(0) 推荐(0) 编辑

摘要:转载http://qihigh-hotmail-com.iteye.com/blog/1329696二进制的与、或、非运算特殊用法的不同运用场合:1.权限控制 下面我用几个数字来代表增,删,改,查。(注:1带有有权限,有几个1,就代表有几个权限,1的位置不同,所带表的权限也不同)Java代码1---------增--------(转二进制)-----(0001)2---------删----------------------(0010)4--------改----------------------(0100)8--------查----------------------(1000)管理员 阅读全文
posted @ 2012-08-12 12:21 刺猬的温驯 阅读(1130) 评论(0) 推荐(0) 编辑

摘要:ThreadLocal是什么早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程”。其实,ThreadLocal并不是一个Thread,而是Thread的局部变量,也许把它命名为ThreadLocalVariable更容易让人理解一些。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会 阅读全文
posted @ 2012-08-07 17:42 刺猬的温驯 阅读(194) 评论(0) 推荐(0) 编辑

摘要://Copyright2007Christiand'Heureuse,InventecInformatikAG,Zurich,Switzerland//www.source-code.biz,www.inventec.ch/chdh////Thismoduleismulti-licensedandmaybeusedundertheterms//ofanyofthefollowinglicenses:////EPL,EclipsePublicLicense,V1.0orlater,http://www.eclipse.org/legal//LGPL,GNULesserGeneralPub 阅读全文
posted @ 2012-08-02 21:51 刺猬的温驯 阅读(435) 评论(0) 推荐(0) 编辑

摘要:主要就我所了解的J2EE开发的框架或开源项目做个介绍,可以根据需求选用适当的开源组件进行开发.主要还是以Spring为核心,也总结了一些以前web开发常用的开源工具和开源类库1持久层:1)Hibernate这个不用介绍了,用的很频繁,用的比较多的是映射,包括继承映射和父子表映射对于DAO在这里介绍个在它基础上开发的包bba96,目前最新版本是bba96 2.0它对Hibernate进行了封装, 查询功能包括执行hsql或者sql查询/更新的方法,如果你要多层次逻辑的条件查询可以自己组装QueryObject.可以参考它做HibernateDAO.也可以直接利用它2) iBATIS另一个ORM工 阅读全文
posted @ 2012-07-22 11:26 刺猬的温驯 阅读(380) 评论(0) 推荐(0) 编辑

摘要:一般生成HTML页时,都会用比如freemarker等去搞,但今天看到和学到一个还应该不错的方法,是使用httpclient的get方法,去读某个动态的URL,然后把读出的内容再保存成HTML的,下面例子介绍一下:public class HtmlParser {HttpClient httpClient = null; //HttpClient实例GetMethod getMethod =null; //GetMethod实例BufferedWriter fw = null;String page = null;String webappname = null;BufferedReader 阅读全文
posted @ 2012-07-22 11:02 刺猬的温驯 阅读(1877) 评论(0) 推荐(0) 编辑

摘要:Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。 三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时. 阅读全文
posted @ 2012-06-18 18:15 刺猬的温驯 阅读(171) 评论(0) 推荐(0) 编辑

摘要:这里笔者介绍一种很常用,也比较专业的权限控制思路。这里用java语言描述,其实都差不多的。要换成其他的语言主,自己转一下就可以了。为了方便起见,我们这里定义a^b为:a的b次方。这里,我们为每一个操作设定一个唯一的整数值,比如: 删除A---0 修改A---1 添加A---2 删除B---3 修改B---4 添加B---5 理论上可以有N个操作,这取决于你用于储存用户权限值的数据类型了。 这样,如果用户有权限:添加A---2;删除B---3;修改B---4。那用户的权限值 purview =2^2+2^3+2^4=28,也就是2的权的和了。化成二进制可以表示为11100。这样,如果要验证用.. 阅读全文
posted @ 2012-05-24 05:52 刺猬的温驯 阅读(685) 评论(0) 推荐(0) 编辑

摘要:Cygwin is a Unix-like environment for windows.It can be obtained from:www.cygwin.comBelow are notes on how to install and setup cygwin for access to group computers.Installation Notes:Download setup.exefromwww.cygwin.com.Run application from your local harddrive.Chose next on first screen.Select &qu 阅读全文
posted @ 2012-05-16 02:57 刺猬的温驯 阅读(386) 评论(0) 推荐(0) 编辑

摘要:1、序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保 存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。 2、什么情况下需要序列化 a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候; b)当你想用套接字在网络上传送对象的时候; c)当你想通过RMI传输对象的时候; 6、相关注意事项 a)序列化时,只对对象的状态进行保存,而不管对象的方法; b)当一个父类实现序列化,子类自动实现序列化,不需要显式实... 阅读全文
posted @ 2012-05-11 01:30 刺猬的温驯 阅读(317) 评论(0) 推荐(0) 编辑

摘要:用c++写成,可反编译class文件,支持jar包级的反编译,可将整个jar包直接保存为*.src.zip源代码包,反编译迅速,错误率极少,详细的看下面下载地址:http://java.decompiler.free.fr/?q=jdguiIntroductionThe aim of “Java Decompiler” project is to develop tools to decompile and analyze Java 5, and upper, “.class” files.JD-Core is a freeware library that reconstructs Java 阅读全文
posted @ 2012-05-10 04:38 刺猬的温驯 阅读(521) 评论(0) 推荐(0) 编辑

上一页 1 2 3 下一页