Day19-【Java SE进阶】网络编程

一、网络编程

1.概述
  • 可以让设备中的程序与网络上其他设备中的程序进行数据交互(实现网络通信的)。
  • java.net,*包下提供了网络编程的解决方案!

基本的通信架构
基本的通信架构有2种形式:CS架构(Client客户端/Server服务端)、BS架构(Browser浏览器/Server服务端)。

在这里插入图片描述

在这里插入图片描述
网络通信的关键三要素
在这里插入图片描述
IP地址

  • IP(Internet Protocol):全称”互联网协议地址”,是分配给上网设备的唯一标志。
  • IP地址有两种形式:IPV4、IPV6

在这里插入图片描述

  • IPv6:共128位,号称可以为地球每一粒沙子编号。
  • IPV6分成8段表示,每段每四位编码成一个十六进制位表示,数之间用冒号(:)分开。

在这里插入图片描述
IP域名

  • 公网IP:是可以连接互联网的IP地址;内网IP:也叫局域网IP,只能组织机构内部使用。
  • 192.168.开头的就是常见的局域网地址,范围即为192.168.0.0–192.168.255.255,专门为组织机构内部使用。
    在这里插入图片描述

特殊IP地址
127.0.0.1、localhost:代表本机IP,只会寻找当前所在的主机。
IP常用命令:
ipconfig:查看本机IP地址。
ping IP地址:检查网络是否连通。

1.1 InetAddress
  • 代表IP地址。
    -

端口

  • 标记正在计算机设备上运行的应用程序的,被规定为一个16 位的二进制,范围是 0~65535

分类

  • 周知端口:0~1023,被预先定义的知名应用占用(如:HTTP占用 80,FTP占用21)
  • 注册端口:1024~49151,分配给用户进程或某些应用程序。
  • 动态端口:49152到65535,之所以称为动态端口,是因为它 一般不固定分配某种进程,而是动态分配。
  • 注意:我们自己开发的程序一般选择使用注册端口,且一个设备中不能出现两个程序的端口号一样,否则出错。

通信协议

  • 网络上通信的设备,事先规定的连接规则,以及传输数据的规则被称为网络通信协议

开放式网络互联标准:OSI网络参考模型

  • OSI网络参考模型:全球网络互联标准。
  • TCP/IP网络模型:事实上的国际标准。
    在这里插入图片描述
1.2 重要知识点:传输层的2个通信协议
  • UDP(User Datagram Protocol):用户数据报协议;
  • TCP(Transmission ControlProtocol):传输控制协议。

UDP协议

  • 特点:无连接、不可靠通信。
  • 通讯效率高!语音通话 视频直播
  • 不事先建立连接,数据按照包发,一包数据包含:自己的IP、程序端口,目的地IP、程序端口和数据(限制在64KB内)等。
  • 发送方不管对方是否在线,数据在中间丢失也不管,如果接收方收到数据也不返回确认,故是不可靠的。

TCP协议

  • 特点:面向连接、可靠通信。
  • 通信效率相对不高 网页 文件下载 支付
  • TCP的最终目的:要保证在不可靠的信道上实现可靠的传输。
  • TCP主要有三个步骤实现可靠传输:三次握手建立连接,传输数据进行确认,四次挥手断开连接。
  • TCP协议:三次握手建立可靠连接
    • 可靠连接:确定通信双方,收发消息都是正常无问题的!(全双工)
    • 传输数据会进行确认,以保证数据传输的可靠性在这里插入图片描述
  • TCP协议:四次握手断开连接
    • 目的:确保双方数据的收发都已经完成!

在这里插入图片描述

在这里插入图片描述

2. UDP通信-快速入门

UDP通信

  • 特点:无连接、不可靠通信。
  • 不事先建立连接;发送端每次把要发送的数据(限制在64KB内)、接收端IP、等信息封装成一个数据包,发出去就不管了。
  • Java提供了一个java.net.DatagramSocket类来实现UDP通信。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
