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

【嵌入式】——Linux系统远程操作和程序编译

目录

一、虚拟机配置网络设置

 二、使用PuTTY登录新建的账户

1、在ubuntu下开启ssh服务

2、使用PuTTY连接

三、树莓派实现远程登录

四、树莓派使用VNC viewer登录

五、Linux使用talk聊天程序

 1、使用linux自带的talk命令

2、使用c语言编写一个talk程序


一、虚拟机配置网络设置

(1)将网络适配器改为桥接模式 (“虚拟机” ——> “设置”)

(2)点击编辑-> 虚拟网络编辑器

进去过后点击更改配置,进入下图界面

 (3)创建一个新用户

sudo adduser classmate1
sudo usermod -aG sudo classmate1

自己设置密码

(4)登录新设置的用户,查看ip地址

su classmate1
ifconfig

 二、使用PuTTY登录新建的账户

1、在ubuntu下开启ssh服务

sudo apt-get install ssh
service ssh start
service ssh status

开启后可以让其它同学ping一下ip地址

2、使用PuTTY连接

配置PuTTY

 在配置选项 connection -> SSH -> Auth -> X11 forwarding 处,将 Enable X11 forwarding 打钩

然后 session->host name 处填写服务器IP 地址(即Ubuntu的IP地址),再点击 open 连接远程服务器

之后输入用户名和密码进行登录

 连接成功后,输入命令 set DISPLAY=xxx.xxx.xxx.xxx:0 ,(xxx.xxx.xxx.xxx是你所使用电脑windows下配置的IP地址)

三、树莓派实现远程登录

运行putty,在配置选项 connection -> SSH -> Auth -> X11 forwarding 处,将 Enable X11 forwarding 打钩;然后 session->host name 处填写服务器IP地址,再点击 open 连接 远程服务器。

 用 putty 连接,打开 chromium 浏览器(输入命令 chromium-browser)

四、树莓派使用VNC viewer登录

 输入IP地址后使用账号密码登录

五、Linux使用talk聊天程序

 1、使用linux自带的talk命令

talk命令是一个用于Linux用户之间交流的实时聊天程序。这个命令允许你和同一主机或不同主机上的其他用户进行实时的对话。talk命令打开了一个发送窗口和一个接收窗口,使得你可以在键入自己的消息的同时看到对方的消息。它是一个视觉通讯程序,将你的终端上的行复制到另一个用户的终端,就像一个即时通讯服务一样。

talk person

然后等待对方回应即可 

2、使用c语言编写一个talk程序

要实现一个支持 多客户端聊天 的 Linux C 程序,我们可以使用 Socket 编程(基于 TCP/IP)让多个客户端连接到一个中央服务器,并实现实时消息转发

功能说明

  1. 服务器

    • 监听端口 8080,接受多个客户端连接。

    • 使用 select() 实现多路复用,避免阻塞。

    • 将任一客户端的消息广播给所有其他客户端。

  2. 客户端

    • 连接服务器后,启动一个线程专门接收消息。

    • 主线程负责发送用户输入的消息。

chat.c

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/wait.h>#define BUFFER_SIZE 1024int main() {int parent_to_child[2];  // 父进程→子进程的管道int child_to_parent[2];  // 子进程→父进程的管道char buffer[BUFFER_SIZE];// 创建管道if (pipe(parent_to_child) == -1 || pipe(child_to_parent) == -1) {perror("pipe failed");exit(EXIT_FAILURE);}pid_t pid = fork();if (pid == -1) {perror("fork failed");exit(EXIT_FAILURE);}if (pid == 0) {  // 子进程close(parent_to_child[1]);  // 关闭父→子的写入端close(child_to_parent[0]);  // 关闭子→父的读取端while (1) {// 读取父进程消息ssize_t bytes_read = read(parent_to_child[0], buffer, BUFFER_SIZE);if (bytes_read <= 0) break;buffer[bytes_read] = '\0';printf("Child received: %s", buffer);// 发送回复给父进程printf("Child reply: ");fgets(buffer, BUFFER_SIZE, stdin);write(child_to_parent[1], buffer, strlen(buffer) + 1);}close(parent_to_child[0]);close(child_to_parent[1]);} else {  // 父进程close(parent_to_child[0]);  // 关闭父→子的读取端close(child_to_parent[1]);  // 关闭子→父的写入端while (1) {// 发送消息给子进程printf("Parent message: ");fgets(buffer, BUFFER_SIZE, stdin);write(parent_to_child[1], buffer, strlen(buffer) + 1);// 读取子进程回复ssize_t bytes_read = read(child_to_parent[0], buffer, BUFFER_SIZE);if (bytes_read <= 0) break;buffer[bytes_read] = '\0';printf("Parent received: %s", buffer);}close(parent_to_child[1]);close(child_to_parent[0]);wait(NULL);  // 等待子进程结束}return 0;
}

 server.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/select.h>#define MAX_CLIENTS 10
