自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

前行的博客

在追求梦想的路上,不曾停歇

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

原创 网站的高可用架构

应用层通过负载均衡设备将一组服务器组成一个集群共同对外提供服务,负载均衡设置通过心跳检测等手段检测到某台应用服务器不可用时,就将其从集群列表剔除,从而使整个集群保持可用。服务层与应用层类似,只是这些服务器被应用层通过分布式服务调用框架访问,分布式服务调用框架会在应用层客户端程序中实现软件负载均衡,并通过服务注册中心对提供服务的服务器进行心跳检测。 高可用的应用应用层主要处理网站应用...

2018-08-18 10:14:50 464

原创 网站的高性能架构

性能测试指标网站性能测试的主要指标有相应时间、并发数、吞吐量、性能计数器等响应时间测试程序通过模拟应用程序,记录发出请求到响应的时间差,当一般请求时间都不长,容易产生误差,因此一般是测试上万次请求时间的总和,然后算出响应时间的平均值。并发数指系统能够同时处理请求的数目,这个数字也反应了系统的负载特性,对于网站而言,并发数即网站并发用户数,指同时提交请求的用户数目。吞吐量...

2018-08-18 10:13:03 690

原创 大型网站架构模式

为解决大型网站面临的高并发访问、海量数据处理、高可靠运行等一系列问题与挑战,大型互联网公司在实践中提出许多解决方案,以实现网站的高性能、高可用、易伸缩、可扩展、安全等各种技术架构目标。这些解决方案又被更多网站重复使用,从而形成大型网站架构模式。分层最典型的就是网络的7层通信协议,将系统从横向维度切分成几个部分,每个部分负责比较单一的职责,通过上下层的依赖和调用组成一个完整的系统。网站架...

2018-08-18 10:11:21 458

原创 I/O复用-Select函数

I/O复用的意义为了构建并发服务器,一般需要为每个客户端连接都创建一个进程进行通信,不过创建和维护进程的开销是巨大的,需要大量的运算和内存空间,每个进程都有独立的内存空间,所以相互交换数据也要求采用相对复杂的方法,比如管道等。这时I/O复用就能有效的改善这种情况,他可以使一个进程同时为多个客户端提供服务,当然这里所说的同时并不是真正意义上的同时发生。 Select实现复用服务器端...

2018-08-17 10:08:59 166

原创 进程间通信(IPC)

进程通信概念进程间通信意味着两个不同进程间可以交换数据,操作系统应该提供两个进程可以同时访问的内存空间。 什么是管道管道并非属于进程的资源,而是和套接字一样,属于操作系统的资源。创建一个管道非常简单,如下:int fds[2];int pipe(fds); 调用pipe函数后,fds[0]中存储接受管道数据的套接字描述符,就管道出口,相应的fds[1]就是管道入口。...

2018-08-17 10:05:38 401

原创 SSO单点登录

什么是SSOSSO全称为Single Sign On,即单点登录,指在多个应用系统的集合中,用户只需要在任意一个系统中登录成功,就能在其他系统同样保持登录状态,极大提高用户体验度,比如在淘宝(www.taobao.com)登录成功后,打开天猫的主页(www.tmall.com),用户同样处于登录状态。​Cookie作用域Cookie有两个重要属性:Domain和Path,用来指示c...

2018-08-16 15:30:10 313

原创 加密算法-流密码加密

什么是流密码流密码是一种常见的加密算法,基于异或(XOR)操作,每次只操作一个字节,常见的流密码加密算法有:RC4、ORYX、SEAL。 流密码隐藏的问题因为异或加密的本质,最常见的错误就是多次使用同一个密钥进行加解密。攻击者甚至不需要知道密钥就能成功破解密文。原理如下:缺陷/* A、B为明文,C为密钥 */E(A) = A XOR C ;E(B) = B XOR...

2018-08-15 17:39:52 14359

原创 跨站点请求伪造(CSRF)

什么是CRSF构建一个地址,比如说是删除某个博客网站博客的链接,然后诱使已经登录过该网站的用户点击恶意链接,可能会导致用户通过自己的手将曾经发布在该网站的博客在不知情的情况下删除了。这种构建恶意链接,假借受害者的手造成损失的攻击方式就叫CSRF-跨站点请求伪造。 浏览器Cookie策略cookie分类cookie根据有无设置过期时间分为两种,没有设置过期时间的为Session ...

2018-08-15 17:36:25 7813

原创 跨站脚本攻击(XSS)

概念XSS攻击,通常指通过'HTML注入'篡改了网页,插入恶意脚本,大多数是javascript或者指向脚本的链接,在用户浏览网页的时候,控制用户浏览器的一种攻击。主要的攻击对象是当前用户的个人信息。对于XSS攻击者来说,JavaScript工作在渲染后的浏览器环境中,无法控制用户浏览器发出的HTTP头。XSS的三种类型 反射型XSS:特点是黑客需要诱使用户点击一个恶意链...

