骏马金龙

网名骏马金龙,钟情于IT世界里的各种原理和实现机制,强迫症重症患者。爱研究、爱翻译、爱分享。特借此一亩三分田记录自己成长点滴!!!
我本问道人,道心不坚,必将与道无缘!

随笔分类 - java学习笔记

摘要:1.会话技术简介 http协议是无状态的,因此对于服务端来说,当它接收到客户端的http请求时,无法识别这个请求来源于哪个客户端。无状态的协议有优点也有缺点,但对于需要识别客户端甚至是需要记住客户端的业务来说,应当要让http协议"有状态"。 需要记住客户端的业务种类非常多。例如登陆系统,在一个页面 阅读全文
posted @ 2018-01-21 00:18 骏马金龙 阅读 (779) | 评论 (0) 编辑
摘要:webapp项目的结构如下图: download.html文件的内容如下: 负责处理下载的Servlet——download.java文件的内容如下: 在浏览器地址栏中输入http://localhost:8080/DownloadServlet/download.html。 注:若您觉得这篇文章还 阅读全文
posted @ 2018-01-17 23:30 骏马金龙 阅读 (1001) | 评论 (0) 编辑
摘要:URL类将URL地址封装成对象,提供了解析URL地址的方法,如获取uri部分、host部分、端口等。 URLConnection则是URL对象和Socket连接给结合起来了,使得可以更轻松地获取发起URL请求的连接套接字。 1.URL 2.URLConnection 通过URL的openConnec 阅读全文
posted @ 2018-01-09 15:22 骏马金龙 阅读 (275) | 评论 (0) 编辑
摘要:TCP通信需要明确的几点: 服务端需要使用accept()方法将监听套接字转变为已连接套接字。这个监听套接字可以生成多个已连接套接字,这样连接后还能监听其他客户端的请求。因此,这里应该使用多线程实现并发访问。获得了已连接套接字,就可以获取很多客户端的信息,例如客户端的ip地址,发送请求的端口等。 服 阅读全文
posted @ 2018-01-09 13:16 骏马金龙 阅读 (524) | 评论 (0) 编辑
摘要:UDP通信需要明确的几点: (1).只不过对于发送端来说,创建发送报文对象需要指定目标套接字信息(ip+port),还需明确数据发送缓冲区。 (2).而对于接收端来说,则只需明确一个数据接收缓冲区即可。 UDPSender端: UDPRecver端: UDP实现群聊: 思路: 注:若您觉得这篇文章还 阅读全文
posted @ 2018-01-08 23:08 骏马金龙 阅读 (271) | 评论 (0) 编辑
摘要:网络相关对象在java.net包中。 1.获取主机对象InetAddress 2.获取主机对象的ip地址和主机名(需要dns解析主机名) 3.获取本机所有接口NetworkInterface并遍历 由于一个接口上可能有多个子接口(辅助ip,如eth0:1),因此根据某个接口,可以得到该接口的所有ip 阅读全文
posted @ 2018-01-08 16:46 骏马金龙 阅读 (1227) | 评论 (0) 编辑
摘要:本文目录:1.等待、唤醒机制的原理2.Lock和Condition3.单生产者单消费者模式4.使用Lock和Condition实现单生产单消费模式5.多生产多消费模式(单面包)6.多生产多消费模式 生产者消费者模式是多线程中最为常见的模式:生产者线程(一个或多个)生成面包放进篮子里(集合或数组),同 阅读全文
posted @ 2018-01-06 00:22 骏马金龙 阅读 (480) | 评论 (0) 编辑
摘要:本文目录:1.几个基本的概念2.创建线程的两种方法3.线程相关的常用方法4.多线程安全问题和线程同步 4.1 多线程安全问题 4.2 线程同步 4.3 同步代码块和同步函数的区别以及锁是什么 4.4 单例懒汉模式的多线程安全问题5.死锁(DeadLock) 1.几个基本的概念 本文涉及到的一些概念, 阅读全文
posted @ 2018-01-05 00:45 骏马金龙 阅读 (7113) | 评论 (0) 编辑
摘要:额外功能处理流的意思是在基础流(InputStream/OutputStream/Reader/Writer)的基础上提供额外的功能。常见的额外功能可归纳为以下几种。 Bufferedxxx类和Array相关的功能此处不做介绍。本文将介绍除此之外的其余功能以及对象序列化时涉及到的序列化接口Seria 阅读全文
posted @ 2018-01-03 01:48 骏马金龙 阅读 (184) | 评论 (0) 编辑
摘要:Properties类继承自HashTable,通常和io流结合使用。它最突出的特点是将key/value作为配置属性写入到配置文件中以实现配置持久化,或从配置文件中读取这些属性。它的这些配置文件的规范后缀名为".properties"。表示了一个持久的属性集。 需要注意几点: 如果想将Proper 阅读全文
posted @ 2018-01-02 16:22 骏马金龙 阅读 (200) | 评论 (0) 编辑
摘要:字节流、字符流涉及的类比较多,比较容易混淆。因此,有必要针对何时使用字节流、何时使用字符流、何时使用Buffer类的流做一个归纳。要归纳它们,无需过多的语言,只需抓住它们的重点和特性即可。 在决定何时使用何种类时,以下几个问题需要考虑清楚。 数据源:表示输入,或称为读。可提供使用的两个父类为Inpu 阅读全文
posted @ 2017-12-31 22:47 骏马金龙 阅读 (171) | 评论 (0) 编辑
摘要:要读取键盘输入的数据,需要使用输入流,可以是字节输入流,也可以是字节输入流转换后的字符输入流。 关于键盘输入,有几点注意的是:(1).键盘输入流为System.in,其返回的是InputStream类型,即字节流。(2).字节流读取键盘的输入时,需要考虑回车符(\r:13)、换行符(\n:10)。( 阅读全文
posted @ 2017-12-31 21:22 骏马金龙 阅读 (196) | 评论 (0) 编辑
摘要:字符流按字符个数输入、输出数据。 1.Reader类和FileReader类 Reader类是字符输入流的超类,FileReader类是读取字符的便捷类,此处的便捷是相对于其父类(另一个字符输入流)InputStreamReader而言的。 read()每单字符读取: read(char[] c)读 阅读全文
posted @ 2017-12-30 21:29 骏马金龙 阅读 (344) | 评论 (1) 编辑
摘要:数据流分为输入、输出流,无论是输入流还是输出流,都可看作是在源和目标之间架设一根"管道",这些管道都是单向流动的,要么流入到内存(输入流),要么从内存流出(输出流)。 应用于java上,输入流和输出流分别为InputStream和OutputStream。输入流用于读取(read)数据,将数据加载到 阅读全文
posted @ 2017-12-29 21:31 骏马金龙 阅读 (406) | 评论 (0) 编辑
摘要:1.File类简介 File类位于java.io包中。它面向文件层次级别操作、查看文件,而字节流、字符流操作数据时显然比之更底层。 学习File类包括以下几个重点:文件路径、文件分隔符、创建文件(目录)、删除文件(目录)、查看文件内容(输出目录内文件)、判断文件(是文件/目录?存在否?可读写执行?) 阅读全文
posted @ 2017-12-29 11:41 骏马金龙 阅读 (427) | 评论 (0) 编辑
摘要:以d:\a目录为例,假设D:\a目录内的结构如下: 4.1 示例1:列出整个目录中的文件(递归) 思路:1.遍历目录d:\a。2.每遍历到d:\a中的一个目录就遍历这个子目录。因此需要判断每个遍历到的元素是否是目录。 以下是从普通代码到递归代码前的部分代码: 对重复的代码部分进行封装,于是使用递归方 阅读全文
posted @ 2017-12-29 01:45 骏马金龙 阅读 (303) | 评论 (0) 编辑
摘要:java中的数组是引用数据类型。 根据数据类型可分为两种类型: (1).基础数据类型的数组。只是数组内的数据类型是基础的,数组本身仍然是引用类型,毕竟数组有两段内存空间(栈中引用变量,堆中数组对象)。例如:int[] a = new int[3];表示数组中有三个成员:a[0]、a[1]和a[2]。 阅读全文
posted @ 2017-12-28 01:56 骏马金龙 阅读 (152) | 评论 (0) 编辑
摘要:JAVA中的异常类都继承自Throwable类,也就是说,这是异常类的根。Throwable类扩展了两个类Error类和Exception类,Exception类又扩展了一个RuntimeException类。如下图: Error:称为错误,由Java虚拟机生成并抛出,这类错误一般是运行时系统内部的 阅读全文
posted @ 2017-12-28 01:50 骏马金龙 阅读 (387) | 评论 (1) 编辑
摘要:抽象类(abstract) 以下面多态的示例来说明: 父类Animal中的sing()方法迟早要被子类Cat、Dog重写,而且在多态实现下,Animal的sing()完全是多余的。因此,可以将Animal的sing()方法的方法体删掉。 更彻底一点,将sing()方法加上abstract关键字,这个 阅读全文
posted @ 2017-12-27 22:38 骏马金龙 阅读 (381) | 评论 (0) 编辑
摘要:权限修饰符 权限修饰符包括public、private、protected和不加任何修饰符的default,它们都可以修饰方法和变量。其中public和默认的default(不加任何修饰符)这两个还可以修饰class。private和protected修饰类的情况只能在使用内部类时修饰,正常情况下不 阅读全文
posted @ 2017-12-27 20:32 骏马金龙 阅读 (252) | 评论 (0) 编辑
摘要:类路径(classpath) java编译器编译.java文件和java虚拟机执行.class文件时的路径和写法不一样。 在没有设置任何classpath环境变量的情况下,javac可以编译全路径的.java文件。例如: 编译后,在.java同路径目录下生成class文件。 默认java虚拟机要从c 阅读全文
posted @ 2017-12-27 20:28 骏马金龙 阅读 (14024) | 评论 (2) 编辑
摘要:基础 类有属性和方法,它们对本类有效(作用范围)。类的属性就是成员变量,它默认会赋值初始化。类的方法是类具有的一些行为。 类是抽象的,将它们实例化后就是对象(通过new进行实例化),各实例化后的对象都具有这些成员变量的属性,且赋有具体的值,如果某对象没有为成员变量赋值,则采用默认初始化时的值。每个n 阅读全文
posted @ 2017-12-27 20:26 骏马金龙 阅读 (343) | 评论 (0) 编辑
摘要:简介 集合和数组的区别: 数组存储基础数据类型,且每一个数组都只能存储一种数据类型的数据,空间不可变。 集合存储对象,一个集合中可以存储多种类型的对象。空间可变。 严格地说,集合是存储对象的引用,每个对象都称为集合的元素。根据存储时数据结构的不同,分为几类集合。但对象不管存储到什么类型的集合中,既然 阅读全文
posted @ 2017-11-06 01:58 骏马金龙 阅读 (368) | 评论 (0) 编辑
摘要:基础数据类型包装类 当一个程序要求交互式输入一个int类型的年龄时,从文本框中输入的结果肯定是String类型的。要在程序中进行相关操作,它必须先转换为int类型。因此可以使用数据类型的转换或强制转换,但这种转换方式太过简单,功能太少,因此java中提供了数据类型包装类的概念。 数据类型包装类是指可 阅读全文
posted @ 2017-11-04 13:31 骏马金龙 阅读 (235) | 评论 (0) 编辑
摘要:简介 String/StringBuilder/StringBuffer这3个类都能创建字符串对象,它们都继承自Object类。 其中String对象一经创建,空间固定不变,无法再向其中增、删数据。即使提供了replace()方法,但也是一个字符对应一个字符的替换。总之它的空间大小不变。 而后两者都 阅读全文
posted @ 2017-11-04 06:42 骏马金龙 阅读 (330) | 评论 (0) 编辑
摘要:对象类型转换 分为向上转型和向下转型(强制对象转型)。向上转型是子对象向父对象转型的过程,例如猫类转换为动物类;向下转型是强制转型实现的,是父对象强制转换为子对象。这和基础数据类型的转换是类似的,byte在需要时会自动转换为int(向上转型),int可以强制转型为byte(向下转型)。 对于对象转型 阅读全文
posted @ 2017-10-29 18:20 骏马金龙 阅读 (515) | 评论 (1) 编辑