#define BUFFER_SIZE 1024int clients[MAX_CLIENTS] = {0};int main() {int server_fd, new_socket, max_sd, activity;struct sockaddr_in address;fd_set readfds;char buffer[BUFFER_SIZE];// 创建服务器 socketif ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {perror("socket failed");exit(EXIT_FAILURE);}address.sin_family = AF_INET;address.sin_addr.s_addr = INADDR_ANY;address.sin_port = htons(8080);// 绑定 socket 到端口if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) {perror("bind failed");exit(EXIT_FAILURE);}// 监听连接if (listen(server_fd, 3) < 0) {perror("listen failed");exit(EXIT_FAILURE);}printf("Server started on port 8080. Waiting for connections...\n");while (1) {FD_ZERO(&readfds);FD_SET(server_fd, &readfds);max_sd = server_fd;// 添加所有客户端 socket 到 fd_setfor (int i = 0; i < MAX_CLIENTS; i++) {if (clients[i] > 0) {FD_SET(clients[i], &readfds);if (clients[i] > max_sd) max_sd = clients[i];}}// 等待 socket 活动activity = select(max_sd + 1, &readfds, NULL, NULL, NULL);if (activity < 0) {perror("select error");continue;}// 处理新连接if (FD_ISSET(server_fd, &readfds)) {int addrlen = sizeof(address);if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) {perror("accept failed");continue;}// 添加新客户端for (int i = 0; i < MAX_CLIENTS; i++) {if (clients[i] == 0) {clients[i] = new_socket;printf("New client connected (socket %d)\n", new_socket);break;}}}// 处理客户端消息for (int i = 0; i < MAX_CLIENTS; i++) {if (clients[i] > 0 && FD_ISSET(clients[i], &readfds)) {int bytes_read = read(clients[i], buffer, BUFFER_SIZE);if (bytes_read == 0) {  // 客户端断开printf("Client %d disconnected\n", clients[i]);close(clients[i]);clients[i] = 0;} else {  // 广播消息buffer[bytes_read] = '\0';printf("Broadcasting: %s", buffer);for (int j = 0; j < MAX_CLIENTS; j++) {if (clients[j] > 0 && j != i) {send(clients[j], buffer, strlen(buffer), 0);}}}}}}return 0;
}

client.cclient.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <pthread.h>#define BUFFER_SIZE 1024void *receive_handler(void *arg) {int sock = *(int *)arg;char buffer[BUFFER_SIZE];while (1) {int bytes_read = read(sock, buffer, BUFFER_SIZE);if (bytes_read <= 0) {printf("Server disconnected\n");exit(EXIT_FAILURE);}buffer[bytes_read] = '\0';printf("Received: %s", buffer);}
}int main() {int sock;struct sockaddr_in server_addr;pthread_t recv_thread;char buffer[BUFFER_SIZE];// 创建客户端 socketif ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {perror("socket failed");exit(EXIT_FAILURE);}server_addr.sin_family = AF_INET;server_addr.sin_port = htons(8080);// 将 IP 地址从字符串转换为二进制形式if (inet_pton(AF_INET, "127.0.0.1", &server_addr.sin_addr) <= 0) {perror("invalid address");exit(EXIT_FAILURE);}// 连接服务器if (connect(sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {perror("connect failed");exit(EXIT_FAILURE);}printf("Connected to server. Start chatting!\n");// 创建线程接收消息pthread_create(&recv_thread, NULL, receive_handler, (void *)&sock);// 主线程发送消息while (1) {fgets(buffer, BUFFER_SIZE, stdin);send(sock, buffer, strlen(buffer), 0);}close(sock);return 0;
}

