当前位置: 首页 > news >正文

Python套接字综合应用(UDP篇)

Python套接字综合应用(UDP篇)

1、 主要功能

  • UDP客户端实现
  • UDP服务端实现
  • 输出字体颜色控制
  • 响应捕获键盘Ctrl+C信号
  • 套接字异常捕获及处理
  • 通信报文16进制格式化输出

2、 Python UDP套接字应用

Windows程序在WinServer2022上验证运行,Linux程序在银河麒麟V10上验证运行。

通过《网络调试助手》进行调试验证,工具运行界面如下:
在这里插入图片描述

①、 Linux服务端

server.py

# -*- coding: gbk -*-import socket
import datetime#服务端参数设置
listen_addr = "192.168.58.145"
listen_port = 1281#输出字体颜色控制
TEXT_COLOR_WHITE   = '\033[97m'
TEXT_COLOR_MAGENTA = '\033[95m'
TEXT_COLOR_BLUE    = '\033[94m'
TEXT_COLOR_YELLOW  = '\033[93m'
TEXT_COLOR_GREEN   = '\033[92m'
TEXT_COLOR_RED     = '\033[91m' 
TXET_COLOR_DEFAULT = '\033[0m'#输出字体大小控制
TEXT_FONT_WEIGHT_DEFAULT  = '\033[0m'
TEXT_FONT_WEIGHT_BOLD     = '\033[1m\033[5m'
TEXT_FONT_WEIGHT_THIN     = '\033[2m\033[3m'#1. 创建套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#2. 绑定地址
sock.bind((listen_addr, listen_port))
#3. 接收数据
while True:rx_msg, peer_endpoint = sock.recvfrom(2048) print('\n')# 获取当前时间now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"#打印客户地址str_peer = "[{}]".format(peer_endpoint)str_rx = "[RX]"#打印头部信息print(f"%s" % str_rx + str_now + str_peer)#接收内容,格式化16进制line = ['%02X' % i for i in rx_msg]str_rx_msg = " ".join(line)print(f"{TEXT_COLOR_RED}%s{TXET_COLOR_DEFAULT}" % str_rx_msg)#发送信息给对方tx_msg = rx_msgsock.sendto(tx_msg,peer_endpoint)str_tx = "[TX]"now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"print(f"%s" % str_tx + str_now + str_peer)#发送内容格式化line = ['%02X' % i for i in tx_msg]str_tx_msg = " ".join(line)print(f"{TEXT_COLOR_BLUE}%s{TXET_COLOR_DEFAULT}" % str_tx_msg)sock.close()

运行效果
在这里插入图片描述

②、 Linux客户端

client.py

