一道题解:前端链式调用和事件循环

2022-03-16
阅读 2 分钟
2.7k
一道题目看到一个很有趣的题目:实现一个方法,支持链式调用。 {代码...} 解法话不多说,直接上代码: {代码...} 题解分析这个题目,首先要知道如何完成链式调用,就是设置一个类,类中声明的方法的结尾最后都会重新返回该类实例的引用,这样就能够链式调用了。所以我们创建一个LazyMan的类。接下来是如何保证顺序执行,...

Redis的复合数据结构及设计原理:hash/set/zset

2020-06-19
阅读 4 分钟
7.1k
我们之前已经讲过了Redis的数组列表(List),但其实Redis中最常用的数据结构是字典(hash),可以说,Redis整体的设计都是基于字典的,这不仅仅体现在我们存取数据都是通过键值对的方式,还在于其他的复合数据结构set/zset也都是基于hash来设计的。

剖析JS和Redis的数据结构设计:数组

2020-06-15
阅读 6 分钟
5.8k
总体来说,各种程序语言底层的设计思想是非常相通的,首先针对需要解决的问题和场景选择不同的数据结构和算法,根据运行环境设计不同的架构和特性,根据作者的喜好选择开发的风格,根据应用场景开发对外的接口,根据程序员的实践维护社区和bug反馈区。

一文读懂JavaScript的并发模型和事件循环机制

2019-11-26
阅读 6 分钟
7.5k
进程(Process)是操作系统CPU等资源分配的最小单位,是程序的执行实体,是线程的容器。线程(Thread)是操作系统能够进行运算调度的最小单位,一条线程指的是进程中一个单一顺序的控制流。

MySQL主从同步中的server-id

2019-09-06
阅读 2 分钟
17.2k
当我们搭建MySQL集群时,自然需要完成数据库的主从同步来保证数据一致性。而主从同步的方式也分很多种,一主多从、链式主从、多主多从,根据你的需要来进行设置。但只要你需要主从同步,就一定要注意server-id的配置,否则会出现主从复制异常。

了解和使用MySQL服务启动脚本

2019-09-05
阅读 2 分钟
6.5k
MySQL在类Unix系统上安装时包含一个mysql.server启动脚本,它通过mysqld_safe命令来启动MySQL服务,但我们通常把这个启动脚本重命名为mysqld或者mysql。

MySQL的锁和事务隔离级别

2019-07-25
阅读 5 分钟
4.8k
如今的互联网,开发一个大型的多人APP,你一定离不开数据库。而如何保证所有人能够高并发的进行读写一直是一个高难度的架构问题,先刨去高并发,保证一致性读写这个问题最常用的手段是事务,而实现一个事务的关键点在于锁机制。

RESTful API风格

2019-07-19
阅读 3 分钟
7k
任何对外提供服务的应用都绕不开API的发布,你的API可能是这个样子: {代码...} 如果答案是YES,那么用句很潮的话,我们可以说你的API很不RESTful。 API风格 首先要说,不管你的API属于哪种风格,只要能够满足工作需要,就足够了。API格式并不存在绝对的标准,只存在不同的设计风格。 API设计包含两部分:请求和响应。请...

实时查看MySQL执行的语句

2019-07-18
阅读 2 分钟
5.5k
我们在追查MySQL问题和性能调优时,有时希望看到当前都有哪些命令正在被执行,让我们迅速找到热点命令。下面我们就来介绍下如何查看当前正在执行的MySQL语句。

MySQL的复合数据类型:ENUM和SET

2019-07-17
阅读 6 分钟
13.6k
MySQL的常用数据类型包括:Number/Date/String,而String类型中又包含了Char/Varchar/Binary/blob/text等长度不同的简单数据类型,有时我们需要对数据做更细致的管理,比如枚举和集合,就需要复合类型ENUM和SET了。

Git配置文件的常用参数解析

2019-07-17
阅读 2 分钟
8k
我们有时候在多平台开发代码或者批量修改了文件夹的权限时,使用git status命令你很有可能会看到一大片的文件变更记录。其实不用担心,这些只是权限变更的文件也会被显示出来而已。如果你的工程目录不用考虑文件的权限,那么我们可以关闭这个特性:

MySQL中InnoDB和MyISAM的存储引擎区别

2019-07-09
阅读 3 分钟
5.7k
MySQL数据库区别于其他数据库的很重要的一个特点就是其插件式的表存储引擎,其基于表,而不是数据库。由于每个存储引擎都有其特点,因此我们可以针对每一张表来挑选最合适的存储引擎。

实现简单的监控脚本(Bash的执行和异常捕获)

2019-06-11
阅读 4 分钟
11.1k
当我们需要监控服务运行状态时,一般的策略是写定时脚本,定时执行探测服务状态,如果出现预期外情况,就报警。那么第一步我们就需要学会写一个监控脚本,这里我们会讲到bash的执行环境和异常捕获,以及一些简单的全局参数。

InnoDB引擎B+树索引使用和新特性

2019-05-13
阅读 19 分钟
4.2k
我们已经讲过了MySQL InnoDB索引原理和算法,这里来说下如何管理和使用B+树索引以及一些新的特性。 B+ 树索引的管理 我们在InnoDB引擎中常用的索引基本都是B+ 树索引。 创建和删除索引 它的创建和删除有两种方法: {代码...} 修改索引 MySQL没有提供修改索引的命令,我们一般先删掉索引,再重建同名索引达到修改的目标。...

