自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Gavin_new的博客

一个在技术领域逐渐成长的孩子....

  • 博客(80)
  • 资源 (3)
  • 收藏
  • 关注

原创 redis源码阅读之数据结构(浅易说明)

好一段时间只在有道笔记上上写笔记而写博客了,最近忽然发现,只写笔记的话容易造成信息丢失,所以想把笔记的内容整理成博客留存下来。 redis是一个内存型nosql数据库,之前阅读其源码,就感觉到作者的牛逼之处,源码中的数据结构透露出对内存的极高的利用率(ps:我看的是redis 5.05版本的源码)。 从redis给出的用法知道,redis顶级的对象是db,然后下面存储了string、hash、list、set、sortset、stream(少有人用)这几种数据;...

2020-08-30 23:07:10 371 1

转载 golang中传递中值传递以及指针传递

本文大部分转自【http://colobu.com/2017/01/05/-T-or-T-it-s-a-question/】在编程语言深入讨论中,经常被大家提起也是争论最多的讨论之一就是按值(by value)还是按引用传递(by reference, by pointer),你可以在C/C++或者Java的社区经常看到这样的讨论,也会看到很多这样的面试题。对于Go语言,严格意义上来讲,只有一种传...

2018-05-10 15:47:08 9394

原创 php-fpm生产环境下的调试strace

以前,在对php进行性能问题分析时,主要是依赖xhprof对php性能瓶颈进行分析,而这需要侵入代码。今天遇到了需要在生产环境下找出fpm问题的需求,这种情况下,在网上查找了下方案,发现了strace工具。strace是个功能强大的Linux调试分析诊断工具,可用于跟踪程序执行时进程系统调用(system call)和所接收的信号,尤其是针对源码不可读或源码无法再编译的程序。指令用法:strace...

2018-04-14 16:41:17 2198

原创 golang arm交叉编译

流程:1. 设置golang的编译环境变量2. 编译golang代码shell指令如下:env GOOS=linux GOARCH=arm go build go文件

2018-04-13 11:21:35 3250

原创 加权轮训算法--最大公约数法

在做灰度的时候,需要用到加权轮训算法,于是选择了最简单的最大公约数法,在这里做下记录(下面内容为摘抄原文,并修正部分文字)大体方法:这种算法的原理是:在服务器数组S中,首先计算所有服务器权重的最大值max(S),以及所有服务器权重的最大公约数gcd(S)。         index表示本次请求到来时,选择的服务器的索引,初始值为-1;current_weight表示当前调度的权值,初始值为max...

2018-04-11 14:59:03 1413

转载 【转】redis内存模型

文章写得很好,由于原文不能复制,故只能截图做笔记。原文地址:https://news.html5.qq.com/share/5641006391504052768?url=http%3A%2F%2Fkuaibao.qq.com%2Fs%2F20180409B1X8WY00&ch=060000&qbredirect=&share=true&sc_id=rT101bC...

2018-04-10 21:59:45 324

原创 golang-glide在win10下出现“Unable to export dependencies to vendor directory: Error moving files”错误解决

