<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[前行的博客]]></title><description><![CDATA[在追求梦想的路上，不曾停歇]]></description><link>https://blog.youkuaiyun.com/github_38392025</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; github_38392025]]></copyright><item><title><![CDATA[网站的高可用架构]]></title><link>https://blog.youkuaiyun.com/github_38392025/article/details/81806040</link><guid>https://blog.youkuaiyun.com/github_38392025/article/details/81806040</guid><author>github_38392025</author><pubDate>Sat, 18 Aug 2018 10:14:50 +0800</pubDate><description><![CDATA[应用层通过负载均衡设备将一组服务器组成一个集群共同对外提供服务，负载均衡设置通过心跳检测等手段检测到某台应用服务器不可用时，就将其从集群列表剔除，从而使整个集群保持可用。

服务层与应用层类似，只是这些服务器被应用层通过分布式服务调用框架访问，分布式服务调用框架会在应用层客户端程序中实现软件负载均衡，并通过服务注册中心对提供服务的服务器进行心跳检测。

 

高可用的应用

应用层主要处理网站应用...]]></description><category></category></item><item><title><![CDATA[网站的高性能架构]]></title><link>https://blog.youkuaiyun.com/github_38392025/article/details/81806026</link><guid>https://blog.youkuaiyun.com/github_38392025/article/details/81806026</guid><author>github_38392025</author><pubDate>Sat, 18 Aug 2018 10:13:03 +0800</pubDate><description><![CDATA[性能测试指标

网站性能测试的主要指标有相应时间、并发数、吞吐量、性能计数器等

响应时间

测试程序通过模拟应用程序，记录发出请求到响应的时间差，当一般请求时间都不长，容易产生误差，因此一般是测试上万次请求时间的总和，然后算出响应时间的平均值。

并发数

指系统能够同时处理请求的数目，这个数字也反应了系统的负载特性，对于网站而言，并发数即网站并发用户数，指同时提交请求的用户数目。

吞吐量

...]]></description><category></category></item><item><title><![CDATA[大型网站架构模式]]></title><link>https://blog.youkuaiyun.com/github_38392025/article/details/81805984</link><guid>https://blog.youkuaiyun.com/github_38392025/article/details/81805984</guid><author>github_38392025</author><pubDate>Sat, 18 Aug 2018 10:11:21 +0800</pubDate><description><![CDATA[为解决大型网站面临的高并发访问、海量数据处理、高可靠运行等一系列问题与挑战，大型互联网公司在实践中提出许多解决方案，以实现网站的高性能、高可用、易伸缩、可扩展、安全等各种技术架构目标。这些解决方案又被更多网站重复使用，从而形成大型网站架构模式。

分层

最典型的就是网络的7层通信协议，将系统从横向维度切分成几个部分，每个部分负责比较单一的职责，通过上下层的依赖和调用组成一个完整的系统。

网站架...]]></description><category></category></item><item><title><![CDATA[I/O复用-Select函数]]></title><link>https://blog.youkuaiyun.com/github_38392025/article/details/81772975</link><guid>https://blog.youkuaiyun.com/github_38392025/article/details/81772975</guid><author>github_38392025</author><pubDate>Fri, 17 Aug 2018 10:08:59 +0800</pubDate><description><![CDATA[I/O复用的意义

为了构建并发服务器，一般需要为每个客户端连接都创建一个进程进行通信，不过创建和维护进程的开销是巨大的，需要大量的运算和内存空间，每个进程都有独立的内存空间，所以相互交换数据也要求采用相对复杂的方法，比如管道等。

这时I/O复用就能有效的改善这种情况，他可以使一个进程同时为多个客户端提供服务，当然这里所说的同时并不是真正意义上的同时发生。

 

Select实现复用服务器端
...]]></description><category></category></item><item><title><![CDATA[进程间通信（IPC）]]></title><link>https://blog.youkuaiyun.com/github_38392025/article/details/81772923</link><guid>https://blog.youkuaiyun.com/github_38392025/article/details/81772923</guid><author>github_38392025</author><pubDate>Fri, 17 Aug 2018 10:05:38 +0800</pubDate><description><![CDATA[进程通信概念

