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

尝试以语法对照表格形式学习新语言:c,rust

以语法对照表格形式学习新语言,以rust为例。
关于rust的个人看法:

  • 能否替代c?部分场景可以,长远看并不会。如果c再扩一些关键字,类似cpp的吸星大法式扩充,rust并不具备优势。
  • 解决了c的内存管理问题?部分解决。所有权概念是将c中内存管理模式加了约束,并在编译期做了检查。
  • 关于语言的生态位,个人感觉rust很难替代c的生态位。rust似乎是科研人员对c等语言进行研究后,加入了一些新的,实际上已有的概念。往往是编程实践中的范式,做了语言层面的语法支持。类似openmp扩展。
  • 语言本质上逃不脱图灵机的定义,在最小实现基础上,为了方便、安全、开发效率等,加了编程范式的语法支持。
  • c、cpp语言已经做得够好,设计哲学也是效率至上,安全问题交给开发者负责。rust引入的所有权概念,在c、cpp中实际也可以用编程范式(智能指针)实现。
  • AI时代是否会出现最合适AI+人合作的语言?如果有,大概率会在c语言基础上扩展概念和范式。毕竟c的数据基础更好。个人倾向于认为rust有点过设计了。cpp过于复杂,也过设计了。个人感觉未来AI更适合使用以c为基础的语言,适当扩展一些概念。
