Ubuntu小练习

文章目录

  • 一、远程连接
    • 1、通过putty连接
    • 2、查看putty运行状态
    • 3、通过Puuty远程登录Ubuntu
    • 4、添加新用户
      • 查看是否添加成功
    • 5、用新用户登录远程Ubuntu
    • 6、使用VNC远程登录树莓派
  • 二、虚拟机上talk聊天
  • 三、Opencv
    • 1、简单安装版(适合新手安装)
    • 2、打开VScode
      • 特效说明:

一、远程连接

1、通过putty连接

sudo apt update
sudo apt install openssh-server

2、查看putty运行状态

sudo systemctl status ssh

请添加图片描述

3、通过Puuty远程登录Ubuntu

在这里插入图片描述

4、添加新用户

在这里插入图片描述

查看是否添加成功

cat /etc/passwd | grep -E 'classmate1|classmate2'

在这里插入图片描述

5、用新用户登录远程Ubuntu

在这里插入图片描述

  1. X 窗口协议与 VNC-viewer 协议的差异
    X 窗口协议:
    用于在本地显示远程图形界面,依赖于 X11 转发。
    适合运行单个图形程序,性能较高。
    VNC 协议:
    提供完整的远程桌面访问,支持多用户同时连接。
    适合需要完整桌面环境的场景,但性能可能较低。

6、使用VNC远程登录树莓派

在这里插入图片描述

二、虚拟机上talk聊天

