Java网络编程干货
1.网络编程是什么 了解
在Java语言中,我们可以使用java.net包下的技术轻松开发出常见的网络应用程序,从而把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,
从而使众多的计算机可以方便地互相传递信息、共享硬件、软件、数据信息等资源。
想要实现网络互联的不同计算机上运行的程序间可以进行数据交换,那么就要涉及到网络编程的“三要素”,这样就能解决以下的三个问题:
1. 如何准确地定位网络上一台或多台主机IP地址
2. 如何定位到主机上某个特定的应用端口号
3. 找到主机后如何可靠高效地进行数据传输通讯协议
2.网络编程三要素 理解
2.1 IP地址
要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接收数据的计算机和识别发送的计算机,而IP地址就是这个标识号。
也就是设备的标识,简单说就是设备在网络中的地址,是唯一的标识。
目前,IP地址广泛使用的版本是IPv4,它是由4个字节大小的二进制数来表示,例如:0000-1010 0000-0000 0000-0000 0000-0001。
由于二进制形式表示的IP地址非常不便记忆和处理,因此通常会将IP地址写成十进制的形式,每个字节(8位)用一个十进制整数来(0-255)表示,数字间用符号“.”分开,如“192.168.0.1”。
因为8位对应的十进制无符号整数为:0-255,所以-4.278.4.1是错误的IPv4地址。
随着计算机网络规模的不断扩大,对IP地址的需求也越来越多,IPv4这种用4个字节表示的IP地址面临枯竭,因此IPv6便应运而生了,IPv6使用16个字节表示IP地址,它所拥有的地址容量达到2128 个(算上全零的),这样就解决了网络地址资源数量不够的问题。16个字节写成8个16位的无符号整数,每个整数用四个十六进制位表示,每个数之间用冒号分开,如:3ffe:3201:1401:1280:c8ff:fe4d:db39:1984。
注意事项:
1. 本机地址:127.0.0.1,主机名:localhost。
2. 192.168.0.0--192.168.255.255为私有地址,属于非注册地址,专门为组织机构内部使用。
2.1.1 域名和DNS
2.1.1.1 域名
IP地址毕竟是数字标识,使用时不好记忆和书写,因此在IP地址的基础上又发展出一种符号化的地址方案,来代替数字型的IP地址。
每一个符号化的地址都与特定的IP地址对应。这个与网络上的数字型IP地址相对应的字符型地址,就被称为域名。
目前域名已经成为互联网品牌、网上商标保护必备的要素之一,除了识别功能外,还有引导、宣传等作用。如:www.baidu.com。
2.1.1.2 DNS
在Internet上域名与IP地址之间是一对一(或者多对一)的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,
域名解析需要由专门的域名解析服务器来完成,DNS(Domain Name System域名系统)就是进行域名解析的服务器,域名的最终指向是IP。
2.2 端口号
IP地址用来标识一台计算机,但是一台计算机上可能提供多种网络应用程序,如何来区分这些不同的程序呢这就要用到端口。
在计算机中,不同的应用程序是通过端口号区分的。端口号是用两个字节(无符号)表示的,它的取值范围是0~65535,而这些计算机端口可分为3大类:
公认端口:0~1023。被预先定义的服务通信占用(如:HTTP占用端口80,FTP占用端口21,Telnet占用端口23等)
注册端口:1024~49151。分配给用户进程或应用程序。(如:Tomcat占用端口8080,MySQL占用端口3306,Oracle占用端口1521等)。
动态/私有端口:49152~65535。
IP地址好比每个人的地址(门牌号),端口好比是房间号。必须同时指定IP地址和端口号才能够正确的发送数据。接下来通过一个图例来描述IP地址和端口号的作用,如下图所示
2.3 通讯协议
通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则。
就像两个人想要顺利沟通就必须使用同一种语言一样,如果一个人只懂英语而另外一个人只懂中文,这样就会造成没有共同语言而无法沟通。
在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换。
2.3.1 OSI参考模型
世界上第一个网络体系结构由IBM公司提出(1974年,SNA),以后其他公司也相继提出自己的网络体系结构如:Digital公司的DNA,美国国防部的TCP/IP等,
多种网络体系结构并存,其结果是若采用IBM的结构,只能选用IBM的产品,只能与同种结构的网络互联。
为了促进计算机网络的发展,国际标准化组织ISO(International Organization for Standardization)于1977年成立了一个委员会,
在现有网络的基础上,提出了不基于具体机型、操作系统或公司的网络体系结构,
称为开放系统互连参考模型,即OSI/RM (Open System Interconnection Reference Model)。
OSI模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。OSI七层协议模型中约定了不同主机之间每层的数据传输协议。
2.3.2 TCP/IP参考模型
OSI参考模型的初衷是提供全世界范围的计算机网络都要遵循的统一标准,但是由于存在模型和协议自身的缺陷,迟迟没有成熟的产品推出。
TCP/IP协议在实践中不断完善和发展取得成功,作为网络的基础,Internet的语言,可以说没有TCP/IP协议就没有互联网的今天。
TCP/IP,即Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,是Internet最基本的协议、Internet国际互联网络的基础。
TCP/IP协议是一个开放的网络协议簇,它的名字主要取自最重要的网络层IP协议和传输层TCP协议。TCP/IP协议定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。
TCP/IP参考模型采用4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求,这4个层次分别是:网络接口层、互联网层(IP层)、传输层(TCP层)、应用层。
OSI模型与TCP/IP模型的对应关系如图所示:
OSI模型中的应用层、表示层、会话层对应TCP/IP协议的应用层
OSI模型中的传输层对应TCP/IP协议的传输层(TCP/UDP)
OSI模型中的网络层对应TCP/IP协议的网络层(IP)
OSI模型中的数据链路层、物理层对应TCP/IP协议的物理+数据链路层
那么TCP/IP协议和OSI模型有什么区别呢?
OSI网络通信协议模型,是一个参考模型,而TCP/IP协议是事实上的标准。TCP/IP协议参考了OSI 模型,但是并没有严格按照OSI规定的七层标准去划分,
而只划分了四层,这样会更简单点,当划分太多层次时,你很难区分某个协议是属于哪个层次的。
TCP/IP协议和OSI模型也并不冲突,TCP/IP协议中的应用层协议,就对应于OSI中的应用层,表示层,会话层。
TCP/IP中有两个重要的协议,传输层的TCP协议和互连网络层的IP协议,因此就拿这两个协议做代表,来命名整个协议族了,再说TCP/IP协议时,是指整个协议族。
3.网络编程基础类 掌握
3.1 InetAddress类
java.net.InetAddress用来封装计算机的ip地址及DNS(没有端口信息),包括一个主机名和一个URL地址,是java对ip地址的高层展示。
大多数类都用到这个类,包括Socket、ServerSocket、URL、DatagramSocket、DatagramPocket
3.1.1 常用静态方法
InetAddress getByName(String host); --传入主机名或ip地址得到对应的InetAddress对象,其中封装了ip地址和主机名
InetAddress getLocalHost(); --获取本机的InetAddress对象,其中封装ip地址和主机名
3.1.2 常用成员方法
String getHostAddress(); --获取ip地址
String getHostName(); --获取主机名
3.2 URL类
java.net.URL是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。
互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
URL由4部分组成:协议、存放资源的主机域名、资源文件名和端口号。如果未指定该端口号,则使用协议默认的端口。
例如HTTP协议的默认端口为80。在浏览器中访问网页时,地址栏显示的地址就是URL。
URL标准格式为:<协议>://<域名或IP>:<端口>/<路径>。其中,<协议>://<域名或IP>是必需的,<端口>/<路径>有时可省略。如:https://www.baidu.com。
为了方便程序员编程,JDK中提供了URL类,该类的全名是java.net.URL,该类封装了大量复杂的涉及从远程站点获取信息的细节,可以使用它的各种方法来对URL对象进行分割、合并等处理。
创建方式:new URL(String path);
获取协议方法:getProtlcol();
获取域名:getHost();
获取与URL关联协议的默认端口:getDefaultPort();
获取端口:getPort();
获取端口号后,参数前的内容:getPath();
获取端口号后所有的内容:getFile();
获取参数:getQuery();
获取锚点:getRef(); --输出"#"后面的内容
使用此类的InputStream openStream()方法,可打开此URL的一个链接,并返回一个用于从该连接读入的InputStream,实现简单的网络读取。
4.TCP和UDP协议 理解
4.1 Socket套接字概述
我们开发的网络应用程序位于应用层,TCP和UDP属于传输层协议,在应用层如何使用传输层的服务呢在应用层和传输层之间,则是使用套接Socket来进行分离。
套接字就像是传输层为应用层开的一个小口,应用程序通过这个小口向远程发送数据,或者接收远程发来的数据。
而这个小口以内,也就是数据进入这个口之后,或者数据从这个口出来之前,是不知道也不需要知道的,也不会关心它如何传输,这属于网络其它层次工作。
Socket实际是传输层供给应用层的编程接口。Socket就是应用层与传输层之间的桥梁。
使用Socket编程可以开发客户机和服务器应用程序,可以在本地网络上进行通信,也可通过Internet在全球范围内通信。
应用层-(Socket)-传输层-网络层-数据链路层-物理层
4.2 TCP协议和UDP协议
TCP协议和UDP协议是传输层的两种协议。Socket是传输层供给应用层的编程接口,所以Socket编程就分为TCP编程和UDP编程两类
4.2.1 TCP协议
使用TCP协议,须先建立TCP连接,形成传输数据通道,似于拨打电话
传输前,采用“三次握手”方式,属于点对点通信,是面向连接的,效率低。
仅支持单播传输,每条TCP传输连接只能有两个端点(客户端、服务端)。
两个端点的数据传输,采用的是“字节流”来传输,属于可靠的数据传输。
传输完毕,需释放已建立的连接,开销大,速度慢,适用于文件传输、邮件等。
4.2.2 UDP协议
采用数据报(数据、源、目的)的方式来传输,无需建立连接,类似于发短信。
每个数据报的大小限制在64K内,超出64k可以分为多个数据报来发送。
发送不管对方是否准备好,接收方即使收到也不确认,因此属于不可靠的。
可以广播发送,也就是属于一对一、一对多和多对一连接的通信协议。
发送数据结束时无需释放资源,开销小,速度快,适用于视频会议、直播等。
4.2.3 TCP协议和UDP协议的区别
是否连接:TCP面向连接,UDP面向非连接
传递可靠性:TCP可靠,UDP不可靠
连接对象个数:TCP(一对一),UCP(一对一,一对多,多对一)
传输方式:TCP面向字节流,UDP面向报文
传输速度:TCP慢,UDP快
应用场景:TCP适用于可靠传输(文件传输,邮件等);UDP适用于实时应用(视频会议,直播等)
4.3 三次握手和四次回收
客户端与服务端在使用TCP传输协议时要先建立一个“通道”,在传输完毕之后又要关闭这“通道”,前者可以被形象地成为“三次握手”,而后者则可以被称为“四次挥手”。
通道的建立之三次握手:
1. 在建立通道时,客户端首先要向服务端发送一个SYN同步信号。
2. 服务端在接收到这个信号之后会向客户端发出SYN同步信号和ACK确认信号。
3. 当服务端的ACK和SYN到达客户端后,客户端与服务端之间的这个“通道”就被建立。
通道的关闭之四次挥手:
1. 在数据传输完毕之后,客户端会向服务端发出一个FIN终止信号。
2. 服务端在收到这个信号之后会向客户端发出一个ACK确认信号。
3. 如果服务端此后也没有数据发给客户端时服务端会向客户端发送一个FIN终止信号。
4. 客户端在收到这个信号之后会回复一个确认信号,在服务端接收到这个信号之后,服务端与客户端的通道也就关闭了。
5.基于TCP协议的编程 掌握
5.1 TCP协议编程概述
套接字是一种进程间的数据交换机制,利用套接字(Socket)开发网络应用程序早已被广泛的采用,以至于成为事实上的标准。
在网络通讯中,第一次主动发起通讯的程序被称作客户端(Client),而在第一次通讯中等待连接的程序被称作服务端(Server)。
一旦通讯建立,则客户端和服务器端完全一样,没有本质的区别。
套接字与主机地址和端口号相关联,主机地址就是客户端或服务器程序所在的主机的IP地址,端口地址是指客户端或服务器程序使用的主机的通信端口。
在客户端和服务器中,分别创建独立的Socket,并通过Socket的属性,将两个Socket进行连接,这样客户端和服务器通过套接字所建立连接并使用IO流进行通信。
5.2 Socket的概述
Socket类实现客户端套接字(Client客户端),套接字是两台机器之间通信的端点
Socket构造方法:public Socket(InetAddress ia,int p); 创建套接字并连接到指定ip地址的指定端口
Socket成员方法:
方法名 描述
public InetAddress getInetAddress() 返回此套接字连接到的远程 IP 地址。
public InputStream getInputStream() 返回此套接字的输入流(接收网络消息)。
public OutputStream getOutputStream() 返回此套接字的输出流(发送网络消息)。
public void shutdownInput() 禁用此套接字的输入流
public void shutdownOutput() 禁用此套接字的输出流。
public synchronized void close() 关闭此套接字(默认会关闭IO流)。
5.3 ServerSocket的概述
ServerSocket类用于实现服务器套接字(Server服务端)。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者返回结果。
ServerSocket类的构造方法:
方法名 描述
public ServerSocket(int port) 创建服务器套接字并绑定端口号
ServerSocket类的常用方法:
方法名 描述
public Socket accept() 侦听要连接到此套接字并接受它。
public InetAddress getInetAddress() 返回此服务器套接字的本地地址。
public void close() 关闭此套接字。
5.4 TCP单项通讯的实现
java语言的基于套接字编程分为服务端编程和客户端编程
5.4.1 服务器端实现步骤
创建ServerSocket对象,并绑定端口
通过accept方法监听客户端的请求
建立连接后,通过输入输出流进行读写操作
调用close方法关闭资源
5.4.2 客户端实现步骤
创建Socket对象,指定服务区ip和端口
建立连接后,通过输入输出流进行读写操作
通过输出输入流获取服务器返回信息
调用close方法关闭资源
注意:先启动服务器端,再启动客户端
5.5 TCP双向通讯的实现
5.5.1 服务器端实现步骤
1. 创建ServerSocket对象,绑定监听端口;
2. 通过accept()方法监听客户端请求;
3. 使用输入流接收客户端发送的图片,然后通过输出流保存图片
4. 通过输出流返回客户端图片收到。
5. 调用close()方法关闭资源
5.5.2 客户端实现步骤
1. 创建socket对象,指明需要连接的服务器地址和端口号;
2. 建立连接后,通过输出流向服务器端发送图片;
3. 通过输入流获取服务器的响应信息;
4. 调用close()方法关闭资源
6.基于UDP协议的编程 掌握
6.1 UDP协议编程概述
在UDP通信协议下,两台计算机之间进行数据交互,并不需要先建立连接,发送端直接往指定的IP和端口号上发送数据即可,
但是它并不能保证数据一定能让对方收到,也不能确定什么时候可以送达
java.net.DatagramSocket类和java.net.DatagramPacket类是使用UDP编程中需要使用的两个类,并且发送端和接收端都需要使用这个俩类,并且发送端与接收端是两个独立的运行程序。
1. DatagramSocket:负责接收和发送数据,创建接收端时需要指定端口号。
2. DatagramPacket:负责把数据打包,创建发送端时需指定接收端的IP地址和端口。
6.2 DataGramSocket概述
DatagramSocket类作为基于UDP协议的Socket,使用DatagramSocket类可以用于接收和发送数据,同时创建接收端时还需指定端口号。
DatagramSocket类的构造方法:
方法名 描述
public DatagramSocket() 创建发送端的数据报套接字
public DatagramSocket(int port) 创建接收端的数据报套接字,并指定端口号
DatagramSocket类的常用方法:
方法名 描述
public void send(DatagramPacket p) 发送数据报。
public void receive(DatagramPacket p) 接收数据报。
public void close() 关闭数据报套接字。
6.3 DatagramPacket概述
DatagramPacket类负责把发送的数据打包(打包的数据为byte类型的数组),并且创建发送端时需指定接收端的IP地址和端口。
DatagramPacket类的构造方法:
方法名 描述
public DatagramPacket(byte buf[], int offset, int length) 创建接收端的数据报。
public DatagramPacket(byte buf[], int offset, int length, InetAddress address, int port) 创建发送端的数据报,并指定接收端的IP地址和端口号。
DatagramPacket类的常用方法:
方法名 描述
public synchronized byte[] getData() 返回数据报中存储的数据
public synchronized int getLength() 获得发送或接收数据报中的长度
6.4 基于UDP编程的实现
6.4.1 接收端实现步骤
创建DatagramSocket对象(服务端),并指定端口号
创建DatagramPacket对象(数据报)
调用receive方法,用于接收数据报
调用close方法关闭资源
6.4.2 发送端实现步骤
创建DatagramSocket对象(发送端)
创建DatagramPacket对象(数据报),并指定接收端ip地址和接口
调用send方法,发送数据报
调用close方法关闭资源
相关文章:
Java网络编程干货
1.网络编程是什么 了解 在Java语言中,我们可以使用java.net包下的技术轻松开发出常见的网络应用程序,从而把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统&#x…...
如何在 Spring Boot 项目中使用 MyBatis 进行批量操作以提升性能?
MyBatis 提供了 ExecutorType.BATCH 类型,允许将多个 SQL 语句进行组合,最后统一执行,从而减少数据库的访问频率,提升性能。 以下是如何在 Spring Boot 项目中使用 MyBatis 进行批量操作的关键点: 1. 配置 MyBatis 使…...
基于SSM的线上花店鲜花销售商城网站系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
Python Lambda表达式详解
Python Lambda表达式详解 1. Lambda是什么? Lambda是Python中用于创建匿名函数(没有名字的函数)的关键字,核心特点是简洁。它适用于需要临时定义简单函数的场景,或直接作为参数传递给高阶函数(如map()、f…...
DAPP实战篇:使用web3.js连接合约
说明 本系列内容目录:专栏:区块链入门到放弃查看目录 如果你还没有创建好项目请先查看:《DApp实战篇:先用前端起个项目》,如果你还不知道web3.js是什么请先查看:《DApp实战篇:前端技术栈一览》。 安装 点此查看web3.js官方文档 打开项目根目录,并唤起终端: 键入w…...
linux sar 系统运行状态统计
概述 sar 命令来自英文词组**“System activity reporter”**的缩写,其功能是用于统计系统运行状态。是一个系统活动报告工具,用于收集、报告和保存系统活动信息。它可以帮助系统管理员监控和分析系统性能,识别潜在的性能瓶颈或问题。 实时…...
【C#】一种优雅的基于winform的串口通信管理
serialPort.DataReceived、串口优雅管理 完整《C#串口通信系统》功能清单 Part 1 — SerialPortManager.cs —— 串口核心管理类 using System; using System.IO.Ports; using System.Text; using System.Threading; using System.Windows.Forms;/// <summary> /// 专业…...
ChatGPT之智能驾驶问题讨论
ChatGPT之智能驾驶问题讨论 1. 源由2. 问题:2.1 智能驾驶级别定义🚗 L2(部分自动化,Partial Automation)🤖 L3(有条件自动化,Conditional Automation)🛸 L4&a…...
K8S-证书过期更新
K8S证书过期问题 K8S证书过期处理方法 Unable to connect to the server: x509: certificate has expired or is not yet valid 1、查看证书有效期: # kubeadm certs check-expiration2、备份证书 # cp -rp /etc/kubernetes /etc/kubernetes.bak3、直接重建证书 …...
蓝桥杯第十五届真题——握手问题
#include<bits/stdc.h> using namespace std; int main() {ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int sum0;for(int i7;i<49;i){sumi;}cout<<sum;return 0; }...
5G_WiFi_CE_DFS
目录 一、规范要求 1、法规目录 2、定义 3、运行模式 4、主/从设备相关的运行行为及具体的动态频率选择(DFS)要求 5、产品角色确定测试项目 6、测试项目 测试项1:信道可用性检查(Channel Availability Check) …...
第二节:React 基础篇-受控组件 vs 非受控组件
一、场景题:设计一个实时搜索输入框,说明选择依据 受控组件 vs 非受控组件 核心区别 特征受控组件非受控组件数据管理由React状态(state)控制通过DOM元素(ref)直接访问更新时机每次输入触发onChange提交…...
springboot 处理编码的格式为opus的音频数据解决方案【java8】
opus编码的格式概念: Opus是一个有损声音编码的格式,由Xiph.Org基金会开发,之后由IETF(互联网工程任务组)进行标准化,目标是希望用单一格式包含声音和语音,取代Speex和Vorbis,且适用…...
RK3568 基于Gstreamer的多媒体调试记录
文章目录 1、环境介绍2、概念理清3、提前准备4、GStreamer编译5、GStreamer基础介绍6、视频播放初体验7、视频硬编码7.1、h2647.2、h265 8、视频硬解码8.1、解码视频并播放8.2、解码视频并播放带音频 1、环境介绍 硬件:飞凌ok3568-c开发板 软件:原厂rk…...
VS Code 的 .S 汇编文件里面的注释不显示绿色
1. 确认文件语言模式 打开 .S 文件后,查看 VS Code 右下角的状态栏,确认当前文件的识别模式(如 Assembly、Plain Text 等)。如果显示为 Plain Text 或其他非汇编模式: 点击状态栏中的语言模式(如 Plain Te…...
在 Wireshark 中如何筛选数据包
1. 显示过滤器(Display Filters) 显示过滤器用于 在已捕获的数据包中筛选,语法类似于编程语言中的条件表达式。 (1)基本过滤 表达式说明ip.addr 192.168.1.1显示所有涉及 192.168.1.1 的 IP 包ip.src 192.168.1.1…...
[MySQL]数据库与表创建
欢迎来到啾啾的博客🐱。 这是一个致力于构建完善 Java 程序员知识体系的博客📚。 它记录学习点滴,分享工作思考和实用技巧,偶尔也分享一些杂谈💬。 欢迎评论交流,感谢您的阅读😄。 本篇简单记录…...
5分钟读懂ArgoCD:在Kubernetes中实现持续部署
Kubernetes中的Argo CD介绍 Argo CD是用于Kubernetes的声明式GitOps持续交付工具。它遵循GitOps模式,以Git仓库作为定义所需应用程序状态的唯一真实来源,能在指定的目标环境中自动部署应用程序,并持续监控应用程序的运行状态,确保…...
cs224w课程学习笔记-第10课
cs224w课程学习笔记-第10课 异构图 前言一、异构图1、异构图定义2、异构图与同构图 二、异构图下的GNN1、GCN扩展至RGCN1.1 RGCN原理1.2 异构图的任务预测特点1.3 异构图任务预测基础案例 2、完整的异构图GCN三、异构图下的Transformer 前言 异构图的定义是节点内部存在类型不…...
OpenCV 图形API(26)图像滤波-----方框滤波函数boxFilter()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 使用方框滤波器模糊图像。 该函数使用以下内核来平滑图像: K α [ 1 1 … 1 1 1 … 1 ⋮ ⋮ ⋱ ⋮ 1 1 … 1 ] K \alpha \begin{b…...
安卓手机怎样开启双WiFi加速
1. 小米/Redmi手机 路径: 设置 → WLAN → 高级设置 → 双WLAN加速 操作: 开启功能后,可同时连接一个2.4GHz WiFi和一个5GHz WiFi(或两个不同路由器)。 可选择“智能选择”或手动指定辅助网络。 2. 华为/荣耀手机…...
大模型上下文协议MCP详解(2)—核心功能
版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl1. 标准化上下文交互技术 1.1 实时数据接入能力 MCP(Model Context Protocol)通过标准化的接口,为 AI 模型提供了强大的实时数据接入能力,使其能够快速获取和处理来自不同数据源的实时信息。…...
剑指Offer(数据结构与算法面试题精讲)C++版——day8
剑指Offer(数据结构与算法面试题精讲)C版——day8 题目一:链表中环的入口节点题目二:两个链表的第1个重合节点题目三:反转链表附录:源码gitee仓库 题目一:链表中环的入口节点 这道题的有如下三个…...
【Qt】QxOrm:下载、安装、使用
1、下载源码 github地址:https://github.com/QxOrm/QxOrm 稳定版本下载:https://github.com/QxOrm/QxOrm/releases/tag/1.5.0 2、编译源码 QxOrm支持cmake编译(CMakeLists.txt)、Qt pro工程编译(QxOrm.pro) 以 QxOrm.pro 为例,编译生成的库,没有在 build-QxOrm-1.5…...
CISCO组建RIP V2路由网络
1.实验准备: 2.具体配置: 2.1根据分配好的IP地址配置静态IP: 2.1.1PC配置: PC0: PC1: PC2: 2.1.2路由器配置: R0: Router>en Router#conf t Enter configuration…...
【数学建模】(智能优化算法)鲸鱼优化算法(Whale Optimization Algorithm)详解与应用
鲸鱼优化算法(Whale Optimization Algorithm)详解与应用 文章目录 鲸鱼优化算法(Whale Optimization Algorithm)详解与应用1. 引言2. 算法原理2.1 生物学基础2.2 数学模型[^3]1. 包围猎物阶段2. 气泡网攻击(螺旋更新)3. 随机搜索猎物(全局探索…...
【深度洞察】解码饮料行业破局点:场景革命
当东鹏特饮以 “大瓶装 防尘盖” 精准解决货车司机的场景化需求,当农夫山泉通过 “冷藏版东方树叶” 打开年轻白领的早餐场景 —— 这些现象级案例背后,是饮料行业底层逻辑的深刻变革:真正的市场增量,藏在对消费场景的极致拆解中…...
工业科学级天文相机:跨界融合的高精密成像解决方案
随着国内科技的快速发展,工业相机领域正悄然兴起一场"天文级"的技术革命。这类兼具工业设备可靠性与天文观测精度的特殊相机,正在半导体制造、天文观测、空间探测等领域开辟新的应用疆域。其核心技术突破不仅体现在传感器性能的提升࿰…...
回文日期2
#include <bits/stdc.h> using namespace std; bool huiwen(int date) {int tempdate;int r0;while(temp>0){rr*10temp%10;temp/10;}return dater; }int main() {// 请在此输入您的代码int n,m;cin>>n>>m;int tempfn/100,tempem/100;int yearfn/10000,mon…...
Ubuntu搭建Pytorch环境
Ubuntu搭建Pytorch环境 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Ubuntu搭建Pytorch环境前言一、Anaconda二、Cuda1.安装流程2、环境变量&#…...