相关文章:

【嵌入式】——Linux系统远程操作和程序编译

目录 一、虚拟机配置网络设置 二、使用PuTTY登录新建的账户 1、在ubuntu下开启ssh服务 2、使用PuTTY连接 三、树莓派实现远程登录 四、树莓派使用VNC viewer登录 五、Linux使用talk聊天程序 1、使用linux自带的talk命令 2、使用c语言编写一个talk程序 一、虚拟机配置网络…...

零、HarmonyOS应用开发者基础学习总览

零、HarmonyOS应用开发者基础认证 1 整体学习内容概览 1 整体学习内容概览 通过系统化的课程学习&#xff0c;熟练掌握 DevEco Studio&#xff0c;ArkTS&#xff0c;ArkUI&#xff0c;预览器&#xff0c;模拟器&#xff0c;SDK 等 HarmonyOS 应用开发的关键概念&#xff0c;具…...

记录一次项目中使用pdf预览过程以及遇到问题以及如何解决

背景 项目中现有的pdf浏览解析不能正确解析展示一些pdf文件&#xff0c;要么内容一直在加载中展示不出来&#xff0c;要么展示的格式很凌乱 解决 方式一&#xff1a;&#xff08;优点&#xff1a;比较无脑&#xff0c;缺点&#xff1a;不能解决遇到的一些特殊问题&#xff0…...

致远OA——自定义开发rest接口

文章目录 :apple: 业务流程 &#x1f34e; 业务流程 代码案例&#xff1a; https://pan.quark.cn/s/57fa808c823f 官方文档&#xff1a; https://open.seeyoncloud.com/seeyonapi/781/https://open.seeyoncloud.com/v5devCTP/39/783.html 登录系统 —— 后台管理 —— 切换系…...

STL之vector基本操作

写在前面 我使用的编译器版本是 g 11.4.0 &#xff08;Ubuntu 22.04 默认版本&#xff09;&#xff0c;支持C17的全部特性&#xff0c;支持C20的部分特性。 vector的作用 我们知道vector是动态数组&#xff08;同时在堆上存储数组元素&#xff09;&#xff0c;我们在不确定数…...

dac直通线还是aoc直通线? sfp使用

"DAC直通线" 和 "AOC直通线" 都是高速互连线缆&#xff0c;用于数据中心、服务器、交换机等设备之间的高速互连。它们的选择主要取决于以下几个方面&#xff1a; &#x1f50c; DAC&#xff08;Direct Attach Cable&#xff0c;直连铜缆&#xff09; 材质&…...

【Linux篇】探索进程间通信:如何使用匿名管道构建高效的进程池

从零开始&#xff1a;通过匿名管道实现进程池的基本原理 一. 进程间通信1.1 基本概念1.2 通信目的1.3 通信种类1.3.1 同步通信1.3.2 异步通信 1.4 如何通信 二. 管道2.1 什么是管道2.2 匿名管道2.2.1 pipe()2.2.2 示例代码&#xff1a;使用 pipe() 进行父子进程通信2.2.3 管道容…...

Mixture-of-Experts with Expert Choice Routing:专家混合模型与专家选择路由

摘要 稀疏激活的专家混合模型(MoE)允许在保持每个token或每个样本计算量不变的情况下,大幅增加参数数量。然而,糟糕的专家路由策略可能导致某些专家未被充分训练,从而使得专家在特定任务上过度或不足专业化。先前的研究通过使用top-k函数为每个token分配固定数量的专家,…...

ai学习中收藏网址【1】

https://github.com/xuwenhao/geektime-ai-course课程⾥所有的代码部分&#xff0c;通过 Jupyter Notebook 的形式放在了 GitHub 上 https://github.com/xuwenhao/geektime-ai-course 图片创作 https://www.midjourney.com/explore?tabtop 创建填⾊本 How to Create Midjour…...

