Fork me on GitHub

第3节-表的创建和查询

1. 查询表

查询 sys 数据库里的表:

1
2
USE sys;
SHOW TABLES;

1
2
3
4
5
6
7
8
9
10
11
12
+-----------------------------------------------+
| Tables_in_sys |
+-----------------------------------------------+
| host_summary |
| host_summary_by_file_io |
| host_summary_by_file_io_type |
| host_summary_by_stages |
| host_summary_by_statement_latency |
| ... |
| x$waits_global_by_latency |
+-----------------------------------------------+
101 rows in set (0.03 sec)

2. 创建表

创建一个名为 user_db 的数据库,并且使用:

1
2
CREATE DATABASE IF NOT EXISTS user_db;
USE user_db;

user_db 里创建一个表:

标准形式

1
2
3
4
5
6
7
CREATE TABLE 表名(
字段1 字段1类型 [COMMENT 字段1注释],
字段2 字段2类型 [COMMENT 字段2注释],
字段3 字段3类型 [COMMENT 字段3注释],
...
字段n 字段n类型 [COMMENT 字段n注释]
)[ COMMENT 表注释 ];

实际语句

1
2
3
4
5
6
CREATE TABLE table1(
-> id int COMMENT "编号",
-> name varchar(50) COMMENT "姓名",
-> age int COMMENT "年龄",
-> gender varchar(1) COMMENT "性别"
-> )COMMENT "用户表";

正常结果

1
Query OK, 0 rows affected (0.07 sec)

3. 查询表结构

1
DESC table1;
1
2
3
4
5
6
7
8
9
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(50) | YES | | NULL | |
| age | int | YES | | NULL | |
| gender | varchar(1) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)

4. 查询创建表的语句

1
SHOW CREATE TABLE table1;
1
2
3
4
5
6
7
8
9
10
11
+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| table1 | CREATE TABLE `table1` (
`id` int DEFAULT NULL COMMENT '编号',
`name` varchar(50) DEFAULT NULL COMMENT '姓名',
`age` int DEFAULT NULL COMMENT '年龄',
`gender` varchar(1) DEFAULT NULL COMMENT '性别'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户表' |
+--------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

Reference

  1. MySQL学习笔记
  2. 黑马程序员 MySQL数据库入门到精通

第2节 数据库操作

0. SQL通用语法分类

  • DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段)
  • DML: 数据操作语言,用来对数据库表中的数据进行增删改
  • DQL: 数据查询语言,用来查询数据库中表的记录
  • DCL: 数据控制语言,用来创建数据库用户、控制数据库的控制权限

1. 查询所有数据库

1
SHOW DATABASES;
1
2
3
4
5
6
7
8
9
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.02 sec)

2. 创建数据库

如果 mydb 数据库不存在,就创建一个名为 mydb 的数据库。

字符集指定为 utf8mb4,排序方式指定为 utf8mb4_general_ci

1
CREATE DATABASE IF NOT EXISTS mydb DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;

1
Query OK, 1 row affected (0.07 sec)

通过 SHOW COLLATION; 命令可以查询MySQL支持的所有排序规则

1
2
3
4
5
6
7
8
9
10
11
12
+-----------------------------+----------+-----+---------+----------+---------+---------------+
| Collation | Charset | Id | Default | Compiled | Sortlen | Pad_attribute |
+-----------------------------+----------+-----+---------+----------+---------+---------------+
| armscii8_bin | armscii8 | 64 | | Yes | 1 | PAD SPACE |
| armscii8_general_ci | armscii8 | 32 | Yes | Yes | 1 | PAD SPACE |
| ascii_bin | ascii | 65 | | Yes | 1 | PAD SPACE |
| ascii_general_ci | ascii | 11 | Yes | Yes | 1 | PAD SPACE |
| big5_bin | big5 | 84 | | Yes | 1 | PAD SPACE |
| ... |
| utf8mb4_zh_0900_as_cs | utf8mb4 | 308 | | Yes | 0 | NO PAD |
+-----------------------------+----------+-----+---------+----------+---------+---------------+
286 rows in set (0.02 sec)

3. 使用数据库

