`
scholers
  • 浏览: 619724 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
  JDK1.5中有一个Exchanger类,可以用来完成线程间的数据交换。 类java.util.concurrent.Exchanger提供了一个同步点,在这个同步点,一对线程可以交换数据。每个线程通过exchange()方法的入口提供数据给他的伙伴线程,并接收他的伙伴线程提供的数据,并返回。当两个线程通过Exchanger交换了对象,这个交换对于两个线程来说都是安全的。   以下是例子:   public class ExgrDemo { public static void main(String args[]) { Exchanger<String> ...
   我们知道,在MINA2中,发送和接受时两个独立的工作线程,但是可以设置一个参数,当服务端发送消息之后同步读取客户端的返回: session.getConfig().setUseReadOperation(true); 近日,采用MINA2(RC)的同步读取方法,发现无法真的同步读取客户端的返回; 场景是:服务端发送一个消息给客户端,需要同步等待客户端的一个消息回执,然后服务端的程序继续执行;   sendSession.getConfig().setUseReadOperation(true); WriteFuture future = sendSession.write( ...
   题目:一列整型数组,从第一个开始,累加后续两个数字,得到一个新的数组,然后判断新的数组中的最大值,从而得到这个最大值是原始数组中哪三个数字累加的,输出(打印)这三个数字,并且输出(打印)出这个最大值。    如:2,5,-6,12,7,15,6,-10   结果应该是输出:12,7,15    最大值: 34      我的思路1:   1.先统计处累加的数组,数组长度是原始数组长度-2   2.计算新数组的最大值   3.根据最大值的位置输出原始数组的三个数字   4。输出最大值    思路2(如果可以打乱原始数组的次序):   1。先冒泡排序一次,从小到大排序 ...
迷失是美国电视连续剧,讲述的是一架飞机失事了,飞机上幸存下来的48个乘客在一个荒岛上生存发生的故事。    老美的电视剧起始都有点类似的,在这40几个人中起始就是一个小的社会,里面有亚洲人,美国人,有良好市民,有伊拉克移民,还有犯罪分子,警察(后来死掉了),由医生领导者领导这个小社会生存。当然中间会有一些摩擦什么的。    岛上有一些奇怪的事情发生,而每个人在里面都有一段故事,故事就这么展开,开始为他们的命运担心了,感觉好像自己就在其中一样。。    前天晚上更是很夸张的连续看了5集,还去网上搜索了这部电视的资料,原来这些事情都是一个试验??成科幻电视了。。。。 -------------- ...
  MINA2中(MINA2 RC版本,MINA2.0正式版已经发布)服务端接受数据默认有一定长度的缓冲区(可以在启动的时候设置)。那么对于大报文,怎么处理呢?比如说超过1024,甚至更多?MINA2为了节省网络流量,提高处理效率,会将大报文自动拆分(可能是存放MINA2中的缓冲区里面):比如2048字节的报文,就会拆分成两次;那么在接受的时候,就有一个如何判断是完整报文的问题,或者说是一个拆包组包的问题。   MINA2中初始化服务的时候是可以设置输入和输出的缓冲区的:   acceptor.getSessionConfig().setReadBufferSize(1024); ...
  场景:服务端开了两个SOCKET服务,分别对应两种客户端,假定分别无客户端A,客户端B。客户端A是短连接,发完消息得到反馈就结束,客户端B登陆上服务端之后就一直保持长连接。需求是:A发消息之后,进行业务处理,然后将处理的结果要发给客户端B。   目前考虑建立一起全局的ConcurrentHashMap,将客户端B的长连接中的IoSession放入ConcurrentHashMap中,客户端A处理完成之后,找到ConcurrentHashMap中的IoSession,然后调用write(msg)方法。 //sessionCurHashMap为全局变量,是一个ConcurrentHashM ...
  一直以来,每个月房贷还款的钱都比公积金少不少,但是没有啥时间和决心去银行办理一下缩短还款年限。我说的缩短还款年限是指更改房贷合同,比如说你原来和银行签订的是20年还款,每月2000,现在修改为10年,每月还4000。不是指普通的提前还贷而缩短还款年限。   杭州市公积金的规定是,只能取出来用于还贷的钱,意思是比如你现在每个月还款2000,但是你公积金每个月有2500,那么你只能取2000,剩余的500就躺在公积金账户上睡大觉,基本上没有啥用处了,而且很难取出来,当然你再贷款买房是可以的,不过这样的话,不在此次讨论的范围之列,能贷款买好几套房子,公积金那点钱睡觉也无所谓了。所以这样对我们普通的 ...
  GAE普通用户不能上传超过3000个文件上去,我今天就遇到了这个限制。但是我去我的GAE的工程总目录下面用右键查看,只有1700个文件,很奇怪,GAE居然发现有3370个文件,这个差异确实有点大了。后来没办法,只好删除我的应用中的多个UI的皮肤组件,才顺利通过了。
我的GAE应用是 采用extjs3.3 + struts1.3 + spring2.5.6。 最近利用一些业余时间,搞了一个GAE的应用,基本用法是用GMAIL账户登录,然后记录自己的个人日常消费,很简单的一个版本。   修改了一下,相比老版本,先在的版本增加了量 ...
  使用MINA2的时候,每次都要多两个slf4j的包,但是我们项目一般都是用log4j的包,虽然说MINA2支持log4j,但是多加载两个包感觉多余,于是修改了MINA2的源码,将所有的日志记录操作都修改成了log4j的。   注意:源码来自mina-2.0.0-RC1.tar。   有需要的朋友自己下吧。   不过没有测试过。
ECLIPSE 最近一段时间经常报错,看了日志,有如下错误信息: ENTRY org.eclipse.ui 4 0 2010-08-10 09:56:43.763 !MESSAGE Unhandled event loop exception !STACK 0 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: PermGen space) at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.s ...
我们知道,进行SOCKET tcp/ip通信的时候,不知道每次接受的报文到底有多长?也就是是判断不了报文(消息)的边界。   一般的做法有下面几种: 1。设定固定长度的报文头,在固定的报文头上增加消息长度。每次读取的时候先读这个报文头,得到本次消息的总体长度。 2。在报文中设定特殊字符作为边界。比如: *************************** 之类的特殊符号等。 MINA2(我采用的版本是MINA2 RC1版本)中我采用第一种方式来读取消息报文。 具体代码:可以利用IoBuffer的prefixedDataAvailable方法得到消息头,可惜看了MINA2的源代码 ...
1.position 例: position() 第一次使用返回值为当前位置:0 position(8) 返回第8个字节以后的数据(包括第8个)可以和 limit 联合使用 如: buffer.position(3); buffer.limit(7); ByteBuffer slice = buffer.slice(); 再次调用 position() 返回:8 2.remaining 例: ByteBuffer byt = ByteBuffer.allocate(128,false); 第一次调用 byt.remaining(); 返回 ...
JDBC中通过MetaData来获取具体的表的相关信息。可以查询数据库中的有哪些表,表有哪些字段,字段的属性等等。MetaData中通过一系列getXXX函数,将这些信息存放到ResultSet里面,然后返回给用户。关于MetaData的说明网上也有不少,这里我只是从我自身学习的角度来记录一下简单使用JDBC以及获取数据表相关信息的方法。 首先,http://hometown.aol.com/kgb1001001/Articles/JDBCMetadata/JDBC_Metadata.htm这里有篇名字叫做《Understanding JDBC MetaData》的文章,讲解得不错。 下面就 ...
一、Java把内存划分成两种:一种是栈内存,一种是堆内存。  栈内存: 存放对象:函数中基本类型的变量和对象的引用变量、静态类方法 特点:栈有一个很重要的特殊性,就是存在栈中的数据可以共享。假设我们同时定义 ...
Global site tag (gtag.js) - Google Analytics