进程间通信意味着两个不同进程间可以交换数据，操作系统应该提供两个进程可以同时访问的内存空间。

 

什么是管道

管道并非属于进程的资源，而是和套接字一样，属于操作系统的资源。创建一个管道非常简单，如下：


int fds[2];

int pipe(fds);

 
调用pipe函数后，fds[0]中存储接受管道数据的套接字描述符，就管道出口，相应的fds[1]就是管道入口。...]]></description><category></category></item><item><title><![CDATA[SSO单点登录]]></title><link>https://blog.youkuaiyun.com/github_38392025/article/details/81742462</link><guid>https://blog.youkuaiyun.com/github_38392025/article/details/81742462</guid><author>github_38392025</author><pubDate>Thu, 16 Aug 2018 15:30:10 +0800</pubDate><description><![CDATA[什么是SSO

SSO全称为Single Sign On,即单点登录，指在多个应用系统的集合中，用户只需要在任意一个系统中登录成功，就能在其他系统同样保持登录状态，极大提高用户体验度，比如在淘宝(www.taobao.com)登录成功后，打开天猫的主页（www.tmall.com），用户同样处于登录状态。

​

Cookie作用域

Cookie有两个重要属性：Domain和Path，用来指示c...]]></description><category></category></item><item><title><![CDATA[加密算法-流密码加密]]></title><link>https://blog.youkuaiyun.com/github_38392025/article/details/81708236</link><guid>https://blog.youkuaiyun.com/github_38392025/article/details/81708236</guid><author>github_38392025</author><pubDate>Wed, 15 Aug 2018 17:39:52 +0800</pubDate><description><![CDATA[什么是流密码

流密码是一种常见的加密算法，基于异或(XOR)操作，每次只操作一个字节，常见的流密码加密算法有：RC4、ORYX、SEAL。

 

流密码隐藏的问题

因为异或加密的本质，最常见的错误就是多次使用同一个密钥进行加解密。攻击者甚至不需要知道密钥就能成功破解密文。原理如下：

缺陷


/* A、B为明文，C为密钥 */

E(A) = A XOR C ;

E(B) = B XOR...]]></description><category></category></item><item><title><![CDATA[跨站点请求伪造(CSRF)]]></title><link>https://blog.youkuaiyun.com/github_38392025/article/details/81708133</link><guid>https://blog.youkuaiyun.com/github_38392025/article/details/81708133</guid><author>github_38392025</author><pubDate>Wed, 15 Aug 2018 17:36:25 +0800</pubDate><description><![CDATA[什么是CRSF

构建一个地址，比如说是删除某个博客网站博客的链接，然后诱使已经登录过该网站的用户点击恶意链接，可能会导致用户通过自己的手将曾经发布在该网站的博客在不知情的情况下删除了。这种构建恶意链接，假借受害者的手造成损失的攻击方式就叫CSRF-跨站点请求伪造。

 

浏览器Cookie策略

cookie分类

cookie根据有无设置过期时间分为两种，没有设置过期时间的为Session ...]]></description><category></category></item><item><title><![CDATA[跨站脚本攻击(XSS)]]></title><link>https://blog.youkuaiyun.com/github_38392025/article/details/81708081</link><guid>https://blog.youkuaiyun.com/github_38392025/article/details/81708081</guid><author>github_38392025</author><pubDate>Wed, 15 Aug 2018 17:32:59 +0800</pubDate><description><![CDATA[
概念


XSS攻击，通常指通过'HTML注入'篡改了网页，插入恶意脚本，大多数是javascript或者指向脚本的链接，在用户浏览网页的时候，控制用户浏览器的一种攻击。主要的攻击对象是当前用户的个人信息。

对于XSS攻击者来说，JavaScript工作在渲染后的浏览器环境中，无法控制用户浏览器发出的HTTP头。


