Java SE进阶知识
一、集合
不管使用什么语言编程,编程在做的事情(编程的本质)都是一样的,那就是设计算法和数据结构(程序 = 算法 + 数据结构),算法是一个程序的操作步骤(即这个进程在CPU上的计算和执行顺序),数据结构是一个程序的存储方式(即数据在内存中以怎样的形式存放),从物理的角度看,内存中的数据结构只有两种:①连着的,顺序存储结构;②分开的,链式存储结构,但是,从数据元素之间的关系来讲,可分为三种数据结构,①线性表;②树;③图,在Java的util包中,存放了一些基本数据结构类,这就是集合,主要有:
①List:ArrayList(C++里的vector),LinkedList(使用起来和ArrayList一样,区别在于内存上);
②Set:HashSet;(List是有序的、不唯一的,Set是无序的,唯一的,与List正好相反)
③Map:HashMap。(key:value)
另需谈论两个问题:
①迭代器:iterator
一个例子:
// 获取迭代器
Iterator<String> it = sites.iterator(); // sizes是一个ArrayList<String>
②泛型:数据类型参数化
java 中泛型标记符:
- E - Element (在集合中使用,因为集合中存放的是元素)
- T - Type(Java 类)
- K - Key(键)
- V - Value(值)
- N - Number(数值类型)
- ? - 表示不确定的 java 类型
二、IO:根本问题:输出output(内存到外面(硬盘,显示器,网络等等)),这是在写write呢,输入input(外面(硬盘,键盘,网络等等)到内存),这是在读read呢
有三个类是常用的:(网络编程和序列化都是字节流)
①有关于File的类:
FileOutputStream fileOut = new FileOutputStream("文件路径名");
②
序列化:
ObjectOutputStream out = new ObjectOutputStream(fileOut); // File类对象常作为其他对象构造函数的参数
out.writeObject(e);
反序列化:
FileInputStream fileIn = new FileInputStream("文件路径名");
ObjectInputStream in = new ObjectInputStream(fileIn);
e = (类名) in.readObject();
③网络编程:
网络编程中的IO结构经常以这样一种形式存在:
OutputStream outToServer = 连接套接字.getOutputStream();
DataOutputStream out = new DataOutputStream(outToServer);
out.writeUTF("信息");
三、网络编程
这个网络编程是狭义上的网络编程,指基于TCP或者UDP进行的socket网络编程,网络编程不是只有socket,其实Java web就是网络编程的一种,只不过它是基于HTTP而不是socket,socket编程也不只是基于TCP这样的传输层协议,也可以基于其他的协议,比如你可以使用原始套接字,但是TCP确实是用的最多的网络协议。
下面简单介绍一下Java的TCP网络编程:
经典的LinuxTCP网络编程的模式(4 + 2):
Java网络编程(2 + 1):
server端的2:
ServerSocket serverSocket = new ServerSocket(port); // 监听套接字,合socket和bind为一
Socket server = serverSocket.accept(); // 连接套接字,合listen和accept为一
client端的1:
Socket client = new Socket(serverName, port); //客户端套接字,合socket和connect为一
四、多线程
网络编程由于其良好的封装,并不复杂,但是一个符合企业标准的网络服务器绝不可能是单线程的,因为单线程对CPU的利用率太低,因而网络编程总离不开多线程编程,在学习Java的多线程之前,我们先得弄清楚这几个概念,在《对编程的认识》一文中浅谈过:
①串行(网络传输就是串行的)、并行(多个CPU多个进程)、并发(虚拟化的并行,一个CPU多个进程);
②阻塞、非阻塞:这两个概念是针对单个进程而言的,阻塞就是该进程在等,等什么呢?这个就说不准了,至于说它是在CPU上等,还是离开了CPU等,这也是说不准的,一般OS不会让它在CPU上等,因为这是在白白浪费CPU的时间,非阻塞就是该进程也在等,但是它不断轮询;
③同步、异步:这两个概念是针对多个进程而言的,同步指多个进程如同单个进程一样执行,这需要进程间通信,异步就是随机,多线程的最初摸样就是异步的,各个线程各执行各的,谁也不管谁,在优先级控制下,谁先执行谁后执行一切随缘(意思是说看操作系统的具体情况)。
Java的线程如何创建有哪些API,看菜鸟吧:Java 多线程编程 | 菜鸟教程
下面我们着重了解几个Java的服务器模型:(我的整个学习过程分为两个部分,一个是Java web即学习如何开发web系统,目前正在该部分的第一阶段Java SE,第二部分是网络编程即学习如何开发高性能服务器,现在我们先简单了解几个Java的服务器模型)
(待补充)
Java SE进阶知识相关推荐
- Java SE 基础知识
Java SE 基础知识 1 2 @(Notes)[J2SE, Notes] VICTORY LOVES PREPARATION. 特别说明: 该文档在马克飞象查阅最佳: 本部分知识还在迭代中,欢迎补 ...
- Java工程师进阶知识完全扫盲, 太全了!!
项目简介 本期介绍的开源项目名称叫做:advanced-java 中文名:互联网 Java 工程师进阶知识完全扫盲,该项目主要是为Java开发工程师提供进阶知识讲解,从而提升Java工程师技术与能力! ...
- Java SE 基础知识体系梳理
## Java SE 基础知识体系梳理 ----------day01------------- (1)计算机的体系结构 (2)Java语言的概述 (3)开发环境的搭建和使用 1.计算机的体系结构(常 ...
- Java SE 基础知识(一)
一.基础知识 1. Java SE : Java Standard Edition Java ME : Java Micro Edition Java EE : Java Enterprise Edi ...
- Java复习总结(二)Java SE基础知识
Java SE面试题 目录 Java SE基础 基本语法 数据类型 关键字 面向对象 集合 集合类概述 Collection接口 进阶 线程 锁 JDK 反射 JVM GC io操作和NIO,AIO ...
- Java学习进阶知识篇
系列文章目录 提示:....................... 文章目录 系列文章目录 前言 一.类和对象 面向对象基本介绍 类的基本使用属性 构造方法和析构方法 对象 二. 总结 前言 提示:这 ...
- Java SE基础知识(二)--整数的运算符
Java SE 是什么,包括哪些内容(二)? 本文内容参考自Java8标准 一.代码运行机制相关的内容: 1.Java中的类型分类("你编程时能使用的类型全部在这里了"): ⑴.J ...
- Java SE 重点知识笔记
文章目录 前言: 1.Java概述 1.1.Java语言跨平台原理: 1.2.JRE和JDK: 1.3.HelloWorld案例: 2.java基础语法 2.1.注释 : 2.2.类型转换: 3.数据 ...
- 准备Java面试之Java SE基础知识——问题篇
由于这个月要开始面试了,所以重新把java SE的基础重新学习一遍,主要问题有如下37条.我将会在一周内更新完成答案. 作者:Xoper.ducky 链接:https://www.nowcoder.c ...
最新文章
- 利用java打印正三角形_JAVA一层for循环实现打印正三角形和到三角形
- angular 发布订阅
- 【完成发布】Lazy Line Painter – 非常有趣的 jQuery 路径动画插件
- CentOs7.2编译安装Nginx服务器
- Python 基础学习 4 ——字典
- IT程序人生:学会写程序能从事哪些技术岗位?
- 基础才是王道——TCP/IP详解学习笔记
- ProGuard:类混淆,类的指定函数保留
- (Quicker动作)MathType公式快速标红
- java获取中文首字母
- opencv学习系列:实例练习(含多个实例)
- 区块链DApp从零开始学 (二) | 超详细 DApp创建 | 发行代币token | 宠物领养
- 实时操作系统概述(推荐) .
- 数据库有哪些类型?如何根据应用场景选择?终于有人讲明白了
- 正则^[a-zA-Z\d]+$
- Multisim--软件简介及安装教程(含Multisim14安装包资源)
- so slow of the speed
- HTML hr标签简介
- web网页设计实例作业 ——我的家乡-四川(9页) HTML+CSS+JavaScript 学生DW网页设计作业成品
- 3L软件网站 - 音速启动