css的相对单位和绝对单位
在查资料的时候,发现网上有的人说 px是相对单位,有的人说px是绝对单位。。px是相对单位还是绝对单位?
《css权威指南》第三章-单位和值的小节“长度单位”中简易说明了px是相对长度单位。
《The Lengths of CSS》中指出px是绝对长度单位。
我看了一下,我个人偏向于px是个绝对单位,因为px的大小一般情况下是固定的,只是对于高分辨率的设备,大小会发生变动。。
绝对单位此类单位的长度值与其代表的物理长度相等。
px
在低分辨率设备上,1px = 1像素
在高分辨率设备上,1px = 1/96in,1px不一定等于1像素(比如4.7英寸的iphone上 1px=2像素)
对于图片显示,1px = 1图片像素,比如:一个600x400分辨率的照片的的CSS宽高即为600px和400px(在4.7英寸iphone上要用1200x800个像素点显示)
其它11in = 2.54cm = 25.4mm = 72pt = 6pc = 96px
相对单位相对单位的长度值是根据其他参照物的长度计算得出的。
%
对font-size设置百分比值,参照物为浏览器默认字体大小16px ...
数据库必知必会
常用关系型数据库
Oracle:功能强大,主要缺点就是贵
MySQL:互联网行业中最流行的数据库,这不仅仅是因为MySQL的免费。可以说关系数据库场景中你需要的功能,MySQL都能很好的满足,后面详解部分会详细介绍MySQL的一些知识点
MariaDB:是MySQL的分支,由开源社区维护,MariaDB虽然被看作MySQL的替代品,但它在扩展功能、存储引擎上都有非常好的改进
PostgreSQL:也叫PGSQL,PGSQL类似于Oracle的多进程框架,可以支持高并发的应用场景,PG几乎支持所有的SQL标准,支持类型相当丰富。PG更加适合严格的企业应用场景,而MySQL更适合业务逻辑相对简单、数据可靠性要求较低的互联网场景。
常用非关系型数据库
Redis:提供了持久化能力,支持多种数据类型。Redis适用于数据变化快且数据大小可预测的场景。
MongoDB:一个基于分布式文件存储的数据库,将数据存储为一个文档,数据结构由键值对组成。MongoDB比较适合表结构不明确,且数据结构可能不断变化的场景,不适合有事务和复杂查询的场景。
HBase:建立在HDFS,也就是Hadoop文件系统 ...
nodejs必知必会
前言 怎么说呢,很多东西其实之前都整理过,但那是一个学习的过程,很多东西不够准确、严谨。突然就想把看过学过的零散知识重新整理一遍。
JavaScript基础问题类型类型判断typeof操作符一般数据类型12345678 typeof undefined; // undefined typeof []; // object typeof '123'; // stringtypeof 123; // "number"typeof false; // "boolean"typeof function(){}; "function"typeof null; // "object"
特殊的数据类型123typeof null; // object 因为null是一个空对象typeof Symbol; // "function"typeof Symbol("a"); // "symbol"
instanc ...
又老了一岁
2020年01月08日星期3,如往常一样上下班,下班后独自点了一份山东炒面加一份火腿鸡蛋煎饼,小撑。平时都是二选一,想着过生日,奢侈一下嘛。。
回家楼底下买了一个蛋糕切片,没有生日快乐的样式,所以选了个小猪佩奇。
本来是想发个朋友圈的,想了下没啥意思,自己的生日成为只有自己知道的秘密也挺有意思的。
佩奇祝我来年顺利。心想事成。
mysql的processlist和explain
show processlist一般用到 show processlist 或 show full processlist 都是为了查看当前 mysql 是否有压力,都在跑什么语句,当前语句耗时多久了,有没有什么慢 SQL 正在执行之类的。
每一列代表的意思
id:链接mysql 服务器线程的唯一标识,可以通过kill来终止此线程的链接。
user:当前线程链接数据库的用户
host:显示这个语句是从哪个ip 的哪个端口上发出的。可用来追踪出问题语句的用户
db:线程链接的数据库,如果没有则为null
command:显示当前连接的执行的命令,一般就是休眠或空闲(sleep),查询(query),连接(connect)
time:线程处在当前状态的时间,单位是秒
state:显示使用当前连接的sql语句的状态,很重要的列,后续会有所有的状态的描述,请注意,state只是语句执行中的某一个状态,一个 sql语句,已查询为例,可能需要经过copying to tmp table,Sorting result,Sending data等状态才可以完成
info:线程执行的sql语句,如果没有 ...
linux的0和1
很久没写博客了,因为之前写的东西够消化很久了。而且现在也不想搬运文档之类的东西,写就写点自己的东西吧。。。
虽然前面的博客搬运工居多,但也是一个知识的整理的过程吧。技术越来越好之后,尽量写一些自己体会过的东西。
而且现在又到笔记用的多,博客没什么灵感。
linux的真与假虽然linux会一些简单的命令,但是shell脚本确实不怎么会写,所以无聊想了解一些shell的语法,然后发现在linux中,0表示真,1表示假。
真的是这样吗?amazing!
看这样一个语句12345678910if [ 1 -eq 1 ]; echo $? // 0then echo "true"else echo "false" fi// trueif [ 1 -eq 11 ]; echo $? // 1then echo "true"else echo "false" fi// false
在看这样一个语句1234567891011if test 1 -eq 1; echo $? // 0then echo "true ...
mysql之事务
本文于 2021年07月14日19:39:57 重新整理。。。之前写的自己都有点看不下去。
什么是事务简单来说,事务就是要保证一组数据的操作,要么全部成功,要么全部失败。
在 mysql 中,事务是由引擎实现的,比如 InnoDB 支持事务,而 MyISAM 就不支持事务。
事务四大特性常说的 ACID 就是事务的四大特性:
原子性(Atomicity):事务是一个原子操作,要么全部成功,要么全部失败。
一致性 (Consistency):事务要保证数据库整体数据的完整性和业务的数据的一致性,事务成功提交整体数据修改,事务错误则回滚到数据回到原来的状态。
隔离性(Isolation):并行执行的事务之间互不干扰,隔离开来。(这里涉及到隔离级别)
持久性(Atomicity):事务成功提交后,只要修改的数据都会进行持久化,不会因为异常、宕机而造成数据错误或丢失。
事务的隔离级别事务为什么要隔离级别呢,因为数据你隔离的越严密,那么效率就越低,所以这里需要根据业务选择,使二者有一个平衡点。
隔离级别:
读未提交:一个事务还未提交时,它的变更就能被其它事务看到。
读已提交:一个事 ...
js之你不知道的引用传递
之前有一篇文章深拷贝和浅拷贝说明了js中传值和传引用,或者叫值传递和引用传递。
可能是我闲的蛋疼吧。
假设有这样一段代码
12345678910111213var a = 1;var obj1 = {item:true}var obj2 = {item:false}function changeValue(a,obj1,obj2){ a = 123; obj1 = {item:false} obj2.item = true;}changeValue(a,obj1,obj2)console.log(a)console.log(obj1)console.log(obj2)
执行结果是
123123{item:true}{item:true}
关于传值、传地址、传引用。我是在一片c++的博文找到的,不知道准不准确。
按文中说法,如果是传引用的话,没有实参的拷贝,对形参的修改必然反映到实参上,而这里没有。而传地址,只有对形参指向的对象的修改,才会影响实参,对形参本身的 ...
关于mysql的索引
本篇文章于2021年7月18日15:25:27。。重构之
主要最近在看一个 mysql 的课,然后看到之前写过索引相关的文章,看不下去了,重构之。(捂脸)
什么是索引呢?简单来说,索引就像是书本的目录一样,目的是提高查询效率。
索引的常见实现哈希表:
哈希表适用于等值查询的场景,是最快的 O(1)
区间查询就需要全部扫描一遍了,速度很慢 O(n)
有序数组:
有序数组无论是等值查询和区间查询性能都不错
但是新增数据的时候,有序数组要保证有序,需要把插入位置之后的数据全部后移,成本太高
所以,有序数组只适合用于静态存储引擎
平衡二叉树:
二叉搜索树是一个很常见的数据结构,它的查询操作平均复杂度为 O(lgn),相应的平衡二叉树的平衡操作时间复杂度也是O(lgn)
虽然二叉搜索树的效率很高,但是层数太多了,每多一层可能都意味着一次磁盘IO操作,这样看来是很慢的
N 叉树,我们增加树的 “叉”,就可以减少树的深度,就可以尽量检查访问磁盘的次数
InnoDB索引模型本文主要说的 mysql 的索引,InnoDB是 mysql 的主要引擎(虽然MyISAM也使用B+Tre ...
mysql之左右联结
之前对联结表的看理解好像不是很明确,于是又看了一些资料。
再次之前假装先建立两张表:
tableA:三个字段(id,title,price),五条记录
tableB:三个字断(id, title,price),三条记录
两张表之间有两条记录的price相同
内联结INNER JOIN
select * from tableA INNER JOIN tableB ON a.title = b.title where tableA.price > 100
上面语句的意思是,获取tableA和tableB中 title 字段相等的记录。
执行过程大概如下:
因为上面假设的时候,他们是有两条记录满足price字段相等,所以这里会返回两条结果。
然后再在这两条结果里面筛选price>100的结果
左联结LEFT JOIN
select * from tableA LEFT JOIN tableB ON a.title = b.title where tableA.price > 100
执行过程如下:
因为tableA是有五条记录的,所以联结的时候先是会返回五条记录, ...