crust
链接https://www.runoob.com/cprogramming/c-tutorial.htmlhttps://www.runoob.com/rust/rust-tutorial.html
https://www.runoob.com/cplusplus/cpp-tutorial.htmlhttps://kaisery.github.io/trpl-zh-cn/title-page.html
标准库stdio.h … https://www.runoob.com/cprogramming/c-standard-library.htmlhttps://doc.rust-lang.org/stable/std/all.html
在线工具https://www.runoob.com/try/runcode.php?filename=helloworld&type=chttps://play.rust-lang.org/?version=stable&mode=debug&edition=2021
rust编译器依赖于c编译器
语言类型面向过程多范式:面向对象、函数式和并发编程
注释// or /* */// or /* */
行结尾;;
路径分隔符/ or \::
代码块{}{}
函数体表达式{}
大小写区分同c
标识符以字母 A-Z 或 a-z 或下划线 _ 开始,后跟零个或多个字母、下划线和数字(0-9)。同c
关键字https://www.runoob.com/cprogramming/c-basic-syntax.htmlhttps://github.com/rust-lang/book/blob/main/src/appendix-01-keywords.md
keysauto,break,case,char,const,continue,default,do,double,as,async,await,break,const,continue,crate,dyn,else,enum,extern,
else,enum,extern,float,for,goto,if,int,long,register,return,short,false,fn,for,if,impl,in,let,loop,match,mod,move,mut,pub,ref,return,
signed,sizeof,static,struct,switch,typedef,unsigned,union,void,volatile,whileSelf,self,static,struct,super,trait,true,type,union,unsafe,use,where,while,
c99 keys_Bool,_Complex,_Imaginary,inline,restrictabstract,become,box,do,final,macro,override,priv,try,typeof,unsized,virtual,yield,
c11 keys_Alignas,_Alignof,_Atomic,_Generic,_Noreturn,_Static_assert,_Thread_local
数据类型char,unsigned char,signed char ,int,unsigned int,short,unsigned short,long,unsigned longi8,u8,i16,u16,i32,u32,i64,u64,i128,u128,isize,usize
float,double,long doublef32,f64,f128
_Boolbool
void无。空元组 () “unit type”
unicodechar(4byte)建议utf8
字符串char str[] = “RUNOOB”;let str = String::from(“RUNOOB”); let string = String::new(); let one = 1.to_string();
字符串切片自行实现let part1 = &str[0…5];//类似string_view
非字符串切片自行实现let part = &arr[0…3];
变量int i=0;let i:i32 = 0;
变量声明extern int i;extern { static i: i32;}
重影(Shadowing)let x = 5; let x = x + 1;
左值指向内存位置的表达式同c
右值存储在内存中某些地址的数值同c
常量long myLong = 100000L;float myFloat = 3.14f;char myChar = ‘a’;char myString[] = “Hello, world!”;const MY_LONG: i64 = 100000; const MY_STRING: &str = “Hello, world!”; …
#define PI 3.14159const PI: f64 = 3.14159;
const int MAX_VALUE = 100;const MAX_VALUE:u32 = 100;
存储类型auto,register,static,externstatic,extern
所有权每个值都有一个变量,称为其所有者。一次只能有一个所有者。当所有者不在程序运行范围时,该值将被删除。
生命周期{}代码块内同c
静态生命周期static&'static
生命周期注释描述引用生命周期。声明两个引用的生命周期一致。fn longer<'a>(s1: &'a str, s2: &'a str) -> &'a str{…}
移动(Move)let s1 = String::from(“hello”);let s2 = s1; println!(“{}, world!”, s1); // 错误!s1 已经失效
克隆(Clone)let s1 = String::from(“hello”);let s2 = s1.clone(); println!(“{}, world!”, s1);
算术运算符+ -*/% ++ –+ -*/%
关系运算符== != > < >= <=同c
逻辑运算符&& || !同c
位运算符& | ^ ~ << >>同c
赋值运算符= += -= *= /= %= &= |= ^= <<= >>=同c
三元运算符(a > 0)? 1:-1if (a > 0) { 1 } else { -1 }
sizeof运算符sizeof()use std::mem; std::mem::size_of(…)
引用和解引用运算符& *& *
区间运算符… …=
运算符优先级https://www.runoob.com/cprogramming/c-operators.html
用()改变求值顺序同c
判断/条件语句if(…){…}else{…}if(…){…}else{…} 可以不要(),仅支持bool判断
switch分支判断switch(…){case …:break;case …:break;default:…;}无,用match替代
if let无,用if替代if let 0 = i {println!(“zero”);}else{…}
循环for(;; ){} while(){} do{}while();while(){} for i in a.iter(){…} loop{… break; …}
break,continuebreak,continue
goto
函数定义int max(int x, int y) {…}fn max(x: i32, y: i32)->i32 {…}
函数嵌套fn main() { fn five() -> i32 {5}}
函数调用int ret = max(a, b);let ret: i32 = max(a, b);
参数作用域全局变量,局部变量,形式参数为局部变量同c。多了借用(borrowing)和可变借用(mutable borrowing)概念
可变参数… 具体示例见printf实现
数组int i_array[] = {1, 2, 3, 4, 5};let mut i_array: [i32; 5] = [1, 2, 3, 4, 5];
向量无。用数组替代let vector: Vec = Vec::new(); let vector = vec![1, 2, 4, 8];外加大量的方法。
数组下标>=0同c
数组访问i_array[i]i_array[i]
多维数组int i_a2[3][3];let mut i_a2: [[i32; 3]; 3] = [[0; 3]; 3];
动态数组通过指针和malloc实现let mut dynamic_array: Vec< i32 > = Vec::new();
map无。自行实现。use std::collections::HashMap;
指针int *p=NULL;
引用let s1 = String::from(“hello”);let s2 = &s1;
可变引用let mut s1 = String::from(“run”);let s2 = &mut s1;
垂悬引用编译期识别,eg:fn dangle() -> &String { let s = String::from(“hello”); &s}
地址取地址方式&t同c
函数指针typedef int (*fun_ptr)(int,int);let func_ptr: fn(i32,i32) -> i32;
枚举enum DAY{ MON=1, TUE, WED, THU, FRI, SAT, SUN};enum Book {Papery, Electronic} enum Book { Papery(u32), Electronic(String),}
枚举赋值enum Book {Papery { index: u32 },Electronic { url: String },} let book = Book::Papery{index: 1001};
match无,类似switchmatch book {Book::Papery { index } => { println!(“Papery book {}”, index); }, Book::Electronic { url } => { println!(“E-book {}”, url); }}
NULLNULL==0
Option枚举替代NULL。enum Option< T > {Some(T), None,}
let opt: Option<&str> = Option::None;match opt {Option::Some(something) => { println!(“{}”, something);}, Option::None => { println!(“opt is nothing”); }}
结构体struct SIMPLE{ int a; char b; double c;};struct SIMPLE{ a:i32; b:i8; c:f64;}
复合类型/元组let tup: (i32, f64, u8) = (500, 6.4, 1);let (x, y, z) = tup;
元组结构体struct Color(u8, u8, u8);let black = Color(0, 0, 0);
单元结构体struct UnitStruct;//无成员
结构体成员访问. 或 ->只用. 没有->
结构体方法struct Rectangle { width: u32, height: u32,} impl Rectangle { fn area(&self) -> u32 {self.width * self.height}}
结构体关联函数impl Rectangle { fn create(width: u32, height: u32) -> Rectangle { Rectangle { width, height } }} //impl 可以写多次
输出结构体println!(“rect1 is {:?}”, rect1);//属性较多的话可以使用另一个占位符 {:#?}
共用体union Data{ int i; float f; char str[20];};enum Data { Integer(i32), Float(f32), String([char; 20]),}
共用体成员访问同结构体match …
位域struct bs{ int a:8; int b:2; int c:6;};#[repr©] #[derive(Debug)] struct BitStruct { a: u8, b: u8, c: u8,}
位域成员访问同结构体同c
别名typedef unsigned char BYTE;type BYTE = u8;
程序入口int main( int argc, char *argv[] )fn main(){let args = std::env::args();println!(“{:?}”, args);}
输入int scanf(const char *format, …) 函数从标准输入流 stdin 读取输入stdin().read_line(&mut str_buf).expect(“Failed to read line.”);
输出int printf(const char *format, …) 函数把输出写入到标准输出流 stdoutprintln!(“Your input line is \n{}”, str_buf);
文件读写FILE *fopen( const char *filename, const char *mode ); int fclose( FILE *fp );int fputs( const char *s, FILE *fp );char *fgets( char *buf, int n, FILE *fp );fread(…)fwrite(…)…use std::fs; let text = fs::read_to_string(“D:\text.txt”).unwrap(); let mut file = fs::File::open(“D:\text.txt”).unwrap(); file.read(&mut buffer).unwrap();fs::write(…) …
文件打开权限设置const char *modelet mut file = OpenOptions::new().read(true).write(true).open(“D:\text.txt”)?;
预处理#define #include #undef #ifdef #ifndef #if #else #elif #endif无,用宏替代
#errorcompile_error!
#pragma#[allow()] 和 #[warn()] 等
预定义宏__DATE__ __TIME__ __FILE__ __LINE__ __STDC__无。运行时有部分对应。
预处理器运算符\ # ##
宏带参数#define square(x) ((x) * (x))macro_rules! square { (KaTeX parse error: Expected '}', got 'EOF' at end of input: x:expr) => { (x) * ($x) };}
头文件#include <stdio.h> #include “my_head.h”use std::io::stdin;
类型转换int i=3;double d = (double)i;let d: f64 = i as f64;
错误处理extern int errno ;fprintf(stderr, “错误号: %d\n”, errno); perror(“通过 perror 输出错误”); fprintf(stderr, “错误号对应的描述: %s\n”, strerror( errno ));可恢复错误用 Result<T, E> 类来处理,对于不可恢复错误使用 panic! 宏来处理。支持回溯。
回溯非自带支持。run with RUST_BACKTRACE=1 environment variable to display a backtrace.
Result<T, E>用int自行实现enum Result<T, E> { Ok(T), Err(E),} 在 Rust 标准库中可能产生异常的函数的返回值都是 Result 类型的。
?符号? 符仅用于返回值类型为 Result<T, E> 的函数
unwrap,expect可恢复错误按不可恢复错误处理
除0异常,崩溃线程 panic,异常,崩溃
程序退出状态exit(EXIT_SUCCESS); 0为正常状态。EXIT_FAILURE==-1process::exit(0);
递归一般通过递归函数实现同c
内存管理malloc free通过所有权和智能指针(如 Box< T>、Rc< T> 和 Arc< T>)
命令行参数int main( int argc, char *argv[] )fn main()无,通过let args: Vec< String> = env::args().collect();获得
随机数srand(time(0)) rand()use rand::Rng; rand::rngs::StdRng::seed_from_u64(seed);rng.gen();
排序void qsort(void *b, size_t n, size_t s, compar_fn cmp);sort()
查找void *bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar);binary_search(t)
组织管理.h.c.lib.dll …箱(Crate)、包(Package)、模块(Module)
访问权公共(public)和私有(private),默认私有,eg: pub mod government { pub fn govern() {} }
模块(Module)无,有点像cpp的namespacemod nation {mod government {fn govern() {}} mod congress {fn legislate() {}} mod court {fn judicial() {}}}
模块自描述pub fn message() -> String { String::from(“This is the 2nd module.”)}// second_module.rs文件头
路径绝对路径从 crate 关键字开始描述。相对路径从 self 或 super 关键字或一个标识符开始描述。
useuse crate::nation::government::govern as nation_govern;
泛型函数_Genericfn max< T >(array: &[T]) -> T {…}
泛型结构struct Point< T > {x: T, y: T}
特性(trait)trait Descriptive { fn describe(&self) -> String;} impl < 特性名 > for < 所实现的类型名 >
接口(Interface)无。通过一组函数指针实现。trait类似,但可以定义默认实现
继承无。通过派生类包含基类成员实现同c
多态无。通过函数指针实现。通过特性(trait)实现
并发(concurrent)自行解决安全高效的处理并发是 Rust 诞生的目的之一。编译期解决部分问题。
并行(parallel)threadopenmp
线程(thread)系统库use std::thread;thread::spawn(…);
闭包无,函数指针|arg1, arg2, …| -> T {…}
Lambda无,函数指针无,闭包
实现消息通道(channel)=发送者(transmitter)+接收者(receiver)。use std::sync::mpsc;let (tx, rx) = mpsc::channel();
代码例子https://www.runoob.com/cprogramming/c-examples.html

