开始时间:2023-9-01

结束日期:‘

周一

【网络知识补习】❄️| 由浅入深了解HTTP(四) HTTP之cookies

RFC 6265定义了 cookie 的工作方式。 Cookie 的作用域 Domain 和 Path 标识定义了Cookie的作用域:即允许 Cookie 应该发送给哪些URL。

持久性 Cookie 在过期时间(Expires)指定的日期或有效期(Max-Age)指定的一段时间后被删除。

看完这篇 Session、Cookie、Token,和面试官扯皮就没问题了 https://www.cnblogs.com/cxuanBlog/p/12635842.html

Python中,可以使用webdriver模块来模拟浏览器操作。要设置浏览器的cookie永不过期,可以使用webdriver模块中的add_cookie方法。具体来说,可以使用以下代码设置浏览器的cookie永不过期:

周二

centos8之网卡配置修改及管理

  1. 编辑网卡配置文件

cat /etc/sysconfig/network-scripts/ifcfg-ens33

1
2
3
4
5
6
将BOOTPROTO参数由dhcp改为static,根据需要配置IP地址、掩码、网关、DNS等信息
BOOTPROTO=static
IPADDR=192.168.0.127
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
ONBOOT=yes
  1. 重载网卡配置 nmcli c reload ens33 【解决修改配置不生效问题,这个容易忘记执行】
  2. 重启网卡 nmcli c up ens33

画外音:

  • 不在使用nmtui方式,持续过设置不生效。无法解决问题。

Using IPv6 for SSH connections issues

  • ssh fe80::20c:29ff:fe37:8c15%ens160
  • ping6 fe80::f816:3eff:fe00:76%eth0

配置Ceph的IPV6集群

阅读文章:【Ceph】Ceph快照的原理和实现–未消化

image.png

1
unlink, unlinkat - delete a name and possibly the file it refers

周三

  1. read 一文告诉你为什么时序场景下 TDengine 数据订阅比 Kafka 好

    哪里好了 确实没看清楚,文章也说明白

  2. 在kafka中 topic分区 消息分组概念区别是什么?举例说明

  3. python 16进制转化10进制

1
2
3
hexadecimal_string = "1A"  # 16进制数的字符串表示
decimal_number = int(hexadecimal_string, 16)  # 将16进制字符串转换为10进制数
print(decimal_number)  # 直接打印10进制数

周三

Getting Started with Rust Using Rustlings — Part 5: Move Semantics

Move Semantics

- Ownership

- Reference and borrowing

提问1:rust fn fill_vec(vec: Vec) -> Vec 值传递 还是引用传递

ccb0610e43f9ea2f1ec3baf9de6347a

拷贝的只是vec,就是蓝绿框的部分

提问2:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
lines = [0, 1, 2, 3, 4, 5]
result = lines[1::]
print(result)  # 输出:[1, 2, 3, 4, 5]

Python中`lines[1::]` 表达式用于切片(slicing)一个列表或其他可迭代对象,其中包含了三部分信息:

1. `lines`:这是要切片的可迭代对象,通常是一个列表,元组或字符串等。

2. `[1]`:这是切片的起始索引。在这个例子中,索引是1,表示切片将从可迭代对象的第二个元素(Python中的索引从0开始)开始。

3. `::`:这是切片操作符,它分隔起始索引、结束索引和步长(可选)。

4. 空格后的空白部分:在这个例子中为空,表示没有指定结束索引,因此切片将一直持续到可迭代对象的末尾。

因此,`lines[1::]` 表示从可迭代对象 `lines` 的第二个元素开始,一直切片到末尾,返回一个包含所有剩余元素的子列表或子序列。

示例:
```python
lines = [0, 1, 2, 3, 4, 5]
result = lines[1::]
print(result)  # 输出:[1, 2, 3, 4, 5]
```

在这个示例中,`lines[1::]` 返回了包含从索引1开始的所有元素的新列表。

提问:lamdba详解

https://zhuanlan.zhihu.com/p/354176923

周四

提问1

揭秘Futures

python中的Futures,位于concurrent.futures和asyncio中,它们都带有延迟操作。Futures会将等待的作业包裹起来放到队列里,同时这些作业的状态可以随时查询,同样作业的结果或者异常也可以在所有作业完成后获取到。

https://docs.python.org/zh-cn/3/library/asyncio-future.html

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
*class* asyncio.**Future**(***, *loop=None*)
result()
返回 Future 的结果


import asyncio

async def main():
    # 创建一个 Future 对象
    future = asyncio.Future()

    async def worker():
        await asyncio.sleep(2)
        future.set_result("Hello from the worker!")

    asyncio.create_task(worker())

    # 等待 Future 结果
    result = await future
    print(result)

asyncio.run(main())

在这个示例中,我们创建了一个 Future 对象,然后在后台启动了一个协程 (worker),并在该协程中设置了 Future 的结果。main 协程使用 await 等待 Future 结果,一旦 Future 结果可用,它将恢复执行并打印结果。