# -*- coding: gbk -*-import socket
import datetime
import time#本地网络参数设置
local_bind_addr = "192.168.58.145"
local_bind_port = 1281#对方网络参数设置
remote_ep_addr = "192.168.58.1"
remote_ep_port = 50001#交互模式
#[0]: 固定次数、固定间隔发送,用户只输入一次
#[1]: 每次要求用户输入,用户输入后才发送(默认方式)
tx_mode = 0#只有tx_mode为[0]时生效
tx_count = 10
tx_interval_second = 2#输出字体颜色控制
TEXT_COLOR_WHITE   = '\033[97m'
TEXT_COLOR_MAGENTA = '\033[95m'
TEXT_COLOR_BLUE    = '\033[94m'
TEXT_COLOR_YELLOW  = '\033[93m'
TEXT_COLOR_GREEN   = '\033[92m'
TEXT_COLOR_RED     = '\033[91m' 
TXET_COLOR_DEFAULT = '\033[0m'#1. 创建套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#2. 绑定本地地址
sock.bind((local_bind_addr, local_bind_port))
#设置接收超时时间(单位为秒)
timeout_seconds = 2
sock.settimeout(timeout_seconds)#每次要求用户输入,用户输入后才发送(默认方式)
if tx_mode == 1 :while True:#3. 接收用户输入input_stream = input("请输入16进制发送报文数据,以空格分隔:")#4. 发送数据sock.sendto(bytearray.fromhex(input_stream),(remote_ep_addr,remote_ep_port))str_tx = "[TX]"now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"str_remote_addr = "[{}]".format((remote_ep_addr,remote_ep_port))print(f"%s" % str_tx + str_now + str_remote_addr)#发送内容格式化print(f"{TEXT_COLOR_BLUE}%s{TXET_COLOR_DEFAULT}" % input_stream.upper())#5.接收数据try:rx_msg, peer_endpoint = sock.recvfrom(2048) print('\n')# 获取当前时间now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"#打印对端地址str_peer = "[{}]".format(peer_endpoint)str_rx = "[RX]"#打印头部信息print(f"%s" % str_rx + str_now + str_peer)#接收内容,格式化16进制line = ['%02X' % i for i in rx_msg]str_rx_msg = " ".join(line)print(f"{TEXT_COLOR_RED}%s{TXET_COLOR_DEFAULT}" % str_rx_msg.upper())except socket.timeout:#超时,继续continue#固定次数、固定间隔发送,用户只输入一次
elif tx_mode == 0 :#3. 接收用户输入input_stream = input("请输入16进制发送报文数据,以空格分隔:")while tx_count > 0:#4. 发送数据sock.sendto(bytearray.fromhex(input_stream),(remote_ep_addr,remote_ep_port))str_tx = "[TX]"now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"str_remote_addr = "[{}]".format((remote_ep_addr,remote_ep_port))print(f"%s" % str_tx + str_now + str_remote_addr)#发送内容格式化print(f"{TEXT_COLOR_BLUE}%s{TXET_COLOR_DEFAULT}" % input_stream.upper())#5.接收数据try:rx_msg, peer_endpoint = sock.recvfrom(2048) print('\n')# 获取当前时间now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"#打印对端地址str_peer = "[{}]".format(peer_endpoint)str_rx = "[RX]"#打印头部信息print(f"%s" % str_rx + str_now + str_peer)#接收内容,格式化16进制line = ['%02X' % i for i in rx_msg]str_rx_msg = " ".join(line)print(f"{TEXT_COLOR_RED}%s{TXET_COLOR_DEFAULT}" % str_rx_msg.upper())except socket.timeout:#接收超时continueexcept Exception as e:print(f"[处理异常]: {e}")print(f"{TEXT_COLOR_RED}terminating...{TXET_COLOR_DEFAULT}")sock.close()sys.exit(0)tx_count -= 1time.sleep(tx_interval_second)sock.close()

运行效果
在这里插入图片描述

③、 Windows服务端

server.py

