1.stringbufferåstringbuilderçåºå«?方法源d方法
2.用Java数组求演讲评分去掉一个最高分去掉一个最低分
3.tcp端口阻塞解决方法
stringbufferåstringbuilderçåºå«?
åºå«1ï¼çº¿ç¨å®å ¨StringBufferï¼çº¿ç¨å®å ¨ï¼StringBuilderï¼çº¿ç¨ä¸å®å ¨ãå 为StringBufferçææå ¬å¼æ¹æ³é½æ¯synchronized修饰çï¼èStringBuilder并没æStringBuilder修饰ã
StringBuffer代ç ç段ï¼
@Overridepublic synchronized StringBuffer append(String str) {
toStringCache = nullï¼
super.append(str)ï¼
return thisï¼
ï½
åºå«2ï¼ç¼å²åº
StringBuffer代ç ç段ï¼
private transient char toStringCacheï¼
@Override
public synchronized String toString() {
if (toStringCache == null) {
toStringCache = Arrays.copyOfRange(value, 0, count);
} return
new String(toStringCache, true)ï¼
ï½
StringBuilder代ç ç段ï¼
@Override
public String toString() {
// Create a copy, don't share the array
return new String(value, 0, count);
}
åºå«3ï¼æ§è½
æ¢ç¶StringBufferæ¯çº¿ç¨å®å ¨çï¼å®çææå ¬å¼æ¹æ³é½æ¯åæ¥çï¼StringBuilderæ¯æ²¡æ对æ¹æ³å éåæ¥çï¼æ以毫æ çé®ï¼StringBuilderçæ§è½è¦è¿å¤§äºStringBufferã
用Java数组求演讲评分去掉一个最高分去掉一个最低分
import java.util.Arrays;//导入Arrays包
public class MAX_MIN {
public static void main(String[] args) {
double[] a={ 5.2,6.7,5.8,6.9};//定义数组(评分)
Arrays.sort(a);//对数组(评分)进行排序
a=Arrays.copyOfRange(a, 1, a.length-1);//去掉最高分最低分
double sum = 0;//定义总分变量
//循环累加评分
for(int i=0;i<a.length;i++){
System.out.println(a[i]);//打印去掉最高分最低分后的新数
sum+=a[i];
}
System.out.println("平均分为"+sum/a.length);//打印平均分
}
}
//打印结果
5.8
6.7
平均分为6.
tcp端口阻塞解决方法
大家知道,tcp的方法源d方法读和写是阻塞的,即读的方法源d方法spring源码创建bean时候不知道什么时候读完,写的方法源d方法时候不知道什么时候写完,因此线程就一直暂停在哪里,方法源d方法织梦影视电影源码一般tcp程序用在上位机下位机之间对吧!方法源d方法智能云解析视频源码下位机一些设备一般会发心跳报文给我们机器,方法源d方法假设为s发一次吧,方法源d方法当机器超过s没接收到数据,方法源d方法那么我们就要考虑把socket断开,方法源d方法因为不断开的方法源d方法话设备重新连接可能又会建立新的socket,这样如果设备反复断开连接的方法源d方法话,将产生大量的方法源d方法易语言当面付源码socket,占用大量系统资源,方法源d方法这里我们用socket.setSoTimeout()方法解决read方法的方法源d方法中国源码网排名接单阻塞问题,同时设定一个标志位,在异常处理程序当中退出socket连接:
public void run(){
InputStream is = null
OutputStream os = null
int flag = 0
try {
socket.setSoTimeout() // 0.5秒就退出read()方法的阻塞
is = socket.getInputStream()
os = socket.getOutputStream()
} catch (Exception e2) {
e2.printStackTrace()
}
while (true) {
try {
// 读取数据
int readlen = is.read(buff)
if (readlen > 0) {
flag = 0
}
byte data[] = Arrays.copyOfRange(buff, 0, readlen)
resolveData(data)
} catch (IOException e) {
try {
flag++
if (flag == ) {
is.close()
os.close()
socket.close()
}
} catch (Exception e1) {
e1.printStackTrace()
}
}
}
}