1
USE mydb;
1
Database changed

4. 查询当前数据库

1
SELECT DATABASE();
1
2
3
4
5
6
+------------+
| DATABASE() |
+------------+
| mydb |
+------------+
1 row in set (0.00 sec)

5. 删除数据库

删除之前执行 SHOW DATABASES 命令的结果:

1
2
3
4
5
6
7
8
9
10
+--------------------+
| Database |
+--------------------+
| information_schema |
| mydb |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.04 sec)

删除命令
1
DROP DATABASE IF EXISTS mydb;

删除后的结果:

1
Query OK, 0 rows affected (0.07 sec)

删除后再执行 SHOW DATABASES 命令的结果:

1
2
3
4
5
6
7
8
9
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)

Reference

  1. MySQL学习笔记
  2. 黑马程序员 MySQL数据库入门到精通

第1节 Linux下MySQL Workbench环境配置

0. 前置内容

  1. 上一节文章地址: https://marine-rubbish.github.io/2024/06/09/MySQL%E5%AD%A6%E4%B9%A0/%E7%AC%AC0%E8%8A%82-Linux%E4%B8%8BMySQL%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/
  2. 本来想配置 MySQL Administrator 和 MySQL Query Browser 的。但是据说过时了,于是配 Workbench 。

1. 安装 (Unfinished)

访问安装包下载地址: https://dev.mysql.com/downloads/workbench/

这里选择下载Ubuntu 23.10版本的:
Workbench 官网

通过 dpkg 命令下载 .deb 安装包:

1
sudo dpkg -i ~/下载/mysql-workbench-community_8.0.36-1ubuntu23.10_amd64.deb

如果中间有依赖报错,可以用以下命令安装依赖:

1
sudo apt -f install # -f 参数代表 --fix-broken,尝试修复依赖导致的问题

因为Ubuntu版本太新了,没有对应24.04版本的workbench,只能咕咕咕了。

2. 使用 (Unfinished)

第0节 Linux下MySQL环境配置

0. 前言

作者采用的Linux为Ubuntu 24.04版。

1. Linux下MySQL安装

可以先用rpm命令检查是否已经安装MySQL:

1
rpm -qa | grep mysql

如果没有安装的话可以采用apt安装:

1
sudo apt install mysql-server

安装完成后可以用以下命令验证是否安装成功

1
2
mysql --version 
# mysql Ver 8.0.36-2ubuntu3 for Linux on x86_64 ((Ubuntu))

启动MySQL并查看MySQL状态:

1
2
3
systemctl start mysql
systemctl enable mariadb # 设置开机启动
systemctl status mysql

2. 配置MySQL

mysql8.0,root 用户默认通过 auth_socket 插件授权,而 auth_socket 插件通过 Unix socket 文件来验证所有连接到 localhost 的用户。

这意味着身份验证是基于操作系统用户的,而不是基于用户密码的,你不能以用户–密码的方式,登录root账户。

通过指令以root身份登录:

1
sudo mysql

修改MySQL数据库底下的user表,配置密码方式以root身份登录:

1
2
use mysql; -- 使用mysql数据库
select user, host, plugin from user; -- 从user中选择user、host、plugin 这三列

正常的输出结果为:

1
2
3
4
5
6
7
8
9
10
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| debian-sys-maint | localhost | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | auth_socket |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)

其中 user 列代表用户名、 host 列代表用户可以从哪些主机连接到数据库服务器、 plugin 代表用于该用户认证的插件

root 对应的plugin由 auth_socket 改为 mysql_native_password

1
2
alter user 'root'@'localhost' identified with mysql_native_password by '密码';
flush privileges; -- 重新加载权限表

再次从user中选择user、host、plugin 这三列,发现最后一行plugin变成 mysql_native_password 就成功了:

1
2
3
4
5
6
7
8
9
10
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| debian-sys-maint | localhost | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)

退出后可以通过密码的方式登录数据库:

1
exit; -- 退出

1
mysql -uroot -p # 以root身份用密码登录mysql

Reference

  1. https://blog.csdn.net/LogosTR_/article/details/125602116
  2. https://www.runoob.com/mysql/mysql-install.html

