自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(630)
  • 资源 (1)
  • 收藏
  • 关注

转载 redis 队列简单实现高并发抢购/秒杀

https://blog.csdn.net/Gekkoou/article/details/88714674

2019-06-27 17:20:34 1864

转载 数据结构之------什么是哈希表?(哈希表是一个以空间换取时间的数据结构!!! 加快查找速度!!!)

结合http://www.cnblogs.com/feichengwulai/articles/3523905.html这篇文章一起记忆!!!@哈希表的实际应用1,Sql中的索引,就是通过哈希表实现的。加大了数据存储空间,但查询速度快了很多!!!---具体可以查哈希表的应用!!!@什么是哈希表?1,google搜索到的头条:  散列表(也叫哈希表),是根据关键码值直接...

2019-06-21 17:10:57 1197

转载 从扑克牌中随机抽取5张牌,判断是不是一个顺子,即这5张牌是不是连续(面试题)

从扑克牌中随机抽取5张牌,判断是不是一个顺子,即这5张牌是不是连续的2-10位数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字统计数组中出现的次数,判断等于0,大于1大于2大于13返回,去重,排序,剩余个数m + 0次数n -1>=最大值减去最小值分析该题:  大小王可以当做任意数字,故将其记为0  用php数组进行处理,将传入的5个数,放到数组里...

2019-06-21 11:53:11 2253 1

原创 MySQL的innodb引擎是如何实现MVCC的

索引的数据结构有B+treee索引和hash索引:B+treee索引是innodb引擎默认使用的数据结构,它通过一定的算法,将mysql表中数据分磁盘存放,少量的磁盘读取即可做到大量数据的遍历;Hash索引根据hash算法将数据,精确的存放,来查找某个数据的时候,根据相同的算法一次就能找到,等值查询,效率非常高,但hash索引只能等值查询,而且容易发生hash碰撞。innodb会为每一行添加两...

2018-08-22 14:12:16 502

转载 分布式事务有两种解决方式

1.优先使用异步消息。上文已经说过,使用异步消息 Consumer 端需要实现幂等。幂等有两种方式,一种方式是业务逻辑保证幂等。比如接到支付成功的消息订单状态变成支付完成,如果当前状态是支付完成,则再收到一个支付成功的消息则说明消息重复了,直接作为消息成功处理。另外一种方式如果业务逻辑无法保证幂等,则要增加一个去重表或者类似的实现。对于 producer 端在业务数据库的同实例上放一个消息库,发消...

2018-06-07 16:18:26 1105

转载 深入解析Mysql 主从同步延迟原理及解决方案

MySQL的主从同步是一个很成熟的架构,优点为:①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;②在从主服务器进行备份,避免备份期间影响主服务器服务;③当主服务器出现问题时,可以切换到从服务器。相信大家对于这些好处已经非常了解了,在项目的部署中也采用这种方案。但是MySQL的主从同步一直有从库延迟的问题,那么为什么会有这种问题。这种问题如何解决呢?1. MySQL数据库主从同...

2018-06-04 10:33:54 290

转载 Redis 的操作为什么是的原子性的详解

原子性原子性是数据库的事务中的特性。在数据库事务的情景下,原子性指的是:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。对于Redis而言,命令的原子性指的是:一个操作的不可以再分,操作要么执行,要么不执行。Redis操作原子性的原因Redis的操作之所以是原子性的,是因为Redis是单线程的。由于对操作系统相关的知识不是很...

2018-05-31 10:35:05 50755 6

转载 悲观锁、乐观锁的区别及使用场景

定义:悲观锁(Pessimistic Lock): 每次获取数据的时候,都会担心数据被修改,所以每次获取数据的时候都会进行加锁,确保在自己使用的过程中数据不会被别人修改,使用完成后进行数据解锁。由于数据进行加锁,期间对该数据进行读写的其他线程都会进行等待。乐观锁(Optimistic Lock): 每次获取数据的时候,都不会担心数据被修改,所以每次获取数据的时候都不会进行加锁,但是在更新数据的时候...

2018-05-31 09:52:03 17472

原创 php网站 高并发时候如何优化?

利器1.多线程处理利用线程池设计,同时处理多个请求。线程池中线程个数=CPU个数+1;//对计算密集型的情况适用如果程序的逻辑处理需要对 DB,IO,redis 有操作。会增加CPU的占用率。高并发解决方案案例:当QPS达到2000时优化方案: 做业务分离,分布式存储1.流量优化  防盗链处理(去除恶意请求)、限流、限速、限制并发数2.前端优化(1) 减少HTTP请求[将css,js等合并](2)...

2018-04-20 17:55:44 864

