java中无符号类型的处理

在Java中,不存在Unsigned无符号数据类型,但可以轻而易举的完成Unsigned转换。 方案一:如果在Java中进行流(Stream)数据处理,可以用DataInputStream类对Stream中的数据以Unsigned读取。 Java在这方面提供了支持,可以用java.io.DataInputStream类对象来完成对流内数据的Unsigned读取,该类提供了如下方法:(1)int readUnsignedByte() //从流中读取一个0255(0xFF)的单字节数据,并以int数据类型的数据返回。返回的数据相当于C/C++语言中所谓的“BYTE”。(2)int readUnsignedShort() //从流中读取一个065535(0xFFFF)的双字节数据,并以int数据类型的数据返回。返回的数据相当于C/C++语言中所谓的“WORD”, 并且是以“低地址低字节”的方式返回的,所以程序员不需要额外的转换。 方案二:利用Java位运算符,完成Unsigned转换。 正常情况下,Java提供的数据类型是有符号signed类型的,可以通过位运算的方式得到它们相对应的无符号值,参见几个方法中的代码: public int getUnsignedByte (byte data){ //将data字节型数据转换为0255 (0xFF 即BYTE)。return data&0x0FF;} public int getUnsignedByte (short data){ //将data字节型数据转换为065535 (0xFFFF 即 WORD)。return data&0x0FFFF;} public long getUnsignedIntt (int data){ //将int数据转换为0~4294967295 (0xFFFFFFFF即DWORD)。return data&0x0FFFFFFFFl;} 灵活的运用这些技法,根本不存“二进制在Java中得不到全面支持”的论断!

2015年4月8日 · 1 分钟 · 天边的星星

java中byte与 int、short、char、float、double之间的转换

由于java的字节序和网络字节序一致(高位在前),给出换算方法,亲测OK public static void main(String[] args) { byte[] bs=new byte[2]; short dvalue=1; Utils.putShort(bs, dvalue, 0); for (int i = 0; i < bs.length; i++) { System.out.println(bs[i]); } } /** 将32位的int值放到4字节的里 @param num @return */ public static byte[] int2byteArray(int num) { byte[] result = new byte[4]; result[0] = (byte) (num »> 24);// 取最高8位放到0下标 result[1] = (byte) (num »> 16);// 取次高8为放到1下标 result[2] = (byte) (num »> 8); // 取次低8位放到2下标 result[3] = (byte) (num); // 取最低8位放到3下标 return result; } /** ...

2015年3月30日 · 3 分钟 · 天边的星星

websocket开发第一篇

客户端与服务端基于HTTP和WebSocket网络协议来通讯,其中HTTP用于从客户端向服务端的请求,WebSocket用于从服务端向客户端的推送,因此服务器端需要支持HTTP和WebSocket两种协议。HTTP好说,所有Web服务器都支持,而支持WebSocket的倒不多。 Java阵营:Tomcat 7和Netty .Net阵营:System.Net.WebSockets Nodejs阵营:Socket.io WebSocket百度百科 1)Web通信的演进 2)WebSocket 3)WebSocket在Apache Tomcat 7(7.0.27 )的实现 4)怎样用Jaggery开发WebSocket特性 Tomcat 7中引入了WebSocket实现。下面我们先了解WebSocket的优缺点,其次简要介绍Apache Tomcat 7的WebSocket实现。 WebSocket的演进过程如图所示: 要知道在Tomcat 6中要实现双向HTTP通信,需要使用Tomcat的Comet处理模块。Comet有以下局限: 1)HTTP协议本身是请求/响应协议,而不是双向协议 2)代理和其它中间媒介不会工作的很好 3)在任何给定的时间只有某个方向的数据包传输 4)Servlet开发者要使用多线程很难 Servlet 3.0版引入了一个新特征:异步Servlet。我们把它与客户端的Ajax调用进行比较。异步Servlet会把请求悬挂起,直到响应准备好交付,无需在容器中使用worker线程。WebSockets是另一个尝试标准化的技术,它支持HTTP之上的异步、事件驱动和全双工通信。 WebSocket给我们带来了如下特性: 1)通过升级/交换HTTP协议,在HTTP之上提供全双工通信 2)基于消息/帧的通信 3)可以与代理和中间媒介一起工作 4)还可以不与代理和中间媒介一起工作 WebSocket的优点: 1)WebSocket是理想的,客户端和服务器之间不再需要长期运行的会话 2)WebSocket是HTTP协议之上的全双工通信 3)由于WebSocket是HTTP握手初始化之后的TCP之上的协议,所以你只需做两件事: 发送消息 接收消息

2014年5月20日 · 1 分钟 · 天边的星星

java 网页解析工具包 Jsoup