# -*- coding: gbk -*-import socket
import datetime
import sys#服务端参数设置
listen_addr = "192.168.58.151"
listen_port = 1281#输出字体颜色控制
TEXT_COLOR_WHITE   = '\033[1;30m'
TEXT_COLOR_GRAY    = '\033[1;37m'
TEXT_COLOR_MAGENTA = '\033[1;35m'
TEXT_COLOR_BLUE    = '\033[1;34m'
TEXT_COLOR_YELLOW  = '\033[1;33m'
TEXT_COLOR_GREEN   = '\033[1;32m'
TEXT_COLOR_RED     = '\033[1;31m' 
TXET_COLOR_DEFAULT = '\033[0m'#输出字体大小控制
TEXT_FONT_WEIGHT_DEFAULT  = '\033[0m'
TEXT_FONT_WEIGHT_BOLD     = '\033[1m\033[5m'
TEXT_FONT_WEIGHT_THIN     = '\033[2m\033[3m'# "\033"是转义序列的开始,后面跟着一个或多个字符来指定具体的样式。
# [0m表示默认样式,[1m表示加粗,[2m表示常规,[5m表示放大,[3m表示缩小。#仅限Windows系统
#print颜色控制失败时调用如下语句
import os
if os.name == "nt":os.system("")#捕获键盘Ctrl+C信号
import signal
def signal_handler(signal,code):print(f"{TEXT_COLOR_RED}terminating...{TXET_COLOR_DEFAULT}")sys.exit(0)signal.signal(signal.SIGINT,signal_handler)
signal.signal(signal.SIGTERM,signal_handler)#16进制格式化输出
def print_hex(bytes):line = ['%02X' % i for i in bytes]	print(" ".join(line))#1. 创建套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#2. 绑定地址
sock.bind((listen_addr, listen_port))
#3. 设置接收超时时间(单位为秒)
timeout_seconds = 2
sock.settimeout(timeout_seconds)
#4. 接收数据
while True:try:rx_msg, peer_endpoint = sock.recvfrom(2048) print('\n')# 获取当前时间now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"#打印客户地址str_peer = "[{}]".format(peer_endpoint)str_rx = "[RX]"#打印头部信息print(f"{TEXT_COLOR_GRAY}%s{TXET_COLOR_DEFAULT}" % str_rx + str_now + str_peer)#接收内容,格式化16进制line = ['%02X' % i for i in rx_msg]str_rx_msg = " ".join(line)print(f"{TEXT_COLOR_BLUE}%s{TXET_COLOR_DEFAULT}" % str_rx_msg)#发送信息给对方tx_msg = rx_msgsock.sendto(tx_msg,peer_endpoint)str_tx = "[TX]"now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"print(f"{TEXT_COLOR_GRAY}%s{TXET_COLOR_DEFAULT}" % str_tx + str_now + str_peer)#发送内容格式化line = ['%02X' % i for i in tx_msg]str_tx_msg = " ".join(line)print(f"{TEXT_COLOR_GREEN}%s{TXET_COLOR_DEFAULT}" % str_tx_msg)except socket.timeout:#超时,继续continue
sock.close()

运行效果
在这里插入图片描述

④、 Windows客户端

client.py

