
java
xly_971223
这个作者很懒,什么都没留下…
展开
-
多线程模式之Future Pattern
Future模式在jdk5中有实现其特点是:不阻塞等待函数的执行结果,而是立即返回一个Future对象,Future对象就像一个提货单,等函数执行完成再去提货核心类是 Host 和 FutureData[code="java"]public class Main { /** * @param args */ public static void main...2013-06-24 17:22:54 · 150 阅读 · 0 评论 -
理解CountDownLatch
字面意思是倒计时类类名其实说的很形象,倒数到0时线程解除阻塞,继续往下执行测试类public class TestCDL { private static CountDownLatch countDownLatch = new CountDownLatch(3); public static void test(){ Thread thread = ne...2010-07-10 11:11:17 · 84 阅读 · 0 评论 -
sphinx + mysql 快速上手
1 下载sphinx 0.9.92 解压到D:\3 在D:\sphinx\下创建文件夹 data 和 log4 复制sphinx-min.conf.in到bin文件夹并改名为sphinx.conf5 修改sphinx.conf中的数据源配置 如下[code="java"] sql_host = localhost sql_user = root sql_pa...原创 2010-01-26 13:45:42 · 165 阅读 · 0 评论 -
用jms解决sns网站好友动态
使用jms优点是不大影响原来的插入速度 节省了事务的开销,还可以分布式缺点也有一大群可靠性不高 实时性不高 不能直接被缓存收录 等等 但在一般的网站应该是足够了配置过程比较简单 1 配置activemq ,嵌入式或独立服务器都可以2 在saveXXX();方法中添加你的sendMessage(message)代码[code="java"]saveBlog(Blog ...2009-02-24 12:01:46 · 105 阅读 · 0 评论 -
mysql Too many connecti ons
29:44,765 WARN [com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1841)] - com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source re...2009-07-31 17:18:13 · 222 阅读 · 0 评论 -
jprofiler查看webapp内存遇到的怪异现象
用jprofiler查看我的web项目看到这样一幅图,此图是在应用刚刚启动时截取的让人不解的是:为什么刚启动完spring中居然有10多个实例看前几行:SiteDynamicManager$$EnhancerByCGlib 23SiteDynamicManager$$FastClassByCGlib 19....[url]http://xuliangyong.i...2009-07-30 14:42:39 · 125 阅读 · 0 评论 -
改良分页逻辑
先看一段代码 这是一段熟悉的不能在熟悉的分页逻辑访问了两次数据库 [code="java"]public Page findPageBy(String hql, int pageNo, int pageSize, Object... params){ int nPageNo = Math.max(1, pageNo); int nPageSize = Math.max(1...2009-07-19 19:32:07 · 88 阅读 · 0 评论 -
帖子 博客等资源点击量缓存杀手级解决方案
标题党了 :lol: 关于点击量几年前发过帖子[url]http://www.iteye.com/topic/171240[/url]现在看来太简单了 而且问题多多最近有琢磨出了一套新的方案[b]进入正题[/b]关于帖子点击量,通常的办法是缓存在内存,然后等到合适的时机写入数据库,一般是设置一个阈值,到达后更新数据库这种方式主要面临如下几个问题:1 有...2009-07-19 18:33:16 · 181 阅读 · 0 评论 -
xml schema中的部分缩写
[b]xsi --- xml schema instance[/b]顾名思义是xml schema的实例xml schema的实例是什么? 当然是xml文件啦 :) 所以xsi只能出现在xml文件中[b]xsi:schemaLocation[/b] 用于xml文件中 与xmlns配合使用,用来定位xsd文件 如[code="java"]xsi:schemaLocation="h...原创 2010-01-03 14:56:07 · 209 阅读 · 0 评论 -
什么事QName
Qname全称是 [quote]qualified name[/quote] 翻译成中文是限定名的意思主要有三部分组成[list][*]namespace 如 http://www.iteye.com/user[*]local part 如 username,age[*]冒号[*][/list]为什么需要Qname?xml schema相当于数据库中的表结构...原创 2010-01-03 14:25:32 · 732 阅读 · 0 评论 -
ftp 主动模式与被动模式
[b]ftp的工作原理[/b]ftp要用到两个tcp连接即要使用两个端口一个是命令链路:用来传递命令一个是数据链路:用来上传下载数据连接ftp server时有active和passive两种模式通常使用主动模式可完成上传下载[b]主动模式工作原理[/b]客户端使用命令链路主动告诉服务端:我打开了XX端口,你来连我吧[b]被动模式工作原理[/b]跟主动模式相...原创 2009-12-29 14:27:01 · 346 阅读 · 0 评论 -
apache2安装后出现403 Forbidden 的原因
念需要我们不断去摸索和熟悉,前一阵就遇到了安装好apache2并配置好httpd.conf后,无论访问什么路径都出现 403 forbidden的提示,折腾了半天才从官方的maillist文档里面找到答案。出现这样的问题一般有两种可能性。一种可能性是DocumentRoot选项的设置,如果在安装好apache2后修改了该选项,并且忘记了配置该新目录的访问权限就会出现这样的情况。比如...原创 2009-07-06 16:16:17 · 184 阅读 · 0 评论 -
jdom dom4j依赖包冲突问题
以前只用dom4j没有问题 加了jdom丫出这么个异常[quote]java.lang.ClassCastException: org.apache.xerces.parsers.XIncludeAwareParserConfiguration cannot be cast to org.apache.xerces.xni.parser.XMLParserConfiguration[/qu...2009-12-22 16:21:36 · 1002 阅读 · 0 评论 -
tomcat 处理request的线程配置
tomcat配置处理request的线程数,其原理给数据库连接池类似在tomcat的server.xml文件中的[quote][/quote]可以理解成一个线程池,每个工作线程是循环使用的2009-06-23 10:54:09 · 177 阅读 · 0 评论 -
eclipse3.4配置每行120字符
eclipse3.4中按 ctrl + shift + F 格式化代码,默认按照80列换行很不爽在网上查找 都是低版本的配置无奈 自己捣鼓 步骤如下:点击菜单 window--》preferences---》java ---》code style ---》formatterok接下来的操作就是这个界面操作上面有个下拉菜单,有三个选项[code="java"]java c...2009-02-08 15:28:56 · 897 阅读 · 0 评论 -
求SNS网站上好友动态解决方案
问答频道太冷了 只好发在这儿SNS网站都具有的一个功能----好友动态 je里面也有----全站动态这是如何实现的呢?俺是这考虑的 [b]用户发博客 发帖子 回复帖子 回答问题等这些数据都要集中汇总到一个表 all 中[/b]那么何时向表all中插入数据呢?有这么两个方法:[quote]一 用户任何写操作的同时插入到all表中一条数据。如用户发了一篇b...2009-02-05 17:02:37 · 113 阅读 · 0 评论 -
cas sso配置的注意事项
[color=red]本文面向cas sso的新手[/color] [b]1关于ssl[/b]小生第一次高这个ssl,完全是瞎子摸象 摸到哪儿算哪儿一开始找了片文章就跟着做 当然出错了,接连开了几篇后 了解了这两个概念server证书 和 client证书server证书是用在sso server的client证书是用在sso client的 (这是废话 :) )...2009-01-22 15:23:48 · 150 阅读 · 0 评论 -
java CAS原语
java 中的synchronized关键字是悲观锁 也叫独占锁所谓悲观锁就是某一线程独占资源,其他线程只能干等着,这种锁在高并发中性能很差还有一种实现锁的方式是乐观锁乐观锁实际上并不加锁,当计算遇到冲突或者说前后不一致时会重试 直到成功乐观锁采用的机制叫CAS compare and swapCAS有3个操作数 内存值V 要跟内存值做比较的值A 和 新值 B其操作...2010-07-10 17:18:19 · 458 阅读 · 0 评论 -
List与数组占用字节数
想看一下List序列化后占用多少个 字节,测试程序如下:[code="java"] public static void main(String[] args) throws IOException{ int n = 2000; List list = new LinkedList(); for (int i = 0; i < n; i++) { list.add(i...2010-07-17 19:03:37 · 1530 阅读 · 0 评论 -
多线程之读写锁模式 Read-Write Lock Pattern
场景:老师在黑板上写了字,很多学生在下面读 现在老师要擦掉重写,学生们说我们还没看完呢 等我们全部看完了才能擦这就是读写锁:没有线程读取时才能写入看程序如何实现吧看以看到一次完整的读取或者写入要获取两次锁,这也就是加大了读写锁的使用成本所以读写锁用来处理一些比较耗时的计算更划算[code="java"]public class ReadWriteLock {...2013-06-08 16:37:32 · 209 阅读 · 0 评论 -
java Thread只interrupted() interrupt() isInterrupted()
Thread类有几个与中断有关的方法[code="java"]Thread.interrupted();[/code]这是个静态方法这个方法有点不好理解,因为连续调用两次的结果可能不一样这个方法做了两件事: 1 返回当前中断状态2 中断状态复位为false[code="java"]interrupt() [/code]interrupt()方法用来中断线...2013-06-07 15:22:54 · 154 阅读 · 0 评论 -
多线程之Producer-Consumer Pattern
生产者/消费者模式有两个厨师在做蛋糕(生产者)两个客人在吃蛋糕(消费者)厨师做好了就放在桌子上,客人吃完了就从桌子上取,桌子实际上是共享队列桌子最多能放3个蛋糕,放满了后厨师就等待 直到客人取走一个整理后包括着几个类MakerThread 厨师EaterThread 客人Table 共享队列还有就是蛋糕了 我们用String来表示[code="java"]...原创 2013-06-07 13:24:14 · 190 阅读 · 0 评论 -
多线程模式之Thread per message
Thread per Message 意思是每个请求都启动一个新线程最常见的就是socket server的处理模型每来一个客户端连接 服务端就开启一个线程处理数据这个模式共有3个类Client 客户端 发送messageServer 服务端 接收message 并启动线程处理MessageHandler message处理类...2013-06-20 14:00:46 · 112 阅读 · 0 评论 -
多线程模式之 Guarded Suspension Pattern
Guarded Suspension Pattern这个模式翻译过来应该叫保护性暂停模式吧意思是:如果不停下来的话前面会有危险这个模式有4个元素Request 请求RequestQueue 请求队列ClientThread 发送请求的类ServerThread 接收请求的类其实有点类似生产者/消费者模式ClientThread生产Request并放...原创 2013-06-04 18:00:39 · 171 阅读 · 0 评论 -
java synchronize 与 lock
synchronize方法和 synchronized 块都不存在没有释放锁的问题,无论是发生异常或者中途返回例如下面的代码,还是会正确的释放锁[code="java"]void synchronized test(){doSomething();if(1==1)return;doSomething2();return;}[/code]再看下面的代码...原创 2013-05-30 15:55:26 · 118 阅读 · 0 评论 -
java wait notifyAll方法
说道java多线程就不能不提synchronize wait notifyAllsynchronize是获取对象的锁定,当一个线程获取这个锁定后 其他线程只能等待wait()方法是让线程休息,通常是线程要等待某个资源就绪后才能向下执行,这时调用wait()告诉线程先等着吧值得一提的是 调用wait方法时必须获得锁 调用wait方法后,线程会被放入一个休息室,我们把它叫做wait...2013-05-29 14:02:08 · 168 阅读 · 0 评论 -
java的抽象方法是如何实现的
C++编译器如何处理虚函数C++中的虚函数就是java中的抽象方法假如有这个一个类[code="java"]Class class1{ Public: Data1; Data2; Virtual fun1(); Virtual fun2();}[/code]它在内存中是这样表示的[code="java"]Struct class1{ Dat...2010-11-09 16:39:51 · 1028 阅读 · 0 评论 -
xmemcached
[code="java"]package net.rubyeye.xmemcached.example;import java.io.IOException;import java.net.InetSocketAddress;import java.util.concurrent.TimeoutException;import net.rubyeye...2010-07-02 08:47:32 · 135 阅读 · 0 评论 -
hibernate search 手动创建索引
hibernate search默认采用自动创建索引只要在entity上配置上@Indexed注解,在插入数据时hibernate就自动的索引数据实际上是可以配置成手动索引的配置如下[code="java"]manual[/code]hibernate默认是event见代码[code="java"] private static String defineInd...2010-06-04 14:55:20 · 359 阅读 · 0 评论 -
java发送http head请求
[code="java"] public static void main(String[] args) throws Exception { URL url = new URL("http://www.iteye.com/"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // con...2010-02-25 10:58:51 · 2482 阅读 · 0 评论 -
nio ByteBuffer理解
ByteBuffer实际上是一块连续的内容 可以理解成一个byte数组[b]byte数组主要有三个属性[/b]:position:读/写的开始位置limit:读/写的结束位置capacity:数组大小[b]byte数组主要2中操作[/b]:读:读position和limit之间的数据, 这儿要注意,不是读取0到capacity之间数据 读前一般会...2010-02-24 10:57:49 · 221 阅读 · 0 评论 -
理解nio
传统IO的缺点 以socket通信为例通常服务端用线程来处理客户点请求 一个客户连接一个线程对于请求特别多的服务 会产生大量线程jvm会为每个线程分配固定大小的堆栈空间,线程越多 消耗内存越多采用线程池可使线程重用,但io阻塞导致jvm频繁转让cpu使用权,浪费许多时间理解非阻塞当操作还没就绪时就返回,而不是在傻傻的等如inputStream.read();...原创 2010-02-11 13:11:34 · 123 阅读 · 0 评论 -
jaxws不支持SOAPBinding.Use.ENCODED
用wsgen生成是报错[code="java"]com.sun.tools.internal.ws.processor.modeler.ModelerException: modeler error: The com.justel.voice.wappush.WSProvider class has invalid SOAPBinding annotation. document/...2009-08-20 16:06:30 · 463 阅读 · 0 评论 -
JVM内存结构
把知道的java内存结构简单缕一缕主要有这个几个[b]方法区堆(分代的)[/b]这两个算是比较清晰的还有一个不大清晰的 [b]JVM方法栈[/b]方法区就是存放Class信息的 如类的继承层次,类的静态变量 有哪些字段 哪些方法等等这块内存通过permSize maxPermSize来指定其大小堆是保存对象的内存空间,你创建的每个对象都保存在堆中堆的...2010-07-20 15:06:13 · 82 阅读 · 0 评论 -
不用任何框架开发web service
很讨厌webservice框架配置的繁琐尤其是axis系列一怒之下直接用servlet开发了其实也很简单,关键是要获取到请求soap和响应soap,可借助soapUI来生成soapUI的使用这里不做介绍生成请求soap和响应soap后关键就是解析soap了直接用的java提供的API来解析解析请求Soap代码如下:[code="java"]public cl...2010-07-19 17:20:03 · 142 阅读 · 0 评论 -
spring的需求是seam的60倍
刚刚上51job上搜素了一下 北京地区 spring框架和seam框架的招聘职位[quote]spring 627seam 11jsf 61ejb3 17hibernate 597strtus 652[/quote]可以看到spring 有627个职位 seam只有可怜的11个很多大牛都推荐seam框架 但为什么需求量这么少呢?...2009-01-20 11:54:54 · 142 阅读 · 0 评论 -
深入浅出unicode
大家都知道jvm内部的字符都是unicode表示的,但是什么是unicode捏? 听我讲你知早在很多年前国际标准化组织(ISO)那些伙计们就感觉ascII那200来个字符是不够用的所以就想办法重新编码 以容纳全世界所有的字符[b]办法是:用四个字节表示一个字符,这个编码称之为ISO-10646[/b]你想啊 2的32次方 那字符老多了 有几百亿个吧 手指头多的可以数数 :...2009-01-18 21:38:01 · 120 阅读 · 0 评论 -
seam-----想说爱你不容易
呵呵有点标题党了其实就是发点感慨上周末花了两天时间想研究一下seam 照着满江红的文档上的例子做 --- 越做越晕,也许是没有搞过ejb2的原因吧网上也有一些例子,但总体来说有些麻烦,想当年学strtus2的时候 一个小时hello world就完成了总结一下seam的缺点1 入门太难2 封装的太死,想加一些第三方的框架有难度,要向spring学习3...2009-01-16 13:40:13 · 120 阅读 · 0 评论 -
扩展Spring junit4 的TestExecutionListener
web单元测试经常会在执行前准备一些数据 执行完毕后删除这些数据 如下伪代码[code="java"]public void testFindUser(){ jdbcTemplate.insert('insert into user...'); jdbcTemplate.insert('insert into user...'); User u = us...2009-04-24 11:17:32 · 429 阅读 · 0 评论 -
junit4
[code="java"]package test;import org.junit.runner.notification.RunNotifier;import org.junit.runners.BlockJUnit4ClassRunner;import org.junit.runners.model.FrameworkMethod;import org.junit.run...2009-04-22 22:36:53 · 85 阅读 · 0 评论