sql 语句添加 force index() 强制使用指定索引

使用 sql 语句查询数据的时候,如果表里有好几个索引,mysql 优化器会自己判断使用哪个索引进行搜索。但是,where 条件比较复杂的时候,优化器使用的索引就不一定是最优索引了。

例如,最近有个需求,查询 4 月份每个商家的微信、支付宝营业额,sql 语句如下...

 

分类至 MySQL
2条评论

Lumen 框架前后台认证(多用户认证)

Lumen 框架默认只有一种角色认证(单表),但是通常我们会把后台管理员与前台用户设计成两个不同的表,这个时候就得改造一下代码了。

假设后台管理员和前台用户对应 Model 分别为 App\Models\AdminApp\Models\User,作如下修改...

分类至 PHP
0条评论

构建自己的 php 镜像并上传至 Docker Hub

之前曾发布了一篇文章 用 docker-compose 构建 lnmp 开发环境,文中的 php 容器是通过自己写的 Dockerfile 构建的,其中 redis、swoole 扩展使用 pecl 指令在线安装,但是由于网络不佳,有时候代码包会下载失败,又得重新构建,很浪费时间。

Docker Hub 是 Docker 官方提供的一项容器镜像托管服务,它允许我们上传自己的镜像文件,方便与其他人共享。我们注册一个 Docker Hub 账号,然后上传自己生成的 php 镜像文件,这样下次使用到 php 容器的时候,直接从自己的 Docker Hub 仓库拉取,就不需要每次重新编译那些繁杂的 php 扩展了。

在命令行下,输入 docker login 指令登录自己的 Docker Hub 账号...

分类至 Docker
0条评论

docker-compose ports 和 expose 的区别

docker-compose中有两种方式可以暴露容器的端口:portsexpose

1、ports

ports暴露容器端口到主机的任意端口或指定端口,用法:

ports:
  - "80:80"     # 绑定容器的80端口到主机的80端口
  - "9000:80"   # 绑定容器的80端口到主机的9000端口
  - "443"       # 绑定容器的443端口到主机的任意端口,容器启动时随机分配绑定的主机端口号

不管是否指定主机端口,使用ports都会将端口暴露给主机和其他容器

2、expose

expose暴露容器给link到当前容器的容器,或者暴露给同一个networks的容器,用法:

expose:
  - "3000"
  - "8000"

以上指令将当前容器的端口30008000暴露给其他容器

ports的区别是,expose不会将端口暴露给主机,主机无法访问expose的端口。

分类至 Docker
0条评论

自己写 highlight.js 行号插件

前端代码高亮插件 highlight.js,默认是不带行号显示功能的。如果要显示行号,我们得自己实现,或是使用第三方插件。下面就来介绍几种实现方式,并分析优缺点。

1、第一种,使用 <li></li> 标签实现行号

2、第二种,使用 highlightjs-line-numbers.js 插件显示行号

3、第三种,我自己的实现方式

分类至 JS/CSS
2条评论

中文文案排版指北(转自 GitHub)

目录

  • 空格
    • 中英文之间需要增加空格
    • 中文与数字之间需要增加空格
    • 数字与单位之间无需增加空格
    • 全角标点与其他字符之间不加空格
    • -ms-text-autospace to the rescue?
  • 标点符号
    • 不重复使用标点符号
  • 全角和半角
    • 使用全角中文标点
    • 数字使用半角字符
    • 遇到完整的英文整句、特殊名词,其內容使用半角标点
  • 名词
    • 专有名词使用正确的大小写
    • 不要使用不地道的缩写
  • 争议
    • 链接之间增加空格
    • 简体中文使用直角引号
  • 工具
  • 谁在这样做?
  • 参考文献
分类至 杂项
0条评论

SQL 中 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN 区别

sql中的连接查询有inner join(内连接)、left join(左连接)、right join(右连接)、full join(全连接)四种方式,它们之间其实并没有太大区别,仅仅是查询出来的结果有所不同。

1.inner join,在两张表进行连接查询时,只保留两张表中完全匹配的结果集。

2.left join,在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录。

3.right join,在两张表进行连接查询时,会返回右表所有的行,即使在左表中没有匹配的记录。

4.full join,在两张表进行连接查询时,返回左表和右表中所有没有匹配的行。

分类至 MySQL
0条评论