linux-headers / kernel-headers
1 | Raspbian |
GPIO
1 | pip3 install RPIO |
1 | Raspbian |
1 | pip3 install RPIO |
1 | lscpu |
1 | lspci |
1 | lsblk |
参数
-f
显示文件系统信息-a
显示所有设备1 | parted -l |
1 | mkfs [options] [-t type fs-options] device [size] |
示例
1 | sudo mkfs -t ext4 /dev/sda |
类型
使用中无法格式化
1 | dmsetup status |
1 | sudo parted -a optimal /dev/sda |
1 | (parted) mklabel [partition_table_type] |
分区表类型
示例
1 | (parted) mklabel gpt |
1 | (parted) print |
1 | 主分区 |
示例
1 | (parted) mkpart primary 0.00B 100GB # 按容量 |
1 | sudo mkfs.ext4 /dev/sda1 |
1 | sudo mkdir data |
1 | echo -e "UUID=$(sudo blkid -o value -s UUID /dev/sdb1)\t/data\text4\tdefaults\t0 0" | sudo tee -a /etc/fstab |
1 | sudo parted /dev/sda |
注 创建分区表时 4096s
的取值,可以参考 这里 和 这里。
1 | 分区 |
查看所有 LVM 可以管理的块设备
1 | sudo lvmdiskscan |
查看物理卷信息
1 | sudo lvmdiskscan -l |
查看 Volumn Group 的信息
1 | sudo vgscan |
查看 Logical Volumn 信息
1 | sudo lvscan |
从 Raw Storage Device 创建 Physical Volumes
1 | 列出所有可用的设备 |
如果没有列出目标设备,可能是设备使用了不支持的分区表。重新设置设备的分区表为兼容的 BIOS 表。
1 | sudo parted /dev/sda |
标记存储设备为 LVM 物理卷。
1 | sudo pvcreate /dev/sda |
从 Physical Volumes 创建 Volume Group
1 | sudo vgcreate lvm-storage /dev/sda |
从 Volume Group 创建 Logical Volume
1 | 创建指定 size |
格式化分区
1 | sudo mkfs.ext4 /dev/<lvm-vg-name>/<lvm-lv-name> |
挂载 LV
1 | sudo mount /dev/<lvm-vg-name>/<lvm-lv-name> /path/to/destination |
自动挂载
1 | 查看 logical volume 的 uuid |
1 | sudo vgextend <volume-group-name> /dev/sdb |
Solution 1
1 | sudo lvresize -L +5G --resizefs <lvm-vg-name>/<lvm-lv-name> # 调整 lvm size |
注意: lvresize 之后通过 df -h 查看空间,并不会生效,需要再运行 resize2fs
Solution 2
为 Ubuntu 的 lv 分区扩容
1 | sudo vgdisplay # 查看 vg 信息 |
1 | sudo umount /dev/<lvm-vg-name>/<lvm-lv-name> |
1 | sudo umount /dev/<lvm-vg-name>/* # unmount vg 下所有 lv |
1 | sudo pvremove /dev/sda |
1 | 创建文件系统 |
1 | sudo dmidecode --type connector |
1 | interfaces; configured by dns-nameserver |
1 | export http_proxy=socks5://<host>:<port> |
1 | 设置代理 |
1 | via : [FAMILY] ADDRESS, 指定下一跳地址 |
1 | show table |
1 | show rule |
1 | 添加 |
1 | github ip 走网关 192.168.6.68 |
1 | 添加路由 |
1 | traceroute -4 baidu.com |
1 | 客户端抓取向服务端发送的数据 |
参数 | 默认值 | 说明 |
---|---|---|
-XX:MaxDirectMemorySize | 64M | 非堆内存大小 |
G1GC是区域化、分代式垃圾回收器。堆内存被划分为大小相同的若干区域(Region),区域大小取值为[1,32]
之间2的幂,若不配置Region大小,JVM以数量不超过2048个区域为目标,确定Region大小。这些Region逻辑上组合成传统的Eden、Survivor、Tenured。
G1GC在两个阶段之间交替,young-only和space-reclamation。young-only 阶段包括垃圾回收,其逐渐将
Young-only 阶段
该阶段开始是一些普通年轻代回收(Normal yount collection),其将对象晋升至老年代。Young-only向Space-reclamatioin阶段过渡始自老年代使用率达到设定阈值。此时,G1执行**并行开始年轻代回收(Concurrent Start young collection)**替代普通年轻代回收。过渡周期包含以下阶段。
Space-reclamation 阶段
该阶段包含多个混合回收,除了年轻代区域外,还会压缩(evacuate)老年代区域集合中的存活对象。当G1确定压缩更多老年代区域不会产生足够值得努力的空间时,space-reclamation阶段结束。
确定初始堆占用率
初始堆占用率(Initiating Heap Occupancy Percent,IHOP)是触发初始标记回收的阈值,定义为老年代大小的百分比。
默认情况下,G1通过观察标记耗时及标记周期内老年代分配内存,自动决定最佳的IHOP。该特性称为Adaptive IHOP,当该特性激活时,参数-XX:InitiatingHeapOccupancyPercent
指定的值作为,G1在还没有足够观察值确定该值时的初始值。通过参数-XX:-G1UseAdaptiveIHOP
可关闭该特性,此时 -XX:InitiatingHeapOccupancyPercent
参数指定的值总是决定该阈值。
标记
G1标记使用初始快照算法(Snapshot-At-The-Beginning,SATB)。在初始标记暂停时(Initial Mark pause),为堆创建虚拟快照,
参数 | 默认值 | 说明 |
---|---|---|
-XX:+UseG1GC | - | 使用G1回收器 |
-XX:MaxGCPauseMillis | 200 | 最大GC停顿时间,单位毫秒 |
-XX:InitiatingHeapOccupancyPercent | 45 | 触发标记周期的堆占用率阈值 |
-XX:NewRatio | 2 | 新生代与老年代大小比例 |
-XX:SurvivorRatio | 8 | eden与suvivor区大小比例 |
-XX:MaxTenuringThreshold | 15 | 提升年老代的最大临界值 |
-XX:ParallelGCThreads | - | STW工作线程数 |
-XX:ConcGCThreads | - | 并行标记线程数 |
-XX:G1ReservePercent | 10 | 空闲空间的预留内存百分比 |
-XX:G1HeapWastePercent | 10 | 触发混合垃圾回收的可回收堆内存阈值 |
-XX:G1HeapRegionSize | - | region分片size,1M~32M,2的幂 |
-XX:G1MixedGCCountTarget | 8 | |
-XX:G1OldCSetRegionThresholdPercent | 10 | |
-XX:-G1UseAdaptiveIHOP | - | 关闭自动设置IHOP特性 |
实验参数
使用实验参数,需要添加解锁实验参数标记。
参数 | 默认值 | 说明 |
---|---|---|
-XX:+UnlockExperimentalVMOptions | - | 解锁实验参数 |
-XX:G1NewSizePercent | 5 | 年轻代最小百分比 |
-XX:G1MaxNewSizePercent=60 | 60 | 年轻代最大百分比 |
-XX:G1MixedGCLiveThresholdPercent | 65 | 混合垃圾回收周期中要包括的老年代region使用率阈值 |
日志
参数 | 说明 |
---|---|
-verbose:gc | - |
-XX:+PrintGCDetails | - |
-XX:+PrintGCDateStamps | - |
-XX:+PrintGCApplicationStoppedTime | 打印应用停留时间 |
-XX:+PrintTenuringDistribution | 老年代分布 |
-Xloggc:/path/to/gc.log | - |
-XX:+UseGCLogFileRotation | - |
-XX:NumberOfGCLogFiles=10 | - |
-XX:GCLogFileSize=128M | - |
-XX:InitiatingHeapOccupancyPercent
-XX:G1MixedGCLiveThresholdPercent
-XX:G1HeapWastePercent
-XX:G1MixedGCCountTarget
-XX:G1OldCSetRegionThresholdPercent
1 | // c |
1 | void *memset( void *dest, int ch, size_t count ); |
1 | char str[] = "hello world"; |
1 | #include <algorithm> |
1 | template< class ForwardIt, class T > |
1 | sizeof(type/object) |
1 | // 定义结构 |
1 | .idea/ |
1 | Byte-compiled / optimized / DLL files |
生成公钥
1 | ssh-keygen -t ed25519 -C "<your email>" |
配置全局信息
1 | git config --global user.name "sunzhenkai" |
适用
1 | 生成公钥 |
1 | git restore --staged . # 恢复所有暂存 |
用于暂存代码。
1 | 暂存 |
1 | 添加子模块 |
1 | rm -rf path/to/submodule |
1 | cd /path/to/submodule/dirctory |
1 | git submodule update --init submoduleName |
1 | git tag -s "tag_name" -m "comments" |
1 | git filter-branch -f --prune-empty --index-filter "git rm -rf --cached --ignore-unmatch recommend/keywords.txt" --tag-name-filter cat -- --all |
1 | 设置用户名、邮箱 |
参考这里。
1 | git blame <file> -L <start-line>,<end-line> |
1 | 删除分支 |
1 | 检出 /path/pattern 下文件在 tree-ish 下的状态 |
检出并保存在其他路径
1 | git archive f9ee8bb31f04f4e6a8c0d3e96fbb98deeb448d45 | tar -x -C /tmp/f9ee8bb31f04f4e6a8c0d3e96fbb98deeb448d45 |
从 remote 检出
1 | git archive --remote=https://github.com/user/repo.git <tree-ish> | tar -x -C /path/to/target-dir |
1 | 打印配置 |
1 | 默认仓库级别 |
1 | git config user.name '...' |
1 | 设置 |
1 | feature/JIRA-1929-support-oneid |
1 | git config --global core.quotepath false # 显示 status 编码 |
错误信息
1 | /opt/rh/rh-git218/root/usr/libexec/git-core/git-remote-http: error while loading shared libraries: libcurl-httpd24.so.4: cannot open shared object file: No such file or directory |
解决
1 | find / -name 'libcurl-httpd24.so.4' |
错误信息
1 | ! [remote rejected] master -> master (shallow update not allowed) |
解决
1 | git filter-branch -- --all |
错误信息
1 | case 1 |
原因
在仓库为空时,执行了 git submodule add
解决
1 | rm -r .git/modules/{dest-dir} |