黑马程序员——Java基础

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、java常识

1、什么是软件?
软件:一系列按照特定顺序组织的计算机数据和指令的集合。
常见的软件:
系统软件:
如:DOS,windows,Linux等。
应用软件:
如:扫雷,迅雷,QQ等。
2、什么是开发?
制作软件
3、人机交互
交互方式:
图形化界面(Graphical User Interface GUI)这种方式简单直观,使用者易于接受,容易上手操作。
命令行方式(Command Line Interface CLI):需要有一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦,需要记录住一些命令。

dos命令行,课程中常见的命令。
dir : 列出当前目录下的文件以及文件夹
md : 创建目录
rd : 删除目录
cd : 进入指定目录
cd.. : 退回到上一级目录
cd\: 退回到根目录
del : 删除文件
exit : 推出dos命令行
通过DOS命令行的演示,发现原来操作计算机就如同和计算机说话一样。
我们告诉它做什么,它就可以做什么。前提是,我们和它说的内容它必须识别才可以。这就是计算机语言。

注:在dos命令行里用rd删除文件夹时,必须保证文件夹里面没有文件,此时可以单个的删除里边的文件,也可以使用del+文件夹的方式删除里边的所有文件。
    技巧:当我们要进入一个目录,而目录名很长,如:目录名为woshiheimachengxuyuan,我们可以用 cd woshi*,用*代替后面文字的方式来简写,效率快。

二、Java语言概述
    Java的生日:1995年SUN(StanfordUniversity Network)公司推出了Java这一门高级编程语言。
    Java自述:我是一门面向Internet的编程语言,目前我已经成为Web应用程序的首选开发语言,我具有简单易学,完全面向对象,安全可靠,可以在任何操作系统上运行就是你们所说的跨平台等特点。目前,我主要有三种技术架构,看下面:
    J2EE(Java 2 Platform Enterprise Edition)企业版:是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如:Servlet Jsp等,主要针对于Web应用程序开发。
    J2SE(Java 2 Platform Standard Edition)标准版:是为开发普通桌面和商务应用程序提供的解决方案。该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发,比如Java版的扫雷、QQ等。
    J2ME(Java 2 Platform Micro Edition)小型版:是为开发电子消费产品和嵌入式设备提供的解决方案。该技术体系主要应用于小型电子消费产品,如手机中的应用程序等。
这些都是我的老名称了,在我的5.0版本后,SUN公司把我的这三种架构更名为JAVAEE、JAVASE、JAVAME,大家学懂我之后,都可以成为JAVAEE程序员哦,是不是很好听呀!
    Java为什么可以跨平台?
    通过Java语言编写的应用程序在不同的系统平台上都可以运行,而像用C++语言编写的程序只能在windows系统上运行,在linux上就行不通了。Java为什么这么神通广大呢?原理:Java有一个自己独立的能解析Java软件的解析器,称之为虚拟机,即JVM(Java Virtual Machine Java虚拟机)。只要在需要运行Java应用程序的操作系统上,先安装一个JVM就可以了,接下来就由JVM来负责Java程序在该系统中的运行。这样就实现了Java程序的跨平台性,也称为Java具有良好的可移植性。
    Java语言的环境搭建 
    JRE:Java Runtime Environment Java运行环境的简写,包括Java虚拟机JVM和Java程序所需的核心类库等,如过想要运行一个开发好的Java程序,计算机中只要安装JRE即可。
    JDK:Java Development Kit Java开发工具包的简写,JDK是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。所以安装了JDK,就不用再单独安装JRE了。其中的开发工具包括:编译工具(javac.exe)和打包工具(jar.exe)等。 其中的包含关系图:
   



    简而言之,JDK包含了JRE,JRE中包含了JVM,使用JDK开发完成的Java程序,交给JRE去运行。
    既然JDK中包含了所有,那么我们只要安装JDK就可以了,JDK的详细安装步骤,请参照另一篇博文:JDK安装与配置详细图文教程。其中对于环境变量的配置和为什么要配置都进行了详细说明。
三、注释
    注释的作用:1、注解、说明、解释我们的程序,提高代码的阅读性。;2、调试程序。例如程序出现错误,可以例如注释来查找出错的地方。
    有三种注释方式:单行注释、多行注释、文档注释。
    单行注释://注释文字
    多行注释:/*-------中间可以有多行注释文字-------*/  注:多行注释不要嵌套多行注释。
    文档注释:是Java特有的注释,通常书写在类、域、构造函数、方法、定义之前。注释内容可以被JDK中的工具javadoc.exe所解析,生成一套以网页文件形式体现的该程序分说明文档。格式:例
    /**
    作者:
    版本:
    作用:
    等
    */
    初学者应该养成先写注释再写代码的习惯,因为代码仅仅是思想的一种体现形式而已。将自己的思想通过注释先整理出来,再用代码去体现,不要每行都加注释,也不要每行都不加注释。
 