【滑动窗口】最⼤连续 1 的个数 III(medium)

⼤连续 1 的个数 III&#xff08;medium&#xff09; 题⽬描述&#xff1a;解法&#xff08;滑动窗⼝&#xff09;&#xff1a;算法思路&#xff1a;算法流程&#xff1a; C 算法代码&#xff1a;Java 算法代码&#xff1a; 题⽬链接&#xff1a;1004. 最⼤连续 1 的个数 III …...

ClawCloud的免费空间(github用户登录可以获得$5元/月的免费额度)

免费的空间 Welcome to ClawCloud Lets create your workspace 官网&#xff1a;ClawCloud | Cloud Infrastructure And Platform for Developers 区域选择新加坡 然后这个页面会变成新加坡区域&#xff0c;再按一次确定&#xff0c;就创建好了工作台。 初始界面&#xff0…...

sql之DML(insert、delete、truncate、update、replace))

&#x1f3af; 本文专栏&#xff1a;MySQL深入浅出 &#x1f680; 作者主页&#xff1a;小度爱学习 数据库使用时&#xff0c;大多数情况下&#xff0c;开发者只会操作数据&#xff0c;也是就增删改查&#xff08;CRUD&#xff09;。 增删改查四条语句&#xff0c;最重要的是查…...

Spring Boot常用注解全解析:从入门到实战

&#x1f331; Spring Boot常用注解全解析&#xff1a;从入门到实战 #SpringBoot核心 #注解详解 #开发技巧 #高效编程 一、核心启动与配置注解 1. SpringBootApplication 作用&#xff1a;标记主启动类&#xff0c;整合了Configuration、EnableAutoConfiguration和Component…...

Python 赋能区块链教育:打造去中心化学习平台

Python 赋能区块链教育:打造去中心化学习平台 引言 区块链技术正在重塑全球多个行业,而教育领域也不例外。传统的在线学习平台往往依赖中心化存储和管理模式,导致数据安全、用户隐私、资源共享等问题难以解决。而随着 Web 3.0 的发展,区块链在教育场景中的应用逐渐受到关…...

verilog float mult

