玫瑰天空じ☆ve's profile┢┦aPpY☆→ 小新的窝窝PhotosBlogListsMore ![]() | Help |
|
4/7/2009 java.util.date java.sql.date java.sql.timestamp整理一: 这里的一片文章,我个人认为讲解的很详细,有对 java.sql.Date的使用还有困惑的请看。 java.sql.Date 只存储日期数据不存储时间数据 // 会丢失时间数据 //可以这样来处理 preparedStatement.setTimestamp(1, new java.sql.Timestamp(new java.util.Date().getTime()));
java.util.Date d = resultSet.getTimestamp(1); //这样处理更合适一些,可以避免一些潜在Timestamp 问题 java.util.Date d = new java.util.Date(resultSet.getTimestamp(1).getTime()); 自己补的话 这样的话: 往数据库存储的时候可以接收 java.util.Date类型 再用getTime()方法得到代表那个Date对象的long值,再以这个long值 构造一个Timestamp对象 存进数据库中。 从存数据库里取的时候,可以先得到Timestamp用他的getTime()方法得到long值,再以这个long值构造一个 java.util.Date对象,这样就可以对这个Date对象操作了。不如说 new SimpleTimeFormat("yyyyy-MM-dd HH:mm:ss").format()等等
整理二: 用Timestamp来记录日期时间还是很方便的,但有时候显示的时候是不需要小数位后面的毫秒的,这样就需要在转换为String时重新定义格式。 Timestamp转化为String: SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义格式,不显示毫秒 Timestamp now = new Timestamp(System.currentTimeMillis());//获取系统当前时间 String str = df.format(now); String转化为Timestamp: SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 5/12/2008 2012 世界末日
5/3/2008 MSN Messenger无法登陆的另类解决办法MSN Messenger无法登陆的另类解决办法 经常看到用户反映说MSN Messenger无法登陆,碰到类似0x81000370,88048820的错误码。现搜集到下述另类方法,大家可以根据自己的情况加以设置从而解决不能登陆的问题。 4/23/2008 ANT Build.xml例子
3/24/2008 关于Html解析器(转载)关于Html解析器一段时间makefire一直在和我讨论关于html解析的话题,但是一直没有怎么用心去看看有没有三方的开源项目可以实现.窃以为就和xml解析的过程差不多,但是可能会灵活一些,毕竟html的语法不如xml那么强制规范,所以遇到不规范的书写就不知道该怎么解析了. 今天在google和sourceforge.net上面找了找,发现有人确实有心,做了一个html parser的开源项目,jericho-html而且已经到了1.5版本了,看样子也应该比较成熟了,于是下载看看能否适应我的需求.发现一共只有50个类左右(大部分都是数据bean,比如emlment,tag之类的),不依赖于其他三方的lib,所以可以直接就使用了.看了一下使用的sample: import au.id.jericho.lib.html.*; 有一个Util类从给如的uri中得出所有的htmlstr,然后再对这个str转换成为一个html的source,source可以设置logwriter,这样子一来就可以注入log4j的工具和其结合起来,如果放到一个aop的框架里面也会和其他的lib造成依赖和耦合关系.Tag类中静态定义了一大批的字符串变量,代表各种html的标签,而source中有方法遍历(iterate)和查找(findAllStartTags),找到则可以显示其内容和属性. 同时这个项目还提供了对jsp,asp,php等脚本语言的支持,可以对jsp或者php的源码进行分析.项目的实际意义可以在于网页搜索工具,比如做一个baidu或者google类似的搜索工具,只需要对我库中已经注册过的网站(url)定点的进行页面分析,分析关键字并且存在数据库中,则搜索的速度可以大大提高. 不知道google的实现方式是文本搜索,全文索引还是其他方式? HttpClient+Jericho HTML Parser 实现网页的抓取 (转载)Jericho HTML Parser是一个简单而功能强大的Java HTML解析器库,可以分析和处理HTML文档的一部分,包括一些通用的服务器端标签,同时也可以重新生成无法识别的或无效的HTML。它也提供了一个有用的HTML表单分析器。 下载地址:http://sourceforge.net/project/showfiles.php?group_id=101067 HttpClient作为HTTP客户端组件与服务器进行通讯,同时使用了jdom进行XML数据的解析。 * HttpClient 可以在http://jakarta.apache.org/commons/httpclient/downloads.html下载 * HttpClient 用到了 Apache Jakarta common 下的子项目 logging,你可以从这个地址http://jakarta.apache.org/site/downloads/downloads_commons-logging.cgi下载到 common logging,从下载后的压缩包中取出 commons-logging.jar 加到 CLASSPATH 中 * HttpClient 用到了 Apache Jakarta common 下的子项目 codec,你可以从这个地址http://jakarta.apache.org/site/downloads/downloads_commons-codec.cgi 下载到最新的 common codec,从下载后的压缩包中取出 commons-codec-1.x.jar 加到 CLASSPATH 中 在对网页信息进行抓取时,主要会用到GET 方法 使用 HttpClient 需要以下 6 个步骤: 1. 创建 HttpClient 的实例 2. 创建某种连接方法的实例,在这里是 GetMethod。在 GetMethod 的构造函数中传入待连接的地址 3. 调用第一步中创建好的实例的 execute 方法来执行第二步中创建好的 method 实例 4. 读 response 5. 释放连接。无论执行方法是否成功,都必须释放连接 6. 对得到后的内容进行处理 在eclipse下建立工程 -->snatch 将上面下载的四个jar文件导入到项目路径中. 环境搭建完成 现在,首先介绍一下HttpClient的使用 在工程目录下创建test包,在包中创建Httpclient Test类
这样得到的是页面的源代码. 这里 byte[] responseBody = getMethod.getResponseBoy();是读取内容 除此之外,我们还可以这样读取: InputStream inputStream= getMethod.getResponseBodyAsStream(); String responseBody = getMethod.getResponseBodyAsString(); 下面结合两者给个事例 取出http://www.ahcourt.gov.cn/gb/ahgy_2004/fyxw/index.html 中"信息快递"栏的前几条信息. 新建类CourtNews
3/14/2008 CMNET和CMWAP对于很多的手机用户,恐怕很难分清楚到底CMWAP无限上网和CMNET无线上网有什么区别、各自的应用范围是什么、什么情况下可以用哪一类型的方式上网?
(1)为什么会有两个接入点? 在国际上,通常只有一种GPRS接入方式,为什么在中国会有CMWAP和CMNET两兄弟呢?(彩信之所以单独配置接入点是因为彩信服务需要连接专用的服务器,在这里不作探讨。) 其实,CMWAP和CMNET只是中国移动人为划分的两个GPRS接入方式。前者是为手机WAP上网而设立的,后者则主要是为PC、笔记本电脑、PDA等利用GPRS上网服务。它们在实现方式上并没有任何差别,但因为定位不同,所以和CMNET相比,CMWAP便有了部分限制,资费上也存在差别。 (2)什么是WAP? WAP只是一种GPRS应用模式,它与GRPS的接入方式是无关的。WAP应用采用的实现方式是“终端+WAP网关+WAP服务器”的模式,不同于一般Internet的“终端+服务器”的工作模式。主要的目的是通过WAP网关完成WAP-WEB的协议转换以达到节省网络流量和兼容现有WEB应用的目的。 WAP网关从技术的角度讲,只是一个提供代理服务的主机,它不一定由网络运营商提供。但据我所知,中国移动GPRS网络目前只有唯一的一个WAP网关:10.0.0.172,有中国移动提供,用于WAP浏览(HTTP)服务。有一点需要注意,WAP网关和一般意义上的局域网网关是有差别的,标准的WAP网关仅仅实现了HTTP代理的功能,并未完成路由、NAT等局域网网关的功能。这就决定了它在应用上所受到的限制。
为了从应用中区别两者的定位,中国移动对CMWAP作了一定的限制,主要表现在CMWAP接入时只能访问GPRS网络内的IP(10.*.*.*),而无法通过路由访问Internet。(少数地区的移动网络可能不存在这一限制)我们用CMWAP浏览Internet上的网页就是通过WAP网关协议或它提供的HTTP代理服务实现的。 (4)适用范围 可能这两者的适用范围才是大家最关心的问题,CMNET拥有完全的Internet访问权,这里就不多说了,主要让我们来看看CMWAP。因为有了上面提到的限制,CMWAP的适用范围就要看WAP网关所提供的支持了。目前,中国移动的WAP网关对外只提供HTTP代理协议(80和8080端口)和WAP网关协议(9201端口)。(据有的网友提到1080端口也是开放的,但无法连接。这也许是移动内部使用的一个Socks后门吧)。 因此,只有满足以下两个条件的应用才能在中国移动的CMWAP接入方式下正常工作: 1.应用程序的网络请求基于HTTP协议。 2.应用程序支持HTTP代理协议或WAP网关协议。 但是如何辨别一个应用程序的网络请求是否基于HTTP协议?这个问题还真不好回答,要完全做到这一点需要通过拦截应用程序的通信数据包进行分析。这里提供几个简单的方法给广大菜鸟级机友:从表现上看,如果它的网络请求是网址(URL)的形式,那么通常是基于HTTP协议的,如Web浏览器;如果它连接的服务器端口是80,那么它可能是基于HTTP协议的。 如何区别一个应用程序支持HTTP代理协议还是WAP网关协议呢?首先看它的设置中有没有代理服务器的选项(通常在S60智能手机上未特别说明的代理都是特指HTTP代理),如果有则表示它支持HTTP代理协议。如果没有,则需要按照以下步骤测试: 在GPRS接入点设置的高级设置里去掉代理服务器的设置项:ServerAddress和ServerPort(如果应用程序可以正常工作,那么它是基于WAP网关协议,如Java程序、S60内置的浏览器)。如果在此状态下不能正常工作,而恢复GPRS接入点高级设置中的代理服务器设置后能够正常工作,则应用程序支持HTTP代理协议。如果仍不能正常工作,那么这个应用程序一般来说是不支持HTTP代理协议或WAP网关协议的。 这里需要特别说明的是Java QQ,它有Socket和HTTP两种版本。现在网上流传的可用于CMWAP的JavaQQ就是基于HTTP协议的。就拿Java QQ 2004来说,启动画面中就明确的写着“KJavaQQHTTP”,而sis版的QQ和Agile Messenger因为是采用的普通的Socket连接方式,因此无法用于CMWAP。 下面再来总结一下CMWAP下可以使用的常见软件的工作方式: (1)手机内置的浏览器:WAP网关协议 (2)Opera浏览器:HTTP代理协议(有代理设置) (3)Java程序:WAP网关协议 (4)AvantGo:HTTP代理协议(有代理设置) NIO用异步输入输出流编写Socket进程通信程序 在Merlin中加入了用于实现异步输入输出机制的应用程序接口包:java.nio(新的输入输出包,定义了很多基本类型缓冲(Buffer)),java.nio.channels(通道及选择器等,用于异步输入输出),java.nio.charset(字符的编码解码)。通道(Channel)首先在选择器(Selector)中注册自己感兴趣的事件,当相应的事件发生时,选择器便通过选择键(SelectionKey)通知已注册的通道。然后通道将需要处理的信息,通过缓冲(Buffer)打包,编码/解码,完成输入输出控制。 通道介绍: 这里主要介绍ServerSocketChannel和 SocketChannel.它们都是可选择的(selectable)通道,分别可以工作在同步和异步两种方式下(注意,这里的可选择不是指可以选择两种工作方式,而是指可以有选择的注册自己感兴趣的事件)。可以用channel.configureBlocking(Boolean )来设置其工作方式。与以前版本的API相比较,ServerSocketChannel就相当于ServerSocket(ServerSocketChannel封装了ServerSocket),而SocketChannel就相当于Socket(SocketChannel封装了Socket)。当通道工作在同步方式时,编程方法与以前的基本相似,这里主要介绍异步工作方式。 所谓异步输入输出机制,是指在进行输入输出处理时,不必等到输入输出处理完毕才返回。所以异步的同义语是非阻塞(None Blocking)。在服务器端,ServerSocketChannel通过静态函数open()返回一个实例serverChl。然后该通道调用serverChl.socket().bind()绑定到服务器某端口,并调用register(Selector sel, SelectionKey.OP_ACCEPT)注册OP_ACCEPT事件到一个选择器中(ServerSocketChannel只可以注册OP_ACCEPT事件)。当有客户请求连接时,选择器就会通知该通道有客户连接请求,就可以进行相应的输入输出控制了;在客户端,clientChl实例注册自己感兴趣的事件后(可以是OP_CONNECT,OP_READ,OP_WRITE的组合),调用clientChl.connect(InetSocketAddress )连接服务器然后进行相应处理。注意,这里的连接是异步的,即会立即返回而继续执行后面的代码。 选择器和选择键介绍: 选择器(Selector)的作用是:将通道感兴趣的事件放入队列中,而不是马上提交给应用程序,等已注册的通道自己来请求处理这些事件。换句话说,就是选择器将会随时报告已经准备好了的通道,而且是按照先进先出的顺序。那么,选择器是通过什么来报告的呢?选择键(SelectionKey)。选择键的作用就是表明哪个通道已经做好了准备,准备干什么。你也许马上会想到,那一定是已注册的通道感兴趣的事件。不错,例如对于服务器端serverChl来说,可以调用key.isAcceptable()来通知serverChl有客户端连接请求。相应的函数还有:SelectionKey.isReadable(),SelectionKey.isWritable()。一般的,在一个循环中轮询感兴趣的事件(具体可参照下面的代码)。如果选择器中尚无通道已注册事件发生,调用Selector.select()将阻塞,直到有事件发生为止。另外,可以调用selectNow()或者select(long timeout)。前者立即返回,没有事件时返回0值;后者等待timeout时间后返回。一个选择器最多可以同时被63个通道一起注册使用。 应用实例: 下面是用异步输入输出机制实现的客户/服务器实例程序――程序清单1(限于篇幅,只给出了服务器端实现,读者可以参照着实现客户端代码): 你爷爷 DE∑⌒∑⌒你爷爷DE
今天又被教官骂了,真TMD不爽!
这个驾照真的这么难考吗?我在问自己? 怎么学了这么久还是这么差呢? 离合? 油门? 手闸? 我的天呢。我不想再听了 什么离合到半连动状态再持续加油门,而且要均匀。 我的天,我练得那么少,怎么可能那么熟练啊? 怪我?有用吗?过几天就要考试了````郁闷啊 有那位好心人能给个解决的办法啊?
终究是害了自己
![]() 11/29/2005 好事一件 I DO★ 迟 到 ★
早上睡过头了 明天的明天?明天的明天的是什么天呢? ﹌透明边框滚动条
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||