一、集合

不管使用什么语言编程,编程在做的事情(编程的本质)都是一样的,那就是设计算法和数据结构(程序 = 算法 + 数据结构),算法是一个程序的操作步骤(即这个进程在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进阶知识相关推荐

  1. Java SE 基础知识

    Java SE 基础知识 1 2 @(Notes)[J2SE, Notes] VICTORY LOVES PREPARATION. 特别说明: 该文档在马克飞象查阅最佳: 本部分知识还在迭代中,欢迎补 ...

  2. Java工程师进阶知识完全扫盲, 太全了!!

    项目简介 本期介绍的开源项目名称叫做:advanced-java 中文名:互联网 Java 工程师进阶知识完全扫盲,该项目主要是为Java开发工程师提供进阶知识讲解,从而提升Java工程师技术与能力! ...

  3. Java SE 基础知识体系梳理

    ## Java SE 基础知识体系梳理 ----------day01------------- (1)计算机的体系结构 (2)Java语言的概述 (3)开发环境的搭建和使用 1.计算机的体系结构(常 ...

  4. Java SE 基础知识(一)

    一.基础知识 1. Java SE : Java Standard Edition Java ME : Java Micro Edition Java EE : Java Enterprise Edi ...

  5. Java复习总结(二)Java SE基础知识

    Java SE面试题 目录 Java SE基础 基本语法 数据类型 关键字 面向对象 集合 集合类概述 Collection接口 进阶 线程 锁 JDK 反射 JVM GC io操作和NIO,AIO ...

  6. Java学习进阶知识篇

    系列文章目录 提示:....................... 文章目录 系列文章目录 前言 一.类和对象 面向对象基本介绍 类的基本使用属性 构造方法和析构方法 对象 二. 总结 前言 提示:这 ...

  7. Java SE基础知识(二)--整数的运算符

    Java SE 是什么,包括哪些内容(二)? 本文内容参考自Java8标准 一.代码运行机制相关的内容: 1.Java中的类型分类("你编程时能使用的类型全部在这里了"): ⑴.J ...

  8. Java SE 重点知识笔记

    文章目录 前言: 1.Java概述 1.1.Java语言跨平台原理: 1.2.JRE和JDK: 1.3.HelloWorld案例: 2.java基础语法 2.1.注释 : 2.2.类型转换: 3.数据 ...

  9. 准备Java面试之Java SE基础知识——问题篇

    由于这个月要开始面试了,所以重新把java SE的基础重新学习一遍,主要问题有如下37条.我将会在一周内更新完成答案. 作者:Xoper.ducky 链接:https://www.nowcoder.c ...

最新文章

  1. 利用java打印正三角形_JAVA一层for循环实现打印正三角形和到三角形
  2. angular 发布订阅
  3. 【完成发布】Lazy Line Painter – 非常有趣的 jQuery 路径动画插件
  4. CentOs7.2编译安装Nginx服务器
  5. Python 基础学习 4 ——字典
  6. IT程序人生:学会写程序能从事哪些技术岗位?
  7. 基础才是王道——TCP/IP详解学习笔记
  8. ProGuard:类混淆,类的指定函数保留
  9. (Quicker动作)MathType公式快速标红
  10. java获取中文首字母
  11. opencv学习系列:实例练习(含多个实例)
  12. 区块链DApp从零开始学 (二) | 超详细 DApp创建 | 发行代币token | 宠物领养
  13. 实时操作系统概述(推荐) .
  14. 数据库有哪些类型?如何根据应用场景选择?终于有人讲明白了
  15. 正则^[a-zA-Z\d]+$
  16. Multisim--软件简介及安装教程(含Multisim14安装包资源)
  17. so slow of the speed
  18. HTML hr标签简介
  19. web网页设计实例作业 ——我的家乡-四川(9页) HTML+CSS+JavaScript 学生DW网页设计作业成品
  20. 3L软件网站 - 音速启动

热门文章

  1. mysql数据迁移至oracle中的几个问题(1)
  2. 程序员必备75道逻辑思维题(附答案)之六
  3. 011.练手.Ubuntu下录高清视频
  4. Winform从入门到精通(2)——Button(史上最全)
  5. c++ primer需要全看完吗_你家的门窗需要“换”吗?看完这几点再决定
  6. layui表格里时间显示一串数字问题
  7. Laravel中Contracts的理解和使用
  8. java语言特点_Java语言特点及分析
  9. 软件工程的事实与谬误
  10. 2、微信小程序开发界面