老师,您好,你所谓的阻塞状态,让资源 中的资源指的是cpu 并不是它执行所需要的资源吗
public static <T> void fill(List<? super T> list, T obj) {
int size = list.size();
if (size < FILL_THRESHOLD || list instanceof RandomAccess) {
for (int i=0; i<size; i++)
list.set(i, obj);
} else {
ListIterator<? super T> itr = list.listIterator();
for (int i=0; i<size; i++) {
itr.next();
itr.set(obj);
}
我没看懂这段源码 老师可以帮我解释一下么
自定义类要想放入hashset()内就必须重写hashcode()方法及equals()方法和底层原理是哈希表有什么关系啊,不懂!!
源代码:
public class Test { public static void main(String[] args) { String str1="abc"+"dbc"; String str4="abcdbc"; String str2=str1+"cde"; String str3=new String("Hello"); System.out.println(str1==str4); /**在等号的右侧有变量存在或有new关键字,将在堆的内存中开辟空间*/ } }
老师我想问是不是因为我的jdk版本为12.0.02,所以和老师的代码反汇编的不一样,如果是因为版本问题,那么jdk1.8和jdk12.0.02是不是在执行
String str2=str1+"cde";
时,是不是都创建了StringBuilder的对象,执行apper()
老师,既然equals相同的对象,hashcode也相同,不同的对象hashcode也不同。那源码中为什么不把hashcode储存起来,直接比较hashcode就行了呀,为什么还要费力的去比较对象的内容呢?
老师,请问一下,这部分代码中的子线程为什么没有跟主线程抢占资源,每次都是主线程中的循环结束,才进行子线程的输出的
再看下面的一份代码
这个运行结果,子线程还会跟主线程抢占资源
这两种代码有什么出入吗
请您帮忙解答一下,谢谢
问题:并没有删除cc的父目录bb,没找到原因?
package com.bjsxt.File; import java.io.File; public class testDirectory { public static void main(String[] args) { // File f = new File("/Users/hongjuansun/Desktop/testDirectory"); // f.mkdir();//创建单层目录 // System.out.println("判断目录是否存在:"+f.exists()); // System.out.println("是否是目录:"+f.isDirectory()); // System.out.println("删除目录:"+f.delete()); //delete删除目录时,只能删除空目录 File f1 = new File("/Users/hongjuansun/Desktop/aa/bb/cc");//虽然创建了3个目录,但是f1代表的是cc f1.mkdirs();//创建多层目录 File parent = f1.getParentFile();//获取cc目录的父级目录 System.out.println("cc的父目录是:"+parent); //此时我想删除cc的父目录,但是delete删除目录时只能删除空目录,所以先删除cc,在删除cc的父目录 f1.delete();//删除cc System.out.println(parent.delete());//打印是否删除bb目录 } }
程序运行结果:
桌面查看文件夹结果:
有没有别的浏览器自带的抓包工具呢!比如常用的360和谷歌
老师好,我看了很多的源码里,明明可以直接调用的地方,他们都要新增一个变量出来,并加上final。这是为了什么呢,安全性还是性能的提升呢
private static ThreadLocal<Integer> numberContainer=new ThreadLocal<Integer>(){ protected Integer initialValue() { return 0; } };
请问老师,上边这段代码,就是从图片中取出来的,(问题一)这个是个啥写法,匿名内部类?麻烦解释一下。(问题二)然后还有就是Integer initialValue方法是什么意思?求指教和解答,拜托详细点,非常感谢您。
请问,,,,,任务调度,线程池在实际开发中用的多不
public void clear() { modCount++; // clear to let GC do its work for (int i = 0; i < size; i++) elementData[i] = null; size = 0; }
//remove()方法: //将最后一个元素赋为null,然后size-1 elementData[--size] = null;
老师,clear()只将每个元素赋null,size=0,好像没有缩小数组的容量?同样的还有remove()方法,可以解释一下吗?
//完成扩容:把数组元素拷贝到长度为newCapacity(15)的新数组 elementData = Arrays.copyOf(elementData, newCapacity);
老师,扩容之后的elementData是原来的数组还是新建了数组,内存地址是否改变?如果是新建数组,数组名没有改变,那原来的同名数组呢?
if (numMoved > 0) System.arraycopy(elementData/*原数组*/,index+1/*要删除元素的下一个元素*/, elementData/*新数组*/, index,numMoved);
老师,按照这段代码的意思,应该是从要删除元素的下一个元素开始拷贝,size=3,index=1,拷贝元素个数nummoved=1;那应该只拷贝一个元素,把元素组索引为2的元素拷贝到新数组索引为1的地方,前面的应该丢失了啊,为什么还会拷贝过去呢?
package com.nuc.server; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class Test { public static void main(String[] args) throws IOException { System.out.println("----------------------服务器已启动-----------------------------"); //(1)创建ServerSocket对象 ServerSocket server = new ServerSocket(9999); //(2)监听有客户端来请求连接 Socket client = server.accept(); //(3)获取输入流 InputStream is = client.getInputStream(); System.out.println((char)is.read()); //(4)获取输出流 //"收到了" OutputStream os=(OutputStream) client.getOutputStream(); os.write("收到了!".getBytes()); //(5)关闭流,关闭Socket if(os!=null) { os.close(); } if(is!=null) { is.close(); } if(client!=null) { client.close(); } } }
package com.nuc.client; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public class Test { public static void main(String[] args) throws IOException { System.out.println("---------------------------客户端-----------------------------"); //(1)创建一个Socket对象 Socket client = new Socket("localhost",9999); //(2)获取输出流 OutputStream os=client.getOutputStream(); os.write('a'); //(3)获取输入流 InputStream is=client.getInputStream(); byte [] buf=new byte[1024]; //中转站 int len=0; //读到的字节的个数 while((len=is.read(buf))!=-1) { System.out.println(new String(buf,0,len)); } //(4)关闭流 if(is!=null) { is.close(); } if(os!=null) { os.close(); } if(client!=null) { client.close(); } } }
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637