入门程序:



运行一下


------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
### TCP传输原理与实现 TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层协议。其核心原理是通过建立端到端的连接,确保数据在不可靠的网络中能够可靠地传输。TCP 使用确认机制、流量控制、拥塞控制等机制来保障数据的完整性和有序性。 在 Java 中,TCP 通信可以通过 `Socket` 和 `ServerSocket` 类实现。客户端使用 `Socket` 连接到服务器,服务器端使用 `ServerSocket` 监听连接请求。通信过程中,数据通过输入流和输出流进行传输。 #### 客户端实现 客户端的主要任务是与服务器建立连接,并通过输出流向服务器发送数据,同时可以通过输入流接收服务器的响应。例如: ```java Socket s = new Socket(InetAddress.getLocalHost(), 10004); OutputStream out = s.getOutputStream(); out.write("Hello TCPClient".getBytes()); InputStream is = s.getInputStream(); byte[] buffer = new byte[1024]; int len = is.read(buffer); System.out.println(new String(buffer, 0, len)); s.close(); ``` 该代码实现了客户端与服务器的连接,并发送了一条文本消息,同时接收服务器的响应[^1]。 #### 服务端实现 服务端通过 `ServerSocket` 监听指定端口,等待客户端连接。一旦连接建立,服务端通过输入流接收客户端发送的数据,并通过输出流向客户端发送响应。例如: ```java ServerSocket ss = new ServerSocket(10012); Socket s = ss.accept(); InputStream in = s.getInputStream(); byte[] buffer = new byte[1024]; int len = in.read(buffer); System.out.println(new String(buffer, 0, len)); PrintWriter out = new PrintWriter(s.getOutputStream(), true); out.println("<font color='red' size=7>客户端s你好</font>"); s.close(); ss.close(); ``` 该代码展示了如何在服务端接收客户端发送的数据,并向客户端发送 HTML 格式的响应[^3]。 #### TCP连接的建立与释放 TCP 连接的建立采用三次握手(Three-way Handshake): 1. 客户端发送 SYN(同步)报文给服务器,表示请求建立连接。 2. 服务器收到 SYN 报文后,发送 SYN-ACK(同步-确认)报文作为响应。 3. 客户端收到 SYN-ACK 后,发送 ACK(确认)报文,连接建立。 连接的释放采用四次挥手(Four-way Handshake): 1. 客户端发送 FIN(结束)报文,表示数据发送完成。 2. 服务器发送 ACK 报文,确认收到 FIN。 3. 服务器发送 FIN 报文,表示数据发送完成。 4. 客户端发送 ACK 报文,连接关闭。 #### TCP的可靠性机制 TCP 通过以下机制确保数据的可靠传输: - **确认机制**:接收方收到数据后,向发送方发送确认信息。 - **重传机制**:如果发送方未收到确认信息,则重传数据。 - **流量控制**:通过滑动窗口机制,控制发送速率,避免接收方缓冲区溢出。 - **拥塞控制**:通过慢启动、拥塞避免等算法,防止网络拥塞。 #### TCP的编程模型 TCP 编程模型通常包括以下几个步骤: 1. **创建 Socket**:客户端创建 `Socket` 对象,连接服务器;服务端创建 `ServerSocket` 对象,监听端口。 2. **获取流对象**:获取 `Socket` 的输入流和输出流,用于数据传输。 3. **数据读写**:通过输入流读取数据,通过输出流写入数据。 4. **关闭连接**:通信结束后,关闭 `Socket` 和流对象。 ### 示例代码:完整的 TCP 通信 以下是一个完整的 TCP 通信示例,包含客户端和服务端的代码。 #### 客户端代码 ```java import java.io.*; import java.net.*; public class TcpClient { public static void main(String[] args) { try { Socket socket = new Socket("localhost", 8888); OutputStream out = socket.getOutputStream(); out.write("Hello Server!".getBytes()); InputStream in = socket.getInputStream(); byte[] buffer = new byte[1024]; int len = in.read(buffer); System.out.println("Server response: " + new String(buffer, 0, len)); socket.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` #### 服务端代码 ```java import java.io.*; import java.net.*; public class TcpServer { public static void main(String[] args) { try { ServerSocket serverSocket = new ServerSocket(8888); System.out.println("Server is listening on port 8888..."); Socket socket = serverSocket.accept(); InputStream in = socket.getInputStream(); byte[] buffer = new byte[1024]; int len = in.read(buffer); System.out.println("Client message: " + new String(buffer, 0, len)); OutputStream out = socket.getOutputStream(); out.write("Hello Client!".getBytes()); socket.close(); serverSocket.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值