<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[L_XRUI的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/L_XRUI</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; L_XRUI]]></copyright><item><title><![CDATA[appium环境搭建]]></title><link>https://blog.youkuaiyun.com/L_XRUI/article/details/87721580</link><guid>https://blog.youkuaiyun.com/L_XRUI/article/details/87721580</guid><author>L_XRUI</author><pubDate>Tue, 19 Feb 2019 22:15:30 +0800</pubDate><description><![CDATA[  appium环境比较复杂，本章总结了搭建appium环境的过程。
  一、安装Android SDK
  下载地址：https://pan.baidu.com/s/1nHqREoLcDPxwGav1CQ0J9w
   提取码：m9ch
    1. 下载Android SDK包，进行解压；
    2. 进入Android SDK/sdk/目录，找到platform-tools与tools目录...]]></description><category></category></item><item><title><![CDATA[正则表达式的学习]]></title><link>https://blog.youkuaiyun.com/L_XRUI/article/details/84587015</link><guid>https://blog.youkuaiyun.com/L_XRUI/article/details/84587015</guid><author>L_XRUI</author><pubDate>Wed, 28 Nov 2018 21:37:34 +0800</pubDate><description><![CDATA[       正则表达式：处理字符串的方法，以行为单位处理字符串，其通过一些特殊符号的辅助，可以使用户轻易的进行查找、删除、替换某特定字符串的处理程序。

       支持正则表达式表示法的工具程序：grep、vi、awk、sed

       正则表达式分类：1)基础正则表达式；2）扩展正则表达式

       而在学习正则表达式之前，首先学会工具程序grep的用法： 


grep [-...]]></description><category></category></item><item><title><![CDATA[安卓APP稳定性测试-----monkey]]></title><link>https://blog.youkuaiyun.com/L_XRUI/article/details/83011885</link><guid>https://blog.youkuaiyun.com/L_XRUI/article/details/83011885</guid><author>L_XRUI</author><pubDate>Thu, 11 Oct 2018 16:10:50 +0800</pubDate><description><![CDATA[      稳定性测试：通过在主流真机终端上，模拟真人对App的操作行为，支持自动登陆、运行时间可配置，有效点击覆盖更全更深，从而发现程序的Crash及ANR，一般使用monkey对应用程序进行稳定性测试。

      monkey:Android SDK自带的命令行测试工具，向设备发送伪随机事件流，可以在模拟器里或实际设备中运行，它向系统发送伪随机的用户事件流，如按键输入、触摸屏输入、手势输入...]]></description><category></category></item><item><title><![CDATA[tomcat学习]]></title><link>https://blog.youkuaiyun.com/L_XRUI/article/details/79376783</link><guid>https://blog.youkuaiyun.com/L_XRUI/article/details/79376783</guid><author>L_XRUI</author><pubDate>Mon, 26 Feb 2018 14:33:29 +0800</pubDate><description><![CDATA[一、tomcat总体介绍：免费开放源代码的web应用服务器；单独的web服务器使用，也可以和其它的web服务器配合使用，58：nginx+tomcat(nginx处理静态资源，效率较高，可以处理几万到十万的并发，tomcat是java web 容器，处理java资源，nginx与tomcat通过反向代理进行数据的流转)；tomcat实现了jsp与JNDI的api的实现，不包括其余所有java EE...]]></description><category></category></item><item><title><![CDATA[mysql学习]]></title><link>https://blog.youkuaiyun.com/L_XRUI/article/details/79130592</link><guid>https://blog.youkuaiyun.com/L_XRUI/article/details/79130592</guid><author>L_XRUI</author><pubDate>Tue, 23 Jan 2018 13:36:54 +0800</pubDate><description><![CDATA[mysql:关系型数据库，理解为表格的概念，为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby、.NET和
 Tcl 等。
 登录使用mysql:
 当
 MySQL 服务已经运行时, 我们可以通过MySQL自带的客户端工具登录到MySQL数据库中, 首先打开命令提示符, 输入以下格式的命名:


