自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Black Dragon 的个人博客

本博客内容是本人日常工作学习中的一些总结记录

  • 博客(37)
  • 收藏
  • 关注

原创 PHP如何实现百万级数据导出

| 前言公司目前有一个需求,需要对一个日增量在20万+数据量的数据表中的数据进行可自定义条件筛选的导出数据,该功能需要对多个部门进行开发使用,要保证功能可用的前提下,尽量优化体验。首先介绍一下当前可利用的资源:1、MySql - 一主库双从库。2、分布式服务器集群,选择其中一台中型机作为脚本执行载体。3、文件系统 - 可以支持上传大数据量文件。4、编程语言PHP,说实话PH...

2018-08-22 16:58:17 8783

原创 Linux 环境安装Python 3版本

Python就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。用Python开发,许多功能不必从零编写,直接使用现成的即可。除了内置的库外,Python还有大量的第三方库,也就是别人开发的,供你直接使用的东西。当然,如果你开发的代码通过很好的封装,也可以作为第三方库给别人使用。

2017-12-29 14:56:18 2322

原创 什么是四层和七层反向代理

我们先了解一下什么是代理? 回答:[proxy]代表[访问用户],此时proxy是代理。例如:在家访问xxoo网站,不希望xxoo网站trace到我们的真实ip,于是就找一个proxy,通过proxy来访问,此时proxy代表用户,网站以为proxy的ip就是用户的ip。什么是反向代理呢?回答:[proxy]代表[被访问的服务器],此时proxy是反向代理。web-server希望对用户屏蔽高可用、屏蔽web-server扩展、web-server内网ip等细节,于是就找了一个proxy隔在中间,此时p

2017-07-11 14:05:34 1643

原创 XShell上传、下载文件方法

借助XShell,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器。其中,对于sz和rz的理解与记忆我用了如下的方法(很多时候容易搞混):         sz中的s意为send(发送),告诉客户端,我(服务器)要发送文件 send to cilent,就等同于客户端在下载。         rz中的r意为received(接收),告

2017-07-03 13:40:09 875

原创 php组合模式

首先,组合模式属于结构型模式,那么什么叫组合模式呢?用组合模式有什么要求呢?使用场景是什么呢?定义:将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。模式中主要包含哪些角色呢?1.Component 是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component子部件。2.Leaf 在组合中表示叶子结点对象,叶子结点没有子结点。3.Composite 定义有枝节点行为,用来存储子部件,在Compo

2017-06-30 16:01:59 2304

原创 php适配器模式

在这个有没有对象都要高呼“面向对象”的年代,掌握面向对象会给我们带来意想不到的方便。学编程的小伙伴从开始能写几行代码实现简单功能到后来懂得将一些重复的操作组合起来形成一个“函数”,再到后来将“函数”和属性组合起来形成一个“类”。一步步走来,我们在考虑着机器运行代码效率的提高的同时也在考虑减轻程序员的工作量。 那么我们今天讲到的适配器模型更着重考虑的是什么呢?是程序员工作量。

2017-06-30 11:10:32 426 1

原创 php抽象工厂模式

无论是简单工厂模式,工厂方法模式,还是抽象工厂模式,他们都属于工厂模式,在形式和特点上也是极为相似的,他们的最终目的都是为了解耦。在使用时,我们不必去在意这个模式到底工厂方法模式还是抽象工厂模式,因为他们之间的演变常常是令人琢磨不透的。经常你会发现,明明使用的工厂方法模式,当新需求来临,稍加修改,加入了一个新方法后,由于类中的产品构成了不同等级结构中的产品族,它就变成抽象工厂模式了;而对于抽象工厂模式,当减少一个方法使的提供的产品不再构成产品族之后,它就演变成了工厂方法模式。

2017-06-29 16:52:16 3376

原创 php工厂方法模式

