java 问题求java高手真经 pdf解答

-bash-3.2$ wget ''
-- 09:17:32--
正在解析主机 ... 118.85.207.18
Connecting to |118.85.207.18|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:41881 (41K) [text/html]
Saving to: `index.html.13'
100%[==========================================================================================&] 41,881
09:17:32 (217 KB/s) - `index.html.13' saved []
-bash-3.2$ wget ''
-- 09:19:26--
正在解析主机 ... 121.9.204.234
Connecting to |121.9.204.234|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:1K) [text/html]
Saving to: `index.html.14'
100%[==========================================================================================&] 390,160
09:19:29 (120 KB/s) - `index.html.14' saved [160]
但是为啥我java程序就不能获取到这2个网站的首包时延的,获取首包时延代码如下:希望高手给予解答,是服务器环境问题呢还是代码问题 还是其网站端口 协议不对呢?Java code
String ip = &1.1.1.1&;//此处为dns解析出来的网站IP地址
Socket socket = new Socket();
socket.connect(new InetSocketAddress(ip, 80), 15000);
boolean autoflush =
PrintWriter out = new PrintWriter(socket.getOutputStream(), autoflush);
BufferedReader in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
// send an HTTP request to the web server
out.println(&GET / HTTP/1.1&);
out.println(&Accept: */*&);
out.println(&User-Agent: cdut-boy&);
out.println(&Host: & + load_url);//此处为网站网址
out.println();
(&获取HTTP页面首包时延发包结束,网站网址:load_url=& + load_url);
boolean loop =
while (loop)
if (in.ready())//此处 优酷 189 从来就读取不到首包,高手解答
//..........do something...under...
------解决方案--------------------这个不清楚,顶一下
------解决方案--------------------web开发学到这程度,不一般了
------解决方案--------------------真的很高深。。。顶下!
------解决方案--------------------
所谓首包延时,也就是自你发送完请求后,到服务器返回给你第一个信息中间的耗时。是这个意思吧?我建议考虑换个思路:1、在out.println();之后,记录 long timer = System.currentTimeMillis();2、然后直接in.readLine(),再记录下 timer = System.currentTimeMillis() -这个其实相当于你的首包延时,片段如下:out.println(&Host: & + load_url);//此处为网站网址out.println();out.flush();long timer = System.currentTimeMillis();(&获取HTTP页面首包时延发包结束,网站网址:load_url=& + load_url);String lineFirst = in.readLine();timer = System.currentTimeMillis() -(&获取HTTP页面首包时延:& + timer + &ms&);
------解决方案--------------------我拿你的代码试过了,没问题的。不管是in.ready(),in.readLine()都可以的,延时都在10ms左右。估计是你的网络问题
------解决方案--------------------
其实问题在于 ready() 这个函数,在InputStream中并没有定义,是在 中才有的,而且本身是借助:sun.nio.cs.StreamDecoder 来实现的。所以具体是什么原因导致的,需要花时间研究下。API只是说,它会检查缓冲区中是否有数据,如果有才返回ready()“获取首包时延 超出需求时限的话 我不好控制”——嗯,确实会存在卡的问题,这种情况下,可能你需要采用NIO模型来开发,而不是IO模型;NIO提供无阻塞的各种实现。“用in.readLine()这个时延怎么获得的为60984多”——我想了下,可能是因为包装了BufferedReader的原因,它要先Buffer一段内容;这种情况下,需要直接使用 socket.getInputStream(),不做任何包装,然后直接 read 1个字节就好了。但是 60秒也太夸张了吧。。。感觉是服务器出错了吧?
------解决方案-------------------- 共&3&页:
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有期待java高手来解决下,跪谢了。
[问题点数:40分]
期待java高手来解决下,跪谢了。
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。后台字符串到web&td&&/td&中的换行问题,请高手解答!-java-电脑编程网后台字符串到web&td&&/td&中的换行问题,请高手解答!作者:firstDemo 和相关&&问题有2个一个是:我在后台程序里拼装了一个字符串,如Java code
StringBuffer errstr = new StringBuffer() ;
errstr.append(&错误a.....原因......&br/&&) ;
errstr.append(&错误a.....原因......&br/&&) ;
errstr.append(&错误a.....原因......&br/&&) ;
errstr.append(&错误a.....原因......&br/&&) ;
我想要的效果是在页面上换行输出,可到了页面上就变成一条字符串了,没有换行效果,我用的是html的&td&标签问题二:也是换行问题我在后台获取到了页面的&textarea&&/textarea&中的值,并保存到了,再显示到页面的时候,(也是用的&td&&/td&标签来显示的),没有刚输入到textarea标签中的那种换行效果,希望我输入的时候的那些换行效果,最后显示在&td&&/td&中也能是那种效果不知道能不能实现请高手帮忙解答下,不胜感激------回答---------------其他回答(5分)---------用\r\n试试------其他回答(5分)---------用&pre&标记------其他回答(5分)---------html里面换行是 &/br&& 你保存到后得到的数据是\r\n& 再展现到视图层时 html识别不了\r\n你可以用js 或者直接后台程式replace一下ps:我印象中好像如此 ------其他回答(5分)---------Java code
StringBuffer errstr = new StringBuffer() ;
errstr.append(&&table&&) ;
errstr.append(&&tr&&td&错误a.....原因......&/td&&/tr&&) ;
errstr.append(&&tr&&td&错误a.....原因......&/td&&/tr&&) ;
errstr.append(&&tr&&td&错误a.....原因......&/td&&/tr&&) ;
errstr.append(&&tr&&td&错误a.....原因......&/td&&/tr&&) ;
errstr.append(&&/table&&) ;
------其他回答(20分)---------引用楼主 firstdemo 的回复:问题有2个一个是:我在后台程序里拼装了一个字符串,如Java codeStringBuffer errstr = new StringBuffer() ;errstr.append(&错误a.....原因......&br/&&) ;errstr.append(&错误a.....原因......&br/&&) ;errstr.append(&错误a.....原因......&b……这种是可以的,只不过你让不解析html&s:property value=&errstr & escape=&false&/&& 注:strus2的方式对应jstl标签也有这个属性,自己去找找。------回答---------------其他回答(5分)---------用\r\n试试------其他回答(5分)---------用&pre&标记------其他回答(5分)---------html里面换行是 &/br&& 你保存到数据库后得到的数据是\r\n& 再展现到视图层时 html识别不了\r\n你可以用js 或者直接后台程式replace一下ps:我印象中好像如此 ------其他回答(5分)---------Java code
StringBuffer errstr = new StringBuffer() ;
errstr.append(&&table&&) ;
errstr.append(&&tr&&td&错误a.....原因......&/td&&/tr&&) ;
errstr.append(&&tr&&td&错误a.....原因......&/td&&/tr&&) ;
errstr.append(&&tr&&td&错误a.....原因......&/td&&/tr&&) ;
errstr.append(&&tr&&td&错误a.....原因......&/td&&/tr&&) ;
errstr.append(&&/table&&) ;
------其他回答(20分)---------
引用楼主 firstdemo 的回复:问题有2个一个是:我在后台程序里拼装了一个字符串,如Java codeStringBuffer errstr = new StringBuffer() ;errstr.append(&错误a.....原因......&br/&&) ;errstr.append(&错误a.....原因......&br/&&) ;errstr.append(&错误a.....原因......&b……这种是可以的,只不过你让jsp不解析html&s:property value=&errstr & escape=&false&/&& 注:strus2的方式对应jstl标签也有这个属性,自己去找找。
相关资料:|||||||后台字符串到web&td&&/td&中的换行问题,请高手解答!来源网络,如有侵权请告知,即处理!编程Tags:                &                    17:44 提问
求高手解答:DecimalFormat四舍五入问题。
我需要将一个数字格式化为###.0000格式,比如1.2,格式化为1.2000
12.00005,我希望得到12.0001
很遗憾我现在没有找到好的办法可以达到我的目的。
下面为我的测试代码。
求大神给个方法,最好也能解释下java.text.DecimalFormat的机制。
public class FormatTest {
public static void main(String[] args) {
java.text.DecimalFormat df = new java.text.DecimalFormat("###.0000");
java.lang.Double db1 = new java.lang.Double("12.00005");
java.lang.Double db2 = new java.lang.Double("12.00006");
java.lang.Double db3 = new java.lang.Double("12.000055");
java.lang.Double db4 = new java.lang.Double("12.000056");
System.out.println(df.format(db1)); // 输出结果是12.0000
System.out.println(df.format(db2)); // 输出结果是12.0001
System.out.println(df.format(db3)); // 输出结果是12.0001
System.out.println(df.format(db4)); // 输出结果是12.0001
按赞数排序
double d = 3.1465926;
String result = String.format("%.4f", d);
System.out.println(result);
可以使用这个试试!
楼主代码没错,而运行结果不是楼主所想的原因:是因为java标准是美国人制定的,而美国人常用运算思维是上述结果,不同于我们中国人的思维是四舍五入,所以java默认的格式是HALF_EVEN,这是美国人的思维。想要得到楼主想要的结果,只要加一行代码就行了。具体代码如下:
import java.text.DecimalF
import java.math.RoundingM
public class Test1{
public static void main(String args[]){
DecimalFormat df = new DecimalFormat("###.0000");
df.setRoundingMode(RoundingMode.HALF_UP);
double db1 = 12.00005;
double db2 = 12.00006;
double db3 = 12.000055;
double db4 = 12.000056;
System.out.println(df.format(db1)); // 输出结果是12.0001
System.out.println(df.format(db2)); // 输出结果是12.0001
System.out.println(df.format(db3)); // 输出结果是12.0001
System.out.println(df.format(db4)); // 输出结果是12.0001
这样就正确了 。
枚举 RoundingMode
java.lang.Object
继承者 java.lang.Enum
继承者 java.math.RoundingMode
类 DecimalFormat
java.lang.Object
继承者 java.text.Format
继承者 java.text.NumberFormat
继承者 java.text.DecimalFormat
不同舍入模式下的舍入操作汇总
根据给定的舍入模式将输入数字舍入为一位数的结果
输入数字 UP DOWN CEILING FLOOR HALF_UP HALF_DOWN HALF_EVEN UNNECESSARY
抛出 ArithmeticException
抛出 ArithmeticException
抛出 ArithmeticException
抛出 ArithmeticException
抛出 ArithmeticException
抛出 ArithmeticException
抛出 ArithmeticException
抛出 ArithmeticException
至于详细的帮助,建议楼主下载一份java API文档学习。希望对楼主有帮助
df.setRoundingMode(RoundingMode.HALF_UP);
加上这句代码试试看试试看
11542关注|450收录
12058关注|1151收录
3550关注|616收录
其他相似问题
相关参考资料

我要回帖

更多关于 java高手真经 pdf 的文章

 

随机推荐