Rust unix domain socket
先用起来再说
use std::io::prelude::*;
use std::os::unix::net::UnixStream;fn main() {let mut stream: UnixStream;let mut buffer = vec![0u8; 4096];match UnixStream::connect("/tmp/hello.world.serv") {Ok(handle) => {stream = handle;match stream.write_all("cmd=read".as_bytes()) {Ok(_) => {println!("send to unix domain socket successfully");match stream.read(&mut buffer) {Ok(_) => {println!("read uds buffer okay");//This step change utf8 code for recv bufferprintln!("Content:{:?}", String::from_utf8(buffer));}Err(error) => println!("read uds buffer errors {:?}", error),}}Err(error) => println!("{:?}", error),}}Err(error) => {println!("{:?}", error)}};
}
编写rust 不是看编译时报错,而是更重要的是关注,lsp 返回的语法错误,只要又错误,大概率是不会编译成功的
rust使用了C的连接器,但是丰富了C 的库,从项目中的小组件开始迭代
除非,linux 驱动有crates 否则不建议使用 unsafe 去调用
use std::io::prelude::*;
use std::os::unix::net::UnixStream;#[allow(unused_mut)]
#[allow(non_snake_case)]
fn main() {let mut stream: UnixStream;let mut buffer = vec![0u8; 4096];let mut cmd = ["cmd=para_list", "cmd=read"];let mut cmdVec = cmd.to_vec();for it in cmdVec.iter_mut() {if *it == "cmd=para_list" {*it = "cmd=para_all_list";} else if it == &"cmd=read" {*it = "cmd=read_all_cache";}}println!("new static str vec: {:?}", cmdVec);match UnixStream::connect("/tmp/uds.network.serv") {Ok(handle) => {stream = handle;match stream.write_all("cmd=read".as_bytes()) {Ok(_) => {println!("send to unix domain socket successfully");match stream.read(&mut buffer) {Ok(_) => {println!("read uds buffer okay");//This step change utf8 code for recv bufferprintln!("Content:{:?}", String::from_utf8(buffer));}Err(error) => println!("read uds buffer errors {:?}", error),}}Err(error) => println!("{:?}", error),}}Err(error) => {println!("{:?}", error)}};
}
和python 一样的可用性
也有引用和解引用,但是用起来就比较麻烦
也有指针和原始指针
不考虑复杂的过程宏和装饰器的作用大差不差
相关文章:
Rust unix domain socket
先用起来再说 use std::io::prelude::*; use std::os::unix::net::UnixStream;fn main() {let mut stream: UnixStream;let mut buffer vec![0u8; 4096];match UnixStream::connect("/tmp/hello.world.serv") {Ok(handle) > {stream handle;match stream.write_…...
初识分布式键值对存储etcd
欢迎大家到我的博客浏览。胤凯 (oyto.github.io)大家好,今天我带大家来学习一下 etcd。 一、什么是 etcd etcd 是一个开源的分布式键值存储系统,主要用于构建分布式系统中那点服务发现、配置管理、分布式锁等场景。它采用 Raft 一致性算法来确保所有节…...
docker swarm集群部署
文章目录 前言一、安装docker1.1 解压1.2 配置docker 存储目录和dns1.3 添加docker.service文件1.4 docker 启动验证 二、docker swarm 集群配置2.1 关闭selinux2.2 设置主机名称并加入/etc/hosts2.3 修改各个服务器名称(uname -a 进行验证)2.4 初始化sw…...
MySQL进阶_9.事务基础知识
文章目录 第一节、数据库事务概述1.1、基本概念1.2、事务的ACID特性 第二节、如何使用事务 第一节、数据库事务概述 1.1、基本概念 事务 一组逻辑操作单元,使数据从一种状态变换到另一种状态。事务处理的原则 保证所有事务都作为 一个工作单元 来执行,…...
IDEA调用接口超时,但Postman可成功调用接口
📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…...
TableUtilCache:针对CSV表格进行的缓存
TableUtilCache:针对CSV表格进行的缓存 文件结构 首先来看下CSV文件的结构,如下图: 第一行是字段类型,第二行是字段名字;再往下是数据。每个元素之间都是使用逗号分隔。 看一下缓存里面存储所有表数据的字段 如下图ÿ…...
java源码-工程讲解
说明: 源码工程目录讲解部分,讲解过程会让大家对后端源码工程有一个大致的了解,能让大家在此改造,就可以衍生出一些新的功能,需要对java技术深入了解,需要看后续java技术讲解部分,源码也是以前很…...
K8S基础笔记
1、namespace 名称空间用来对集群资源进行隔离划分,默认只隔离资源,不隔离网络k8s默认的名称空间为default 查看k8s的所有命名空间 kubectl get namespace 或者 kubectl get ns 创建名称空间 kubectl create ns 名称 或使用yaml方式 编写yamlkub…...
十一、统一网关GateWay(搭建网关、过滤器、跨越解决)
目录 一、网关技术的实现 在SpringCloud中网关的实现包括两种: 作用: 二、搭建网关服务 1、新建模块,并添加依赖 2、新建Gateway包,并编写启动类 3、编写yml文件 4、启动服务,并在网页内测试 5、步骤 三、路由断言工厂 …...
C语言--每日五道选择题--Day20
第一题 1. 在如下结构定义中,不正确的是( )。 A: struct student { int no; char name[10]; float score; }; B: struct stud[20] { int no; char name[10]; float score; }; C: struct stu…...
Fourier分析导论——第6章——R^d 上的Fourier变换(E.M. Stein R. Shakarchi)
第6章 上的 Fourier 变换 It occurred to me that in order to improve treatment planning one had to know the distribution of the at- tenuation coefficient of tissues in the body. This in- formation would be useful for diagnostic purposes and would con…...
音视频技术在手机上的应用与挑战
// 编者按:随着手机相机功能日益强大,4k,8k,各类特色短视频的拍摄,编辑、播放需求日益增长,短视频应用的火爆也对当前的手机音视频技术提出了更高的要求,如何更好地提高用户体验成为了行业共同…...
三十分钟学会SCALA
SCALA Scala 是一种运行在 JVM上的函数式的面向对象语言。 Scala 是兼容的:兼容 Java,可以访问庞大的 Java 类库;Scala 是精简的:Scala 表达能力强,一行代码抵得上多行 Java 代码,开发速度快。可以让程序…...
leetcode做题笔记242. 有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 示例 1: 输入: s "anagram", t "nagaram" 输出: true示例 2: 输…...
沸点 | Ultipa 图数据库金融应用场景优秀案例首批入选,金融街论坛年会发布
为推进图数据库在金融行业的创新应用试点,近日,在2023金融街论坛年会“全球金融科技中心网络年会暨ZIBS北京论坛”上,北京前沿金融监管科技研究院发布了基于国际标准组织——国际关联数据基准委员会(LDBC)的《图数据库…...
GaussDB SQL基础语法示例-GOTO语句
目录 一、前言 二、在GaussDB数据库中的概念及语法 1、基本概念 2、语法 三、在GaussDB数据库中的基础示例和限制场景说明 1、基础示例 2、限制场景说明 四、小结 一、前言 SQL是用于访问和处理数据库的标准计算机语言。GaussDB支持SQL标准(默认支持SQL2、…...
ClickHouse 物化视图
ClickHouse的物化视图是一种查询结果的持久化,它确实是给我们带来了查询效率的提升。用户查起来跟表没有区别,它就是一张表,它也像是一张时刻在预计算的表,创建的过程它是用了一个特殊引擎,加上后来 as select…...
原理Redis-ZipList
ZipList 1) ZipList的组成2) ZipList的连锁更新问题3) 总结 1) ZipList的组成 ZipList 是一种特殊的“双端链表” ,由一系列特殊编码的连续内存块组成。可以在任意一端进行压入/弹出操作, 并且该操作的时间复杂度为 O(1)。 ZipListEntry: ZipList 中的Entry并不像…...
小迪安全笔记——Web架构篇语言中间件数据库系统源码获取
1、信息搜集搜集哪些东西? 架构信息收集,主要包括:操作系统、开发语言、中间件容器、数据库类型、第三方软件等; web源码信息收集,CMS开源?闭源?售卖?自主研发? 进行web…...
Linux从 全栈开发 centOS 7 到 运维
Linux从 全栈开发centOS 7 到 运维 一 Linux 入门概述1.1 操作系统1.2 Linux 简介1.3 Linux 系统组成1.4 Linux 发行版1.4 Linux 应用领域1.5 Linux vs Windows 二 环境搭建【狂神说Java】服务器购买及宝塔部署环境说明为什么程序员都需要一个自己的服务器服务器如何购买买完服…...
SpringBoot项目里用Sharding-JDBC做分库分表,这5个配置项最容易踩坑
SpringBoot整合Sharding-JDBC分库分表:五大高频配置陷阱与实战解决方案 当数据库单表数据量突破千万级大关时,分库分表几乎是每个Java开发者必须面对的课题。作为Apache ShardingSphere的核心模块,Sharding-JDBC以其轻量级、低侵入的特性成为…...
为什么选择update-golang:5大优势对比传统安装方式
为什么选择update-golang:5大优势对比传统安装方式 【免费下载链接】update-golang update-golang is a script to easily fetch and install new Golang releases with minimum system intrusion 项目地址: https://gitcode.com/gh_mirrors/up/update-golang …...
Neoscroll.nvim与Telescope集成:实现搜索结果的流畅滚动
Neoscroll.nvim与Telescope集成:实现搜索结果的流畅滚动 【免费下载链接】neoscroll.nvim Smooth scrolling neovim plugin written in lua 项目地址: https://gitcode.com/gh_mirrors/ne/neoscroll.nvim Neoscroll.nvim是一款用Lua编写的Neovim平滑滚动插件…...
Yeti社区插件生态解析:如何利用现有资源快速扩展平台功能
Yeti社区插件生态解析:如何利用现有资源快速扩展平台功能 【免费下载链接】yeti Your Everyday Threat Intelligence 项目地址: https://gitcode.com/gh_mirrors/ye/yeti Yeti作为一款强大的威胁情报平台(Your Everyday Threat Intelligence&…...
基于Vue 3与JSON数据构建MBTI运势生成器:前端实战开发指南
1. 项目概述:当MBTI遇上运势,一个技术驱动的趣味应用最近在GitHub上看到一个挺有意思的项目,叫“mbti-fortune”,作者是leilei926524-tech。光看名字,你可能会觉得这又是一个简单的星座运势或者性格测试的变种。但作为…...
PCI、PCIe与InfiniBand接口技术对比与应用解析
1. 计算机接口技术演进背景在服务器和PC硬件架构中,I/O接口技术始终是决定系统性能的关键因素之一。作为从业15年的系统架构师,我见证了从传统PCI总线到现代高速互连技术的完整演进历程。这种演进并非简单的替代关系,而是针对不同应用场景的技…...
2012年Accellera标准演进:SystemC、UCIS与AMS如何重塑EDA设计流程
1. 回顾2012:Accellera在电子设计自动化标准演进中的关键一年对于从事半导体设计,特别是系统级设计、验证和IP集成的工程师来说,2012年是一个值得标记的年份。那一年,行业正从2008年金融危机后的缓慢复苏中走出,移动计…...
口令猜测—PCFG
PCFG 口令猜测方法介绍 1. PCFG 是什么 PCFG 全称是 Probabilistic Context-Free Grammar,即概率上下文无关文法。 在口令猜测研究中,PCFG 的核心思想是:人类设置口令并不是完全随机的,而是具有明显的结构和习惯。例如,…...
网盘直链下载助手完整教程:告别限速,解锁九大网盘真实下载链接
网盘直链下载助手完整教程:告别限速,解锁九大网盘真实下载链接 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / …...
InfiniBand(IB)网络介绍 (英伟达/Mellanox)的IB卡,从2022年底起就已经正式对中国断供;你现在用的shca IB卡,是国产替代的曙光自研IB卡
InfiniBand(IB) 物理上:IB专用网卡(HCA) IB专用交换机 光纤/铜线协议:完全独立的IB协议,不是TCP/IP定位:超级高铁专线——只给超算、AI集群、高性能存储用核心黑科技:RD…...
