自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

敦煌的驼铃_Blog

集笔记,分享为一体的展示平台

  • 博客(92)
  • 问答 (1)
  • 收藏
  • 关注

原创 Mac编译安装php5.4.45踩坑记录1

报错内容 /Users/niushaogang/jkbPhpPackage/php-5.4.45/main/reentrancy.c:139:23: error: too few arguments to function call, expected 3, have 2 readdir_r(dirp, entry); ~~~~~~~~~ ^/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/u

2021-05-09 18:34:17 748

原创 Go语言接口(interface{})类型断言

Go语言接口类型断言1,使用场景1.1,检查接口类型变量的值是否实现了期望的接口。 理解: * 很简单,就是检查当前接口类型的值有没有实现指定的某个具体的接口。1.2,把接口类型变量的值转换为其他类型或其他接口。 理解: * 其实很好理解,go语言空interface{}可以保存任何类型的变量, 当程序中需要使用该变量的时候,需要把接口类型变量的值转化为 具体类型,可以通过接口类型断言。 * 假如接口

2021-03-04 17:41:30 4154 2

原创 go语言接口(interface{})基础

go语言接口定义1,概览1,go语言接口和传统面向对象语言(java)的接口不太一样.2,go语言接口是隐式实现的,意思就是不需要给实现接口的类型规定必须 实现某个接口。不像传统面向对象语言需要定义implement来实现接口。3,只要某个类型实现了接口定义的所有方法,就认为这个类型实现了接口。4,接口是一种类型,也是一种抽象结构,不会暴露所含数据的格式、类型及结构2,实例type T interface { func1 (p1 string) (r1 string,

2021-03-04 17:40:54 1098 1

原创 Go语言sort包排序

Go语言sort包排序1,说明本文主要总结go语言sort包排序的基本用法,并不实现底层排序算法。本着不要重复造轮子的思想,工程开发中为了提高效率肯定是用sort包进行相关排序。这里总结下基础用法,当作以后开发的笔记。2,sort包排序三要素排序1,简介: sort包的底层实现是多种排序的算法,例如快排,插入等等。调用时并不公开,也无需定义用那种算法。 sort包内部会根据实际情况,自动选择最高效的排序算法。2,实现: 1,实现原理

2021-03-04 17:40:12 2703 2

原创 go语言struct转json

go语言struct转json1,概览1,我们使用go语言标准库的 json.Marshal() 函数将结构体转为json2,结构体转json的时候, 可给结构体设置标签来自定义成员的键名3,给结构体定义的json标签里配置里omitempty,可在该字段为空时忽略注意: 给结构体定义json标签的时候要注意的问题: `json:" "` 标签的使用总结为以下几点: 1,表示该字段被本包忽略; field string `js

2021-03-04 17:39:21 5567 1

原创 Go语言结构体基础

struct初始化1,定义结构体是一种自定义数据类型,不是变量。只是一种存储数据结构的描述。并不占用内存地址。实例化之后才会真正的占用内存地址。type Name struct { a int b string c interface}2,实例化1,定义变量实例化 var ins T //类似与用当前结构体类型定义一个变量2,new实例化 ins := new(T) ins是指针类型的结构体,*T3,取地址实例化

2021-03-04 17:38:48 312 1

原创 PostgreSQL学习系列1(编译安装PostgreSQL)

编译安装PostgreSQL1,简介:1,服务器环境: 利用docker下最小化安装的centos7镜像,编译安装PostgreSQL,且添加扩展2,PostgreSQL版本: postgresql-10.1.tar.gz 下载地址: wget https://ftp.postgresql.org/pub/source/v10.1/postgresql-10.1.tar.gz 附: https://ftp.postgresq

2020-11-13 18:43:16 464

原创 编译安装Nginx,Nginx平滑升级

编译安装Nginx,及平滑升级版本:nginx-1.8.11,安装依赖 yum install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel 2,下载 wget http://nginx.org/download/nginx-1.8.1.tar.gz3,编译安装 tar -zxvf nginx-1.8.1.tar.gz ./configure --pre

2020-11-12 23:13:03 233

原创 编译安装memcache

yum -y install cyrus-sasl-devel wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz tar -zxvf libmemcached-1.0.18.tar.gz && cd libmemcached-1.0.18 ./configure --prefix=/data/app/libmemcached -...

2020-11-07 15:59:24 97

原创 编译安装Redis

1,版本: redis-3.2.9.tar.gz 2,安装gcc yum -y install gcc gcc-c++ 3,下载源码包 wget http://download.redis.io/releases/redis-3.2.9.tar.gz 4,解压,进入目录 tar xf redis-3.2.9.tar.gz && cd redis-3.2.9 5,编译安装 ...

2020-11-07 15:56:56 93

原创 Nginx缓存

Nginx缓存缓存简介一个web项目,从服务器到客户端,主要在三个地方着手设计缓存。 1,服务器缓存,一般使用redis,memcache,file等等,缓存一些热点数据之类的。 2,代理服务器缓存,比如nginx缓存,对一些静态资源可以不用请求后端服务器,直接nginx缓存返回。 3,客户端缓存,比如浏览器缓存。 其中第一个,服务器缓存是后端开发人员涉及最多的,设计合理的缓存对整个项目相当重要。代理服务器缓存的话,后端开发人员也是需要懂的,对项目优化部署也很重

2020-07-07 14:30:34 259

原创 Nginx 动态负载均衡

Nginx 负载均衡(动态实现)1,概览1,传统配置实现的负载均衡,在加减服务器的时候,会遇到下面的问题 1:配置文件是默认地址,则需要重载配置文件。nginx -s reload 加载配置文件流程: 1,主进程通知worker进程进行重启 2,worker进程收到通知,等待现有请求处理完毕,然后进行重启 3,重启过程中的请求无法处理,会堆积一些无法处理的请求 4,重启完

2020-07-06 16:35:53 406 1

原创 Nginx平滑升级

Nginx平滑升级1,说明当已经安装了nginx,只需要升级新版本或者加模块的情况下,我们需要平滑升级。如果当前没有安装nginx,安装参数配置进去进行安装就可以了。 有两种方案: 1,条件允许的情况下,卸载nginx重装。 2,在nginx运行中,进行平滑升级或者安装模块。本文着重记录下第二种方案的执行过程。2,实现1,查看当前已安装nginx的配置参数 /usr/local/nginx/sbin/nginx -V 例如

2020-07-01 20:45:39 342

原创 Nginx负载均衡(配置文件实现,非实时动态)

Nginx 负载均衡(配置文件实现,非实时动态)1,概览负载均衡,就是单个服务无法承受访问压力的时候,通过一个入口把请求分发到不同的实际处理业务的服务上。后端业务中,可以用nginx实现上游服务器负载均衡,把请求分发给不同的服务器。也可以实现下游数据库负载均衡,比如多台mysql负载均衡,多台redis负载均衡。总之,负载均衡,就是通过相应的算法把要处理的业务分给某个服务去处理。要点就是一个入口,多个服务。nginx已经提供了负载均衡配置项,下面简单总结下2,实现在

2020-07-01 18:42:09 163

原创 Nginx rewrite模块

Nginx rewrite模块1.详细文档淘宝团队翻译的详细文档http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_rewrite_module.html2.简介ngx_http_rewrite_module模块允许正则替换URI,返回页面重定向,和按条件选择配置执行顺序: 1,server级别的定义 2,location定义的模块指令 3,如果location中重新向别的location

2020-07-01 12:58:14 207

原创 Nginx限流

Nginx限流1,文档http://tengine.taobao.org/nginx_docs/cn/docs/这是淘宝团队给的nginx模块翻译文档,所有模块都可以在这里查询2,nginx限制请求数量1,限速(比如下载文件的时候) location ~ \.php$ { #限制速度为10k limit_rate 10k; root /data/www; fastcgi_pass 12

2020-06-30 13:23:19 160

原创 漏桶算法-php,python实现

漏桶算法-php实现1,概览最近研究nginx的限流,limit_req_zone。其功能就是限制大访问量下的请求数量,防止服务器故障。核心逻辑就是: 1,给nginx配置一个处理请求速率。比如每秒处理5个请求。 2,大访问量下没有处理到的请求进行排队等待。 3,给排队的请求配置一个长度,超过了长度的请求直接返回错误 。比如设置队列长度为5,有5个请求正在排队的情况下, 下一个请求直接返回错误。比较感兴趣它的实现,查阅资料发现利用了漏桶算法。就顺便带

2020-06-26 21:55:43 677

原创 理解网络I/O

网络I/O模型1,概念:I/O,就是input/output,也就是输入输出。 比如对一个文件,一个socket 的写入/读取就是一个i/o磁盘i/o,操作文件的i/o,比如给文件写入数据,读取数据网络i/o,对一个socket连接的i/o,比如一个tcp连接,客户端和服务端的写入,读取注意:本文的I/O模型只讨论网络I/O2,五大I/O模型1总览对于网络I/O操作,抽象了五大I/O模型,分别是 1,阻塞I/O 2,非阻塞I/O 3,I/O

2020-06-18 17:00:13 302

原创 Redis主从+哨兵模式下数据安全

Redis主从+哨兵模式下数据安全1,redis主从+哨兵redis主从复制并不能实现高可用,因为万一主节点宕机,整个redis系统就会瘫痪。利用sentinel监控主从节点的时候,假如主节点出现问题,sentinel可以进行故障转移,以及转移之后通知客户端程序。但是sentinel故障转移有一定时间的延迟,并且主从复制是异步进行的。所以sentinel只能保证主从切换,保证redis主从的高可用。并不能保证数据的零丢失。嗯,说了这么多,就是想说sentinel可以保证redis主从的高

2020-06-03 11:47:23 313

原创 Redis哨兵机制配置

Redis哨兵机制配置1.哨兵机制1.什么是redis哨兵? 在redis主从复制架构中,假如master-redis宕机,整个redis系统就会瘫痪。 要解决这个问题,只有人工在slave-redis执行slaveof no one选为新的master-redis。 然后配置其他slave-redis复制新的master-redis。最后告知客户端,新的主节点地址,从节点地址。 redis哨兵,就是把上面的操作自动化完成,不需要人工执行。目的就是保证redis

2020-06-03 00:44:25 434

原创 docker容器指定ip地址

docker容器指定ip1,docker下的网络模式概览docker安装后,会默认三种网络类型。(bridge,none,host)查看dockers的网络类型docker network listbridge 桥接网络 默认网络类型,容器内不特殊指定,就用此类型。不特殊指定的话,分配的ip为172.17.0.xnone 无指定网络 容器内不指定局域网iphost 主机网络 和主机共用一个ip,会出现和宿主机争抢端口情况,非特殊需要尽量少

2020-06-02 23:23:19 4042

原创 Redis主从配置

Redis主从配置1.概览redis主从复制简单来说就是从库复制主库数据的副本,存在多个redis节点上。目的主要是数据备份,以及实现读写分离提高性能2.实现1.命令行 slaveof host port (重启失效) 临时2.启动 redis-server --salveof host port (重启生效) 临时3.配置文件 slaveof host port

2020-06-02 23:11:35 267

原创 redis数据备份(持久化)

redis数据备份(持久化)1,简介:redis持久化主要有以下两种方式来进行 RDB: 数据按照配置定期快照方式保存,默认文件名为dump.rdb redis重启自动加载 AOF: 操作命令追加日志的方式来保存,默认文件名appendonly.aof redis重启自动加载 config get dir 查找redis安装目录,也就是dump.rdb的目录。 redis重启时,dump.rdb文件放在redis安装目录,则redis会自动加载数

2020-05-13 23:23:12 284

原创 hook编程机制(php实现)

hook编程机制(php实现)最近业余时间自己写框架玩,有用到hook。百度了网上的hook博客,发现全网基本上都是几篇博客转来转去,且有些地方写的比较模糊。打算自己利用一个小小的用例完善总结一下自己理解的hook,方便网友,巩固自己。说明hook,中文翻译为钩子,编程中的钩子类似我们现实中的钩子,需要挂在东西的时候直接挂载到上面即可。程序中也是,需要运行的代码挂载到上面即可...

2018-10-31 17:02:47 3426 1

原创 php三种排序算法以及效率测试

php三种排序算法以及效率测试<?php//select$arr = range(1,10000);shuffle($arr);var_dump('select start');$start_time=microtime('get_as_float');for($i=0;$i<count($arr)-1;$i++){ $max_key = $i; fo...

2018-08-24 15:37:28 598

原创 shell脚本编程学习笔记8(XDL)——流程控制和循环

shell脚本编程学习笔记8——流程控制和循环1,if语句1,框架1,单分支: if [条件判断式] ;then program fi if [条件判断式] then program fi 注意: if语句使用fi结尾,和一般语言使用大括 号结尾不同 [ 条件判断式...

2018-04-15 18:23:20 375

原创 shell脚本编程学习笔记6(xdl)——字符串截取命令

shell脚本编程学习笔记6——字符串截取命令1,cut命令[root@localhost ~]# cut [选项] 文件名    -f 列号,表示提取第几列    -d 分隔符,按照指定的分隔符分割列    注意:默认分隔符是制表符    实例:        cut -f 2 filename   按照制表符分隔的,提取第二列        cut -f 2,3 filename...

2018-04-15 11:10:26 376

原创 shell脚本编程学习笔记7(XDL)——字符处理命令和条件判断

shell编程学习笔记——字符处理命令和条件判断1,字符处理[root@localhost ~]# sort [选项] 文件名 选项: -f: 忽略大小写 -n: 以数值型进行排序,默认使用字符串型排序 -r: 反向排序 -t: 指定分隔符,默认是分隔符是制表符 -...

2018-04-15 11:09:14 255

原创 shell脚本编程学习笔记5(xdl)——正则表达式

    shell脚本编程学习笔记5——正则表达式1,简介正则表达式,用来在文件中匹配符合条件的字符串,包含匹配。注意是文件中选择字符串,和通配符是不同的。grep,awk,sed等命令可以支持正则表达式通配符,是用来选择符合条件的文件名,完全匹配。 ls,find,cp可用通配符,不能用正则表达式2,基础正则表达式* 前一个字符匹配0次或者任意多次. ...

2018-04-14 20:25:25 230

原创 shell脚本编程学习笔记4(xdl)——Bash常见环境变量

shell脚本编程学习笔记4——Bash常见环境变量非专业运维,例如开发人员,环境变量熟悉常见的,了解不常见的即可。1,简介环境变量配置文件中主要是定义对系统的 操作环境生效的系统默认环境变量,比如 PATH、HISTSIZE、PS1、HOSTNAME等 默认环境变量。 常见环境变量路径    /etc/profile     /etc/profile.d/*.sh     ~...

2018-04-13 09:45:43 236

原创 shell脚本编程学习笔记3(xdl)——Bash变量的运算与测试

Bash变量的运算与测试1,数值运算和运算符declare申明变量类型 也就是说变量运算没有申明的时候,会以字符串形式的拼接,只有把变量声明为数值型的时候才可以运算,申明变量为数值型有三种方法方法1:declare定义[root@localhost ~]# declare [+/-][选项] 变量名 选项: - : 给变量设定类型属性 + : 取消变...

2018-04-10 22:56:09 240

原创 shell脚本编程学习笔记2(xdl)——Bash变量

    shell脚本编程学习笔记2——Bash变量1,变量简介1,计算机内存单元2,设置规则 字母数组下划线组成,不能以数字开头 Bash中,默认类型字符串型,变量类型可修改2,Bash变量规则1,变量用等号连接值,等号左右两侧不能有空格。 (Linux中空格代表命令之间的区分)2,变量的值如果有空格,需要使用单引号或双引号包括。3,在变量的值中,可以使用“\”转义符...

2018-04-10 22:54:56 223

原创 shell脚本编程学习笔记1(xdl)——shell基础与Bash基本功能()

shell脚本编程学习笔记1——shell基础与Bash基本功能1,简介:1,Shell就是一个命令行解释器,用以连接输入设别和内核。2,Shell是解 释执行的脚本语言,在Shell中可以直接调 用Linux系统命令。 3,shell种类比较多,总分为bshell和cshell。比较常用的是bshell中的Bash,本博客学习的也是linux中的Bash4,查看linux支持那种shell...

2018-04-10 22:53:38 383

原创 laravel框架学习-artisan命令行开发

laravel框架学习-artisan命令行开发简介artisan,是laravel框架内置的命令行接口。artisan命令行不仅可以提高项目开发效率,还可以自定义命令行更加的完善项目的功能,是一个非常好用的组件。本文主要总结artisan开发自定义命令行。常见命令php artisan list 列出所有命令php artisan help command 查看command命令的帮...

2018-04-01 17:42:39 546

原创 Redis缓存防止网站cc攻击

Redis缓存防止网站cc攻击介绍前面写过一片利用session防止网站cc攻击的博客,这里换另一种方法,利用redis自增来防止网站cc攻击。废话不多说,上代码简单redis操作类<?phpnamespace App\model\cache\redis;class redis{ private static $RedisObj; priva

2018-01-24 12:19:03 1389

原创 php常见设计模式(一)——单例,模版,工厂,注册树

php常见设计模式1,单例设计模式1,概要:要点:一个类最多只能产生一个对象,节省资源。实现: 1,自由化构造方法,防止此类被外部实例化 2,私有化静态属性,保存对象 3,私有化克隆方法,防止对象被克隆 4,静态方法公有化,获取对象2,代码:<?class singleton{ private static $obj = null; pri

2018-01-18 17:26:35 258

原创 mysql优化之全局查询日志

全局查询日志1,配置启用全局查询日志注意:测试环境检测sql操作情况,切忌在生产环境中开启此功能1,命令设置:(当前session有效) //开启 set global general_log = 1 //定位table set global log_output = 'TABLE';2,配置文件设置:(全局有效) mysql的配置文件m

2018-01-16 21:35:55 600

原创 mysql优化之SHOW PROFILE 定位SQL语句

mysql优化之SHOW PROFILE sql语句定位1,show profileshow profile 就是mysql提供的可以用来分析当前会话中语句执行的资源损耗情况。 可以用来sql的调优和测量值得注意的是默认情况下为关闭状态,如果开启,保存当前会话最近的15次运行结果//查询状态以及是否支持show variables like 'profi

2018-01-16 21:23:54 428

原创 ThinkPHP5框架修改——添加自己的类库

ThinkPHP5框架修改——添加自己的类库说明:博主最近的项目,需要实现数据分页。但thinkphp自带的分页不想用。想把我之前自己写的分页类加以使用。所以看了一下扩展类库的功能。既然工作完成了,想分享出来,一来自己做笔记,二来给有需要学习的朋友一个方便。1,thinkPHP运行流程从tp5/public/index.php入口文件进入,通过加载框架引导文件/tp5/thi

2018-01-16 17:17:51 1769

原创 mysql存储过程和函数(三)——存储过程和自定义函数示例,大批量测试数据的插入

mysql存储过程和函数示例,给mysql表中插入大批量测试数据1,示例表CREATE TABLE `test` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title1` varchar(64) NOT NULL, `title2` varchar(64) NOT NULL, `title3` text NOT

2018-01-15 17:19:17 395

空空如也

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

TA关注的人

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