Chap2

1. 作业答案

Q1: 阅读 man ls ,然后使用ls 命令进行如下操作:

  • 列出所有文件信息:-l
  • 所有文件(包括隐藏文件) :-a
  • 文件打印以人类可以理解的格式输出 (例如,使用454M 而不是 454279954) : -h
  • 文件以最近访问顺序排序:-t
  • 以彩色文本显示输出结果:—color=auto

典型输出如下:

1
2
3
4
5
-rw-r--r--   1 user group 1.1M Jan 14 09:53 baz
drwxr-xr-x 5 user group 160 Jan 14 09:53 .
-rw-r--r-- 1 user group 514 Jan 14 06:42 bar
-rw-r--r-- 1 user group 106M Jan 13 12:12 foo
drwx------+ 47 user group 1.5K Jan 12 18:08 ..

A:

1
ls -lhat --color=auto

Q2: 编写两个bash函数 marco 和 polo 执行下面的操作。每当你执行 marco 时,当前的工作目录应当以某种形式保存,当执行 polo 时,无论现在处在什么目录下,都应当 cd 回到当时执行 marco 的目录。为了方便debug,你可以把代码写在单独的文件 marco.sh 中,并通过 source marco.sh命令,(重新)加载函数。

A:

软件测试岗入职两个月的心得体会

1. 个人基本情况

  • 学校背景:本科JS双非、保研华五边缘学院
  • 专业背景:遥感相关专业
  • 绩点:3/27(面试时未提供)
  • 英语成绩:CET4: 538 CET6: 504
  • 获奖竞赛:蓝桥杯B组国二、数学建模省二、校奖若干
  • 科研成果:SCI二区一作、若干二作三作、发明专利在投(后两者没有体现在简历上)

2. 公司及岗位情况

  • 公司情况:测绘行业龙头,但在开发领域算是中小厂,各个分公司的各种测试人员(软件、硬件、算法)总共有五十余个
  • 分公司情况:一共八十几个人,搞技术的有四十几个人,但是做测试的正式工只有我上司一个
  • 岗位情况:硬件测试实习生(但实际上是软件测试)
  • 工资情况:一个月3000,餐补200(请假扣工资和餐补)
  • 上班时间:8:30 - 18:00,中午休息从12点到1点半
  • 竞争者情况:据说在确定要我之前,每天都能接到简历,而且投实习和找工作的都有

3. 工作情况

3.1 软件测试干什么

我主要做的是软件测试中的功能性测试,也就是最低级的测试。主要任务也就是测试软件各种功能、各种控件是否正常,以及软件和设备配合进行测量是否正常。

3.2 工作历程 (unfinished)

一般来说第一周的时间上司会让你熟悉软件、写一写软件使用说明书、完善测试环境啥的。第二周开始就正式参与软件项目的测试。我的上司看我编程还行,再加上第2 - 3周没有什么测试任务,就给了我两周时间,让我先进行自动化测试程序的开发。但由于需要做自动化测试的需求不明确,整个框架要全部自己弄,而且对桌面软件自动化测试开发技术栈也不太了解,导致最后咕咕咕了,没做出啥有效的东西。

从第四周开始,我就正式参与软件项目的测试。一般来说一轮软件测试需要经过以下几个流程:

3.3 工作所需技能