import java.net.*;public class Client {public static void main(String[] args) throws Exception {//1. 创建客户端对象(发韭菜出去的人)DatagramSocket socket = new DatagramSocket();//2. 创建数据包对象封装要发出去得数据(创建一个韭菜盒子)/* public DatagramPacket(byte buf[], int length,InetAddress address,int port)参数一:封装要发出去的数据。参数二:发送出去的数据大小(字节个数)参数三:服务端的IP地址(找到服务端主机)参数四:服务端程序的端口。*/byte[] bytes = "我是客户端,向您发送数据!".getBytes();DatagramPacket packet = new DatagramPacket(bytes,bytes.length,InetAddress.getLocalHost(),6666);//3. 开始正式发送这个数据包出去了socket.send(packet);System.out.println("客户端数据发送完毕~~~");socket.close();//释放资源!}
}
import java.net.DatagramPacket;
import java.net.DatagramSocket;public class Server {public static void main(String[] args) throws Exception {//1. 创建一个服务端对象(创建一个接韭菜的人) 注册端口DatagramSocket socket = new DatagramSocket(6666);//2. 创建一个数据包对象,用于接收数据的(创建一个韭菜盒子)byte[] buf = new byte[1024 * 64];DatagramPacket packet = new DatagramPacket(buf, buf.length);//3. 开始正式使用数据包来接收客户端发来的数据socket.receive(packet);//4. 从字节数组中,把接收到的数据直接打印出来// 接收多少就倒出多少 获取本次数据包接收了多少数据int len = packet.getLength();String s = new String(buf, 0, len);System.out.println(s);String hostAddress = packet.getAddress().getHostAddress();int port = packet.getPort();System.out.println(hostAddress + ":" + port);socket.close();//释放资源}
}

在这里插入图片描述
在这里插入图片描述
UDP通信 多发多收
edit configures->allow 多开 apply即可躲开client程序的

package com.jingwei;import java.net.*;
import java.util.Scanner;public class Client {public static void main(String[] args) throws Exception {//1. 创建客户端对象(发韭菜出去的人)DatagramSocket socket = new DatagramSocket();//可以分配端口 或者不填写自动分配//2. 创建数据包对象封装要发出去得数据(创建一个韭菜盒子)/* public DatagramPacket(byte buf[], int length,InetAddress address,int port)参数一:封装要发出去的数据。参数二:发送出去的数据大小(字节个数)参数三:服务端的IP地址(找到服务端主机)参数四:服务端程序的端口。*/Scanner sc = new Scanner(System.in);while (true) {System.out.println("请说");String msg = sc.nextLine();if("exit".equals(msg)) {System.out.println("退出成功!");socket.close();break;}byte[] bytes = msg.getBytes();DatagramPacket packet = new DatagramPacket(bytes,bytes.length,InetAddress.getLocalHost(),6666);//3. 开始正式发送这个数据包出去了socket.send(packet);}System.out.println("客户端数据发送完毕~~~");}
}
package com.jingwei;import java.net.DatagramPacket;
import java.net.DatagramSocket;public class Server {public static void main(String[] args) throws Exception {//1. 创建一个服务端对象(创建一个接韭菜的人) 注册端口DatagramSocket socket = new DatagramSocket(6666);//2. 创建一个数据包对象,用于接收数据的(创建一个韭菜盒子)byte[] buf = new byte[1024 * 64];DatagramPacket packet = new DatagramPacket(buf, buf.length);while (true) {//3. 开始正式使用数据包来接收客户端发来的数据socket.receive(packet);//4. 从字节数组中,把接收到的数据直接打印出来// 接收多少就倒出多少 获取本次数据包接收了多少数据int len = packet.getLength();String s = new String(buf, 0, len);System.out.println(s);String hostAddress = packet.getAddress().getHostAddress();int port = packet.getPort();System.out.println(hostAddress + ":" + port);System.out.println("-----------------------");}}
}
3. TCP通信
  • 特点:面向连接、可靠通信。
  • 通信双方事先会采用“三次握手”方式建立可靠连接,实现端到端的通信;底层能保证数据成功传给服务端。
  • Java提供了一个java.net.Socket类来实现TCP通信。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
一发一收

package com.jingwei;import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketAddress;public class SocketClient {public static void main(String[] args) throws IOException {System.out.println("服务端启动成功!");//1. 创建ServerSocket的对象,同时为服务端注册端口。ServerSocket serverSocket = new ServerSocket(8888);//2. 使用ServerSocket对象,调用accept方法,等待客户端的连接请求。Socket socket = serverSocket.accept();//3. 从socket通信管道中得到一个字节输入流InputStream is = socket.getInputStream();//4. 把原始的字节输入流包装成数据输入流DataInputStream dis = new DataInputStream(is);//5. 使用数据输入流读取客户端发送过来的消息String s = dis.readUTF();System.out.println(s);//其实我们也可以获取客户端的IP地址SocketAddress remoteSocketAddress = socket.getRemoteSocketAddress();System.out.println(remoteSocketAddress);dis.close();socket.close();}
}
package com.jingwei;import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;public class SocketServer {public static void main(String[] args) throws IOException {//1. 创建Socket对象,并同时请求与服务器程序的连接。Socket socket = new Socket("127.0.0.1", 8888);//2. 从Socket通信管道中得到一个字节输出流,用来发数据给服务端程序OutputStream os = socket.getOutputStream();//3. 把低级的字节输出流包装成数据输出流DataOutputStream dos = new DataOutputStream(os);//4. 开始写数据出去了dos.writeUTF("在一起好吗?");dos.close();socket.close();//释放连接资源}
}

多发多收

package com.jingwei;import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;public class SocketServer {public static void main(String[] args) throws IOException {//1. 创建Socket对象,并同时请求与服务器程序的连接。Socket socket = new Socket("127.0.0.1", 8888);//2. 从Socket通信管道中得到一个字节输出流,用来发数据给服务端程序OutputStream os = socket.getOutputStream();//3. 把低级的字节输出流包装成数据输出流DataOutputStream dos = new DataOutputStream(os);Scanner sc = new Scanner(System.in);while (true) {System.out.println("请说:");//4. 开始写数据出去了String msg = sc.nextLine();if("exit".equals(msg)){dos.close();socket.close();break;}dos.writeUTF(msg);dos.flush();}//        dos.close();
//
//        socket.close();//释放连接资源}
}
package com.jingwei;import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketAddress;public class SocketClient {public static void main(String[] args) throws IOException {System.out.println("服务端启动成功!");//1. 创建ServerSocket的对象,同时为服务端注册端口。ServerSocket serverSocket = new ServerSocket(8888);//2. 使用ServerSocket对象,调用accept方法,等待客户端的连接请求。Socket socket = serverSocket.accept();//3. 从socket通信管道中得到一个字节输入流InputStream is = socket.getInputStream();//4. 把原始的字节输入流包装成数据输入流DataInputStream dis = new DataInputStream(is);while (true) {//5. 使用数据输入流读取客户端发送过来的消息try {String s = dis.readUTF();System.out.println(s);//其实我们也可以获取客户端的IP地址SocketAddress remoteSocketAddress = socket.getRemoteSocketAddress();System.out.println(remoteSocketAddress);} catch (IOException e) {System.out.println(socket.getRemoteSocketAddress()+"离线了!");dis.close();socket.close();break;}}
//        dis.close();
//        socket.close();}
}

在这里插入图片描述

目前我们开发的服务端程序,是否可以支持与多个客户端同时通信?

  • 不可以的。
  • 因为服务端现在只有一个主线程,只能处理一个客户端的消息,

在这里插入图片描述

package com.jingwei;import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;public class SocketServer {public static void main(String[] args) throws IOException {//1. 创建Socket对象,并同时请求与服务器程序的连接。Socket socket = new Socket("127.0.0.1", 8888);//2. 从Socket通信管道中得到一个字节输出流,用来发数据给服务端程序OutputStream os = socket.getOutputStream();//3. 把低级的字节输出流包装成数据输出流DataOutputStream dos = new DataOutputStream(os);Scanner sc = new Scanner(System.in);while (true) {System.out.println("请说:");//4. 开始写数据出去了String msg = sc.nextLine();if("exit".equals(msg)){dos.close();socket.close();break;}dos.writeUTF(msg);dos.flush();}//        dos.close();
//
//        socket.close();//释放连接资源}
}
package com.jingwei;import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;public class SocketClient {public static void main(String[] args) throws IOException {System.out.println("服务端启动成功!");//1. 创建ServerSocket的对象,同时为服务端注册端口。ServerSocket serverSocket = new ServerSocket(8888);//2. 使用ServerSocket对象,调用accept方法,等待客户端的连接请求。while (true) {Socket socket = serverSocket.accept();System.out.println("有人上线了"+socket.getRemoteSocketAddress());new ServerReaderThread(socket).start();}
//        dis.close();
//        socket.close();}
}
package com.jingwei;import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;public class ServerReaderThread extends Thread{private Socket socket;public ServerReaderThread(Socket socket) {this.socket = socket;}@Overridepublic void run() {try {InputStream inputStream = socket.getInputStream();DataInputStream dataInputStream = new DataInputStream(inputStream);while (true){try {String msg = dataInputStream.readUTF();System.out.println(msg);} catch (IOException e) {System.out.println(socket.getRemoteSocketAddress()+"下线了");dataInputStream.close();socket.close();break;}}} catch (IOException e) {throw new RuntimeException(e);}}
}

TCP通信-综合案例

  • 即时通信-群聊
  • 实现一个简易版的BS架构

题目:要求从浏览器中访问服务器
并立即让服务器响应一个很简单的网页给浏览器展示
网页内容就是“我666”

在这里插入图片描述

注意:服务器必须给浏览器响应HTTP协议规定的数据格式,否则浏览器不识别返回的数据

在这里插入图片描述

package com.jingwei;import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;public class SocketClient {public static void main(String[] args) throws IOException {System.out.println("服务端启动成功!");//1. 创建ServerSocket的对象,同时为服务端注册端口。ServerSocket serverSocket = new ServerSocket(8888);//2. 使用ServerSocket对象,调用accept方法,等待客户端的连接请求。while (true) {Socket socket = serverSocket.accept();System.out.println("有人上线了"+socket.getRemoteSocketAddress());
//            new ServerReaderThread(socket).start();new ServerWriterThread(socket).start();}
//        dis.close();
//        socket.close();}
}
package com.jingwei;import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;public class ServerWriterThread extends Thread {private Socket socket;public ServerWriterThread(Socket socket) {this.socket = socket;}@Overridepublic void run() {try {OutputStream outputStream = socket.getOutputStream();PrintStream printStream = new PrintStream(outputStream);printStream.println("Http/1.1 200 OK");printStream.println("Content-Type: text/html;charset=utf-8");printStream.println();printStream.println("<!DOCTYPE html>");printStream.println("<html>");printStream.println("<head>");printStream.println("<title>Server Writer</title>");printStream.println("</head>");printStream.println("<body>");printStream.println("<h1>Server Writer</h1>");printStream.println("</body>");printStream.println("</html>");printStream.flush();printStream.close();socket.close();} catch (IOException e) {throw new RuntimeException(e);}}}

拓展知识
每次请求都开一个新线程,到底好不好?
高并发时,容易宕机!

在这里插入图片描述

package com.day19;import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.*;public class SocketClient {public static void main(String[] args) throws IOException {System.out.println("服务端启动成功!");//1. 创建ServerSocket的对象,同时为服务端注册端口。ServerSocket serverSocket = new ServerSocket(8888);//创建出一个线程池,负责处理通信管道的任务ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(20 * 2, 20 * 2, 0, TimeUnit.SECONDS,new ArrayBlockingQueue<>(8), Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());//2. 使用ServerSocket对象,调用accept方法,等待客户端的连接请求。while (true) {Socket socket = serverSocket.accept();System.out.println("有人上线了"+socket.getRemoteSocketAddress());
//            new ServerReaderThread(socket).start();//3、把这个客户端对应的socket通信管道,交给一个独立的线程负责处理。threadPoolExecutor.execute(new ServerWriterRunnable(socket));}
//        dis.close();
//        socket.close();}
}
package com.day19;import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;public class ServerWriterRunnable implements Runnable {private Socket socket;public ServerWriterRunnable(Socket socket) {this.socket = socket;}@Overridepublic void run() {try {OutputStream outputStream = socket.getOutputStream();PrintStream printStream = new PrintStream(outputStream);printStream.println("Http/1.1 200 OK");printStream.println("Content-Type: text/html;charset=utf-8");printStream.println();printStream.println("<!DOCTYPE html>");printStream.println("<html>");printStream.println("<head>");printStream.println("<title>Server Writer</title>");printStream.println("</head>");printStream.println("<body>");printStream.println("<h1>Server Writer</h1>");printStream.println("</body>");printStream.println("</html>");printStream.flush();printStream.close();socket.close();} catch (IOException e) {throw new RuntimeException(e);}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/308075.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

测试开发场景问题,购物车测试场景

功能测试&#xff1a; a. 验证能否成功将商品添加到购物车。 b. 验证能否成功从购物车中移除商品。 c. 更新购物车中商品数量&#xff1a; d. 测试目标&#xff1a;验证能否成功更新购物车中商品的数量。 e. 验证能否成功清空购物车中的所有商品。 f. 验证能否成功结算购物车中…

视频批量高效剪辑,支持将视频文件转换为音频文件,轻松掌握视频格式

在数字化时代&#xff0c;视频内容日益丰富&#xff0c;管理和编辑这些视频变得愈发重要。然而&#xff0c;传统的视频剪辑软件往往操作复杂&#xff0c;难以满足高效批量处理的需求。现在&#xff0c;一款全新的视频批量剪辑神器应运而生&#xff0c;它支持将视频文件一键转换…

【fastapi】搭建第一个fastapi后端项目

本篇文章介绍一下fastapi后端项目的搭建。其实没有什么好说的&#xff0c;按照官方教程来即可&#xff1a;https://fastapi.tiangolo.com/zh/ 安装依赖 这也是我觉得python项目的槽点之一。所有依赖都安装在本地&#xff0c;一旦在别人电脑上编写项目就又要安装一遍。很扯淡。…

【CTF】ciscn_2019_n_1和pwn1_sctf_2016--栈溢出

ciscn_2019_n_1和pwn1_sctf_2016–栈溢出 ciscn_2019_n_1 解题思路 下载样本到本地 使用file和checksec查看文件内容&#xff0c;文件为64位ELF&#xff0c;只开启了NX保护&#xff0c;NX即No-eXecute&#xff08;不可执行&#xff09; 使用IDA进行反编译 在main函数中调用了f…

蓝桥杯基础18——第13届省赛真题与代码详解

目录 0.心得体会 1.题目如下 2.代码实现的思路 键值扫描 数码管窗口切换 数码管的动态扫描 继电器工作时L3闪烁&#xff0c;整点时刻L1灯光亮5秒 3.变量列表 定义的常量和数组 功能控制和状态变量 定时器和计数变量 4.代码参考 4.1 头文件 onewire.h ds1302.h 4…

C++高级特性:万能引用、引用折叠与完美转发(七)

1、万能引用与引用折叠 1.1、普通引用 之前的学习中学习了左值、右值、左值引用、右值引用、常引用等&#xff0c;但是很可惜它们都必须搭配固定的类型导致它们受到一些限制 void test1() {int a 1, b 2;int& left_ref_var a; // int&& right_ref_var a; …

[MAUI]集成富文本编辑器Editor.js至.NET MAUI Blazor项目

文章目录 获取资源从源码构建从CDN获取获取扩展插件 创建项目创建控件创建Blazor组件初始化保存销毁编写渲染逻辑 实现只读/编辑功能切换模式获取只读模式状态响应切换事件 实现明/暗主题切换项目地址 Editor.js 是一个基于 Web 的所见即所得富文本编辑器&#xff0c;它由CodeX…

自定义滚动条样式:前端实现跨浏览器兼容

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

【核心完整复现】基于目标级联法的微网群多主体分布式优化调度

1 主要内容 之前发布了华电学报的复现程序《基于目标级联法的微网群多主体分布式优化调度》&#xff0c;具体链接为【防骗版】基于目标级联法的微网群多主体分布式优化调度&#xff0c;虽然对模型及结果进行了复现&#xff0c;但是部分模型细节和参数并没有完全实现&#xff0…

MySQL单行函数

文章目录 数值函数基本函数角度与弧度互换函数三角函数指数与对数进制间的转换 字符串函数日期和时间函数获取日期、时间日期与时间戳的转换获取月份、星期、星期数、天数等函数日期的操作函数时间和秒钟转换的函数计算日期和时间的函数日期的格式化与解析 流程控制函数加密与解…

DonkeyDocker-v1-0渗透思路

MY_BLOG https://xyaxxya.github.io/2024/04/13/DonkeyDocker-v1-0%E6%B8%97%E9%80%8F%E6%80%9D%E8%B7%AF/ date: 2024-04-13 19:15:10 tags: 内网渗透Dockerfile categories: 内网渗透vulnhub 靶机下载地址 https://www.vulnhub.com/entry/donkeydocker-1,189/ 靶机IP&a…

elasticSearch从零整合springboot项目实操

type会被弃用 &#xff0c;就是说之后的elasticSearch中只会存在 索引&#xff08;indices&#xff09; 和 一行&#xff08;document&#xff09; 和字段&#xff08;fields&#xff09; elasticSearch 和solr的区别最大的就是 es对应的 是 json的格式 。 solr有xml和josn等…

React Hooks 全解: 常用 Hooks 及使用场景详解

React Hooks 是 React 16.8 版本引入的一项重要特性,它极大地简化和优化了函数组件的开发过程。 React 中常用的 10 个 Hooks,包括 useState、useEffect、useContext、useReducer、useCallback、useMemo、useRef、useLayoutEffect、useImperativeHandle 和 useDebugValue。这些…

ARM内核的CPU架构模型

1.引言 程序员在编码的时候&#xff0c;如果想有进一步的提升&#xff0c;我认为还是要深入底层理解程序运行原理才好。最近看了一些ARM架构的讲解&#xff0c;总结了如下。虽然是以ARM为原型画的图形&#xff0c;但是对于C和C的编程&#xff0c;还是有一些参考价值的。 2. AR…

云服务器租用一年、1个月优惠价格表,阿里/腾讯/京东/华为云

现在租一个服务器多少一个月&#xff1f;优惠价格低至3.8元1个月&#xff0c;租用一个月云服务器收费价格表&#xff1a;阿里云和腾讯云2核2G3M服务器优惠价格61元一年&#xff0c;折合一个月5元&#xff0c;京东云轻量云主机5.8元一个月&#xff0c;华为云服务器优惠价格3.8元…

wangeditor与deaftjs的停止维护,2024编辑器该如何做技术选型(一)

wangeditor暂停维护的声明&#xff1a; wangeditor是国内开发者开发的编辑器&#xff0c;用户也挺多&#xff0c;但是由于作者时间关系&#xff0c;暂停维护。 deaft的弃坑的声明&#xff1a; draft是Facebook开源的&#xff0c;但是也弃坑了&#xff0c;说明设计的时候存在很大…

为数据穿上安全的外衣——零售电商场景下的数据安全体系建设

在电子商务交易过程中&#xff0c;会涉及大量的个人和财务数据的传输和处理&#xff0c;随着电子商务的发展&#xff0c;数据安全风险也成为一个备受关注的问题。 而跨境电商&#xff0c;属于出海业务&#xff0c;涉及到海外不同国家的政策法规&#xff0c;且数据作为电商的业…

等保测评2.0——网络安全等级保护测评的初步了解

一、什么是网络安全等级保护测评&#xff1f; 二、网络安全等级保护&#xff0c;保护的是什么&#xff1f; 等级保护对象&#xff1a;网络安全等级保护工作直接作用的对象。&#xff08;注&#xff1a;主要包括信息系统、通信网络设施和数据资源等&#xff09; 计算机信息系统…

数据库系统概论(超详解!!!)第四节 数据库安全性

问题的提出&#xff1a; 数据库的一大特点是数据可以共享 数据共享必然带来数据库的安全性问题 数据库系统中的数据共享不能是无条件的共享。 1.数据库的安全概述 数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏 。 系统安全保护措施是否有效…

Linux【实战篇】—— NFS服务搭建与配置

目录 一、介绍 1.1什么是NFS&#xff1f; 1.2客户端与服务端之间的NFS如何进行数据传输&#xff1f; 1.3RPC和NFS的启动顺序 1.4NFS服务 系统守护进程 二、安装NFS服务端 2.1安装NFS服务 2.2 创建共享目录 2.3创建共享目录首页文件 2.4关闭防火墙 2.5启动NFS服务 2.…