mysql ]]></description><category></category></item><item><title><![CDATA[epoll服务器]]></title><link>https://blog.youkuaiyun.com/L_XRUI/article/details/77336128</link><guid>https://blog.youkuaiyun.com/L_XRUI/article/details/77336128</guid><author>L_XRUI</author><pubDate>Thu, 17 Aug 2017 17:03:25 +0800</pubDate><description><![CDATA[相比select、poll，epoll是I/O多路转接最高效的手段，它几乎具备了之前select、poll的一切优点，被公认为Linux2.6下性能最好的多路I/O就绪通知方法。epoll实现只有epoll_create()、epoll_ctl()、epoll_wait()三个系统调用函数。1、epoll_create()函数：int epoll_create(int size);
含义：创建一个e]]></description><category></category></item><item><title><![CDATA[webbench剖析]]></title><link>https://blog.youkuaiyun.com/L_XRUI/article/details/76216079</link><guid>https://blog.youkuaiyun.com/L_XRUI/article/details/76216079</guid><author>L_XRUI</author><pubDate>Thu, 27 Jul 2017 18:57:10 +0800</pubDate><description><![CDATA[webbench:其为linux上一款web性能压力测试工具，它最多可以模拟3万个并发连接数来测试服务器压力，其原理为fork多个子进程，每个子进程都循环做web访问测试，子进程将访问的结果通过管道告诉父进程，父进程做最终结果统计。其主要原理如下图： 
其代码实现中主要运用4个函数：getopt_long()系统命令行解析函数,build_request()函数，bench()函数，benchcor]]></description><category></category></item><item><title><![CDATA[shell命令代换与eval命令]]></title><link>https://blog.youkuaiyun.com/L_XRUI/article/details/75174761</link><guid>https://blog.youkuaiyun.com/L_XRUI/article/details/75174761</guid><author>L_XRUI</author><pubDate>Sat, 15 Jul 2017 17:10:23 +0800</pubDate><description><![CDATA[命令代换：在shell中用以下两种方式实现命令代换：`COMMAND`   //反引号
$(COMMAND)   //$()命令代换即首先执行反引号或括号里的命令，将其结果立刻代换到当前命令行中或者代换赋予一个变量： 
如下图,在一个shell脚本中打印日期： 
以上执行过程中：第一种先执行反引号与()中date命令，执行完成，结果代换到命令行中然后用echo命令输出；第二种先执行了$()中的dat]]></description><category></category></item><item><title><![CDATA[TCP四次挥手后的TIME_WAIT状态]]></title><link>https://blog.youkuaiyun.com/L_XRUI/article/details/75110377</link><guid>https://blog.youkuaiyun.com/L_XRUI/article/details/75110377</guid><author>L_XRUI</author><pubDate>Fri, 14 Jul 2017 15:45:31 +0800</pubDate><description><![CDATA[首先查看TCP建立连接与断开连接的两对端的状态图，如下： 
 
由图可知客户端在收到服务端的请求断开连接带有的FIN位结束报文段，并发送ACK确认以后，其并没有直接关闭，进入到CLOSED状态，而是转变为TIME_WAIT状态。
TIME_WAIT状态是做什么的？ 
 在这个状态，顾名思义，即客户端连接要等待一段长为2MSL（报文段最大生存时间）的时间，才能关闭连接，在标准文档RFC 1122的MS]]></description><category></category></item><item><title><![CDATA[复杂链表复制]]></title><link>https://blog.youkuaiyun.com/L_XRUI/article/details/75089158</link><guid>https://blog.youkuaiyun.com/L_XRUI/article/details/75089158</guid><author>L_XRUI</author><pubDate>Thu, 13 Jul 2017 18:14:20 +0800</pubDate><description><![CDATA[#include <iostream>
using namespace std;
//复杂链表的复制
struct RandomListNode {
    int label;
    struct RandomListNode *next, *random;    RandomListNode(int x) 
        :label(x)
        ,next(NULL)]]></description><category></category></item><item><title><![CDATA[合并两有序链表]]></title><link>https://blog.youkuaiyun.com/L_XRUI/article/details/75088867</link><guid>https://blog.youkuaiyun.com/L_XRUI/article/details/75088867</guid><author>L_XRUI</author><pubDate>Thu, 13 Jul 2017 18:04:20 +0800</pubDate><description><![CDATA[struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};
class Solution {
public:
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2]]></description><category></category></item><item><title><![CDATA[TCP三次握手与四次挥手]]></title><link>https://blog.youkuaiyun.com/L_XRUI/article/details/75045080</link><guid>https://blog.youkuaiyun.com/L_XRUI/article/details/75045080</guid><author>L_XRUI</author><pubDate>Thu, 13 Jul 2017 16:14:05 +0800</pubDate><description><![CDATA[TCP建立连接与断开连接的过程如下图： 
 
TCP连接断开其状态转移路线如下： 
 
