Rust vs Go:常用语法对比(十二)
题图来自 Rust vs Go in 2023[1]
221. Remove all non-digits characters
Create string t from string s, keeping only digit characters 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
删除所有非数字字符
package main
import (
"fmt"
"regexp"
)
func main() {
s := `height="168px"`
re := regexp.MustCompile("[^\\d]")
t := re.ReplaceAllLiteralString(s, "")
fmt.Println(t)
}
168
fn main() {
let t: String = "Today is the 14th of July"
.chars()
.filter(|c| c.is_digit(10))
.collect();
dbg!(t);
}
[src/main.rs:7] t = "14"
222. Find first index of an element in list
Set i to the first index in list items at which the element x can be found, or -1 if items does not contain x.
在列表中查找元素的第一个索引
package main
import (
"fmt"
)
func main() {
items := []string{"huey", "dewey", "louie"}
x := "dewey"
i := -1
for j, e := range items {
if e == x {
i = j
break
}
}
fmt.Printf("Found %q at position %d in %q", x, i, items)
}
Found "dewey" at position 1 in ["huey" "dewey" "louie"]
fn main() {
let items = ['A', '🎂', '㍗'];
let x = '💩';
match items.iter().position(|y| *y == x) {
Some(i) => println!("Found {} at position {}.", x, i),
None => println!("There is no {} in the list.", x),
}
}
There is no 💩 in the list.
or
fn main() {
let items = [42, -3, 12];
{
let x = 12;
let i = items.iter().position(|y| *y == x).map_or(-1, |n| n as i32);
println!("{} => {}", x, i)
}
{
let x = 13;
let i = items.iter().position(|y| *y == x).map_or(-1, |n| n as i32);
println!("{} => {}", x, i)
}
}
12 => 2
13 => -1
223. for else loop
Loop through list items checking a condition. Do something else if no matches are found.
A typical use case is looping through a series of containers looking for one that matches a condition. If found, an item is inserted; otherwise, a new container is created.
These are mostly used as an inner nested loop, and in a location where refactoring inner logic into a separate function reduces clarity.
for else循环
package main
import (
"fmt"
)
func main() {
items := []string{"foo", "bar", "baz", "qux"}
for _, item := range items {
if item == "baz" {
fmt.Println("found it")
goto forelse
}
}
{
fmt.Println("never found it")
}
forelse:
}
found it
fn main() {
let items: &[&str] = &["foo", "bar", "baz", "qux"];
let mut found = false;
for item in items {
if item == &"baz" {
println!("found it");
found = true;
break;
}
}
if !found {
println!("never found it");
}
}
found it
or
fn main() {
let items: &[&str] = &["foo", "bar", "baz", "qux"];
if let None = items.iter().find(|&&item| item == "rockstar programmer") {
println!("NotFound");
};
}
NotFound
or
fn main() {
let items: &[&str] = &["foo", "bar", "baz", "qux"];
items
.iter()
.find(|&&item| item == "rockstar programmer")
.or_else(|| {
println!("NotFound");
Some(&"rockstar programmer")
});
}
NotFound
224. Add element to the beginning of the list
Insert element x at the beginning of list items.
将元素添加到列表的开头
package main
import (
"fmt"
)
type T int
func main() {
items := []T{42, 1337}
var x T = 7
items = append([]T{x}, items...)
fmt.Println(items)
}
[7 42 1337]
or
package main
import (
"fmt"
)
type T int
func main() {
items := []T{42, 1337}
var x T = 7
items = append(items, x)
copy(items[1:], items)
items[0] = x
fmt.Println(items)
}
[7 42 1337]
use std::collections::VecDeque;
fn main() {
let mut items = VecDeque::new();
items.push_back(22);
items.push_back(33);
let x = 11;
items.push_front(x);
println!("{:?}", items);
}
[11, 22, 33]
225. Declare and use an optional argument
Declare an optional integer argument x to procedure f, printing out "Present" and its value if it is present, "Not present" otherwise
声明并使用可选参数
package main
func f(x ...int) {
if len(x) > 0 {
println("Present", x[0])
} else {
println("Not present")
}
}
func main() {
f()
f(1)
}
Go does not have optional arguments, but to some extend, they can be mimicked with a variadic parameter. x is a variadic parameter, which must be the last parameter for the function f. Strictly speaking, x is a list of integers, which might have more than one element. These additional elements are ignored.
Not present
Present 1
fn f(x: Option<()>) {
match x {
Some(x) => println!("Present {}", x),
None => println!("Not present"),
}
}
226. Delete last element from list
Remove the last element from list items.
从列表中删除最后一个元素
package main
import (
"fmt"
)
func main() {
items := []string{"banana", "apple", "kiwi"}
fmt.Println(items)
items = items[:len(items)-1]
fmt.Println(items)
}
[banana apple kiwi]
[banana apple]
fn main() {
let mut items = vec![11, 22, 33];
items.pop();
println!("{:?}", items);
}
[11, 22]
227. Copy list
Create new list y containing the same elements as list x.
Subsequent modifications of y must not affect x (except for the contents referenced by the elements themselves if they contain pointers).
复制列表
package main
import (
"fmt"
)
func main() {
type T string
x := []T{"Never", "gonna", "shower"}
y := make([]T, len(x))
copy(y, x)
y[2] = "give"
y = append(y, "you", "up")
fmt.Println(x)
fmt.Println(y)
}
[Never gonna shower]
[Never gonna give you up]
fn main() {
let mut x = vec![4, 3, 2];
let y = x.clone();
x[0] = 99;
println!("x is {:?}", x);
println!("y is {:?}", y);
}
x is [99, 3, 2]
y is [4, 3, 2]
228. Copy a file
Copy the file at path src to dst.
复制文件
package main
import (
"fmt"
"io/ioutil"
"log"
"os"
)
func main() {
src, dst := "/tmp/file1", "/tmp/file2"
err := copy(dst, src)
if err != nil {
log.Fatalln(err)
}
stat, err := os.Stat(dst)
if err != nil {
log.Fatalln(err)
}
fmt.Println(dst, "exists, it has size", stat.Size(), "and mode", stat.Mode())
}
func copy(dst, src string) error {
data, err := ioutil.ReadFile(src)
if err != nil {
return err
}
stat, err := os.Stat(src)
if err != nil {
return err
}
return ioutil.WriteFile(dst, data, stat.Mode())
}
func init() {
data := []byte("Hello")
err := ioutil.WriteFile("/tmp/file1", data, 0644)
if err != nil {
log.Fatalln(err)
}
}
/tmp/file2 exists, it has size 5 and mode -rw-r--r--
or
package main
import (
"fmt"
"io/ioutil"
"log"
"os"
)
func main() {
src, dst := "/tmp/file1", "/tmp/file2"
err := copy(dst, src)
if err != nil {
log.Fatalln(err)
}
stat, err := os.Stat(dst)
if err != nil {
log.Fatalln(err)
}
fmt.Println(dst, "exists, it has size", stat.Size(), "and mode", stat.Mode())
}
func copy(dst, src string) error {
data, err := ioutil.ReadFile(src)
if err != nil {
return err
}
stat, err := os.Stat(src)
if err != nil {
return err
}
err = ioutil.WriteFile(dst, data, stat.Mode())
if err != nil {
return err
}
return os.Chmod(dst, stat.Mode())
}
func init() {
data := []byte("Hello")
err := ioutil.WriteFile("/tmp/file1", data, 0777)
if err != nil {
log.Fatalln(err)
}
err = os.Chmod("/tmp/file1", 0777)
if err != nil {
log.Fatalln(err)
}
}
/tmp/file2 exists, it has size 5 and mode -rwxrwxrwx
or
package main
import (
"fmt"
"io"
"io/ioutil"
"log"
"os"
)
func main() {
src, dst := "/tmp/file1", "/tmp/file2"
err := copy(dst, src)
if err != nil {
log.Fatalln(err)
}
stat, err := os.Stat(dst)
if err != nil {
log.Fatalln(err)
}
fmt.Println(dst, "exists, it has size", stat.Size(), "and mode", stat.Mode())
}
func copy(dst, src string) error {
f, err := os.Open(src)
if err != nil {
return err
}
defer f.Close()
stat, err := f.Stat()
if err != nil {
return err
}
g, err := os.OpenFile(dst, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, stat.Mode())
if err != nil {
return err
}
defer g.Close()
_, err = io.Copy(g, f)
if err != nil {
return err
}
return os.Chmod(dst, stat.Mode())
}
func init() {
data := []byte("Hello")
err := ioutil.WriteFile("/tmp/file1", data, 0777)
if err != nil {
log.Fatalln(err)
}
err = os.Chmod("/tmp/file1", 0777)
if err != nil {
log.Fatalln(err)
}
}
/tmp/file2 exists, it has size 5 and mode -rwxrwxrwx
use std::fs;
fn main() {
let src = "/etc/fstabZ";
let dst = "fstab.bck";
let r = fs::copy(src, dst);
match r {
Ok(v) => println!("Copied {:?} bytes", v),
Err(e) => println!("error copying {:?} to {:?}: {:?}", src, dst, e),
}
}
error copying "/etc/fstabZ" to "fstab.bck": Os { code: 2, kind: NotFound, message: "No such file or directory" }
231. Test if bytes are a valid UTF-8 string
Set b to true if the byte sequence s consists entirely of valid UTF-8 character code points, false otherwise.
测试字节是否是有效的UTF-8字符串
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
{
s := []byte("Hello, 世界")
b := utf8.Valid(s)
fmt.Println(b)
}
{
s := []byte{0xff, 0xfe, 0xfd}
b := utf8.Valid(s)
fmt.Println(b)
}
}
true
false
fn main() {
{
let bytes = [0xc3, 0x81, 0x72, 0x76, 0xc3, 0xad, 0x7a];
let b = std::str::from_utf8(&bytes).is_ok();
println!("{}", b);
}
{
let bytes = [0xc3, 0x81, 0x81, 0x76, 0xc3, 0xad, 0x7a];
let b = std::str::from_utf8(&bytes).is_ok();
println!("{}", b);
}
}
true
false
234. Encode bytes to base64
Assign to string s the standard base64 encoding of the byte array data, as specified by RFC 4648.
将字节编码为base64
package main
import (
"encoding/base64"
"fmt"
)
func main() {
data := []byte("Hello world")
s := base64.StdEncoding.EncodeToString(data)
fmt.Println(s)
}
SGVsbG8gd29ybGQ=
//use base64;
fn main() {
let d = "Hello, World!";
let b64txt = base64::encode(d);
println!("{}", b64txt);
}
SGVsbG8sIFdvcmxkIQ==
235. Decode base64
Assign to byte array data the bytes represented by the base64 string s, as specified by RFC 4648.
解码base64
package main
import (
"encoding/base64"
"fmt"
)
func main() {
str := "SGVsbG8gd29ybGQ="
data, err := base64.StdEncoding.DecodeString(str)
if err != nil {
fmt.Println("error:", err)
return
}
fmt.Printf("%q\n", data)
}
"Hello world"
//use base64;
fn main() {
let d = "SGVsbG8sIFdvcmxkIQ==";
let bytes = base64::decode(d).unwrap();
println!("Hex: {:x?}", bytes);
println!("Txt: {}", std::str::from_utf8(&bytes).unwrap());
}
Hex: [48, 65, 6c, 6c, 6f, 2c, 20, 57, 6f, 72, 6c, 64, 21]
Txt: Hello, World!
237. Xor integers
Assign to c the result of (a xor b)
异或运算
异或整数
package main
import (
"fmt"
)
func main() {
a, b := 230, 42
c := a ^ b
fmt.Printf("a is %12b\n", a)
fmt.Printf("b is %12b\n", b)
fmt.Printf("c is %12b\n", c)
fmt.Println("c ==", c)
}
a is 11100110
b is 101010
c is 11001100
c == 204
or
package main
import (
"fmt"
"math/big"
)
func main() {
a, b := big.NewInt(230), big.NewInt(42)
c := new(big.Int)
c.Xor(a, b)
fmt.Printf("a is %12b\n", a)
fmt.Printf("b is %12b\n", b)
fmt.Printf("c is %12b\n", c)
fmt.Println("c ==", c)
}
a is 11100110
b is 101010
c is 11001100
c == 204
fn main() {
let a = 230;
let b = 42;
let c = a ^ b;
println!("{}", c);
}
204
238. Xor byte arrays
Write in a new byte array c the xor result of byte arrays a and b.
a and b have the same size.
异或字节数组
package main
import (
"fmt"
)
func main() {
a, b := []byte("Hello"), []byte("world")
c := make([]byte, len(a))
for i := range a {
c[i] = a[i] ^ b[i]
}
fmt.Printf("a is %08b\n", a)
fmt.Printf("b is %08b\n", b)
fmt.Printf("c is %08b\n", c)
fmt.Println("c ==", c)
fmt.Printf("c as string would be %q\n", string(c))
}
a is [01001000 01100101 01101100 01101100 01101111]
b is [01110111 01101111 01110010 01101100 01100100]
c is [00111111 00001010 00011110 00000000 00001011]
c == [63 10 30 0 11]
c as string would be "?\n\x1e\x00\v"
or
package main
import (
"fmt"
)
type T [5]byte
func main() {
var a, b T
copy(a[:], "Hello")
copy(b[:], "world")
var c T
for i := range a {
c[i] = a[i] ^ b[i]
}
fmt.Printf("a is %08b\n", a)
fmt.Printf("b is %08b\n", b)
fmt.Printf("c is %08b\n", c)
fmt.Println("c ==", c)
fmt.Printf("c as string would be %q\n", string(c[:]))
}
a is [01001000 01100101 01101100 01101100 01101111]
b is [01110111 01101111 01110010 01101100 01100100]
c is [00111111 00001010 00011110 00000000 00001011]
c == [63 10 30 0 11]
c as string would be "?\n\x1e\x00\v"
fn main() {
let a: &[u8] = "Hello".as_bytes();
let b: &[u8] = "world".as_bytes();
let c: Vec<_> = a.iter().zip(b).map(|(x, y)| x ^ y).collect();
println!("{:?}", c);
}
[63, 10, 30, 0, 11]
239. Find first regular expression match
Assign to string x the first word of string s consisting of exactly 3 digits, or the empty string if no such match exists.
A word containing more digits, or 3 digits as a substring fragment, must not match.
查找第一个正则表达式匹配项
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`\b\d\d\d\b`)
for _, s := range []string{
"",
"12",
"123",
"1234",
"I have 12 goats, 3988 otters, 224 shrimps and 456 giraffes",
"See p.456, for word boundaries",
} {
x := re.FindString(s)
fmt.Printf("%q -> %q\n", s, x)
}
}
"" -> ""
"12" -> ""
"123" -> "123"
"1234" -> ""
"I have 12 goats, 3988 otters, 224 shrimps and 456 giraffes" -> "224"
"See p.456, for word boundaries" -> "456"
use regex::Regex;
fn main() {
let sentences = vec![
"",
"12",
"123",
"1234",
"I have 12 goats, 3988 otters, 224 shrimps and 456 giraffes",
"See p.456, for word boundaries",
];
for s in sentences {
let re = Regex::new(r"\b\d\d\d\b").expect("failed to compile regex");
let x = re.find(s).map(|x| x.as_str()).unwrap_or("");
println!("[{}] -> [{}]", &s, &x);
}
}
[] -> []
[12] -> []
[123] -> [123]
[1234] -> []
[I have 12 goats, 3988 otters, 224 shrimps and 456 giraffes] -> [224]
[See p.456, for word boundaries] -> [456]
240. Sort 2 lists together
Lists a and b have the same length. Apply the same permutation to a and b to have them sorted based on the values of a.
将两个列表排序在一起.列表a和b的长度相同。对a和b应用相同的排列,根据a的值对它们进行排序。
package main
import (
"fmt"
"sort"
)
type K int
type T string
type sorter struct {
k []K
t []T
}
func (s *sorter) Len() int {
return len(s.k)
}
func (s *sorter) Swap(i, j int) {
// Swap affects 2 slices at once.
s.k[i], s.k[j] = s.k[j], s.k[i]
s.t[i], s.t[j] = s.t[j], s.t[i]
}
func (s *sorter) Less(i, j int) bool {
return s.k[i] < s.k[j]
}
func main() {
a := []K{9, 3, 4, 8}
b := []T{"nine", "three", "four", "eight"}
sort.Sort(&sorter{
k: a,
t: b,
})
fmt.Println(a)
fmt.Println(b)
}
[3 4 8 9]
[three four eight nine]
fn main() {
let a = vec![30, 20, 40, 10];
let b = vec![101, 102, 103, 104];
let mut tmp: Vec<_> = a.iter().zip(b).collect();
tmp.as_mut_slice().sort_by_key(|(&x, _y)| x);
let (aa, bb): (Vec<i32>, Vec<i32>) = tmp.into_iter().unzip();
println!("{:?}, {:?}", aa, bb);
}
[10, 20, 30, 40], [104, 102, 101, 103]
参考资料
Rust vs Go in 2023: https://bitfieldconsulting.com/golang/rust-vs-go
本文由 mdnice 多平台发布
相关文章:
Rust vs Go:常用语法对比(十二)
题图来自 Rust vs Go in 2023[1] 221. Remove all non-digits characters Create string t from string s, keeping only digit characters 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. 删除所有非数字字符 package mainimport ( "fmt" "regexp")func main() { s : hei…...
jmeter接口测试、压力测试简单实现
jmeter测试的组件执行顺序: 测试计划—>线程组—>配置元件—>前置处理器—>定时器—>逻辑控制器—>取样器—>后置处理器—>断言—>监听器 组件的作用范围: 同级组件同级组件下的子组件父组件 目前市面上的三类接口 1、基…...
PysparkNote006---pycharm加载spark环境
pycharm配置pyspark环境,本地执行pyspark代码 spark安装、添加环境变量不提了 File-Settings-Project-Project Structure-add content root添加如下两个路径 D:\code\spark\python\lib\py4j-0.10.7-src.zipD:\code\spark\python\lib\pyspark.zip 2023-07-26 阴 于…...
19套项目实战系列--Spring Cloud Spring Boot(整套源码)
整套大型项目源码,需要的回复私信:19 ┃ ┣━01.19套项目实战系列 ┃ ┃ ┣━第04套【项目实战】Spring Cloud分布式微服务实战,打造大型自媒体3大业务平台 分布式前后端分离项目分层聚合 养成应对复杂业务的综合技术能力 ┃ ┃ ┃ ┣━1-…...
TCP/IP协议详解(二)
目录内容 TCP协议的可靠性 TCP的三次握手 TCP的四次挥手 C#中,TCP/IP建立 三次握手和四次挥手常见面试题 在上一篇文章中讲解了TCP/IP的由来以及报文格式,详情请见上一篇文章,现在接着来讲讲TCP/IP的可靠性以及通过代码的实现。 在TCP首部的…...
Linux6.2 ansible 自动化运维工具(机器管理工具)
文章目录 计算机系统5G云计算第一章 LINUX ansible 自动化运维工具(机器管理工具)一、概述二、ansible 环境安装部署三、ansible 命令行模块1.command 模块2.shell 模块3.cron 模块4.user 模块5.group 模块6.copy 模块7.file 模块8.hostname 模块9.ping …...
前端面试题 —— React (二)
目录 一、React 组件中怎么做事件代理?它的原理是什么? 二、React.Component 和 React.PureComponent 的区别 三、Component, Element, Instance 之间有什么区别和联系? 四、React声明组件有哪几种方法,有什么不同?…...
【分享帖】LCD的MCU接口和SPI接口详解
LCD(Liquid Crystal Display)液晶屏,作为电子产品的重要组成部分,是终端用户与电子产品交互的重要载体。现在市场上的LCD,按照尺寸、功能、接口、用途等分为很多种,本文主要介绍如下两种LCD物理接口&#x…...
【Java】使用@Expose注解和excludeFieldsWithoutExposeAnnotatGson()方法将toJson()过程的部分字段忽略
要在使用 Gson 的 toJson() 方法时忽略 List 中的某些字段,你可以使用 Gson 的 Expose 注解和 excludeFieldsWithoutExposeAnnotation() 方法。 首先,在 List 中的 Bean 类中,使用 Expose 注解标记你想要序列化的字段: public c…...
移动硬盘不显示怎么办?正确解决方式看这里!
移动硬盘为存储带来了很大的方便,在对数据存储时,可做到即插即用,且其体积小、容量大,且比较安全可靠。但在实际的使用中,也会出现各种问题。请看下面2个常见案例。 案例1:“各位朋友,我新买了一…...
MySQL 5.7.39 关于时间精度
前情提要 当EndTime的数据类型为datetime when the end_time’s dataType is datetime; entity.EndTime DateTime.MaxValue; context.Set<T>().Add(entity);当保存 ‘9999-12-31 23:59:59’ 这个值时,发生报错。 A crash has happended in the program when saving ‘…...
宝塔设置云服务器mysql端口转发,实现本地电脑访问云mysql
环境:centos系统使用宝塔面板 实现功能:宝塔设置云服务器mysql端口转发,实现本地电脑访问mysql 1.安装mysql、PHP-7.4.33、phpMyAdmin 5.0 软件商店》搜索 mysql安装即可 软件商店》搜索 PHP安装7.4.33即可(只需要勾选快速安装&…...
centos下安装ftp-读取目录列表失败-
1.下载安装ftp服务器端和客户端 #1.安装yum -y install vsftpdyum -y install ftp #2.修改配置文件vim /etc/vsftpd.conflocal_enablesYESwrite_enableYESanonymous_enableYESanon_mkdir_write_enableYES //允许匿名用户在FTP上创建目录anon_upload_enableYES //允许匿名用户…...
0101sub-process /usr/bin/dpkg returned an error code-dpkg-linux问题集
kali linux有段时间没用了,现在有点时间想着继续学习下网络安全,那就升级更新下。 apt-get update && apt-get upgrade等待一段时间后,下载完毕执行安装和更新,更新的过程中报错退出了 问题1 更新kali-themes 需要kali-t…...
流控平台Sentinel搭建和接入教程
流量控制和限流是大型系统必不可少的组成部分,Sentinel是Alibaba提供的一款特别好用的专业工具,属于那种看起来很牛,用起来也很牛的工具,下面记录一下接入的过程。 一,搭建平台 1,下载jar包 地址&#x…...
使用 docker 一键部署 MongoDB
目录 1. 前期准备 2. 导入镜像 3. 部署MongoDB脚本 4. 配置模板文件 5. 部署MongoDB 6. 部署后配置 7. 基本维护 1. 前期准备 新部署前可以从仓库(repository)下载 MongoDB 镜像,或者从已有部署中的镜像生成文件: # 查看…...
【深度学习】Inst-Inpaint: Instructing to Remove Objects with Diffusion Models,指令式图像修复
论文:https://arxiv.org/abs/2304.03246 code:http://instinpaint.abyildirim.com/ 文章目录 AbstractIntroductionRelated WorkDataset GenerationMethodPS Abstract 图像修复任务是指从图像中擦除不需要的像素,并以语义一致且逼真的方式填充它们。传统…...
创建维基WIKI百科和建立百度百科有何不同?
很多企业有出口业务,想在互联网上开展全球性网络营销,维基百科往往被认为是开展海外营销的第一站。其作用相当于开展国内网络营销的百度百科,经常有些企业给小马识途营销顾问提供的词条内容就是百度百科的内容,可事实上两个平台的…...
Python小红书旋转验证码识别
本周免费接了一个用户的需求,研究了一下小红书旋转验证码。刚开始小瞧了它,觉得它应该没有百度旋转验证码那么难,毕竟图像没有干扰,需要的训练样本就可以很少。然而事情并没有这么简单,所以记录一下。 首先看一下最终…...
ELK搭建
ELK概述 ELK是elasticsearch Logstash Kibana 这种架构的简写。这是一种日志分平台析的架构, Elasticsearch Logstash filebeat Kibana 这种架构增加了一个filebeat模块。filebeat是一个轻量的日志收集代理,用来部署在客户端,优势是消耗…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