Jsoup是一个非常好的解析网页的包,用java开发的,提供了类似DOM,CSS选择器的方式来查找和提取文档中的内容。 相关资料如下: 下载地址:[http://jsoup.org/download](http://jsoup.org/download) 中文文档资料:[http://www.open-open.com/jsoup/](http://www.open-open.com/jsoup/) 比较好的文档:[http://www.ostools.net/apidocs/apidoc?api=jsoup-1.6.3](http://www.ostools.net/apidocs/apidoc?api=jsoup-1.6.3) &nbsp; 今天做了一个Jsoup解析网站的项目,使用Jsoup.connect(url).get()连接某网站时偶尔会出现 java.net.SocketTimeoutException:Read timed out异常。 原因是默认的Socket的延时比较短,而有些网站的响应速度比较慢, 所以会发生超时的情况。 解决方法: 链接的时候设定超时时间即可。 doc = Jsoup.connect(url).timeout(5000).get(); 5000表示延时时间设置为5s。 测试代码如下: 1,不设定timeout时: <div class="dp-highlighter bg_java" style="color: #362e2b;"> <div class="bar"> <div class="tools" style="color: silver;"> **[java]** [view plain](http://blog.csdn.net/huangxy10/article/details/8188067#)[copy](http://blog.csdn.net/huangxy10/article/details/8188067#)[print](http://blog.csdn.net/huangxy10/article/details/8188067#)[?](http://blog.csdn.net/huangxy10/article/details/8188067#) <div> </div> </div> </div> - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: blue;">package</span> jsoupTest; </span> - <span style="color: black;"> </span> - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: blue;">import</span> java.io.IOException; </span> - <span style="color: black;"> </span> - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: blue;">import</span> org.jsoup.*; </span> - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: blue;">import</span> org.jsoup.helper.Validate; </span> - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: blue;">import</span> org.jsoup.nodes.Document; </span> - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: blue;">import</span> org.jsoup.nodes.Element; </span> - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: blue;">import</span> org.jsoup.select.Elements; </span> - <span style="color: black;"> </span> - <span style="color: black;"><span class="keyword" style="font-weight: bold; color: blue;">public</span> <span class="keyword" style="font-weight: bold; color: blue;">class</span> JsoupTest { </span> - <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: blue;">public</span> <span class="keyword" style="font-weight: bold; color: blue;">static</span> <span class="keyword" style="font-weight: bold; color: blue;">void</span> main(String[] args) <span class="keyword" style="font-weight: bold; color: blue;">throws</span> IOException{ </span> - <span style="color: black;"> String url = <span class="string" style="color: red;">&#8220;http://www.weather.com.cn/weather/101010400.shtml&#8221;</span>; </span> - <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: blue;">long</span> start = System.currentTimeMillis(); </span> - <span style="color: black;"> Document doc=<span class="keyword" style="font-weight: bold; color: blue;">null</span>; </span> - <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: blue;">try</span>{ </span> - <span style="color: black;"> doc = Jsoup.connect(url).get(); </span> - <span style="color: black;"> } </span> - <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: blue;">catch</span>(Exception e){ </span> - <span style="color: black;"> e.printStackTrace(); </span> - <span style="color: black;"> } </span> - <span style="color: black;"> <span class="keyword" style="font-weight: bold; color: blue;">finally</span>{ </span> - <span style="color: black;"> System.out.println(<span class="string" style="color: red;">&#8220;Time is:&#8221;</span>+(System.currentTimeMillis()-start) + <span class="string" style="color: red;">&#8220;ms&#8221;</span>); </span> - <span style="color: black;"> } </span> - <span style="color: black;"> Elements elem = doc.getElementsByTag(<span class="string" style="color: red;">&#8220;Title&#8221;</span>); </span> - <span style="color: black;"> System.out.println(<span class="string" style="color: red;">&#8220;Title is:&#8221;</span> +elem.text()); </span> - <span style="color: black;"> } </span> - <span style="color: black;">} </span> </div> **<span style="color: #362e2b;">有时发生超时:</span> <span style="color: #ff0000;">java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at java.net.SocketInputStream.read(Unknown Source) at java.io.BufferedInputStream.fill(Unknown Source) at java.io.BufferedInputStream.read1(Unknown Source) at java.io.BufferedInputStream.read(Unknown Source) at sun.net.www.http.ChunkedInputStream.fastRead(Unknown Source) at sun.net.www.http.ChunkedInputStream.read(Unknown Source) at java.io.FilterInputStream.read(Unknown Source) at sun.net.www.protocol.http.HttpURLConnectionHttpInputStream.read(Unknown Source) at java.util.zip.InflaterInputStream.fill(Unknown Source) at java.util.zip.InflaterInputStream.read(Unknown Source) at java.util.zip.GZIPInputStream.read(Unknown Source) at java.io.BufferedInputStream.read1(Unknown Source) at java.io.BufferedInputStream.read(Unknown Source) at java.io.FilterInputStream.read(Unknown Source) at org.jsoup.helper.DataUtil.readToByteBuffer(DataUtil.java:113) at org.jsoup.helper.HttpConnectionResponse.execute(HttpConnection.java:447) at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:393) at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:159) at org.jsoup.helper.HttpConnection.get(HttpConnection.java:148) at jsoupTest.JsoupTest.main(JsoupTest.java:17) Time is:3885ms Exception in thread “main” java.lang.NullPointerException at jsoupTest.JsoupTest.main(JsoupTest.java:25) ...

2014年4月29日 · 4 分钟 · 天边的星星