原创 百万级别网站架构思路

1.运维服务器方面:2台web机器,机器配置是4核,16G的配置,主从,3台mysql,主从加备份数据库,resdis一台机器2.可以处理1秒钟1000次请求,如果预估是1秒钟4000次请求的话,则需要4台web机器,top命令查询load average如果cpu快达到4了就需要加机器了3.前端使用cdn加速,JS、CSS打包压缩,使用分布式缓存,读取数据从缓存读取4.并发量高的话使用队列异步处...

2018-04-08 17:44:29 3028 4

原创 Laravel框架特性分析

1.拥有一个简单的核心Container类,对于很多的php框架拥有的功能如路由请求拦截,视图渲染,权限控制,缓存等都是集成在框架内部实现的,但是laravel框架是独立实现的,这些功能可以理解为服务,通过provider(提供器),注册到核心容器container去实现的.Application继承Container类,这个类是负责调度和组装各种组件服务的容器,打开config目录里的app.p...

2018-03-16 16:15:35 1199

转载 数据库事务隔离级别-- 脏读、幻读、不可重复读(清晰解释)

一、数据库事务隔离级别数据库事务的隔离级别有4个,由低到高依次为Read uncommitted 、Read committed 、Repeatable read 、Serializable ,这四个级别可以逐个解决脏读 、不可重复读 、幻读 这几类问题。√: 可能出现    ×: 不会出现脏读不可重复读幻读Read uncommitted√√√Read committed×√√Repeatabl...

2018-02-09 10:19:23 699

转载 MySQL中MyISAM与InnoDB区别及选择

2018-02-08 10:39:13 793

转载 MySQL分区与分片的差异

要了解分区与分片之间的差异,首先我们需要知道什么是分片与分区。分片:分片Sharding 不是一门新技术,而是一个相对简朴的软件理念。众所周知,MySQL 5 之后才有了数据表分区功能,那么在此之前,很多 mysql 的潜在用户都对 MySQL 的扩展性有所顾虑,而是否具备分区功能就成了衡量一个数据库可扩展性与否的一个关键指标(当然不是唯一指标)。数据库扩展性是一个永恒的话题,MySQ

2018-01-23 19:55:51 7860

转载 php 内核执行

网站访问量185万的pv ,6万多的uv 回息日        平时的是160万,2万多的uv当用户代码输入给PHP内核去执行的时候, PHP内核会对PHP代码进行词法分析和语法分析, 词法分析是把PHP代码分割成一个个的“单元”(TOKEN), 语法分析则将这些“单元”转化为Zend Engine可执行的操作。 然后PHP内部的Zend Engine对这些操作进行顺次的执行。 Zend

2018-01-16 17:53:37 210

转载 Redis持久化存储(AOF与RDB两种模式)

Redis中数据存储模式有2种:cache-only,persistence;cache-only即只做为“缓存”服务,不持久数据,数据在服务终止后将消失,此模式下也将不存在“数据恢复”的手段,是一种安全性低/效率高/容易扩展的方式;persistence即为内存中的数据持久备份到磁盘文件,在服务重启后可以恢复,此模式下数据相对安全。对于persistence持久化存储,R

2018-01-15 19:16:40 218

转载 XSS CSRF SQL 注入解决方法

安全方面:xss :跨站脚本攻击csrf : 跨站请求伪造Ddos:用很多机器对网址进行请求,把服务器某方面搞挂。sql注入: 通过关键字或者非法字符的注入,实现一些对数据库一些非正常的操作 最简单的demo : 在用户登陆的时候,用户名和密码的判断,密码后加上 or 1=1如何防止sql注入: 关键字的过滤 pdo预处理 php 配置文件 php.ini 中的 ma

2017-12-28 16:31:51 544

原创 系统性能定位和优化方法

一般先排除是不是网络的原因,假如打开百度网页快的话,就是内部系统的问题,先使用top查看cpu利用率和磁盘,假如CPU高的话就是大量的SQL计算,数据库瓶颈高,慢查询导致。Throughput ,吞吐量。也就是每秒钟可以处理的请求数,任务数。Latency, 系统延迟。也就是系统在处理一个请求或一个任务时的延迟。首先,当我们系统有问题的时候,我们不要急于去调查我

2017-12-21 19:27:55 403

转载 PHP高级面试题

