继续巩固打拨弦和开指练习,新增卡鲁里1至4型节奏练习,视奏《我怎能离开你》低音和高音版。
练习
打拨弦
2:1 90 100 110
1:1 60 70
开指
2:1 70 80 90
右手发音
2:1 60 70 80
视奏
我怎能离开你 低音高音版 四分音符 = 50 60 70
卡鲁里 1至4型 1:1 50 60 70 (一个音一拍)…
左手按弦姿势尽量放松,不要突出压迫手腕,不要夹臂,手掌尽量贴近琴颈下方,手指按弦时第一关节与面板保持垂直。
左手打拨弦练习
训练左手独立性,灵活性,爆发性和准确性。手指自然弯曲状态下向手背方向拉伸,感觉到手背的筋的拉力。然后采用爆发力将手指打在琴弦上,打在琴弦上时手指是自然按弦的状态,而不是蛮力,关键点在于解除拉伸状态时的突然爆发力。手指打在琴弦上时,采用靠弦方式拨动琴弦,手指停留在下一根琴弦上,停留后使其处于放松状态。
左手开指
练习各个手指之间的展开度。
课后练习
打拨弦:
单指:1,2,3,4
双指:12,13,14,23,24,34
三指:123,124,134,234
四指:1234
开指:
12,13,14,23,24,34,右手采用靠弦方式。…
姿势
面向观众,左腿踩脚蹬向前冲前方,右腿放松,放置琴于左腿之上,琴头与眉头基本持平,琴上桶突出处位于身体中央偏左位置,两肩放松。右手小臂置于琴下桶突出处。p指放于6弦上,位置在音控正中央处,i,m,a指分别放在3,2,1弦上。保持手指大关节(或手掌)方向与小臂一致,指甲方向大概指向上琴桶,方便发力,避免长时间弹琴产生病痛。手腕可根据个人手型,大小适当隆起,以便方便与拨弦。手腕内外扭曲,或向上向下弯曲。
靠弦发音
分解动作:1. 按弦 2. 拨弦 3. 还原 4. 放松
按弦将琴弦按下,手指肉按住,指甲即将触弦的状态,避免发出指甲打弦的声音。拨动琴弦,手指停留在下一根弦上,不要勾弦,手指拨弦方向基本上与琴弦垂直,让琴弦沿着指甲的坡度滑动。理论就是琴弦垂直面板震动,发出更饱满,有质感的声音。
合成动作:1,2,3,4步骤一气呵成。
练习
分解动作:2拍一个动作。
合成动作:4拍一个音。
熟练之后可减轻靠弦的力度,即发完音之后及时收住手指头。
注
对着镜子练习,清楚每一步做什么,做的是否正确。…
间隔半音数
间隔名
大致频率比
0
perfect unison 完全一度
1:1
1
minor second 小二度
16:15
2
major second 大二度
9:8
3
minor third 小三度
6:5
4
major third 大三度
5:4
5
perfect fourth 完全四度
4:3
6
augmented fourth 增四度diminished fifth 减五度
45:3264:45
7
perfect fifth 完全五度
3:2
8
minor sixth 小六度
8:5
9
major sixth 大六度
5:3
10
minor seventh 小七度
16:9
11
major seventh 大七度
15:8
12
perfect octave 完全八度
2:1…
7月2日到10月2日。
虽然失败了很多次,但不要害怕失败。做了不一定能戒掉,但不做肯定戒不了,大不了重头再来,小一点心理压力。🙄…
个人工作之中经常使用sed,但是比较简单的命令,并没有仔细的研究过sed详细用法,所以参考man手册进行了详细的整理。
sed是一个流式文本编辑器,可用来过滤和转换文本。基本用法如下:
[source,shell]
----
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
----
其中的“[OPTION]”是可选的命令行参数,“{script-only-if-no-other-script}”是要执行的sed命令(如果没有用-e或-f指定别的命令的话,否则会视为输入文件路径),“[input-file]”是输入文件的路径。
sed的命令格式为:[地址]命令。地址是可选的,根据具体的命令而定。如‘/^hostname/aip=8.8.8.8’,‘p’等,地址格式和具体的命令可参下文。
== 选项及其含义
-n::
--quiet::
--silent::
禁用自动打印模式空间,也就是禁止打印匹配的内容
-e script, --expression=script::
添加要执行的sed命令
-f script-file, --file=script-file::
将文件中的内容添加到要执行的命令中
--follow-symlinks::
在in-place(如下)模式下,追踪符号链接
-i[SUFFIX], --in-place[=SUFFIX]::
对文件进行直接更改,如果提供了SUFFIX,会使用SUFFIX作为扩展名进行备份
-l N, --line-length=N::
指定行的长度
--posix::
禁用所有的GNU扩展
-E, -r, --regexp-extended::
在命令中使用posix扩展正则表达式(考虑到兼容性,应使用-E)
-s, --separate::
将各个文件单独对待,而不是一个长的连续的文本流。
--sandbox::
在沙箱模式下运行
-u, --unbuffered::
每次加载较小数量的数据,并加快刷新输入缓存的频率。
-z, --null-data::
采用NUL字符(ascii 0)分割行
--help::
显示帮助信息
--version::
打印版本信息
如果没有指定-e,--expression,-f或--file选项,那么第一个非选项参数(及位置参数)将被作为命令来对待,剩下的所有参数都将作为文件名处理,如果没有指定文件名,则在标准输出中读取数据。
== 命令列表
=== 无地址命令
: label::
*b*和*t*的标号
#comment::
注释持续到换行符(或-e参数的结尾)
}::
{}区块的闭合括号
=== 0或1个地址的命令…
分别对64B,1K, 4K, 16K, 256K, 4M, 64M,512M,2G大小进行测试,测试程序如下:
[source,c]
----
#include
#include
#include
#include
long long count = 0;
void alarm_handler(int sig) {
printf("%lld\n", count);
count = 0;
alarm(1);
}
int main() {
signal(SIGALRM, alarm_handler);
alarm(1);
while(1) {
void *data = malloc(8589934592);
if (!data)
printf("alloc error\n");
free(data);
count++;
}
}
----
机器配置:
内存:8GB,1600MHz
CPU:Intel Core I5,2 Core,4 Thread,2500MHz
测试时机器内存占用(足够各个大小):
[source,shell]
----
blue@debian:/tmp$ free -g
total used free shared buff/cache available
Mem: 7…
link:https://github.com/timescale/timescaledb[timescaledb]是postgresql数据库的一个插件,通过hypertable实现对时间序列数据库进行分块,通过把大表分为多个小表的方式,新的数据总是插入到最新的块上,由于进行了分块,使得索引数据变小,保持索引一直处于内存当中,不用去磁盘交换数据,因此加快了数据的插入速度。timescaledb官方提供了数据库性能测试工具和数据,可参考link:https://github.com/timescale/benchmark-postgres[benchmark-postgres]。
官方也有link:https://blog.timescale.com/timescaledb-vs-6a696248104e[测试报告],随着数据量的增加,数据插入的性能一直处于稳定状态,而相比之下,postgresql则表现为指数级下降。
本测试采用官方提供的数据和程序,测试环境为阿里云ecs.g5.large云服务器,具体配置如下:
* 2核cpu
* 8GB内存
* 两块100GB ssd云盘,1800 IOPS
* 系统为Debian 9.2
## 测试步骤:
分别挂在两块ssd云盘到/data和/data1。
安装postgresql-9.6,安装timescaledb扩展。修改配置,修改配置:
```ini
shared_preload_libraries = 'timescaledb'
data_directory = ‘/data/pgdb’
shared_buffers = 2GB
```
保存后重启postgresql。具体步骤参考相应的文档。
下载官方提供的link:https://timescaledata.blob.core.windows.net/datasets/benchmark_postgres.tar.bz2[数据]并解压到/data1目录下,cpu-data.csv中包含1亿条数据,每条数据格式如下:
```shell
2016-01-03 23:59:30+00,host_1999,80.6521114433705,60.9865370795396,38.7496729040943,11.5620089238801,47.2124408432341,82.4793308352443,41.6463534391737,85.2477509705689,53.843722695106,52.3795963946359
```
下载测试程序,安装go环境,并编译3个程序,并将测试程序拷贝到/data1目录下。
创建benchmark数据,并初始化cpu_ts和cpu_pg表:
```shell
postgres@debian:/data1$ psql -c 'CREATE DATABASE benchmark;'
postgres@debian:/data1$ psql -d benchmark benchmark-setup-timescaledb.sql
postgres@debian:/data1$ psql -d benchmark benchmark-setup-postgresql.sql
```
分别想cpu_pg和cpu_ts数据库插入数据:
```
postgres@debian:/data1$ ./copy --db-name=benchmark --table=cpu_pg --verbose --reporting-period=30s --file=cpu-data.csv --connection='host=localhost user=postgres password=postgres'
postgres@debian:/data1$ ./copy…
tcpdump是一个网络抓包工具,依赖于libpcap实现。libpcap是一个网络抓包库,支持ether,fddi,tr,wlan,ip,ip6,arp,rarp,decnet,tcp和udp协议。
tcpdump的基本是用方法为:
[source,shell]
----
tcpdump options expression
----
options指定程序运行选项,expression是一个逻辑表达式,只抓取满足expressionn表达式的包。例如`tcpdump -i eth0 tcp and host 192.168.1.101`抓取eth0接口到192.168.1.101主机的所有tcp包。`-i eth0`是运行选项,`tcp and host 192.168.1.101`是表达式,表示抓取所有到192.168.1.101主机的tcp包。tcpdump支持的详细参数可参考`man tcpdump`,表达式的详细信息可参考`man pcap-filter`。
== 常用的选项
-A:: 采用ASCII码打印出包内容,抓取网页时很方便。
-F file:: 使用file文件中的内容作为表达式,命令行中的表达式将被忽略。
-i interface:: 要抓取的网络接口,如果未指定,则使用序号最小的接口,如eth0。也可以使用any来使用任意接口。
-l:: 设置stdout的输出模式为行缓冲,当想一边抓包一遍查看数据的时候有用。如`tcpdump -l | tee dat`和`tcpdump -l dat & tail -f dat`。
-e:: 打印数据链路层包头。
-Q direction:: 设置要抓取发送还是接收的数据,可能的值为in,out和inout。
-r file:: 从文件中读取数据包(有tcpdump -w生成,或其他pcap兼容格式)。
-v::
-vv::
-vvv::
打印详细信息。
-w file:: 将原始包信息输出到文件中,之后可以通过-r来打印。
-x:: 除了打印包头,同样以十六进制方式打印包内容,不包括链路层的包头。
-xx:: 除了打印包头,同样以十六进制方式打印包内容。
-X:: 除了打印包头,同样以十六进制和ASCII码方式打印包内容,不包括链路层的包头。
-XX:: 除了打印包头,同样以十六进制和ASCII码方式打印包内容。
== 表达式语法…
libvirt是一个虚拟化开发的工具库,提供了底层的kvm,xen,vmware esx等虚拟化的统一封装。可以通过libvirt提供的api对不同的底层实现进行同一的管理。除了原生的c api,还有c#, go, java, ocaml. perl, python, php, ruby的api,用户可自主选择自己熟悉的语言。
要使用libvirt首先要安装libvirtd,这是一个后台守护进程,负责管理虚拟机系统以及和客户端交互。libvirt还包含了virsh命令行工具,供用户通过shell手动管理。另外,还可以通过图形界面方式进行管理,该工具是virt-manager,如果您想要通过python的api进行开发,需要安装python3-libvirt或python-libvirt。在debian下,可通过下列指令安装这些包:
apt-get install libvirt-daemon libvirt-daemon-system libvirt-clients python3-libvirt virt-manager
启动libvirtd:
systemctl start libvirtd
接下来我们就可以通过virt-manager创建一个虚拟机。熟悉vmware或者virtualbox的同学,可以看到virt-manager和这些软件很类似,安装系统就不再介绍了。
系统安装完成之后,我们就可以通过virsh工具进行基本的操作了。运行virsh,回车,进入virsh的命令行,可通过help查看virsh支持的操作。
virsh # help
Grouped commands:
Domain Management (help keyword 'domain'):
attach-device attach device from an XML file
attach-disk attach disk device
attach-interface attach network interface
autostart autostart a domain
blkdeviotune Set or query a block device I/O tuning parameters.
blkiotune Get or set blkio parameters
blockcommit…