Java学习总结——I/O,线程,网络题目整理

I/O

  • 1.有什么理由必须要用字符流?
    答:处理字符数据的语法更方便、自动化字符编码
  • 2.插入哪些代码可以让下面的代码正确编译?
    Console console = System.console();
    String color = console.readLine("What is your favorite color? ");
    console.____("Your favorite color is "+color);
    答:控制台输出定义了两个方法,format()和printf()。另外,还可以使用writer()方法来获取控制台的PrintWriter对象。故答案有三个:printf、format、writer().println
  • 4.高级流和低级流
    • ObjectOutputStream和ObjectInputStream执行低级流序列化和反序列化,属于低级流。
    • PrintStreamand PrintWriter格式文本分别作用于低级的OutputStream和writer,但它俩本身属于高级流。
    • FileWriter和FileInputStream直接在文件上操作,属于低级流。
    • OutputStream是一个抽象父类,既不是高级也不属于低级。
  • 5.假如有一个InputStream,接下来的内容是XYZABC,下面代码中假如count为3,下面代码执行结果是?
    public static String pullBytes(InputStream is, int count) throws IOException
    {
    is.mark(count);
    final StringBuilder sb = new StringBuilder();
    for(int i=0; i<count; i++)
    sb.append((char)is.read());
    is.reset();
    is.skip(1);
    sb.append((char)is.read());
    return sb.toString();
    }
    解析:
    并不是所有的java输入输出流支持mark()操作;因此,如果没有调用mark- Supported() ,其结果直到运行时都是未知的。如果流支持mark()操作,那么结果将是XYZY,因为reset()操作将流回到mark()被调用之前的位置,skip(1)就会被跳过。但如果流不支持mark()操作,可能会抛出一个运行时异常。
    因此当不知道输入流是否支持mark()操作时,The result cannot be determined with the information given(结果不能够被确定)。

线程

  • 1.调用Thread的start()后,线程会处于(Runnable)状态
  • 2.Java中,可以继承(Thread)类定义线程
  • 3.为了确保在多线程访问下的线程安全,应该加上(synchronized)关键字。
  • 4.(Thread.sleep()和wait() )方法会使线程进入阻塞状态
  • 5.调用Thread的start()后,线程会处于(Runnable)状态?
  • 6.Java中,可以继承(Thread)类定义线程
  • 7.thread和runnable区别

网络

  • 1.在 TCP/IP 参考模型中TCP协议工作在( 传输层 )。
  • 2.Java提供的类InetAddress来进行有关Internet地址的操作( InetAddress )。
  • 3.为了获取远程主机的文件内容,当创建URL对象后,需要使用哪个方法获取信息( openStream() )
  • 4.Java程序中,使用TCP套接字编写服务端程序的套接字类是( ServerSocket)
  • 5.ServerSocket的监听方法accept()的返回值类型是( Socket )。
  • 6.ServerSocket的getInetAddress()的返回值类型是( InetAddress )。
  • 7.当使用客户端套接字Socket创建对象时,需要指定( 服务器主机名称和端口 )。
  • 8.使用流式套接字编程时,为了向对方发送数据,则需要使用哪个方法( getOutputStream() )。
  • 9.使用UDP套接字通信时,常用( receive() )类把要发送的信息打包。
  • 10.若要取得数据包的中源地址,可使用哪个语句( getAddress() )。
  • 11.Java网络程序位于TCP/IP参考模型中的那一层( 应用层 )。
  • 12.在客户/服务器端通信模式中,客户与服务器程序的主要任务是( 客户端发送请求,并接收服务器端的相应。 )。
  • 13.当客户端执行以下代码时:
    Socket socket=new Socket(“angel”,80);
    如果远程服务器angel不存在时,会出现什么情况( 构造方法抛出UnknownHostException异常。 )
  • 14.Socket类的那个方法返回Socket对象绑定的本地端口( getLocalPort() )。
  • 15.下列那个选项设定Socket的接收数据时的等待超时时间( SO_TIMEOUT )
  • 16.使用UDP套接字通信时,常用哪个类把要发送的信息打包? ( DatagramPacket )
  • 17.如何判断一个Socket对象当前是否处于连接状态:( boolean isConnected=socket.isConnected() && !socket.isClosed(); )
  • 18.高级并行API
    在使用高级并行API时,(Future)接口的操作对象可以让你在未来取得执行结果;
    在使用高级并行API时,(Condition)接口的操作对象可以实现Object的wait()、notify()、notifyAll()功能 ;
    在使用高级并行API时,实现(Lock)接口的对象可以具有 synchronized 的功能。