# -*- coding: gbk -*-import socket
import datetime
import time#本地网络参数设置
local_bind_addr = "192.168.58.131"
local_bind_port = 1281#对方网络参数设置
remote_ep_addr = "192.168.58.1"
remote_ep_port = 50001#交互模式
#[0]: 固定次数、固定间隔发送,用户只输入一次
#[1]: 每次要求用户输入,用户输入后才发送(默认方式)
tx_mode = 0#只有tx_mode为[0]时生效
tx_count = 10
tx_interval_second = 2#仅限Windows系统
#print颜色控制失败时调用如下语句
import os
if os.name == "nt":os.system("")#捕获键盘Ctrl+C信号
import signal
def signal_handler(signal,code):print(f"{TEXT_COLOR_RED}terminating...{TXET_COLOR_DEFAULT}")sys.exit(0)signal.signal(signal.SIGINT,signal_handler)
signal.signal(signal.SIGTERM,signal_handler)#输出字体颜色控制
TEXT_COLOR_WHITE   = '\033[1;30m'
TEXT_COLOR_GRAY    = '\033[1;37m'
TEXT_COLOR_MAGENTA = '\033[1;35m'
TEXT_COLOR_BLUE    = '\033[1;34m'
TEXT_COLOR_YELLOW  = '\033[1;33m'
TEXT_COLOR_GREEN   = '\033[1;32m'
TEXT_COLOR_RED     = '\033[1;31m' 
TXET_COLOR_DEFAULT = '\033[0m'#1. 创建套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#2. 绑定本地地址
sock.bind((local_bind_addr, local_bind_port))
#设置接收超时时间(单位为秒)
timeout_seconds = 2
sock.settimeout(timeout_seconds)#每次要求用户输入,用户输入后才发送(默认方式)
if tx_mode == 1 :while True:#3. 接收用户输入input_stream = input("请输入16进制发送报文数据,以空格分隔:")#4. 发送数据sock.sendto(bytearray.fromhex(input_stream),(remote_ep_addr,remote_ep_port))str_tx = "[TX]"now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"str_remote_addr = "[{}]".format((remote_ep_addr,remote_ep_port))print(f"%s" % str_tx + str_now + str_remote_addr)#发送内容格式化print(f"{TEXT_COLOR_BLUE}%s{TXET_COLOR_DEFAULT}" % input_stream.upper())#5.接收数据try:rx_msg, peer_endpoint = sock.recvfrom(2048) print('\n')# 获取当前时间now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"#打印对端地址str_peer = "[{}]".format(peer_endpoint)str_rx = "[RX]"#打印头部信息print(f"%s" % str_rx + str_now + str_peer)#接收内容,格式化16进制line = ['%02X' % i for i in rx_msg]str_rx_msg = " ".join(line)print(f"{TEXT_COLOR_RED}%s{TXET_COLOR_DEFAULT}" % str_rx_msg.upper())except socket.timeout:#超时,继续continue#固定次数、固定间隔发送,用户只输入一次
elif tx_mode == 0 :#3. 接收用户输入input_stream = input("请输入16进制发送报文数据,以空格分隔:")while tx_count > 0:#4. 发送数据sock.sendto(bytearray.fromhex(input_stream),(remote_ep_addr,remote_ep_port))str_tx = "[TX]"now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"str_remote_addr = "[{}]".format((remote_ep_addr,remote_ep_port))print(f"%s" % str_tx + str_now + str_remote_addr)#发送内容格式化print(f"{TEXT_COLOR_BLUE}%s{TXET_COLOR_DEFAULT}" % input_stream.upper())#5.接收数据try:rx_msg, peer_endpoint = sock.recvfrom(2048) print('\n')# 获取当前时间now = datetime.datetime.now()str_date = now.strftime('%Y-%m-%d %H:%M:%S')str_ms = f"{now.strftime('%f')[:3]}".zfill(3)str_now = f"[{str_date}.{str_ms}]"#打印对端地址str_peer = "[{}]".format(peer_endpoint)str_rx = "[RX]"#打印头部信息print(f"%s" % str_rx + str_now + str_peer)#接收内容,格式化16进制line = ['%02X' % i for i in rx_msg]str_rx_msg = " ".join(line)print(f"{TEXT_COLOR_RED}%s{TXET_COLOR_DEFAULT}" % str_rx_msg.upper())except socket.timeout:#接收超时continueexcept Exception as e:print(f"[处理异常]: {e}")print(f"{TEXT_COLOR_RED}terminating...{TXET_COLOR_DEFAULT}")sock.close()sys.exit(0)tx_count -= 1time.sleep(tx_interval_second)sock.close()

运行效果
在这里插入图片描述

相关文章:

Python套接字综合应用(UDP篇)

Python套接字综合应用(UDP篇) 1、 主要功能 UDP客户端实现UDP服务端实现输出字体颜色控制响应捕获键盘CtrlC信号套接字异常捕获及处理通信报文16进制格式化输出 2、 Python UDP套接字应用 Windows程序在WinServer2022上验证运行,Linux程序在银河麒麟V10上验证运…...

服务器安装哪吒面板详细教程

本文长期更新地址: 服务器安装哪吒面板详细教程-星零岁的博客https://blog.0xwl.com/13568.html 注:本文中部分内容源自网络,第四步中部分来自本人曾经文章:云服务器安装配置宝塔面板并安装基础运行环境教程-星零岁的博客 今天来讲…...

LLM微调(精讲)-以高考选择题生成模型为例(DataWhale AI夏令营)

前言 你好,我是GISer Liu😁,一名热爱AI技术的GIS开发者,上一篇文章中,作者介绍了基于讯飞开放平台进行大模型微调的完整流程;而在本文中,作者将对大模型微调的数据准备部分进行深入;…...

