老师您好,老师讲的自己手动配制IP地址是有什么用呢?可以随便配制?
老师,请问,这个static方法为什么有问题啊
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; /** * 接收客户端发送消息的线程类 */ class ChatReceive extends Thread{ private Socket socket; public ChatReceive(Socket socket){ this.socket=socket; } @Override 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(); synchronized ("abc"){ //把读取到的数据写入公共数据区 ChatRoomServer.buf="["+this.socket.getInetAddress()+"] "+msg; //唤醒发送消息的线程对象 "abc".notifyAll(); } } }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(); } } } } } } /** *向客户端发送消息的线程类 */ class ChatSend extends Thread { private Socket socket; public ChatSend(Socket socket) { this.socket = socket; } @Override public void run() { this.sendMsg(); } /** * 将公共数据区的消息发送给客户端 */ private void sendMsg() { PrintWriter pw = null; try { pw = new PrintWriter(this.socket.getOutputStream()); while (true) { synchronized ("abc") { //让发送消息的线程处于等待状态 "abc".wait(); //将公共数据区中的消息发送给客户端 pw.println(ChatRoomServer.buf); pw.flush(); } } } catch (Exception e) { e.printStackTrace(); } finally { if (pw != null) { pw.close(); } if (this.socket != null) { try { this.socket.close(); } catch (IOException 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....."); ServerSocket serverSocket=null; try { serverSocket=new ServerSocket(8888); while (true){ Socket socket=serverSocket.accept(); System.out.println("连接到"+socket.getInetAddress()); new ClientReceive(socket).start(); new ClientSend(socket).start(); } }catch (Exception e){ e.printStackTrace(); }finally { if (serverSocket!=null){ try { serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
我按老师的代码一模一样敲的,为什么运行的时候和老师的不一样;我感觉向客户端发送消息的线程没有执行。这是怎么回事呢
请问这里的输入输出流能用缓冲字节流吗?我自己使用缓冲字节流封装,服务器端和客户端都收不到发送的内容。其他代码一样,就是输入输出流换了。
老师,生成booleanflag=list.add("bjsxt");这里的快捷键是什么呀
老师:Class<?> class 这个?通配符是不是表示可以指向任意类型
问题:文件地址也没有问题,但是却运行不出结果
import java.io.File; public class TestFile { public static void main(String[] args) { System.out.println(System.getProperty("user.dir")); //获取当前文件的路径 File f = new File("a.txt"); //相对路径,默认放到user.dir目录下 f.createNewFile();//创建文件 File f2 = new File("b.txt");//绝对路径 f2.createNewFile(); } }
为何我的需要捕获异常:
1、我之前装过jdk和tomcat,但是版本不一样,我的jdk是1.8,后面的编号比资源里面的略低一点,但是我Tomcat用的资源包里面的,但是结果不对不能运行,我想问下为什么,都要和视频一样才行吗?那电脑里面装好多jdk没关系吗
处理流节点流和字符缓冲流什么关系?
老师,提问我写的代码:
卖票程序代码如下:
public class TestLock implements Runnable { private int count=1000; public void run() { for (int i = 1; i < 2000; i++) { System.out.println("当前第"+i+"次出票" ); //添加同步监视器 synchronized (this){ if (count> 0) { System.out.println("出第" + (count) + "张票,当前正在" + (Thread.currentThread().getName()) + "窗口买票"); count--; }else{ break; } } } } }
运行代码如下:
public class TestLockLock { public static void main(String[] args) { //创建线程对象 TestLock t=new TestLock(); //分配多个线程 Thread t1=new Thread(t,"军人窗口"); Thread t2=new Thread(t,"学生窗口"); Thread t3=new Thread(t,"老师窗口"); //就绪运行 t1.start(); t2.start(); t3.start(); } }
运行结果如下:
运行结果第一页:
最后一页:
提问:如果我想知道第几次出票应该在类中定义出票计数器,但现在我想知道为什么我的这段代码运行会出现这种情况:为什么加同步后打印的出票次数会先打印三次?而且会出现出票次数错乱的情况?
老师,为啥有的时候新建节点,用的是Node,为啥有的时候就要Node<E>,呢
为啥字符串无法强转型成字节型?
老师
DataFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
这个类型转换的话,对软件的版本有需求吗,为什么我的会提示我SimpleDateFormat无法转换为DataFormat,必须是SimpleDateFormat去new一个SimpleDateFormat,或者DataFormat去new一个DataFormat,而且像上面那么声明以后没有parse这个方法,请老师指点。
代码原图--报错
代码原图--修改之后
<?xml version="1.0" encoding="utf-8" ?> <xs:schema xmlns="http://www.w3.org/2001/XMLSchema"> <xs:element name="book"> <xs:complexType> <xs:element name="name" maxOccurs="unbounded"> <xs:complexType> <xs:sequence > <xs:element name="name" type="xs:String"></xs:element> <xs:element name="author" type="xs:String"></xs:element> <xs:element name="price" type="xs:double"></xs:element> </xs:sequence> <xs:attribute name="id" type="xs:positiveInteger" use="required"></xs:attribute> </xs:complexType> </xs:element> </xs:complexType> </xs:element> </xs:schema>
我什么的的book.xsd里面的xs:全报错,文件放包里和src下面都会报错,剪切从新粘一遍也没用
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637