asyncio.Future 在异步编程中非常有用,它允许你以非阻塞的方式管理和等待异步操作的结果。

Rust allows you to define types called “enums” which enumerate possible values.

Enums are a feature in many languages, but their capabilities differ in each language. Rust’s enums are most similar to algebraic data types in functional languages, such as F#, OCaml, and Haskell.

Useful in combination with enums is Rust’s “pattern matching” facility, which makes it easy to run different code for different values of an enumeration.

提问2: https://medium.com/@verbruggenjesse/rust-using-rustlings-part-7-enums-7fb9f9cbbe5c

提问3: python并发问题

1
2
3
import collections
dic = collections.OrderedDict()
#dic = {}
  • Python 中,如果主线程不等待子线程(即不执行 join()),通常不会导致子线程不执行
  • 在 Python 中,如果主线程提前退出,通常会导致所有线程(包括子线程)都被终止

stat" 命令通常会提供三个时间戳,分别是文件的访问时间(access time),修改时间(modification time),和更改时间(change time)。这些时间戳用于跟踪文件的不同类型的操作和更改。以下是它们的解释:

  1. 访问时间(Access Time,atime):这个时间戳表示文件最后一次被访问的时间。每当文件被读取、执行、或使用"cat"等命令查看文件内容时,访问时间都会更新。在某些系统上,您可以通过 “-c” 或 “–status” 选项来查看它。访问时间用于跟踪文件的读取操作。
  2. 修改时间(Modification Time,mtime):这个时间戳表示文件最后一次被修改的时间。每当文件内容被更改、编辑、或重新写入时,修改时间都会更新。您可以通过 “-m” 或 “–modify” 选项来查看它。修改时间用于跟踪文件内容的更改。
  3. 更改时间(Change Time,ctime):这个时间戳表示文件的元数据(例如权限、所有者等)最后一次被更改的时间。不仅包括文件内容的更改,还包括文件属性的更改。您可以通过 “-c” 或 “–change” 选项来查看它。更改时间用于跟踪文件的属性和权限的更改。

题目4:shell get stat access time 转化成秒 shell

在Shell中,要将文件的"access time"(访问时间)转化为秒数,您可以使用stat命令来获取访问时间,然后使用date命令将其转化为秒数

1
2
3
4
5
6
7
# 获取文件的访问时间
access_time=$(stat -c %x your_file.txt)

# 将访问时间转化为秒数
access_time_seconds=$(date -d "$access_time" +%s)

echo "Access Time in Seconds: $access_time_seconds"

提问5

word 这个变量从哪里来的,不会又语法错误把?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
您提出的问题是正确的。我犯了一个语法错误。在`if let`表达式中,正确的语法是在`Some`模式中使用模式绑定,如下所示:

```rust
fn simple_option() {
    let target = "rustlings";
    let optional_target = Some(target);

    // 使用if let来检查optional_target是否为Some,并将其内部的值与target进行比较
    if let Some(word) = optional_target {
        assert_eq!(word, target);
    }
}

fn main() {
    simple_option();
}
```

在上述代码中,`Some(word)`中的`word`是一个模式绑定,它将`optional_target`中的值(如果是`Some`)绑定到`word`变量上,然后你可以在`if let`块内部使用它。感谢您的指正,我之前的回答中存在错误。

提问6:

Rust的所有权并不难理解,它有且只有如下三条规则:

  1. Rust中的每一个值都有一个所有者(owner)的变量;

  2. 一个值有且只有一个所有者;

  3. 当所有者离开作用域时这个值将被丢弃。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
    fn main() 
    {
        let x = String::from("hello");
        let y = x;
        println!("x:{} y:{}", x, y);
    }
    
    fn main() 
    {
        let x = String::from("hello");
        print(x);
        println!("x:{}", x);
    }
    
    fn print(s:String)
    {
        println!("{}", s)
    }
    //拷贝、移动和克隆,不仅仅发生在赋值时,当调用函数传递参数或从函数接收返回值时,它们也会发生,
    
    
    在c++ 共享智能指针 引用技术概念:函数拷贝 传递 过中,对象构造和习惯 改变引用计数个数,最后一个释放 才真正释放对象
    
    std::move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝所以可以提高利用效率,改善性能.
    
    类:c++ 右值, 移动语义与完美转发 移动构造函数  vs rust 所有权
    

周天:

  1. kafka-console-producer send json data

  2. ceph fs set FS_NAME allow_standby_replay 1

  3. git log >1;cat 1 conets ;git show comm_id

  4. https://access.redhat.com/documentation/zh-cn/red_hat_ceph_storage/4/html/file_system_guide/configuring-the-standby-replay-metadata-server_fs

  5. Chapter 4. Kafka Consumers: Reading Data from Kafka

  6. 同步异步不能和阻塞非阻塞混为一谈