杂项
学习等级
默读:通过默默阅读来学习,在心中理解和消化知识.默读适合个人独立学习,可以帮助提升阅读理解和知识吸收能力.
听:以听取他人讲解或演示的方式来学习.通过聆听他人的讲解,可以获得更直观的理解和感受,适合针对口语表达、音频材料或演讲内容的学习.
朗读:将学习内容用口说出来,通过声音的输出来加深对知识的理解和记忆.朗读可以帮助加强口语表达和语音语调的练习,并加强对知识点的记忆.
做笔记:将学习过程中的重点、关键信息以及自己的思考记录下来,用文字形式整理和归纳知识.做笔记有助于整理思路、加深对学习内容的理解,并提供学习过程的参考资料.
讨论:与他人一起讨论学习内容,交流观点、思考问题.通过讨论可以从不同的角度得到反馈和启发,拓展思维广度,加深对知识的理解,并培养合作和沟通能力.
教给别人:通过向他人教授所学的知识来学习.当我们试图将知识传授给他人时,需要深入理解和组织知识,以便清晰地讲解给别人,同时也可以通过他人的反馈来检验和完善自己对知识的掌握.
学习方法
MSA方法:
Multi-Dimension:想要掌握一个事物,就要从多个角度去认识它。
Ask:不懂就问,程序员大多都 ...
读书笔记-MySQL是怎样运行的
参考文献
<<MySQL是怎样运行的>> 小孩子4919
第六章 快速查询的秘籍-B+树索引
总结
InnoDB存储引擎的索引是一棵B+树,完整的用户记录都存储在B+树第0层的叶子节点;其他层次的节点都属于内节点,内节点中存储的是目录项记录.
InnoDB的索引分为两种:
聚簇索引: 以主键值的大小作为页和记录的排序规则,在叶子节点处存储的记录包含了表中所有的列
二级索引: 以索引列的大小作为页和记录的排序规则,在叶子节点处存储的记录内容是索引列+主键
InnoDB存储引擎的B+树根节点自创建之日起就不在移动(即根节点所在的页号不会改变).
树的根始终在一个固定的位置,方便快速定位
在二级索引的B+树内节点中,目录项记录有索引列的值,主键值和页号组成.
一个数据页至少可以容纳2条记录.
MyISAM存储引擎的数据和索引分开存储,这种存储引擎的索引全部都是二级索引,在叶子节点处存储的是列+行号(对于定长记录格式的记录来说)
每个索引都对应一棵B+树.B+树分为好多层,最下边一层是叶子节点,其余的是内节点.所有用户记录都存储在B+树的叶子节点,所 ...
读书笔记-数据密集型应用系统设计
参考文献
<<数据密集型应用系统设计>>
基础
可靠性/可扩展性/可维护性
可靠性(Reliability): 当出现意外情况,如硬件/软件故障/人为失误,系统应可以继续正常运转;虽然性能可能有所降低,但确保功能正确.
可扩展性(Scalability): 随着规模的增长,例如数据量/流量/复杂性,系统应以合理的方式来匹配这种增长.
可维护性(Maintainability): 随着时间的推移,许多新的人员参与到系统开发和运维,以维护现有功能或适配新场景等,系统都应高效运转.
可运维性
方便运营团队来保持系统平稳运行.
简单性
简单系统复杂性,使新工程师能后轻松理解系统.注意这与用户界面的简单性并不一样.
可演化性
后续工程师那个轻松对系统进行改进,并根据需求变化将其适配到非典型场景,也称为可延伸性,易修改性或者可塑性.
延迟/响应时间
延迟(latency): 延迟是请求花费在处理上的时间.
响应时间(response time): 通常响应时间是客户端看到的,除了处理请求时间(服务时间,service time)外,还包括来 ...
知识点-名词解释
参考文献
服务器的上行带宽及下行带宽详细说明
名词解释
CSRF
CSRF(Cross-Site Request Forgery),中文名称为跨站请求伪造,是一种网络攻击方式.攻击者利用用户在其他网站已经登录的身份,来伪造用户向特定网站发送请求,从而实现非法操作.
攻击方式通常包括以下几个步骤:
攻击者在自己的网站上放置一个钓鱼网页,利用某些方法(如诱导点击链接、通过广告等方式)诱导用户访问该网页.
该钓鱼网页中会包含一个针对受害者网站的请求,这个请求通常是一个表单提交或者图片链接等.
如果用户访问了该钓鱼网页,并且在自己的电脑上同时也登录了受害者网站,那么当用户提交表单时,攻击者就可以利用用户的身份,伪造一个请求,将数据提交到受害者网站上.
受害者网站会认为该请求是合法的,因为请求中带有用户的身份认证信息,于是就会执行该请求.
为了防止 CSRF 攻击,网站需要采取相应的安全措施.其中比较常见的措施包括使用 CSRF token 防御、检查 Referer 头信息等.此外,用户也应该注意不要随意点击来历不明的链接,以免成为 CSRF 攻击的受害者.
IOPS
IOPS ...
Lua-基础
参考文献
注释
单行注释
两个减号是单行注释:
1--
多行注释
1234--[[ 多行注释 多行注释 --]]
关键词
以下列出了 Lua的保留关键词.保留关键字不能作为常量或变量或其他用户自定义标示符:
and
break
do
else
elseif
end
false
for
function
if
in
local
nil
not
or
repeat
return
then
true
until
while
goto
一般约定,以下划线开头连接一串大写字母的名字(比如 _VERSION)被保留用于 Lua内部全局变量.
数据类型
Lua是动态类型语言,变量不要类型定义,只需要为变量赋值. 值可以存储在变量中,作为参数传递或结果返回.
Lua中有 8 个基本类型分别为: nil、boolean、number、string、userdata、function、thread 和 table.
数据类型
描述
nil
这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false).
...
Linux-常用环境配置
参考文献
Ubuntu基本环境配置
Ubuntu
具体配置(以Ubuntu18.04为例)
配置apt源
修改为阿里apt源
https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.709c1b11miR2ke
12345# 备份旧源sudo cp /etc/apt/sources.list /etc/apt/sources.list.old# 填充以下内容vim /etc/apt/sources.list
123456789101112131415deb https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb-src https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ bionic-security main ...
Linux-日志分析
参考文献
日志文件
日志默认存放位置:/var/log/
查看日志配置情况:more /etc/rsyslog.conf
日志文件
说明
/var/log/cron
记录了系统定时任务相关的日志
/var/log/cups
记录打印信息的日志
/var/log/dmesg
记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/mailog
记录邮件信息
/var/log/messages
记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件
/var/log/btmp
记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看
/var/log/lastlog
记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用lastlog命令查看
/var/log/wtmp
永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件 ...
操作系统
参考文献
极客时间 操作系统实战45讲
📔【操作系统】写时复制 Copy-on-write
12 张图看懂 CPU 缓存一致性与 MESI 协议,真的一致吗?
进程
(有时候也称做任务)是指一个程序运行的实例.在 Linux 系统中,线程就是能并行运行并且与他们的父进程(创建他们的进程)共享同一地址空间(一段内存区域)和其他资源的轻量级的进程
IPC(Inter-Process Communication)
管道(Pipe)或者具名管道(Named Pipe): 管道类似于两个进程间的桥梁,可通过管道在进程间传递少量的字符流或字节流.普通管道只用于有亲缘关系进程(由一个进程启动的另外一个进程)间的通信,具名管道摆脱了普通管道没有名字的限制,除具有管道所有的功能外,它还允许无亲缘关系进程间的通信.管道典型的应用就是命令行中的|操作符
信号(Signal): 信号用于通知目标进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程自身
信号量(Semaphore): 信号量用于两个进程之间同步协作手段,它相当于操作系统提供的一个特殊变量,程序可以在上面进行wait() ...
Linux-磁盘管理
参考文献
ubuntu 使用 fdisk 磁盘分区
虚拟机磁盘扩容
常见的档案系统
传统档案系统: ext2/minix/MS-DOS/FAT(用vfat模块)
日志是档案系统: ext3/ReiserFS/Windos' NTFS/IBM's JFS/SGI's XFS
网络档案系统: NFS/SMBFS
档案系统的简单操作
磁盘与目录的容量: df, du
连结档的介绍: ln
磁盘的分割、格式化、检验与挂载
磁盘分割: fdisk
磁盘格式化: mke2fs, mkbootdisk, fdformat
磁盘检验: fsck, badblocks, sync
磁盘挂载与卸载: mount, umount
磁盘参数修订: mknod, e2label, tune2fs, hdparm
df
磁盘空间查看工具,用于显示文件系统磁盘空间的使用情况
命令说明
12345678910111213141516171819202122232425262728293031323334353637383940# df --helpUsage: df [OPTIO ...
Python-pyinstaller
参考文献
PyInstaller Manual
pyinstaller安装
1pip install -U pyinstaller
命令
1234pyinstaller [options] script [script …] | specfile# 示例pyinstaller myscript.py
使用示例
在windows下打包
12# 打包成单个exe文件,且隐藏控制台pyinstaller.exe -F -w .\xxx.py
12# 打包成单个exe文件,且隐藏控制台,并在应用程序启动时请求管理员权限(提权)pyinstaller.exe -F -w --uac-admin .\xxx.py