这种设计模式网上可以查阅的资源有很多,但是很多都是理论性太强,理解起来不是很容易,首先我们先看一下,这种模式是如何定义的?使用的场景是什么?定义:定义一个创建对象的接口,但是让子类去实例化具体类。工厂方法模式让类的实例化延迟到子类中。针对每一种产品提供一个工厂类,通过不同的工厂实例来创建不同的产品实例,在同一等级结构中,支持增加任意产品。问题引出:框架需要为多个应用提供标准化的架构模型,同时也要允许独立应用定义自己的域对象并对其进行实例化。

2017-06-29 14:04:30 3738

原创 php简单工厂模式

简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂模式包含如下角色:  Factory:工厂角色,工厂角色负责实现创建所有实例的内部逻辑  Product:抽象产品角色,抽象产品角色是所创建的所有对象的父类,负责描述所有实例所共有的公共接口  Concr

2017-06-28 16:15:39 2633 1

原创 php单例模式

单例模式,正如其名,允许我们创建一个而且只能创建一个对象的类。这在整个系统的协同工作中非常有用,特别明确了只需一个类对象的时候。那么,为什么要实现这么奇怪的类,只实例化一次?在很多场景下会用到,如:配置类、Session类、Database类、Cache类、File类等等。这些只需要实例化一次,就可以在应用全局中使用。

2017-06-28 15:52:41 3196 3

原创 php设计模式自我理解

不论是 PHP、Java还是C++编程语言,在编程的时候,我们所遇到的大部分问题,其实都已经被其他程序员一再的处理了。设计模式提取了共同问题,定义了经过测试的解决方案,并描述了可能的结果。也就是说,设计模式(Patterns)是一些可以在项目中重复使用的解决方案。但是,设计模式并非像组件那样,能被合并来构建系统的固定的解决方案,它们是解决一般性问题的通用方法。通俗来说,设计模式就是一些编程的套路,不是具体的攻防动作,是为设计更好系统设计的解决方案。

2017-06-28 15:48:05 4124

原创 开源实时日志分析ELK平台部署【入门篇】

通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心

2017-06-23 09:47:03 12975 2

原创 apache常用的两种工作模式prefork和worker

apache作为现今web服务器用的最广泛也是最稳定的开源服务器软件,其工作模式有许多种,目前主要有两种模式:prefork模式和worker模式prefork是一个非线程型的、预派生的MPM,使用多个进程,每个进程在某个确定的时间只单独处理一个连接,效率高,但内存使用比较大。worker是支持混合的多线程多进程的多路处理的MPM,使用多个子进程,每个子进程有多个线程,每个线程在某个确定的时间只处理一个连接,内

2017-06-19 10:07:05 2541

原创 【PHP】高级面试题之十万个为什么?(二)

现在也已经工作三年时间了,PHP在平时工作中天天都会使用,但是内心总是感觉差点什么,觉得自己对PHP这门语言了解的还不够,故下定决心,整理了一下平时工作所学所用,提出各种各样的问题,然后再一一的解决这些问题,加深自己对PHP这门语言的理解!!!

2017-06-19 09:42:38 2961

原创 for和foreach那个效率更高?原因是什么?

写这篇文章的原因主要是在开发过程中突然有以下几个疑问,特抽出时间深度探究一下,以加深自身对php的理解。1、作为一名phper,for和foreach循环遍历几乎每天都在使用,那么这两种遍历方式哪一种效率更高呢?2、效率高的原因是什么呢?3、原理分别是什么呢?

2017-06-16 10:47:52 39576 4

原创 【PHP】高级面试题之十万个为什么?(一)

现在也已经工作三年时间了,PHP在平时工作中天天都会使用,但是内心总是感觉差点什么,觉得自己对PHP这门语言了解的还不够,故下定决心,整理了一下平时工作所学所用,提出各种各样的问题,然后再一一的解决这些问题,加深自己对PHP这门语言的理解!!!

2017-06-14 18:35:09 3372

原创 Mysql 锁问题分析 InnoDB 锁

InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION);二是采用了行级锁。行级锁与表级锁本来就有许多不同之处,另外,事务的引入也带来了一些新问题。下面我们先介绍一点背景知识,然后详细讨论InnoDB的锁问题。

2017-05-21 20:10:43 513 2

