- 博客(94)
- 收藏
- 关注
原创 linux性能优化工具(持续添加中)
pidstat工具:https://www.jianshu.com/p/3991c0dba094mpstat工具:https://blog.csdn.net/quiet_girl/article/details/50697412vmstat工具:Virtual Memory Statistics 虚拟内存统计 命令用来显示Linux系统虚拟内存状态,也可以报告关于进程、内存、I/O等系统整体...
2019-09-29 11:21:44
281
原创 Redis-快表
快表的表头结构typedef struct quicklist { //指向头部(最左边)quicklist节点的指针 quicklistNode *head; //指向尾部(最右边)quicklist节点的指针 quicklistNode *tail; //ziplist中的entry节点计数器 unsigned long count; ...
2019-07-24 00:14:08
1002
1
原创 lnmp 的'时间'
PHP读取数据库的最大执行时间: mysqlnd.net_read_timeout 如果超时 一般会报 Mysql server has gone awayPHP最大执行时间: max_execution_time (php.ini) PHP最大执行时间 为0的时候没限制超时时间php-fpm:最大执行时间 request_terminate_timeoutmax_exec...
2019-07-23 23:59:47
226
原创 Redis-字典
字典用途字典在 Redis 中的应用相当广泛, 比如 Redis 的数据库就是使用字典来作为底层实现的, 对数据库的增、删、查、改操作也是构建在对字典的操作之上的,除了用来表示数据库之外, 字典还是哈希键的底层实现之一: 当一个哈希键包含的键值对比较多, 又或者键值对中的元素都是比较长的字符串时, Redis 就会使用字典作为哈希键的底层实现。字典的结构Redis 字典所使用的哈希表由 di...
2019-07-23 23:44:04
151
原创 Redis-压缩列表
什么是快表Redis 使用跳跃表作为有序集合键的底层实现之一: 如果一个有序集合包含的元素数量比较多, 又或者有序集合中元素的成员(member)是比较长的字符串时, Redis 就会使用跳跃表来作为有序集合键的底层实现。和链表、字典等数据结构被广泛地应用在 Redis 内部不同, Redis 只在两个地方用到了跳跃表, 一个是实现有序集合键, 另一个是在集群节点中用作内部数据结构, 除此之外...
2019-07-23 23:41:08
580
原创 Redis-链表
定义每个链表节点使用一个 adlist.h/listNode 结构来表示:typedef struct listNode { // 前置节点 struct listNode *prev; // 后置节点 struct listNode *next; // 节点的值 void *value;} listNode;adlist.h/li...
2019-07-23 23:39:08
89
原创 Linux优化之平均负载
平均负载当我们的Linux服务器突然变慢了,我们通常做的一件事就是在terminal中输入uptime或者top来观察输入的结果。那uptime代表的什么含义? [root@wjf ~]# uptime 15:00:47 up 84 days, 4 min, 2 users, load average: 0.00, 0.01, 0.05 15:00:47 ...
2019-06-19 18:02:45
218
原创 redis-哨兵
1.什么是哨兵顾名思义 哨兵就是监控集群服务器是否正常的,有一个或多个sentinel实例组成的sentinel系统可以监视任意多个服务器,如果主服务器下线,自动将线下从服务器升级为最新的主服务器,新的服务器代替已下线的主服务器执行命令,如果从服务器复活,将成为新主服务器的从服务器2.sentinel是什么?sentinel从本质上来说也是Redis服务器,而且是运行在特殊模式下的Re...
2019-06-03 17:40:31
137
原创 Redis的同步机制是怎么样的?
1.同步机制redis可以通过命令slaveof 120.0.0.2(主master)成为一个Redis的从服务旧版本分为(2.8之前):1 同步(sync)过程如下2 命令传播 (command propagate)当主DB有修改时,主服务器会以命令传播的形式到从服务器,达到主从同步缺点:想象一下这种场景,如果从服务是未通不过的,走上面的整个流程是没有什么问...
2019-05-22 23:58:29
1744
原创 Redis-跳跃表
####什么是跳跃表跳跃表使用场景Redis 使用跳跃表作为有序集合键的底层实现之一: 如果一个有序集合包含的元素数量比较多, 又或者有序集合中元素的成员(member)是比较长的字符串时, Redis 就会使用跳跃表来作为有序集合键的底层实现。和链表、字典等数据结构被广泛地应用在 Redis 内部不同, Redis 只在两个地方用到了跳跃表, 一个是实现有序集合键, 另一个是在集群节点中...
2018-12-02 01:30:25
773
原创 Redis-整数集合intset
整数集合使用场景整数集合(intset)是集合键的底层实现之一: 当一个集合只包含整数值元素, 并且这个集合的元素数量不多时, Redis 就会使用整数集合作为集合键的底层实现。整数集合(intset)是 Redis 用于保存整数值的集合抽象数据结构, 它可以保存类型为 int16_t 、 int32_t 或者 int64_t 的整数值, 并且保证集合中不会出现重复元素。整数集合的结构//...
2018-11-29 22:21:55
339
原创 Redis—简单动态字符串
1.SDS简介redis构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型, 并将 SDS 用作 Redis 的默认字符串表示。除了用来保存数据库中的字符串值之外, SDS 还被用作缓冲区(buffer): AOF 模块中的 AOF 缓冲区, 以及客户端状态中的输入缓冲区, 都是由 SDS 实现的, 在之后介绍 AOF 持久化和客户端状态的时候, 我们...
2018-10-12 01:36:46
163
原创 tengine常见错误码总结以及原因分析
###403 ForbiddenYou don’t have permission to access the URL on this server. Sorry for the inconvenience.Please report this message and include the following information to us.解决:看下权限文件权限500我来了该网页...
2018-09-21 19:59:46
20951
1
原创 mysql事务隔离机制&锁
Mysql事务隔离级别事务MySQL事务事务定义:事务就是一组原子性的sql查询,或者说一个独立的工作单元。即事务内的sql语句,要么全部执行成功,要么全部执行失败;事务的ACID概念:原子性automicity,一致性consistency,隔离性isolation,持久性durability;ACID原则原子性:一个事务必须被视为一个不可分割的最小工作...
2018-08-29 01:07:16
3579
原创 PHP内核剖析之fpm(未完待续)
关于php-fpmFPM(FastCGI Process Manager)是PHP FastCGI运行模式的一个进程管理器,从它的定义可以看出,FPM的核心功能是进程管理,那么它用来管理什么进程呢?这个问题就需要从FastCGI说起了。FastCGI是Web服务器(如:Nginx、Apache)和处理程序之间的一种通信协议,它是与Http类似的一种应用层通信协议,注意:它只是一种协议!...
2018-08-08 02:29:06
352
原创 leetcode-两数之和golang
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]package mainimport ( "fmt" //"os")...
2018-07-24 01:54:31
810
原创 leetcode 两个数相加以及测试用例 golang
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807package main//链...
2018-07-20 14:38:02
1892
原创 链路分析设计总结
链路分析1.背景目前公司采用的是服务化设计,(什么是服务化?),服务化带来便利的同时也带了了一个问题。那就是请求链路长,通常一个api访问会访问到多个服务。这样就导致查询一个访问需要查询好几个服务。链路分析就是解决的就是把这些访问的信息都串联起来。2.日志设置以上要考虑的问题有两个:如何把这些不同服务器上的日志串联起来如何保证这个接口的访问顺序一个接口访问到了...
2018-07-11 01:05:28
2049
原创 算法-PHP两个大数相加
function add($a, $b) { $len = strlen($a) > strlen($b) ? strlen($a) : strlen($b); $as = strrev($a); $bs = strrev($b); $val = 0; $res = ''; for($i = 0; $i < $len; $i++) { ...
2018-07-08 23:44:15
1055
1
原创 systemd入门上手教程
1.简介systemd即为system daemon,是linux下的一种init软件,由Lennart Poettering带头开发,并在LGPL 2.1及其后续版本许可证下开源发布,开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低Shell的系统开销的效果,最终代替现在常用的System V与BSD风格init程序。syste...
2018-06-28 16:30:57
1766
原创 php 扩展 '消失' 问题排查
今晚本来要研究下swoole,但是当在cli里面执行php脚本的时候突然发现,swoole扩展不存在。当时就有点晕。昨天还好好的跑着呢今天怎么就不能用了?就各种尝试各种安装发现还是没有。前后折腾了一个多小时。在执行的php -v 突然发现 php的版本突然发现 PHP的版本编程5.3.8了,我记得当时安装的是5.5的怎么突然变了?然后看了下php-fpm的版本是5.5。日了,版本不一致。然后/...
2018-03-16 02:10:03
460
原创 swoole学习基础篇
进程通信1.共享内存共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影响到
2018-01-15 00:46:57
1055
原创 swoole结构图
swoole前言一.关于进程1.进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体 (百度百科描述)简而言之:一个进程就是一个运行的程序。2.子进程
2018-01-15 00:42:23
1866
原创 生成器&迭代器
1.PHP迭代器当我们使用foreach时,每次迭代都会将当前的元素的值赋给$value并将数组的指针移动指向下一个元素为下一次迭代做准备,从而实现顺序遍历。像这样能够让外部的函数迭代自己内部数据的接口就是迭代器接口,对应的那个被迭代的自己就是迭代器对象。1 Iterator接口Iterator接口扩展了Traversable接口,Traversable是一个空接口,它相当于一个标志,所有实现I
2017-11-21 22:04:16
199
原创 PHP底层未完待续
PHP源码目录根目录: / 这个目录包含的东西比较多,主要包含一些说明文件以及设计方案。 其实项目中的这些README文件是非常值得阅读的例如: /README.PHP4-TO-PHP5-THIN-CHANGES 这个文件就详细列举了PHP4和PHP5的一些差异。 还有有一个比较重要的文件/CODING_STANDARDS,如果要想写PHP扩展的话,这个文件一定要阅读一下, 不管你个人的代码风
2017-11-21 22:02:57
231
原创 Linux常用命令总结
linux常用命令1. pstreepstree命令以树状图的方式展现进程之间的派生关系,显示效果比较直观。 -a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示; -p:显示程序识别码; (显示当前所有进程的进程号和进程id) -c:不使用精简标示法; -G:使用VT100终端机的列绘图字符;
2017-11-21 22:01:09
308
原创 PHP多进程&闭包
多进程:入门1.场景异步进程并行计算守护进程这个模块没有非Unix平台可用的函数(即非Unix类系统不支持此模块)进程控制不能被应用在Web服务器环境,当其被用于Web服务环境时可能会带来意外的结果。因此,不能再PHP Web开发中使用多进程。2.代码段示例<?php $ppid = posix_getpid(); $pid = pcntl_fork(); if (
2017-11-21 21:58:15
429
转载 C 语言指针怎么理解?
作者:知乎用户链接:https://www.zhihu.com/question/24466000/answer/27893272来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。对于程序员来说内存可以简化成这样一种东西:&lt;img src="https://pic1.zhimg.com/50/4d060c3f67c
2017-11-05 00:32:54
561
转载 消息队列
一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。二、消息队列应用场景以下介绍消息队列在实际应用中常用的
2017-05-13 18:19:05
272
原创 常用工具连接收藏(持续更新)
phpfire 的使用:http://blog.csdn.net/tdcqfyl/article/details/52314470
2017-05-04 17:38:05
275
转载 MySQL 慢查询设置
说明:操作系统:CentOS 5.X 64位MySQL版本:mysql-5.5.35MySQL配置文件:/etc/my.cnfMySQL 数据库存放目录:/data/mysql实现目的:开启MySQL慢查询日志功能,安装使用MySQL慢查询分析mysqlsla具体操作:一、开启MySQL慢查询功能mysql -u root -p
2017-04-27 16:44:53
969
转载 Redis持久化
Redis的强大性能很大程度上都是因为所有数据都是存储在内存中的,然而当Redis重启后,所有存储在内存中的数据将会丢失,在很多情况下是无法容忍这样的事情的。所以,我们需要将内存中的数据持久化!典型的需要持久化数据的场景如下:将Redis作为数据库使用;将Redis作为缓存服务器使用,但是缓存miss后会对性能造成很大影响,所有缓存同时失效时会造成服务雪崩,无法响应。本文介绍R
2017-04-22 00:30:04
261
原创 redis事务
redis 事务redis 对事务的支持目前还比较简单。redis 只能保证一个 client 发起的事务中的命令可以连 续的执行,而中间不会插入其他 client 的命令。 由于 redis 是单线程来处理所有 client 的请 求的所以做到这点是很容易的。一般情况下 redis 在接受到一个 client 发来的命令后会立即 处理并 返回处理结果,但是当一个 client 在一个连接中发
2017-04-21 19:39:10
246
转载 乐观锁和悲观锁
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改
2017-04-21 18:33:46
194
原创 redis主从复制
主从复制 redis 主从复制配置和使用都非常简单。通过主从复制可以允许多个 slave server 拥有和 master server 相同的数据库副本1. redis 主从复制特点master 可以拥有多个 slave多个 slave 可以连接同一个 master 外,还可以连接到其他 slave主从复制不会阻塞 master,在同步数据时,master 可以继续处理 c
2017-04-21 17:26:18
666
转载 TCP 三次握手,四次挥手
一、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图:图1 TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。 (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+
2017-04-17 16:16:02
195
转载 斐波拉切与兔子
已知一对兔子每一个月可以生一对小兔子,而一对兔子出生后.第三个月开始生小兔子假如一年内没有发生死亡,则一对兔子一年内能繁殖成多少对?这就是经典的斐波那契数列的具体变现。在数学上,斐波那契数列是以递归的方法來定义的:(n≧2)用文字來說,就是斐波那契数列由0和1开始,之后的斐波那契数列就由之前的两数相加如图:
2017-04-17 11:02:55
767
转载 ubuntu 下samba 挂载问题
smbmount需要root权限,挂载后只有root有读写权限。需要设置uid和pid为本机使用者的uid和gid, dir_mode 和 file_mode需要设置为0777使用下面的脚本: mysmb.sh //192.168.1.11/share /mnt[cpp] view plain copy #!/bin/sh
2017-04-14 19:09:57
556
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人