MySQL InnoDB索引原理和算法

2019-05-09
阅读 10 分钟
14.1k
在数据库中,如果索引太多,应用程序的性能可能会受到影响;如果索引太少,又会对查询性能产生影响。所以,我们要追求两者的一个平衡点,足够多的索引带来查询性能提高,又不因为索引过多导致修改数据等操作时负载过高。

mysql清空表数据的两种方式和区别

2019-05-06
阅读 1 分钟
19.6k
在MySQL中删除数据有两种方式: truncate(截短)属于粗暴型的清空 delete属于精细化的删除 删除操作 如果你需要清空表里的所有数据,下面两种均可: {代码...} 而如果你只是删除一部分数据,就只能使用delete: {代码...} 区别 在精细化的删除部分数据时,只能使用delete。而清空所有表数据时,两者均可,此时这两种方...

linux curl请求时参数被截断

2019-04-28
阅读 1 分钟
10.2k
当我在curl一个url时,发现在后端PHP环境使用xdebug时,只能捕获第一个参数: {代码...} 这导致了我的认证失败,无法获取正确的数据。 其实这里的原因是在shell 命令中&符号有特殊的含义,而并不只是url参数的连接符。因此,我们有两种解决方法: {代码...} 重新测试,解决问题。 参考资料 Linux curl get请求参数多...

运行shell脚本时进程数量变多

2019-04-25
阅读 2 分钟
6.2k
这个原因是因为我们在执行shell脚本时,会通过子进程的方式来执行,而子进程的执行路径字段为:../oss_memcache_status/run.sh,会被grep过滤器留下,因此统计数量比预期要多1个。解决方案为grep -v bash。

MySQL时间类型和模式

2019-04-23
阅读 5 分钟
13k
经过查询资料,发现原因是在MySQL中,timestamp类型的合法区间是1970-01-01 00:00:01 - 2038-01-19 03:14:07 UTC,而在存储是,会先将你插入的数据转换为UTC时间,然后存储起来,读取的时候,再转换为你的本地时间。由于我的时区为东八区,因此转换后就变为了1970-01-01 00:00:00 UTC,成为了非法时间。

PHP的apc扩展导致引入文件错误

2019-04-12
阅读 5 分钟
3.1k
最近遇到一个非常奇怪的bug,在主机PHP代码版本回退的过程中,导致备机服务不可用。经过各种复现和文档查询,发现是PHP的apc扩展在和rsync同时使用时,会导致无法正确的处理缓存文件,最终影响服务。解决方案官方也有提供,加上一行配置:

MySQL乱码的原因和设置UTF8数据格式

2019-03-26
阅读 6 分钟
16.4k
MySQL使用时,有一件很痛苦的事情肯定是结果乱码。将编码格式都设置为UTF8可以解决这个问题,我们今天来说下为什么要这么设置,以及怎么设置。

Unicode字符集和UTF8编码编码的前世今生

2019-03-22
阅读 4 分钟
3.7k
很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节“。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为”计算机“。

用service命令管理mysql启停

2019-03-21
阅读 6 分钟
12.4k
安装完成mysql之后,每次启动和停止都很麻烦,有时候记不住去网上搜一下,看见大家都用service来进行服务的管理,试了一下,果然好用。推荐大家也要这么用,如果你的服务器版本高于centos7,可以使用systemd命令(取代service命令)来管理。

rsync算法原理及使用

2019-03-05
阅读 7 分钟
7.2k
如果服务器之间需要保持某些文件的一致,我们可以使用scp来复制,如果需要长期保持一致,可以配合crontab脚本来使用。但是此时我们有更优的方式,就是rsync+crontab来实现定时增量传输保持文件一致。

使用logrotate完成日志自动切分并轮转

2019-02-28
阅读 4 分钟
10.6k
部署网络应用时,会对请求进行日志保存,用于数据统计分析以及故障排除,但对于高并发请求的服务器,日志文件会迅速增长,快速的消耗磁盘空间,同时,分析一个大文件来排查问题也会非常慢。因此,我们通常需要将日志按照天级别进行存储,并对过旧的日志进行压缩转存或删除,方便节省磁盘空间和进行脚本分析。

linux上ssh免密登录原理及实现

2019-02-27
阅读 6 分钟
7.5k
因为我的服务器集群需要回收日志到中央进行统一处理,所以需要建立ssh互信关系实现免密登录。关于ssh的使用大家可能都很熟悉了,我们今天主要来讲下ssh连接和免密登录的原理。

PHP与Mysql8不兼容问题汇总

2018-12-13
阅读 2 分钟
14.8k
根据网上资料显示,是由于Mysql8.0将默认的字符集改为了utfmb4,因此和客户端(不仅仅是PHP)的通信无法识别,我们需要更改my.cnf来指定字符集。

前端面试题总结

2017-09-15
阅读 4 分钟
3.3k
工作中总结的一些比较重要的前端技能,觉得在面试中比较合适提问,即能查看出面试者的技术功底,又能考察其知识体系的广度。适用于应届生和工作年限两年下的同学,掌握下面的知识基本满足工作需求了。更高年限的开发工程师则应该更注重架构能力而不是具体的技术细节。