Java中的I/O 线程 网络的更多相关文章

  1. 浅谈JAVA中如何利用socket进行网络编程(一)

    转自:http://developer.51cto.com/art/201106/268385.htm Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以 ...

  2. Java中的进程和线程

     Java中的进程与线程 一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是 ...

  3. Java中的进程与线程(总结篇)

    详细文档: Java中的进程与线程.rar 474KB 1/7/2017 6:21:15 PM 概述: 几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进 ...

  4. 浅谈JAVA中如何利用socket进行网络编程(二)

    转自:http://developer.51cto.com/art/201106/268386.htm Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以 ...

  5. JAVA 中无锁的线程安全整数 AtomicInteger介绍和使用

    Java 中无锁的线程安全整数 AtomicInteger,一个提供原子操作的Integer的类.在Java语言中,++i和i++操作并不是线程安全的,在使用的时候, 不可避免的会用到synchron ...

  6. java中的++i是线程安全的吗?

    java中的++i是线程安全的吗?为什么?怎么使它线程安全呢? 先说答案: 非线程安全 先说下为什么是非线程安全的? 从Java内存模型说起 Java内存模型规定了所有的便利都存储在主内存中,每个线程 ...

  7. Java并发编程:Java中的锁和线程同步机制

    锁的基础知识 锁的类型 锁从宏观上分类,只分为两种:悲观锁与乐观锁. 乐观锁 乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新 ...

  8. JAVA中管道通讯(线程间通讯)例子

    Java I/O系统是建立在数据流概念之上的,而在UNIX/Linux中有一个类似的概念,就是管道,它具有将一个程序的输出当作另一个程序的输入的能力.在Java中,可以使用管道流进行线程之间的通信,输 ...

  9. (转)java中的进程与线程

    (转自地址http://www.ibm.com/developerworks/cn/java/j-lo-processthread/) Java 进程的建立方法 在 JDK 中,与进程有直接关系的类为 ...

随机推荐

  1. tensor flow 视频

    http://v.youku.com/v_show/id_XMTYxMjQ2NTYyNA==.html?spm=a2h1n.8251843.playList.5!19~5~A.siMjNW&f ...

  2. Eclipse中spring项目的XML文件的问题

    XML文件提示Start state definition is missing. Add a 'start-state' element 原因:Eclipse 认为 XML 是“Spring Web ...

  3. intellij idea 的常见配置

    1.视图配置 配置好后如下图:   2.修改字体大小 3.编码修改 4.行号显示 5.控制台字体大小调整 File->Settings->Editor->Colors & F ...

  4. vmware虚拟机桥接模式不能上网

    方法/步骤     首先我的主机的有线连接是正常的,如下:   但是我的虚拟机的网络连接模式为桥接模式,但是却上不了网,如下:   我们来确认下,我的虚拟机的网络模式,如下:   设置全部都是对的,但 ...

  5. gorm中数据库datetime类型的映射和time.Time的格式化

    如果在结构体中设置time变量的类型是time.Time,那么gorm取出来的时间格式将会是”2006-01-02 15:04:05.999999999 -0700 MST“东八区时间,在time.T ...

  6. 10.9zuoye

    public class fulei { public fulei() { System.out.println("欢迎使用海尔"); } public String Pinpai ...

  7. 使用maven将项目热发布到tomcat7的坑

    首先是配置tomcat的用户权限问题,最好是配置最大的权限,要不然会报错,我之前就是一直报错 <role rolename="manager"/> <user u ...

  8. 对象池 object pool

    对象池适用于: 对象的创建很耗时 对象频繁地释放再创建 对象池的实现:将释放的对象放进对象池中,在新建对象时,从对象池取对象 public class ObjectPool<T> wher ...

  9. 使用CSS实现透明边框的效果——兼容当前各种主流浏览器[xyytIT]

    这个效果可是通过代码实现的哦,在不同浏览器下都可以正常显示 对于html中使用CSS实现透明边框的效果,主要有以下四种属性设置方法,但由于 这些属性兼容性并不是很好,单一使用会造成不同浏览器显示效果不 ...

  10. 【校招面试 之 C/C++】第7题 C++构造函数不能是虚函数的原因

    1.虚拟函数调用只需要“部分的”信息,即只需要知道函数接口,而不需要对象的具体类型.但是构建一个对象,却必须知道具体的类型信息.如果你调用一个虚拟构造函数,编译器怎么知道你想构建是继承树上的哪种类型呢 ...