老师这里的泛型为什么要用Integer不用int呢
老师,这里name.equals(this.list.get(i)) 不是已经找到相同的姓名了。后面为什么要加一个 getName 呢?
() { TelNoteRegex telNoteRegex=TelNoteRegex()String name=telNoteRegex.nameValidate()flag=(i=i<..size()i++){ (name.equals(..get(i).getName())){ System..println(..get(i))flag=} (){ System..println()} }
捕获.PNG
老师请问我这个是什么问题啊 server.xml端口也没改
public void mothod(T...args){ for (T t:args) { System.out.println(t); } 老师给解释一下这个T...args和t:args,看不懂
我发现我听不懂源码
请问老师,为什么说ArrayList 和LinkList 是物理结构呢,这两个集合是计算机存储器的存储形式吗
老师,为什么用String没有问题,用Integer就不行了呢
package com.bjsxt; import java.util.List; import java.util.Stack; public class StackTest { public static void main(String[] args) { List<Integer> list = new Stack<>(); list.push(111); System.out.println(list.Empty()); System.out.println(list.peek()); } }
它这些方法都报错了
老师,这里是直接在new对象的同时调用value方法吗?
老师,这个API帮助文档可以发给我吗
老师我敲的为啥第二行有个警告,鼠标移过去,没显示其他提示
_——————————————
老师如果程序不关闭流会怎么样?也没什么影响啊
只要链接就报错:
请输入:server,<port>或者:<ip>,<port>
192.168.174.1,8888
java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
at cxh.InetTest.GoodTCP.main(GoodTCP.java:122)
//发送消息线程 class Send1 extends Thread{ private Socket socket; private Scanner scanner; public Send1(Socket socket,Scanner scanner) { this.socket = socket; this.scanner = scanner; } public void run(){ this.sendMsg(); } //发送消息 public void sendMsg(){ PrintWriter pw = null; try{ //创建Scanner对象 scanner = new Scanner(System.in); //创建向对方输出消息的流对象 pw = new PrintWriter(this.socket.getOutputStream()); //发送消息 while (true){ String msg = scanner.nextLine(); pw.println(msg); pw.flush(); } }catch (Exception e){ e.printStackTrace(); }finally { if(scanner != null){ scanner.close(); } if(pw != null){ pw.close(); } if(this.socket != null){ try { this.socket.close(); } catch (IOException e) { e.printStackTrace(); } } } } } /* * 接收消息的线程 * */ class Receive1 extends Thread{ private Socket socket; public Receive1(Socket socket){ this.socket = socket; } public void run() { this.receiveMsg(); } /* * 用于接收对方的消息 * */ private void receiveMsg(){ BufferedReader br = null; try{ //创建用于接收对方发送消息的流对象 br = new BufferedReader(new InputStreamReader(this.socket.getInputStream())); while (true){ String msg = br.readLine(); System.out.println("他说:"+msg); } }catch (Exception e){ e.printStackTrace(); }finally { if(br != null){ try { br.close(); } catch (IOException e) { e.printStackTrace(); } if(this.socket != null){ try { this.socket.close(); } catch (IOException e) { e.printStackTrace(); } } } } } } public class GoodTCP { public static void main(String[] args) { Scanner scanner = null; ServerSocket serverSocket = null; Socket socket = null; try{ scanner = new Scanner(System.in); System.out.println("请输入:server,<port>或者:<ip>,<port>"); String str = scanner.nextLine(); String[] arr = str.split(","); if("server".equals(arr[0])){ //启动服务端 System.out.println("TCP Server Listen at"+arr[1]+"........"); serverSocket = new ServerSocket(Integer.parseInt(arr[1])); socket = serverSocket.accept(); System.out.println("链接成功!"); }else { //启动客户端 socket = new Socket(arr[0],Integer.parseInt(arr[1])); System.out.println("链接成功!"); } //启动发送消息的线程 new Send1(socket,scanner).start(); //启动接收消息的线程 new Receive1(socket).start(); }catch (Exception e){ e.printStackTrace(); }finally { if(serverSocket != null){ try { serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
老师,判断是否让步的if语句条件可以写成
if("Thread-0".equals(Thread.currentThread().getName()) && i == 0)
这样写可以吗
while(true){ String msg=br.readLine(); synchronized("abc"){ //把读取到的数据写入公共数据区 ChatRoomServer.buf="["+this.socket.getInetAddress()+"]:"+msg; //唤醒发送消息的线程对象。 "abc".notifyAll(); } } while(true){ synchronized("abc"){ //把读取到的数据写入公共数据区 ChatRoomServer.buf="["+this.socket.getInetAddress()+"]:"+br.readLine(); //唤醒发送消息的线程对象。 "abc".notifyAll(); } }分析一下在实现一对多交流的过程中为什么前面的代码可以实现功能,而后面那段代码会进入阻塞class ChatSend extends Thread{ private Socket socket; /**创建发送数据线程*/ /** * 向客户端发送消息的线程类 */ public ChatSend(Socket socket){ this.socket=socket; } @Override public void run() { this.sendMsg(); } /** * 将公共数据区的消息发送给客户端 */ public void sendMsg(){ try(PrintWriter pw=new PrintWriter(socket.getOutputStream());){ while(true){ synchronized ("abc"){ "abc".wait(); pw.println(ChatRoomServer.buf); pw.flush(); } } }catch(Exception e){ e.printStackTrace(); } } } /** * 接收客户端消息的线程类 */ class ChatReceive extends Thread{ private Socket socket; public ChatReceive(Socket socket){ this.socket=socket; } @Override public void run() { this.receiveMsg(); } /** * 实现接收客户端发送的消息 */ public void receiveMsg(){ try(BufferedReader br=new BufferedReader(new InputStreamReader(this.socket.getInputStream()))){ while(true){ String msg=br.readLine(); synchronized("abc"){ //把读取到的数据写入公共数据区 ChatRoomServer.buf="["+this.socket.getInetAddress()+"]:"+msg; //唤醒发送消息的线程对象。 "abc".notifyAll(); } } }catch(Exception e){ e.printStackTrace(); } } } //定义公共数据区 public class ChatRoomServer { public static String buf; public static void main(String[] args) { System.out.println("Chat Server Version 1.0"); System.out.println("Listen at 8888 端口。。。"); try( ServerSocket serverSocket=new ServerSocket(8888)){ while(true){ Socket socket=serverSocket.accept(); System.out.println("连接到: "+socket.getInetAddress()); new ChatReceive(socket).start(); new ChatSend(socket).start(); } }catch(Exception e){ e.printStackTrace(); } } }
老师,为什么我一开始用的后面那段代码运行后是陷入阻塞的,用了课上老师的前面那段代码就好了,我个人感觉br.readLine()放在哪里好像没什么影响,就不是很理解为什么会陷入阻塞
老师,为什么在解析servlet-mapping的时候报空指针异常啊????我赋值老师的代码进来也报空指针异常!!
http_server.rar
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637