<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[杨文海的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ywh147</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ywh147]]></copyright><item><title><![CDATA[多线程和多进程模型的选用]]></title><link>https://blog.youkuaiyun.com/ywh147/article/details/50442359</link><guid>https://blog.youkuaiyun.com/ywh147/article/details/50442359</guid><author>ywh147</author><pubDate>Thu, 31 Dec 2015 16:19:13 +0800</pubDate><description><![CDATA[http://www.cnblogs.com/me115/p/4866115.html





多线程和多进程模型的选用


这里的线程指通过linux的pthread_create而产生的原生线程，线程资源很宝贵，能被操作系统的任务调度器看见的（不是python gevent、go gorouine里的概念）； 
我们讨论以下两种模型；

多进程单线程模型（以下简称为多]]></description><category></category></item><item><title><![CDATA[struct linger 用法]]></title><link>https://blog.youkuaiyun.com/ywh147/article/details/49744681</link><guid>https://blog.youkuaiyun.com/ywh147/article/details/49744681</guid><author>ywh147</author><pubDate>Mon, 09 Nov 2015 20:54:27 +0800</pubDate><description><![CDATA[http://www.cnblogs.com/caosiyang/archive/2012/03/29/2422956.html





Linux下tcp连接断开的时候调用close()函数，有优雅断开和强制断开两种方式。

那么如何设置断开连接的方式呢？是通过设置socket描述符一个linger结构体属性。

linger结构体数据结构如下： 

#include ]]></description><category></category></item><item><title><![CDATA[Socket选项概览]]></title><link>https://blog.youkuaiyun.com/ywh147/article/details/49684793</link><guid>https://blog.youkuaiyun.com/ywh147/article/details/49684793</guid><author>ywh147</author><pubDate>Fri, 06 Nov 2015 16:35:23 +0800</pubDate><description><![CDATA[http://www.cnblogs.com/ggjucheng/archive/2012/02/17/2355874.html




前言

socket选项主要是由setsockopt和getsockopt函数完成的，这里主要是记录我自己常用的一些socket选项。

函数原型

int getsockopt(int sockfd, int level, int opt]]></description><category></category></item><item><title><![CDATA[getaddrinfo()详解]]></title><link>https://blog.youkuaiyun.com/ywh147/article/details/49278371</link><guid>https://blog.youkuaiyun.com/ywh147/article/details/49278371</guid><author>ywh147</author><pubDate>Tue, 20 Oct 2015 15:55:51 +0800</pubDate><description><![CDATA[http://www.cppblog.com/sleepwom/archive/2010/07/02/119136.aspx





IPv4中使用gethostbyname()函数完成主机名到地址解析，但是该API不允许调用者指定 所需地址类型的任何信息，返回的结构只包含了用于存储IPv4地址的空间。为了解决该问题，IPv6中引入了getaddrinfo()的新API，它是 协议无]]></description><category></category></item><item><title><![CDATA[基本的TCP编程]]></title><link>https://blog.youkuaiyun.com/ywh147/article/details/48809373</link><guid>https://blog.youkuaiyun.com/ywh147/article/details/48809373</guid><author>ywh147</author><pubDate>Tue, 29 Sep 2015 17:45:53 +0800</pubDate><description><![CDATA[http://www.cnblogs.com/xing901022/p/3523910.html






int socket(int family,int type,int protocol);



family:

AF_INET ipv4协议

AF_INET6 ipv6协议

AF_LOCAL unix域协议

AF_ROUTE 路由套接口
]]></description><category></category></item><item><title><![CDATA[MySQL DBA面试全揭秘]]></title><link>https://blog.youkuaiyun.com/ywh147/article/details/48710103</link><guid>https://blog.youkuaiyun.com/ywh147/article/details/48710103</guid><author>ywh147</author><pubDate>Thu, 24 Sep 2015 13:28:19 +0800</pubDate><description><![CDATA[http://imysql.com/2015/09/11/how-about-mysql-dba-interview.shtml





本文起源于有同学留言回复说想了解下MySQL DBA面试时可能涉及到的知识要点，那我们今天就来大概谈谈吧。

MySQL DBA职位最近几年特别热门，不少朋友让我帮忙推荐什么的，也有很多公司找不到合适的DBA。原因很简单，优秀的人才要么被大公司]]></description><category></category></item><item><title><![CDATA[memcached面试题集锦]]></title><link>https://blog.youkuaiyun.com/ywh147/article/details/47837955</link><guid>https://blog.youkuaiyun.com/ywh147/article/details/47837955</guid><author>ywh147</author><pubDate>Fri, 21 Aug 2015 17:51:02 +0800</pubDate><description><![CDATA[这里收集了经常被问到的关于memcached的问题 

