• 一些java考过的测试题和自己制作模拟服务端和客户端


    媒体
    1,java环境变量:
    PATH:
    .;%JAVA_HOME%in;%JAVA_HOME%jrein; 
    CLASSPATH:
    .;%JAVA_HOME%jrelib t.jar;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;
    JAVA_HOME:
    jdk安装路径
    java运行原理:
    Java应用程序 => Java API => Java虚拟机 => 操作系统 => 底层硬件
    Java源文件 编译成class文件 运行
     
    2,sleep方法和wait方法区别:
    sleep方法是线程运行状态控制的问题,其来自于Thread类,没有释放锁,可以在任何地方使用,但必须捕获异常。
    wait方法:是线程与线程之间的通讯问题,其来自于Object类,释放锁,只能在同步控制方式同步控制代码块中使用,不需要抛出异常。
     
    3,StringBuffer与StringBuilder区别:
    StringBuffer:是可变类,任何对他所指代的字符串的改变都不会产生新的对象。线程安全,适合多线程使用,效率低。
    StringBuilder:线程不安全,适合单线程使用,效率高。
     
    4,静态内部类,不能被访问外部类实例成员,只能访问内部类的静态成员。
    局部内部类,只能访问方法中final修饰的局部变量。
    匿名内部类,适合只使用一次的类,不能是抽象类,不能定义构造器,必须继承一个父类或者实现一个接口,但是最多只能一个父类或实现接口。
     
    5,当前时间:
    SimpleDate Fomat s = new SimpleDate Fomat("yyyy-m-d HH:mm:ss");
    System.out.println(s.format(new Date()));
     
    6,懒汉模式:
    class Singleton{
      privorte static singleto a = null;
      publilc static Singleto getA(){
        if(a == null){
          a = new Singleton();
        }
        return a;
      }
      private Singleton(){}
    }
     
    7,遍历hashmap的方式:
    第一种:
    Map map = new HashMap();
    Iterator iter = map.entrySet().iterator();
    while(iter.hasNext()){
      map.Entry entry = (map.Entry)iter.next();
      Object key = entry.get key();
      Object val = entry.getValue();
    }
    第二种:
    Map map = new HashMap();
    Iterator iter = map.entrySet().iterator();
    while(iter.hasNext()){
      map.Entry entry = (map.Entry)iter.next();
      Object key = iter.next();
      Object val = map.get(key);
    }
     
    8,java中基本数据类型与其包装类:
    基本数据类型 包装类
    byte     Byte
    short     Short
    int      Integer
    long     Long
    char     Character
    float     Float
    double    Double
    boolean    Boolean
     
    9,将字符型转换成整形:
    String str = "17";
    int i = Integer.parseInt(str);
     
    10,线程的生命周期:
    开始==》就绪==》阻塞==》运行==》死亡
            《===返回===
     
    10,简单的工厂模式:
    interface Gongchang{
      void send Msg();
    }
    class A{
      public static Gongchang getInstance(String type){
        Gongchang g = null;
        if("htc".equalsgnose.Case(type)){
          ff = new HTC();
        }else if("iphone".equalsgnose.Case(type)){
          ff = new Iphone();
        }
        return p;
      }
    }
     
    11,查看某文挡下的内容:
    File f = new File(文档路径);
    FileReader r = new FileReader(f);
    char [] c = new char(1024);
    r.read();
     
    下面是我自己做的模拟服务端和客户端:

    import java.io.IOException;
    import java.io.InputStream;
    import java.net.*;
    import java.util.Scanner;

    public class Domefuwu {                              //服务端
      static Scanner sc = new Scanner(System.in);
      static Socket socket = null;
      static ServerSocket sever = null;
      public static void main(String[] args) {
        System.out.println("已经建立服务器");
        try {
          sever = new ServerSocket(7878);                  //新建一个端口,名为sever:7878
          while(true){
            socket = sever.accept();                     //监视端口sever
            System.out.println("已经和"+socket.getLocalAddress()+"建立聊天通道 等待对方发言");
            duqu();                              //调用读取方法
          }
        } catch (Exception e) {
          e.printStackTrace();
        }
      }

      private static void duqu() throws IOException {               //定义读取方法
        InputStream input = socket.getInputStream();
        byte[] bytes = new byte[1024];
        int len = 0;
        StringBuffer buffer = new StringBuffer();
        while((len = input.read(bytes)) != -1){
          buffer.append(new String(bytes,0,len));
        }
        input.close();
        System.out.println("对方发来消息"+buffer.toString());           //将读取到的消息输出
      }
    }

    package duankou;
    import java.io.*;
    import java.net.*;
    import java.util.*;

    public class Domekehu {                           //客户端
      static Scanner sc = new Scanner(System.in);
      static Socket socket = null;
      public static void main(String[] args) throws Exception {
        System.out.println("客户端正在尝试连接");
        try {
          socket = new Socket("127.0.0.1",7878);             //链接端口:7878
          try {
            fayan();                           //调用发言方法
          } catch (Exception e) {
            e.printStackTrace();
          }
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
      private static void fayan() throws Exception {             //定义发言方法
        System.out.println("链接成功,请发言");
        String nei = sc.next();                      //输入并传输给服务端
        OutputStream output = socket.getOutputStream();
        output.write(nei.getBytes());
        output.close();
      }
    }

  • 相关阅读:
    DockerFile详解--转载
    httpd日志格式
    httpd2.4.6配置文件解释说明
    httpd基于域名虚拟主机配置
    HTTPD三种工作模型
    centos7配置iscsi
    DNS子域授权
    DNS缓存服务器与转发服务器
    函数式编程 pipe之函数柯里化
    typescript安装运行两种方法
  • 原文地址:https://www.cnblogs.com/qihongbao/p/6811745.html
Copyright © 2020-2023  润新知