1.写出一个能创建多级目录的PHP函数      function createdir($path,$mode){             if (is_dir($path)){  //判断目录存在否,存在不创建                      echo "目录'" . $path . "'已经存在";              }else{ //不存在创建

2017-11-22 11:29:09 362

原创 mysql into outline 导出数据到文件 --where

//导出投资数据select *  from activity  where activity_id=62 INTO OUTFILE '/tmp/fifty_2017' //导出18服务器少量数据的sql mysqldump  -uroot -p12345678  bankofnc_batch_aleve --where="id bankofn_aleve.sql

2017-05-31 09:56:37 731

原创 微信授权登录获取用户信息的步骤

1、引导用户进入授权页面同意授权,获取code2、通过code换取网页授权access_token(与基础支持中的access_token不同)3、如果需要,开发者可以刷新网页授权access_token,避免过期4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)、地址如下:https://mp.weixin.qq.com/wiki/4/9a

2017-05-03 16:11:30 4660

转载 MySQL通过binlog来恢复数据

一、什么是binlog1、binlog基本定义:二进制日志,也成为二进制日志,记录对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存在磁盘中;二进制日志的信息:文件位置:默认存放位置为数据库文件所在目录下文件的命名方式: 名称为hostname-bin.xxxxx (重启mysql一次将会自动生成一个新的binlog)2、配置binlog,在配置文件

2017-04-19 14:46:26 540

原创 PHP文件的执行和PHP 的 autoload 机制的实现

PHP文件的执行分为两个独立的过程,第一步是将PHP文件编译成普通称之为OPCODE的字节码序列(实际上是编译成一个叫做zend_op_array的字节数组),第二步是由一个虚拟机来执行这些OPCODE。PHP的所有行为都是由这些OPCODE来实现的PHP5为这个问题提供了一个解决方案,这就是类的自动装载(autoload)机制。autoload机制可以使得PHP程序有可能在使用类时才

2017-02-07 16:11:03 260

原创 互联网分层架构

ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台,Mysql分布式中间件:Cobar,oneproxy,ElasticSearch类似sphninx,solrdocker是一个容器,类似管理进程的一个容器中间件在数据库层上和应用层之下

2017-01-12 14:13:11 602

原创 mysql主从同步原理

//主从同步实际上,你读的主库和从库都可以,但是写的肯定是进入到主库里,然后从库在读binlog,从库同步binlog文件是以二进制形式保存的主库执行 SQL 写Binglog 同步到从库执行什么叫同步,就是insert 或者update或者delete 都会操作主库,每执行一条语句,都会写入到binlog里,然后从库会读这个binlog,进行同步主库有个偏移量,每

2017-01-04 14:52:16 958 2

转载 mysql 性能优化方案 (转)

网 上有不少MySQL 性能优化方案,不过,mysql的优化同sql server相比,更为麻烦与复杂,同样的设置,在不同的环境下 ,由于内存,访问量,读写频率,数据差异等等情况,可能会出现不同的结果,因此简单地根据某个给出方案来配置mysql是行不通的,最好能使用 status信息对mysql进行具体的优化。mysql> show global status;

2016-11-16 17:31:56 285

原创 PHP中数组合并的两种方法及区别介绍

PHP数组合并两种方法及区别 如果是关联数组,如下: 复制代码代码如下:$a = array( 'where' => 'uid=1', 'order' => 'uid', ); $b = array( 'where' => 'uid=2', 'order' => 'uid desc', ); 1. array_merge,如果两个

2016-11-03 14:41:21 292

转载 php实现多线程的方式

php多线程呵呵哒,项目情况:要同步300W+的用户数据到qcloud,只能每次一个curl同步,大概每秒同步3个,算下来同步完300W数据估计要10天+,所以想到用多线程解决。方案1:用c++写多进程方案,fork多个进程出来解决。主线程负责读取/存储数据,子线程负责curl。 方案2:用php写多进程方案,同方案1.主线程读取,子线程curl。但是由

2016-10-11 09:49:13 1382

原创 PHP生成唯一订单号的方法汇总

echo date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);订单号常见的几种方式:1.利用数据库主键值产生一个自增长的订单号(订单号即数据表的主键)2.日期+自增长数字的订单号(比如:2012040110235662)3.产生随机的订单号(65865325365966)4.字母+数字字符串式,字母有包含特别意义,C02

2016-01-22 11:24:56 7160 1

转载 HTTP对外接口,如何增加签名机制

接口开发是各系统之间对接的重要方式,其数据是通过开放的互联网传输,对数据的安全性要有一定要求。为了提高传输过程参数的防篡改性,签名sign的方式是目前比较常用的方式。我这里介绍一种方式,是目前国内互联网公司常用的一种方式,其中淘宝的支付宝支付接口、淘宝开放平台接口、腾讯开放平台等应用的一种方式。 一、签名参数sign生成的方法第1步: 将所有参数(注意是所有参数),除去sign

2016-01-22 09:28:51 8091 1

转载 MySQL查询某个字段属性值重复出现的次数