安全基础学习-RC4加密算法

这里仅仅记录一些基础的概念。后期有需求进一步扩展。 RC4 是一种对称流加密算法,由罗恩里维斯特(Ron Rivest)于1987年设计。RC4 的设计目的是提供一种简单且高效的加密方法。尽管 RC4 曾经广泛使用,但它的安全性在现代已受到质疑…...

雨云宁波电信大带宽服务器测评(非广告)

提示:本文非广告,非宣传! 本文长期更新地址:雨云宁波电信大带宽服务器测评(非广告) 雨云现在有一个国内的新区——宁波 宣传的是电信大带宽,可附加100G防御,采用NVME,和铂…...

2024年,最新前端趋势

随着技术的不断发展,前端开发领域在2024年迎来了新的趋势和挑战。对于开发者来说,紧跟这些趋势不仅能提升技术水平,还能在激烈的市场竞争中脱颖而出。今天,我想向大家介绍一款在这波趋势中脱颖而出的开发神器——MemFire Cloud。这…...

Linux静态进程和动态进程查看管理

1.静态进程的查看PS PPID:谁启动的父亲ID USER:运行进程的用户名称 PID:进程ID %CPU:CPU的占用比例占用资源 %MEM:内存使用的占用比例 VSZ:占用虚拟内存多少 RSS:占用实际内存多少 TTY:…...

CPU飙升 怎么定位问题

传统的方法 【top】 查看所有进程占系统CPU的排序,定位是哪个进程搞的鬼。PID那一列就是进程号。 【top -Hp pid】 定位进程中使用 CPU 最高的线程tid 【printf ‘0x%x’ tid】 线程 tid 转化 16 进制,例如printf ‘0x%x’ 11882 得到16进制的 0x2e6a 【jstack…...

The Sandbox 游戏制作教程第 4 章|使用装备制作游戏,触发独特互动

欢迎回到我们的系列,我们将记录 The Sandbox Game Maker 的 “On-Equip”(装备)功能的多种用途。 如果你刚加入 The Sandbox,On-Equip 功能是 “可收集组件”(Collectable Component)中的一个多功能工具&a…...

JS 和 JSX、TS 和 TSX 的区别

1. JS(JavaScript) 定义与特性: JavaScript(简称JS)是一种轻量级、解释型或即时编译型的编程语言。它基于原型编程、多范式的动态脚本语言,支持面向对象、命令式、声明式、函数式编程范式。JavaScript 是…...

25款极氪007上市,小米SU7就不该买?

文 | AUTO芯球 作者 | 谦行 我是刚刚才知道 买小米SU7的原来是盯着他这两个功能 可爱的小女孩喊小爱同学帮她停个车 妈妈给她说SU7自己能停好,她还叮嘱一句“小爱同学你给我好好停” SU7滴溜溜的就停在车位上,全程不到一分钟 视频属实温馨&#x…...

旋转字符串 | LeetCode-796 | 模拟 | KMP | 字符串匹配

🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 🕹️KMP算法练习题 LeetCode链接:796. 旋转字符串 文章目录 1.题目描述🍑2.题解🫐2.1 暴力解法🫒2.2 模拟…...

网络安全测试工具Burp Suite基本使用

一、介绍 Burp Suite 是一款由 PortSwigger 开发的集成网络安全测试工具,广泛用于渗透测试和漏洞扫描。它提供了一系列功能强大的工具和功能,帮助安全研究人员和渗透测试人员识别和修复 Web 应用程序中的安全漏洞。以下是 Burp Suite 的主要功能和特点&…...

使用pytest+selenium编写网页UI自动化脚本和用例

1 UI自动化测试 UI自动化测试(User Interface Automation Testing)是一种通过编写脚本或使用自动化测试工具,对界面(UI)进行自动化测试的方法。原理主要是模拟用户打开客户端或网页的UI界面,自动化执行用户…...

