网络编程(师从韩顺平)
文章目录
- 续写前面没有提到的内容
- 自定义线程
- JVM,JDK,JRE
- Java 核心机制-Java 虚拟机 [JVM java virtual machine]
- JDK
- JRE
- JDK、JRE 和 JVM 的包含关系
- Java 技术体系平台
- 网络的相关概念
- 网络通信
- 网络
- Ip 地址
- ipv4 地址分类
- 域名
- 网络通信协议
- TCP 和 UDP
- InetAddress 类
- 相关方法
- 应用案例
- Socket
- 基本介绍
- 示意图:
- TCP 网络通信编程
- 基本介绍
- 应用案例 1(使用字节流)
- 应用案例 2(使用字节流)
- 应用案例 3(使用字符流)
- 应用案例 4(传图片)
- netstat 指令
- TCP 网络通讯不为人知的秘密
- UDP 网络通信编程
- 基本介绍
- 基本流程
- 应用案例
续写前面没有提到的内容
自定义线程
JVM,JDK,JRE
Java 核心机制-Java 虚拟机 [JVM java virtual machine]
基本介绍
-
JVM 是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器,包含在JDK 中.
-
对于不同的平台,有不同的虚拟机。
-
Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行” [说明]
JDK
- JDK 的全称(Java Development Kit)
Java 开发工具包
JDK = JRE + java 的开发工具 [java, javac,javadoc,javap 等]
- JDK 是提供给 Java 开发人员使用的,其中包含了 java 的开发工具,也包括了 JRE。所以安装了 JDK,就不用在单独安装 JRE 了。
JRE
- JRE(Java Runtime Environment
Java 运行环境)
JRE = JVM + Java 的核心类库[类]
- 包括 Java 虚拟机(JVM Java Virtual Machine)和 Java 程序所需的核心类库等,如果想要运行一个开发好的 Java 程序,计算机中只需要安装 JRE 即可。
JDK、JRE 和 JVM 的包含关系
-
JDK = JRE + 开发工具集(例如 Javac,java 编译工具等)
-
JRE = JVM + Java SE 标准类库(java 核心类库)
-
如果只想运行开发好的 .class 文件 只需要 JRE
Java 技术体系平台
网络的相关概念
网络通信
网络
Ip 地址
IP对于IPV4 4个字节(32位)表示,1个字节的范围是0~255
IPV6 使用128位表示地址 16个字节
ipv4 地址分类
域名
网络通信协议
TCP 和 UDP
InetAddress 类
相关方法
应用案例
编写代码,获取计算机的主机名和 IP 地址相关 API
package 网络编程;import java.net.InetAddress;/*** @Author: 韩如意* @CreateTime: 2025-03-10* @Description: no* @Version: 1.0*/public class demo01 {public static void main(String[] args) throws Exception {//1. 获取本机 InetAddress 对象 getLocalHostInetAddress localHost = InetAddress.getLocalHost();System.out.println(localHost); //DESKTOP-71GCG5L/192.168.43.185//2. 根据指定主机名/域名获取 ip 地址对象 getByNameInetAddress host2 = InetAddress.getByName("DESKTOP-71GCG5L");System.out.println(host2); //DESKTOP-71GCG5L/192.168.43.185//3. 根据域名返回InetAddress对象InetAddress host3 = InetAddress.getByName("www.baidu.com");System.out.println(host3); //www.baidu.com/153.3.238.28//4. 获取 InetAddress 对象的主机名 getHostNameString host3Name = host3.getHostName();System.out.println(host3Name); //www.baidu.com//5. 获取 InetAddress 对象的地址 getHostAddressString host3Address = host3.getHostAddress();System.out.println(host3Address); //153.3.238.28}
}
Socket
基本介绍
示意图:
TCP 网络通信编程
基本介绍
应用案例 1(使用字节流)
缓冲流(带Buffer)的一定要调用flush才能把数据写进去
SocketTCP01Server.java 服务端
package 网络编程;import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;/*** @Author: 韩如意* @CreateTime: 2025-03-10* @Description: 服务端* @Version: 1.0*/public class SocketTCP01Server {public static void main(String[] args) throws IOException {
//思路
//1. 在本机 的 9999 端口监听, 等待连接
// 细节: 要求在本机没有其它服务在监听 9999
// 细节:这个 ServerSocket 可以通过 accept() 返回多个 Socket[多个客户端连接服务器的并发]ServerSocket serverSocket = new ServerSocket(9999);System.out.println("服务端,在 9999 端口监听,等待连接..");
//2. 当没有客户端连接 9999 端口时,程序会 阻塞, 等待连接
// 如果有客户端连接,则会返回 Socket 对象,程序继续Socket socket = serverSocket.accept();System.out.println("服务端 socket =" + socket.getClass());
//
//3. 通过 socket.getInputStream() 读取客户端写入到数据通道的数据, 显示InputStream inputStream = socket.getInputStream();
//4. IO 读取byte[] buf = new byte[1024];int readLen = 0;while ((readLen = inputStream.read(buf)) != -1) {System.out.println(new String(buf, 0, readLen));//根据读取到的实际长度,显示内容. }}//5.关闭流和 socketinputStream.close();socket.close();serverSocket.close();//关闭}
}
SocketTCP01Client.java 客户端
package 网络编程;import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;/*** @Author: 韩如意* @CreateTime: 2025-03-10* @Description: 客户端,发送 "hello, server" 给服务端* @Version: 1.0*/public class SocketTCP01Client {public static void main(String[] args) throws IOException {
//思路
//1. 连接服务端 (ip , 端口)
//解读: 连接本机的 9999 端口, 如果连接成功,返回 Socket 对象Socket socket = new Socket(InetAddress.getLocalHost(), 9999);System.out.println("客户端 socket 返回=" + socket.getClass());
//2. 连接上后,生成 Socket, 通过 socket.getOutputStream()
// 得到 和 socket 对象关联的输出流对象OutputStream outputStream = socket.getOutputStream();
//3. 通过输出流,写入数据到 数据通道outputStream.write("hello, server".getBytes());
//4. 关闭流对象和 socket, 必须关闭outputStream.close();socket.close();System.out.println("客户端退出.....");}}
应用案例 2(使用字节流)
注意:写入结束标记。socket.shutdownOutput(); 用于输出流的结束标记
writer.newLine() 也可以是一个结束标记,但是要求对方使用readLine()才算
服务端代码
package 网络编程.作业;import com.sun.corba.se.spi.activation.Server;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;/*** @Author: 韩如意* @CreateTime: 2025-03-10* @Description: 服务端* @Version: 1.0*/public class demo01 {public static void main(String[] args) throws IOException {ServerSocket serverSocket = new ServerSocket(9999);System.out.println("服务端监听,等待连接");Socket socket = serverSocket.accept();System.out.println("socket 的运行类型"+ socket.getClass());InputStream inputStream = socket.getInputStream();OutputStream outputStream = socket.getOutputStream();outputStream.write("hello,server".getBytes());socket.shutdownOutput();byte[] buffer = new byte[1024];int len;while((len=inputStream.read(buffer) )!= -1) {System.out.println(new String(buffer,0,len));}inputStream.close();outputStream.close();socket.close();serverSocket.close();System.out.println("服务端退出");}
}
客户端代码
package 网络编程.作业;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;/*** @Author: 韩如意* @CreateTime: 2025-03-10* @Description: 客户端* @Version: 1.0*/public class demo02 {public static void main(String[] args) throws IOException {Socket socket = new Socket(InetAddress.getLocalHost(), 9999);System.out.println("连接上了"+socket.getClass());OutputStream outputStream = socket.getOutputStream();InputStream inputStream = socket.getInputStream();outputStream.write("hello,client".getBytes());socket.shutdownOutput();byte[] buffer = new byte[1024];int len = 0;while ((len=inputStream.read(buffer))!=-1){System.out.println(new String(buffer,0,len));}inputStream.close();outputStream.close();socket.close();System.out.println("客户端退出!");}
}
应用案例 3(使用字符流)
客户端
package 网络编程.作业;import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;/*** @Author: 韩如意* @CreateTime: 2025-03-10* @Description: no* @Version: 1.0*/public class demo04Client {public static void main(String[] args) throws IOException {Socket socket = new Socket(InetAddress.getLocalHost(), 9999);System.out.println("客户端连接上了。。。socket的运行类型是" + socket.getClass());InputStream inputStream = socket.getInputStream();OutputStream outputStream = socket.getOutputStream();BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));bufferedWriter.write("hello,server");
// bufferedWriter.newLine(); 这个也表示写入数据结束bufferedWriter.flush();BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));socket.shutdownOutput();String line;while ((line = bufferedReader.readLine()) != null) {System.out.println(line);}socket.close();bufferedWriter.close();bufferedReader.close();}
}
服务端
package 网络编程.作业;import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;/*** @Author: 韩如意* @CreateTime: 2025-03-10* @Description: no* @Version: 1.0*/public class demo03Sever {public static void main(String[] args) throws IOException {ServerSocket severSocket = new ServerSocket(9999);System.out.println("客户端监听,等待连接");Socket socket = severSocket.accept();System.out.println("socket的运行类型");InputStream inputStream = socket.getInputStream();socket.getOutputStream();OutputStream outputStream = socket.getOutputStream();BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));bufferedWriter.write("hello,client");bufferedWriter.flush(); //一定要刷新,否则内容写不进去,报错socket.shutdownOutput();String line = null;while ((line = bufferedReader.readLine()) != null) {System.out.println(line);}bufferedReader.close();bufferedWriter.close();socket.close();severSocket.close();}
}
应用案例 4(传图片)
服务端
package 网络编程.作业;import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;/*** @Author: 韩如意* @CreateTime: 2025-03-10* @Description: no* @Version: 1.0*/public class demo05Sever {public static void main(String[] args) throws IOException {ServerSocket serverSocket = new ServerSocket(8888);System.out.println("客户端开始监听了,等待连接。。。");Socket socket = serverSocket.accept();BufferedInputStream bufferedInputStream = new BufferedInputStream(socket.getInputStream());String path = "C:\\Users\\user\\Desktop\\Java\\File\\bom01.png";BufferedOutputStream bufferedOutputStream1 = new BufferedOutputStream(new FileOutputStream(path));byte[] bytes = new byte[1024];int len = 0;while ((len = bufferedInputStream.read(bytes)) != -1) {bufferedOutputStream1.write(bytes, 0, len);}bufferedOutputStream1.flush();BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));bufferedWriter.write("收到图片");bufferedWriter.flush();socket.shutdownOutput();bufferedWriter.close();bufferedInputStream.close();bufferedOutputStream1.close();socket.close();serverSocket.close();}
}
客户端
package 网络编程.作业;import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;/*** @Author: 韩如意* @CreateTime: 2025-03-10* @Description: no* @Version: 1.0*/public class demo06Client {public static void main(String[] args) throws IOException {Socket socket = new Socket(InetAddress.getLocalHost(), 8888);System.out.println(socket.getClass());String path = "C:\\Users\\user\\Desktop\\Java\\图片\\bom01.png";BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(path));byte[] buff = new byte[1024];BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(socket.getOutputStream());int len = 0;while (((len=bufferedInputStream.read(buff)))!=-1){bufferedOutputStream.write(buff,0,len);}bufferedOutputStream.flush();socket.shutdownOutput();BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));String line = null;while ((line = bufferedReader.readLine()) != null) {System.out.println(line);}bufferedReader.close();bufferedOutputStream.close();socket.close();bufferedInputStream.close();}
}
netstat 指令
TCP 网络通讯不为人知的秘密
UDP 网络通信编程
基本介绍
基本流程
应用案例
UDP接收端
package 网络编程.UDP;import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;/*** @Author: 韩如意* @CreateTime: 2025-03-11* @Description: UDP接收端* @Version: 1.0*/public class UDPReceiverA {public static void main(String[] args) throws IOException {
//1. 创建一个 DatagramSocket 对象,准备在 9999 接收数据DatagramSocket socket = new DatagramSocket(9999);
//2. 构建一个 DatagramPacket 对象,准备接收数据
// 在前面讲解 UDP 协议时,老师说过一个数据包最大 64kbyte[] buf = new byte[1024];DatagramPacket packet = new DatagramPacket(buf, buf.length);
//3. 调用 接收方法, 将通过网络传输的 DatagramPacket 对象
// 填充到 packet 对象
//老师提示: 当有数据包发送到 本机的 9999 端口时,就会接收到数据
// 如果没有数据包发送到 本机的 9999 端口, 就会阻塞等待.System.out.println("接收端 A 等待接收数据..");socket.receive(packet);
//4. 可以把 packet 进行拆包,取出数据,并显示.int length = packet.getLength();//实际接收到的数据字节长度byte[] data = packet.getData();//接收到数据String s = new String(data, 0, length);System.out.println(s);
//===回复信息给 B 端
//将需要发送的数据,封装到 DatagramPacket 对象data = "好的, 明天见".getBytes();
//说明: 封装的 DatagramPacket 对象 data 内容字节数组 , data.length , 主机(IP) , 端口packet = new DatagramPacket(data, data.length, InetAddress.getByName("192.168.248.1"), 9998);socket.send(packet);//发送
//5. 关闭资源socket.close();System.out.println("A 端退出...");}
}
发送端 B ====> 也可以接收数据
package 网络编程.UDP;import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;/*** @Author: 韩如意* @CreateTime: 2025-03-11* @Description: 发送端 B ====> 也可以接收数据* @Version: 1.0*/public class UDPSenderB {public static void main(String[] args) throws IOException {
//1.创建 DatagramSocket 对象,准备在 9998 端口 接收数据DatagramSocket socket = new DatagramSocket(9998);
//2. 将需要发送的数据,封装到 DatagramPacket 对象byte[] data = "hello 明天吃火锅~".getBytes(); //
//说明: 封装的 DatagramPacket 对象 data 内容字节数组 , data.length , 主机(IP) , 端口DatagramPacket packet =new DatagramPacket(data, data.length, InetAddress.getByName("192.168.248.1"), 9999);socket.send(packet);
//3.=== 接收从 A 端回复的信息
//(1) 构建一个 DatagramPacket 对象,准备接收数据
// 在前面讲解 UDP 协议时,老师说过一个数据包最大 64kbyte[] buf = new byte[1024];packet = new DatagramPacket(buf, buf.length);
//(2) 调用 接收方法, 将通过网络传输的 DatagramPacket 对象
// 填充到 packet 对象
//老师提示: 当有数据包发送到 本机的 9998 端口时,就会接收到数据
// 如果没有数据包发送到 本机的 9998 端口, 就会阻塞等待. ssocket.receive(packet);
//(3) 可以把 packet 进行拆包,取出数据,并显示.int length = packet.getLength();//实际接收到的数据字节长度data = packet.getData();//接收到数据String s = new String(data, 0, length);System.out.println(s);
//关闭资源socket.close();System.out.println("B 端退出");}
}
相关文章:
网络编程(师从韩顺平)
文章目录 续写前面没有提到的内容自定义线程JVM,JDK,JREJava 核心机制-Java 虚拟机 [JVM java virtual machine]JDKJREJDK、JRE 和 JVM 的包含关系 Java 技术体系平台 网络的相关概念网络通信网络Ip 地址ipv4 地址分类域名网络通信协议TCP 和 UDP InetAddress 类相关方法应用案…...
HTML嵌入CSS样式超详解(尊享)
一、行内样式(Inline CSS) 1. 定义与语法 行内样式是直接在HTML标签中使用style属性来定义样式。这种方式只对当前标签生效。 <tagname style"css 样式">2. 示例 <p style"color: red; font-size: 14px;">这是一个红…...
AI开源竞赛与硬件革命:2025年3月科技热点全景解读——阿里、腾讯领跑开源,英特尔、台积电重塑算力格局
目录 开源生态:阿里与腾讯的“技术对决” 1. 阿里云QwQ-32B:小参数撬动大性能的技术革命 2. 腾讯混元:视频创作的普惠化尝试 AI硬件与算力:全球供应链的“新战场” 1. 英特尔商用AI PC:端侧算力突围 2. 台积电千…...
无头浏览器与请求签名技术-Cloudflare防护
在实际数据采集实践中,许多目标网站(例如 Amazon)都会采用 Cloudflare 等防护措施,防止机器人和非正常流量。本文将分享一个故障场景下的排查与改进方案,讲述如何利用无头浏览器、请求签名技术以及爬虫代理 IP来实现数…...
6.聊天室环境安装 - Ubuntu22.04 - elasticsearch(es)的安装和使用
目录 介绍安装安装kibana安装ES客户端使用 介绍 Elasticsearch, 简称 ES,它是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,res…...
【NexLM 开源系列】让 AI 聊天更丝滑:SSE 实现流式对话!
🌟 在这系列文章中,我们将一起探索如何搭建一个支持大模型集成项目 NexLM 的开发过程,从 架构设计 到 代码实战,逐步搭建一个支持 多种大模型(GPT-4、DeepSeek 等) 的 一站式大模型集成与管理平台ÿ…...
具备多种功能的PDF文件处理工具
软件介绍 在日常办公和学习场景中,PDF文件使用极为频繁,而一款功能强大的PDF编辑软件能大幅提升处理效率。 今天要介绍的Adobe Acrobat Pro DC 2024.005.20414,就具备像编辑Word文档一样便捷编辑PDF的能力。 PDF文档在学习和工作中广泛应用…...
electron+vue+webview内嵌网页并注入js
vue内嵌网页可以使用iframe实现内嵌网页,但是只能通过postMessage间接通信,在electron环境下,vue可以直接使用webview来内嵌网页,支持 executeJavaScript、postMessage、send 等丰富的通信机制。 使用 webview的优势 性能更佳&…...
机器学习常见面试题
常见基模型 1. 线性模型(Linear Models) 特点:通过线性组合特征进行预测,适合处理线性关系。常见类型: 线性回归(Linear Regression)逻辑回归(Logistic Regression)岭回…...
单片机OTA升级中Bootloader怎么判断APP有没有问题?
没开发过OTA的工程师,职业生涯是不完整的。因为它能让设备远程更新功能,太方便了,产品有了这个功能,再也不会跟硬件工程师一起背锅了。 不过,新手玩OTA,搞不好,也会翻车,比如下载过程…...
《OpenCV》—— dlib(换脸操作)
文章目录 dlib换脸介绍仿射变换在 dlib 换脸中的应用 换脸操作 dlib换脸介绍 dlib 换脸是基于 dlib 库实现的一种人脸替换技术,以下是关于它的详细介绍: 原理 人脸检测:dlib 库中包含先进的人脸检测器,如基于 HOG(方向…...
从零开始实现大语言模型(十三):预训练大语言模型GPTModel
1. 前言 使用梯度下降算法通过下一个token预测任务预训练大语言模型GPTModel,前向传播流程每次会输入一个batch的长度均为context_len的训练样本,执行 batch_size context_len \text{batch\_size}\times\text{context\_len} batch_sizecontext_len次下…...
[C++面试] 对通透比较器了解多少?(较少涉及,可跳过)
一、入门 1、什么是比较器 在 C 中,比较器是一个可调用对象(函数、函数对象或 Lambda 表达式),用于定义元素之间的比较规则。 用途:通常作为参数传递给标准库中的排序函数或关联容器,以指定元素的顺序。…...
【高分论文密码】AI大模型和R语言的全类型科研图形绘制,从画图、标注、改图、美化、组合、排序分解科研绘图每个步骤
在科研成果竞争日益激烈的当下,「一图胜千言」已成为高水平SCI期刊的硬性门槛——数据显示很多情况的拒稿与图表质量直接相关。科研人员普遍面临的工具效率低、设计规范缺失、多维数据呈现难等痛点,因此科研绘图已成为成果撰写中的至关重要的一个环节&am…...
el-input-number添加自定义内容class-unit
在el-input,el-input-number中有需要在输入框后面添加单位的需求,这时候就需要用到class-unit <el-input-number size"small" class-unit"%" class"inputNumberClass"></el-input-number>// css .inputNumberClass[clas…...
MYSQL学习笔记(十一):MYSQL数据类型讲解
前言: 学习和使用数据库可以说是程序员必须具备能力,这里将更新关于MYSQL的使用讲解,大概应该会更新30篇,涵盖入门、进阶、高级(一些原理分析);这一篇数据类型,比较多,但是我感觉了解即可,ai时…...
【数据分享】1999—2023年我国地级市社会消费品零售总额和年末金融机构存贷款余额(Shp/Excel格式)
在之前的文章中,我们分享过基于2000-2024年《中国城市统计年鉴》整理的1999-2023年地级市的人口相关数据、染物排放和环境治理相关数据和房地产投资情况和商品房销售面积相关指标数据(均可查看之前的文章获悉详情)! 本次我们分享…...
使用 MyBatis-Plus 实现数据库的多租户管理
在现代 SaaS(软件即服务)应用中,多租户架构是一种常见的设计模式。它允许多个租户共享同一个应用实例,同时确保每个租户的数据相互隔离。MyBatis-Plus 提供了强大的多租户支持,能够帮助开发者轻松实现多租户管理。本文…...
大语言模型学习--向量数据库基础知识
1.向量 向量是多维数据空间中的一个坐标点。 向量类型 图像向量 文本向量 语音向量 Embedding 非结构化数据转换为向量过程 通过深度学习训练,将真实世界离散数据,投影到高维数据空间上,通过数据在空间中间的距离体现真实世界的相似度 V…...
计算机三级网络技术备考(5)
第七章:路由器及其配置 考点1:路由器概述及其工作原理 考点2:路由器工作模式及基础配置 考点3:路由器的接口配置 【sdh 0 2 sonet 0】 考点4:路由器的路由配置 考点5:路由器DHCP配置 考点6:…...
Java关键字与标识符
Java关键字是预定义的保留字,用于定义程序结构和语义,如if、for、class等,不能用作标识符。JDK 8有50个关键字,JDK 11引入var用于局部变量类型推断。标识符用于命名变量、类等,由字母、数字、_、$组成,不能…...
生活小妙招之UE ViewPortUV-SceneTextureUV
后处理材质customNode中写SceneTextureLookup遇到了一些问题,做做记录 比如要在custom中写一个普通的镜像模糊,脑子都不带转的上来就直接这么写了,像是顺理成章的就应该这么写,并且网上随便搜UE咋写镜像模糊估计都是这样式的。 但…...
FB投广探秘:为何Facebook广告账户不消耗
在Facebook上投放广告时,您是否遇到过这种情况:广告创建完成后却发现账户没消耗,广告没跑出去?为什么会遇到这种情况?小编将结合最新行业动态,为你解析广告为何无消耗。 一、原因解析 1、账户余额不足 最直接的原因往往最容易被忽视。若…...
亚信安全发布第七期《勒索家族和勒索事件监控报告》
本周态势快速感知 本周全球共监测到勒索事件121起,与上周相比,勒索事件数量大幅下降,仍需注意防范。从整体上看Clop是影响最严重的勒索家族;本周Ransomhub和Akira也是活动频繁的两个恶意家族,需要注意防范。本周&…...
flask实现mvc模式
Flask 默认是一个轻量级框架,并不强制使用 MVC 模式,但我们可以按照 MVC 结构来组织代码,使项目更加清晰和可维护。 Flask 实现 MVC 模式 Flask 本身并没有严格的 Controller 层,但我们可以通过 视图函数(View Functi…...
基于LabVIEW的脚本化子VI动态生成
该示例展示了一种利用LabVIEW VI脚本(VI Scripting)技术,通过程序化方式动态生成并替换子VI的解决方案。核心逻辑为:基于预定义的模板VI,根据用户选择的数学操作(加法或乘法),自动生…...
Linux 网络:skb 数据管理
文章目录 1. 前言2. skb 数据管理2.1 初始化2.2 数据的插入2.2.1 在头部插入数据2.2.2 在尾部插入数据 2.2 数据的移除 3. 小结 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. skb 数据管理 数…...
golang坐标转换 gomap3d库
gomap3d Go语言实现的多坐标系转换库,支持天文学/航天领域常用坐标系转换 基础算子支持c gomap3d 特性 支持5种坐标系互转: 站心坐标系 (AER)东北天坐标系 (ENU)地心地固坐标系 (ECEF)地心惯性坐标系 (ECI)大地坐标系 (LLA) 支持多种参考椭球体&#…...
电脑的常见问题的原因+解决方法
电脑常见问题涵盖软件和硬件两方面,以下是一些常见问题及解决方法: 软件问题 系统运行缓慢 原因:可能是开机启动项过多、系统垃圾文件堆积、病毒或恶意软件入侵、硬件驱动不兼容等。解决方法:利用系统自带的任务管理器或第三方软…...
JavaScript性能优化实战:从8s到0.8s的极致提升
摘要:页面卡顿、内存泄漏、CPU爆满?本文通过6个真实场景+可运行代码示例,手把手教你掌握JS性能优化核心技术!涵盖防抖节流、虚拟滚动、Web Workers、内存泄漏排查等高频痛点解决方案,最后提供Chrome性能分析工具实战指南,助你打造丝滑的Web应用! 一、性…...
英语学习(GitHub学到的分享)
【英语语法:https://github.com/hzpt-inet-club/english-note】 【离谱的英语学习指南:https://github.com/byoungd/English-level-up-tips/tree/master】 【很喜欢文中的一句话:如果我轻轻松松的学习,生活的幸福指数会提高很多…...
OTP单片机调试工具之—应广单片机ADC调试案例
上一篇文章说到了‘OTP单片机调试工具’的大概使用方法,现在做一个案例来说明情况。 这个案例是使用应广单片机ADC对可调电阻中间抽头电压值进行采样,分别用12bit和8bit进行显示,使用vdd做参考,采样数据没有进行滤波,通…...
Java基础关键_020_集合(四)
目 录 一、Set 集合 二、Map 集合 1.概览 2.说明 3.HashMap 说明 4.LinkedHashMap 说明 5.TreeMap 说明 6.Hashtable 说明 7.Properties 说明 三、Map 接口常用方法 1.put(K key, V value) 和 putAll(Map m) 2.get(Object key) 3.clear() 和 size() 4.contains…...
电商数据分析 电商平台销售数据分析 电商平台数据库设计 揭秘电商怎么做数据分析
《电商参谋数据分析平台方案》(28页PPT)是一套为电商行业量身定制的一体化解决方案,它通过全链路打通从数据获取到分析的全过程,帮助电商企业实现精细化运营和市场机会的挖掘。该方案针对电商行业在数据获取、加工整合及业务赋能方…...
Hugging Face的Transformers核心模块:Pipelines(参数说明,各种模型类型调用案例)
如果电脑配置不够可以参考文章《学AI-撸羊毛-免费GPU服务器-kaggle-每周30小时-可以进行数据训练,大模型微调》 申请免费服务器执行代码。 什么是Pipelines 将数据预处理、模型调用、结果后处理三部分组装成的流水线使我们能够直接输入文本便获得最终的答案 Pipeli…...
ChatGPT辅助学术写作有哪些挑战?怎么解决?
宝子们毕业之前需要完成的学术论文往往是学生时代最后一项挑战。无论宝子们对此过程多么熟悉,每次着手写新论文时,似乎都需重新规划、从头开始。 值得庆幸的是,借助ChatGPT、DeepSeek这些工具能够为论文旅程提供有力支持。ChatGPT作为备受推崇…...
【MySQL是怎么运行的】二、索引
引擎层有支持索引,如InnoDB和MyISAM,区别就是InnoDB支持事务、外键和行锁 索引物理结构 页:一页16KB,一页包含了多行记录 行:包含元数据和真实数据 元数据: record_type(记录的类型ÿ…...
MySQL中有哪些索引
1,B-Tree索引:常见的索引类型 2,哈希索引:基于哈希表实现,只支持等值查询 ,只有Memory存储引擎和NDB Cluster存储引擎显示支持哈希索引 3,全文索引:可在字符列上创建(T…...
Node.js中HTTPS模块应用详解
1. HTTPS 模块的概念 HTTPS(Hypertext Transfer Protocol Secure)是 HTTP 的安全版本,通过 SSL/TLS 协议对数据进行加密,确保数据在传输过程中不被窃取或篡改。在 Node.js 中,https 模块提供了创建 HTTPS 服务器和客户…...
facebook游戏投广:提高广告关键数据的方法
在当今竞争激烈的数字营销领域,游戏广告的投放效果直接关系到游戏公司的市场表现和盈利能力。然而,许多游戏公司在广告投放上面临着诸多挑战,如高昂的成本、低效的转化率以及难以追踪的效果。那么,如何才能通过数据分析真正提升游…...
每天五分钟深度学习框架PyTorch:ResNet算法模型完成CAFIR十分类
本文重点 ResNet模型已经搭建完成了,本文我们使用ResNet来跑一下CAFIR10的数据集,看一下分类效果如何? 代码 本文总结 在之前的课程中我们对残差块以及ResNet模型进行了详细的介绍,并且我们对模型训练这些基础的数据集进行了详…...
Python中很常用的100个函数整理
Python 内置函数提供了强大的工具,涵盖数据处理、数学运算、迭代控制、类型转换等。本文总结了 100 个常用内置函数,并配备示例代码,提高编程效率。 1. abs() 取绝对值 print(abs(-10)) # 10 2. all() 判断所有元素是否为真 print(all([…...
nginx与openSSL版本不兼容问题
本人先前使用的nginx-version为1.18.0,openSSL-version为3.0.2; 在源码的安装configure过程中,出现以下报错 error: ‘ENGINE_free’ is deprecated: Since OpenSSL 3.0 [-Werrordeprecated-declarations]734 | ENGINE_free(en…...
【RabbitMQ】事务
事务的简单配置及使用 配置事务管理器声明队列生产者代码测试 RabbitMQ是基于AMQP协议实现的,该协议实现了事务机制,因此RabbitMQ也支持事务机制. SpringAMQP也提供了对事务相关的操作.RabbitMQ事务允许开发者确保消息的发送和接收是原子性的,…...
【C#学习笔记03】进制转换与反码、补码、原码
1. 进制转换 计算机中的数据通常以二进制形式存储,但在编程和调试过程中,我们经常需要与十进制、八进制和十六进制打交道。因此,掌握进制转换是C语言学习中的重要一环。 1.1 进制的基本概念 二进制(Binary)ÿ…...
线性搜索算法
何时使用线性搜索算法? 当处理一个小数据集时。当搜索存储在连续内存中的数据集时。 线性搜索算法在什么情况下优于其他搜索算法? 当列表或数组未排序时,或者当输入的大小相对较小时,首选线性搜索算法。它易于实现,并…...
基于深度文档理解的开源 RAG 引擎RAGFlow的介绍和安装
目录 前言1. RAGFlow 简介1.1 什么是 RAGFlow?1.2 RAGFlow 的核心特点 2. RAGFlow 的安装与配置2.1 硬件与软件要求2.2 下载 RAGFlow 源码2.3 源码编译 Docker 镜像2.4 设置完整版(包含 embedding 模型)2.5 运行 RAGFlow 3. RAGFlow 的应用场…...
蓝桥杯—走迷宫(BFS算法)
题目描述 给定一个NM 的网格迷宫 G。G 的每个格子要么是道路,要么是障碍物(道路用 11表示,障碍物用 0 表示)。 已知迷宫的入口位置为 (x1,y1),出口位置为 (x2,y2)。问从入口走到出口,最少要走多少…...
基于云函数的自习室预约微信小程序+LW示例参考
全阶段全种类学习资源,内涵少儿、小学、初中、高中、大学、专升本、考研、四六级、建造师、法考、网赚技巧、毕业设计等,持续更新~ 文章目录 [TOC](文章目录) 1.项目介绍2.项目部署3.项目部分截图4.获取方式 1.项目介绍 技术栈工具:云数据库…...
Flutter 学习之旅 之 flutter 不使用插件,实现简单带加载动画的 LoadingToast 功能
Flutter 学习之旅 之 flutter 不使用插件,实现简单带加载动画的 LoadingToast 功能 目录 Flutter 学习之旅 之 flutter 不使用插件,实现简单带加载动画的 LoadingToast 功能 一、简单介绍 二、LoadingToast 三、简单案例实现 四、关键代码 一、简单…...