以下技能按重要性从高到低排序:

  1. 调节同事关系的能力:由于测试的工作是在给别人挑刺,因此测试岗和其他同事之间的关系特别容易变得特别紧张,基本上是人见人嫌的状态。因此学习如何和同事相处对于测试岗非常重要。
  2. 与同事沟通的能力:由于测试需要频繁和软件、硬件甚至是算法对接,因此你和别人交流的能力是非常关键的。你需要学会向同事们完整的描述一个缺陷(缺陷的表现、产生缺陷的操作、引发缺陷的原因、缺陷的重要性等),以及和同事沟通争取资源(如服务器资源、设备资源等)等基本沟通操作。
  3. 对产品功能的了解:对产品功能的了解程度,直接决定了你发现的缺陷的数量和质量。如果对于产品功能没有自己的见解,你要么只能发现一些常见的、表面上的问题,要么你发现的问题很容易在讨论后被打成不是问题。这些都会影响你的业绩。
  4. 复现错误的能力:能否对错误进行复现、对产生错误的操作进行定位,决定了你发现的这个错误的可信程度,如果你发现的错误是没法复现的,软件或硬件就可以认为这是一个偶发性问题。那么你的业绩也就随之消失了。
  5. 在规则内多尝试:测试往往很多时候需要多次尝试才能确认问题所在,因此在规则容许的范围内(只通过软件进行操作,不修改配置文件、dll文件等)要尽可能多的进行尝试。
  6. 举一反三的能力:当发现一个问题的时候,多思考有没有什么类似的操作能诱发同类的问题。
  7. 一定的开发能力:一定的开发能力和经验能帮助你更好的理解错误日志、定位产生错误的操作。开发能力要是足够强后期转自动化测试等也比较好转。

4. 实习能学到什么

  1. 了解行业状态:工作和科研不一样。工业界一般用的都是一些“传统”的算法和框架,需要的是你能快速使用工具解决问题,而不是把慢慢把问题完善解决。
  2. 适应工作状态:工作以后自由时间会非常少(相比于大学时期),因此需要合理调节自己的状态。
  3. 学习行业内部黑话:最基本的比如需求、流程、提测、黑盒测试、白盒测试、冒烟测试等。
  4. 学习工作技能:(这块可能以后不干测试的话不太重要)学习编写设备测试环境、根据最小用例检查点编写最小用例、提出测试需求、提出测试计划、提交缺陷、编写测试报告等。

upd1 最新情况 (2023/12/31)

上司在这周五已经拿N+1离职了(感觉大概率是被优化了,不然拿不到N+1)。我也准备跑路了。

The Missing Semester-Chap1

1. shell命令的实质

当你在 shell 中执行命令时,本质是在执行一段 shell 可以解释执行的简短代码。

1
2
3
# 打印当前的日期和时间
date
# 2023年 12月 12日 星期二 08:30:09 CST

可以向程序传递参数。
1
2
3
# 把hello传给echo,打印到终端
echo hello
# hello

如果你要求 shell 执行某个指令,但是该指令并不是 shell 所了解的编程关键字,
那么它会在 环境变量 $PATH 中查找该指令对应的程序。
1
2
3
4
5
6
7
8
9
10
echo $PATH
# /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/cpy/.local/bin:/home/cpy/bin

# 查找echo位置
which echo
# /usr/bin/echo

# 与echo $PATH等价
/bin/echo $PATH
# /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/cpy/.local/bin:/home/cpy/bin

2. shell 中的路径

shell 中的路径是一组被分割的目录,在 Linux 和 macOS 上使用 / 分割,
而在Windows上是 \。路径 / 代表的是系统的根目录,所有的文件夹都包括在这个路径之下。

如果某个路径以 / 开头,那么它是一个绝对路径,其他的都是相对路径。

相对路径是指相对于当前工作目录的路径,当前工作目录可以使用 pwd 命令来获取。

此外,切换目录需要使用 cd 命令。在路径中,. 表示的是当前目录,而 .. 表示上级目录:

1
2
3
4
5
6
7
8
9
10
11
pwd
# /home/cpy

cd /home
cd ..
pwd
# /

cd ./home
/../bin/echo hello
# hello

3. 一些常用的命令及常用用法

3.1 cd

cd:改变当前工作目录到指定路径

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 切换到home
cd /home

# 切换到当且目录下的cpy子目录
cd ./cpy

# 切换到父目录
cd ..

# 切切换至用户家目录
cd ~

# 切换到上一次的工作目录
cd -
pwd
# /

3.2 ls

ls:显示指定工作目录下之内容

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
cd ~
# 打印当前目录下的内容
ls
# code missing_semi 模板 图片 下载 桌面
# last-modified.txt 公共 视频 文档 音乐

# 显示指定工作目录下之内容
ls /
# bin dev home lib64 mnt proc run srv tmp var
# boot etc lib media opt root sbin sys usr 文档