新能源遇“秋老虎”,8月第二周销量集体下滑,问界惨遭腰斩

文/王俣祺 导语:随着日前7月份乘用车销量的公布,我们发现7月并没有因6月各车企的“冲量”行为迎来反噬,对于这种“淡季不淡”的现象市场上一片看好。但从近日公布的8月销量数据来看,人们对于“秋老虎”的恐怖可以说是一无所知。随…...

SEO模板网站的wordpress主题最适合google外贸SEO

在寻找最适合Google外贸SEO的WordPress主题时,有几个关键因素需要考虑:速度、SEO友好性、多语言支持、以及是否易于定制。以下是一些推荐的WordPress主题,它们不仅速度快,而且对SEO非常友好,非常适合外贸网站&#xff…...

fetch跨域请求数据的前端设置和后端php的header设置

跨源请求,也称为CORS(Cross-Origin Resource Sharing)请求,是Web开发中常见的一种需求,允许一个网页的JavaScript代码向与该网页不同源的服务器发出HTTP请求。以下是使用JavaScript中的fetch函数进行跨源请求的一个基本…...

Ted靶机

信息收集: 靶机地址:https://www.vulnhub.com/entry/ted-1,327/ (1)ip扫描 nmap 192.168.254.0/24 -sn | grep -B 2 00:0C:29:FF:7F:9A (2)端口扫描 nmap -p- -A 192.168.254.159 (3&#x…...

HarmonyOS ArkTS 构建布局

在 HarmonyOS 中,ArkTS 是一种基于 TypeScript 的编程语言,专为开发 HarmonyOS 应用而设计。构建布局是开发应用的关键步骤之一。以下是如何在 ArkTS 中构建布局的基本指南。 1. 创建项目和页面 首先,确保已经创建了一个 HarmonyOS 项目。如…...

yolov5详解(二):通过yaml文件构建完整模型

依然拿yolov5l v6.0版本来讲解 1. yaml文件 以下是yolov5l.yaml文件内容 # YOLOv5 🚀 by Ultralytics, GPL-3.0 license# Parameters nc: 80 # number of classes depth_multiple: 1.0 # model depth multiple width_multiple: 1.0 # layer channel multiple …...

8月8日学习笔记 python基础

1.环境 python2, python3 yum list installed|grep python yum -y install python3 # 最新安装3.12可以使⽤源码安装,教程是在第⼀个星期pdf python3 --version 3.6.8 #进⼊到python的编辑状态 python3 # 如果直接输⼊python,也会进⼊到pyth…...

电动自行车出海黑马Avento独立站拆解(上)丨出海笔记

这次我们来拆解一个电动自行车的独立站 为什么选电动自行车? 因为全球疫情,带来出行问题——避免聚集,大家都减少了公共交通工具,而改为自行车,电动自行车...... 君不见疫情之后无论是出行自行车,还是健…...

Gerrit 使用教程

一、Gerrit简介 Gerrit,一种开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一个团队的程序员,可以相互审阅彼此修改后的代码,决定是否能够提交,退回或是继续修改。它使用版本控制系统Git作为底…...

sudu提权命令账号安全控制(su命令)执行单个命令并返回原用户、执行多个命令并返回原用户、保持当前环境变量、配置文件/etc/sudoers

su命令 su 命令是 Linux 和 Unix 系统中用于切换用户身份的命令。它允许一个用户变成另一个用户并以该用户的权限运行命令或启动新的 shell 会话。 基本语法 su [选项] [用户名] 用途: su[选项][-][用户[arg]…] 将有效用户id和组id更改为user的id。 A merely-im…...

【线性代数】【二】2.7 矩阵的秩

文章目录 前言一、向量组的秩二、矩阵的秩三、矩阵的可逆性与秩总结 前言 在前面的内容中,我们已经陆陆续续地给出了秩的概念。本文可以看成是对以往概念与性质的总结,那专门针对秩进行分析。 一、向量组的秩 在笔记2.2中,我们学习了极大线…...