* memcached是怎么工作的？ 
* memcached最大的优势是什么？ 
* memcached和MySQL的query cache相比，有什么优缺点？ 
* memcached和服务器的local cache（比如PHP的APC、mmap文件等）相比，有什么优缺点？ 
* memcached的cache机制是怎样的？]]></description><category></category></item><item><title><![CDATA[浏览器缓存详解:expires,cache-control,last-modified,etag详细说明]]></title><link>https://blog.youkuaiyun.com/ywh147/article/details/47731387</link><guid>https://blog.youkuaiyun.com/ywh147/article/details/47731387</guid><author>ywh147</author><pubDate>Mon, 17 Aug 2015 20:24:08 +0800</pubDate><description><![CDATA[http://blog.youkuaiyun.com/eroswang/article/details/8302191





最近在对CDN进行优化，对浏览器缓存深入研究了一下，记录一下，方便后来者

画了一个草图：







每个状态的详细说明如下：



1、Last-Modified

在浏览器第一次请求某一个URL时，服务器端的返回状态会是200，内]]></description><category></category></item><item><title><![CDATA[如何在 Linux 上用 IP转发使内部网络连接到互联网]]></title><link>https://blog.youkuaiyun.com/ywh147/article/details/46502249</link><guid>https://blog.youkuaiyun.com/ywh147/article/details/46502249</guid><author>ywh147</author><pubDate>Mon, 15 Jun 2015 12:02:26 +0800</pubDate><description><![CDATA[来源：http://linux.cn/article-5595-1.html





1. 启用 IPv4 转发


首先，我们需要在我们的 Linux 操作系统上启用 IPv4 转发。要做到这点，我们需要用 sudo 模式在 shell 或终端下执行下面的命令。
$ sudo -s# echo 1 > /proc/sys/net/ipv4/ip_forward


]]></description><category></category></item><item><title><![CDATA[MySQL性能优化的21个最佳实践 和 mysql使用索引]]></title><link>https://blog.youkuaiyun.com/ywh147/article/details/45195333</link><guid>https://blog.youkuaiyun.com/ywh147/article/details/45195333</guid><author>ywh147</author><pubDate>Wed, 22 Apr 2015 15:01:49 +0800</pubDate><description><![CDATA[http://www.cnblogs.com/daxian2012/articles/2767989.html






今天，数据库的操作越来越成为整个应用的性能瓶颈了，这点对于Web应用尤其明显。关于数据库的性能，这并不只是DBA才需要担心的事，而这更是我 们程序员需要去关注的事情。当我们去设计数据库表结构，对操作数据库时(尤其是查表时的SQL语句)，我们都需要注意数据操作的性]]></description><category></category></item><item><title><![CDATA[MySQL索引背后的数据结构及算法原理]]></title><link>https://blog.youkuaiyun.com/ywh147/article/details/45195247</link><guid>https://blog.youkuaiyun.com/ywh147/article/details/45195247</guid><author>ywh147</author><pubDate>Wed, 22 Apr 2015 14:54:58 +0800</pubDate><description><![CDATA[http://blog.jobbole.com/24006/





摘要

本文以MySQL数据库为研究对象，讨论与数据库索引相关的一些话题。特别需要说明的是，MySQL支持诸多存储引擎，而各种存储引擎对索引的支持也各不相同，因此MySQL数据库支持多种索引类型，如BTree索引，哈希索引，全文索引等等。为了避免混乱，本文将只关注于BTree索引，因为这是平常使用MySQL时主]]></description><category></category></item><item><title><![CDATA[netstat用法记录]]></title><link>https://blog.youkuaiyun.com/ywh147/article/details/44222133</link><guid>https://blog.youkuaiyun.com/ywh147/article/details/44222133</guid><author>ywh147</author><pubDate>Thu, 12 Mar 2015 15:16:11 +0800</pubDate><description><![CDATA[netstat -ant | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}'


netstat -s | grep timestamp]]></description><category></category></item><item><title><![CDATA[github相关]]></title><link>https://blog.youkuaiyun.com/ywh147/article/details/44100721</link><guid>https://blog.youkuaiyun.com/ywh147/article/details/44100721</guid><author>ywh147</author><pubDate>Fri, 06 Mar 2015 16:02:27 +0800</pubDate><description><![CDATA[在github上创建好项目，然后clone到本地，修改 .git/config ，将url改为自己的用户名，比如：
url = https://yangwenhai@github.com/yangwenhai/esort.git



