Java技术心得
文章平均质量分 68
treeClimber
这个作者很懒,什么都没留下…
展开
-
CountDownLatch与CyclicBarrier
CountDownLatch和CyclicBarrier都是用于多线程同步的工具原创 2022-06-29 10:05:52 · 213 阅读 · 0 评论 -
Spring切片拦截-Aspect
1、maven依赖:<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.8.1</version></dependency><dependency> <groupId>org.aspectj</groupId>...原创 2022-05-11 19:02:52 · 278 阅读 · 0 评论 -
ArrayBlockingQueue与LinkedBlockingQueue对比及性能分析
没了解之前,认为Array上需要移动元素所以性能更差,但实际并非如此。相同点:LinkedBlockingQueue和ArrayBlockingQueue都是可阻塞的队列(内部都是使用ReentrantLock和Condition来保证生产和消费的同步;当队列为空,消费者线程被阻塞;当队列装满,生产者线程被阻塞.)不同点:1、队列中的同步锁机制不同ArrayBlockingQueue中的锁是没有分离的,即生产和消费用的是同一个锁; 使用一个ReentrantLock来保证线程安全:入列和原创 2022-04-01 13:42:53 · 2948 阅读 · 0 评论 -
Mybatis使用细节
1、@Select 定制SQL语句,不光where参数,连表名都可以传进来@Select("SELECT sum(num) as total, avg(num) as average FROM ${tableName} WHERE statis_date between #{beginDate} and #{endDate}") SumAverage averageDayNum(TableParams params);2、对于java基础类型或Map,parameterType可以简写。...原创 2020-08-03 19:04:46 · 414 阅读 · 0 评论 -
mybatis插件实践
Mybatis是当今最普遍使用的数据持久化框架,这点拒绝反驳。Mybatis调用链:SqlSessionInterceptor.invoke() DefaultSqlSessionFactory.openSession(executorType): DefaultSqlSession ->Configuration.newExecutor(): sqlSession //interceptorChain.pluginAll(excutor); DefaultSql...原创 2020-06-02 16:21:40 · 186 阅读 · 0 评论 -
几种通讯协议的比较
一、综述 本文比较了RMI,Hessian,Burlap,Httpinvoker,web service等5种通讯协议的在不同的数据结构和不同数据量时的传输性能。 RMI是java语言本身提供的远程通讯协议,稳定高效,是EJB的基础。但它只能用于JAVA程序之间的通讯。转载 2011-09-29 18:36:38 · 588 阅读 · 0 评论 -
经验分享:使用HttpClient做远程方法调用
<br /> 近日完成一个系统,是从一个庞大的母系统中剥离出来的,因此不可避免地要调用母系统的API。我的开发和UT分两步走的,边界部分的代码使用变量devModel隔开(if ...else...)。具体是:<br /> 1、本机开发和UT阶段(devModel=true)。引用母系统的interface.jar,当需要使用母系统的实现类时,在test-src包中实现接口,只编写几个使用到的方法。<br /> 2、集成测试阶段(devModel=false)。因为母系统非常混杂、j原创 2011-01-11 17:06:00 · 3194 阅读 · 0 评论 -
加解密的困惑与思路(接上篇)
<br /> 又花了几天时间在网上搜索了有关JavaScript与Java的加解密方法,两种语言都有实现的无非就RSA、DES、MD5,看似大牌,但都不符合要求或者千篇一律的出现同一漏洞,根本无法使用。<br /> 停下来想一想,求人不如求己;其实所谓加密,就是让一组数据加入一定的规则编码,以窃听方无法准确的知道数据的组成序列。从这一点上讲,往往是这些公开、非常通用、足够复杂的算法越会容易破解,而设以若干组自定义的业务规则保密的时间会越长。<br /> 所以决定自己编写算法,省原创 2010-12-25 23:03:00 · 3914 阅读 · 0 评论 -
Download:断点续传
<br />首先说明:本文Java代码最初来源于网上,本人只是在原作的基础上修改。<br />概要:本例用于下载大容量的附件,可以启用多线程分段下载,掉线/请求暂停后可以继续下载。原理很简单,其实就是在本地目录下增加一个 *.info文件,以记录当前的位置;再次下载时读取这些信息,同时设置HttpURLConnection的头信息“User-Agent=NetFox; RANGE=bytes=xxx-”。<br /> <br />文档结构:<br />DownloadTask.java-主线程,启动List原创 2010-09-10 15:33:00 · 895 阅读 · 0 评论 -
使用Spring-MDP实现分布式作业
<br />JMS的作用就不用赘述,它已经是很老掉牙的技术。习惯于单机模式下或中央处理的用户一定没有体会那么深刻。<br /> <br />简言之,JMS使得多个JVM并行工作成为可能,Spring-MDP(Message-Driven Pojo)是Spring framework提供的消息驱动包,借助于他我们可以很方便地实现JMS的功能。<br /> <br />我现在提供一个场景:一个系统包含客户调用端和服务提供端,客户端非常的Thin,只有接口而并不知道具体的实现类,服务端则包括实现类所需要的各种资源原创 2010-06-10 18:04:00 · 5578 阅读 · 1 评论 -
Axis2 start guide
下载:http://ws.apache.org/axis2/最新版本 axis2-1.6.3-war.zipaxis2 |--axis-web [axis的管理页面] |--WEB-INF |--conf/ [配置文件:axis2.xml] |--services |--services.list [文本文件]|--*.aar原创 2016-03-03 16:16:42 · 468 阅读 · 0 评论 -
java标准--校验参数
在写接口实现的时候,经常会在方法的开始,对参数做各种判断,如:if (name == null){.......}现在好了,RSR-303提供了一套标准的annotation,只要在参数上加上如@NotNull,一切就交给javax.validation的实现去做吧!我们常用的实现有hibernate-validation-4.2.0-Final。ValidationFactory vf原创 2016-01-06 11:30:16 · 9367 阅读 · 1 评论 -
BSH--Java Shell,Java也执行脚本语言
谁说JVM只能执行编译过后的class?(java语言)JSH帮你轻松搞定shell脚本,这点现在已经成为了一个标准:JSR-274。能够应用于用动态规则改变业务流程的场景。另:在这之前,还有Groovy(JSR- 241)也能在JVM中运行。最新版本:2.0b4,官网:http://www.beanshell.org例1:public static void main(Str原创 2017-02-09 16:46:19 · 2657 阅读 · 0 评论 -
理解Spring-javaconfig
JavaConfig原理servlet3.0标准提供了ServletContainerInitializer接口和HandlesTypes注解,在Web容器启动时完成一些初始化操作,功能同ServletContextListener。Spring中的实现类:SpringServletContainerInitializer,以及HandlesTypes注入的是WebApplicationI原创 2017-03-15 16:29:39 · 2667 阅读 · 0 评论 -
Spring PropertyPlaceholderConfigurer解析及应用
以前知道有,但始终不甚明白Spring定义bean时是怎么把properties中的属性值读进去的,有时候将属性放在System里面时而可以时而不行。今天查看下源代码结构:PropertyPlaceholderConfigurer 》PlaceholderConfigurerSupport 》PropertyResourceLoader implementsBeanFactoryPos原创 2017-07-19 11:09:06 · 500 阅读 · 0 评论 -
SpringBoot AutoConfiguration
学习SpringBoot之前弄清一个概念:SpringBoot只是一个配置框架,而不是Spring Framework的重写。那么,它最重要的一个特性就是AutoConfig,这一点与Spring Framework的stereotype一样。之所以能做到自动注入,主要的就是SpringFactoriesLoader类负责载入:classpath:META-INF/spring.factories原创 2017-11-07 09:33:05 · 739 阅读 · 0 评论 -
dubbo异步调用三种方式
异步通讯对于服务端响应时间较长的方法是必须的,能够有效地利用客户端的资源,在dubbo中,消费端通过 async="true"标识。 具体有三种方式:1、NIO future主动获取结果,返回结果放在RpcContext中 需要注意的是,由于RpcContext是单例模式,所以每次调用完后,需要保存一个Future实例;如: fooService原创 2017-12-25 09:31:57 · 14664 阅读 · 1 评论 -
自定义spring能解析的标签
众所周知,@Component、@Configuration、@Service、@Controller、@Repository是Spring标识一个组件的validation,只要某个类在确定的包名下,spring就能实现自动的IoC。可通过以下几种方法,实现可被spring理解的Annotation:1、使用@Configuration修饰,则会认为也是一个@Configuration;...原创 2019-03-14 08:21:23 · 180 阅读 · 0 评论 -
Spring-ws笔记(配置)
<br />Spring WebService是契约优先的。强调从Schema(xml)到Java Class的绑定。所以首先要熟悉XSD和JiBX或JAXB等binding技术,为了方便,还需属性ant脚本。<br />闲话少说,贴一个成功部署的war代码。<br />Java: springstudy.ws.<br /> client.SpringWSClient.java<br /> core.BeanMethodDescriptor.java<br /> |--.Web原创 2010-07-01 18:11:00 · 13831 阅读 · 1 评论 -
Spring-ws笔记(完结)
<br />Ant脚本:build.xml<br /><?xml version="1.0"?><br /><project basedir="." default="full"><br /> <property name="projectname" value="test" /><br /> <property name="targetfile" value="xsd/test/test-*.xsd" /><br /> <import file="../../jibx_common.xml" /><原创 2010-07-01 18:18:00 · 5115 阅读 · 0 评论 -
替代String.split("")的方法
String.split返回将一个字符串由分隔符分隔而成的数组,但在这个方法里当split="|"时似乎把它拆分成一个个的char数组;另外,StringTokenizer也有类似的功能,但它里面的分隔符是单个的char而非整个串,而且它没有返回值,只能向Enumeration一样一个个的去遍历。 /** * 用分隔符将源串分为数组(String的该方法对split="|"失效原创 2006-04-20 13:43:00 · 2613 阅读 · 0 评论 -
我的waf标签 waftags.tld
页面元素:标签,可以alert出session中的提示信息(FORM_ERROR_MSG,FORM_SUCC_MSG),提示信息中过滤掉“,",/n”attributes: leftMargin(左边距) topMargin(右边距) cssClass(CSS类) style(设置cssClass外的其他属性) onLoad(onLoad事件)提供的Jav原创 2006-09-20 09:50:00 · 1872 阅读 · 0 评论 -
近期计划
1. 下周起连续三周上“112投诉系统”,可借此学习Arc的地图操作;兼而联系WebWork2. 一段时间内完成信息发布系统的大部分功能3. Spring的JDBC实现原理,主要是事务处理4. AJAX是长期努力的方向5. JavaMail、JMS原创 2006-05-12 17:21:00 · 1021 阅读 · 0 评论 -
Java属性文件的一个缺憾(Java缺点之二:属性文件)
用Java读取Properties文件内容是我们通常使用 new FileInputStream(filePathName).load(props),这之后就直接对props作getProperty就可以取出属性,保存时props.store(out, header)就可以,很简单。但不能不提出的是,这样的操作, 1. 如果值是汉字,getProperty后必须在外面转码,否则是一串的?;原创 2006-06-12 09:12:00 · 1709 阅读 · 1 评论 -
读取中文Properties文件
private String propFileName = null; //locale = language+country(比如:zh_CN) private Locale curLocale = null; public ResourceMessage(String baseName) { this(baseName, Locale.getDefaul原创 2006-06-15 15:08:00 · 2037 阅读 · 0 评论 -
发布一个taglib:+
需求来源:通常在页面要用表格Table来枚举一个Collection的某一个属性,如此,势必要在一个TR行显示多个对象。必要性: 一般可以在页面通过Java代码来循环,而且此时需要判断Collection的对象个数能否被列数整除,不能整除的要分为前N-1行和第N行,比较复杂且不容易改动,如下: String savePath = "/phssas-web/jsp/upload/report-d原创 2006-11-09 16:48:00 · 1081 阅读 · 0 评论 -
发现JBuilder8的一个问题,郁闷了两个晚上!
很久没在公司 用JBuilder开发,因而现在说JBuilder 8有点落伍,但爱上它启动快的特点,因而在家里的机器上还留着它。一日,发现它能编译这个问题:String strSql = sql.substring(0, strSql.length()-1);其中sql变量是前面已定义、赋值的StringBuffer对象。上面这条语句括号中属手误,但造成的后果是JBuilder编译通过却一原创 2006-12-04 16:56:00 · 1048 阅读 · 0 评论 -
软件不能运行,谁之过?
软件是一个包含多道流程的体系,从需求调研开始,一直到发布和验收,任何一个步骤脱节,都不能保证用户得到理想的结果,而软件过程的各个阶段,又不是平铺、并排,按照其处于生命周期的阶段性时间,其重要性逐层递减。是的,一个人鲜有精力从头跟踪到尾,但要保证一个软件的顺畅运行,各个阶段负责人的水平应该保持一致。 现在,很多公司像我所在的单位一样,各路人马分道行驶,却分工不协调,导致简单问题原创 2006-12-22 14:56:00 · 1169 阅读 · 0 评论 -
Tomcat5.0x Web application 配置避免自动部署
用过tomcat或者weblogic的人都知道,只要将一个可以运行的webapp(带有"WEB-INF/web.xml)的文件夹放在它们指定的目录下(tomcat:webapps,weblogic:DafaultWebApps),就能在浏览器中访问到它们。 在tomcat中的webapps下可以放多个目录,如果conf/server.xml或conf/Catalina/localhost原创 2007-01-05 14:05:00 · 1191 阅读 · 0 评论 -
自己的一个线程同步通讯的实例
在实际工作中,经常遇到在一个多步作业中由于某一步的瓶颈而制约整个作业步骤的情况,要使性能改善,我们需要发挥多线程集中处理的作用,把较为容易的步骤先作运行产生批量数据,再交给新线程来集中处理较难的一步,这样就节省了略小于(m-1)*N的宝贵时间。但同时,问题又出现,因为作业本是存在先后顺序的流水式,变为多个子母式并发线程,线程间的同步通信成为了需要解决的一个问题,好在Java线程原创 2007-09-28 16:24:00 · 959 阅读 · 0 评论 -
从DB2连接出错来认识WebServer的原理
最近因为写一个数据库连接池放在ServletContextListener中初始化N个连接,结果几个同事因为直接在WAS下作开发,经常有编译后的类会导致重启EAR,结果就在Listener的初始化DB2连接时报出"Navive Library **.dll loaded by another classloader.."的错,如此云云,追踪到代码中,确实Class.forName("COM原创 2007-11-24 12:58:00 · 1127 阅读 · 0 评论 -
艰难的抉择
今年三月份,我带领开发的绩效团队终不免要到交付去,虽然是一个妥协的结果--团队中除了我之外所有的成员都过去了。过去的半年里,银行绩效系统倾注了我所有的心血,此时虽有不舍之情,但却为无奈的选择,当然同时我希望并相信一块去的团队能够很好地从我手中接替过去,愿绩效“项目”一路走好!我总结了一下,绩效团队会有今天的结果,我自己会有这样的选择,有以下原因:1、绩效产品是跨部门合作的产品,进入开发之前没有理顺原创 2009-03-03 12:14:00 · 663 阅读 · 0 评论 -
用CAS在tomcat6实现SSO
一、软件版本 Tomcat6.018, CAS-SERVER 3.3.1, CAS-CLIENT-JAVA 2.1.1 二、准备工作 1、在Tomcat配置SSL在/$CATA_HOME$/conf/server.xml中加入下面的配置,记住端口号为8443,口令为changeit。 port="8443" minSpareThrea原创 2009-12-23 14:11:00 · 3806 阅读 · 0 评论 -
使用Spring JMS和SonicMQ实现异步通信
第一步:SonicMQ的安装准备 1、安装SonicMq7.0,一切按默认配置(Domain1,tcp://localhost:2506,Administrator,Administrator),在程序菜单中生产“SonicMQ DomainManager”,“SonicMQ Management Console”等。 2、先启动“SonicMQ DomainManager”,原创 2010-04-09 15:39:00 · 2736 阅读 · 0 评论 -
使用Java Annotation
Annotation(注解)是JDK5+的特性。在使用Spring和Hibernate的过程中,碰到大量的Annotation,其中Hibernate的Annotation是支持JPA产生的,JTA已经成为Java EE的一个标准。因此Annotation是必须掌握的。 为什么要使用Annotation呢?之前看到一篇文章,说Annotation其实可以解决Java不能原创 2010-04-12 17:48:00 · 862 阅读 · 0 评论 -
期待JOFC2王者归来
较早的前几年,J2EE应用的画图还使用jfreeChart这一呆板的开源项目,相继而推出cewolf标签。从07年开始,随着json的成熟,一些商业的作图产品陆续地推出基于flash的动态展现技术,使得java ee画图这一块有了革命性的前景。秉承java语言开源性这一优势,jofc2让我们不再需要花费一美金就能画出好看的pieChart、barChart、lineChart、stackBar原创 2010-04-28 09:26:00 · 3625 阅读 · 2 评论 -
jofc2 API生成json数据
private void drawPie(Chart chart, List data) { PieChart elements = new PieChart(); elements.setGradientFill(true); elements.setTooltip("#val# / #total# #percent#"); List ls原创 2010-04-28 10:16:00 · 2300 阅读 · 1 评论 -
升级内存的体会
周末把机器的内存升到了512M,想到要升级是触于Karen,我想先自己实践一下以换取所谓的经验,结果还真是觉得有必要。先前就觉得计算机里面这个小不点很关键也很挑刺,这回下来果然不假,它成了计算机性能里的一个瓶颈,就象人的一个致命弱点,不搞定它就难以有质的进步。 首先,硬件不像计算机软件那样富于兼容性,尤其是内存这块,升级的时候首选还是同品牌同型号,而且大小最好还是一样,否则就发挥原创 2006-04-03 11:13:00 · 1200 阅读 · 0 评论