计算机网络部分基础知识

网络协议的意义 单台主机内部的设备之间需要发送和接收消息,那么和相隔很远的两台主机之间发送消息有什么区别呢?两台主机通过网络发送消息,相当于两个网卡设备之间进行通信,最大的区别在于距离变长了。而距离变长带来的结果就是&…...

WESWOO合作的出海企业(一)

分享一些我们在shopify开发上合作的品牌介绍1. **韶音科技(SHOKZ)**: - WESWOO为韶音科技设计了多个产品页面,如OPENFIT、OPENSWIMPRO等,这些页面展示了产品特点、滑动特效、比较功能等,并通过品牌VI统一&a…...

vue 项目中 使用vxe-grid 表格中给表格的表头设置特殊的格式 , 并且给指定的列文字设置颜色

项目场景: 相关背景: vue 项目中 使用vxe-grid 表格中给表格的表头设置特殊的格式,并为指定的列文字设置颜色 实现方案: 具体实现方法及步骤: 一、给表格的表头设置特殊的格式 实现方式一: :header-row-s…...

基于SpringBoot的企业资产管理系统

TOC springboot117基于SpringBoot的企业资产管理系统 系统概述 1.1 研究背景 智慧养老是面向居家老人、社区及养老机构的传感网系统与信息平台,并在此基础上提供实时、快捷、高效、低成本的,物联化、互联化、智能化的养老服务。 随着科技进步&#…...

ps快捷键,学习

ps快捷键图片变的特别大,归位,ctrl0背景图层锁住 选中图层,点击顶部图层,新建,背景图层,确定,就解开了,想在锁住,在点一次...

如何建设网站兴田德润怎么样/百度风云搜索榜

2019独角兽企业重金招聘Python工程师标准>>> 删除匹配行的前后行 删除匹配行的下一行 sed -ne p;/niyaopipeideneirong/n nidewenjian.txt删除匹配行的前一行 删除匹配行的前一行,可以将文本文件倒过来,从而将问题转成删除匹配行的下一行 ta…...

大淘客优惠券网站是怎么做的/网络服务器的功能

都说Android最近行情不好,很多人都遇到瓶颈或放弃或转行。其实这种情况17年18年也是如此,相对比之下,个人认为今年比去年好多了,Android接下来将会走向复苏的春天。 自从Google开始推出AMP项目已经有一年了。除此之外,…...

服务预约网站怎么建设/今天的重要新闻

在存储库和项目之间共享代码对我们产品的成功至关重要。 当您的团队无法共享代码时,您最终会在整个代码库中获得重复的代码-这势必会拖延交付周期并使维护成为一场噩梦,因为每次更改都需要在多个地方进行长时间的重构。 您还浪费了宝贵的时间和精力并重新…...

教育培训网站建站/seo模板建站

在前一个Post中,曾提到将要重点研究Dependency属性的三个方面:变化通知;属性值的继承;支持多个提供对象。下面,我将分别就这三个内容进行简单地说明。【变化通知】 在任何时候,只要Dependency属性的值发生了…...

做外汇看新闻在什么网站看/开发小程序

这里是重点,<ripple>是API21才有的新Tag,正是实现水波纹效果的; 其中<ripple android:color"#FF21272B" .... />这个是指定水波纹的颜色. 而<item />里面的东西,我们都很熟悉,就是普通的定义一个带圆角的背景. ripple_bg.xml: <?xml version&q…...

网站页面静态化方案/网络事件营销

计算机网络&#xff1a;自顶向下方法第一章&#xff1a;计算机和因特网1、什么是因特网1、因特网具体构成不管是桌面PC、手机、Linux工作站等等&#xff0c;这些所有设备都称为主机或端系统。端系统通过通信链路(communication link)和分组交换机(packet switch)连接到一起&…...