读书笔记-动手学深度学习-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)或分量( ...
读书笔记-Effective Java(原书第3版)
第二章 创建和销毁对象
第1条: 用静态工厂方法代替构造器
优势
静态工厂方法与构造器不同的第一大优势在于,它们有名称.
静态工厂方法与构造器不同的第二大优势在于,不必在每次调用它们的时候都创建一个新对象.
静态工厂方法与构造器不同的第三大优势在于,它们可以返回原返回类型的任何子类型的对象.
静态工厂方法的第四大优势在于,所返回的对象的类可以随着每次调用而发生变化,这取决于静态工厂方法的参数值.
静态工厂方法的第五大优势在于,方法返回的对象所属的类,在编写包含该静态工厂方法的类时可以不存在.
缺点
静态工厂方法的主要缺点在于,类如果不含公有的或者受保护的构造器,就不能被子类化.
静态工厂方法的第二个缺点在于,程序员很难发现它们.
一些惯用的名称
from: 类型转换方法,它只有单个参数,返回该类型的一个相对应的实例
1Date d = Date.from(instant);
of: 聚合方法,带有多个参数,返回该类型的一个实例,把它们合并起来.
1Set<Rank> faceCards = EnumSet.of(JACK,QUEEN,KING);
...
读书笔记-MySQL技术内幕-SQL编程
参考文献
MySQL技术内幕-SQL编程 姜承尧
第四章 子查询
独立子查询
子查询可以按两种方式分类.若按照期望值的数量,可以将子查询分为标量子查询和多值子查询;若按查询对外部查询的依赖可分为独立子查询(self-contained subquery)和相关子查询(correlated subquery)
独立子查询是不依赖外部查询而运行的子查询.与相关子查询相比,独立子查询更便于SQL语句的调试.
标量子查询可以出现在查询中希望产生标量值的任何地方,而多值子查询可以出现在查询中希望产生多值集合的任何地方.只要标量子查询返回的是单个值或NULL值,就说明该子查询是有效的.如果标量子查询返回多个值,则,MySQL数据库将抛出错误.
EXISTS谓词
EXISTS是一个非常强大的谓词,它允许数据库高效地检查查询是否产生某些行.通常EXISTS的输入是一个子查询,并关联到外部查询,但这不是必须的.根据子查询是否返回行,该谓词返回TRUE或FALSE.
与其他谓词和逻辑表达式不同的是,无论输入子查询是否返回行,EXISTS都不会返回UNKNOWN.如果子查询的过滤器为某行返回 ...
读书笔记-深入理解Nginx-模块开发与架构解析(第二版)
参考文献
深入理解Nginx-模块开发与架构解析(第二版) 陶辉
第一部分 Nginx能帮我做什么
第一章 研究Nginx前的准备工作
Nginx的优点
高并发,高性能
高扩展性
高可靠性
热部署
最自由的BSD许可证
使用Nginx的必备软件
GCC编译器
1yum install -y gcc-c++
PCRE库
1yum install -y pcre pcre-devel
zlib库
1yum install -y zlib zlib-devel
OpenSSL开发库
1yum install -y openssl openssl-devel
磁盘目录
Nginx源代码存放目录
Nginx编译阶段产生的中间文件存放目录
该目录用于放置在configure命令执行后所生成的源文件及目录,以及make命令执行后生成的目标文件和最终连接成功的二进制文件.
默认情况下,configure命令会将目录命名为objs,并放在Nginx源代码目录下
部署目录
该目录存放实际Nginx服务运行期间所需要的二进制文件,配置文件等.
默认情况下,该目录为/us ...
读书笔记-Java并发编程设计原则与模式(第二版)
参考文献
<<Java并发编程 设计原则与模式(第二版)>> Doug Lea
第一章 面向对象的并发编程
Java编程语言提供的三种常用的并发构件
独占(Exclusion). 可以通过阻止多个并发行为间的有害干扰来维护对象状态的一致性.通常使用同步(synchronized)
状态依赖(State dependence).是否可以触发,阻止,延迟或是恢复某些行为是由一些对象是否处于这些行为可能成功或是成功的状态上决定的.通常,状态依赖关系使用监视器(monitor)方法实现,如Object.wait, Object.notify和Object.notifyAll.
创建线程(Create threads).使用线程(Thread)对象来创建和管理并发操作.
通过保证同步在同一个对象上的方法或者代码块操作的原子性(atomicity),加锁机制可以同时提供多种保护措施,包括对上层和底层冲突的保护.原子操作被作为一个整体来执行,这样它们就不会被插入的其他线程的操作打断.
第二章 独占
不变性
如果一个对象的状态不能改变,那么它永远不会遇到由于多个 ...
读书笔记-高性能MySQL(第四版)
注: 支持版本MySQL8.0
第一章 MySQL架构
MySQL的逻辑架构
最上层的客户端锁包含的服务并不是MySQL独有的,大多数基于网络的客户端/服务器工具或服务器都有类似的服务,包括连接处理,身份验证,确保安全性等.
第二层是比较有意思的部分.大多数MySQL的核心功能都在这一层,包括查询解析,分析,优化,以及所有的内置函数(例如,日期,时间,数学和加密函数),所有跨存储引擎的功能也在这一层实现:存储过程,触发器,视图等.
第三层是存储引擎层.存储引擎负责MySQL中数据的存储和提取.服务器通过存储引擎API进行通信.这些API屏蔽了不同存储引擎之间的差异,使得他们对上面的查询层基本上是透明的.存储引擎层还包含几个底层函数,用于执行诸如"开始一个事务"或者"根据主键提取一行记录"等操作.但存储引擎不会去解析SQL,不同存储引擎之间也不会相互通信,而只是简单地响应服务器的请求.
连接管理和安全性
默认情况下,每个客户端连接都会在服务器进程中拥有一个线程,该连接的查询只会在这个单独的线程中执行,该线程驻留在一个内核或者CPU上.
服务器 ...
读书笔记-Effective MySQL Replication Techniques in Depth - Ronald Bradford
第一章 五分钟成为一名DBA
确定数据库的大小
通过下面的SQL,可以得到当前的数据和索引的总大小(以MB为单位)
12345678SELECT ROUND(SUM(data_length + index_length)/1024/1024) AS total_mb,ROUND(SUM(data_length)/1024/1024) AS data_mb,ROUND(SUM(index_length)/1024/1024) AS index_mbFROM INFORMATION_SCHEMA.tables;+----------+---------+----------+| total_mb | data_mb | index_mb |+----------+---------+----------+| 130 | 87 | 44 |+----------+---------+----------+
选择锁策略
所选择的锁策略将决定在执行备份期间,应用程序是否可以对数据库执行写操作.默认情况下,mysqldump利用LOCK TABLES命令进行 ...
读书笔记-Effective MySQL Optimizing SQL - Ronald Bradford
第一章 DBA五分钟速成
在决定添加索引之前,通常应该至少做两项检查
首先验证表现有的结构
1SHOW CREATE TABLE table_name\G
然后确认表的大小
1SHOW TABLE STATUS LIKE 'table_name'\G
123456789101112131415161718192021mysql SHOW TABLE STATUS LIKE 'user'\G*************************** 1. row *************************** Name: user Engine: InnoDB Version: 10 Row_format: Dynamic Rows: 8 Avg_row_length: 2048 Data_length: 16384Max_data_length: 0 Index_length: 16384 Data_free: 0 Auto_incr ...
看完的书籍
书籍
Java
Java 8实战
Linux
网络是怎样连接的 [日] 户根勤
Linux Shell脚本攻略
鸟哥的Linux私房菜 基础学习篇 第四版 ⭐⭐⭐
Linux Basics for Hackers
Network Basics for Hackers
深入理解Linux网络: 修炼底层内功,掌握高性能原理
本书采用Linux内核3.10版本
MySQL
MySQL技术内幕 InnoDB存储引擎 第2版 ⭐⭐⭐⭐⭐
高性能MySQL(第四版) ⭐⭐⭐⭐⭐
千金良方——MySQL性能优化金字塔法则 ⭐⭐⭐⭐⭐
MySQL排错指南 ⭐⭐⭐
MySQL 8 Cookbook ⭐⭐
Effective MySQL之SQL语句最优化 ⭐⭐
Effective MySQL之备份与恢复
MySQL高效编程
MySQL 8 Cookbook
第7章 备份 / 第8章 恢复数据 / 第9章 复制 / 第10章 表维护 可作为工具书使用
MySQL大智小技 2019
Spring
SpringBoot 2实战之旅
Spring源码深度解析 ⭐⭐⭐
容器化 ...
读书笔记-MySQL是怎样运行的
参考文献
<<MySQL是怎样运行的>> 小孩子4919
第六章 快速查询的秘籍-B+树索引
总结
InnoDB存储引擎的索引是一棵B+树,完整的用户记录都存储在B+树第0层的叶子节点;其他层次的节点都属于内节点,内节点中存储的是目录项记录.
InnoDB的索引分为两种:
聚簇索引: 以主键值的大小作为页和记录的排序规则,在叶子节点处存储的记录包含了表中所有的列
二级索引: 以索引列的大小作为页和记录的排序规则,在叶子节点处存储的记录内容是索引列+主键
InnoDB存储引擎的B+树根节点自创建之日起就不在移动(即根节点所在的页号不会改变).
树的根始终在一个固定的位置,方便快速定位
在二级索引的B+树内节点中,目录项记录有索引列的值,主键值和页号组成.
一个数据页至少可以容纳2条记录.
MyISAM存储引擎的数据和索引分开存储,这种存储引擎的索引全部都是二级索引,在叶子节点处存储的是列+行号(对于定长记录格式的记录来说)
每个索引都对应一棵B+树.B+树分为好多层,最下边一层是叶子节点,其余的是内节点.所有用户记录都存储在B+树的叶子节点,所 ...