XSS的三种类型



	反射型XSS：特点是黑客需要诱使用户点击一个恶意链...]]></description><category></category></item><item><title><![CDATA[浏览器安全]]></title><link>https://blog.youkuaiyun.com/github_38392025/article/details/81707780</link><guid>https://blog.youkuaiyun.com/github_38392025/article/details/81707780</guid><author>github_38392025</author><pubDate>Wed, 15 Aug 2018 17:23:03 +0800</pubDate><description><![CDATA[
什么叫同源


源其实指的就是URL，同源的条件是两个网站的协议、域名、端口都一致，才能称为同源。


同源策略


同源策略出于网站安全性的考虑，限制不同源之间资源访问的一种策略，简单来说有如下几种：


	AJAX请求不能发送
	
	
	无法读取DOM元素并进行操作
	
	
	无法读取cookie，localstrotage、IndexDB。
	
值得一提的是，有些请求是不受到跨域限制。例如...]]></description><category></category></item><item><title><![CDATA[php源码之array_key_exists]]></title><link>https://blog.youkuaiyun.com/github_38392025/article/details/79490098</link><guid>https://blog.youkuaiyun.com/github_38392025/article/details/79490098</guid><author>github_38392025</author><pubDate>Thu, 08 Mar 2018 22:02:20 +0800</pubDate><description><![CDATA[先定一个flag，以后争取每天理解一个php函数源码，熟悉php内核。函数array_key_exists等数组相关的函数都定义在源码ext/standard/array.c文件中。array_key_exists函数的作用是检测给定数组array中是否有键为key的值。源码如下：PHP_FUNCTION(array_key_exists)
{
	zval *key;					/* key to ...]]></description><category></category></item><item><title><![CDATA[PHP内核之zend_parse_parameters]]></title><link>https://blog.youkuaiyun.com/github_38392025/article/details/79470923</link><guid>https://blog.youkuaiyun.com/github_38392025/article/details/79470923</guid><author>github_38392025</author><pubDate>Wed, 07 Mar 2018 16:55:02 +0800</pubDate><description><![CDATA[函数介绍关于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...]]></description><category></category></item><item><title><![CDATA[PHP常说的SAPI是什么]]></title><link>https://blog.youkuaiyun.com/github_38392025/article/details/79373918</link><guid>https://blog.youkuaiyun.com/github_38392025/article/details/79373918</guid><author>github_38392025</author><pubDate>Mon, 26 Feb 2018 12:08:25 +0800</pubDate><description><![CDATA[什么是SAPISAPI全称是Server Application Programming Interface,即服务器应用编程接口，实质上就是定义了一个统一的接口，它的核心就是一个结构体sapi_module_struct。SAPI提供给了外部应用跟php通信的管道，这个外部应用包括不限于Apache，httpd，liunx终端等，sapi通俗的讲就是php-cgi,php-cli,mod_php...]]></description><category></category></item><item><title><![CDATA[va_start和va_end的使用及原理]]></title><link>https://blog.youkuaiyun.com/github_38392025/article/details/79355756</link><guid>https://blog.youkuaiyun.com/github_38392025/article/details/79355756</guid><author>github_38392025</author><pubDate>Fri, 23 Feb 2018 17:31:36 +0800</pubDate><description><![CDATA[本文主要介绍va_start和va_end的使用及原理。　　在以前的一篇帖子Format MessageBox 详解中曾使用到va_start和va_end这两个宏，但对它们也只是泛泛的了解。　　介绍这两个宏之前先看一下C中传递函数的参数时的用法和原理： 1.在C中，当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表void foo(...);void foo(parm_lis...]]></description><category></category></item><item><title><![CDATA[揭开C语言指针的面纱-part1]]></title><link>https://blog.youkuaiyun.com/github_38392025/article/details/79057765</link><guid>https://blog.youkuaiyun.com/github_38392025/article/details/79057765</guid><author>github_38392025</author><pubDate>Sun, 14 Jan 2018 17:31:30 +0800</pubDate><description><![CDATA[1.操作系统是以字节为单位，而指针实际上就是指向这个字节单位，指针变量的值即是这个字节在计算机系统中的地址。一个指针大小跟cpu位数有关，64位的mac中，一个指针有8字节，也就是能表达的存储地址范围为2的64次方。


2.指针变量中存储的数字就是一个字节的地址，然而一般数据结构大小都大于1个字节，比如int类型是4个字节，double是8个字节，一个结构体应该也算一个数据类型。指针存的字]]></description><category></category></item><item><title><![CDATA[phper需要知道的mysql知识]]></title><link>https://blog.youkuaiyun.com/github_38392025/article/details/79057730</link><guid>https://blog.youkuaiyun.com/github_38392025/article/details/79057730</guid><author>github_38392025</author><pubDate>Sun, 14 Jan 2018 17:22:01 +0800</pubDate><description><![CDATA[group by[col1,col2,col3]
     将查询出来的数据根据col进行分组，简单理解就是将col1，col2，col3这三列数据相同的记录合成一条，col1，col2，col3因为是一样的很轻松就能合成一条并展示，那其他尾部的记录就可能每条都不一样无法合成，默认是取第一条的记录，或者可以用聚合函数处理3条不同的尾巴，比如求和，求平均然后在展示处理,如下：

order b]]></description><category></category></item><item><title><![CDATA[Nginx与Apache的比较]]></title><link>https://blog.youkuaiyun.com/github_38392025/article/details/79057672</link><guid>https://blog.youkuaiyun.com/github_38392025/article/details/79057672</guid><author>github_38392025</author><pubDate>Sun, 14 Jan 2018 17:12:20 +0800</pubDate><description><![CDATA[Nginx和apache本质上的不同其实是体现在资源I/O上，nginx采用的是epoll模型，也就是使用epoll_create、epoll_ctl、epoll_wait这几个函数组成的模型去代替了传统的select/poll模型，后者模型中的select函数即在处理socket常用的检测套接字变化的函数（做websocket时有用过），两种模式不同之处在于select是轮询监控列表，而epol]]></description><category></category></item><item><title><![CDATA[liunx学习总结]]></title><link>https://blog.youkuaiyun.com/github_38392025/article/details/78586593</link><guid>https://blog.youkuaiyun.com/github_38392025/article/details/78586593</guid><author>github_38392025</author><pubDate>Mon, 20 Nov 2017 20:57:47 +0800</pubDate><description><![CDATA[改变文件所属组： 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（全部减去执行）。
查]]></description><category></category></item><item><title><![CDATA[php-redis配置使用]]></title><link>https://blog.youkuaiyun.com/github_38392025/article/details/78325333</link><guid>https://blog.youkuaiyun.com/github_38392025/article/details/78325333</guid><author>github_38392025</author><pubDate>Tue, 24 Oct 2017 08:12:09 +0800</pubDate><description><![CDATA[安装redis扩展官网下载redis扩展包，进入redis文件夹，然后跟安装其他扩展一样，三步骤，phpize+./configure+make&make install。mac上下载文件可以使用命令curl -O url查看phpinfo，出现redis就安装成功了。redis基础命令的使用php使用redis与命令行使用redis大同小异，可能在某些命令上大小写也有区别，这里就不一一展示，red]]></description><category></category></item><item><title><![CDATA[php7-hashtable总结]]></title><link>https://blog.youkuaiyun.com/github_38392025/article/details/78325284</link><guid>https://blog.youkuaiyun.com/github_38392025/article/details/78325284</guid><author>github_38392025</author><pubDate>Tue, 24 Oct 2017 07:58:58 +0800</pubDate><description><![CDATA[hashtable 结构typedef struct _Hashtable {
    unit32_t nTableSize   //最小为8,标准为大于实际元素个数的2次方,6->8,9->16
    unit32_t nTableMask;  //tablesize-1
    unit32_t nNumUsed;    //已使用的元素,当满了的时候会重构,去除已经unset的元素]]></description><category></category></item></channel></rss>