//add所有文件
git add ./*

//提交
git commit -m '提交'

//更新到github上
git push ]]></description><category></category></item><item><title><![CDATA[查看进程启动时间]]></title><link>https://blog.youkuaiyun.com/ywh147/article/details/42394845</link><guid>https://blog.youkuaiyun.com/ywh147/article/details/42394845</guid><author>ywh147</author><pubDate>Sun, 04 Jan 2015 17:20:03 +0800</pubDate><description><![CDATA[ps -A -opid,lstart,etime,args|grep php-fpm|grep -v grep]]></description><category></category></item><item><title><![CDATA[Erlang Programming拾零]]></title><link>https://blog.youkuaiyun.com/ywh147/article/details/41870953</link><guid>https://blog.youkuaiyun.com/ywh147/article/details/41870953</guid><author>ywh147</author><pubDate>Thu, 11 Dec 2014 19:27:52 +0800</pubDate><description><![CDATA[http://cryolite.iteye.com/blog/419235







receive子句的消息匹配模式：如果消息很简单，使用atom就可以描述的话，没必要使用tuple，tuple会消耗更多的内存，而且减慢了进程的处理速度。i()列出当前进程的详细信息，regs()列出所有注册进程和端口的详细信息。ets:i()列出所有ets表的详细信息。atom不会被垃圾回收]]></description><category></category></item><item><title><![CDATA[Boost::asio io_service 实现分析]]></title><link>https://blog.youkuaiyun.com/ywh147/article/details/40509995</link><guid>https://blog.youkuaiyun.com/ywh147/article/details/40509995</guid><author>ywh147</author><pubDate>Mon, 27 Oct 2014 16:54:40 +0800</pubDate><description><![CDATA[http://www.cnblogs.com/zhiranok/archive/2011/09/04/boost_asio_io_service_CPP.html





Boost::asio io_service 实现分析
io_service的作用

io_servie 实现了一个任务队列，这里的任务就是void(void)的函数。Io_servie最常用的两个接口是po]]></description><category></category></item><item><title><![CDATA[王帅：深入PHP内核（二）——SAPI探究]]></title><link>https://blog.youkuaiyun.com/ywh147/article/details/40188411</link><guid>https://blog.youkuaiyun.com/ywh147/article/details/40188411</guid><author>ywh147</author><pubDate>Fri, 17 Oct 2014 17:20:44 +0800</pubDate><description><![CDATA[SAPI是Server Application Programming Interface（服务器应用编程接口）的缩写。PHP通过SAPI提供了一组接口，供应用和PHP内核之间进行数据交互。

简单的讲，就像函数的输入和输出一样，我们通过Linux命令行执行一段PHP代码，本质是Linux的Shell通过PHP的SAPI传入一组参数，Zend引擎执行后，返回给shell，由shell显示出来的]]></description><category></category></item><item><title><![CDATA[王帅：深入PHP内核（一）——弱类型变量原理探究]]></title><link>https://blog.youkuaiyun.com/ywh147/article/details/40187833</link><guid>https://blog.youkuaiyun.com/ywh147/article/details/40187833</guid><author>ywh147</author><pubDate>Fri, 17 Oct 2014 16:13:22 +0800</pubDate><description><![CDATA[http://www.youkuaiyun.com/article/2014-09-15/2821685-exploring-of-the-php




PHP是一门简单而强大的语言，提供了很多Web适用的语言特性，其中就包括了变量弱类型，在弱类型机制下，你能够给一个变量赋任意类型的值。 

PHP的执行是通过Zend Engine（下面简称ZE），ZE是使用C编写，在底层实现了一套弱类型机制]]></description><category></category></item><item><title><![CDATA[Cassandra分析]]></title><link>https://blog.youkuaiyun.com/ywh147/article/details/39496015</link><guid>https://blog.youkuaiyun.com/ywh147/article/details/39496015</guid><author>ywh147</author><pubDate>Tue, 23 Sep 2014 11:28:45 +0800</pubDate><description><![CDATA[http://blog.youkuaiyun.com/kirayuan/article/details/6430889





一、 简介


Apache Cassandra是一套开源分布式Key-Value存储系统。它最初由Facebook开发，用于储存特别大的数据。Facebook目前在使用此系统。

主要特性：

分布式

基于column的结构化

高伸展性
]]></description><category></category></item><item><title><![CDATA[linux shell “(())” 双括号运算符使用]]></title><link>https://blog.youkuaiyun.com/ywh147/article/details/38872169</link><guid>https://blog.youkuaiyun.com/ywh147/article/details/38872169</guid><author>ywh147</author><pubDate>Wed, 27 Aug 2014 16:07:22 +0800</pubDate><description><![CDATA[在刚开始学习inux shell脚本编程时候，对于它的 四则运算以及逻辑运算。估计很多朋友都感觉比较难以接受。特变逻辑运算符”[]”使用时候，必须保证运算符与算数 之间有空格。 四则运算也只能借助：let,expr等命令完成。 今天讲的双括号”(())”结构语句，就是对shell中算数及赋值运算的扩展。

 

使用方法：

语法：
（（表达式1,表达式2…））
特点：
1、在双]]></description><category></category></item></channel></rss>