在某些时候,我们需要在MySQL中查询某个字段属性值重复的次数: select category , count(*) AS count from publication_has_category     group by category order by count DESC     此查询语句返回的是publication_has_category 表中categor

2016-01-21 09:23:17 18912

转载 Linux命令经典面试题:统计文件中出现次数最多的前10个单词

使用linux命令或者shell实现:文件words存放英文单词,格式为每行一个英文单词(单词可以重复),统计这个文件中出现次数最多的前10个单词。cat words.txt | sort | uniq -c | sort -k1,1nr | head -10  主要考察对sort、uniq命令的使用,相关解释如下,命令及参数的详细说明请自行通过man查看,简单介绍下以上指

2016-01-19 15:13:04 7698

原创 PHP实现乘法表

for($i = 1;$i 9; $i++){ for($j = 1;$j $i; $j++){ echo $j."*".$i."=".$j*$i; } echo "";}

2016-01-18 10:24:19 1253

转载 探究PHP底层

探究PHP底层1、PHP是什么?PHP 指的是我们从外面看到的一套完整的系统。这听起来有点糊涂,但其实并不复杂(PHP4 内部结构图)。从功能上来分:我们可以分为三部分:1、 解释器部分(Zend 以引擎),负责对输入代码的分析、翻译和执行;2、 功能性部分(PHP功能函数以及扩展),负责具体实现语言的各种功能(比如它的函数等等);3、 接口部分

2016-01-18 10:05:12 415

转载 缓存穿透、缓存并发、缓存失效

一、缓存穿透我们在项目中使用缓存通常都是APP先检查缓存中是否存在,如果存在直接返回缓存内容,如果不存在就直接查询数据库然后再缓存查询结果返回。这个时候如果我们查询的某一个数据在缓存中一直不存在,就会造成每一次请求都查询DB,这样缓存就失去了意义,在流量大时,可能DB就挂掉了。这个问题其实经常遇到,只是没有引起足够的重视,在我想来,如果碰到这样的问题可以在封装的缓存SET和GET部

2016-01-14 21:44:24 282

原创 php 、cgi 、fastcgi 、php-fpm之间的运行原理和机制分享二

FASTCGI:WEB服务器与处理程序之间通信的一种协议,是CGI的改进方案。  FASTCGI是常驻型的CGI,它可以一直运行,在请求到达时,不会花费时间去fork一个进程来处理。Fastcgi的特点是会在一个进程中依次完成多个请求,以达到提高效率的目的,大多数Fastcgi实现都会维护一个进程池。而PHP-fpm就是针对于PHP的,Fastcgi的一种实现,他负责管理一

2016-01-12 16:36:50 2026 1

原创 php __autoad __toString __call 详解

__construct() :实例化对象时被调用;__destuct():当删除一个对象或者对象操作终止是被执行;__call():调用对象不存在方法时被调用;__get():调用对象不存在的属性时被调用;__set():设置对象不存在的属性时被调用;__toString():打印一个对象时被调用,比如echo $obj,print($obj);__clone():克隆对象

2016-01-11 21:06:25 465

原创 php二分查找算法

function binarySearch($arr,$target){$low = 0;      $high = count($arr)-1;      while($low          $mid = intval(($low+$high)/2);  #找到元素      if ($arr[$mid]) == $target) return

2016-01-11 17:08:20 489

原创 php冒泡排序算法和快速排序算法

许多人都说算法是程序的核心,算法的好坏决定了程序的质量。作为一个初级phper,虽然很少接触到算法方面的东西。但是对于基本的排序算法还是应该掌握的,它是程序开发的必备工具。这里介绍冒泡排序,插入排序,选择排序,快速排序四种基本算法,分析一下算法的思路。前提:分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中的值按照从小到大的顺序进行排序。?

2016-01-11 16:50:11 599

原创 Mysql常见水平分表方案

根据经验,Mysql表数据一般达到百万级别,查询效率会很低,容易造成表锁,甚至堆积很多连接,直接挂掉;水平分表能够很大程度较少这些压力。1.按时间分表这种分表方式有一定的局限性,当数据有较强的实效性,如微博发送记录、微信消息记录等,这种数据很少有用户会查询几个月前的数据,如就可以按月分表。2.按区间范围分表一般在有严格的自增id需求上,如按照user_id水平分表:

2016-01-11 10:38:32 1504 1

全球地区表世界上所有国家或地区的名录

精心整理世界上所有国家或地区的名录,共计246条,包含名称,人口等字段,可下载应用于数据库基础数据构建上层应用,数据格式为json,noSql数据库可以直接导入,sql数据库请自行转换结构。

2022-01-12

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除