找到文件github.com\Masterminds\glide\path\winbug.gofunc CustomRename(o, n string) error { // Handking windows cases first if runtime.GOOS == "windows" { msg.Debug("Detected Windows. Moving files usin...

2018-04-08 15:08:27 1342

原创 Golang协程机制以及异常处理

golang之所有好用,是因为其将以前编程中常用的而且晦涩难用的异步任务以及信号机制,以傻瓜式的语法给封装了一层。接触了golang已经有一段时间了,现在回头再看一下golang的协程机制,顺便做个总结。一. 协程机制详情可查看这篇论文《Golang协程调度器详解》系统内核可以理解成一个经验丰富的管家,能把以前无系统下的各种任务(包括各种异步任务同步任务)给处理的很得当。其基本思想就是建造了进程对...

2018-04-02 14:19:07 6830

原创 mysql在多进程下出现断开连接(MySQL server has gone away错误)笔记

今天进行文件迁移,主进程负责查数据库,并创建多个子任务,而子任务以进程的方式异步执行,如图所示: 但是,随后发现程序开始后不就,主进程在查询数据库时,报MySQL server has gone away 错误;查了下资料,发现在创建子进程时,父子进程共享同一个socket资源,虽然进程表中有两份socket描述符,但实际上在内核里映射的是同一个socket资源链接,如图:再看下上图中的程序,当任...

2018-03-09 16:14:47 2264

转载 centos7 Mariadb创建多实例

为了对mycat做实验,于是创建多实例Mariadb,做以下笔记:创建多实例数据库文件夹:[root@linux-node1 ~]# mkdir /home/multiMysql[root@linux-node1 ~]# mkdir /home/multiMysql/{etc,socket,bin,datadir}[root@linux-node1 ~]# mkdir /home/multiM...

2018-02-08 16:26:52 675

原创 General error: 2006 MySQL server has gone away

可能有很多人遇到过标题中的这个错误。之前我们也经常遇到,一直没有认真找是什么原因。今天花了些时间google了下。原来,这个问题并不是MySQL的bug, 它本质是一个配置问题, 解决起来也不麻烦。在Mysql客户端中, 通过 SHOW VARIABLES; 语句可以查看Mysql系统变量。这些变量中名为 wait_timeout 的变量的值过于小,就是造成这个错误的根源。这个变量的含义是:如果在该

2017-11-11 16:56:34 790

转载 探讨Docker容器中修改系统变量的方法[转]

转自http://tonybai.com/2014/10/14/discussion-on-the-approach-to-modify-system-variables-in-docker/探讨完Docker对共享内存状态持久化的支持状况后,我将遗留产品build到一个pre-production image中,测试启动是否OK。很显然,我过于乐观了,Docker之路并不平坦。我收到了shmget

2017-10-28 15:09:30 8738 1

原创 curl_exec和wget执行太慢,IPv6惹的祸

这几天在容器中运行curl时,发现了都要5秒的延时,抓包显示,域名解析服务器访问和目标服务器连接都很正常,但是curl在发起域名解析后,硬是等待5秒后才执行服务请求。找了下资料,发现如果系统开启了ipv6支持,则curl优先进行ipv6的域名解析,失败后才进行ipv4的解析。而解析失败重试时间被限制在5秒,于是就出现了这个延时。解决方法:curl -4 baidu.com #强制要求使用ipv4地

2017-10-28 15:00:53 2109

原创 Golang中的下划线

Golang中的下划线

2017-09-07 14:20:41 1463

原创 memcache数据的同步读写

作为缓存服务,memcache提供了curd的基本查询,但基于业务需要,memcache需要进行数据同步的造作,实现方法如下:悲观锁:使用add方法加锁以达到数据原子性操作;乐观锁:使用gets命令获取键值对同时获取一个唯一标识,再通过cas命令更新数据,若失败表示数据已被修改;

2017-06-20 16:41:29 1742

原创 CSRF跨站请求伪造

前面说到XSS跨站脚本攻击,现在来个复杂度更高一点的CSRF跨站请求伪造;首先说一下RSRF的几个要点: 1. RSRF是通过各种方法(站内发布链接,qq邮箱发布链接等),让登录用户触发请求,在用户不觉察的过程中对用户数据进行篡改,进而实现攻击; 2. 通过XSS可以获取到用户的session_id,进而欺诈服务器,因此xss只是rsrf的实现途径之一;防止方法: 1. 对于某些敏感的请求,禁

2017-06-20 14:27:27 594

原创 数据分片以及全局id的生成

一. 数据分片在分布式存储系统中,数据需要分散存储在多台设备上,数据分片(Sharding)就是用来确定数据在多台存储设备上分布的技术。数据分片要达到三个目的:分布均匀,即每台设备上的数据量要尽可能相近;负载均衡,即每台设备上的请求量要尽可能相近;扩缩容时产生的数据迁移尽可能少。但是数据分片后,各个数据库如何维护记录的唯一性id呢?二. 全局唯一性id的生成1.mogodb的唯一性id生成算

2017-06-20 14:09:41 880

转载 父进程退出后如何通知子进程退出

Linux 中创建子进程是相当方便的,通过fork调用即可。当子进程退出时,要给父进程发送SIG_CHLD信号,是为了父进程回收子进程的资源,方便管理的目的。 但是当父进程退出后,一般是不会通知子进程的,父进程会将自己的所有子进程过继给init进程。但是,在实际的项目中,我们有这样的需求: 如果父进程退出后,希望能通知子进程退出。我们知道,可以利用进程间通信机制,在父进程退出前主动发送信号或pipe

2017-06-18 15:26:11 7413

原创 PHP的错误笔记

运行期间报错: 1. deprecated:不推荐、不建议异常,如使用了过时的函数; 2. notice:语法存在不当异常,如使用了未定义变量; 3. warining:语法中出现很不适当的异常,如函数参数比匹配造成达不到预期结果; 4. fetal error: 致命错误,直接导致脚本流程终结;编译期间报错: 1. prase error:编译时遇到语法错误;修改报错级别: 1: p

2017-06-11 15:00:50 366

转载 【转-来自鸟哥】关于 PHP 的编译和执行分离

这是来自 @雪候鸟 博客的文章,内容如下: 关于让”PHP的编译和执行分离”这个问题, 一直有人提, 也一直有人尝试. 提的人认为编译执行分离以后, 可以得到性能提升, 可以做代码保护等.我本身并不是对这个特性很感冒, 因为这里面存在一个投入产出比. 让我来给大家解释一下, 然而不管怎么样, 在最后我会给大家提供一种方案来实现这个功能.1. PHP的编译并不是很耗时我之前的文章也介绍过, PHP

2017-06-07 10:52:50 1383

转载 五分钟理解一致性哈希算法(consistent hashing)

转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应

2017-06-05 15:34:22 680

原创 PHP防SQL注入记录

mysql注入历来是php的一个问题,目前主要有以下几种方案: (1)addslashes函数 (2)mysql_escape_string 和mysql_real_escape_string 函数(将被废弃或已被废弃) (3)magic_quotes_gpc自动过滤输入(由于效率问题,5.4以后已被强制关闭,无法开启) (4)使用pdo/mysql驱动查询,消除注入看了网上的几篇博文,大致

2017-06-05 12:18:59 597

原创 XSS攻击以及PHP预防

XSS又称CSS,全称Cross SiteScript(跨站脚本攻击), XSS攻击类似于SQL注入攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性。其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。如,盗取用户Cookie信息、破坏页面结构、重定向到其它网站等。

2017-06-01 20:25:40 623

转载 PHP session回收机制【转】

由于PHP的工作机制,它并没有一个daemon线程,来定时地扫描session信息并判断其是否失效。当一个有效请求发生时,PHP会根据全局变量 session.gc_probability/session.gc_divisor(同样可以通过php.ini或者ini_set()函数来修改) 的值,来决定是否启动一个GC(Garbage Collector)。默认情况下,session.gc_proba

2017-06-01 20:10:56 630

原创 Session剖析

前一篇,理了一下cookie的原理,现在大概总结一下session的原理;一. 为什么使用session为了实现在http协议下有状态的业务逻辑,就衍生出了cookie机制,cookie存放在http的消息头里,每次访问,服务器将会将cookie的操作放在消息头里,然后浏览器更改cookie信息(当然浏览器也可以更改cookie),最终cookie只存在于http报文以及浏览器缓存中;但是,这涉及到

2017-05-22 15:20:14 338

原创 Cookie剖析

cookie,英文为甜品的意思,在http无状态连接中,利用cookie可以实现需要跟踪状态的业务;一. Cookie的组成name:键值value:值expires: 超时时间Path:cookie所在的目录,只能访问自己目录或父目录的键值Domain:cookie所在的域,默认为请求的地址SECURE:在Cookie中标记该变量,表明只有当浏览器和Web Server之间的通信协议为

2017-05-22 15:06:27 402

原创 goLang引入自定义包

看完golang的基本语法后,为了模块化编程,试用了下golang的包管理,结果真踩了几个坑,总结一下吧。一. 设置$GOPATH环境变量golang和C或php不一样,不会自动查找当前路径下的文件,必须先在$GOAPTH里添加自己工程的路径;二. 自定义包里面对外提供的API函数,首字母必须大写 如:func api() string {return “hello api!”}则不能被包外的函数

2017-05-19 15:38:55 13325 1

原创 发布一个轻量级的PHP实现的WEBSOKCET引擎-EZ_WS

利用零散的时间,用php这门语言写了个轻量级的WebSocket引擎-EZ_WS,期间也在这世界上最好的语言上踩过几个坑,不过坑踩过了,东西也出来了,现分享给大家;GitHub网址:https://github.com/GavinLiu168/ez_ws以下是说明文档EZ_WS是easy-websocket的意思,旨在提供一个websocket的php版本引擎,让php开发人员更加快速的使用webs

2017-05-11 11:55:54 2201 1

原创 PHP类文件的动态加载(静态引入文件的坑)

在写一个开源框架,忽然发现php在多进程时执行的逻辑出现异常,导致子进程无法执行信号处理函数。经过一系列debug,发现php文件的静态引入造成了bug的发生,而使用动态加载类文件将会有效的解决这个bug,具体代码如下:<?phpdefine("TOP_AUTOLOADER_PATH", dirname(__FILE__));class Autoloader{ /** * 类库自动

2017-05-09 20:46:55 5555

原创 网络层--IP协议简要笔记

IP协议是“不可靠无连接”的传输协议,作为TCP/UDP的基础协议,其作用和地位不可置疑,以下做简要的笔记,注意本文主要是针对IPV4; 参考《TCP/IP详解 卷1 协议》一. 协议定义和组成 如上图所示,IP协议首部至少包含20个字节,这20个字节中描述了IP协议包的基本信息; 1.版本(4bit):描述IP协议的版本; 2.首部长度(4bit):4bit表示最多15个...

2017-05-08 15:28:18 510

原创 TCP总结笔记

TCP作为面向连接的协议在实际应用中占据很重要的地位,其是可靠传输协议,保证了数据流的稳定传输。现在对TCP做一个简单的笔记;一.TCP在通讯中的概览 如上图所示,TCP是传输层协议,其底层是通过IP层来进行数据收发的;下面是IP协议的结构: 下面是TCP数据在IP报文中的位置: 下面是TCP协议的结构: 下面是TCP数据传输过程: 二.TCP通讯的握手和释放首先,TCP在传输数据前,需要

2017-05-02 10:18:14 538

原创 SVN查看log时报“svn there has been a problem contacting the server”错误

这个问题的解决方法比较简单,直接将匿名用户的读权限关闭,具体操作如下:svnserve.conf中找到:anon-access=read 设置改成:anon-access=none

2017-04-22 18:24:26 4577 4

原创 国内composer源(解决composer慢的方法)

https://pkg.phpcomposer.com/

2017-04-16 16:31:11 1127

原创 PHP进程之信号捕捉中的declare(ticks=1)

在使用PHP的PCNTL拓展时,发现在信号捕捉的例程中出现了declare(ticks=1)这条php语句,于是对其进行研究。一. 语句在php中的意义php中,declare(ticks=n)和register_tick_function(‘handel_function’)一般是配合使用的,其作用是在zend解释器每执行 N 条可计时的低级语句就会发生的事件,该事件发生后就可以处理已经注册的函数

2017-03-24 12:01:34 2821

原创 PHP之pthread拓展使用以及坑

PHP是为WEB开发而生,但是以前PHP是没有线程的说法,直到pthread的出现。 资料来源:http://php.net/manual/zh/book.pthreads.php一. 线程的创建和使用1. Thread类基本的创建和使用:<?php//通过继承Thread类来实现自己的线程类MyThreadclass MyThread extends Thread{ //重写构造函数

2017-03-23 15:24:59 12559

原创 带你入门哈夫曼编码和哈夫曼树

注:(1)本文章适合阅读人群:上过高中数学,有基本计算机基础;(2)本文只是简单的入门篇,若想深入请查看专业书籍一. 编码1.什么是编码?首先我们得区分“信息”和“信息载体”这两个概念,如“hello”这个单词,在自然语言中是一种代表问好的信息,而“hello”这五个字母构成单词就是一种信息载体,当然“你好”也是该信息的另一种信息载体。编码,其实就是自定义一种信息载体的过程。在计算机中,计算机只认识

2017-03-21 13:51:37 872

转载 或许你也患上了开发瘫痪症

亲爱的开发者们:你们是否因为自己只精通于三大设备平台的八种编程语言而惴惴不安?又发现一个JavaScript框架是否会让你不寒而栗、愁眉苦脸?你是否曾经因为无法确定哪个云平台最适合而把业余项目一再推迟?或许你也换上了开发瘫痪症(Developaralysis)。颤抖吧,这个病是治不好的。如今开发者们可选的技术方案多到令人发指,让人眼花缭乱,透不过气来。过去几年里,我拿着别人给我的酬

2017-03-20 16:10:08 334

原创 PHP7新特性 简要笔记

PHP7除了在解析方面做了深度优化之外,还在语法用法上有了新功能新特性,参考PHP手册,做了简要笔记;1.指定标量类型(指定函数参数类型)<?php// Coercive modefunction sumOfInts(int ...$ints) //省略号代表传入多个参数并存储在ints容器中{ return array_sum($ints);}var_dump(sumOfInts(

2017-03-03 17:24:22 444

原创 Redis 数据备份还原与主从复制

Redis作为一个内存数据库,在数据安全以及集群部署方面都提供了一系列工具可供使用。一. Redis数据库数据备份Redis是内存型数据库,但是为了数据安全,就需要有“数据持久化“(就是将数据存储在磁盘上)的机制,在备份方面提供了两种工具,分别为RDB和AOF。1.RDB备份与恢复RDB是利用快照来实现数据持久化的,当符合特定条件时,redis将会自动的将内存中的数据保存在硬盘上,当redis启动时

2017-02-23 18:28:12 3306

原创 MySQL--数据备份还原以及主从复制

作为数据库,为了数据安全,mysql当然提供了数据备份和数据还原的功能,而且还提供了主从复制的功能,也就是说能搭建数据库集群,以下记录下常用的操作步骤流程;一. MYSQL的备份备份相当简单,使用mysqldump工具就可以实现://将指定的数据库备份mysqldump -uroot -h host -p123456 库名 > test.sql //将指定的数据表备份mysqldump -u

2017-02-20 18:10:25 1054

Golang协程调度器详解

讲述了golang的协程机制,是一篇论文,具体讲解了线程、调度器、协程的关系

2018-04-08

hashtable-C语言版(折叠法+单链表)

这是一个用c语言实现hashtable的例子, 里面适应折叠法实现散列函数,使用链表法处理冲突;

2017-02-15

SUI Mobile执行路由页面的JS和CSS范例

SUIMobile框架默认不引入路由页面的js和css,为了解决这个问题,就写了这个例程。 具体说明见博客: http://blog.csdn.net/gavin_new/article/details/51837264

2016-07-07

空空如也

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

TA关注的人

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