解决方案-压测
参考文献
全链路压测数据隔离方案的选择
影子库
影子表
工具
wrk
Windows-遇到的问题
参考文献
I have some issues when I run “kubeadm init”
kubeadm init error
123456789101112# kubeadm init --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'I0814 13:18:08.628892 4337 version.go:256] remote version is much newer: v1.31.0; falling back to: stable-1.28W0814 13:18:18.638114 4337 version.go:104] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.28.txt": Get "https://cdn.dl.k8s. ...
好文收藏
好文收藏
Netty
聊聊Netty那些事儿之从内核角度看IO模型 ⭐⭐⭐⭐⭐
很详细的介绍了各种I/O模型,附带图文,源码
算法-内存分配算法
参考文献
内存分配算法
常用的内存分配算法:
动态内存分配(Dynamic memory allocation DMA)
伙伴算法
Slab算法
动态内存分配(Dynamic memory allocation DMA)
动态内存分配,又称堆内存分配.操作系统根据程序运行过程中需求及时分配内存,且分配的内存大小就是程序需求的大小.在大部分场景下,只有程序运行的时候才知道所需要分配的内存大小,如果提前分配可能分配的大小无法把控,分配太大会浪费空间,分配太小会无法使用.
DMA是从一整块内存中按需分配,对于分配的内存会记录元数据,同时还会使用空闲分区链维护空闲内存,便于在内存分配时查找可用的空闲分区.常用的有三种查找策略:
首次适应算法(first fit)
循环适应算法(next fit)
最佳适应算法(best fit)
首次适应算法(first fit)
空闲分区链以地址递增的顺序,将空闲分区以双向链表的形式连接在一起,从空闲分区链中找到第一个满足分配条件的空闲分区,然后从空闲分区中划分一块可用内存给请求进程,剩余的空闲分区仍然保留在空闲分区链中.
如下图 ...
Linux工具-strace
参考文献
5 simple ways to troubleshoot using Strace
strace
strace命令用于跟踪系统调用和信号.主要用于诊断,调试程序,使用该命令能够打印出进程执行的系统调用信息.
strace常用选项如下:
123456789101112131415161718strace -fT -tt -yy [-p 进程号] -f 跟踪子进程 -T 系统调用执行耗时,行尾展示 -tt 开始执行时间,精度ms,行首展示 -r 打印相对耗时 -yy 打印fd信息,对于文件会打印/文件名,对于socket会打印四元组 -o 打印记录到文件 -ff 搭配-o时使用,同时记录子进程跟踪结果 root@holelin:~# ps -ef |grep sshdroot 794 1 0 04:21 ? 00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startupsroot 1954 ...
网络基础(七)-WebSocket协议
参考文献
趣谈网络协议
WebSocket-RFC-6455
WebSocket
数据格式
123456789101112131415161718 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-------+-+-------------+-------------------------------+|F|R|R|R| opcode|M| Payload len | Extended payload length ||I|S|S|S| (4) |A| (7) | (16/64) ||N|V|V|V| |S| | (if payload len==126/127) || |1|2|3| |K| | ...
MySQL-Security
参考文献
MySQL 8 Cookbook
使用mysql_config_editor进行无密码认证
1234567891011121314151617181920212223242526272829mysql_config_editor --helpmysql_config_editor Ver 1.0 Distrib 5.7.24, for osx11.1 on x86_64Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.MySQL Configuration Utility.Usage: mysql_config_editor [program options] [command [command options ...
读书笔记-动手学深度学习-Pytorch版
参考文献
动手学深度学习 Pytorch版
2.3 线性代数
标量
本书采⽤了数学表⽰法,其中标量变量由普通⼩写字⺟表⽰(例如,xxx、yyy和zzz).本书⽤R表⽰所有(连续)实数标量的空间,之后将严格定义空间(space)是什么,但现在只要记住表达式x∈Rx\in Rx∈R是表⽰x是⼀个实值标量的正式形式.符号∈\in∈称为“属于”,它表⽰“是集合中的成员”.例如x,y∈{0,1}x, y \in \{0, 1\}x,y∈{0,1}可以⽤来表明xxx和yyy是值只能为0或1的数字.
标量由只有⼀个元素的张量表⽰.下⾯的代码将实例化两个标量,并执⾏⼀些熟悉的算术运算,即加法、乘法、除法和指数
123456import torchx = torch.tensor(3.0)y = torch.tensor(2.0)x + y,x * y,x / y,x ** y==> (tensor(5.), tensor(6.), tensor(1.5000), tensor(9.))
向量
向量可以被视为标量值组成的列表.这些标量值被称为向量的元素(element)或分量( ...
MySQL-binlog
参考文献
MySQL技术内幕 InnoDB存储引擎
MySQL 8 Cookbook
binlog
什么是binlog?
二进制日志包含数据库的所有更改记录,包括数据和结构两方面.二进制不记录SELECT或SHOW等不修改数据的操作.
运行带有二进制日志的服务器会带来轻微的性能影响.二进制日志能保证数据库出现故障时数据是安全的.
只有完整的事件或事务才会被记录或者回读.
binlog格式
该参数可设的值有STATEMENT,ROW,MIXED.
STATEMENT模式下,每一条会修改数据的sql都会记录在binlog中.不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能.由于sql的执行是有上下文的,因此在保存的时候需要保存相关的信息,同时还有一些使用了函数之类的语句无法被记录复制.
ROW格式,二进制日志记录的不再是简单的SQL语句了,而是记录表的行更改情况.从MySQL5.1版本开始,如果设置了binlog_format为ROW,可以将InnoDB的事务隔离级别设置为READ COMMITTED,以获得更好的并发性.
MIXED格式,默认 ...
MySQL-redo log
参考文献
千金良方: MySQL性能优化金字塔法则
redo log
redo log用来实现事务的持久性,即事务ACID的D.其由两部分组成:
一是内存中的重做日志缓冲(redo log buffer),其是易失的
二是重做日志文件(redo log file),其是持久的.
InnoDB是事务的存储引擎,其通过Force Log at Commit机制实现事务的持久性,即当事务提交(COMMIT)时,必须先将事务的所有日志写入到重做日志文件进行持久化,待事务的COMMIT操作完成才算完成.
redo log基本上都是顺序写的,在数据库运行时不需要对redo log的文件进行读取操作,而undo log是需要进行随机读写的.
WAL(Write-Ahead Logging),它的关键点就是先写日志,再写磁盘.
当有一条记录需要更新的时候,InnoDB引擎就会先把记录写到redo log里面,并更新内存,这个时候更新算完成了.同时,InnoDB引擎会在合适的时候,将这个操作记录更新到磁盘里面,而这个更新往往是在系统比较空闲的时候做.
InnoDB的red ...