01.网络编程
| #网络编程简介: |
| |
| 专业版话述(网络通信的原理):网络编程也叫Socket编程, 也叫套接字编程, 通信两端都独有自己的Socket对象, 数据在两个Socket之间通过 数据报包(DatagramPacket) 或者 IO流的方式进行传输. |
| 大白话版:网络编程就是用来实现 网络互联的 不同计算机上 运行的程序间 可以进行数据交互, 传输等. |
| |
| 软件结构: |
| C/S结构: Client(客户端)/Server(服务器端) |
| 好处: |
| 1. 界面相对比较美观. |
| 2. 降低服务器压力, 所需的非核心数据可以提前安装到客户端. |
| 弊端: |
| 当服务器端升级的时候, 客户端也要同步更新. |
| B/S结构: Browser(浏览器端)/Server(服务器端) |
| 好处: |
| 1. 操作简单, 方便, 只需一个浏览器即可, 从而提高用户体验. |
| 2. 服务器端更新的时候, 浏览器端不需要同步更新. |
| 弊端: |
| 1. 服务器端压力较大. |
| 2. 需要用户记忆各种网址, 相对不太友好. |
| 三大要素: |
| IP地址: 此处以IPv4举例. |
| 概述: |
| 指的是设备(电脑, 手机, Ipad)在网络中的 唯一标识. |
| 组成: |
| 网络(网关)号码 + 主机地址. |
| 例如: |
| 192.168.33.77 |
| 分类: |
| 城域网: 1 + 3, 第一段是网络号码, 剩下3段是主机地址, 假设: 1.0.0.1, 1.0.0.2 |
| 广域网: 2 + 2 |
| 局域网: 3 + 1 |
| 两个特殊的IP: |
| 127.0.0.1 本地回环(回路)地址. |
| 255.255.255.255 广播地址. |
| 两个常用的DOS命令: |
| ipconfig /all 查看IP信息详情,可查看本机的Mac地址. |
| ping ip地址 -t 测试网络连接,直到主机停止. |
| 端口号: |
| 概述: |
| 程序在设备上的唯一标识. |
| 范围: |
| 0 ~ 65535 |
| 细节: |
| 其中0~1023已经被系统占用或者用作保留端口, 我们在自定义端口号的时候尽量规避这个范围. |
| |
| 涉及到的DOS命令: |
| netstat -ano //查看本机所有的端口号 |
| netstat -ano | findstr 端口号 //查看本机指定的端口号, 主要是看其对应的pid值的. |
| |
| tasklist | findstr pid值 //根据pid值获取其对应的程序. |
| taskkill /pid pid值 /F //根据pid值杀死其对应的程序. |
| 协议: |
| 概述: |
| 指的是设备间进行通信时所要遵循的规则, 规范. |
| 分类: |
| UDP协议: //类似于 群发. |
| 1. 面向无连接. |
| 2. 采用数据报包的方式发送数据, 每个包的大小不超过64KB. |
| 3. 不安全(不可靠)协议. |
| 4. 效率相对较高. |
| 5. 不区分客户端和服务器端, 叫: 发送端和接收端. |
| TCP协议: //类似于 打电话. |
| 1. 面向有连接(三次握手). |
| 2. 采用IO流的方式发送数据, 理论上来讲数据无大小限制. |
| 3. 安全(可靠)协议. |
| 4. 效率相对较低. |
| 5. 区分客户端和服务器端. |
| |
| InetAddress(IP地址包装类): |
| 概述: |
| 它是IP地址的包装类, 即: 标示的是IP地址对象, 里边提供的功能主要用户在 字符串形式的IP和 IP地址对象之间做转换. |
| 成员方法: |
| String形式的IP -> Ip对象 |
| public static InetAddress getByName(String 主机名/ip地址); 根据主机名或者ip地址, 获取其对应的IP地址对象. |
| IP对象 -> String形式的IP |
| public String getHostAddress(); 根据IP地址对象, 获取其对应的 字符串形式的IP. |
| public String getHostName(); 根据IP地址对象, 获取其对应的 字符串形式的主机名. |
| |
02.包装类
| # 案例: 包装类详解. |
| * 包装类简介: |
| * 概述: 在Java中, 为了更方便的管理基本类型, 设计者就针对于 8种基本类型, 分别提供了对应的 引用类型, 用来管理它们.帮助我们实现更灵活, 更丰富多彩的代码运用, 这些 与基本类型对应的引用类型, 统称为: 包装类. |
| * 大白话翻译: 包装类就是基本类型对应的 引用类型的统称. |
| * 基本类型与其对应的包装类之间的对应关系: |
| * 基本类型 与其对应的引用类型(包装类) |
| * byte Byte |
| * short Short |
| * char Character |
| * int Integer |
| * long Long |
| * float Float |
| * double Double |
| * boolean Boolean |
| * 包装类的应用场景:主要用于该包装类对应的基本类型 与 字符串之间的相互转换. |
| *例如: |
| * Integer就是用来在 int 和 String之间做相互转换的. |
| * Double就是用来在 double 和 String之间做相互转换的. |
| * 举例: |
| * String s = "123"; |
| * int a = Integer.parseInt(s); |
| * <p> |
| * double d = Double.parseDouble("10.3"); |
| * boolean flag = Boolean.parseBoolean("false"); |
| |
| |
| * 结论: |
| * 1. 我们学习包装类, 学习的就是包装类中的 parseXxx()方法. |
| * 2. parseXxx()方法可以用于将 字符串类型的该数据, 转成其对应的基本类型. 例如: |
| * int num = Integer.parseInt("123"); |
| * double d = Double.parseDouble("10.3"); |
| * boolean flag = Boolean.parseBoolean("true"); |
| * 3. 8种包装类除了Character类之外, 其它7种包装类都有 parseXxx()方法. |
| * |
| * 扩展知识: String 和 char类型之间如何相互转换. |
| * |
| * 情况1: String -> char String s1 = "abc"; char ch1 = s1.charAt(1); |
| * 情况2: char -> String char ch2 = 'a' ; String s2 = ch2+""; 或者 String s3 = String.valueof(ch2) |
| * 情况3: String -> char[] String s1 = "abc"; char[] ch3 = s1.toCharArray(); |
| * 情况4: char[] -> String char[] chs = {'a','b','c','d'}; String s = new String(chs) 或者 String s = String.valueOf(chs) |
| |
| * * * * * * * * * * * * * * * * * * * * * * * * * |
| |
| ### 案例: 演示 int类型 和 String类型之间如何相互转换. |
| int -> String: |
| 方式1: 直接和""拼接 |
| 方式2: 通过String#valueOf()方法实现. |
| public static String valueOf(任意类型); 把任意类型的值转成其对应的 字符串形式. |
| String -> int: |
| 方式1: String -> Integer -> int. |
| 方式2: Integer#parseInt() |
| * * * * * * * * * * * * * * * * * * * * * * * * * |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?