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是一个轻量的日志收集代理,用来部署在客户端,优势是消耗…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

图解JavaScript原型:原型链及其分析 | JavaScript图解
忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...

leetcode73-矩阵置零
leetcode 73 思路 记录 0 元素的位置:遍历整个矩阵,找出所有值为 0 的元素,并将它们的坐标记录在数组zeroPosition中置零操作:遍历记录的所有 0 元素位置,将每个位置对应的行和列的所有元素置为 0 具体步骤 初始化…...