其中以上1,2,3段则代表的为TCP建立连接的时的三次握手，过程如下：
客户端client主动发起请求连接,发送携带SYN标志同步报文段1，并包含一个ISN值为1000的序号，并指定自己的最大段尺寸mss为1460等; 
其代表含义为：序号是1000,这个序号在⽹网络通讯中⽤用作临时的地址,每发一个数据字节,这个]]></description><category></category></item><item><title><![CDATA[poll服务器]]></title><link>https://blog.youkuaiyun.com/L_XRUI/article/details/74936910</link><guid>https://blog.youkuaiyun.com/L_XRUI/article/details/74936910</guid><author>L_XRUI</author><pubDate>Mon, 10 Jul 2017 21:31:11 +0800</pubDate><description><![CDATA[poll是I/O复用多路转接的另一种方法，其优化了select两个缺点：
poll服务器支持的文件描述符数目没有上限；
poll服务器函数接口的参数与select不同，其将输入与输出参数进行了分离（用结构体实现）.
函数如下：#include <poll.h>
int poll(struct pollfd* fds,nfds_t nfds,int timeout);参数含义：
fds:结构体数组,(]]></description><category></category></item><item><title><![CDATA[select服务器]]></title><link>https://blog.youkuaiyun.com/L_XRUI/article/details/74808280</link><guid>https://blog.youkuaiyun.com/L_XRUI/article/details/74808280</guid><author>L_XRUI</author><pubDate>Sat, 08 Jul 2017 14:22:57 +0800</pubDate><description><![CDATA[unix下，可将I/O分为五种模型：
阻塞I/O
非阻塞I/O
I/O复用（多路转接：select、(e)poll）
信号驱动
异步I/O
其中前四种I/O模型为同步I/O，最后一个为异步I/O，而一个I/O操作可分为两步：
等待数据就绪；
数据的搬移.
而高性能I/O则体现在如何减少等待的时间，即在I/O模型中的I/O复用则是通知底层I/O就绪的高效方法。 
系统提供select函数来实现多路复用]]></description><category></category></item><item><title><![CDATA[多进程多线程TCP服务器]]></title><link>https://blog.youkuaiyun.com/L_XRUI/article/details/74279815</link><guid>https://blog.youkuaiyun.com/L_XRUI/article/details/74279815</guid><author>L_XRUI</author><pubDate>Tue, 04 Jul 2017 10:18:07 +0800</pubDate><description><![CDATA[在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程,“IP地址+端口号”称为(套接字)socket。在TCP协议中,建立连接的两个进程各自有一个socket来标识,这两个socket组成的socket pair就唯一标识一个连接。 
TCP/IP协议最早在BSD UNIX上实现,为TCP/IP协议设计的应用层编程接口称为socket API。此处使用socket A]]></description><category></category></item><item><title><![CDATA[arp脚本]]></title><link>https://blog.youkuaiyun.com/L_XRUI/article/details/73655520</link><guid>https://blog.youkuaiyun.com/L_XRUI/article/details/73655520</guid><author>L_XRUI</author><pubDate>Sat, 24 Jun 2017 19:44:30 +0800</pubDate><description><![CDATA[在网络的分层中，网络层最重要的协议为IP协议，与IP协议配套使用的还有四个协议：
(1)ARP(地址解析协议);
(2)RARP(逆地址解析协议);
(3)ICMP(网际控制报文协议);
(4)IGMP(网际组管理协议).
如图：]]></description><category></category></item><item><title><![CDATA[剑指offer-删除链表重复节点]]></title><link>https://blog.youkuaiyun.com/L_XRUI/article/details/73656823</link><guid>https://blog.youkuaiyun.com/L_XRUI/article/details/73656823</guid><author>L_XRUI</author><pubDate>Fri, 23 Jun 2017 23:16:46 +0800</pubDate><description><![CDATA[#include 
using namespace std;
struct Node
{
	int data;
	Node* next;

	Node(int x)
		:data(x)
		,next(NULL)
	{}
};

void PushBack(Node** pHead,int x)
{
	if(*pHead==NULL)
	{
		*pHead=new Node(x);
	}
	e]]></description><category></category></item><item><title><![CDATA[单例模式的实现]]></title><link>https://blog.youkuaiyun.com/L_XRUI/article/details/73652155</link><guid>https://blog.youkuaiyun.com/L_XRUI/article/details/73652155</guid><author>L_XRUI</author><pubDate>Fri, 23 Jun 2017 19:03:02 +0800</pubDate><description><![CDATA[#include 
using namespace std;
//单例模式：即单个实例的模式(面向对象，一个类只允许产生一个实例，自行实例化，并提供全局的访问方法)
//分类：
//1.饿汉单例：在使用前对象已创建完成,即使还未使用对象，其也一直存在
//实现：用一个已初始化的静态对象指针，用一个接口提供其给用户使用，再将构造函数设为私有，
//所以用户只能使用这个接口得到这个对象，由于此成员对象]]></description><category></category></item><item><title><![CDATA[端口分类调研]]></title><link>https://blog.youkuaiyun.com/L_XRUI/article/details/73555791</link><guid>https://blog.youkuaiyun.com/L_XRUI/article/details/73555791</guid><author>L_XRUI</author><pubDate>Wed, 21 Jun 2017 23:02:50 +0800</pubDate><description><![CDATA[目的主机收到数据包后,经过各层协议栈最后到达应用程序的过程：
(1)以太网驱动程序首先根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷(payload,指除去协议首部之外实际传输的数据)是IP、ARP还是RARP协议的数据报;
(2)交给相应的协议处理:假如是IP数据报,IP协议再根据IP首部中的“上层协议”字段确定该数据报的有效载荷是TCP、UDP、ICMP还是IGMP;
(3)再]]></description><category></category></item><item><title><![CDATA[C++如何只能在堆上或栈上生成对象]]></title><link>https://blog.youkuaiyun.com/L_XRUI/article/details/73555636</link><guid>https://blog.youkuaiyun.com/L_XRUI/article/details/73555636</guid><author>L_XRUI</author><pubDate>Wed, 21 Jun 2017 21:12:18 +0800</pubDate><description><![CDATA[#include 
using namespace std;

//只能在栈上构造对象的实现：即不能调用new来在堆上构造对象，调用new其会调用operator new(),
//所以只要显示定义重载一下operator new() operator delete()操作符设为私有部分
//类外就无法调用new/delete在堆上建立释放对象了。
class B
{
public:
	B()
	]]></description><category></category></item></channel></rss>