原创 【整理】MySQL引擎问题总结

MySQL数 据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三个引擎:ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。如果技术高超,还可以使用MySQL++ API自己做一个引擎。

2017-05-21 20:02:44 307

原创 MySQL的锁机制,表锁、行锁

相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。

2017-05-19 15:04:28 519

原创 Mysql 隔离级别和锁(一)

ANSI/ISO SQL标准定义了4中事务隔离级别:未提交读(read uncommitted),提交读(read committed),重复读(repeatable read),串行读(serializable)。对于不同的事务,采用不同的隔离级别分别有不同的结果。不同的隔离级别有不同的现象。我们将逐步的去探索其中的差异是什么?

2017-05-19 14:27:17 942

原创 linux crontab & 每隔10秒执行一次

0. 背景:0.1 使用的linux是:ubuntu;0.2 使用阿里云远程主机。0.3 使用xshell链接远程主机(当然使用其他软件,或者直接在阿里云网站上连接远程主机也是可以的)1.定时执行本地脚本:1.1 连接远程主机,连接成功后,输入命令 crontab -e:1.2 打了文件,然后输入 i 进入编辑模式:1.3 输入如上命令,内容的意思是:每隔2分钟,将系统

2017-01-04 16:42:59 33757 3

原创 送给浮躁的自己

明确了方向,确定了目标,就应该用实际行动去追求你的理想。这听起来很简单,但成千上万的人们都没能做到这一点。成功属于谁?属于那些充满自信、锲而不舍的追求者。他们永远全身心地投入、永远保持着高度的热忱。当然,要做到不屈不挠并不容易,人人都有脆弱的时候,没有必要永远硬着头皮保持一副硬汉形象。有时候,你的理想会显得那么遥不可及,或是看上去只是一个无法实现的幻想。原因很可能在于你自己太急于求成了。这

2017-01-04 09:15:52 441

原创 TIME_WAIT状态的连接过多是什么原因?

1、在解决这个问题之前,需要了解什么是TCP连接数?    大家很明白TCP初始化连接三次握手吧:发SYN包,然后返回SYN/ACK包,再发ACK包,连接正式建立。但是这里有点出入/ACK包,当请求者收到SYN 后,就开始建立连接了。而被请求者第三次握手结束后才建立连接。    但是大家明白关闭连接的工作原理吗?关闭连接要四次握手:发FIN包,ACK 包,FIN包,ACK包,四

2017-01-03 16:09:51 9719 3

转载 微信JSSDK分享功能详解

本文以微信分享到朋友圈,分享给微信好友为例为参考,进行调用测试,想添加其他的功能,自行查看开发人员文档即可工欲善其事,必先利其器,好好利用下边的帮助工具,都是腾讯给开发人员的工具1.微信开发者说明文档:点击查看2.微信WEB开发者工具:Windows 64位版本:下载地址Windows 32位版本:下载地址Mac版本:下载地址3.微信JSSDK分

2017-01-03 16:04:45 7290

转载 PHP内核的存储机制(分离/改变)

前言:大部分程序员看博客可能不是太喜欢看汉字比较多的文章哈,但本文确实介绍以汉字为主描述,耐心看完,对大部分人来说肯定会有收获!或许你知道,或许你不知道,PHP是一个弱类型,动态的脚本语言。所谓弱类型,就是说PHP并不严格验证变量类型(严格来讲,PHP是一个中强类型语言),在申明一个变量的时候,并不需要显示指明它保存的数据的类型。比如:$a = 1; (整形) $a ="1

2017-01-03 16:02:38 5216

原创 学习ThinkPHP开源框架(二)

在上一节的学习中,接触到了了ThinkPHP框架的路由功能,说到路由就不得不提一下,正则路由规则了。        正则路由也就是采用正则表达式定义路由的一种方式,依靠强大的正则表达式,能够定义更灵活的路由规则。        路由表达式支持的正则定义必须以“/”开头,否则就视为规则表达式。也就是说如果采用:'#^blog\/(\d+)$#' => 'Blog/read/i

2017-01-03 13:51:07 1906

