Java笔记
文章平均质量分 70
椰子Tyshawn
你眼中的世界就是你自己的样子。
展开
-
TCP三次握手与四次挥手详解
我们都知道TCP协议是面向连接的, 建立连接时需要三次握手, 断开连接时需要四次挥手, 那三次握手和四次挥手的具体流程是怎样的呢? 为什么建立连接时需要三次握手, 两次行不行? 为什么断开连接时需要四次挥手, 三次行不行? 下面我们就一起来了解下.TCP协议格式我们先来了解下TCP报文中一些重要的字段.源端口和目的端口客户端和服务端的端口号.序号序号是报文段发送的数据中第一个字节的...原创 2020-03-19 22:14:43 · 420 阅读 · 0 评论 -
HashMap原理
HashMap底层是通过哈希表实现的, jdk1.8为了提升HashMap的性能又引入了红黑树, 下面我们来了解HashMap的数据结构.哈希表哈希表是一种数组+链表的数据结构, 其中储存的元素节点的数据结构如下:static class Node<K,V> implements Map.Entry<K,V> { final int hash; fi...原创 2020-02-20 20:42:43 · 266 阅读 · 0 评论 -
Java序列化和反序列化为什么要实现Serializable接口
最近公司的在做服务化, 需要把所有model包里的类都实现Serializable接口, 同时还要显示指定serialVersionUID的值. 听到这个需求, 我脑海里就突然出现了好几个问题, 比如说:(1) 序列化和反序列化是什么?(2) 实现序列化和反序列化为什么要实现Serializable接口?(3) 实现Serializable接口就算了, 为什么还要显示指定serialVers...原创 2019-08-27 11:49:37 · 3146 阅读 · 8 评论 -
ThreadLocal因线程复用导致失效
ThreadLocal 提供一个线程本地变量, 顾名思义, 这个变量值与线程相关, 不同线程之间互不影响.它是如何做到这点的呢? 我们来看下源码.public class ThreadLocal<T> { protected T initialValue() { return null; } public T get() { ...原创 2019-05-13 11:16:14 · 3878 阅读 · 1 评论 -
Java注解
注解的语法通过 @interface 声明一个注解public @interface RequestMapping {}注解的属性public @interface RequestMapping { String value() default "";}属性的数据类型包括:基本数据类型: byte, char, short, int, long, float, dou...原创 2018-12-21 14:21:51 · 1079 阅读 · 0 评论 -
网络编程之BIO/NIO基础
什么是网络编程网络编程是指编写运行在多个设备上(计算机)的程序, 通过网络进行数据交换. 比如现在流行的微服务, 把一个大的系统按照功能拆分多个微服务, 每个微服务都是一个独立的应用, 部署在不同的服务器上, 不同服务器上的微服务如何进行通信就是属于网络编程的范畴.TCP/UDP、IP、HTTP、Socket的区别网络模型(OSI)从下往上分为七层, 分别是物理层、数据链路层、网络...原创 2018-07-17 15:31:44 · 436 阅读 · 0 评论 -
并发编程基础
什么是线程安全当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的。并发编程三要素要想并发程序正确地执行,必须要保证原子性、可见性以及有序性。只要有一个没有被保证,就有可能会导致程序运行不正确。(1)原子性一个或多个操作要么全部执行成功要么全部执行失败.(2)可见性当多个线程访问同一个变量时,如果其中...原创 2018-07-16 10:30:25 · 356 阅读 · 0 评论 -
Java反射机制
149、类的加载概述和加载时机类的加载概述当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。加载 就是指将class文件读入内存,并为之创建一个Class对象。任何类被使用时系统都会建立一个Class对象。连接验证 是否有正确的内部结构,并和其他类协调一致准备 负责为类的静态成员分配内存,并设置默认初始化值解析 将类的二进制数原创 2017-11-25 22:32:36 · 1317 阅读 · 0 评论 -
(十二)、Java复习笔记之网络编程
141、网络编程计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。网络编程 就是让用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。142、网络编程三要素之IP每个设备在网络中的唯一标识每台网络终端在网络中都有一个独立的地址,我们在网络中传输原创 2017-11-23 15:07:38 · 287 阅读 · 0 评论 -
(十一)、Java复习笔记之多线程(2)
127、单例设计模式概述 保证类在内存中只有一个对象。 如何保证类在内存中只有一个对象呢? 控制类的创建,不让其他类来创建本类的对象。在本类中定义一个本类的对象。提供公共的访问方式。 单例的三种写法:饿汉式:开发用这种方式。//恶汉式class Singleton { //1,私有构造函数 private Singleton(){} //原创 2017-11-20 21:12:55 · 374 阅读 · 0 评论 -
(十)、Java复习笔记之多线程(1)
112、多线程什么是线程? 线程是程序执行的一条路径, 一个进程中可以包含多条线程多线程并发执行可以提高程序的效率, 可以同时完成多项工作多线程的应用场景 红蜘蛛同时共享屏幕给多个电脑迅雷开启多条线程一起下载QQ同时和多个人一起视频服务器同时处理多个客户端请求113、多线程并行和并发的区别并行就是两个任务同时运行,就是甲任务进行的同时,乙任务也在进行。(需要多核CPU)并发是指原创 2017-11-20 21:08:29 · 343 阅读 · 0 评论 -
(九)、Java复习笔记之 I/O 流(3)
I/O流体系图:103、序列流 SequenceInputStream(了解)概述 序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, 以此类推.实例整合两个: SequenceInputStream(InputStream s1, InputStream s2)FileInputStream fis1 = new File原创 2017-11-18 19:10:27 · 254 阅读 · 0 评论 -
(八)、Java复习笔记之 I/O 流(2)
I/O流体系图:86、IO流概念 IO流用来处理设备之间的数据传输Java对数据的操作是通过流的方式Java用于操作流的类都在IO包中流按流向分为两种:输入流,输出流。流按操作类型分为两种: 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的字符流 : 字符流只能操作纯字符数据,比较方便。IO流常用父类 字节流的抽象父类: InputStream原创 2017-11-16 21:06:50 · 271 阅读 · 0 评论 -
(七)、Java复习笔记之 I/O 流(1)
I/O流体系图:79、File类概述 文件和目录路径名的抽象表示形式File更应该叫做一个路径 文件路径或者文件夹路径 路径分为绝对路径和相对路径绝对路径是一个固定的路径,从盘符开始相对路径相对于某个位置,在eclipse下是指当前项目下,在dos下指的是当前路径构造方法File(String pathname):根据一个路径得到File对象File(String parent,原创 2017-11-16 18:20:25 · 345 阅读 · 0 评论 -
(六)、Java复习笔记之异常
70、异常概述 异常就是Java程序在运行过程中出现的错误。异常的继承体系 Throwable Error Exception RuntimeExceptionJVM默认是如何处理异常? main函数收到这个问题时,有两种处理方式:a:自己将该问题处理,然后继续运行b:自己没有针对的处理方式,只有交给调用main的jvm来处理jvm有一个默认的异常处理机制,将该异常进行处理,原创 2017-11-11 21:58:01 · 262 阅读 · 0 评论 -
(五)、Java复习笔记之Map集合
集合继承体系图64、Map集合概述 将键映射到值的对象一个映射不能包含重复的键每个键最多只能映射到一个值Map接口和Collection接口的不同 Map是双列的,Collection是单列的Map的键唯一,Collection的子体系Set是唯一的Map集合的数据结构值针对键有效,跟值无关;Collection集合的数据结构是针对元素有效成员方法 V put(K key,V v原创 2017-11-05 21:56:55 · 346 阅读 · 0 评论 -
(四)、Java复习笔记之Collection集合
46、集合继承体系图47、Collection集合概述 Collection 层次结构中的根接口。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。成员方法 boolean add(E e) //添加元素 boolean remove(Object o) //移除元素 void clear()原创 2017-11-05 21:29:37 · 350 阅读 · 0 评论 -
重写equals() 和 hashCode()方法
使用《Effective Java》里的17和31散列码方法:class Person { private String name; private int age; //getters and setters, constructor @Override public int hashCode() { int result = 17;原创 2017-10-31 16:11:59 · 363 阅读 · 0 评论 -
(三)、Java复习笔记之常见对象
31、Object类Object类概述 类层次结构的根类所有对象(包括数组)都实现这个类的方法。构造方法 public Object()回想面向对象中为什么说:子类的构造方法默认访问的是父类的无参构造方法Object类的hashCode()方法 public int hashCode()返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算。不同对象的,hashCode原创 2017-10-29 21:19:54 · 414 阅读 · 0 评论 -
(二)、Java复习笔记之面向对象
13、数组的初始化一维数组:int[] arr = new int[]{1,2,3,4,5}; //正确int[] arr = {1,2,3,4,5}; //正确int[] arr = new int[5]{1,2,3,4,5}; //错误int[] arr;arr = new int[]{1,2,3,4,5}; //正确。arr = {1,2,3,4,5}; //错误二维数组:in原创 2017-10-26 20:43:23 · 369 阅读 · 1 评论 -
(一)、Java复习笔记之语言基础
1、二进制、八进制、十进制、十六进制(1)不同进制数据的表现形式:二进制的数据表现形式 由0,1组成。以0b(b可以大写也可以小写)开头八进制的数据表现形式 由0,1,…7组成。以0开头十进制的数据表现形式 由0,1,…9组成。整数默认是十进制的 十六进制的数据表现形式 由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头 案例演示 输出不同进制表现100的数据。0原创 2017-10-26 20:37:33 · 224 阅读 · 0 评论 -
java时间for循环
java时间for循环public static void main(String[] args) { //起始时间 String str="20170805"; //结束时间 String str1="20170810"; SimpleDateFormat format=new SimpleDateFormat("yyyyMMdd"); Calendar start =原创 2017-08-24 11:52:31 · 2776 阅读 · 3 评论 -
JaveSE聊天案例
先启动服务器,再启动客户端SourceCode:服务器端:UI:public class ChatServerUI extends JFrame{ private int width=560,height=600; private ImageIcon showUserImage=null;/*用户图片 */ private JLabel原创 2017-04-21 19:37:13 · 1523 阅读 · 0 评论 -
I/O流
一:I/O体系字节流:用于读写二进制数据,按字节来处理。字符流:用于读写文本类数据,按虚拟机的encode来处理。InputStream,OutputStream,Reader,writer都是抽象类。二:字节流与字符流的区别举例说明:原创 2017-04-16 14:46:30 · 276 阅读 · 0 评论 -
根据当前系统日期显示年龄(实岁)
根据当前系统日期显示年龄(实岁):public static int getAge(Date birthDay) throws Exception { Calendar cal = Calendar.getInstance(); int yearNow = cal.get(Calendar.YEAR); int monthNow = cal原创 2016-10-28 23:03:08 · 838 阅读 · 0 评论