# 列出所有文件信息,包括权限,所有者,大小和修改日期:
ls -l
# 总用量 4
# drwxr-xr-x. 4 cpy cpy 36 11月 12 23:45 code
# -rw-rw-r--. 1 cpy cpy 37 12月 12 00:21 last-modified.txt
# drwxrwxr-x. 2 cpy cpy 41 12月 11 22:15 missing_semi
# drwxr-xr-x. 2 cpy cpy 6 9月 20 2022 公共
# drwxr-xr-x. 2 cpy cpy 6 9月 20 2022 模板
# drwxr-xr-x. 2 cpy cpy 6 9月 20 2022 视频
# drwxr-xr-x. 2 cpy cpy 6 9月 20 2022 图片
# drwxr-xr-x. 2 cpy cpy 6 10月 4 2022 文档
# drwxr-xr-x. 2 cpy cpy 6 9月 20 2022 下载
# drwxr-xr-x. 2 cpy cpy 6 9月 20 2022 音乐
# drwxr-xr-x. 2 cpy cpy 6 9月 20 2022 桌面

# 列出所有隐藏文件信息
ls -a
# . .bashrc .esd_auth .mozilla 公共 下载
# .. .cache .ICEauthority .pki 模板 音乐
# .bash_history code last-modified.txt .python_history 视频 桌面
# .bash_logout .config .local .viminfo 图片
# .bash_profile .dbus missing_semi .vscode 文档

# 参数组合
ls -la

# 通过管道符( | )配合tail命令获取最后一行的信息
ls -l | tail -n1
# drwxr-xr-x. 2 cpy cpy 6 9月 20 2022 桌面

ls -l 命令显示的每行的前10个字符表示文件权限。
第一个字符如果是”d”表示是文件夹,如果是”-“表示是文件。

接下来的九个字符,每三个字符构成一组(rwx)。
它们分别代表了文件所有者(missing),用户组(users)以及其他所有人具有的权限。
“-“代表没有某种权限。

对文件来说,”r”代表可以读取文件,”w”代表可以向文件中写入,”x”表示这个文件可以被执行。

对文件夹来说,”r”代表可以查看文件夹中的内容,”w”代表可以在文件夹中创建、删除、重命名文件和文件夹,
“x”表示可以访问文件夹中的内容或进入该文件夹.

通过 cd 命令进入某文件夹,需要它和它各级父目录的”x”权限。

3.3 mv

mv:移动文件到任意位置

1
2
# 移动文件到任意位置(如果文件夹名称相同则和重命名效果一样)
mv 路径/到/来源 路径/到/目标

3.4 cp

cp:复制文件到任意位置

1
2
3
4
5
6
7
8
# 复制一个文件到另外一个地方:
cp 文件的原始路径 文件的目标路径

# 复制一个文件到另外一个目录, 保持文件名不变:
cp 文件的原始路径 目标目录路径

# 递归的复制一个目录内的内容到另外一个地方(如果目标目录存在,目录被复制到目标目标内部):
cp -r 目录的原始路径 目标目录路径

3.5 mkdir

mkdir:创建一个空文件夹

1
2
# 创建文件夹
mkdir ./test

3.6 rmdir

rmdir:删除空文件夹

1
2
# 删除指定文件夹
rmdir ./test

3.7 rm

rm:删除指定文件

1
2
3
4
5
# 删除指定文件
rm last-modified.txt

# 递归删除某文件夹里的文件
rm -r ./missing_semi

4. 在程序间创建连接

在 shell 中,程序有两个主要的“流”:它们的输入流和输出流。

当程序尝试读取信息时,它们会从输入流中进行读取,当程序打印信息时,它们会将信息输出到输出流中。

通常,一个程序的输入输出流都是您的终端。也就是,您的键盘作为输入,显示器作为输出。但是,我们也可以重定向这些流!

最简单的重定向是 < file 和 > file。这两个命令可以将程序的输入输出流分别重定向到文件:

1
2
3
4
5
# 把hello输出到hello.txt
echo hello > hello.txt

# 从hello.txt读取数据输出到hello2.txt
cat < hello.txt > hello2.txt

使用 >> 来向一个文件追加内容。

1
2
3
4
cat < hello.txt >> hello2.txt
cat hello2.txt
# hello
# hello

