后端开发之 MySQL 性能调优

MySQL性能调休,这是每一个 PHPer 在面试中永远无法绕过的一道面试题。那么,PHPHa 就从个人角度的理解,来总结下相关的优化方案。MySQL性能调优,推荐从下向上的性能调优,主要包括运行环境、配置参数、SQL性能、系统架构设计的调优。 ...

August 3, 2019 · 7 分钟 · 3183 字

简述 MySQL 分区分表分库

随着项目的推广,数据量快速的增长,即使加了缓存,数据库还是会出现查询缓慢的现象。一般来说,我们会首先对慢 SQL 语句和索引进行优化,再考虑集群方案和读写分离,最后才是分区分表分库的相关方案。 ...

August 3, 2019 · 2 分钟 · 789 字

IOC 控制反转与 DI 依赖注入

依赖注入和控制反转是对同一件事情的不同描述,从某个方面讲,就是它们描述的角度不同。 ...

August 2, 2019 · 1 分钟 · 358 字

S.O.L.I.D 面向对象设计和编程

SOLID 是 面向对象编程 和 面试对象设计 的五个基本原则,应用这五个原则能创建一个易于维护和扩展的软件系统。SOLID 可以指导代码重构和在迭代的过程中进行代码清扫,以使得软件源代码清晰可读和具有良好的扩展性。在测试驱动开发中是典型应用场景,并且也是敏捷开发和自适应软件开发基本原则的重要组成部分。 ...

August 2, 2019 · 1 分钟 · 308 字

Golang 分布式 ID 生成器

在分布式系统中,我们经常需要生成一个唯一的 ID,或用于订单,或用于其他场景。总之基本的要求就是要唯一且高效。对这个 ID 还希望其中能带有一些时间信息,这样即使我们后端的系统对记录进行了分库分表,也能够以时间顺序对这些记录进行排序。Twitter 的 snowflake 算法是这种场景下的一个典型解法。 ...

November 15, 2018 · 3 分钟 · 1008 字

Golang 时间相关格式化

相对于 PHP 而言,Golang 里面的获取时间应该说是很不方便有木有。因此,特意封装了以下项目中常用到的获取时间相关的函数。 ...

November 6, 2018 · 1 分钟 · 348 字

Golang 操作 MongoDB 数据库

本文基于 Golang 的爬虫框架 Go-Colly 进行数据抓取,然后存储到 MongoDB 数据库。根据搜索结果,相对来说最成熟的 MongoDB 驱动,应该是 mgo,但是目前 mgo 的作者已经停止维护。另外 MongoDB 官方也已经有对应 Golang 的驱动 mongo-go-driver,但是 Google 上相关的资料并不多。 ...

October 25, 2018 · 2 分钟 · 751 字

基于 Golang 的网络爬虫 Gocolly

因项目需要,要对网络上某些信息进行抓取,以便加工后做数据分析。提到爬虫框架,知名度最高的当属基于Python的爬虫框架 Scrapy。但是由于本人对 Python 并不熟悉,并且暂时也不准备去深入学习,因此不在考虑范围。同时也是基于学习的目的,因此选择了 Golang 方向。基于 Golang 的成熟爬虫框架其实并不多,因此在选择上不用太纠结,就用 Go-Colly 了。 ...

October 23, 2018 · 2 分钟 · 704 字

PHP 与协程

“协程”(Coroutine)概念最早由 Melvin Conway 于1958年提出。协程可以理解为纯用户态的线程,其通过协作而不是抢占来进行切换。相对于进程或者线程,协程所有的操作都可以在用户态完成,创建和切换的消耗更低。总的来说,协程为协同任务提供了一种运行时抽象,这种抽象非常适合于协同多任务调度和数据流处理。在现代操作系统和编程语言中,因为用户态线程切换代价比内核态线程小,协程成为了一种轻量级的多任务模型。 ...

January 21, 2018 · 4 分钟 · 1881 字

Web架构的那些事儿

转眼已经是2018年了,博客停更了一年多。无论如何,是时候回归了。最近关注及研究的重点是Web架构与性能,会结合自己的学习进行记录及分享。涉及的关键词:网络协议、异步编程、微服务、分布式等。 ...

January 20, 2018 · 2 分钟 · 799 字