LVM
磁盘管理常用命令mount
用于挂载设备,Linux系统一般插入某个磁盘需要进行挂载之后才可以进行访问
123456789# 输出系统下mount信息mount# 挂载分区到/mnt目录mount /dev/sda1 /mnt# 挂载/etc/fstab中所有配置mount -a
findmnt12# 显示设备上所有挂载树状图findmnt
df1234567# 显示挂载的文件系统及其磁盘使用情况df -h# 显示挂载点对应的设备df -h /mnt/data
blkid
常用于/etc/fstab磁盘挂载查询分区UUID
12# 显示所有分区的UUIDblkid
lsblk123# 显示所有块设备关系,包括lvm卷关系信息等信息lsblk
LVM
安装完PVE后,PVE默认会将磁盘进行分区,其中包括真实的物理分区/boot和一个虚拟分区lvm,此虚拟分区包含了两个部分,1.系统所在分区 2.虚拟化池,1分区中包含一个物理分区,调整其大小需要先对物理分区进行调整(例如ext4 使用resize2fs),后对包含这个物理分区的逻辑卷进行调整(例 ...
Linux网络路由
网络配置静态地址(有线)命令
一个常见的场景,当你安装好一台Linux系统,正处于局域网,但没有安装dhclient,能通过手动配置静态地址,但配置好后发现不能联网只能访问内网,此时的关键就在于到底有没有配置网关。网关会出现在路由表开头为default 的路由条目。
IP 掩码
为你的eth0网卡配置IP 192.168.1.100/24 并 启用网卡
1sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up
路由表
为路由表中添加default路由,意味着数据包源地址匹配不到任何路由条目时默认会发往192.168.1.1
1sudo route add default gw 192.168.1.1
DNS
此时你可能发现只能ping外网而解析域名失败
编辑/etc/resolv.conf文件,添加DNS服务器地址。
1sudo vim /etc/resolv.conf
添加以下内容:
1234nameserver 223.5.5.5nameserver 223.6.6.6namese ...
跨域请求
同源策略
同源策略是来自浏览器的,为保障浏览器执行javascript代码中访问后端API请求的 协议 域名 端口 与前端服务器相同而设置的策略,此策略是用来确保安全的。
比较项
描述
示例
是否同源
协议
比较两个URL的协议是否相同
http://example.com vs. https://example.com
否(协议不同)
域名
比较两个URL的域名是否相同
http://example.com vs. http://sub.example.com
否(域名不同)
端口
比较两个URL的端口是否相同
http://example.com:80 vs. http://example.com:8080
否(端口不同)
同源示例
完全相同的协议、域名和端口
http://example.com:80 vs. http://example.com:80
是(完全相同)
协议不同
只有协议不同,但域名和端口相同
http://example.com:80 vs. https://example.com:80
否(协议不同)
子域名不同
主域名相同, ...
电子元件
二极管
两个极:
P(Positive)消极的;
N(Negative)积极的;
二极管的电子只能从 N -> P [等效于] 电流只能从 P -> N
P极参杂3价硼,最外层7电子意图夺取一个电子形成8电子稳态。
N极参杂5价磷元素,形成P极,最外层9电子意图扔掉一个电子形成8电子稳态。
二极管符号
电子的方向从(负极N) -> (正极P),此时满足电子从P高电位 -> N地电位(满足能量守恒,释放能量)
电子如果反向就会从P -> N,即PN结(增大)。
PN结:由于P和N结合处P中的P-Si参杂意图失去一个电子,B-Si参杂得到一个电子,此时形成PN结。PN层有两层,其中 P层带-电,N层带+电。电场方向从 左<-右。
正向导通电压:0.6-0.7V,想象一下,如果给上方的二极管通上小于0.6V电压,电子从负极流向正极,但电子电压小于0.6V,是不能通过PN结的,只有大于0.7V电子才可以通过这个PN结。
反向电压:如果将以上二级管正极接电源负极,负极接电源正极,就会出现下图的情况,P会区获得电子带负电,N区失去电子带正 ...
PostgreSQL
初识
PostgreSQL 是一个免费的开源数据库系统,支持关系(SQL)和非关系(JSON)查询。
PostgreSQL是在加州大学伯克利计算机科学系发明的。
它始于1986年的一个项目,目标是创建一个具有支持多种数据类型所需的最小功能的数据库系统。
一开始,PostgreSQL运行在UNIX平台上,但现在它可以运行在各种平台上,包括Windows和MacOS。
参考:
w3schools:PostgreSQL Tutorial
GitHub:postgres
安装
windows 详见:w3schools:Install Introduction
我的电脑使用Arch Linux
Docker安装
参考:
DockerHub:postgres
YouTube:How To Build A Complete JSON API In Golang (JWT, Postgres, and Docker) Part 2
这将创建一个postgres的Docker容器,密码gobank、映射5432端口到主机端口,默认数据库postgres,用户名默认postgres
1docker ...
浅谈多线程
需了解
参考:Piotr Kołaczkowski:How Much Memory Do You Need to Run 1 Million Concurrent Tasks?
线程
超线程:超线程技术(Hyper-Threading Technology)是由英特尔推出的一项技术,它可以在单个物理处理器核心上模拟多个逻辑处理器核心,以提高处理器的并行度和整体性能。一般单核会被模拟出一个线程(共2线程)。
单线程
简单的理解只有一个工人
相当于单核CPU(未使用超线程技术)
人脑就是单线程
多线程
简单的理解同时有多个工人
多核心CPU
使用超线程技术
同步异步任务
无论同步任务还是异步任务都是相对于单线程而言的
同步任务
必须按照顺序的一直执行下去,不能执行其他操作
你在做一件非常复杂的数学题,此时你只能专注这件事,并一步步地解决,不能被打扰
异步任务
在做一件事情的同时,另一件以上的事情同时在进行
一个餐厅里只有一个人(厨师兼服务员),同时要服务多个顾客,点餐的过程手动发给他们每人一个小本本(记录菜单),假设这个人有超能力可以快速移动、记录事件、窃听状态等,就 ...
Golang
基础数据类型
引用类型是对底层数据结构的引用, 值类型是数据结构的副本。y := x ,如果 x 是一个引用类型,那么 y 将指向与 x 相同的内存地址。但是,如果 x 是一个值类型,那么 y 将获得一个 x 的副本,而不是 x 的地址。
值类型
整数
浮点数
布尔值
数组
结构体
字符串
引用类型
指针
切片
映射
通道
接口
结构体
结构体相当于面向对象中的Class,创建不进行new或者创建实例就不能进行使用,换句话说必须进行实例化后才可以使用。
使用未初始化的结构体变量这种情况下,p 被声明为一个 Person 类型的变量。即使没有显式初始化,Go 语言会自动将其字段设置为零值。你可以安全地访问这些字段。
12345678910package mainfunc main() { var p Person // 声明但未初始化,p 是一个零值初始化的结构体实例 fmt.Println(p.Name) // 输出空字符串 "" fmt.Println(p.Age) // 输出 0}
使用 new ...
浅谈操作系统引导过程
BISO
默认启动项(Boot Loader)数据:引导代码中存储EFI文件路径
无NVRAM,启动代码和分区表存储于磁盘0柱面0扇区(512字节)
UEFI
默认启动项(Boot Loader)数据:NVRAM中存储EFI文件路径
有NVRAM,启动代码存于NVRAM
分区表存储于磁盘最开始位置到1MB空间
启动项编辑工具efibootmgr
efibootmgr可用来修改NVRAM中的数据
执行此命令会打印出在BIOS设置的启动项:
123456789$ efibootmgr BootCurrent: 0000Timeout: 1 secondsBootOrder: 0000,0001,0002,0003,0004Boot0000* Arch Linux HD(1,GPT,c8f79300-07ea-4a02-8bc6-7cb19803be54,0x800,0xfa000)/\EFI\ARCHLINUX\GRUBX64.EFIBoot0001* Mac OS HD(1,GPT ...
OpenWrt
下载ImmortalWrt
Github:immortalwrt
ImmortalWrt官方固件
虚拟机
我这里是通过ProxmoxVE虚拟机进行安装的,于是选择 x86-64-generic-ext4-combined-efi.qcow2.gz 文件
选择固件时候会带有一些名词
EFI:这是 Extensible Firmware Interface 的缩写,是一种用于启动计算机的标准接口。EFI 固件通常用于 x86 架构的计算机,支持 UEFI 启动。
QCOW2:这是一种磁盘映像文件格式,通常用于虚拟机。它支持压缩和快照功能,适用于 QEMU 和 KVM 虚拟化平台。
VDI:这是 VirtualBox Disk Image 的缩写,是 Oracle VirtualBox 虚拟机的磁盘映像格式。
VHDX:这是 Virtual Hard Disk 的缩写,是 Microsoft Hyper-V 虚拟机的磁盘映像格式
VMDK:这是 Virtual Machine Disk 的缩写,是 VMware 虚拟机的磁盘映像格式。
导入ProxmoxVE虚拟机
将此qcow2硬盘 ...