Mr.bai

我干了什么 究竟拿了时间换了什么

MySQL索引背后的数据结构及算法原理

"Mysql Method"

“Hello everyone! ” 本文以 MySQL 数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是, MySQL 支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此 MySQL 数据库支持多种索引类型,如 BTree 索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于 BTree 索引,因为这是平常使用 MySQL 时主要打交道的索引,至...

AB压力测试工具

"test Method"

“Hello everyone! ” ab(ApacheBench)是一款小巧且使用简单的压测工具,可以提供站点基本的性能指标。ab 一般作为 Apache 服务器的子应用程序出现,而这里将介绍 Linux 下独立安装 ab 的方法以及它的简单使用。 独立安装 CentOS 下独立安装 ab 的命令: $ yum install httpd-tools 安装后,查看 ...

PHP生成随机红包算法

"PHP Method"

“Hello everyone! ” 原文:http://www.lcode.cc/2016/12/24/rand_ward.html 前一阵公司业务有一个生成红包的需求,分为固定红包和随机红包两种,固定红包没什么好说的了,随机红包要求指定最小值,和最大值,必须至少有一个最大值,可以没有最小值,但任何红包不能小于最小值。 以前从来没做过这方面,有点懵B,于是去百度了...

常用Git命令清单

"Git Method"

“Hello everyone! ” 我每天使用 Git ,但是很多命令记不住。一般来说,日常使用只要记住下图 6 个命令,就可以了。但是熟练使用,恐怕要记住 60~100 个命令。 下面是我整理的常用 Git 命令清单。几个专用名词的译名如下。 - Workspace:工作区 - Index / Stage:暂存区 - Repository:仓库区(或本地仓库) - Re...

PHP文件锁机制

"PHP Method"

“Hello everyone! ” 项目中有一个需求是统计视频的观看人数,这个是一定会涉及到并发问题,从而导致数据不准确,目前我了解到的 PHP 处理并发的方法有文件锁、MySQL 的乐观锁和悲观锁,以及 redis 队列。因为我每天的统计数据是存在 redis 中,凌晨的时候集中汇总,并发时也就涉及不到 MySQL 了,因此,统计时的并发问题,我选择用文件锁来解决。 锁机制简...

PHP定时脚本的那些事

"PHP Method"

“Hello everyone! ” 在项目中,经常会遇到定时任务的情景,当然这不仅仅只是将 PHP 文件结合 crontab 这么简单。其中有一些我遇到的非 code 层面的问题,在这里列举出来。 示例脚本使用 YII 框架,内容如下: $ vim ./crontab.sh #!/usr/bin/env bash # 状态更新 CURRENT_DIR=`dirname $...

从foreach方法引出的PHP内存分析

" PHP Method"

“Hello everyone! ” PHP 代码中 Foreach 结构随处可见,我们在使用时,是否了解其行为呢?我们这篇文章通过一些例子来分析下 Foreach 结构的内存行为。 问题 我们在写代码时经常会有这样的场景:遍历数组,对每个元素进行操作。一般这样的代码有两种写法: $arr = ['a','b','c','d']; //1. 非引用方式: foreach($a...

MySQL中处理重复数据的方法

"Mysql Method"

“Hello everyone! ” 在需要保证数据唯一性的场景中,个人觉得任何使用程序逻辑的重复校验都是不可靠的,这时只能在数据存储层做唯一性校验。MySQL 中以唯一键保证数据的唯一性,那么若新插入重复数据时,我们可以让 MySQL 怎么来处理呢? MySQL 支持 3 种数据重复时的原子操作,下面结合示例进行说明。示例的表结构为: CREATE TABLE `allowe...

Linux日常使用技巧集

"Hello SpringBoot, Hello Swagger"

“Hello everyone! ” 常用命令 统计 IP 连接数 $ netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10 操作系统 查看系统版本 在安装环境或者软件时,我们常常需要知道所在操作系统的版本信息,这里列举几种查看内核和发行版本信息的...

查看Linux系统版本

"Linux Version"

“Hello everyone! ” 内核版本 1) uname命令 uname 参数如下: -a, --all # 以如下次序输出所有信息 -s, --kernel-name # 输出内核名称 -n, --nodename # 输出网络节点上的主机名 -r, --kernel-release # 输出内核发行号 -v, -...