06 2020 档案

摘要:一、事务的基本要素(ACID) 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。 2、一致性 阅读全文
posted @ 2020-06-20 21:31 年少有为AAA 阅读(2037) 评论(0) 推荐(1) 编辑
摘要:解决mysql 事务未提交导致死锁报错: 当 sessionA 尝试修改 B 表数据,因为 sessionB 当前为锁定状态,而且 sessionB 对 B 表中数据具有锁定状态中,则出现死锁。sessionB 会自动终止尝试修改 A 表数据事务, 两个事务操作都被终止,并返回下面错误信息。ERRO 阅读全文
posted @ 2020-06-20 21:28 年少有为AAA 阅读(4555) 评论(0) 推荐(0) 编辑
摘要:1.需求背景是什么?2.存储何种数据?3.数据特点是什么?4.存在哪些技术挑战?5.解决方案有哪些?6.md5散列桶的方法需要注意的问题?7.测试结果是什么?解决方案:1 需求背景该应用场景为DMP缓存存储需求,DMP需要管理非常多的第三方id数据,其中包括各媒体cookie与自身cookie(以下 阅读全文
posted @ 2020-06-20 20:57 年少有为AAA 阅读(8048) 评论(0) 推荐(0) 编辑
摘要:redis这个内存数据库,它的高性能、稳定性都是不用怀疑的,但我们塞进redis的数据过多,内存过大,那如果出问题,那它可能会带给我们的就是灾难性。 作者:程超来源:网络|2016-05-23 09:54 这几年的线上业务表明,redis这个内存数据库,它的高性能、稳定性都是不用怀疑的,但我们塞进r 阅读全文
posted @ 2020-06-20 20:54 年少有为AAA 阅读(244) 评论(0) 推荐(0) 编辑
摘要:滴滴2019年php高级研发工程师面试题总结一 算法 基本排序算法要会写,时间复杂度要会推算, 主要是冒泡排序, 快速排序, 选择排序.查找算法,要会写二分查找法, 实际场景要会应用.实例算法思路要明白,基本算法看多了, 我觉得是几种思路的变换, 需要自己领悟.面试中考过: 猴子选大王 斗地主项目设 阅读全文
posted @ 2020-06-20 20:36 年少有为AAA 阅读(322) 评论(0) 推荐(0) 编辑
摘要:缓存技术 浏览器缓存是指当我们使用浏览器访问一些网站页面或者http服务时,根据服务端返回的缓存设置响应头将响应内容缓存到浏览器,下次可以直接使用缓存内容或者仅需要去服务端验证内容是否过期即可。这样的好处可以减少浏览器和服务端之间来回传输的数据量,节省带宽提升性能。 访问流程如下: 1、浏览器发起请 阅读全文
posted @ 2020-06-20 20:31 年少有为AAA 阅读(365) 评论(0) 推荐(0) 编辑
摘要:问题来源之前有同事问我,主从延迟如何处理啊。其实这个问题一般面试题的时候也都会问道大家,这里就给大家分享一下我的看法。 产生原因首先我们要知道产生主从延迟的原因是什么。一般做数据库读写分离的时候,都是由于数据库扛不住用户的大量请求,导致数据库出现瓶颈,为了增大数据库的吞吐量而做的。那么当一个请求往主 阅读全文
posted @ 2020-06-20 20:18 年少有为AAA 阅读(738) 评论(0) 推荐(0) 编辑
摘要:当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的 阅读全文
posted @ 2020-06-17 13:05 年少有为AAA 阅读(152) 评论(0) 推荐(0) 编辑
摘要:一. 基础概念在mysql中建立前缀索引的意义在于相对于整列建立索引,前缀索引仅仅是选择该列的部分字符作为索引,减少索引的字符可以节约索引空间,从而提高索引效率,但这样也会降低索引的选择性关于索引的选择性,它是指不重复的索引值(也称为基数cardinality)和数据表的记录总数的比值,范围从1/( 阅读全文
posted @ 2020-06-17 10:16 年少有为AAA 阅读(217) 评论(0) 推荐(0) 编辑
摘要:MySQL参数优化对于不同的网站,及其在线量,访问量,帖子数量,网络情况,以及机器硬件配置都有关系,优化不可能一次性完成,需要不断的观察以及调试,才有可能得到最佳的效果。 1)连接请求的变量 1、max_connections MySQL的最大连接数,如果服务器的并发连接请求量较大,建议调高此值,以 阅读全文
posted @ 2020-06-17 10:00 年少有为AAA 阅读(431) 评论(0) 推荐(0) 编辑
摘要:一、一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1. worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计为8)。 2. worker_cpu_affinity 00000001 00000010 0000 阅读全文
posted @ 2020-06-17 09:55 年少有为AAA 阅读(304) 评论(0) 推荐(0) 编辑
摘要:作为普通的网民来说,一般不需要知道也不用关心什么是盗链,不过如果你是网站的开发者或维护者,就不得不重视盗链的问题了。如果你刚刚开发完一个没有防盗链的带有文件下载功能的网站,挂上internet,然后上传几个时下非常热门的软件或电影并在网站内公布下载地址,让MSN上的所有好友都来体验一下你的杰作。不用 阅读全文
posted @ 2020-06-17 09:44 年少有为AAA 阅读(409) 评论(0) 推荐(0) 编辑
摘要:1.1 基础防盗链 基础防盗链主要是针对客户端请求过程中所携带的一些关键信息来验证请求的合法性, 比如客户端请求IP,请求URL中携带的referer。优点是规则简单,配置和使用都很方便,缺点是防盗链所依赖的验证信息很多都是可以伪造的,因此此类防盗链可靠性较低。 IP 访问控制 原理: IP地址在互 阅读全文
posted @ 2020-06-17 09:43 年少有为AAA 阅读(478) 评论(0) 推荐(0) 编辑
摘要:负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;其次,单个重 阅读全文
posted @ 2020-06-16 23:12 年少有为AAA 阅读(381) 评论(0) 推荐(0) 编辑
摘要:问题的提出 在计算机科学领域,分布式一致性是一个相当重要且被广泛探索与论证问题,首先来看三种业务场景。 1、火车站售票 假如说我们的终端用户是一位经常坐火车的旅行家,通常他是去车站的售票处购买车票,然后拿着车票去检票口,再坐上火车,开始一段美好的旅行 一切似乎都是那么和谐。想象一下,如果他选择的目的 阅读全文
posted @ 2020-06-16 23:09 年少有为AAA 阅读(163) 评论(0) 推荐(0) 编辑
摘要:<?php #基数排序,此处仅对正整数进行排序,至于负数和浮点数,需要用到补码,各位有兴趣自行研究 #计数排序 #@param $arr 待排序数组 #@param $digit_num 根据第几位数进行排序 function counting_sort(&$arr, $digit_num = fa 阅读全文
posted @ 2020-06-16 22:39 年少有为AAA 阅读(194) 评论(1) 推荐(0) 编辑
摘要:对动态规划,做个总结,我们从一个例子开始: 有一座高度是10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶。要求用程序来求出一共有多少种走法。 比如,每次走1级台阶,一共走10步,这是其中一种走法。我们可以简写成 1,1,1,1,1,1,1,1,1,1。 再比如,每次走2级台阶,一共走5 阅读全文
posted @ 2020-06-16 22:38 年少有为AAA 阅读(111) 评论(0) 推荐(0) 编辑
摘要:堆 堆(heap)是计算机科学中一类特殊的数据结构的统称,通常是一个可以被看做一棵树的数组对象。 堆{k1,k2,ki,…,kn} (ki <= k2i,ki <= k2i+1)|(ki >= k2i,ki >= k2i+1), (i = 1,2,3,4...n/2) 关于堆: 堆中某个节点的值总是 阅读全文
posted @ 2020-06-16 19:07 年少有为AAA 阅读(220) 评论(0) 推荐(0) 编辑
摘要:这三种排序算法分别是桶排序、计数排序和基数排序,之所以它们的时间复杂度能到达O(n),是因为它们都是非基于比较的排序算法,不涉及元素之间的比较操作。 1 桶排序 1.1 原理 将待排数据元素分配到几个有序的桶中,然后对每个桶中的数据元素分别进行排序,每个桶中的数据元素有序后按桶的顺序将数据元素依次取 阅读全文
posted @ 2020-06-16 19:06 年少有为AAA 阅读(3118) 评论(0) 推荐(0) 编辑
摘要:鸟哥在博客中说,提高PHP 7性能的几个tips,第一条就是开启opcache: 记得启用Zend Opcache, 因为PHP7即使不启用Opcache速度也比PHP-5.6启用了Opcache快, 所以之前测试时期就发生了有人一直没有启用Opcache的事情 那么什么是Opcache呢? Opc 阅读全文
posted @ 2020-06-16 18:51 年少有为AAA 阅读(377) 评论(0) 推荐(0) 编辑
摘要:TCP 和 UDP是网络协议的传输层上的两种不同的协议。TCP的特点是面向连接的、可靠的字节流服务。客户端需要和服务器之间建立一个TCP连接,之后才能传输数据。数据到达之前对方就一直在等待,除非对方直接关闭连接,数据有序,先发先到。UDP是一种无连接、不可靠的数据发送协议。发送方根据对方的ip地址发 阅读全文
posted @ 2020-06-16 16:23 年少有为AAA 阅读(1440) 评论(0) 推荐(0) 编辑
摘要:设置键的生存时间或过期时间 通过EXPIRE 命令或者PEXPIRE 命令,客户端可以以秒或者毫秒精度为数据库中的某个键设置生存时间( Time To Live , TTL) ,在经过指定的秒数或者毫秒数之后,服务器就会自动删除生存时间为0的键: redis> SET key value OK re 阅读全文
posted @ 2020-06-16 16:21 年少有为AAA 阅读(1808) 评论(0) 推荐(0) 编辑
摘要:1 初识LVS:Linux Virtual Server 1.1 LVS是什么 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux 阅读全文
posted @ 2020-06-16 14:08 年少有为AAA 阅读(260) 评论(0) 推荐(0) 编辑
摘要:从上篇文章到这篇文章,中间用了一段时间准备,主要是想把东西讲透,同时希望大家给与一些批评和建议,这样我才能有所进步,也希望喜欢我文章的朋友,给个赞,这样我才能更有激情,呵呵。 由于本篇要写的内容有点多,我就分为几篇博客进行了详细描述。 Haproxy提高web应用的高可用 上一篇文章讲到了hapro 阅读全文
posted @ 2020-06-16 14:06 年少有为AAA 阅读(236) 评论(0) 推荐(0) 编辑
摘要:方案 上篇文章讲到了负载均衡的相关理论知识,这篇文章我打算讲讲实践方法以及实践中遇到的问题 方案:haproxy http层负载均衡 安装一个haproxy服务,两个web服务 haproxy:192.168.1.227:80 web1 http://192.168.1.226:8081/login 阅读全文
posted @ 2020-06-16 14:04 年少有为AAA 阅读(225) 评论(0) 推荐(0) 编辑
摘要:随着网站的业务越来越多,网站的服务就变的很重要,假设某天你的服务器挂了,会不会是一个天大的灾难呢?而且这种事情发生的概率还不小,断电了,服务器硬盘坏了,内存坏了等等,都会使你的系统挂掉,而且高并发的访问有时候也会使系统资源耗尽,然后导致服务器宕机,那么解决方案呢,那就是集群,将相同的系统分别放到不同 阅读全文
posted @ 2020-06-16 13:56 年少有为AAA 阅读(146) 评论(0) 推荐(0) 编辑
摘要:上一篇文章中讲到了分布式部署之后,各个模块要通过网络进行通信,那么如何通信,用什么协议呢? 可选的方案有http tcp/ip(socket)等 http短连接通信方案 基于http协议,xml报文传输 客户端具体框架为httpclient,服务端为struts2 客户端和服务端的通信在内网 该方案 阅读全文
posted @ 2020-06-16 13:44 年少有为AAA 阅读(152) 评论(0) 推荐(0) 编辑
摘要:前言 写这篇文章的目的是想用来帮助自己思考和理清头绪,以及如何从一个简单的网站架构演进发展成一个大型网站架构,主要侧重在技术方面 简单的网站 由于我没有做过php,那么就以jsp为例,jsp做网站前端,以电子商务网站为例,描述一个简单的网站架构 前端 jsp+css+js 后端 java ssh W 阅读全文
posted @ 2020-06-16 13:39 年少有为AAA 阅读(144) 评论(0) 推荐(0) 编辑
摘要:前言 最近在学习一些分布式系统中的基础知识,看到了前人总结的非常好的博客。在作者申明可以转载的情况下,将它们转载到自己的专栏。既为了建立一个完整的知识体系,也为了更好的理解原文。接下来的篇幅末尾,会将参考的篇幅列举出来,感兴趣的可以读一下参考的博客。笔者是在前人博客的基础上,加上自己的理解和适当的配 阅读全文
posted @ 2020-06-15 20:27 年少有为AAA 阅读(383) 评论(0) 推荐(0) 编辑
摘要:前两天和百度的一个同学聊MySQL两阶段提交,当时自信满满的说了一堆,后来发现还是有些问题的理解还是比较模糊,可能是因为时间太久了,忘记了吧。这里再补一下:) 5.3.1事务提交流程 MySQL的事务提交逻辑主要在函数ha_commit_trans中完成。事务的提交涉及到binlog及具体的存储的引 阅读全文
posted @ 2020-06-11 20:38 年少有为AAA 阅读(440) 评论(0) 推荐(0) 编辑
摘要:之前看到过一道面试题:Redis的过期策略都有哪些?内存淘汰机制都有哪些?手写一下LRU代码实现?笔者结合在工作上遇到的问题学习分析,希望看完这篇文章能对大家有所帮助。 从一次不可描述的故障说起 问题描述:一个依赖于定时器任务的生成的接口列表数据,时而有,时而没有。 怀疑是Redis过期删除策略 排 阅读全文
posted @ 2020-06-11 18:12 年少有为AAA 阅读(1216) 评论(0) 推荐(0) 编辑
摘要:优点: 1,为了高效的使用CPU,数据不仅仅按列存储,同时还按向量进行处理; 2,数据压缩空间大,减少IO;处理单查询高吞吐量每台服务器每秒最多数十亿行; 3,索引非B树结构,不需要满足最左原则;只要过滤条件在索引列中包含即可;即使在使用的数据不在索引中,由于各种并行处理机制ClickHouse全表 阅读全文
posted @ 2020-06-11 17:18 年少有为AAA 阅读(12397) 评论(0) 推荐(0) 编辑
摘要:MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题: 1.MySQL需要不断进行拆库拆表,Memcached也 阅读全文
posted @ 2020-06-11 17:17 年少有为AAA 阅读(316) 评论(0) 推荐(0) 编辑
摘要:所谓的分片其实就是大的数据分成几个小的部分,分别放置存储,对于数据而言无外乎就是读写,读写的基础就是数据的定位,redis利用集群的方式+槽位完成,分片的数据的定位和管理维护。 Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施(installation)。 Redis 集群使 阅读全文
posted @ 2020-06-11 17:16 年少有为AAA 阅读(1024) 评论(0) 推荐(0) 编辑
摘要:本文是对mapreduce技术的一个初步学习的总结,包括如下章节的内容: 概述 发展史 基本概念 程序编写 运行测试 其它案例 参考资料: 1、本文介绍的内容依赖hadoop环境,关于hadoop运行环境的搭建可参见《Hadoop运行环境搭建》。 2、mapreduce的编程模型设计受到了函数式编程 阅读全文
posted @ 2020-06-11 17:15 年少有为AAA 阅读(369) 评论(0) 推荐(0) 编辑
摘要:一、前言 在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而 阅读全文
posted @ 2020-06-11 17:13 年少有为AAA 阅读(212) 评论(0) 推荐(0) 编辑
摘要:(1)select==>时间复杂度O(n) 它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。 ( 阅读全文
posted @ 2020-06-11 17:05 年少有为AAA 阅读(167) 评论(0) 推荐(0) 编辑
摘要:Linux中的top命令显示系统上正在运行的进程。它是系统管理员最重要的工具之一。被广泛用于监视服务器的负载。在本篇中,我们会探索top命令的细节。top命令是一个交互命令。在运行top的时候还可以运行很多命令。我们也会探索这些命令。 (译注:不同发行版的top命令在各种细节有不同,如果发现不同时, 阅读全文
posted @ 2020-06-11 14:30 年少有为AAA 阅读(1076) 评论(0) 推荐(0) 编辑
摘要:网络上有很多关于如何配置 Nginx + FPM 的文章,但它们更多从操作的角度出发,告诉我们怎么做,但却没有告诉我们为什么要这么做,本文从 Nginx 与 FPM 的工作机制出发,探讨配置背后的原理,让我们真正理解 Nginx 与 PHP 是如何协同工作的。 要说 Nginx 与 PHP 是如何协 阅读全文
posted @ 2020-06-11 14:08 年少有为AAA 阅读(461) 评论(0) 推荐(0) 编辑
摘要:RDB AOF 存储数据 保存键空间的所有键值对(包括过期字典中的数据),并以二进制形式保存,符合rdb文件规范,根据不同数据类型会有不同处理 保存redis服务器所执行的所有写命令来记录数据库状态,在写入之前命令存储在aof_buf缓冲区。 持久化时间选择 通过conf的save选项设置持久化行为 阅读全文
posted @ 2020-06-10 20:55 年少有为AAA 阅读(211) 评论(0) 推荐(0) 编辑
摘要:Redis RDB 持久化原理 1)RDB 持久化配置 # 时间策略,表示900s内如果有1条是写入命令,就触发产生一次快照,可以理解为就进行一次备份 save 900 1 save 300 10 # 表示300s内有10条写入,就产生快照 save 60 10000 # 表示60s内有10000条 阅读全文
posted @ 2020-06-10 20:50 年少有为AAA 阅读(562) 评论(0) 推荐(0) 编辑
摘要:一、关于Nginx的负载均衡 在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器。详情请查看我的另一篇博客。 二、Nginx负载均衡策略 负载均衡用于从“upstream”模块定义的后端服务器列表中选取一台服务器接受用 阅读全文
posted @ 2020-06-10 20:18 年少有为AAA 阅读(346) 评论(0) 推荐(0) 编辑
摘要:消息中间件现在有不少,网上很多文章都对其做过对比,在这我对其做进一步总结与整理。 RocketMQ 淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用Mysql作为消息存储媒介,可完全水平扩容,为了进一步降低成本,我们认为存储部分可以进一步优化,2011年初,Linkin开源了Kaf 阅读全文
posted @ 2020-06-08 19:45 年少有为AAA 阅读(703) 评论(0) 推荐(0) 编辑
摘要:在高并发业务场景下,典型的阿里双11秒杀等业务,消息队列中间件在流量削峰、解耦上有不可替代的作用。 Mike前面分享了MQ消息队列的设计、核心原理、以及与RPC远程调用的区别等内容。今天我们一起来探讨: 全量的消息队列究竟有哪些? Kafka、RocketMQ、RabbitMQ的优劣势比较; 以及消 阅读全文
posted @ 2020-06-08 19:36 年少有为AAA 阅读(861) 评论(0) 推荐(0) 编辑
摘要:一直再说高并发,多少QPS才算高并发?业务系统服务,单机,集群分别是多少呢? 高并发的四个角度 只说并发不提高可用就是耍流氓。可以从四个角度讨论这个问题。 首先是无状态前端机器不足以承载请求流量,需要进行水平扩展,一般QPS是千级。 然后是关系型数据库无法承载读取或写入峰值,需要数据库横向扩展或引入 阅读全文
posted @ 2020-06-08 11:45 年少有为AAA 阅读(7371) 评论(0) 推荐(0) 编辑
摘要:目录 (1)单块架构 (2)初步的高可用架构 (3)千万级用户量的压力预估 (4)服务器压力预估 (5)业务垂直拆分 (6)用分布式缓存抗下读请求 (7)基于数据库主从架构做读写分离 (8)总结 本文将会从一个大型的网站发展历程出发,一步一步的探索这个网站的架构是如何从单体架构,演化到分布式架构,然 阅读全文
posted @ 2020-06-08 11:44 年少有为AAA 阅读(392) 评论(0) 推荐(0) 编辑
摘要:前言 RPC是google公司主导的一款RPC框架,并使用protobuf作为数据传输格式,伴随gRPC框架的成熟及使用人群的增加,对于底层使用的数据格式protobuf也被越来越受到重视,而对于PHP生态而言,相关ProtoBuf介绍文档及使用资料比较少,故此写简文希望能帮助到一些有需要的同学。 阅读全文
posted @ 2020-06-07 13:46 年少有为AAA 阅读(989) 评论(0) 推荐(0) 编辑
摘要:使用非对称加密主要是借助openssl的公钥和私钥,用公钥加密私钥解密,或者私钥加密公钥解密。 1.安装openssl和php的openssl扩展 2.生成私钥:openssl genrsa 用于生成rsa私钥文件,生成是可以指定私钥长度和密码保护 openssl genrsa -out rsa_p 阅读全文
posted @ 2020-06-07 13:00 年少有为AAA 阅读(144) 评论(0) 推荐(0) 编辑
摘要:先了解一下基本概念: 公钥/私钥/签名/验证签名/加密/解密/对称加密/非对称加密 公钥与私钥是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据. 当然,公钥和私钥都可以用来 阅读全文
posted @ 2020-06-07 12:58 年少有为AAA 阅读(416) 评论(0) 推荐(0) 编辑
摘要:关于错误与异常的最后一篇文章,我们来进行一些总结。 PHP中错误和异常的区别 通过前面两篇文章的学习,我们来直接将错误和异常摆上来进行对比,看看他们的区别与联系: 错误的出现通常是语法或编译运行时错误,是我们要避免的。而异常一般与业务逻辑有关,基本上是人为抛出,需要上层来处理 错误有通知、警告类不会 阅读全文
posted @ 2020-06-05 11:58 年少有为AAA 阅读(153) 评论(0) 推荐(0) 编辑