2018-08-15 17:32:59 777

原创 浏览器安全

什么叫同源源其实指的就是URL,同源的条件是两个网站的协议、域名、端口都一致,才能称为同源。同源策略同源策略出于网站安全性的考虑,限制不同源之间资源访问的一种策略,简单来说有如下几种: AJAX请求不能发送 无法读取DOM元素并进行操作 无法读取cookie,localstrotage、IndexDB。 值得一提的是,有些请求是不受到跨域限制。例如...

2018-08-15 17:23:03 429

原创 php源码之array_key_exists

先定一个flag,以后争取每天理解一个php函数源码,熟悉php内核。函数array_key_exists等数组相关的函数都定义在源码ext/standard/array.c文件中。array_key_exists函数的作用是检测给定数组array中是否有键为key的值。源码如下:PHP_FUNCTION(array_key_exists){ zval *key; /* key to ...

2018-03-08 22:02:20 1225

原创 PHP内核之zend_parse_parameters

函数介绍关于zend_parse_parameters函数的使用,网上已经有很多的介绍了。函数的原型定义在zend_API.c中,为:ZEND_API int zend_parse_parameters(int num_args,const char *type_spec,....),num_args表示参数的个数,通过使用ZEND_NUM_ARGS()获取而不手动计算传入。第二个参数type_s...

2018-03-07 16:55:02 436

原创 PHP常说的SAPI是什么

什么是SAPISAPI全称是Server Application Programming Interface,即服务器应用编程接口,实质上就是定义了一个统一的接口,它的核心就是一个结构体sapi_module_struct。SAPI提供给了外部应用跟php通信的管道,这个外部应用包括不限于Apache,httpd,liunx终端等,sapi通俗的讲就是php-cgi,php-cli,mod_php...

2018-02-26 12:08:25 4408

转载 va_start和va_end的使用及原理

本文主要介绍va_start和va_end的使用及原理。  在以前的一篇帖子Format MessageBox 详解中曾使用到va_start和va_end这两个宏,但对它们也只是泛泛的了解。  介绍这两个宏之前先看一下C中传递函数的参数时的用法和原理: 1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表void foo(...);void foo(parm_lis...

2018-02-23 17:31:36 175

原创 揭开C语言指针的面纱-part1

1.操作系统是以字节为单位,而指针实际上就是指向这个字节单位,指针变量的值即是这个字节在计算机系统中的地址。一个指针大小跟cpu位数有关,64位的mac中,一个指针有8字节,也就是能表达的存储地址范围为2的64次方。2.指针变量中存储的数字就是一个字节的地址,然而一般数据结构大小都大于1个字节,比如int类型是4个字节,double是8个字节,一个结构体应该也算一个数据类型。指针存的字

2018-01-14 17:31:30 176

原创 phper需要知道的mysql知识

group by[col1,col2,col3]     将查询出来的数据根据col进行分组,简单理解就是将col1,col2,col3这三列数据相同的记录合成一条,col1,col2,col3因为是一样的很轻松就能合成一条并展示,那其他尾部的记录就可能每条都不一样无法合成,默认是取第一条的记录,或者可以用聚合函数处理3条不同的尾巴,比如求和,求平均然后在展示处理,如下:order b

2018-01-14 17:22:01 208

原创 Nginx与Apache的比较

Nginx和apache本质上的不同其实是体现在资源I/O上,nginx采用的是epoll模型,也就是使用epoll_create、epoll_ctl、epoll_wait这几个函数组成的模型去代替了传统的select/poll模型,后者模型中的select函数即在处理socket常用的检测套接字变化的函数(做websocket时有用过),两种模式不同之处在于select是轮询监控列表,而epol

2018-01-14 17:12:20 367

原创 liunx学习总结

改变文件所属组: chgrp –a groupname filename改变文件拥有者:chown –a username filename改变文件权限 chmod –a owner(r+w+x) group(r+w+x) other(r+w+x) filename,还有一种方式是chmod u=rwx g-w o+x filename,chmod a-x filename(全部减去执行)。查

2017-11-20 20:57:47 161

原创 php-redis配置使用

安装redis扩展官网下载redis扩展包,进入redis文件夹,然后跟安装其他扩展一样,三步骤,phpize+./configure+make&make install。mac上下载文件可以使用命令curl -O url查看phpinfo,出现redis就安装成功了。redis基础命令的使用php使用redis与命令行使用redis大同小异,可能在某些命令上大小写也有区别,这里就不一一展示,red

2017-10-24 08:12:09 277

原创 php7-hashtable总结

hashtable 结构typedef struct _Hashtable { unit32_t nTableSize //最小为8,标准为大于实际元素个数的2次方,6->8,9->16 unit32_t nTableMask; //tablesize-1 unit32_t nNumUsed; //已使用的元素,当满了的时候会重构,去除已经unset的元素

2017-10-24 07:58:58 325

原创 php访问控制

首先需要明白php中类和函数有三种访问控制,分别是public,protected和private。三者的区别这三者的区别是public可以在其子类父类,以及实例化的对象中访问到,protectded只能在其子类和父类中访问,实例化的对象中也无法访问,private要求更高,只能在自身类中访问,其他任何地方都无法访问!。编辑器会直接提示你b和c是受保护和私有的,无法访问。在子类中private依然无

2017-10-24 07:00:54 698

原创 了解命名空间

命名空间的作用解决文件中引用另一个文件时存在相同类名,函数名以及常量名的问题,比如test.php文件如下然后在test1.php中加载这个文件如果两者的命名空间相同,包括两者都没有设置命名空间的情况下,执行test1.php会报冲突,因为两个文件有相同的类Test,这是不被允许的,然而命名空间可以很好的解决这个问题,如果将test1.php的命名空间进行修改,如下:现在两个文件的类Test在不同

2017-10-11 08:17:13 157

原创 Git常用命令总结

git diffgit diff [filename] 可以查看文件的修改状态。可以看成diff是和最近的commit或者add相比较,这一点和 git chectout 如出一辙。 git loggit log -p [filename] 可以查看文件的历史版本修改记录,git log --pretty=oneline 将版本记录每一条展示在一行方便观看。 git reset –h

2017-09-26 08:06:33 217

原创 PHP使用WebSocket

WebSocekt的基础这里就不介绍了,网上一抓一大把,这里来和大家讨论一下一些坑 解码和编码这个是协议规定的,从客户端发送给服务端的数据一定是经过特殊编码的,如果使用的是HTML5的websocket,在使用send函数的时候会自动进行编码,这个我们不用管,不过编码规则还是要了解一点的,毕竟服务端发数据给客户端或者解码是需要我们自己解析的,权威的文档可以看这里(所以做it英文还是要好啊。。。

2017-09-24 22:22:30 1394

原创 关于unicode与utf-8的认识

unicode起源说到unicode就不得不说ASCII,ASCII是有美国定制的一套字符集,其中是字母与二进制的对应关系,ASCII为一个字节,一个字节中的后七位与字符一一对应,比如01000001对应大写字母A,7位二进制完全能够满足英文字符了,但是后面互联网普通,中文可不是7位二进制,128个数字能完全表示的,更别说其他国家的语言,因此出现了很多只能适用于特定语言的编码规则,比如说GB231

2017-09-24 21:51:52 365

原创 常用的jquery语句

tip1 标签内容像input,textarea等输入框可以用(this).val(),但是em等标签中的数据就不行了,只能用(this).val(),但是em等标签中的数据就不行了,只能用(this).text()或者$(this).html() tip2 ajax在ajax的data部分发现可以用(this),但是success部分不行,只能在ajax前先定义一个(this),但是suc

2017-04-22 12:12:17 1712

原创 jquery基础

tip1 元素绑定经常会用到局部刷新,如果在局部刷新div中的元素有绑定事件,必须要将js函数一同放到这个div进行刷新才能在下一次生效(pjax和ajax一样的),因为js放在外面不刷新的话,一旦局部刷新完,div中的元素是未经过js绑定的,是新的,而js代码绑定元素的契机是整个页面加载完毕或者页面刷新,局部刷新并不满足这一点,因此刷新后的元素不会触发js绑定。 tip2 div多个类名在

2017-04-19 22:48:08 147

原创 yii2-rbac权限设置

tip1 配置rbac也就是基于角色的权限管理规则,由角色,权限和规则构成,使用它首先需要到配置文件配置,class有两种,PhpManager和DbManager两种'authManager' => ['class'=> 'yii\rbac\PhpManager','defaultRoles' =>['author'],],然后在yii2的项目目录下创建rbac文件夹,并使文件夹可完全访问

2017-04-19 21:37:12 983

原创 liunx实用操作

Tip1 grep命令grep命令主要用于筛选字符串,该命令通常与管道命令一起使用,格式如下grep [-acinv] [–color=auto] ‘查找字符串’ filename 主要的操作如下:-a :将binary文件以text文件的方式查找数据 -c :计算找到‘查找字符串’的次数 -i :忽略大小写的区别,即把大小写视为相同-v :反向选择,即显示出没有‘查找字符串’内容的那一行 列

2017-04-19 21:31:51 231

原创 类延迟加载

在php中,想要实例化一个类,必须先在实例化之前加载类:require …./class1.php 或者 include …./class1.php require …./class2.php 或者 include …./class2.php try=newclass1;try = new class1; try1 = new class2; 这样的做法使即时不会马上用到的类都要一次性

2017-04-19 21:16:08 581

空空如也

空空如也

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

TA关注的人

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