最近这段时间由于领导没空,让我临时当面试官?,虽然我也不是什么大牛,但是还算读得起我这4、5年的工作经验吧,记录一下我当面试官的一些经历,可能由于我出的面试题是真正我自己出的,而不是网上copy的那些,导致很多面试者表现不是特别好。出于某些原因,所有人名字均用字母表示。
MySQL 死锁产生的原因和“超卖”现象
死锁其实很好理解,就是两个会话分别在等待对方占有锁的释放。这个概念不仅仅是MySQL数据库中的,计算机中一些资源的占有和释放,都可能会产生死锁。
在MySQL数据库中,举个例子,由于代码设计不当,比如两个事务会话中, 都使用读锁去占有一条数据,但是两个会话却都想更新这条数据,如果是并发请求,则会产生死锁,看以下SQL执行顺序:
begin;
select * from goods_sku where id = 1 in share mode;
update goods_sku set stock = stock - 1 where id = 1 and stock > 0;
commit;
MySQL中的锁
共享锁和排它锁
这两种锁都是悲观锁(pessimistic lock)
定义表如下:
CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`content` varchar(255) DEFAULT NULL,
`title` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `ix_content` (`content`(191))
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4
bash重复执行命令n次
for n in {1..10}; do echo 'hello'; sleep 1; done
其中sleep 1;
睡眠1秒钟非必须。
查看Linux服务器的负载
服务器性能指标一般是指CPU、内存、磁盘IO、网络连接等相关信息,下面介绍几个命令用来查看CPU和内存的信息。
w命令
➔ w
11:37:56 up 639 days, 12:46, 1 user, load average: 0.33, 0.12, 0.07
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/3 58.32.4.73 11:25 4.00s 0.18s 0.00s w
第一行:当前时间 启动时长(没有关机和重启),当前用户数量,过去1分钟、5分钟、15分钟前的负载,一般来说,负载的值小于cpu数量*2时,服务器可以流畅运行,当大于这个值时,服务器就有一定压力了。
webpack 忽略vim的临时文件
在~/.vimrc
中加入这一行配置:
" 将swap文件存放在统一的位置,避免webpack hot reload 监听到文件的变化
set dir=$HOME/.vim/tmp/swap
if !isdirectory(&dir) | call mkdir(&dir, 'p', 0700) | endif
这样用vim打开文件后生成的文件就不会被webpack监听到了。
PHP8.0 alpha3的jit(just in time)以及其他
编译安装PHP8.0-alpha3
后续
目前发现几个问题:
--with-config-file-scan-dir
选项无效,因此无法扫描到/usr/local/etc/php/8.0-alpha/conf.d
中的ini文件(在centos7上尝试没有发现这个问题)交互式运行无效,(通过指定/usr/local/opt/php@8.0-alpha/bin/php -a
执行后,输出Interactive mode enabled
后卡住了,无法输入代码。--with-readline=/usr/local/opt/readline
解决)
正文
我写了一系列文章记录我编译安装PHP7.3、PHP7.4的过程,这一次我尝试编译安装PHP8.0,当前PHP8.0处于测试中,请勿直接在您的线上环境使用此版本。