随笔分类 - JAVA
摘要:Java IO体系 个人觉得可以用“字节流操作类和字符流操作类组成了Java IO体系”来高度概括Java IO体系。 借用几张网络图片来说明(图片来自 http://blog.csdn.net/zhangerqing/article/details/8466532 ) 基于字节的IO操作 基于字符
阅读全文
摘要:Java IO 流 Java将不同的设备或载体(键盘、文件、网络、管道等)的输入输出数据统称为“流”(Stream),即JAVA的IO都是基于流的。 JAVA传统的所有流类型类都包含在java.io包中。 流的分类方法有很多,例如根据流向分为输入流/输出流,根据角色分为节点流/处理流, 根据数据不同
阅读全文
摘要:File类介绍 File是java.io包下面的一个类,代表与平台无关的文件或者目录。JAVA中,无论文件还是目录,都可以看作File类的一个对象。File类能对文件或目录新建,删除,获取属性等操作,但是不能直接操作文件内容(文件内容需要用数据流访问)。 JVM默认会将workspace作为相对路径
阅读全文
摘要:练习一: 创建一个Set集合,保存用户输入的数据 具体代码实现如下面代码中的testSet()方法。 知识点: 练习二 创建一个List集合,随意添加10个元素,然后通过索引为5处的元素,再取其中某个元素的索引,再删除索引为3的元素 实现代码如下面的testList() 知识点, 练习三 给定["a
阅读全文
摘要:泛型和Class类 在反射中使用泛型Class<T>可以避免强制类型转换,下面是一个简单例子,如果不使用泛型的话,需要显示转换, 上面的例子第19行和20行都需要将Class的newInstance返回的Object结果强制转换成目标类型,这不仅麻烦,更重要的是有些情况下无法发现错误, 例如第20行
阅读全文
摘要:代理模式简介 在很多场景下,我们想使用一个类(通常是接口)A时,并不是直接使用这个类,而是通过另外一个类B去调用A的方法,这里的类B就是一个代理类。 有很多场景都会用到这种方法,例如假如创建类A需要很大的开销,我们会直接使用类B来代表类A。 又或者类A在远程主机上,我们没有权限直接调用A的方法,而代
阅读全文
摘要:transient static final
阅读全文
摘要:Class对象可以获取类里的方法,由Method对象表示,调用Method的invoke可以执行对应的方法;可以获取构造器,由Constructor对象表示,调用Constructor对象的newInstance方法可以执行类对应的构造方法;可以获取成员变量,由Field对象表示,通过Field对象
阅读全文
摘要:Class实例 当类被加载之后,JVM中就会生成一个Class实例,通过这个实例就可以访问JVM中的这个类。有三种方式可以获取Class对象 使用Class的静态方法forName(完整包名) 调用类自身的class属性 调用类对象的getClass方法。 该方法继承自java.lang.Objec
阅读全文
摘要:URLClassLoader是ClassLoader的一个实现类,它既能从本地加载二进制文件类,也可以从远程加载类。 它有两个构造函数, 即 URLClassLoader(URL[] urls),使用默认的父类加载器(SystemClassLoader)创建一个ClassLoader对象 URLCl
阅读全文
摘要:JVM中除了根加载器之外其他加载器都是ClassLoader的子类实例, 可以通过扩展ClassLoader的子类,通过重写方法来实现自定义的类加载器。 ClassLoader中有两个关键的方法如下, loadClass(...), 系统调用这个方法来加载指定类的Class对象 在这个方法中,一般需
阅读全文
摘要:类加载器负责将.class文件加载到内存,并为其创建java.lang.Class对象,这个对象就代表这个类。 在Java中,通过包名+类名来唯一标识一个类,而在JVM中,要用 类加载器实例+包名+类名 来唯一标识一个类。 可见JVM中是不止一种类加载器的。 在JVM中,类加载器是成层次结构的, 这
阅读全文
摘要:我们通常说的类初始化,其实要分为三个阶段,类加载,连接,和初始化。他们大致完成以下功能。类加载将class文件载入内存,类连接进行内存分配,初始化进行变量赋值。 类的加载,连接和初始化 java.lang.Class 来自JAVA API的解释 Instances of the class Clas
阅读全文
摘要:在前面的HTTP网络通信的例子中,使用了URLConnection conn = url.openConnection();连接网络, 如果改用URLConnection conn = url.openConnection(proxy);方式,传入一个proxy对象,设置好代理IP和端口,则可以实现
阅读全文
摘要:IP多点广播原理 设置一组特殊网络地址作为多点广播地址,每一个多点广播地址都被看作一个组,当客户需要发送和接受信息时,加入到该组即可。 IP协议为多点广播提供了一批特殊的IP地址,范围是224.0.0.0 ~ 239.255.255.255 JAVA中使用MutilcastSocket加入一个广播组
阅读全文
摘要:UDP是一种不可靠的协议,它在通信两端各建立一个socket,这两个socket不会建立持久的通信连接,只会单方面向对方发送数据,不检查发送结果。 java中基于UDP协议的通信使用DatagramSocket类的receive和send方法即可,但消息需要通过一个特定的类封装(DatagramPa
阅读全文
摘要:异步IO 下面摘子李刚的《疯狂JAVA讲义》 按照POSIX标准来划分IO,分为同步IO和异步IO。对于IO操作分为两步,1)程序发出IO请求。 2)完成实际的IO操作。 阻塞IO和非阻塞IO都是针对第一步来划分的,如果发出IO请求会阻塞线程,就是阻塞IO,否则就是非阻塞IO。 同步IO和非同步IO
阅读全文
摘要:阻塞IO与非阻塞IO 通常情况下的Socket都是阻塞式的, 程序的输入输出都会让当前线程进入阻塞状态, 因此服务器需要为每一个客户端都创建一个线程。 从JAVA1.4开始引入了NIO API, NIO可以实现非阻塞IO, 这样就可以使用一个线程处理所有的客户请求。 基于NIO的非阻塞Socket通
阅读全文
摘要:Java NIO之多个Selector的实现 Java NIO类库Selector机制解析(上) Java NIO类库Selector机制解析(下) https://www.zhihu.com/question/19732473 http://blog.csdn.net/iter_zc/articl
阅读全文
摘要:下面将基于TCP协议用JAVA写一个非常简单的聊天室程序, 聊天室具有以下功能, 在服务器端,可以接受客户端注册(用户名),可以显示注册成功的账户 在客户端,可以注册一个账号,并用这个账号发送信息 发送信息有两种模式,一种是群聊,所有在线用户都可以看到消息,另一种是私聊,只针对指定账户发送消息 下面
阅读全文
浙公网安备 33010602011771号