在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <signal.h>
#include <pwd.h>#define SOCKET_PATH "/tmp/talk_socket_"
#define MAX_CLIENTS 5
struct message {char sender[32];char text[256];
};
int server_fd;
char current_user[32] = {0};void cleanup() {char path[128];snprintf(path, sizeof(path), "%s%s", SOCKET_PATH, current_user);unlink(path); // 删除套接字文件close(server_fd);
}void handle_signal(int sig) {printf("\nCleaning up before exit...\n");cleanup();exit(0);
}void run_server(const char *username) {struct sockaddr_un addr;int client_fd;struct message msg;// 设置套接字路径char path[128];snprintf(path, sizeof(path), "%s%s", SOCKET_PATH, username);// 创建套接字if ((server_fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) {perror("socket error");exit(EXIT_FAILURE);}// 绑定套接字memset(&addr, 0, sizeof(addr));addr.sun_family = AF_UNIX;strncpy(addr.sun_path, path, sizeof(addr.sun_path)-1);unlink(path); // 确保路径可用if (bind(server_fd, (struct sockaddr*)&addr, sizeof(addr)) == -1) {perror("bind error");exit(EXIT_FAILURE);}// 监听if (listen(server_fd, MAX_CLIENTS) == -1) {perror("listen error");exit(EXIT_FAILURE);}printf("Waiting for incoming messages as [%s]...\n", username);while (1) {// 接受连接if ((client_fd = accept(server_fd, NULL, NULL)) == -1) {perror("accept error");continue;}// 接收消息if (read(client_fd, &msg, sizeof(msg)) > 0) {printf("\n[Message from %s]: %s\n", msg.sender, msg.text);printf("Reply to %s> ", msg.sender);fflush(stdout);}close(client_fd);}
}void send_message(const char *target_user, const char *username) {struct sockaddr_un addr;int fd;struct message msg;void send_message(const char *target_user, const char *username) {struct sockaddr_un addr;int fd;struct message msg;// 设置目标套接字路径char path[128];snprintf(path, sizeof(path), "%s%s", SOCKET_PATH, target_user);// 创建套接字if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) {perror("socket error");exit(EXIT_FAILURE);}// 连接目标memset(&addr, 0, sizeof(addr));addr.sun_family = AF_UNIX;strncpy(addr.sun_path, path, sizeof(addr.sun_path)-1);if (connect(fd, (struct sockaddr*)&addr, sizeof(addr)) == -1) {perror("connect error");printf("User %s is not available or not running talk\n", target_user);exit(EXIT_FAILURE);}// 发送消息strncpy(msg.sender, username, sizeof(msg.sender)-1);printf("Enter message (Ctrl+D to end): ");fgets(msg.text, sizeof(msg.text), stdin);if (write(fd, &msg, sizeof(msg)) == -1) {perror("write error");}close(fd);
}int main(int argc, char *argv[]) {if (argc < 2) {fprintf(stderr, "Usage: %s <username> [target_user]\n", argv[0]);fprintf(stderr, "Server mode: %s yourname\n", argv[0]);fprintf(stderr, "Client mode: %s yourname target_user\n", argv[0]);exit(EXIT_FAILURE);}// 获取当前用户名strncpy(current_user, argv[1], sizeof(current_user)-1);signal(SIGINT, handle_signal);signal(SIGTERM, handle_signal);if (argc == 2) {// 服务端模式run_server(argv[1]);} else {// 客户端模式send_message(argv[2], argv[1]);}return 0;
}

三、Opencv

1、简单安装版(适合新手安装)

1、打开Terminal输入以下命令

sudo apt update
sudo apt install python3-opencv libopencv-dev

2、验证安装是否成功

# 检查Python环境
python3 -c "import cv2; print(cv2.__version__)"# 检查C++开发环境
pkg-config --modversion opencv4

在这里插入图片描述
如图所示,安装的是4.2.0。这个方法安装的Opencv版本较老,可以选择去官网下载较新的版本安装,只不过我这里尝试了很久没有安装成功,并且每次最后都会导致虚拟机卡死

2、打开VScode

1、创建一个新的python文件
案例测试


import cv2# Load an image from file
image = cv2.imread('example.jpg')# Check if the image was successfully loaded
if image is None:print("Error: Could not load the image. Please check the file path.")
else:# Apply a grayscale effectgray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# Apply a Gaussian blur effectblurred_image = cv2.GaussianBlur(image, (15, 15), 0)# Display the original imagecv2.imshow('Original Image', image)# Display the grayscale imagecv2.imshow('Grayscale Image', gray_image)# Display the blurred imagecv2.imshow('Blurred Image', blurred_image)# Wait for a key press and close the windowscv2.waitKey(0)cv2.destroyAllWindows()

以下是一个示例代码,添加了一些简单的图像特效(如将图像转换为灰度图像和应用高斯模糊):

import cv2# Load an image from file
image = cv2.imread('example.jpg')# Check if the image was successfully loaded
if image is None:print("Error: Could not load the image. Please check the file path.")
else:# Apply a grayscale effectgray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# Apply a Gaussian blur effectblurred_image = cv2.GaussianBlur(image, (15, 15), 0)# Display the original imagecv2.imshow('Original Image', image)# Display the grayscale imagecv2.imshow('Grayscale Image', gray_image)# Display the blurred imagecv2.imshow('Blurred Image', blurred_image)# Wait for a key press and close the windowscv2.waitKey(0)cv2.destroyAllWindows()

特效说明:

  1. 灰度图像:使用 cv2.cvtColor 将彩色图像转换为灰度图像。
  2. 高斯模糊:使用 cv2.GaussianBlur 对图像进行模糊处理,参数 (15, 15) 控制模糊的程度。
    如下图所示
    在这里插入图片描述
    同样这个也可以通过C++实现,但是我尝试了很久,被各种配置困了很久还么解决,就用的Python

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

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

相关文章

996引擎-疑难杂症:Ctrl + F9 编辑好的UI进入游戏查看却是歪的

Ctrl F9 编辑好UI后&#xff0c;进入游戏查看却是歪的。 检查Ctrl F10 是否有做过编辑。可以找到对应界面执行【清空】

WinForm真入门(5)——控件的基类Control

控件的基类–Control 用于 Windows 窗体应用程序的控件都派生自 Control类并继承了许多通用成员,这些成员都是平时使用控件的过程最常用到的。无论要学习哪个控件的使用&#xff0c;都离不开这些基本成员&#xff0c;尤其是一些公共属性。由于 Conlrol 类规范了控件的基本特征…

RAG(检索增强生成)系统,提示词(Prompt)表现测试(数据说话)

在RAG(检索增强生成)系统中,评价提示词(Prompt)设计是否优秀,必须通过量化测试数据来验证,而非主观判断。以下是系统化的评估方法、测试指标和具体实现方案: 一、提示词优秀的核心标准 优秀的提示词应显著提升以下指标: 维度量化指标测试方法事实一致性Faithfulness …

Appium的学习总结-Inspector参数设置和界面使用(5)

环境搭建好后&#xff0c;怎么使用呢&#xff1f; 环境这里使用的是&#xff1a; Appium的Server端GUI 22版本 Inspector需要单独下载安装&#xff0c;GUI里并没有集成。 &#xff08;使用Appium v1.22.0,查看元素信息需要另外安装下载Appium Inspector&#xff09; 操作&…

I/O进程3

day3 五、进程 7.函数接口 7.1创建子进程 pid_t fork(void);功能&#xff1a;创建子进程返回值&#xff1a;成功&#xff1a;在父进程中&#xff1a;返回子进程的进程号 >0 在子进程中&#xff1a;返回值为0&#xff1b; 失败&#xff1a;-1并设置errno 特点 1.子进程几乎…

k8s 1.24.17版本部署(使用Flannel插件)

1.k8s集群环境准备 推荐阅读: https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ 1.1 环境准备 环境准备:硬件配置: 2core 4GB磁盘: 50GB操作系统: Ubuntu 22.04.04 LTSIP和主机名:10.0.0.231 master23110.0.0.232 worker23210.0…

网络编程—TCP/IP模型(UDP协议与自定义协议)

上篇文章&#xff1a; 网络编程—Socket套接字&#xff08;TCP&#xff09;https://blog.csdn.net/sniper_fandc/article/details/146923783?fromshareblogdetail&sharetypeblogdetail&sharerId146923783&sharereferPC&sharesourcesniper_fandc&sharefro…

GNSS有源天线和无源天线

区别 需要外部供电的就是有源天线&#xff0c;不需要外部供电的是无源天线。 无源天线 一般就是一个陶瓷片、金属片等&#xff0c;结构简单&#xff0c;成本低廉&#xff0c;占用空间及体积小&#xff0c;适合于强调紧凑型空间的导航类产品。 不需要供电&#xff0c;跟设备直…

网络编程—TCP/IP模型(IP协议)

上篇文章&#xff1a; 网络编程—TCP/IP模型&#xff08;TCP协议&#xff09;https://blog.csdn.net/sniper_fandc/article/details/147011479?fromshareblogdetail&sharetypeblogdetail&sharerId147011479&sharereferPC&sharesourcesniper_fandc&sharef…

基于金字塔视觉变换的类引导网络高分辨率遥感图像高效语义分割

Class-Guidance Network Based on the Pyramid Vision Transformer for Efficient Semantic Segmentation of High-Resolution Remote Sensing Images 摘要 多分类语义分割中类之间的小差异和类内的大变化是全卷积神经网络的“编码器-解码器”结构没有完全解决的问题&#…

基于人工智能的高中教育评价体系重构研究

基于人工智能的高中教育评价体系重构研究 一、引言 1.1 研究背景 在科技飞速发展的当下&#xff0c;人工智能技术已广泛渗透至各个领域&#xff0c;教育领域亦不例外。人工智能凭借其强大的数据处理能力、智能分析能力和个性化服务能力&#xff0c;为教育评价体系的创新与发…

DeepSeek在互联网技术中的革命性应用:从算法优化到系统架构

引言:AI技术重塑互联网格局 在当今快速发展的互联网时代,人工智能技术正以前所未有的速度改变着我们的数字生活。DeepSeek作为前沿的AI技术代表,正在多个互联网技术领域展现出强大的应用潜力。本文将深入探讨DeepSeek在搜索引擎优化、推荐系统、自然语言处理以及分布式系统…

数字游戏(继Day 10)

主体: #include<stdio.h> #include<time.h> #include<stdlib.h>#include"mygetch.h"#define MAX 51 //定义测试字母的最大长度void help() {printf("\n****************************************");printf("\n*输入过程中无法退出…

谈谈模板方法模式,模板方法模式的应用场景是什么?

一、模式核心理解 模板方法模式是一种​​行为设计模式​​&#xff0c;通过定义算法骨架并允许子类重写特定步骤来实现代码复用。 如同建筑图纸规定房屋结构&#xff0c;具体装修由业主决定&#xff0c;该模式适用于​​固定流程中需要灵活扩展​​的场景。 // 基础请求处理…

2024 Jiangsu Collegiate Programming Contest H

记录一下为数不多的网络流 #pragma GCC optimize(3,"Ofast","inline") #include<bits/stdc.h> #include <execution> using namespace std; using i64 long long; using i128 __int128;template <typename T>struct MCFgraph{struct …

Hadoop序列化与反序列化

一、Hadoop序列化概述 &#xff08;一&#xff09;什么是序列化和反序列化 序列化&#xff1a;序列化是将对象&#xff08;如Java中的类实例&#xff09;转换为字节序列的过程。在Hadoop中&#xff0c;数据在分布式系统中传输或者存储到磁盘时&#xff0c;需要将数据对象序列…

FreeRTOS临界区

在FreeRTOS中&#xff0c;临界区通过关闭可管理的中断来保护共享资源&#xff0c;具体关闭的中断层级由configMAX_SYSCALL_INTERRUPT_PRIORITY宏定义决定。以下是关键点解析&#xff1a; 中断优先级分类&#xff1a; 高优先级中断&#xff1a;数值低于configMAX_SYSCALL_INTERR…

cdw2: TypeScript

一、javascript的问题 二、初识typescript https://mp.weixin.qq.com/s/wnL1l-ERjTDykWM76l4Ajw 三、类型 二进制&#xff1a;ob开头&#xff0c;八进制&#xff1a;0o开头&#xff0c;十六进制&#xff1a;0x开头 开发中不这样写 这样写 匿名函数的参数最好不要…

Qt中的元对象系统

Qt的元对象系统(Meta-Object System)提供了对象间通信的信号和槽机制、运行时类型信息和动态属性系统。 元对象系统基于以下三个方面&#xff1a; (1).QObject类&#xff1a;为可以利用元对象系统的对象提供了基类。 (2).Q_OBJECT宏&#xff1a;用于启用元对象功能&#xff0c;…

深入理解重排(Reflow)与重绘(Repaint),写出高性能 CSS 动画

在前端开发中&#xff0c;CSS 动画是提升用户体验的重要手段&#xff0c;但很多开发者在使用动画时并不了解浏览器背后的渲染机制&#xff0c;导致动画卡顿甚至影响整体性能。本文将带你深入理解 CSS 中的两大核心概念 —— 重排&#xff08;Reflow&#xff09; 与 重绘&#x…