module pipe_float_mul(input wire clk ,// 时钟信号input wire en ,// 使能信号input wire rst_n ,// 复位信号input wire round_cfg ,// 决…...

Android开发四大组件和生命周期及setFlags

文章目录 Android开发四大组件1. Activity&#xff08;活动&#xff09;2. Service&#xff08;服务&#xff09;3. BroadcastReceiver&#xff08;广播接收器&#xff09;4. ContentProvider&#xff08;内容提供者&#xff09;共同特点 Activity 生命周期详解完整的生命周期方…...

mysql的函数(第二期)

九、窗口函数&#xff08;MySQL 8.0&#xff09;​​ 适用于对结果集的子集&#xff08;窗口&#xff09;进行计算&#xff0c;常用于数据分析场景。 ​​ROW_NUMBER()​​ ​​作用​​&#xff1a;为每一行生成唯一的序号。​​示例​​&#xff1a;按分数降序排名 SELECT n…...

MATLAB 控制系统设计与仿真 - 39

多变量系统控制器设计实例2 假如原系统对象中有位于虚轴上的极点&#xff0c;则不能直接应用鲁棒控制设计来设计控制器。 在这样的情况下&#xff0c;需引入一个新的变量p&#xff0c;使得 即可在对象模型中用p变量取代s变量&#xff0c;这样的变换称为双线性变换&#xff0c…...

深入理解C++ 中的vector容器

一、引言 在C 的标准模板库&#xff08;STL&#xff09;中&#xff0c; vector 是一个极为常用且功能强大的序列容器。它就像是一个动态数组&#xff0c;既能享受数组随机访问元素的高效性&#xff0c;又能灵活地动态调整大小。在本文中&#xff0c;我们将深入探讨 vector …...

ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(显示输出类外设之LED)

目录 ESP-ADF外设子系统深度解析&#xff1a;esp_peripherals组件架构与核心设计&#xff08;显示输出类外设之LED&#xff09;简介模块概述功能定义架构位置核心特性 LED外设分析LED外设概述LED外设功能特点常见应用场景LED外设架构图 LED外设API和数据结构公共API事件类型配置…...

[特殊字符] Kotlin与C的类型别名终极对决:typealias vs typedef,如何让代码脱胎换骨?

在 Kotlin 中&#xff0c;typealias 是一个非常实用的关键字&#xff0c;它可以为已有的类型定义一个新的名称&#xff0c;起到简化代码和提升可读性的作用。比如&#xff1a; // 定义一个复杂函数类型的别名 typealias ClickListener (View, Int) -> Unitfun setOnClickL…...

第9期:文本条件生成(CLIP + Diffusion)详解

“让我们用一句话&#xff0c;让模型画出一幅画。” 在前几期中我们学习了 Denoising Diffusion Probabilistic Models&#xff08;DDPM&#xff09;如何在无条件情况下生成图像。而在本期&#xff0c;我们将跨入更具挑战性但也更酷的领域 —— 文本条件图像生成&#xff08;Te…...

8 编程笔记全攻略:Markdown 语法精讲、Typora 编辑器全指南(含安装激活、基础配置、快捷键详解、使用技巧)

1 妙笔在手&#xff0c;编程无忧&#xff01; 1.1 编程为啥要做笔记&#xff1f;这答案绝了&#xff01; 嘿&#xff0c;各位键盘魔法师&#xff01;学编程不记笔记&#xff0c;就像吃火锅不配冰可乐 —— 爽到一半直接噎住&#xff01;你以为自己脑子是顶配 SSD&#xff0c;结…...

C#测试linq中的左连接的基本用法

使用linq联表或者连接两个对象集合查询时一般使用的是join关键字&#xff0c;返回结果中包含两个表或两个对象集合中连接字段相等的数据记录&#xff0c;如果要实现sql语句中的左连接效果&#xff0c;并没有现成的left join关键字&#xff0c;此时可以使用DefaultIfEmpty 实现左…...

【Android面试八股文】Android系统架构【一】

Android系统架构图 1.1 安卓系统启动 1.设备加电后执行第一段代码&#xff1a;Bootloader 系统引导分三种模式&#xff1a;fastboot&#xff0c;recovery&#xff0c;normal&#xff1a; fastboot模式&#xff1a;用于工厂模式的刷机。在关机状态下&#xff0c;按返回开机 键进…...

什么是 Stream

Stream 是对集合对象功能的增强&#xff0c;它不是集合&#xff0c;也不存储数据&#xff0c;而是从集合中抽象出一条数据通道&#xff0c;让你可以用链式方式一步步处理数据。 &#x1f527; 常见操作分类 类型方法举例创建stream(), Stream.of(), Arrays.stream()中间操作fi…...

网络编程 - 4 ( TCP )

目录 TCP 流套接字编程 API 介绍 SeverSocket Socket 用 TCP 实现一个回显服务器 服务端 客户端 运行调试 第一个问题&#xff1a;PrintWriter 内置的缓冲区 - flush 刷新解决 第二个问题&#xff1a;上述代码中&#xff0c;需要进行 close 操作吗&#xff1f; 第三…...

在STM32的定时器外设中,选择使用哪个外部时钟配置函数

在STM32的定时器外设中&#xff0c;选择使用哪个外部时钟配置函数主要取决于以下几个因素&#xff1a; 时钟源类型&#xff1a; TIM_ITRxExternalClockConfig&#xff1a;使用内部触发输入(ITRx)&#xff0c;即来自其他定时器的时钟信号 TIM_TIxExternalClockConfig&#xff1…...

【Tauri2】026——Tauri+Webassembly

前言 不多废话 直言的说&#xff0c;笔者看到这篇文章大佬的文章 【04】Tauri 入门篇 - 集成 WebAssembly - 知乎https://zhuanlan.zhihu.com/p/533025312尝试集成一下WebAssembly&#xff0c;直接开始 正文 准备工作 新建一个项目 安装 vite的rsw插件和rsw pnpm instal…...

jenkins尾随命令

在访问jenkins的网址后面可以追加命令&#xff0c;比如访问地址是 http://10.20.0.124:8080/&#xff0c;常用的有以下几种方式&#xff1a; 1.关闭Jenkins 只要浏览器输入http://10.20.0.124:8080/exit即可退出&#xff0c;或者http://localhost:8080/exit 2.重启Jenkins …...

基于机器学习 LSTM 算法的豆瓣评论情感分析系统

基于机器学习 LSTM 算法的豆瓣评论情感分析系统 博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f44…...

腾讯云对象存储m3u8文件使用腾讯播放器播放

参考腾讯云官方文档&#xff1a; 播放器 SDK Demo 体验_腾讯云 重要的一步来了&#xff1a; 登录腾讯云控制台&#xff0c;找到对象存储的存储桶。 此时&#xff0c;再去刷新刚才创建的播放器html文件&#xff0c;即可看到播放画面了。...

基于chatgpt和deepseek解答显卡的回答

当然可以&#xff01;了解显卡特别是英伟达&#xff08;NVIDIA&#xff09;的系列&#xff0c;对于选购、升级或者了解游戏和创作性能都很重要。下面我帮你系统整理一下 NVIDIA 显卡的各个系列&#xff0c;并加点选购建议&#xff0c;方便你快速上手。 chatgpt &#x1f9e0; …...

2025年渗透测试面试题总结-拷打题库06(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 1. Sleep被禁用后的SQL注入 2. XSS属性控制利用 3. CSRF防护 4. 危险请求头 5. XXE高发场景 6. Ja…...

【一起学Rust】使用Thunk工具链实现Rust应用对Windows XP/7的兼容性适配实战

前言 在Rust语言快速发展的今天&#xff0c;开发者经常面临将现代语言特性与遗留系统兼容的挑战。特别是在工业控制、嵌入式设备等场景中&#xff0c;Windows XP/7等经典操作系统仍占据重要地位。本文深入解析如何通过Thunk工具链突破Rust编译器对旧版Windows系统的兼容性限制…...

leetcode 674. Longest Continuous Increasing Subsequence

目录 题目描述 第一步&#xff0c;明确并理解dp数组及下标的含义 第二步&#xff0c;分析明确并理解递推公式 第三步&#xff0c;理解dp数组如何初始化 第四步&#xff0c;理解遍历顺序 代码 题目描述 这是动态规划解决子序列问题的例子。与第300题的唯一区别就是&#…...

在VMware Workstation 17 Pro上实现Windows与UOS虚拟机之间复制粘贴文本及文件

在VMware Workstation 17 Pro上实现Windows与UOS虚拟机之间复制粘贴文本及文件 在本教程中&#xff0c;我们将介绍如何在VMware Workstation 17 Pro中安装UOS虚拟机&#xff0c;并通过安装open-vm-tools-desktop软件来实现Windows和UOS系统之间的文本和文件复制粘贴功能。 1.…...

十一、数据库day03--SQL语句02

文章目录 一、查询语句1. 基本查询2. 条件查询2.1 ⽐较运算符&逻辑运算符2.2 模糊查询2.3 范围查询2.4 判断空 3. 其他复杂查询3.1 排序3.2 聚合函数3.3 分组3.4 分页查询 二、回顾1. 使⽤ Navicat ⼯具中的命令列2.命令⾏基本操作步骤 提示&#xff1a;以下是本篇文章正文…...

第6章 类文件结构《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》

第6章 类文件结构 代码编译的结果从本地机器码转变为字节码&#xff0c;是存储格式发展的一小步&#xff0c;却是编程语言发展的一大步。 6.1 概述 老师说过&#xff0c;计算机只认识0和1&#xff0c;所以我们写的程序需要被编译器翻译成由0和1构成的二进制格式才能被计算机…...

【Vue】模板语法与指令

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Vue 文章目录 1. Vue 模板语法基础1.1 文本插值1.2 原始 HTML1.3 属性绑定 2. Vue 指令系统2.1 条件渲染2.2 列表渲染2.3 事件处理2.4 表单输入绑定 3. 计算属性与侦听器3.1 计算属性3.2 侦听器 4. 类与样式绑定4.1 绑定 HTML 类…...

Python语法系列博客 · 第5期[特殊字符] 模块与包的导入:构建更大的程序结构

上一期小练习解答&#xff08;第4期回顾&#xff09; ✅ 练习1&#xff1a;判断偶数函数 def is_even(num):return num % 2 0print(is_even(4)) # True print(is_even(5)) # False✅ 练习2&#xff1a;求平均值 def avg(*scores):return sum(scores) / len(scores)print(…...

HashMap 初步理解 put 操作流程 HashMap 的线程安全问题

一、HashMap 核心原理 HashMap 是 Java 中最常用的哈希表实现&#xff0c;基于 数组 链表/红黑树 的复合结构&#xff0c;核心特性如下&#xff1a; 哈希函数 键的哈希值通过 hashCode() 计算&#xff0c;并通过扰动函数优化分布&#xff1a;static final int hash(Object ke…...

服务治理-服务发现和负载均衡

第一步&#xff1a;引入依赖 第二步&#xff1a;配置地址 改写购物车服务的代码 负载均衡成功实现。 假如有一个服务挂了&#xff0c;比如说8081&#xff0c;cart-service能不能正常访问&#xff0c;感知到。 再重新启动8081端口。 不管服务宕机也好&#xff0c;还是服务刚启动…...

GNU,GDB,GCC,G++是什么?与其他编译器又有什么关系?

文章目录 前言1. GNU和他的工具1.1 gcc与g1.2 gdb 2.Windows的Mingw/MSVC3.LLVM的clang/clang4.Make/CMake 前言 在开始之前我们先放一段Hello World&#xff1a;hello.c #include <stdio.h>int main() {printf("Hello World");return 0; }然后就是一段老生常…...

定制一款国密浏览器(9):SM4 对称加密算法

上一章介绍了 SM3 算法的移植要点,本章介绍对称加密算法 SM4 的移植要点。 SM4 算法相对 SM3 算法来说复杂一些,但还是比较简单的算法,详细算法说明参考《GMT 0002-2012 SM4分组密码算法》这份文档。铜锁开源项目的实现代码在 sm4.c 文件中,直接拿过来编译就可以。 但需要…...

kafka集群认证

1、安装Kerberos(10.10.10.168) yum install krb5-server krb5-workstation krb5-libs -y ​ 查看版本 klist -V ​ Kerberos 5 version 1.20.1 ​ 编辑/etc/hosts 10.10.10.168 ms1 10.10.10.150 ms2 10.10.10.110 ms3 vim /etc/krb5.conf # Configuration snippets ma…...

Mermaid 是什么,为什么适合AI模型和markdown

什么是 Mermaid&#xff1f; Mermaid 是一个基于 JavaScript 的开源绘图和图表工具&#xff0c;允许用户通过简单的文本语法创建图表。它支持生成流程图、时序图、类图、甘特图等多种类型的可视化内容&#xff0c;并直接从类似 Markdown 的代码中渲染。Mermaid 因其与 Markdow…...

为什么信号完整性对于高速连接器设计至关重要?

外部连接器通过在各种电子元件和系统之间可靠地传输数据而不损失保真度来保持信号完整性。在本文中&#xff0c;我们将讨论信号完整性的重要性&#xff0c;回顾高速部署挑战&#xff0c;并重点介绍各种连接器设计策略&#xff0c;以防止失真和降级。 了解连接器信号完整性挑战…...

【FFmpeg从入门到精通】第三章-FFmpeg转封装

1 音视频文件转MP4格式 在互联网常见的格式中&#xff0c;跨平台最好的应该是MP4文件&#xff0c;因为MP4文件既可以在PC平台的 Flashplayer 中播放&#xff0c;又可以在移动平台的 Android、ios 等平台中进行播放&#xff0c;而且使用系统默认的播放器即可播放&#xff0c;因…...

PG数据库推进医疗AI向量搜索优化路径研究(2025年3月修订版)

PG数据库推进医疗AI向量搜索优化路径研究 一、医疗 AI 向量搜索的发展现状与挑战 1.1 医疗数据特征与检索需求 医疗数据作为推动医疗领域进步与创新的关键要素,具有鲜明且复杂的特征。从多模态角度看,医疗数据涵盖了结构化数据,如患者基本信息、检验检查报告中的数值结果;…...