使用管道(pipes),我们能够更好的利用文件重定向。| 操作符允许我们将一个程序的输出和另外一个程序的输入连接起来:

1
2
# 把ls的输出和tail的输入链接起来
ls -l / | tail -n1

5. 作业答案

Q1: 本课程需要使用类Unix shell,例如 Bash 或 ZSH。如果您在 Linux 或者 MacOS 上面完成本课程的练习,则不需要做任何特殊的操作。
如果您使用的是 Windows,则您不应该使用 cmd 或是 Powershell;您可以使用Windows Subsystem for Linux或者是 Linux 虚拟机。
使用echo $SHELL命令可以查看您的 shell 是否满足要求。如果打印结果为/bin/bash或/usr/bin/zsh则是可以的。

按要求输入echo $SHELL命令即可。

Q2: 在 /tmp 下新建一个名为 missing 的文件夹。

1
mkdir /tmp/missing

Q3:用 man 查看程序 touch 的使用手册。

1
man touch

Q4:用 touch 在 missing 文件夹中新建一个叫 semester 的文件。

1
2
cd /tmp/missing
touch semester

Q5:将以下内容一行一行地写入 semester 文件:

1
2
#!/bin/sh
curl --head --silent https://missing.csail.mit.edu

第一行可能有点棘手,# 在Bash中表示注释,而 ! 即使被双引号(”)包裹也具有特殊的含义。
单引号(’)则不一样,此处利用这一点解决输入问题。更多信息请参考 Bash quoting 手册

因为访问不上这个网址,于是我改成了访问百度。

1
2
3
4
# 注意字符串需要用单引号包裹
echo '#!/bin/sh' > semester
# 注意追加是用>>号在文件最后添加语句
echo 'curl --head --silent www.baidu.com' >> semester

Q6:尝试执行这个文件。例如,将该脚本的路径(./semester)输入到您的shell中并回车。如果程序无法执行,请使用 ls 命令来获取信息并理解其不能执行的原因。

输入ls -l查看文件权限发现,semester没有执行(x)权限

1
2
ls -l
# -rw-rw-r--. 1 cpy cpy 49 12月 12 00:04 semester

Q7:查看 chmod 的手册(例如,使用 man chmod 命令)

输入man chmod 命令即可

Q8:使用 chmod 命令改变权限,使 ./semester 能够成功执行,不要使用 sh semester 来执行该程序。
您的 shell 是如何知晓这个文件需要使用 sh 来解析呢?更多信息请参考:shebang

1
2
3
4
# 给所有用户都增加执行权限
chmod +x ./semester
# 执行代码
./semester

Q9:使用 | 和 > ,将 semester 文件输出的最后更改日期信息,写入主目录下的 last-modified.txt 的文件中

1
2
3
4
5
6
# 创建文件
touch ~/last-modified.txt

# 从 semester 文件输出筛选最后更改日期信息
# 重定向输出流到last-modified.txt
./semester | grep -i "Date" > /home/last-modified.txt

1/f随机过程

0. 前言

在看《Backscattering Properties of MultiScale Rough Surfaces》这篇文章的时候,发现自己对 $ 1/f $ 随机信号一无所知,然后找到了《一种 1/f 噪声模型的分析方法》这篇文章。

1. $ 1/f $ 模型

1.1 $ 1/f $ 模型定义

1/f 过程是指其功率谱密度满足如下关系的随机过程:

其中 $\omega_x^2$ 为谱常量, $\gamma$ 为频率指数或谱常数,范围为0到2。

准确定义:广义上平稳零均值的随机过程 $x(t)$ ,如果出现了上下限频率 ,并被理想带通滤波器滤波后,其输出信号满足

因此自然界的 $1/f$ 过程只能在一定频率范围存在。

1.2 $ 1/f $ 过程性质

  1. $ 1/f $过程的均值为0
  2. $ 1/f $过程具有统计自相似性(即对于 $a>0$ 存在常数 $H$ 使 $x(t)=a^{-H}x(at)$, $H$ 表示自相似程度)

1.3

  • Copyrights © 2022-2024 CPY
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信