老师,我看源码有两个问题。1.Calendar有一个方法
public static Calendar getInstance()
这个方法返回了一个Calendar, 抽象类不是不能被实例化吗,我一个个方法点进去也没懂他是怎么创建的实例,然后这个方法也返回了一个Calendar
2.通过这个方法返回的Calendar也有GregorianCalendar类函数,他们有什么差别吗,真正做开发的时候用哪个? getInstance还是实例化GregorianCalendar
为什么long time=1000;放方法里面运行是这样啊
InetSocketAddress isa = new InetSocketAddress("localhost",9999); InetSocketAddress isa2 = new InetSocketAddress("127.0.0.1",9999); InetSocketAddress isa3 = new InetSocketAddress("192.168.1.2",9999);
isa返回结果:
isa2返回结果:
isa返回结果:
老师这三个不都是指本机嘛,为什么三次返回的主机名称不一样?只有输入IP地址的返回的我电脑的名称?
老师 想要JDK1.8资源 之前发的链接打不开 过期了
如上图:while循环里面是一直在创建线程吧,那为什么老师说每有一个客户端就创建一个线程
图2:
package chatGroup; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.Socket; import java.util.List; /** * 服务器路径线程 */ public class MyChannel implements Runnable{ private DataInputStream dis; private DataOutputStream dos; private boolean flag=true; public MyChannel(Socket socket) { try { dis=new DataInputStream(socket.getInputStream()); } catch (IOException e) { flag=false; CloseUtil.close(dis); } try { dos=new DataOutputStream(socket.getOutputStream()); } catch (IOException e) { flag=false; CloseUtil.close(dos); } } @Override public void run() { while (flag){ //this.send(gain()); sendOther(); } } public String gain(){ String str=""; try { str=dis.readUTF(); } catch (IOException e) { flag=false; CloseUtil.close(dis); MyServer.list.remove(this); } return str; } public void send(String str){ if (str!=null&&str.length()!=0){ try { dos.writeUTF(str); dos.flush(); } catch (IOException e) { flag=false; CloseUtil.close(dos); MyServer.list.remove(this); } } } public void sendOther(){ String str=this.gain(); List<MyChannel> list=MyServer.list; for (MyChannel other:list){ if (other==this){ continue; } other.send(str); } } }
图2中:Myserver.list.remove(this),将元素从容器中移除,这里的元素就是客户端,如果客户端发送的流出了异常,接收流没有出异常,就删除该客户端吗,就是说接收和发送只要一个有异常就移除这个客户端吗?
老师,我这代码运行没问题,但是控制台没显示
老师,可以提供下视频上的API帮助文档吗?
bw.write(line); bw.newLine(); bw.flush();
问题:1.为什么要newLine()换行,我测试加与不加没区别
2.每次循环都要flush()刷新缓冲区,如果放在循环外面可以吗?高层流close关闭的情况下不加flush是否可以,还是说操作规范来讲最好在循环中都加上flush?
老师,str5打印出来的不也是hello java吗,为什么str2==str5为false,不懂“hello”+" java"和str3+str4的区别
*; ; ; { ([] args) { =ServerSocket(); = .accept(); = .getInputStream(); =File(); (!.exists()){ .mkdirs(); } =FileOutputStream(+); len=; [] =[]; ((len=.read())!=-){ .write(,,len); } .getOutputStream().write(.getBytes()); .close(); .close(); .close(); } } 客户端: import java.io.*; import java.net.Socket; public class TPClient { public static void main(String[] args) throws IOException { Socket socket=new Socket("172.0.0.1",9999); FileInputStream fis=new FileInputStream("123.png"); OutputStream ops = socket.getOutputStream(); int len=0; byte[]bytes=new byte[1024]; while((len =fis.read(bytes))!=-1){ ops.write(bytes,0,len); } InputStream ips = socket.getInputStream(); int len1=0; byte[]bytes1=new byte[1024]; while((len1 =ips.read(bytes))!=-1){ System.out.println(new String(bytes,0,len1)); } fis.close(); ips.close(); ops.close(); } }
为什么没有复制成功?
老师这边写这个为什么会有异常,里面写数字就不会
请问:为什么是{3,8},而不是{4,8}或{3,7}?
.1提问:
老师,此方法中 next为一个节点,我不懂的是,为什么程序会认为next节点是下一个节点呢,他仅仅指的是一个节点,next就是一个属性,有不是方法,next也没有定义类似的index++,index--,为什么会认为他是指向下一个节点的呢?怎么实现元素指针的向后移动的呢?
老师写的if(isflag){//相当于isflag==true 这里有点不明白呢 不应该是isflag==false吗
老师,讲的时候和敲代码的时候能不能不要那么快,看的一脸懵
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637