- 博客(321)
- 资源 (111)
- 收藏
- 关注
原创 关于php-fpm相关(主要理解fpm的worker的处理)
看了一下,发现自己可能还是没有太理解nginx下的php-fpm工作方式,所以再在网上找了些文章看了下,主要由几个疑问推广开来:1.nginx杀掉master之后还能否接受请求2.nginx是worker进程来抢还是master进程来分配那php对应的又是什么情况呢?参考1:php-fpm是 FastCGI 的实现,并提供了进程管理的功能,包含master 和 worker 两种进程。master 创建并监听socket,fork多个woker进程,通过共享内存获取worker的状
2020-08-23 11:07:22 943
转载 彻底讲清楚ZooKeeper分布式锁的实现原理【石杉的架构笔记】
转载,如侵权,请及时联系我删除一、写在前面之前写过一篇文章(《拜托,面试请不要再问我Redis分布式锁的实现原理》),给大家说了一下Redisson这个开源框架是如何实现Redis分布式锁原理的,这篇文章再给大家聊一下ZooKeeper实现分布式锁的原理。同理,我是直接基于比较常用的Curator这个开源框架,聊一下这个框架对ZooKeeper(以下简称zk)分布式锁的实现。一般除了大公司是自行封装分布式锁框架之外,建议大家用这些开源框架封装好的分布式锁实现,这是一个比较快...
2020-08-22 21:52:23 447
原创 分布式缓存一致性问题解决方案
该文章主要是来自于通用配置系统使用了文件缓存作为二级缓存,他的一致性如果保证的问题,目前了解到的有三种方案:1.服务发现(注册中心,利用类似zookeeper来协调各个缓存实例节点)2.采用队列方式,将更新作为消息放入mq中进行消费(新增一个线下的读binlog的异步模块)3.过期时间另外一种设计本地缓存与redis缓存的机制流程图主要参考以下文章1.分布式缓存的一致性问题2.聊聊轻量级本地缓存设计3.缓存同步、如何保证缓存一致性、缓存误用...
2020-08-22 21:27:03 2114
原创 关于mysql为什么要分表的一些思路
文章一:问题描述 为什么进行分表? 分库? 一般多少数据量开始分表? 什么是数据库垂直拆分和水平拆分 回答为什么要进行分库业务发展,当单个数据库中的表越来越多,数据量越来越大的时候。数据的增删改查所消耗的资源就会增加。由于mysql是无法分布式部署(可能会有人说不是有主从吗?并不是,详细会在其他文章说明)的。==而单台服务器的资源,如CPU、磁盘、内存、IO等都是有限的。最终数据库所承载的数据量和处理数据的能力就会遇到瓶颈==。此时有两种解决方案: 横向扩
2020-08-22 21:20:43 971 3
原创 针对mysql的RR级别的幻读问题的分析与理解
由于最近被这个幻读的问题给困扰,所以想整明白点,主要就是幻读和不可重复读的区别以及幻读的实际使用场景。翻了一些文章,众说纷纭,我大概抽了几篇我觉得不错的文章来说。不可重复读主要还是说的update和delete,他针对的是同一次查询的数据,而幻读则针对的是insert(T1第一次查没有这条记录然后准备insert,T2此时insert,T1接着insert,发现无法插入,这就是幻读,另外还有一种针对幻读的解释就是两次查询数量不一致问题)目前我觉得说的比较清楚的是这篇文章:不扯概念,用例子演示什么是脏
2020-08-15 16:20:56 544
原创 关于epoll的ET和LT模型的相关知识点汇总
以下均来自网络,但是文章抄来抄去连几个错别字都懒的矫正,实在看不下去,自己再在这里汇总以下。epoll是Linux下的一个多路复用API,当处理大并发的事件时,其性能远强于古老的poll和select。epoll可以工作在两种模式下,LT(水平触发)、ET(边缘触发),接下来将讨论这两种模式的区别。ET(边缘触发)和LT(水平触发)默认情况下,epoll采用LT模式工作,该模式支持阻塞和非阻塞套接字,如果想采用ET模式,可以使用EPOLLET参数。ET模式只支持非阻塞套接字,其效率要高于LT模式
2020-08-11 00:32:49 2297
转载 填坑之PHP的yield和协程在一起的日子里
首先是,这是我第一次把公众号文章复制粘贴到github来。其次是,很久很久之前,我挖了一个yield的一个坑,自己挖的坑自己填,不然迟早会把自己埋掉。最后是,如果想看之前那个坑,请发送“yield”给README中的公众号,我开通了高大上的自动回复功能,稀罕地不得了!PS:那篇文章中在最后我犯了一个错误,误下了一个结论:foreach中不能使用send并猜测这是PHP的bug,实际上并不是,真实的原因粗暴简单的理解就是send会让生成器继续执行一次导致。这件事情告诉我们:除了装逼之外,甩锅
2020-07-29 21:33:10 519 1
原创 php的yield关键字相关
PHP 知识补全 —— 生成器 (generator)和协程的实现(基础)php 通过 yield 实现协程有什么使用场景填坑之PHP的yield和协程在一起的日子里(这篇文章写的非常不错,很容易理解,我甚至已经转载到我的博客了)...
2020-07-29 21:32:19 106
原创 关于php与mysql等中间件长连接的一些总结
在 FPM 模式下是可以使用 MySQL 持久化连接的。但是没有办法实现连接池的, 因为一个 worker 只能维持一个长连接,无法和别的 worker 共享, 只能通过配置 pm.max_children 来让 FPM 维持的长连接没有那么多不要超过 MySQL 的最大连接数.不过这是一个危险操作, 因为你也看到了, 我在写这篇文章的过程中在没有手动重启 FPM 进程之前这个长连接是一直保持的,而如果这个 fpm 进程是空闲的, 那么这个连接就是被浪费的。这有可能导致大量无用的连接占用 MySQL 的
2020-07-29 19:23:21 418
原创 php与go的相关区别
[2020年面试题-PHP 与 golang] .Go 和 PHP 在运行的时候有什么区别和优势八个PHP 高级工程经典面试题Go面试复盘备忘录
2020-06-20 19:29:46 739
转载 一篇读懂mysql长链接、短连接、连接池(包括php与redis/mysql的长连接的实现)
本来摘自其他文章,个人觉得针对mysql的连接池这个问题还是分析的比较清楚,主要是从解决什么问题,有哪些方案这个角度来触发,分析各自优劣(但具体谈到的workerman感觉可以忽略,现在都是利用nginx的stream-lua模块来完成mysql连接池,然后php由于与nginx应该是在同一台服务器上,可以通过unix socket来进行通讯,达到使用mysql连接池的目的,具体可以参考这篇文章)原文如下:首先要了解为什么用连接池,连接池能为你解决什么问题连接池主要的作用1、减少与数据服务器
2020-06-20 19:17:47 928
原创 redis实现分布式锁相关总结
首先要清楚,分布式锁的实现主要需要涉及到那几点,这里无非就是加锁和解锁。后面要谈的就是怎么来实现,这其中又涉及到了redis的原子性以及使用lua脚本来操作的方法,进一步比较了lua脚本与redis事务的优缺点最后谈到了php中如果调用lua脚本实现的问题分布式锁的特点(也即说明吧)分布式锁一般有如下的特点:互斥性: 同一时刻只能有一个线程持有锁 可重入性: 同一节点上的同一个线程如果获取了锁之后能够再次获取锁 锁超时:和J.U.C中的锁一样支持锁超时,防止死锁 高性能和高可.
2020-06-18 00:33:33 244
转载 MySQL索引原理及慢查询优化【美团技术团队】
背景MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重。本人从2013年7月份起,一直在美团
2020-06-14 16:22:41 1068
转载 石衫架构笔记之hadoop优秀设计学习
1.【性能优化的秘密】Hadoop如何将TB级大文件的上传性能优化上百倍?基于内存里的chunk缓冲机制、packet数据包机制、内存队列异步发送机制。绝对不会有任何网络传输的卡顿,导致大文件的上传速度变慢。...
2020-06-14 15:38:25 164 1
转载 学习使用shell中的join命令
用途说明Linux下最常用的数据文件格式是文本格式的,多个字段之间通过分隔符来区分,分隔符比如冒号(:)、制表符、空格等。/etc/passwd和/etc/group就是用:来分隔的,用MySQL的into outfile指令导出的数据通常是以制表符分隔的。这种文本格式既方便人去阅读,也适合程序处理,通常某列类似于数据库中的关键字。join命令就是一个根据关键字合并数据文件的命令(join l...
2019-03-30 21:40:35 4607 1
原创 Nginx的负载均衡算法之ip_hash(保持会话)
1.算法介绍ip_hash算法的原理很简单,根据请求所属的客户端IP计算得到一个数值,然后把请求发往该数值对应的后端。所以同一个客户端的请求,都会发往同一台后端,除非该后端不可用了。ip_hash能够达到保持会话的效果。ip_hash是基于round robin的,判断后端是否可用的方法是一样的。2.算法核心部分 2.1. 第一步,根据客户端IP计算得到一个数值。f...
2019-03-17 10:40:42 9151
原创 关于memcache与redis的内存分配与碎片回收机制
1.理解memcached的内存存储机制 Memcached默认情况下采用了名为Slab Allocator的机制分配、管理内存。在该机制出现以前,内存的分配是通过对所有记录简单地进行malloc和free来进行的。但是,这种方式会导致内存碎片,加重操作系统内存管理器的负担,最坏的情况下,会导致操作系统比memcached进程本身还慢。Slab Allocator就是为解决该问题而诞...
2019-03-14 01:19:01 1565
原创 关于php-fpm中的参数的一些配置
主要涉及到php-fpm中的一些参数设置,这里也参考了很多文章。1.segmentfault上大佬的总结首先,我们关注下 PHP-FPM 的运行方式:static :表示在 `php-fpm` 运行时直接 `fork` 出 `pm.max_chindren` 个子进程,dynamic:表示,运行时 `fork` 出 `start_servers` 个进程,随着负载的情况,动态的调...
2019-03-14 00:29:08 905
原创 [仅供个人参考系列]个人整理基础的排序、查找等算法相关笔记
1.常见排序算法的时间、空间复杂度2.具体算法的实现快速排序(根据定位pivot元素的方法,分为简单版和技巧版)简单版:复杂版:(请参考剑指offer上79页的相关写法)直接插入算法:堆排序:算法可以看这里,实际排序过程理解,也可以看这里查找算法:...
2018-03-28 13:05:58 387 1
原创 悲剧的阿里电面
算法:1.快排(时间,空间复杂度)2.第一次只出现一次的字符3.反转字符串mysql:怎样提高数据库的查询效率针对数据库字段有没有什么优化心得redis:高并发情况下怎么保证redis的原子性操作http:字段的特点等,http status举例...
2018-03-28 11:33:21 940
原创 [仅供个人参考系列]设计模式个人整理相关笔记以及实例
设计模式总结:个人觉得应该熟悉的几个设计模式:个人手写的相关设计模式单例模式:工厂:适配器:观察者:
2018-03-27 10:22:30 254
原创 [仅供个人参考系列]面向对象相关原则个人笔记
面向对象的三大特性:三大基本特性:封装,继承,多态封装封装,就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。继承继承,指可以让某个类型的对象获得另一个类型的对象的属性和方法。它支持按级分类的概念..
2018-03-27 10:10:50 260
转载 [仅供个人参考系列]Redis核心概念(纯文字说明版,看绿色部分即可)
本文转载自:https://www.jianshu.com/p/2a4a57c5e313因个人笔记需要,故转载过来,如有疑问,请联系博主概述Redis 与其他 key - value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,has...
2018-03-26 22:49:33 221
原创 [仅供个人参考系列]关于Redis持久化(图片笔记说明版)
redis的持久化:1.内存快照:2.redis持久化之AOF:3.redis日志重写:4.redis数据修复:关于redis持久化对应的笔记总结:
2018-03-26 22:31:34 212
转载 [仅供个人参考系列]关于Redis持久化(纯文字说明版,看绿色部分即可)
本文转载自:http://www.cnblogs.com/chenpingzhao/p/5158791.html主要是为了自己看文章做笔记需要,所以转载过来,如有疑问,请联系博主。Redis有两种持久化的方式:快照(RDB文件)和追加式文件(AOF文件)RDB持久化方式是在一个特定的间隔保存某个时间点的一个数据快照。AOF(Append only file)持久化方式则会记录每一个服务器收到的写操...
2018-03-26 22:22:19 243
转载 [仅供个人参考系列]redis的面试题
1:使用redis有哪些好处? (1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) (2) 支持丰富数据类型,支持string,list,set,sorted set,hash (3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行 (4) 丰富的特性:可用于缓存,消息,按key设置过期...
2018-03-26 21:53:24 211
转载 [仅供个人参考系列]MySQL调优
为什么要进行优化?避免由数据库链接timeout产生页面5xx的错误避免由于慢查询造成页面无法加载避免由于阻塞造成数据无法提交优化用户体验可以从哪几个方面进行数据库优化?image从图中可以看出,SQL及索引的优化是最重要的,成本最低效果最好。下面分别来看看如何优化SQL和索引。SQL优化慢查询日志配置可以使用慢查询日志对有效率问题的SQL进行监控。下面是关于如何开启慢查询日志和慢查询日志的一些配...
2018-03-25 15:59:05 244
原创 [仅供个人参考系列]http个人相关笔记(整体,etag,content-type)
整体:http中的etaghttp中的content-type
2018-03-24 22:27:03 212
原创 [仅供个人参考系列]php中的for,foreach,while区别与联系
循环数字数组时,for需要事先count($arr)计算数组长度,需要引入自增变量$i,每次循环都要进行条件判断$i<$c,然后自增$i++,输出数组元素时,$arr[$i]需要进行哈希操作.而foreach循环数组时,指针会自动指向下一个元素,不需要计算数组长度,没有条件判断和自增变量,调用元素时也没有哈希操作,所以性能肯定要比for和while高.另外,for和while对存在键值映射的...
2018-03-24 22:02:07 573
原创 [仅供个人参考系列]php中array与对象的区别
完整的实现可以看这篇文章:PHP数组/Hash表的实现/操作、PHP变量内核实现、PHP常量内核实现这里截图说明一下zval结构体相关的图:
2018-03-24 21:34:48 1256
原创 [仅供个人参考系列]php的内存回收
关于内存回收整体详细介绍请看PHP zval内存回收机制和refcount_gc和is_ref_gc重点看下面这张图,理解即可:
2018-03-24 21:30:36 281
原创 [仅供个人参考系列]tcp与udp的相关内容小结
TCP/UDP区别TCPTCP是一种面向连接的、可靠的、基于字节流的传输层通信协议TCP面向连接,提供可靠地数据服务TCP首部开销20字节TCP逻辑通信信道是全双工的可靠信道TCP连接只能是点到点的UDPUDP是参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠的信息传递服务UDP无连接,不可靠UDP首部开销8字节UDP逻辑通信信道是不可靠信道UDP没有拥塞机制,因此网络出现拥堵不会使源主...
2018-03-24 20:17:02 227
转载 解决关于移动端zepto的tap点透bug(英文ghost click)
工作中遇到了这样的一个点透的问题,具体描述在下文中有提到,这里转载一篇博文,觉得是个不错的解决方案来自:悠悠工厂——web前端在使用zepto框架的tap来移动设备浏览器内的点击事件,来规避click事件的延迟响应时,有可能出现点透的情况,下面是一个例子:先看看zepto RC1版本的tap模拟事件的实现方法:;(function($){ var touch = {}, t
2015-10-30 19:35:42 5425
原创 关于python字典排序问题(直接对字典不能排序)
没有办法返回一个已经排好序的字典(返回值也要是字典),因为字典是按偏移来存储,并不是按键值什么顺序存储的。不过我们要对字典中的元素进行顺序处理可以直接在上图中的for循环里面进行即可。
2015-04-20 09:31:24 4444
原创 毕业设计学习笔记
sublime text3的插件配置:http://www.dbpoo.com/sublime-text3-install/http://blog.sina.com.cn/s/blog_8cf0ba6c01017fpl.htmlpython学习笔记:关于python中带下划线的变量的理解:http://blog.csdn.net/hudiedd/article/details/
2015-03-05 19:49:16 981
摄像机现场标定算法研究(哈工大论文)
2019-01-23
模式识别与机器学习(马春鹏, Pattern Recognition and Machine Learning 中文高清完整版)
2018-12-29
完全自主研发的粒子群算法来求解约束多目标优化万能matlab_code
2018-12-02
基于SVM电力系统短期负荷预测的其中一个例程
2018-11-10
tap/tun模块对应的内核模块文件
2014-07-15
在win7(32bit)下编译openssl完整过程--所需软件
2014-05-08
配合apache(2.2.x)+openssl(0.9.6->1.0.1升级)过程博文环境搭建的资源
2014-05-07
IDApro advance5 0 配合看雪xsystem的附件
2014-04-16
sulley安装所需要的一些软件[更新版](为我相应的博文定制)
2013-12-25
sulley安装所需要的一些软件(为我相应的博文定制)
2013-12-16
大数据,数据挖掘的相关论文
2013-08-10
安装双系统所需要的软件和工具
2013-08-03
关于java文件上传中用到的一些JAR包
2013-07-26
red5配置文章中提到的一些软件等资源
2013-05-30
成功配置red5经验WORD文章带图片
2013-05-30
制作好的EXE以及相关DEMO文件
2012-06-15
内存数据库--具体程序流程
2011-07-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人