相关文章:

尝试以语法对照表格形式学习新语言:c,rust

以语法对照表格形式学习新语言&#xff0c;以rust为例。 关于rust的个人看法&#xff1a; 能否替代c&#xff1f;部分场景可以&#xff0c;长远看并不会。如果c再扩一些关键字&#xff0c;类似cpp的吸星大法式扩充&#xff0c;rust并不具备优势。解决了c的内存管理问题&#x…...

408计算机网络--基础概论

学习计算机网络走以前需要首先明白一个大的概念&#xff0c;计算机网络通常分为通信子网&#xff08;实现数据通信&#xff09;和资源子网&#xff08;实现资源共享/数据处理&#xff09;七层妖塔 计算机网络&#xff1a;是一个将分散的、具有独立功能的计算机系统&#xff0…...

数据库应用:kylin 部署 达梦数据库DM8

目录 一、实验 1.环境 2.部署前规划 3.部署达梦数据库DM8 4.创建数据库及数据库事例管理 5.达梦数据库的基本操作 二、问题 1.xhost命令报错 2.执行安装程序DMInstall.bin 报错 3.解压安装程序报错 4.安装程序找不到文件 5.图像化界面打不开 6.安装内存太小 7.打开…...

GO框架基础 (二)、sqlx库

在 Go 语言中&#xff0c;sqlx 包是一个用于数据库操作的库&#xff0c;它建立在标准库的 database/sql 包之上&#xff0c;并提供了一些额外的功能&#xff0c;以简化和增强与数据库的交互。sqlx 的目标是通过提供更方便的 API 和一些附加功能来改善在 Go 中进行 SQL 数据库查…...