原创 学习ThinkPHP开源框架整理(一)

一、概况        thinkphp是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。thinkphpPHP的界面简洁实用,在保持   出色的性能和至简的代码同时,也注重易用性,并且拥有众多功能原创功能和特性。二、对整个框架进行分步了解    1、从基础 配置 架构

2017-01-03 13:48:11 6331

原创 PHP-Mysql 联合做分表分库操作详解

一、当Mysql数据量过大时,就会面临压力分解,这时分库分表是一个不错的解决方案,现在我们就来谈谈Mysql如何分库分表比较理想,然后再用php如何调用。1,主从复制,读写分离    对主库修改数据,查询使用从库。一主多从,来降低数据库读取压力。        ①、那么什么叫一主多从?                原理:   主数据库只用来写和更新

2016-12-27 09:44:07 4212

原创 【整理】MySQL引擎问题总结

MySQL数 据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三个引擎:ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。如果技术高超,还可以使用MySQL++ API自己做一个引擎。下面介绍几种数据库引擎:    ISAM:ISAM是一个定义明确且历经时间

2016-12-27 09:40:26 3355

原创 php慢日志学习整理

首先查看log_output参数,确认日志信息输出到操作系统文件还是数据库的表中:mysql> show variables like 'log_output';+---------------+-------+| Variable_name | Value |+---------------+-------+| log_output    | FILE  |+------

2016-12-27 09:39:06 3820

原创 Linux文件系统与磁盘分区学习重点随笔!

为什么磁盘只能容纳四个分区?四个分区是如何定义的?Linux的文件系统是如何工作的?

2016-12-22 11:46:26 3641

原创 MySQL server has gone away 问题的解决方法(查询的结果集超过 max_allowed_packet )

mysql出现ERROR : (2006, 'MySQL server has gone away') 的问题意思就是指client和MySQL server之间的链接断开了。造成这样的原因一般是sql操作的时间过长,或者是传送的数据太大(例如使用insert ... values的语句过长, 这种情况可以通过修改max_allowed_packed的配置参数来避免,也可以在程序中将数据分批插

2016-09-08 15:30:59 2324

转载 Linux源代码目录结构说明

*该文转载于http://blog.csdn.net/u010098331/article/details/52021110Linux源代码目录结构说明 系统核心组件: Linux源代码目录结构示意图: 图:linux源代码目录结构示意图(一)   scripts目录: 该目录中不包含任何核心代码,该目录下存放了用来配置内核的脚本和应用程序源码。 (二)  

2016-07-25 11:28:23 2574

原创 redis安装成功,外部无法访问问题?

1、redis安装成功,外部无法访问问题?    原因:redis所在端口的监听地址为127.0.0.1  导致外部网络无法连接     解决方法:修改redis.conf 配置文件  bind 127.0.0.1  为 bind 101.200.166.125(真是ip地址)    解决过程使用的命令总结:    ①查看指定端口的监听状态       

2016-07-22 16:25:42 28665 5

原创 linux下安装redis----查阅资料整理总结

1、下载源代码http://code.google.com/p/redis/downloads/list 下载Redis-1.2.6.tar.gz 将下载包拷贝到/usr/local/webserver/redis-1.2.6/下或者http://redis.io/下载redis-2.4.152、安装tar -zxvf redis-1.2.6.tar.

2016-07-22 16:16:51 9076

原创 Redis和Memcached的区别---查询资料整理;

Redis的作者Salvatore Sanfilippo曾经对这两种基于内存的数据存储系统进行过比较:Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GET/S

2016-07-22 15:59:22 5119

转载 提高PHP代码质量的36个技巧

1.不要使用相对路径常常会看到:1require_once('../../lib/some_class.php');该方法有很多缺点:它首先查找指定的php包含路径, 然后查找当前目录.因此会检查过多路径.如果该脚本被另一目录的脚本包含, 它的基本目录变成了另一脚本所在的目录.另一问题, 当定时任务运行该脚本, 它的上

2016-04-17 19:25:29 506

空空如也

空空如也

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

TA关注的人

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