自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(151)
  • 资源 (3)
  • 收藏
  • 关注

原创 Golang 每日一库

github 项目地址https://github.com/darjun/go-daily-lib

2021-06-15 15:02:04 392

原创 Golang 依赖注入

1. 手动实现依赖注入package mainimport "fmt"type A struct { B *B}type B struct { Did int}func main() { var a A b := B{Did: 1} fmt.Println(b.Did) a.B = &b fmt.Println(a.B.Did)}2.

2021-06-09 16:30:12 21997

原创 Golang动态调用方法

main.gopackage mainimport ( "lenu/call" "reflect")type FuncMapsType map[string]reflect.Valuefunc main() { _, _ = CallFunc("Hello", "执行Hello方法") _, _ = CallFunc("World", "执行World方法")}func CallFunc(tableName string, args ... interface{}) (r

2021-06-08 15:19:39 23646 1

原创 Golang实现定时任务

package mainimport ( "github.com/robfig/cron/v3" "log")func main() { c := cron.New() _, _ = c.AddFunc("@every 5s", timer) c.Start() select {}}func timer() { log.Println("每5s执行一次")}

2021-06-08 14:58:31 23115

原创 深入理解 PHP 的 7 个预定义接口

深入理解预定义接口场景:平常工作中写的都是业务模块,很少会去实现这样的接口,但是在框架里面用的倒是很多。1. Traversable(遍历)接口该接口不能被类直接实现,如果直接写了一个普通类实现了该遍历接口,是会直接报致命的错误,提示使用 Iterator(迭代器接口)或者 IteratorAggregate(聚合迭代器接口)来实现,这两个接口后面会介绍;所有通常情况下,我们只是会用来判...

2020-04-16 23:05:42 23354

转载 MySQL 索引为什么要选择 B+ 树

前言:每天都在跟 mysql 打交道,你知道执行一条简单的 select 语句,都经历了哪些过程吗?首先,mysql 主要是由 server 层和存储层两部分构成的。server 层主要包括连接器、查询缓存,分析器、优化器、执行器。存储层主要是用来存储和查询数据的,常用的存储引擎有 InnoDB、MyISAM,MySQL 5.5.5 版本后使用 InnoDB 作为默认存储引擎。连接器...

2019-07-03 14:22:49 286

转载 微服务架构下的鉴权,怎么做更优雅?

从单体应用架构到分布式应用架构再到微服务架构,应用的安全访问在不断的经受考验。为了适应架构的变化、需求的变化,身份认证与鉴权方案也在不断的变革。面对数十个甚至上百个微服务之间的调用,如何保证高效安全的身份认证?面对外部的服务访问,该如何提供细粒度的鉴权方案?本文将会为大家阐述微服务架构下的安全认证与鉴权方案。一、单体应用 VS 微服务随着微服务架构的兴起,传统的单体应用场景下的身份认证...

2019-07-03 11:23:07 5857

转载 控制反转,依赖注入概念理解

我们先来介绍控制反转,依赖注入,这两个概念我们可以认为他们表达的同一种意思,举个通俗的例子,我们用户登录需要提供记录日志的功能,可以选择使用文件或者数据库。下面我们用代码来演示。// 定义写日志的接口规范interface log{ public function write(); }// 文件记录日志class FileLog implements Log{ ...

2019-07-03 11:11:18 402

原创 PHP 设计模式(全)

PHP设计模式 :https://learnku.com/docs/php-design-patterns/2018PHP之道 :https://laravel-china.github.io/php-the-right-way/

2019-07-02 16:40:27 454

原创 mysql 分组取指定条数的数据

在数据条数不足的情况未测试:表结构如下:刘德华,周润发,未命名三个分组,每组三条数据实现三个分组,每组取一条数据SQL如下:SELECT *FROM ( ( SELECT g.id, g.project_id, g.group_name, g.group_user_id, ug.user_name FROM...

2019-06-26 17:53:55 2075

转载 PHP文件缓存实现

有些时候,我们不希望使用redis等第三方缓存,使得系统依赖于其他服务。这时候,文件缓存会是一个不错的选择。我们需要文件缓存实现哪些功能:功能实现:get、set、has、increment、decrement、delete、flush能够在较短的时间内返回数据支持key过期    为了避免一个文件内的数据过大,造成读取文件的时候延迟较高,我们采用一个key-value一个文件...

2019-01-02 10:37:02 1720 1

转载 深入理解控制反转(IoC)和依赖注入(DI)

友情提示:本文有点长,但绝对都是干货,请耐心读完,必有收获!容器,字面上理解就是装东西的东西。常见的变量、对象属性等都可以算是容器。一个容器能够装什么,全部取决于你对该容器的定义。当然,有这样一种容器,它存放的不是文本、数值,而是对象、对象的描述(类、接口)或者是提供对象的回调,通过这种容器,我们得以实现许多高级的功能,其中最常提到的,就是 “解耦” 、“依赖注入(DI)”。本文就从这里开...

2018-12-27 14:52:19 462

原创 php session_set_save_handler 函数的用法

<?php /**@filename: session.class.php @description: 数据库保存在线用户session,实现在线用户功能! @notice: session过期时间一个小时,因为我们的站点是使用cookie(有效时间是1小时)登录。 因此我们只记录用户登录的时间...

2018-12-25 18:13:32 456

转载 php-fpm的配置和优化

我在前面几篇中,很详细的讲述了php-fpm的各种介绍,和安装。今天来看一下它的配置文件php-fpm的各种配置以及一些常见的优化。php-fpm的安装目录下面是我的平时的环境搭建php的各种安装目录,大家的基本也差不多。centos等linux平台 /usr/local/php/php /usr/local/php/etc/php.ini /usr/local/php...

2018-11-05 14:35:25 770

转载 php-fpm的安装和启动

在前面我学习过了php中的mod_php模式和mode_fastcgi和php-fpm模式:地址,中大致的讲述了几种模式的区别,也明白了php-fpm是fastcgi模式的管理器。今天就来看下php如何安装php-fpm,以及运行。安装 php-fpm我的机器是centos 6.2 之前就已经安装过了php 5.4.11,PHP在 5.3.3 之后已经讲php-fpm写入php源码核心了。...

2018-11-05 14:34:44 5472

转载 php中fastcgi和php-fpm是什么东西

最近在研究和学习php的性能方面的知识,看到了factcgi以及php-fpm,发现我对他们是少之又少的理解,可以说几乎是一无所知,想想还是蛮可怕的。决定仔细的学习一下关于这方面的知识。参考和学习了以下文章: 1. mod_php和mod_fastcgi和php-fpm的介绍,对比,和性能数据 2. 实战Nginx_取代为了如何一步步的引出fastcgi和php-fpm,我先一点一点的...

2018-11-05 14:33:51 252

原创 对比PHP对MySQL的缓冲查询和无缓冲查询

关于缓冲查询和无缓冲查询MySQL的客户端有两种类型的查询:缓冲查询:将接收查询的结果并把他们存储在客户端的缓存中,而且接下来获取行记录的请求仅仅从本地内获取。(1)优点:可以在结果集中自由地移动“当前行”的指针,这样很容易找到,因为结果是存在客户端的。(2)缺点:需要额外的内存来存储这些结果集,而且需要大量的内存,另外,php中用来运行查询的函数会一直到所有的结果都接收才会返回值。无缓...

2018-11-05 10:24:46 1074

转载 MySQL回滚到某一时刻数据的方法

对于有归档日志的数据库来说,原理上都具备全库回滚到之前某一时刻的能力。在这方面最好用的Orale数据库,使用Oracle数据库的RMAN工具,可以方便的设置全备,增备保留的时间和自动清理,RMAN自己记录之前做过哪些备份操作,有一份备份列表,所以可以全自动的根据全备、增备、归档日志进行回滚,只需一条命令。这个可以参考我之前写的博客Oracle Database 12c RMAN全量+增量备份+归...

2018-10-17 19:54:49 2837

转载 PHP JWT token加密

前言关于jwt的介绍这里就不阐述了,相信你已经在网上看到了N篇介绍文章(你丫的讲那么多介绍到是告诉我怎么样呀!),关于php使用jwt的相关的使用却少的可怜,有的也看的模模糊糊,于是就自己整理,也方便自己以后进行查看。jwt版本php中jwt有3个版本:2.0、2.2、3.0。so!我们选择的是3.0的版本。别问为什么,你买电子产品都是买新不买旧呢。(说到这,想到了即将到手的iphon...

2018-08-29 17:54:16 2798

转载 PHP 垃圾回收与内存管理指引

引用计数在 PHP 5.2 及以前的版本中,PHP 的垃圾回收采用的是 引用计数 算法。引用计数基础知识引用计数基础知识php 的变量存储在「zval」变量容器(数据结构)中,「zval」属性包含如下信息:当前变量的数据类型; 当前变量的值; 用于标识变量是否为引用传递的 is_ref 布尔类型标识; 指向该「zval」变量容器的变量个数的 refcount 标识符(即这...

2018-08-09 14:49:59 276

转载 深入剖析 Web 服务器与 PHP 应用之间的通信机制 – 掌握 CGI 和 FastCGI 协议的运行原理

身为一名使用 PHP 语言开发后端服务的程序猿,我们每天都和 PHP 以及 Web 服务器产生无数次的亲密接触。得益于它们,我们才能够如此快速的构建出令人陶醉的 Web 产品。尽管我们已经和 Web 服务器和 PHP 建立起深厚的友谊,但你知道它们之间为何能够配合的如此默契么?这一切都需要从 CGI(Common Gateway Interface:通用网关接口)协议说起。但是请不要对 C...

2018-08-09 14:47:13 305

原创 浅谈MySQL查询优化

 本文从以下几方面对MySQL优化进行分析获取有性能问题的SQL 通过慢查询日志获取有性能问题的SQL 慢查询日志内容 实时获取有性能问题的SQL SQL预处理解析 如何确定查询消耗时间 优化特定的SQL一丶获取有性能问题的SQL通过用户反馈获取存在问题的SQL,此用户一般为测试人员,例执行某一个查询非常慢(不推荐) 通过慢查询日志获取存在性能问题的SQL 实时获取存...

2018-07-22 23:40:19 559

原创 PHP二维数组(或任意维数组)转一维数组

目录1 array_reduce函数法2 array_walk_recursive函数法3 array_map函数法假设有下面一个二维数组:$user = array( '0' =&gt; array('id' =&gt; 100, 'username' =&gt; 'a1'), '1' =&gt; array('id' =&gt; 101, 'username' =&gt; 'a...

2018-07-16 11:58:06 3058

原创 Nginx安装与配置(包括解决403错误,站点配置,_STORAGE_WRITE_ERROR_,No input file)

1.yum 安装nginxnginx -v #安装前检查yum install nginx -y #yum安装nginx2.启动nginx并设置开机自启动 systemctl start nginx.service #启动nginx systemctl stop nginx.service #关闭nginx systemctl enable nginx.service #设置ng...

2018-06-13 16:43:50 860

转载 LNMPA的搭建

LAMP,即linux+apache+mysql+phpLNMPA,即linux+nginx+mysql+php+apacheps:博主的文章,也可以说是笔记,篇幅之间都是有关联的。之前配置的是LAMP,其中linux和mysql都是用的阿里云产品apache和php的安装配置前面都有单独的篇幅讲解。nginx和apache的区别,可以去百度,博主只能稍微提一下nginx用来处理静态服务,包括静态...

2018-06-08 13:52:21 1808

原创 千万级MySQL分页优化

对于只有几万条数据的表这样做当然没问题,也不会在用户体验上有何不妥,但是要是面对成百万上千万的数据表时,这样就不足以满足我们的业务需求了,如何做到对千万级数据表进行高效分页?首先要学会使用 explain 如果你还不会使用 explain 分析SQL语句 传送门 http://blog.itpub.net/559237/viewspace-496311一丶合理使用 mysql 查询缓存 结合复合索...

2018-06-06 12:03:27 9232 24

转载 ThinkPHP5.0.x框架SQL注入

漏洞简述尽管ThinkPHP 5.0.x框架采用了参数化查询方式,来操作数据库,但是在 insert 和 update 方法中,传入的参数可控,且无严格过滤,最终导致本次SQL注入漏洞发生。ThinkPHP基础知识在进行漏洞分析之前,我们需要了解一下ThinkPHP基础知识,这里仅介绍对本次漏洞分析有帮助的部分。ThinkPHP5.0的 目录结构thinkphp 应用部署目录├─applicati...

2018-06-05 13:46:03 14042

转载 MySQL + Atlas 部署读写分离

阅读目录1. 数据库用户配置2. 主从数据库连接3. Atlas配置4. 读写分离测试 序章Atlas是360团队弄出来的一套基于MySQL-Proxy基础之上的代理,修改了MySQL-Proxy的一些BUG,并且优化了很多东西。而且安装方便。配置的注释写的蛮详细的,都是中文。英文不好的同学有福了。Atlas官方链接: https://github.com/Qihoo360/Atlas/blob/...

2018-06-04 13:58:48 549

原创 mysql分表

概述:当一个表的数据很大,比如200G,这时太大,我们只靠索引也不好使了,这时我们需要分表和分区处理。分表有两种形式(水平分表和垂直分表)。一、水平分表  核心思想:把一个大表,分割N个小表,小表和大表结构一样,只是把数据分散到不同的表中。  1.1 简单例子:比如说是通过ID直接登录(例如QQ号),可以直接使用下面的例子        每次登录验证的时候只要把传过来的id除3取模,根据模可以找到...

2018-06-04 12:35:13 336

转载 48 条高效率的 PHP 优化写法

1 字符串1.1 少用正则表达式能用PHP内部字符串操作函数的情况下,尽量用他们,不要用正则表达式, 因为其效率高于正则。没得说,正则最耗性能。str_replace函数要比preg_replace快得多,strtr函数又比str_replace来得快。有没有你漏掉的好用的函数?例如:strpbrk()、strncasecmp()、strpos()、strrpos()、stripos()、strr...

2018-06-01 13:53:52 288

原创 centOS 7 安装redis

如果使用yum 安装的redis不会是最新版的redisyum install redis如果要安装最新的redis,则需要安装Remi的软件源,官网地址:http://rpms.famillecollet.com/yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm执行安装:yum --enabler...

2018-05-29 10:19:12 319

原创 PHP结合redis实现高并发下的抢购、秒杀功能

抢购、秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少("超卖"问题)对于第一个问题,已经很容易想到用缓存来处理抢购,避免直接操作数据库,例如使用Redis。重点在于第二个问题常规写法:查询出对应商品的库存,看是否大于0,然后执行生成订单等操作,但是在判断库存是否大于0处,如果在高并发下就会有问题,导致库存量出现负数&lt;...

2018-05-28 10:46:35 412

原创 MySQL通过binlog进行数据恢复

采用binlog恢复数据的两种情况1.数据库丢失或者drop    1)恢复系统自动备份    2)用binlog恢复系统备份时间到此刻的的数据(drop操作需要binlog删除drop记录)2.误操作update,delete    1)恢复系统自动备份    2)在binlog日志中删除误操作的操作语句,执行binlog恢复其他的数据或者在binlog中找到误操作的记录,用脚本回滚生成sql,...

2018-05-23 15:49:48 602 1

原创 百万级并发mysql架构

1 服务器环境  1.1 操作系统要求  操作系统环境  建议Centos 7 64位  1.2 系统环境要求  mysql-5.1.52(glibc23)(以上)  apache2.2.0(以上)  Amoeba for Mysql 1.3.1-BETA(以上)  memcached-1.4.5(以上)  Keepalived-1.1.20(以上)  Lvs-1.2.1(以上)  2 服务器架构...

2018-05-22 17:23:10 3511

原创 centOS 7下安装redis详细教程

第一步:下载redis安装包wget http://download.redis.io/releases/redis-4.0.6.tar.gz[root@iZwz991stxdwj560bfmadtZ local]# wget http://download.redis.io/releases/redis-4.0.6.tar.gz--2018-05-21 22:20:12-- http://d...

2018-05-22 09:37:30 2285 1

转载 PHP和Redis实现在高并发下的抢购及秒杀功能示例详解

抢购、秒杀是平常很常见的场景,面试的时候面试官也经常会问到,比如问你淘宝中的抢购秒杀是怎么实现的等等。抢购、秒杀实现很简单,但是有些问题需要解决,主要针对两个问题:一、高并发对数据库产生的压力二、竞争状态下如何解决库存的正确减少("超卖"问题)第一个问题,对于PHP来说很简单,用缓存技术就可以缓解数据库压力,比如memcache,redis等缓存技术。第二个问题就比较复杂点:常规写法:查询出对应商...

2018-05-21 14:58:43 982

原创 PHP实现精确统计在线人数功能

HP对session对象的封装的很好,根据HTTP协议,每个范围网站的访客都可以生成一个唯一的标识符12echo session_id();//6ed364143f076d136f404ed93c034201&lt;br /&gt;这个就是统计在线人数的关键所在,只有有这个session_id 也就可以区分访问的人了。因为每一个人都不同。接下来,是怎么把session变量里面的值存到数据库里面去,...

2018-05-11 21:17:57 5678

原创 详解TP3函数之M方法和R方法

本文给大家介绍ThinkPHP3函数详解之M方法和R方法,M方法用于实例化一个基础模型类,而R方法用于调用某个控制器的操作方法。首先给大家介绍ThinkPHP函数详解:M方法M方法用于实例化一个基础模型类,和D方法的区别在于:1、不需要自定义模型类,减少IO加载,性能较好;2、实例化后只能调用基础模型类(默认是Model类)中的方法;3、可以在实例化的时候指定表前缀、数据库和数据库的连接信息;D方...

2018-05-11 11:11:08 4160

原创 详解ThinkPHP5 instance的实现

本文主要介绍了ThinkPHP5 instance 的简单实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。希望对大家有所帮助。最近学习 ThinkPHP5,第一次看到 TestClass::instance() 就能创建 TestClass 实例的方法。感到很好奇,翻阅 ThinkPHP 的源代码,大体理解了 它的 设计思想,非常的先进。老规矩,直接上代码:123456789101112...

2018-05-11 11:08:20 2446

原创 MySQL搭建主从服务器与读写分离的实现

一 丶为什么要搭建主从服务器和实现读写分离 1.总结起来就一点,实现并发吞吐和负载能力。通过搭建主从服务器实现读写分离,提高MySQL的负载能力 2.主从的基本实现原理 (本例 主服务器ip: 192.168.2.187,后面简称 master;从服务器ip: 192.168.2.199 后面简称 slave) ⑴ 主(master)服务器配置 bin-log ⑵ 从(slave)服务器配置 ...

2018-05-09 17:43:10 1818

php5.4版本ffmpeg扩展

如果需要在本地安装该扩展,windows是32的话需要把其他文件拷贝到Windows/system32文件夹下,64位系统放在Windows/SysWOW64文件夹下面

2018-10-30

PHP获取程序执行时间

类似于tp3.2中的BEGIN('start'),BEGIN('end') 。封装成了一个小类 ,可以很好的检测代码执行时间

2018-06-06

laydate日历插件

一款JS日历控件特效代码layDate,直接引用到需要的代码中即可

2017-09-30

空空如也

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

TA关注的人

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