Expected class selector “.menuChildMall“ to be kebab-case报错原因

![在这里插入图片描述](https://img-blog.csdnimg.cn/dire ct/6b72bda760a2497a90558d48bd0a4de3.png) 使用stylelint格式化css文件时候报上述错误&#xff1a; 原因&#xff1a; css类名未使用-分隔符 将类名修改为&#xff1a; .menu-child-mall形式即可...

NC文件不规则裁剪(利用shp文件裁剪)(三)

文章目录 前言实例数据代码部分需要的库加载文件写入地理信息裁剪NC结果 完整代码奉上 前言 Hello大家好呀&#xff0c;最近正好需要用到多个SHP去裁剪NC&#xff0c;按照我以前的两种办法&#xff08;办法1和办法2&#xff09;操作的话&#xff0c;我自己都会破防&#xff0c…...

java 宠物在线商城系统Myeclipse开发mysql数据库web结构jsp编程servlet计算机网页项目

一、源码特点 java 宠物在线商城系统是一套完善的java web信息管理系统 servletdaobean mvc模式&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S 模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&…...

三防平板丨手持工业平板丨ONERugged工业三防平板丨推动数字化转型

随着科技的发展&#xff0c;数字化转型已经成为企业转型升级的必由之路。而在数字化转型中&#xff0c;三防平板作为一种重要的工具&#xff0c;可以极大地推动企业的数字化转型。本文将从以下几个方面探讨三防平板如何推动数字化转型。 一、提高工作效率 ONERugged加固平板的…...

【Linux | C++ 】基于环形队列的多生产者多消费者模型(Linux系统下C++ 代码模拟实现)

阅读导航 引言一、生产者消费者模型二、环形队列简介三、基于环形队列的生产者消费者模型&#xff08;C 代码模拟实现&#xff09;⭕Makefile文件⭕ . h 头文件✅sem.hpp✅ringQueue.hpp ⭕ . cpp 文件✅testMain.cpp 温馨提示 引言 在上一篇文章中&#xff0c;我们深入探讨了…...

【Docker】Docker存储卷

文章目录 一、什么是存储卷二、为什么需要存储卷三、存储卷分类四、管理卷Volume创建卷方式一&#xff1a;Volume 命令操作方式二&#xff1a;-v 或者--mount 指定方式三&#xff1a;Dockerfile 匿名卷 操作案例Docker 命令创建管理卷Docker -v 创建管理卷Docker mount 创建管理…...

基于python的租车管理平台/汽车租赁网站

功能介绍 平台采用B/S结构&#xff0c;后端采用主流的Python语言进行开发&#xff0c;前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 前台功能包括&#xff1a;首页、详情页、用户中心、家政入驻模块。后台功能包括&#xff1a;总览、车辆管理、分类管理…...

【JVM】双亲委派机制

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;JVM ⛺️稳中求进&#xff0c;晒太阳 双亲委派机制 在Java中如何使用代码的方式去主动加载一个类呢&#xff1f; 方式1&#xff1a;使用Class.forName方法&#xff0c;使用当前类的类加载…...

分布式id实战

目录 常用方式 特征 潜在问题 信息安全 高性能 UUID 雪花算法 数据库生成 美团Leaf方案 Leaf-segment 数据库方案 Leaf-snowflake 方案 常用方式 uuid雪花算法数据库主键 特征 全局唯一趋势递增信息安全 潜在问题 信息安全 如果id连续递增, 容易被爬虫, 批量下…...

深入了解 SOCKS5 代理、代理 IP 和 HTTP

在网络通信和数据传输中&#xff0c;代理服务器扮演着至关重要的角色。本文将深入探讨 SOCKS5 代理、代理 IP 和 HTTP&#xff0c;揭示它们的工作原理、应用场景以及优缺点。 1. SOCKS5 代理 SOCKS&#xff08;Socket Secure&#xff09;是一种网络协议&#xff0c;允许客户端…...

外包干了3个多月,技术退步明显。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入广州某软件公司&#xff0c;干了接近3年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…...

Unity之闪电侠大战蓝毒兽(简陋的战斗系统)

目录 &#x1f3a8;一、创建地形 &#x1f3ae;二、创建角色 &#x1f3c3;2.1 动画 &#x1f3c3;2.2 拖尾 &#x1f3c3;2.3 角色控制 ​&#x1f3c3;2.4 技能释放 &#x1f3c3;2.5 准星 &#x1f4f1;三、创建敌人 &#x1f432;3.1 选择模型 &#x1f432;3.…...

C# 菜鸟级别有关于redis的使用

public IActionResult Index() { ConnectionMultiplexer _conn ConnectionMultiplexer.Connect("127.0.0.1:6379");//初始化 var database _conn.GetDatabase(7);//指定连接的库 0 RedisHelper redisHelper new Redi…...

AlexNet的出现推动深度学习的巨大发展

尽管AlexNet&#xff08;2012&#xff09;的代码只比LeNet&#xff08;1998&#xff09;多出几行&#xff0c;但学术界花了很多年才接受深度学习这一概念&#xff0c;并应用其出色的实验结果。 AlexNet&#xff08;由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton共同设计…...

2024面试offer收割宝典字节篇

1.IO 模型有哪些,讲讲你理解的 nio ,他和 bio,aio 的区别是啥, 谈谈 reactor 模型。 IO 模型主要包括以下几种:1. 阻塞 I/O (BIO): 当一个线程调用 read() 或 write() 系统调用时,如果数据没有准备好或者缓冲区已满,则该线程会被操作系统阻塞,直到有数据可读或写入完…...

冒泡排序及其优化

冒泡排序 int[] arr {1,3,2,9,4,7,2,8};//比较多少轮(n个数字比较n-1次)for(int i0,n arr.length;i<n-1;i) {//每轮比较多少次(n-1-i次)for(int j 0;j<n-1-i;j) {//两两比较if(arr[j] > arr[j1]) { //比较结果为升序排列&#xff0c;如果想要降序排列结果将 >…...

【医学大模型 补全主诉】BioGPT + LSTM 自动补全医院紧急部门主诉

BioGPT LSTM 自动补全医院紧急部门主诉 问题&#xff1a;针对在紧急部门中自动补全主诉的问题子问题1: 提高主诉记录的准确性子问题2: 加快主诉记录的速度子问题3: 统一医疗术语的使用子问题4: 减少打字错误和误解子问题5: 提高非特定主诉的处理能力 解法数据预处理神经网络方…...

HCIE-Datacom证书有效期多久?HCIE考试有哪些内容?

如今越来越多的人开始关注并参与到华为认证的学习中来。 其中&#xff0c;华为认证数据通信专家(HCIE-Datacom)作为华为认证体系中的高级认证&#xff0c;备受瞩目。 那么&#xff0c;关于HCIE-Datacom证书的有效期以及HCIE考试的内容&#xff0c;你知道多少呢&#xff1f;下…...

OpenCV中的边缘检测技术及实现

边缘检测是在电脑如何理解图片这一问题中的一环&#xff0c;它帮助电脑找出照片里的轮廓和分界线。想象一下你在看一幅黑白漫画&#xff0c;轮廓线定义了每一个角色和物体&#xff0c;而电脑要做的&#xff0c;就是通过边缘检测来找出这些线条。这在很多像是图像分析这样的领域…...

机器学习基础(一)理解机器学习的本质

导读&#xff1a;在本文中&#xff0c;将深入探索机器学习的根本原理&#xff0c;包括基本概念、分类及如何通过构建预测模型来应用这些理论。 目录 机器学习 机器学习概念 相关概念 机器学习根本&#xff1a;模型 数据的语言&#xff1a;特征与标签 训练与测试&#xf…...

Eclipse - Makefile generation

Eclipse - Makefile generation References right mouse click on the project -> Properties -> C/C Build -> Generate Makefiles automatically 默认会在 Debug 目录下创建 Makefile 文件。 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/...

Sora:新一代实时音视频通信框架

一、Sora简介 Sora是一个开源的实时音视频通信框架&#xff0c;旨在提供高效、稳定、可扩展的音视频通信解决方案。它基于WebRTC技术&#xff0c;支持跨平台、跨浏览器的实时音视频通信&#xff0c;并且具备低延迟、高并发、易集成等特点。 --点击进入Sora(一定要科学哦&#x…...

龟兔赛跑算法

一、题目 给定一个长度为 n1 的数组nums&#xff0c;数组中所有的数均在 1∼n1 的范围内&#xff0c;其中 n≥1。 请找出数组中任意一个重复的数。 样例 给定 nums [2, 3, 5, 4, 3, 2, 6, 7]。返回 2 或 3。 二、解析 解决这个问题的一种有效方法是使用快慢指针&#xf…...

Yii2项目使用composer异常记录

问题描述 在yii2项目中&#xff0c;使用require命令安装依赖时&#xff0c;出现如下错误提示 该提示意思是&#xff1a;composer运行时&#xff0c;执行了yiisoft/yii2-composer目录下的插件&#xff0c;但是该插件使用的API版本是1.0&#xff0c;但是当前的cmposer版本提供的…...

【蓝桥杯 2021】图像模糊

图像模糊 题目描述 小蓝有一张黑白图像&#xff0c;由 nm 个像素组成&#xff0c;其中从上到下共 n 行&#xff0c;每行从左到右 m 列。每个像素由一个 0 到 255 之间的灰度值表示。 现在&#xff0c;小蓝准备对图像进行模糊操作&#xff0c;操作的方法为&#xff1a; 对于…...

【leetcode】贪心算法介绍

详细且全面地分析贪心算法常用的解题套路、数据结构和代码逻辑如下&#xff1a; 找最值型&#xff1a; 每一步选择都是局部最优解&#xff0c;最后得到的结果就是全局最优解。常用于找零钱问题、区间覆盖问题等。一般情况下&#xff0c;可以通过排序将数据进行处理&#xff0c;…...